ERC-721
Overview
Max Total Supply
555 ferals_on_ape
Holders
179
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
0 ferals_on_apeLoading...
Loading
Loading...
Loading
Loading...
Loading
Minimal Proxy Contract for 0x00000000760644de6b7b40362288e944f4154121
Contract Name:
ERC721CMInitializableV1_0_0
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
Yes with 777 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526//SPDX-License-Identifier: MITpragma solidity ^0.8.22;import {MerkleProofLib} from "solady/src/utils/MerkleProofLib.sol";import {ERC2981} from "solady/src/tokens/ERC2981.sol";import {Ownable} from "solady/src/auth/Ownable.sol";import {ReentrancyGuard} from "solady/src/utils/ReentrancyGuard.sol";import {SafeTransferLib} from "solady/src/utils/SafeTransferLib.sol";import {ERC721ACQueryableInitializable,ERC721AUpgradeable,IERC721AUpgradeable} from "../creator-token-standards/ERC721ACQueryableInitializable.sol";import {ERC721MStorage} from "./ERC721MStorage.sol";import {MINT_FEE_RECEIVER} from "../../utils/Constants.sol";import {MintStageInfo} from "../../common/Structs.sol";import {IERC721MInitializable} from "./interfaces/IERC721MInitializable.sol";import {Cosignable} from "../../common/Cosignable.sol";import {AuthorizedMinterControl} from "../../common/AuthorizedMinterControl.sol";/*** @title ERC721CMInitializableV1_0_0* @dev This contract is not meant for use in Upgradeable Proxy contracts though it may base on Upgradeable contract. The purpose of this* contract is for use with EIP-1167 Minimal Proxies (Clones).*/
12345678910111213141516171819202122232425// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Gas optimized verification of proof of inclusion for a leaf in a Merkle tree./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/MerkleProofLib.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/MerkleProofLib.sol)/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof.sol)library MerkleProofLib {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* MERKLE PROOF VERIFICATION OPERATIONS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev Returns whether `leaf` exists in the Merkle tree with `root`, given `proof`.function verify(bytes32[] memory proof, bytes32 root, bytes32 leaf)internalpurereturns (bool isValid){/// @solidity memory-safe-assemblyassembly {if mload(proof) {// Initialize `offset` to the offset of `proof` elements in memory.let offset := add(proof, 0x20)// Left shift by 5 is equivalent to multiplying by 0x20.let end := add(offset, shl(5, mload(proof)))
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Simple ERC2981 NFT Royalty Standard implementation./// @author Solady (https://github.com/vectorized/solady/blob/main/src/tokens/ERC2981.sol)/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/common/ERC2981.sol)abstract contract ERC2981 {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The royalty fee numerator exceeds the fee denominator.error RoyaltyOverflow();/// @dev The royalty receiver cannot be the zero address.error RoyaltyReceiverIsZeroAddress();/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* STORAGE *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The default royalty info is given by:/// ```/// let packed := sload(_ERC2981_MASTER_SLOT_SEED)/// let receiver := shr(96, packed)/// let royaltyFraction := xor(packed, shl(96, receiver))
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Simple single owner authorization mixin./// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)////// @dev Note:/// This implementation does NOT auto-initialize the owner to `msg.sender`./// You MUST call the `_initializeOwner` in the constructor / initializer.////// While the ownable portion follows/// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility,/// the nomenclature for the 2-step ownership handover may be unique to this codebase.abstract contract Ownable {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The caller is not authorized to call the function.error Unauthorized();/// @dev The `newOwner` cannot be the zero address.error NewOwnerIsZeroAddress();/// @dev The `pendingOwner` does not have a valid handover request.error NoHandoverRequest();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Reentrancy guard mixin./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/ReentrancyGuard.sol)abstract contract ReentrancyGuard {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev Unauthorized reentrant call.error Reentrancy();/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* STORAGE *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev Equivalent to: `uint72(bytes9(keccak256("_REENTRANCY_GUARD_SLOT")))`./// 9 bytes is large enough to avoid collisions with lower slots,/// but not too large to result in excessive bytecode bloat.uint256 private constant _REENTRANCY_GUARD_SLOT = 0x929eee149b4bd21268;/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* REENTRANCY GUARD *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)/// @author Permit2 operations from (https://github.com/Uniswap/permit2/blob/main/src/libraries/Permit2Lib.sol)////// @dev Note:/// - For ETH transfers, please use `forceSafeTransferETH` for DoS protection./// - For ERC20s, this implementation won't check that a token has code,/// responsibility is delegated to the caller.library SafeTransferLib {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The ETH transfer has failed.error ETHTransferFailed();/// @dev The ERC20 `transferFrom` has failed.error TransferFromFailed();/// @dev The ERC20 `transfer` has failed.error TransferFailed();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.22;import "@limitbreak/creator-token-standards/src/utils/CreatorTokenBase.sol";import "erc721a-upgradeable/contracts/extensions/ERC721AQueryableUpgradeable.sol";import "@limitbreak/creator-token-standards/src/utils/AutomaticValidatorTransferApproval.sol";import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";/*** @title ERC721ACQueryableInitializable* @dev This contract is not meant for use in Upgradeable Proxy contracts though it may base on Upgradeable contract. The purpose of this* contract is for use with EIP-1167 Minimal Proxies (Clones).*/abstract contract ERC721ACQueryableInitializable isERC721AQueryableUpgradeable,CreatorTokenBase,AutomaticValidatorTransferApproval,Initializable{/// @notice Initializes the contract with the given name and symbol.function __ERC721ACQueryableInitializable_init(string memory name_, string memory symbol_) public {__ERC721A_init_unchained(name_, symbol_);__ERC721AQueryable_init_unchained();_emitDefaultTransferValidator();_registerTokenType(getTransferValidator());
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.22;import "../../common/Structs.sol";contract ERC721MStorage {// Whether this contract is mintable.bool internal _mintable;// The total mintable supply.uint256 internal _maxMintableSupply;// Global wallet limit, across all stages.uint256 internal _globalWalletLimit;// Current base URI.string internal _currentBaseURI;// The suffix for the token URL, e.g. ".json".string internal _tokenURISuffix;// Mint stage infomation. See MintStageInfo for details.MintStageInfo[] internal _mintStages;// Minted count per stage per wallet.mapping(uint256 => mapping(address => uint32)) internal _stageMintedCountsPerWallet;
123456// SPDX-License-Identifier: MITpragma solidity ^0.8.22;address constant CANONICAL_OPERATOR_FILTER_REGISTRY_ADDRESS = 0x000000000000AAeB6D7670E522A718067333cd4E;address constant ME_SUBSCRIPTION = 0x0403c10721Ff2936EfF684Bbb57CD792Fd4b1B6c;address constant MINT_FEE_RECEIVER = 0x0B98151bEdeE73f9Ba5F2C7b72dEa02D38Ce49Fc;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.22;enum TokenStandard {ERC721,ERC1155,ERC20}struct MintStageInfo {uint80 price;uint80 mintFee;uint32 walletLimit; // 0 for unlimitedbytes32 merkleRoot; // 0x0 for no presale enforceduint24 maxStageSupply; // 0 for unlimiteduint256 startTimeUnixSeconds;uint256 endTimeUnixSeconds;}struct MintStageInfo1155 {uint80[] price;uint80[] mintFee;uint32[] walletLimit; // 0 for unlimitedbytes32[] merkleRoot; // 0x0 for no presale enforceduint24[] maxStageSupply; // 0 for unlimiteduint256 startTimeUnixSeconds;
1234567891011121314151617181920212223242526//SPDX-License-Identifier: MITpragma solidity ^0.8.22;import "erc721a-upgradeable/contracts/extensions/IERC721AQueryableUpgradeable.sol";import "../../../common/Structs.sol";import {ERC721MErrorsAndEvents} from "../ERC721MErrorsAndEvents.sol";/*** @title IERC721MInitializable* @dev This contract is not meant for use in Upgradeable Proxy contracts though it may base on Upgradeable contract. The purpose of this* contract is for use with EIP-1167 Minimal Proxies (Clones).*/interface IERC721MInitializable is IERC721AQueryableUpgradeable, ERC721MErrorsAndEvents {function getNumberStages() external view returns (uint256);function getGlobalWalletLimit() external view returns (uint256);function getMaxMintableSupply() external view returns (uint256);function totalMintedByAddress(address a) external view returns (uint256);function getStageInfo(uint256 index) external view returns (MintStageInfo memory, uint32, uint256);function mint(uint32 qty, uint32 limit, bytes32[] calldata proof, uint256 timestamp, bytes calldata signature)externalpayable;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.22;import {SignatureCheckerLib} from "solady/src/utils/SignatureCheckerLib.sol";/// @title Cosignable/// @notice Abstract contract for implementing cosigner functionality/// @dev This contract should be inherited by contracts that require cosigner approvalabstract contract Cosignable {/*=============================================================== STRUCTS ===============================================================*/struct CosignerStorage {/// @notice The address of the cosigneraddress cosigner;/// @notice The number of seconds after which a timestamp is considered expireduint256 timestampExpirySeconds;}/*=============================================================== STORAGE ===============================================================*/// keccak256(abi.encode(uint256(keccak256("magicdrop.common.Cosignable")) - 1)) & ~bytes32(uint256(0xff))bytes32 private constant COSIGNER_STORAGE = 0x7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e00;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.22;///@title AuthorizedMinterControl///@dev Abstract contract to manage authorized minters for MagicDrop tokensabstract contract AuthorizedMinterControl {/*=============================================================== STORAGE ===============================================================*/mapping(address => bool) private _authorizedMinters;/*=============================================================== EVENTS ===============================================================*/event AuthorizedMinterAdded(address indexed minter);event AuthorizedMinterRemoved(address indexed minter);/*=============================================================== ERRORS ===============================================================*/error NotAuthorized();/*==============================================================
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "../access/OwnablePermissions.sol";import "../interfaces/ICreatorToken.sol";import "../interfaces/ICreatorTokenLegacy.sol";import "../interfaces/ITransferValidator.sol";import "./TransferValidation.sol";import "../interfaces/ITransferValidatorSetTokenType.sol";/*** @title CreatorTokenBase* @author Limit Break, Inc.* @notice CreatorTokenBaseV3 is an abstract contract that provides basic functionality for managing token* transfer policies through an implementation of ICreatorTokenTransferValidator/ICreatorTokenTransferValidatorV2/ICreatorTokenTransferValidatorV3.* This contract is intended to be used as a base for creator-specific token contracts, enabling customizable transfer* restrictions and security policies.** <h4>Features:</h4>* <ul>Ownable: This contract can have an owner who can set and update the transfer validator.</ul>* <ul>TransferValidation: Implements the basic token transfer validation interface.</ul>** <h4>Benefits:</h4>* <ul>Provides a flexible and modular way to implement custom token transfer restrictions and security policies.</ul>* <ul>Allows creators to enforce policies such as account and codehash blacklists, whitelists, and graylists.</ul>* <ul>Can be easily integrated into other token contracts as a base contract.</ul>
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// ERC721A Contracts v4.3.0// Creator: Chiru Labspragma solidity ^0.8.4;import './IERC721AQueryableUpgradeable.sol';import '../ERC721AUpgradeable.sol';import '../ERC721A__Initializable.sol';/*** @title ERC721AQueryable.** @dev ERC721A subclass with convenience query functions.*/abstract contract ERC721AQueryableUpgradeable isERC721A__Initializable,ERC721AUpgradeable,IERC721AQueryableUpgradeable{function __ERC721AQueryable_init() internal onlyInitializingERC721A {__ERC721AQueryable_init_unchained();}function __ERC721AQueryable_init_unchained() internal onlyInitializingERC721A {}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "../access/OwnablePermissions.sol";/*** @title AutomaticValidatorTransferApproval* @author Limit Break, Inc.* @notice Base contract mix-in that provides boilerplate code giving the contract owner the* option to automatically approve a 721-C transfer validator implementation for transfers.*/abstract contract AutomaticValidatorTransferApproval is OwnablePermissions {/// @dev Emitted when the automatic approval flag is modified by the creator.event AutomaticApprovalOfTransferValidatorSet(bool autoApproved);/// @dev If true, the collection's transfer validator is automatically approved to transfer holder's tokens.bool public autoApproveTransfersFromValidator;/*** @notice Sets if the transfer validator is automatically approved as an operator for all token owners.** @dev Throws when the caller is not the contract owner.** @param autoApprove If true, the collection's transfer validator will be automatically approved to* transfer holder's tokens.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)pragma solidity ^0.8.2;import "../../utils/AddressUpgradeable.sol";/*** @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** The initialization functions use a version number. Once a version number is used, it is consumed and cannot be* reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in* case an upgrade adds a module that needs to be initialized.** For example:** [.hljs-theme-light.nopadding]* ```* contract MyToken is ERC20Upgradeable {* function initialize() initializer public {* __ERC20_init("MyToken", "MTK");* }* }
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// ERC721A Contracts v4.3.0// Creator: Chiru Labspragma solidity ^0.8.4;import '../IERC721AUpgradeable.sol';/*** @dev Interface of ERC721AQueryable.*/interface IERC721AQueryableUpgradeable is IERC721AUpgradeable {/*** Invalid query range (`start` >= `stop`).*/error InvalidQueryRange();/*** @dev Returns the `TokenOwnership` struct at `tokenId` without reverting.** If the `tokenId` is out of bounds:** - `addr = address(0)`* - `startTimestamp = 0`* - `burned = false`* - `extraData = 0`
12345678910111213141516171819202122// SPDX-License-Identifier: MITpragma solidity ^0.8.22;import {ErrorsAndEvents} from "../../common/ErrorsAndEvents.sol";interface ERC721MErrorsAndEvents is ErrorsAndEvents {event UpdateStage(uint256 stage,uint80 price,uint80 mintFee,uint32 walletLimit,bytes32 merkleRoot,uint24 maxStageSupply,uint256 startTimeUnixSeconds,uint256 endTimeUnixSeconds);event SetMaxMintableSupply(uint256 maxMintableSupply);event SetGlobalWalletLimit(uint256 globalWalletLimit);event SetDefaultRoyalty(address receiver, uint96 feeNumerator);event SetContractURI(string uri);}
12345678910111213141516171819202122232425// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Signature verification helper that supports both ECDSA signatures from EOAs/// and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)////// @dev Note:/// - The signature checking functions use the ecrecover precompile (0x1)./// - The `bytes memory signature` variants use the identity precompile (0x4)/// to copy memory internally./// - Unlike ECDSA signatures, contract signatures are revocable./// - As of Solady version 0.0.134, all `bytes signature` variants accept both/// regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures./// See: https://eips.ethereum.org/EIPS/eip-2098/// This is for calldata efficiency on smart accounts prevalent on L2s.////// WARNING! Do NOT use signatures as unique identifiers:/// - Use a nonce in the digest to prevent replay attacks on the same contract./// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts./// EIP-712 also enables readable signing of typed data for better user safety./// This implementation does NOT check if a signature is non-malleable.library SignatureCheckerLib {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "@openzeppelin/contracts/utils/Context.sol";abstract contract OwnablePermissions is Context {function _requireCallerIsContractOwner() internal view virtual;}
123456789// SPDX-License-Identifier: MITpragma solidity ^0.8.4;interface ICreatorToken {event TransferValidatorUpdated(address oldValidator, address newValidator);function getTransferValidator() external view returns (address validator);function setTransferValidator(address validator) external;function getTransferValidationFunction() external view returns (bytes4 functionSignature, bool isViewFunction);}
12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.4;interface ICreatorTokenLegacy {event TransferValidatorUpdated(address oldValidator, address newValidator);function getTransferValidator() external view returns (address validator);function setTransferValidator(address validator) external;}
1234567891011121314151617// SPDX-License-Identifier: MITpragma solidity ^0.8.4;interface ITransferValidator {function applyCollectionTransferPolicy(address caller, address from, address to) external view;function validateTransfer(address caller, address from, address to) external view;function validateTransfer(address caller, address from, address to, uint256 tokenId) external view;function validateTransfer(address caller, address from, address to, uint256 tokenId, uint256 amount) external;function beforeAuthorizedTransfer(address operator, address token, uint256 tokenId) external;function afterAuthorizedTransfer(address token, uint256 tokenId) external;function beforeAuthorizedTransfer(address operator, address token) external;function afterAuthorizedTransfer(address token) external;function beforeAuthorizedTransfer(address token, uint256 tokenId) external;function beforeAuthorizedTransferWithAmount(address token, uint256 tokenId, uint256 amount) external;function afterAuthorizedTransferWithAmount(address token, uint256 tokenId) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;import "@openzeppelin/contracts/utils/Context.sol";/*** @title TransferValidation* @author Limit Break, Inc.* @notice A mix-in that can be combined with ERC-721 contracts to provide more granular hooks.* Openzeppelin's ERC721 contract only provides hooks for before and after transfer. This allows* developers to validate or customize transfers within the context of a mint, a burn, or a transfer.*/abstract contract TransferValidation is Context {/// @dev Thrown when the from and to address are both the zero address.error ShouldNotMintToBurnAddress();/*************************************************************************//* Transfers Without Amounts *//*************************************************************************//// @dev Inheriting contracts should call this function in the _beforeTokenTransfer function to get more granular hooks.function _validateBeforeTransfer(address from, address to, uint256 tokenId) internal virtual {bool fromZeroAddress = from == address(0);bool toZeroAddress = to == address(0);
123456// SPDX-License-Identifier: MITpragma solidity ^0.8.4;interface ITransferValidatorSetTokenType {function setTokenTypeOfCollection(address collection, uint16 tokenType) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// ERC721A Contracts v4.3.0// Creator: Chiru Labspragma solidity ^0.8.4;import './IERC721AUpgradeable.sol';import {ERC721AStorage} from './ERC721AStorage.sol';import './ERC721A__Initializable.sol';/*** @dev Interface of ERC721 token receiver.*/interface ERC721A__IERC721ReceiverUpgradeable {function onERC721Received(address operator,address from,uint256 tokenId,bytes calldata data) external returns (bytes4);}/*** @title ERC721A** @dev Implementation of the [ERC721](https://eips.ethereum.org/EIPS/eip-721)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;/*** @dev This is a base contract to aid in writing upgradeable diamond facet contracts, or any kind of contract that will be deployed* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as* possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.** CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure* that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.*/import {ERC721A__InitializableStorage} from './ERC721A__InitializableStorage.sol';abstract contract ERC721A__Initializable {using ERC721A__InitializableStorage for ERC721A__InitializableStorage.Layout;/*** @dev Modifier to protect an initializer function from being invoked twice.*/modifier initializerERC721A() {// If the contract is initializing we ignore whether _initialized is set in order to support multiple
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library AddressUpgradeable {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed* ====*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// ERC721A Contracts v4.3.0// Creator: Chiru Labspragma solidity ^0.8.4;/*** @dev Interface of ERC721A.*/interface IERC721AUpgradeable {/*** The caller must own the token or be an approved operator.*/error ApprovalCallerNotOwnerNorApproved();/*** The token does not exist.*/error ApprovalQueryForNonexistentToken();/*** Cannot query the balance for the zero address.*/error BalanceQueryForZeroAddress();/**
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.22;interface ErrorsAndEvents {error CannotIncreaseMaxMintableSupply();error GlobalWalletLimitOverflow();error InsufficientStageTimeGap();error InsufficientBalance();error InvalidProof();error InvalidStage();error InvalidStageArgsLength();error InvalidStartAndEndTimestamp();error NoSupplyLeft();error NotEnoughValue();error NotMintable();error Mintable();error StageSupplyExceeded();error TransferFailed();error WalletGlobalLimitExceeded();error WalletStageLimitExceeded();error WithdrawFailed();error WrongMintCurrency();error NotSupported();error NewSupplyLessThanTotalSupply();error NotTransferable();error InitialOwnerCannotBeZero();
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;library ERC721AStorage {// Bypass for a `--via-ir` bug (https://github.com/chiru-labs/ERC721A/pull/364).struct TokenApprovalRef {address value;}struct Layout {// =============================================================// STORAGE// =============================================================// The next token ID to be minted.uint256 _currentIndex;// The number of tokens burned.uint256 _burnCounter;// Token namestring _name;// Token symbolstring _symbol;// Mapping from token ID to ownership details// An empty struct value does not necessarily mean the token is unowned.// See {_packedOwnershipOf} implementation for details.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;/*** @dev This is a base storage for the initialization function for upgradeable diamond facet contracts**/library ERC721A__InitializableStorage {struct Layout {/** Indicates that the contract has been initialized.*/bool _initialized;/** Indicates that the contract is in the process of being initialized.*/bool _initializing;}bytes32 internal constant STORAGE_SLOT = keccak256('ERC721A.contracts.storage.initializable.facet');function layout() internal pure returns (Layout storage l) {bytes32 slot = STORAGE_SLOT;assembly {l.slot := slot
1234567891011121314151617181920212223242526{"remappings": ["solady/=lib/solady/","solemate/=/lib/solemate/src/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","forge-std/=lib/forge-std/src/","erc721a/contracts/=lib/ERC721a/contracts/","erc721a-upgradeable/contracts/=lib/ERC721A-Upgradeable/contracts/","@limitbreak/creator-token-standards/src/=lib/creator-token-standards/src/","@ensdomains/=node_modules/@ensdomains/","@layerzerolabs/=node_modules/@layerzerolabs/","@limitbreak/permit-c/=lib/creator-token-standards/lib/PermitC/src/","@opensea/tstorish/=lib/creator-token-standards/lib/tstorish/src/","@openzeppelin-3/=node_modules/@openzeppelin-3/","@rari-capital/solmate/=lib/creator-token-standards/lib/PermitC/lib/solmate/","@uniswap/=node_modules/@uniswap/","ERC721A-Upgradeable/=lib/ERC721A-Upgradeable/contracts/","ERC721A/=lib/ERC721A/contracts/","PermitC/=lib/creator-token-standards/lib/PermitC/","creator-token-standards/=lib/creator-token-standards/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/operator-filter-registry/lib/openzeppelin-contracts/lib/erc4626-tests/","eth-gas-reporter/=node_modules/eth-gas-reporter/","forge-gas-metering/=lib/creator-token-standards/lib/PermitC/lib/forge-gas-metering/","hardhat-deploy/=node_modules/hardhat-deploy/",
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"CannotIncreaseMaxMintableSupply","type":"error"},{"inputs":[],"name":"CosignerNotSet","type":"error"},{"inputs":[],"name":"CreatorTokenBase__InvalidTransferValidatorContract","type":"error"},{"inputs":[],"name":"GlobalWalletLimitOverflow","type":"error"},{"inputs":[],"name":"InitialOwnerCannotBeZero","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InsufficientStageTimeGap","type":"error"},{"inputs":[],"name":"InvalidCosignSignature","type":"error"},{"inputs":[],"name":"InvalidProof","type":"error"},{"inputs":[],"name":"InvalidQueryRange","type":"error"},{"inputs":[],"name":"InvalidStage","type":"error"},{"inputs":[],"name":"InvalidStageArgsLength","type":"error"},{"inputs":[],"name":"InvalidStartAndEndTimestamp","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"Mintable","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NewSupplyLessThanTotalSupply","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"NoSupplyLeft","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"NotCompatibleWithSpotMints","type":"error"},{"inputs":[],"name":"NotEnoughValue","type":"error"},{"inputs":[],"name":"NotMintable","type":"error"},{"inputs":[],"name":"NotSupported","type":"error"},{"inputs":[],"name":"NotTransferable","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"Reentrancy","type":"error"},{"inputs":[],"name":"RoyaltyOverflow","type":"error"},{"inputs":[],"name":"RoyaltyReceiverIsZeroAddress","type":"error"},{"inputs":[],"name":"SequentialMintExceedsLimit","type":"error"},{"inputs":[],"name":"SequentialUpToTooSmall","type":"error"},{"inputs":[],"name":"ShouldNotMintToBurnAddress","type":"error"},{"inputs":[],"name":"SpotMintTokenIdTooSmall","type":"error"},{"inputs":[],"name":"StageSupplyExceeded","type":"error"},{"inputs":[],"name":"TimestampExpired","type":"error"},{"inputs":[],"name":"TokenAlreadyExists","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"WalletGlobalLimitExceeded","type":"error"},{"inputs":[],"name":"WalletStageLimitExceeded","type":"error"},{"inputs":[],"name":"WithdrawFailed","type":"error"},{"inputs":[],"name":"WrongMintCurrency","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"}],"name":"AuthorizedMinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"}],"name":"AuthorizedMinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"autoApproved","type":"bool"}],"name":"AutomaticApprovalOfTransferValidatorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"DefaultRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"activeStage","type":"uint256"}],"name":"SetActiveStage","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"baseURI","type":"string"}],"name":"SetBaseURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"uri","type":"string"}],"name":"SetContractURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"cosigner","type":"address"}],"name":"SetCosigner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"SetDefaultRoyalty","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"globalWalletLimit","type":"uint256"}],"name":"SetGlobalWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxMintableSupply","type":"uint256"}],"name":"SetMaxMintableSupply","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mintCurrency","type":"address"}],"name":"SetMintCurrency","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"mintable","type":"bool"}],"name":"SetMintable","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestampExpirySeconds","type":"uint256"}],"name":"SetTimestampExpirySeconds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"suffix","type":"string"}],"name":"SetTokenURISuffix","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"TokenRoyaltySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldValidator","type":"address"},{"indexed":false,"internalType":"address","name":"newValidator","type":"address"}],"name":"TransferValidatorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"stage","type":"uint256"},{"indexed":false,"internalType":"uint80","name":"price","type":"uint80"},{"indexed":false,"internalType":"uint80","name":"mintFee","type":"uint80"},{"indexed":false,"internalType":"uint32","name":"walletLimit","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"indexed":false,"internalType":"uint24","name":"maxStageSupply","type":"uint24"},{"indexed":false,"internalType":"uint256","name":"startTimeUnixSeconds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTimeUnixSeconds","type":"uint256"}],"name":"UpdateStage","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mintCurrency","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"WithdrawERC20","type":"event"},{"inputs":[],"name":"DEFAULT_TRANSFER_VALIDATOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"name":"__ERC721ACQueryableInitializable_init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"addAuthorizedMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint32","name":"qty","type":"uint32"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"uint256","name":"cosignNonce","type":"uint256"}],"name":"assertValidCosign","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"qty","type":"uint32"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint32","name":"limit","type":"uint32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"authorizedMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"autoApproveTransfersFromValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"contractNameAndVersion","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"explicitOwnershipOf","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"uint24","name":"extraData","type":"uint24"}],"internalType":"struct IERC721AUpgradeable.TokenOwnership","name":"ownership","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"explicitOwnershipsOf","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"uint24","name":"extraData","type":"uint24"}],"internalType":"struct IERC721AUpgradeable.TokenOwnership[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"getActiveStageFromTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint32","name":"qty","type":"uint32"},{"internalType":"bool","name":"waiveMintFee","type":"bool"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"cosignNonce","type":"uint256"}],"name":"getCosignDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"getCosignNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCosigner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxMintableSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintCurrency","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMintable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberStages","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getStageInfo","outputs":[{"components":[{"internalType":"uint80","name":"price","type":"uint80"},{"internalType":"uint80","name":"mintFee","type":"uint80"},{"internalType":"uint32","name":"walletLimit","type":"uint32"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint24","name":"maxStageSupply","type":"uint24"},{"internalType":"uint256","name":"startTimeUnixSeconds","type":"uint256"},{"internalType":"uint256","name":"endTimeUnixSeconds","type":"uint256"}],"internalType":"struct MintStageInfo","name":"","type":"tuple"},{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimestampExpirySeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransferValidationFunction","outputs":[{"internalType":"bytes4","name":"functionSignature","type":"bytes4"},{"internalType":"bool","name":"isViewFunction","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTransferValidator","outputs":[{"internalType":"address","name":"validator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"initialOwner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"isApproved","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"isAuthorizedMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"qty","type":"uint32"},{"internalType":"uint32","name":"limit","type":"uint32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"qty","type":"uint32"},{"internalType":"address","name":"to","type":"address"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"removeAuthorizedMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"autoApprove","type":"bool"}],"name":"setAutomaticApprovalOfTransfersFromValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"cosigner","type":"address"}],"name":"setCosigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint96","name":"feeNumerator","type":"uint96"}],"name":"setDefaultRoyalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"globalWalletLimit","type":"uint256"}],"name":"setGlobalWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxMintableSupply","type":"uint256"}],"name":"setMaxMintableSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"mintable","type":"bool"}],"name":"setMintable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint80","name":"price","type":"uint80"},{"internalType":"uint80","name":"mintFee","type":"uint80"},{"internalType":"uint32","name":"walletLimit","type":"uint32"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint24","name":"maxStageSupply","type":"uint24"},{"internalType":"uint256","name":"startTimeUnixSeconds","type":"uint256"},{"internalType":"uint256","name":"endTimeUnixSeconds","type":"uint256"}],"internalType":"struct MintStageInfo[]","name":"newStages","type":"tuple[]"}],"name":"setStages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestampExpirySeconds","type":"uint256"}],"name":"setTimestampExpirySeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"suffix","type":"string"}],"name":"setTokenURISuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"transferValidator_","type":"address"}],"name":"setTransferValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxMintableSupply","type":"uint256"},{"internalType":"uint256","name":"globalWalletLimit","type":"uint256"},{"internalType":"address","name":"mintCurrency","type":"address"},{"internalType":"address","name":"fundReceiver","type":"address"},{"components":[{"internalType":"uint80","name":"price","type":"uint80"},{"internalType":"uint80","name":"mintFee","type":"uint80"},{"internalType":"uint32","name":"walletLimit","type":"uint32"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint24","name":"maxStageSupply","type":"uint24"},{"internalType":"uint256","name":"startTimeUnixSeconds","type":"uint256"},{"internalType":"uint256","name":"endTimeUnixSeconds","type":"uint256"}],"internalType":"struct MintStageInfo[]","name":"initialStages","type":"tuple[]"},{"internalType":"address","name":"royaltyReceiver","type":"address"},{"internalType":"uint96","name":"royaltyFeeNumerator","type":"uint96"}],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"stop","type":"uint256"}],"name":"tokensOfOwnerIn","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"totalMintedByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"}]
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.