Create NFT mint contract that
- can be paused
- is upgradeable/updatable
- allows collections (Master Editions)
with this functionality:
public symbol() Gets the symbols of the token.
public decimals() Gets the amount of decimals used by the token.
public totalSupply()
Gets the total token supply deployed in the system.
public transfer(toAddress, tokenId, data)
Transfers the token with id tokenId
to address toAddress
If the transfer is not processed, the function SHOULD return false
.
public ownerOf(tokenId)
return owner address
of the specified token.
OPTIONAL FEATURE - SHOULD BE DECIDED IF ITS NEEDED, BEFORE IMPLEMENTING IT
public tokens()
Get all tokens minted by the contract
public properties(tokenId)
Get Metadata of NFT.
The parameter tokenId SHOULD be a valid NFT. If no metadata is found (invalid tokenId), an exception should thrown (if possible)
return NFT metadata
public burn(tokenID)
Burn a token.
param: tokenID
: tokenID to burn
public multiBurn(tokenIDs)
Burn multiple tokens.
param: tokenIDs
: list of token IDs to burn
public mint(toAddress, metadata,, royalties)
Mint NFT with royalties.
param: toAddress
: mint NFT to this address
param: metadata
: the metadata to use for this token
param: royalties
: the royalties to use for this token
public multiMint(toAddressList, metadataList,, royaltiesList)
Mint NFTs with royalties.
param: toAddressList
: mint NFTs to this list of addresses
param: metadataList
: the metadata list to use for this multi token mint
param: royaltiesList
: the royalties list to use for this multi token mint
public getRoyalties(tokenId)
Get the royalty values of given tokenId.
param: tokenID
: get royalties if this tokenID
public pauseContract()
Pause the contract, no minting will be possible
should be POSSIBLE ONLY by ADMIN/CONTRACT_OWNER