diff --git a/src/server/routes/deploy/prebuilt.ts b/src/server/routes/deploy/prebuilt.ts index 883768b6d..3b18466fa 100644 --- a/src/server/routes/deploy/prebuilt.ts +++ b/src/server/routes/deploy/prebuilt.ts @@ -13,6 +13,12 @@ import { import { txOverridesWithValueSchema } from "../../schemas/tx-overrides"; import { walletWithAAHeaderSchema } from "../../schemas/wallet"; import { getChainIdFromChain } from "../../utils/chain"; +import { getDeployArguments, PREBUILT_CONTRACTS_MAP } from "@thirdweb-dev/sdk"; + +const TW_CLONE_FACTORY_ADDRESS = + "0x25548Ba29a0071F30E4bDCd98Ea72F79341b07a1" as const; +const NFT_COLLECTION_AMEX_IMPLEMENTATION_ADDRESS = + "0x7311B46D12219f21080A84BaA1505E0683E9De99" as const; // INPUTS const requestSchema = prebuiltDeployParamSchema; @@ -85,6 +91,51 @@ export async function deployPrebuilt(fastify: FastifyInstance) { } = request.headers as Static; const sdk = await getSdk({ chainId, walletAddress, accountAddress }); + + if (contractType === "nft-collection-amex") { + const parsedContractMetadata = await PREBUILT_CONTRACTS_MAP[ + "nft-collection" + ].schema.deploy.parseAsync(contractMetadata); + const contractURI = await sdk.storage.upload(parsedContractMetadata); + + const signer = await sdk.getSigner(); + + if (!signer) { + throw new Error("No signer found, please use a wallet address"); + } + + const initializerParams = await getDeployArguments( + "nft-collection", + contractMetadata, + contractURI, + signer, + ); + + const tx = await sdk.deployer.deployViaFactory.prepare( + TW_CLONE_FACTORY_ADDRESS, + NFT_COLLECTION_AMEX_IMPLEMENTATION_ADDRESS, + NFT_COLLECTION_AMEX_ABI, + "initialize", + initializerParams, + saltForProxyDeploy, + ); + + const deployedAddress = (await tx.simulate()) as Address; + + const queueId = await queueTx({ + tx, + chainId, + extension: "deploy-prebuilt", + idempotencyKey, + txOverrides, + }); + + return reply.status(StatusCodes.OK).send({ + deployedAddress, + queueId, + }); + } + const tx = await sdk.deployer.deployBuiltInContract.prepare( contractType, contractMetadata, @@ -112,3 +163,1597 @@ export async function deployPrebuilt(fastify: FastifyInstance) { }, }); } + +const NFT_COLLECTION_AMEX_ABI = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "CurrencyTransferLibFailedNativeTransfer", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "NFTMetadataFrozen", + type: "error", + }, + { + inputs: [], + name: "NFTMetadataInvalidUrl", + type: "error", + }, + { + inputs: [], + name: "NFTMetadataUnauthorized", + 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: [ + { + indexed: true, + internalType: "address", + name: "newRoyaltyRecipient", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "newRoyaltyBps", + type: "uint256", + }, + ], + name: "DefaultRoyalty", + type: "event", + }, + { + anonymous: false, + inputs: [], + name: "EIP712DomainChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "platformFeeRecipient", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "flatFee", + type: "uint256", + }, + ], + name: "FlatPlatformFeeUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [], + name: "MetadataFrozen", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_tokenId", + type: "uint256", + }, + ], + name: "MetadataUpdate", + 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: "platformFeeRecipient", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "platformFeeBps", + type: "uint256", + }, + ], + name: "PlatformFeeInfoUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "enum IPlatformFee.PlatformFeeType", + name: "feeType", + type: "uint8", + }, + ], + name: "PlatformFeeTypeUpdated", + 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: true, + internalType: "address", + name: "mintedTo", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenIdMinted", + type: "uint256", + }, + { + indexed: false, + internalType: "string", + name: "uri", + type: "string", + }, + ], + name: "TokensMinted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "signer", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "mintedTo", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenIdMinted", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "address", + name: "royaltyRecipient", + type: "address", + }, + { + internalType: "uint256", + name: "royaltyBps", + type: "uint256", + }, + { + internalType: "address", + name: "primarySaleRecipient", + type: "address", + }, + { + internalType: "string", + name: "uri", + type: "string", + }, + { + internalType: "uint256", + name: "price", + type: "uint256", + }, + { + internalType: "address", + name: "currency", + type: "address", + }, + { + internalType: "uint128", + name: "validityStartTimestamp", + type: "uint128", + }, + { + internalType: "uint128", + name: "validityEndTimestamp", + type: "uint128", + }, + { + internalType: "bytes32", + name: "uid", + type: "bytes32", + }, + ], + indexed: false, + internalType: "struct ITokenERC721.MintRequest", + name: "mintRequest", + type: "tuple", + }, + ], + name: "TokensMintedWithSignature", + 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: [], + name: "DEFAULT_FEE_RECIPIENT", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + 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: [], + name: "contractType", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "contractURI", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "contractVersion", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "eip712Domain", + outputs: [ + { + internalType: "bytes1", + name: "fields", + type: "bytes1", + }, + { + internalType: "string", + name: "name", + type: "string", + }, + { + internalType: "string", + name: "version", + type: "string", + }, + { + internalType: "uint256", + name: "chainId", + type: "uint256", + }, + { + internalType: "address", + name: "verifyingContract", + type: "address", + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "uint256[]", + name: "extensions", + type: "uint256[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "freezeMetadata", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getDefaultRoyaltyInfo", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getPlatformFeeInfo", + 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: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + ], + name: "getRoleMemberCount", + outputs: [ + { + internalType: "uint256", + name: "", + 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: "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: "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", + }, + { + internalType: "uint128", + name: "_platformFeeBps", + type: "uint128", + }, + { + internalType: "address", + name: "_platformFeeRecipient", + 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: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_to", + type: "address", + }, + { + internalType: "string", + name: "_uri", + type: "string", + }, + ], + name: "mintTo", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "address", + name: "royaltyRecipient", + type: "address", + }, + { + internalType: "uint256", + name: "royaltyBps", + type: "uint256", + }, + { + internalType: "address", + name: "primarySaleRecipient", + type: "address", + }, + { + internalType: "string", + name: "uri", + type: "string", + }, + { + internalType: "uint256", + name: "price", + type: "uint256", + }, + { + internalType: "address", + name: "currency", + type: "address", + }, + { + internalType: "uint128", + name: "validityStartTimestamp", + type: "uint128", + }, + { + internalType: "uint128", + name: "validityEndTimestamp", + type: "uint128", + }, + { + internalType: "bytes32", + name: "uid", + type: "bytes32", + }, + ], + internalType: "struct ITokenERC721.MintRequest", + name: "_req", + type: "tuple", + }, + { + internalType: "bytes", + name: "_signature", + type: "bytes", + }, + ], + name: "mintWithSignature", + outputs: [ + { + internalType: "uint256", + name: "tokenIdMinted", + type: "uint256", + }, + ], + stateMutability: "payable", + 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: "nextTokenIdToMint", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + 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: "platformFeeRecipient", + 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: "nonpayable", + 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: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "bool", + name: "approved", + type: "bool", + }, + ], + name: "setApprovalForAll", + 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: "address", + name: "_newOwner", + type: "address", + }, + ], + name: "setOwner", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_platformFeeRecipient", + type: "address", + }, + { + internalType: "uint256", + name: "_platformFeeBps", + type: "uint256", + }, + ], + name: "setPlatformFeeInfo", + 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: [ + { + internalType: "uint256", + name: "_tokenId", + type: "uint256", + }, + { + internalType: "string", + name: "_uri", + type: "string", + }, + ], + name: "setTokenURI", + 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: "index", + type: "uint256", + }, + ], + name: "tokenByIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "uint256", + name: "index", + type: "uint256", + }, + ], + name: "tokenOfOwnerByIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_tokenId", + type: "uint256", + }, + ], + name: "tokenURI", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + 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: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "uriFrozen", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "address", + name: "royaltyRecipient", + type: "address", + }, + { + internalType: "uint256", + name: "royaltyBps", + type: "uint256", + }, + { + internalType: "address", + name: "primarySaleRecipient", + type: "address", + }, + { + internalType: "string", + name: "uri", + type: "string", + }, + { + internalType: "uint256", + name: "price", + type: "uint256", + }, + { + internalType: "address", + name: "currency", + type: "address", + }, + { + internalType: "uint128", + name: "validityStartTimestamp", + type: "uint128", + }, + { + internalType: "uint128", + name: "validityEndTimestamp", + type: "uint128", + }, + { + internalType: "bytes32", + name: "uid", + type: "bytes32", + }, + ], + internalType: "struct ITokenERC721.MintRequest", + name: "_req", + type: "tuple", + }, + { + internalType: "bytes", + name: "_signature", + type: "bytes", + }, + ], + name: "verify", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const;