Overview
TokenID
2484
Total Transfers
1
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Minimal Proxy Contract for 0x453e745cb6e0e0051baaef820563429bb8024d8f
Contract Name:
OpenEditionERC721
Compiler Version
v0.8.12+commit.f00d7308
Optimization Enabled:
Yes with 20 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.11;/// @author thirdweb// $$\ $$\ $$\ $$\ $$\// $$ | $$ | \__| $$ | $$ |// $$$$$$\ $$$$$$$\ $$\ $$$$$$\ $$$$$$$ |$$\ $$\ $$\ $$$$$$\ $$$$$$$\// \_$$ _| $$ __$$\ $$ |$$ __$$\ $$ __$$ |$$ | $$ | $$ |$$ __$$\ $$ __$$\// $$ | $$ | $$ |$$ |$$ | \__|$$ / $$ |$$ | $$ | $$ |$$$$$$$$ |$$ | $$ |// $$ |$$\ $$ | $$ |$$ |$$ | $$ | $$ |$$ | $$ | $$ |$$ ____|$$ | $$ |// \$$$$ |$$ | $$ |$$ |$$ | \$$$$$$$ |\$$$$$\$$$$ |\$$$$$$$\ $$$$$$$ |// \____/ \__| \__|\__|\__| \_______| \_____\____/ \_______|\_______/// ========== External imports ==========import "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol";import "@openzeppelin/contracts-upgradeable/interfaces/IERC2981Upgradeable.sol";import "./eip/queryable/ERC721AQueryableUpgradeable.sol";// ========== Internal imports ==========import "./openzeppelin-presets/metatx/ERC2771ContextUpgradeable.sol";import "./lib/CurrencyTransferLib.sol";
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC165 standard, as defined in the* [EIP](https://eips.ethereum.org/EIPS/eip-165).** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified)* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/*** @title ERC20 interface* @dev see https://github.com/ethereum/EIPs/issues/20*/interface IERC20 {function totalSupply() external view returns (uint256);function balanceOf(address who) external view returns (uint256);function allowance(address owner, address spender) external view returns (uint256);function transfer(address to, uint256 value) external returns (bool);function approve(address spender, uint256 value) external returns (bool);function transferFrom(address from,address to,uint256 value) external returns (bool);event Transfer(address indexed from, address indexed to, uint256 value);
1234567891011121314151617181920212223// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.0;import "./IERC165.sol";/*** @dev Interface for the NFT Royalty Standard.** A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal* support for royalty payments across all NFT marketplaces and ecosystem participants.** _Available since v4.5._*/interface IERC2981 is IERC165 {/*** @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of* exchange. The royalty amount is denominated and should be payed in that same unit of exchange.*/function royaltyInfo(uint256 tokenId, uint256 salePrice)externalviewreturns (address receiver, uint256 royaltyAmount);}
1234567891011121314151617// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.11;import "./IERC165.sol";import "./IERC721.sol";interface IERC4906 is IERC165 {/// @dev This event emits when the metadata of a token is changed./// So that the third-party platforms such as NFT market could/// timely update the images and related attributes of the NFT.event MetadataUpdate(uint256 _tokenId);/// @dev This event emits when the metadata of a range of tokens is changed./// So that the third-party platforms such as NFT market could/// timely update the images and related attributes of the NFTs.event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)pragma solidity ^0.8.0;/*** @dev Required interface of an ERC721 compliant contract.*/interface IERC721 {/*** @dev Emitted when `tokenId` token is transferred from `from` to `to`.*/event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.*/event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.*/event ApprovalForAll(address indexed owner, address indexed operator, bool approved);/*** @dev Returns the number of tokens in ``owner``'s account.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// ERC721A Contracts v4.2.3// 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.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: MIT// ERC721A Contracts v4.2.3// 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: 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// SPDX-License-Identifier: MIT// ERC721A Contracts v4.2.3// 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`
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// ERC721A Contracts v4.2.3// 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: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./interface/IContractMetadata.sol";/*** @title Contract Metadata* @notice Thirdweb's `ContractMetadata` is a contract extension for any base contracts. It lets you set a metadata URI* for you contract.* Additionally, `ContractMetadata` is necessary for NFT contracts that want royalties to get distributed on OpenSea.*/abstract contract ContractMetadata is IContractMetadata {/// @notice Returns the contract metadata URI.string public override contractURI;/*** @notice Lets a contract admin set the URI for contract-level metadata.* @dev Caller should be authorized to setup contractURI, e.g. contract admin.* See {_canSetContractURI}.* Emits {ContractURIUpdated Event}.** @param _uri keccak256 hash of the role. e.g. keccak256("TRANSFER_ROLE")*/
12345678910111213141516171819// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.0;/// @author thirdwebimport { OperatorFiltererUpgradeable } from "./OperatorFiltererUpgradeable.sol";abstract contract DefaultOperatorFiltererUpgradeable is OperatorFiltererUpgradeable {address constant DEFAULT_SUBSCRIPTION = address(0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6);function __DefaultOperatorFilterer_init() internal {OperatorFiltererUpgradeable.__OperatorFilterer_init(DEFAULT_SUBSCRIPTION, true);}function subscribeToRegistry(address _subscription) external {require(_canSetOperatorRestriction(), "Not authorized to subscribe to registry.");_register(_subscription, true);}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./interface/IDrop.sol";import "../lib/MerkleProof.sol";abstract contract Drop is IDrop {/*///////////////////////////////////////////////////////////////State variables//////////////////////////////////////////////////////////////*//// @dev The active conditions for claiming tokens.ClaimConditionList public claimCondition;/*///////////////////////////////////////////////////////////////Drop logic//////////////////////////////////////////////////////////////*//// @dev Lets an account claim tokens.function claim(address _receiver,uint256 _quantity,address _currency,uint256 _pricePerToken,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.0;/// @author thirdwebimport "../lib/TWAddress.sol";import "./interface/IMulticall.sol";/*** @dev Provides a function to batch together multiple calls in a single external call.** _Available since v4.1._*/contract Multicall is IMulticall {/*** @notice Receives and executes a batch of function calls on this contract.* @dev Receives and executes a batch of function calls on this contract.** @param data The bytes data that makes up the batch of function calls to execute.* @return results The bytes data that makes up the result of the batch of function calls executed.*/function multicall(bytes[] calldata data) external virtual override returns (bytes[] memory results) {results = new bytes[](data.length);for (uint256 i = 0; i < data.length; i++) {results[i] = TWAddress.functionDelegateCall(address(this), data[i]);}
12345678910111213141516171819202122// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./interface/IOperatorFilterToggle.sol";abstract contract OperatorFilterToggle is IOperatorFilterToggle {bool public operatorRestriction;function setOperatorRestriction(bool _restriction) external {require(_canSetOperatorRestriction(), "Not authorized to set operator restriction.");_setOperatorRestriction(_restriction);}function _setOperatorRestriction(bool _restriction) internal {operatorRestriction = _restriction;emit OperatorRestriction(_restriction);}function _canSetOperatorRestriction() internal virtual returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./interface/IOperatorFilterRegistry.sol";import "./OperatorFilterToggle.sol";abstract contract OperatorFiltererUpgradeable is OperatorFilterToggle {error OperatorNotAllowed(address operator);IOperatorFilterRegistry constant OPERATOR_FILTER_REGISTRY =IOperatorFilterRegistry(0x000000000000AAeB6D7670E522A718067333cd4E);function __OperatorFilterer_init(address subscriptionOrRegistrantToCopy, bool subscribe) internal {// If an inheriting token contract is deployed to a network without the registry deployed, the modifier// will not revert, but the contract will need to be registered with the registry once it is deployed in// order for the modifier to filter addresses._register(subscriptionOrRegistrantToCopy, subscribe);}modifier onlyAllowedOperator(address from) virtual {// Check registry code length to facilitate testing in environments without a deployed registry.if (operatorRestriction) {if (address(OPERATOR_FILTER_REGISTRY).code.length > 0) {// Allow spending tokens from addresses with balance
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./interface/IOwnable.sol";/*** @title Ownable* @notice Thirdweb's `Ownable` is a contract extension to be used with any base contract. It exposes functions for setting and reading* who the 'owner' of the inheriting smart contract is, and lets the inheriting contract perform conditional logic that uses* information about who the contract's owner is.*/abstract contract Ownable is IOwnable {/// @dev Owner of the contract (purpose: OpenSea compatibility)address private _owner;/// @dev Reverts if caller is not the owner.modifier onlyOwner() {if (msg.sender != _owner) {revert("Not authorized");}_;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./interface/IPermissions.sol";import "../lib/TWStrings.sol";/*** @title Permissions* @dev This contracts provides extending-contracts with role-based access control mechanisms*/contract Permissions is IPermissions {/// @dev Map from keccak256 hash of a role => a map from address => whether address has role.mapping(bytes32 => mapping(address => bool)) private _hasRole;/// @dev Map from keccak256 hash of a role to role admin. See {getRoleAdmin}.mapping(bytes32 => bytes32) private _getRoleAdmin;/// @dev Default admin role for all roles. Only accounts with this role can grant/revoke other roles.bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;/// @dev Modifier that checks if an account has the specified role; reverts otherwise.modifier onlyRole(bytes32 role) {_checkRole(role, msg.sender);_;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./interface/IPermissionsEnumerable.sol";import "./Permissions.sol";/*** @title PermissionsEnumerable* @dev This contracts provides extending-contracts with role-based access control mechanisms.* Also provides interfaces to view all members with a given role, and total count of members.*/contract PermissionsEnumerable is IPermissionsEnumerable, Permissions {/*** @notice A data structure to store data of members for a given role.** @param index Current index in the list of accounts that have a role.* @param members map from index => address of account that has a role* @param indexOf map from address => index which the account has.*/struct RoleMembers {uint256 index;mapping(uint256 => address) members;mapping(address => uint256) indexOf;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./interface/IPrimarySale.sol";/*** @title Primary Sale* @notice Thirdweb's `PrimarySale` is a contract extension to be used with any base contract. It exposes functions for setting and reading* the recipient of primary sales, and lets the inheriting contract perform conditional logic that uses information about* primary sales, if desired.*/abstract contract PrimarySale is IPrimarySale {/// @dev The address that receives all primary sales value.address private recipient;/// @dev Returns primary sale recipient address.function primarySaleRecipient() public view override returns (address) {return recipient;}/*** @notice Updates primary sale recipient.* @dev Caller should be authorized to set primary sales info.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./interface/IRoyalty.sol";/*** @title Royalty* @notice Thirdweb's `Royalty` is a contract extension to be used with any base contract. It exposes functions for setting and reading* the recipient of royalty fee and the royalty fee basis points, and lets the inheriting contract perform conditional logic* that uses information about royalty fees, if desired.** @dev The `Royalty` contract is ERC2981 compliant.*/abstract contract Royalty is IRoyalty {/// @dev The (default) address that receives all royalty value.address private royaltyRecipient;/// @dev The (default) % of a sale to take as royalty (in basis points).uint16 private royaltyBps;/// @dev Token ID => royalty recipient and bps for tokenmapping(uint256 => RoyaltyInfo) private royaltyInfoForToken;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.10;/// @author thirdwebimport "../lib/NFTMetadataRendererLib.sol";import "./interface/ISharedMetadata.sol";import "../eip/interface/IERC4906.sol";abstract contract SharedMetadata is ISharedMetadata, IERC4906 {/// @notice Token metadata informationSharedMetadataInfo public sharedMetadata;/// @notice Set shared metadata for NFTsfunction setSharedMetadata(SharedMetadataInfo calldata _metadata) external virtual {if (!_canSetSharedMetadata()) {revert("Not authorized");}_setSharedMetadata(_metadata);}/*** @dev Sets shared metadata for NFTs.* @param _metadata common metadata for all tokens*/function _setSharedMetadata(SharedMetadataInfo calldata _metadata) internal {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdweb/*** The interface `IClaimCondition` is written for thirdweb's 'Drop' contracts, which are distribution mechanisms for tokens.** A claim condition defines criteria under which accounts can mint tokens. Claim conditions can be overwritten* or added to by the contract admin. At any moment, there is only one active claim condition.*/interface IClaimCondition {/*** @notice The criteria that make up a claim condition.** @param startTimestamp The unix timestamp after which the claim condition applies.* The same claim condition applies until the `startTimestamp`* of the next claim condition.** @param maxClaimableSupply The maximum total number of tokens that can be claimed under* the claim condition.** @param supplyClaimed At any given point, the number of tokens that have been claimed* under the claim condition.*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./IClaimCondition.sol";/*** The interface `IClaimConditionMultiPhase` is written for thirdweb's 'Drop' contracts, which are distribution mechanisms for tokens.** An authorized wallet can set a series of claim conditions, ordered by their respective `startTimestamp`.* A claim condition defines criteria under which accounts can mint tokens. Claim conditions can be overwritten* or added to by the contract admin. At any moment, there is only one active claim condition.*/interface IClaimConditionMultiPhase is IClaimCondition {/*** @notice The set of all claim conditions, at any given moment.* Claim Phase ID = [currentStartId, currentStartId + length - 1];** @param currentStartId The uid for the first claim condition amongst the current set of* claim conditions. The uid for each next claim condition is one* more than the previous claim condition's uid.** @param count The total number of phases / claim conditions in the list* of claim conditions.
12345678910111213141516171819202122232425// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdweb/*** Thirdweb's `ContractMetadata` is a contract extension for any base contracts. It lets you set a metadata URI* for you contract.** Additionally, `ContractMetadata` is necessary for NFT contracts that want royalties to get distributed on OpenSea.*/interface IContractMetadata {/// @dev Returns the metadata URI of the contract.function contractURI() external view returns (string memory);/*** @dev Sets contract URI for the storefront-level metadata of the contract.* Only module admin can call this function.*/function setContractURI(string calldata _uri) external;/// @dev Emitted when the contract URI is updated.event ContractURIUpdated(string prevURI, string newURI);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./IClaimConditionMultiPhase.sol";/*** The interface `IDrop` is written for thirdweb's 'Drop' contracts, which are distribution mechanisms for tokens.** An authorized wallet can set a series of claim conditions, ordered by their respective `startTimestamp`.* A claim condition defines criteria under which accounts can mint tokens. Claim conditions can be overwritten* or added to by the contract admin. At any moment, there is only one active claim condition.*/interface IDrop is IClaimConditionMultiPhase {/*** @param proof Prood of concerned wallet's inclusion in an allowlist.* @param quantityLimitPerWallet The total quantity of tokens the allowlisted wallet is eligible to claim over time.* @param pricePerToken The price per token the allowlisted wallet must pay to claim tokens.* @param currency The currency in which the allowlisted wallet must pay the price for claiming tokens.*/struct AllowlistProof {bytes32[] proof;uint256 quantityLimitPerWallet;uint256 pricePerToken;
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity ^0.8.0;/// @author thirdweb/*** @dev Provides a function to batch together multiple calls in a single external call.** _Available since v4.1._*/interface IMulticall {/*** @dev Receives and executes a batch of function calls on this contract.*/function multicall(bytes[] calldata data) external returns (bytes[] memory results);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.0;/// @author thirdwebinterface IOperatorFilterRegistry {function isOperatorAllowed(address registrant, address operator) external view returns (bool);function register(address registrant) external;function registerAndSubscribe(address registrant, address subscription) external;function registerAndCopyEntries(address registrant, address registrantToCopy) external;function unregister(address addr) external;function updateOperator(address registrant,address operator,bool filtered) external;function updateOperators(address registrant,address[] calldata operators,bool filtered
123456789101112// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.0;/// @author thirdwebinterface IOperatorFilterToggle {event OperatorRestriction(bool restriction);function operatorRestriction() external view returns (bool);function setOperatorRestriction(bool restriction) external;}
123456789101112131415161718192021// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdweb/*** Thirdweb's `Ownable` is a contract extension to be used with any base contract. It exposes functions for setting and reading* who the 'owner' of the inheriting smart contract is, and lets the inheriting contract perform conditional logic that uses* information about who the contract's owner is.*/interface IOwnable {/// @dev Returns the owner of the contract.function owner() external view returns (address);/// @dev Lets a module admin set a new owner for the contract. The new owner must be a module admin.function setOwner(address _newOwner) external;/// @dev Emitted when a new Owner is set.event OwnerUpdated(address indexed prevOwner, address indexed newOwner);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdweb/*** @dev External interface of AccessControl declared to support ERC165 detection.*/interface IPermissions {/*** @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`** `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite* {RoleAdminChanged} not being emitted signaling this.** _Available since v3.1._*/event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);/*** @dev Emitted when `account` is granted `role`.** `sender` is the account that originated the contract call, an admin role* bearer except when using {AccessControl-_setupRole}.*/event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "./IPermissions.sol";/*** @dev External interface of AccessControlEnumerable declared to support ERC165 detection.*/interface IPermissionsEnumerable is IPermissions {/*** @dev Returns one of the accounts that have `role`. `index` must be a* value between 0 and {getRoleMemberCount}, non-inclusive.** Role bearers are not sorted in any particular way, and their ordering may* change at any point.** WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure* you perform all queries on the same block. See the following* [forum post](https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296)* for more information.*/function getRoleMember(bytes32 role, uint256 index) external view returns (address);/**
123456789101112131415161718192021// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdweb/*** Thirdweb's `Primary` is a contract extension to be used with any base contract. It exposes functions for setting and reading* the recipient of primary sales, and lets the inheriting contract perform conditional logic that uses information about* primary sales, if desired.*/interface IPrimarySale {/// @dev The adress that receives all primary sales value.function primarySaleRecipient() external view returns (address);/// @dev Lets a module admin set the default recipient of all primary sales.function setPrimarySaleRecipient(address _saleRecipient) external;/// @dev Emitted when a new sale recipient is set.event PrimarySaleRecipientUpdated(address indexed recipient);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdwebimport "../../eip/interface/IERC2981.sol";/*** Thirdweb's `Royalty` is a contract extension to be used with any base contract. It exposes functions for setting and reading* the recipient of royalty fee and the royalty fee basis points, and lets the inheriting contract perform conditional logic* that uses information about royalty fees, if desired.** The `Royalty` contract is ERC2981 compliant.*/interface IRoyalty is IERC2981 {struct RoyaltyInfo {address recipient;uint256 bps;}/// @dev Returns the royalty recipient and fee bps.function getDefaultRoyaltyInfo() external view returns (address, uint16);/// @dev Lets a module admin update the royalty bps and recipient.function setDefaultRoyaltyInfo(address _royaltyRecipient, uint256 _royaltyBps) external;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.10;/// @author thirdwebinterface ISharedMetadata {/// @notice Emitted when shared metadata is lazy minted.event SharedMetadataUpdated(string name, string description, string imageURI, string animationURI);/*** @notice Structure for metadata shared across all tokens** @param name Shared name of NFT in metadata* @param description Shared description of NFT in metadata* @param imageURI Shared URI of image to render for NFTs* @param animationURI Shared URI of animation to render for NFTs*/struct SharedMetadataInfo {string name;string description;string imageURI;string animationURI;}/*** @notice Set shared metadata for NFTs
12345678910// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;interface IWETH {function deposit() external payable;function withdraw(uint256 amount) external;function transfer(address to, uint256 value) external returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache-2.0pragma solidity ^0.8.0;/// @author thirdweb// Helper interfacesimport { IWETH } from "../interfaces/IWETH.sol";import "../openzeppelin-presets/token/ERC20/utils/SafeERC20.sol";library CurrencyTransferLib {using SafeERC20 for IERC20;/// @dev The address interpreted as native token of the chain.address public constant NATIVE_TOKEN = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;/// @dev Transfers a given amount of currency.function transferCurrency(address _currency,address _from,address _to,uint256 _amount) internal {if (_amount == 0) {return;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.0;/// @author thirdweb/*** @dev These functions deal with verification of Merkle Trees proofs.** The proofs can be generated using the JavaScript library* https://github.com/miguelmota/merkletreejs[merkletreejs].* Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.** See `test/utils/cryptography/MerkleProof.test.js` for some examples.** Source: https://github.com/ensdomains/governance/blob/master/contracts/MerkleProof.sol*/library MerkleProof {/*** @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree* defined by `root`. For this, a `proof` must be provided, containing* sibling hashes on the branch from the leaf to the root of the tree. Each* pair of leaves and each pair of pre-images are assumed to be sorted.*/function verify(bytes32[] memory proof,bytes32 root,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.10;/* solhint-disable quotes *//// @author thirdweb/// credits: Zoraimport "./TWStrings.sol";import "../openzeppelin-presets/utils/Base64.sol";/// NFT metadata library for rendering metadata associated with editionslibrary NFTMetadataRenderer {/*** @notice Generate edition metadata from storage information as base64-json blob* @dev Combines the media data and metadata* @param name Name of NFT in metadata* @param description Description of NFT in metadata* @param imageURI URI of image to render for edition* @param animationURI URI of animation to render for edition* @param tokenOfEdition Token ID for specific token*/function createMetadataEdition(string memory name,string memory description,string memory imageURI,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Apache 2.0pragma solidity ^0.8.0;/// @author thirdweb/*** @dev Collection of functions related to the address type*/library TWAddress {/*** @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: Apache 2.0pragma solidity ^0.8.0;/// @author thirdweb/*** @dev String operations.*/library TWStrings {bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {// Inspired by OraclizeAPI's implementation - MIT licence// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.solif (value == 0) {return "0";}uint256 temp = value;uint256 digits;while (temp != 0) {digits++;temp /= 10;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.0 (metatx/ERC2771Context.sol)pragma solidity ^0.8.11;import "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol";import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";/*** @dev Context variant with ERC2771 support.*/abstract contract ERC2771ContextUpgradeable is Initializable, ContextUpgradeable {mapping(address => bool) private _trustedForwarder;function __ERC2771Context_init(address[] memory trustedForwarder) internal onlyInitializing {__Context_init_unchained();__ERC2771Context_init_unchained(trustedForwarder);}function __ERC2771Context_init_unchained(address[] memory trustedForwarder) internal onlyInitializing {for (uint256 i = 0; i < trustedForwarder.length; i++) {_trustedForwarder[trustedForwarder[i]] = true;}}function isTrustedForwarder(address forwarder) public view virtual returns (bool) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)pragma solidity ^0.8.0;import "../../../../eip/interface/IERC20.sol";import "../../../../lib/TWAddress.sol";/*** @title SafeERC20* @dev Wrappers around ERC20 operations that throw on failure (when the token* contract returns false). Tokens that return no value (and instead revert or* throw on failure) are also supported, non-reverting calls are assumed to be* successful.* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.*/library SafeERC20 {using TWAddress for address;function safeTransfer(IERC20 token,address to,uint256 value) internal {_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (utils/Base64.sol)pragma solidity ^0.8.0;/*** @dev Provides a set of functions to operate with Base64 strings.** _Available since v4.5._*/library Base64 {/*** @dev Base64 Encoding/Decoding Table*/string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";/*** @dev Converts a `bytes` to its Bytes64 `string` representation.*/function encode(bytes memory data) internal pure returns (string memory) {/*** Inspired by Brecht Devos (Brechtpd) implementation - MIT licence* https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol*/if (data.length == 0) return "";
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)pragma solidity ^0.8.0;import "../utils/introspection/IERC165Upgradeable.sol";/*** @dev Interface for the NFT Royalty Standard.** A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal* support for royalty payments across all NFT marketplaces and ecosystem participants.** _Available since v4.5._*/interface IERC2981Upgradeable is IERC165Upgradeable {/*** @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of* exchange. The royalty amount is denominated and should be paid in that same unit of exchange.*/function royaltyInfo(uint256 tokenId, uint256 salePrice)externalviewreturns (address receiver, uint256 royaltyAmount);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (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// OpenZeppelin Contracts (last updated v4.7.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// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;import "../proxy/utils/Initializable.sol";/*** @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 ContextUpgradeable is Initializable {function __Context_init() internal onlyInitializing {}function __Context_init_unchained() internal onlyInitializing {}function _msgSender() internal view virtual returns (address) {return msg.sender;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol)pragma solidity ^0.8.0;/*** @dev String operations.*/library StringsUpgradeable {bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";uint8 private constant _ADDRESS_LENGTH = 20;/*** @dev Converts a `uint256` to its ASCII `string` decimal representation.*/function toString(uint256 value) internal pure returns (string memory) {// Inspired by OraclizeAPI's implementation - MIT licence// https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.solif (value == 0) {return "0";}uint256 temp = value;uint256 digits;while (temp != 0) {digits++;
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[EIP].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165Upgradeable {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526{"optimizer": {"enabled": true,"runs": 20},"evmVersion": "london","remappings": [":@chainlink/=lib/chainlink/",":@ds-test/=lib/ds-test/src/",":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",":@std/=lib/forge-std/src/",":ERC721A-Upgradeable/=lib/ERC721A-Upgradeable/contracts/",":ERC721A/=lib/ERC721A/contracts/",":chainlink/=lib/chainlink/",":contracts/=contracts/",":ds-test/=lib/ds-test/src/",":dynamic-contracts/=lib/dynamic-contracts/src/",":erc4626-tests/=lib/chainlink/contracts/foundry-lib/openzeppelin-contracts/lib/erc4626-tests/",":erc721a-upgradeable/=lib/ERC721A-Upgradeable/",":erc721a/=lib/ERC721A/",":forge-std/=lib/forge-std/src/",":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",":openzeppelin-contracts/=lib/openzeppelin-contracts/"],"outputSelection": {
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"InvalidQueryRange","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"OperatorNotAllowed","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","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":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"maxClaimableSupply","type":"uint256"},{"internalType":"uint256","name":"supplyClaimed","type":"uint256"},{"internalType":"uint256","name":"quantityLimitPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"pricePerToken","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"string","name":"metadata","type":"string"}],"indexed":false,"internalType":"struct IClaimCondition.ClaimCondition[]","name":"claimConditions","type":"tuple[]"},{"indexed":false,"internalType":"bool","name":"resetEligibility","type":"bool"}],"name":"ClaimConditionsUpdated","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":false,"internalType":"string","name":"prevURI","type":"string"},{"indexed":false,"internalType":"string","name":"newURI","type":"string"}],"name":"ContractURIUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newRoyaltyRecipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"newRoyaltyBps","type":"uint256"}],"name":"DefaultRoyalty","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"restriction","type":"bool"}],"name":"OperatorRestriction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"prevOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"}],"name":"PrimarySaleRecipientUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"royaltyRecipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"royaltyBps","type":"uint256"}],"name":"RoyaltyForToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"description","type":"string"},{"indexed":false,"internalType":"string","name":"imageURI","type":"string"},{"indexed":false,"internalType":"string","name":"animationURI","type":"string"}],"name":"SharedMetadataUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"claimConditionIndex","type":"uint256"},{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"startTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quantityClaimed","type":"uint256"}],"name":"TokensClaimed","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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address","name":"_currency","type":"address"},{"internalType":"uint256","name":"_pricePerToken","type":"uint256"},{"components":[{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"uint256","name":"quantityLimitPerWallet","type":"uint256"},{"internalType":"uint256","name":"pricePerToken","type":"uint256"},{"internalType":"address","name":"currency","type":"address"}],"internalType":"struct IDrop.AllowlistProof","name":"_allowlistProof","type":"tuple"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"claim","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimCondition","outputs":[{"internalType":"uint256","name":"currentStartId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","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":[],"name":"getActiveClaimConditionId","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":"uint256","name":"_conditionId","type":"uint256"}],"name":"getClaimConditionById","outputs":[{"components":[{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"maxClaimableSupply","type":"uint256"},{"internalType":"uint256","name":"supplyClaimed","type":"uint256"},{"internalType":"uint256","name":"quantityLimitPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"pricePerToken","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"string","name":"metadata","type":"string"}],"internalType":"struct IClaimCondition.ClaimCondition","name":"condition","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDefaultRoyaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"member","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getRoyaltyInfoForToken","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_conditionId","type":"uint256"},{"internalType":"address","name":"_claimer","type":"address"}],"name":"getSupplyClaimedByWallet","outputs":[{"internalType":"uint256","name":"supplyClaimedByWallet","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRoleWithSwitch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_defaultAdmin","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_contractURI","type":"string"},{"internalType":"address[]","name":"_trustedForwarders","type":"address[]"},{"internalType":"address","name":"_saleRecipient","type":"address"},{"internalType":"address","name":"_royaltyRecipient","type":"address"},{"internalType":"uint128","name":"_royaltyBps","type":"uint128"}],"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":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextTokenIdToClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextTokenIdToMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operatorRestriction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"primarySaleRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","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":[{"components":[{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"maxClaimableSupply","type":"uint256"},{"internalType":"uint256","name":"supplyClaimed","type":"uint256"},{"internalType":"uint256","name":"quantityLimitPerWallet","type":"uint256"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"pricePerToken","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"string","name":"metadata","type":"string"}],"internalType":"struct IClaimCondition.ClaimCondition[]","name":"_conditions","type":"tuple[]"},{"internalType":"bool","name":"_resetClaimEligibility","type":"bool"}],"name":"setClaimConditions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_royaltyRecipient","type":"address"},{"internalType":"uint256","name":"_royaltyBps","type":"uint256"}],"name":"setDefaultRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_restriction","type":"bool"}],"name":"setOperatorRestriction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_saleRecipient","type":"address"}],"name":"setPrimarySaleRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_bps","type":"uint256"}],"name":"setRoyaltyInfoForToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageURI","type":"string"},{"internalType":"string","name":"animationURI","type":"string"}],"internalType":"struct ISharedMetadata.SharedMetadataInfo","name":"_metadata","type":"tuple"}],"name":"setSharedMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sharedMetadata","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"imageURI","type":"string"},{"internalType":"string","name":"animationURI","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_subscription","type":"address"}],"name":"subscribeToRegistry","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":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","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":"uint256","name":"_conditionId","type":"uint256"},{"internalType":"address","name":"_claimer","type":"address"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"address","name":"_currency","type":"address"},{"internalType":"uint256","name":"_pricePerToken","type":"uint256"},{"components":[{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"uint256","name":"quantityLimitPerWallet","type":"uint256"},{"internalType":"uint256","name":"pricePerToken","type":"uint256"},{"internalType":"address","name":"currency","type":"address"}],"internalType":"struct IDrop.AllowlistProof","name":"_allowlistProof","type":"tuple"}],"name":"verifyClaim","outputs":[{"internalType":"bool","name":"isOverride","type":"bool"}],"stateMutability":"view","type":"function"}]
Loading...
Loading
Loading...
Loading
[ 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.