EditionMaxMinter
contracts/modules/EditionMaxMinter.sol (opens in a new tab)
A minimalist fixed-price public minting module. Can implement single-schedule range mints.
Derives the following values from the edition:
- maxMintableLower
- maxMintableUpper
- cutoffTime
Inherits:
Structs
MintInfo
struct MintInfo {
	// Start timestamp of sale (in seconds since unix epoch).
    uint32 startTime;
    // End timestamp of sale (in seconds since unix epoch).
    uint32 endTime;
    // The affiliate fee in basis points.
    uint16 affiliateFeeBPS;
    // Whether the mint is paused.
    bool mintPaused;
    // Sale price in ETH for minting a single token.
    uint96 price;
    // The maximum number of tokens that can be minted by an account.
    uint32 maxMintablePerAccount;
    // The lower limit of the maximum number of tokens that can be minted.
    // This is the `editionMaxMintableLower` from the `edition`.
    uint32 maxMintableLower;
    // The upper limit of the maximum number of tokens that can be minted.
    // This is the `editionMaxMintableUpper` from the `edition`.
    uint32 maxMintableUpper;
    // The cutoff timestamp when the maximum number of tokens that can
    // be minted drops from `maxMintableUpper` to `maxMintableLower`.
    // This is the `editionCutoffTime` from the `edition`.
    uint32 cutoffTime;
}Holds information pertaining to a mint.
This struct is intended for off-chain queries, and can be retrieved via the mintInfo function.
Write Functions
createEditionMint
function createEditionMint(
    address edition,
    uint96 price,
    uint32 startTime,
    uint32 endTime,
    uint16 affiliateFeeBPS,
    uint32 maxMintablePerAccount
    ) external returns (uint128 mintId)Initializes a range mint instance
Calling conditions:
- The caller must be the owner or an adminstrator (via the ADMIN_ROLE) of theeditioncontract.
| Params: | |
|---|---|
| edition | Address of the song edition contract we are minting for. | 
| price | Sale price in ETH for minting a single token in edition. | 
| startTime | Start timestamp of sale (in seconds since unix epoch). | 
| endTime | End timestamp of sale (in seconds since unix epoch). | 
| affiliateFeeBPS | The affiliate fee in basis points. | 
| maxMintablePerAccount | The maximum number of tokens that can be minted by an account. | 
mint
function mint(
    address edition,
    uint128 mintId,
    uint32 quantity,
    address affiliate
    ) external payableMints tokens for a given edition.
| Params: | |
|---|---|
| edition | Address of the song edition contract we are minting for. | 
| mintId | The mint ID. | 
| quantity | Token quantity to mint in song edition. | 
| affiliate | The affiliate address. | 
setPrice
function setPrice(
    address edition,
    uint128 mintId,
    uint96 price
    ) externalSets the price for (edition, mintId).
Calling conditions:
- The caller must be the owner or an adminstrator (via the ADMIN_ROLE) of theeditioncontract.
| Params: | |
|---|---|
| edition | Address of the song edition contract we are minting for. | 
| mintId | The mint ID. | 
| price | Sale price in ETH for minting a single token in edition. | 
setMaxMintablePerAccount
function setMaxMintablePerAccount(
    address edition,
    uint128 mintId,
    uint32 maxMintablePerAccount
    ) externalSets the maxMintablePerAccount for (edition, mintId).
Calling conditions:
- The caller must be the owner or an adminstrator (via the ADMIN_ROLE) of theeditioncontract.
| Params: | |
|---|---|
| edition | Address of the song edition contract we are minting for. | 
| mintId | The mint ID. | 
| maxMintablePerAccount | The maximum number of tokens that can be minted by an account. | 
Read-only Functions
mintInfo
function mintInfo(
	address edition,
	uint128 mintId
) external view returns (MintInfo memory)Returns a MintInfo instance containing the full minter parameter set.
| Params: | |
|---|---|
| edition | The edition to get the mint instance for. | 
| mintId | The ID of the mint instance. | 
supportsInterface
IERC165-supportsInterface
function supportsInterface(bytes4 interfaceId) public view virtual returns (bool)Returns true if this contract implements the interface defined by interfaceId.
See the corresponding EIP section (opens in a new tab) to learn more about how these ids are created.
| Params: | |
|---|---|
| interfaceId | The 4 byte interface ID. | 
| Supported Interface IDs: | |
|---|---|
| IERC165 | 0x01ffc9a7 | 
| IMinterModule | 0x37c74bd8 | 
| IEditionMaxMinter | 0xa7ea8688 | 
Events
EditionMaxMintCreated
event EditionMaxMintCreated(
    address indexed edition,
    uint128 indexed mintId,
    uint96 price,
    uint32 startTime,
    uint32 endTime,
    uint16 affiliateFeeBPS,
    uint32 maxMintablePerAccount
    )Emitted when a edition max is created.
| Params: | |
|---|---|
| edition | Address of the song edition contract we are minting for. | 
| mintId | The mint ID. | 
| price | Sale price in ETH for minting a single token in edition. | 
| startTime | Start timestamp of sale (in seconds since unix epoch). | 
| endTime | End timestamp of sale (in seconds since unix epoch). | 
| affiliateFeeBPS | The affiliate fee in basis points. | 
| maxMintablePerAccount | The maximum number of tokens that can be minted per account. | 
PriceSet
event PriceSet(
	address indexed edition,
	uint128 indexed mintId,
	uint96 price
)Emitted when the price is changed for (edition, mintId).
| Params: | |
|---|---|
| edition | Address of the song edition contract we are minting for. | 
| mintId | The mint ID. | 
| price | Sale price in ETH for minting a single token in edition. | 
MaxMintablePerAccountSet
event MaxMintablePerAccountSet(
	address indexed edition,
	uint128 indexed mintId,
	uint32 maxMintablePerAccount
)Emitted when the maxMintablePerAccount is changed for (edition, mintId).
| Params: | |
|---|---|
| edition | Address of the song edition contract we are minting for. | 
| mintId | The mint ID. | 
| maxMintablePerAccount | The maximum number of tokens that can be minted per account. | 
Errors
ExceedsMaxPerAccount
error ExceedsMaxPerAccount()The number of tokens minted has exceeded the number allowed for each account.
MaxMintablePerAccountIsZero
error MaxMintablePerAccountIsZero()The max mintable per account cannot be zero.