// ERC721 ABI for nft operations
export const erc721Abi = [
{
"inputs": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "symbol",
"type": "string"
},
{
"internalType": "string",
"name": "baseURI_",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC721IncorrectOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC721InsufficientApproval",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC721InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "ERC721InvalidOperator",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC721InvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC721InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC721InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC721NonexistentToken",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"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": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"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": [
{
"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": [],
"name": "baseURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"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": "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"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "quantity",
"type": "uint256"
}
],
"name": "mintBatch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"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": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"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": "newBaseURI",
"type": "string"
}
],
"name": "setBaseURI",
"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": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
] as const
export const ERC721_BYTECODE = "0x60806040523480156200001157600080fd5b5060405162001d0738038062001d0783398101604081905262000034916200073f565b338383600062000045838262000856565b50600162000054828262000856565b5050506001600160a01b0381166200008757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200009281620000d6565b506007620000a1828262000856565b50620000b6336008546200012860201b60201c565b60088054906000620000c88362000922565b9190505550505050620009d3565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200014a8282604051806020016040528060008152506200014e60201b60201c565b5050565b6200015a83836200016f565b6200016a336000858585620001d9565b505050565b6001600160a01b0382166200019b57604051633250574960e11b8152600060048201526024016200007e565b6000620001aa83838362000311565b90506001600160a01b038116156200016a576040516339e3563760e11b8152600060048201526024016200007e565b6001600160a01b0383163b156200030a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906200021e9088908890879087906004016200094a565b6020604051808303816000875af19250505080156200025c575060408051601f3d908101601f191682019092526200025991810190620009a0565b60015b620002ca573d8080156200028d576040519150601f19603f3d011682016040523d82523d6000602084013e62000292565b606091505b508051600003620002c257604051633250574960e11b81526001600160a01b03851660048201526024016200007e565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146200030857604051633250574960e11b81526001600160a01b03851660048201526024016200007e565b505b5050505050565b6000828152600260205260408120546001600160a01b039081169083161562000341576200034181848662000410565b6001600160a01b0381161562000381576200036060008581806200047a565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615620003b1576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6200041d838383620005a8565b6200016a576001600160a01b0383166200044e57604051637e27328960e01b8152600481018290526024016200007e565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016200007e565b80806200048f57506001600160a01b03821615155b1562000578576000620004a28462000631565b90506001600160a01b03831615801590620004cf5750826001600160a01b0316816001600160a01b031614155b80156200050257506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b156200052d5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016200007e565b8115620005765783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006295750826001600160a01b0316846001600160a01b031614806200060457506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b806200062957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200066c57604051637e27328960e01b8152600481018490526024016200007e565b92915050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006a55781810151838201526020016200068b565b50506000910152565b600082601f830112620006c057600080fd5b81516001600160401b0380821115620006dd57620006dd62000672565b604051601f8301601f19908116603f0116810190828211818310171562000708576200070862000672565b816040528381528660208588010111156200072257600080fd5b6200073584602083016020890162000688565b9695505050505050565b6000806000606084860312156200075557600080fd5b83516001600160401b03808211156200076d57600080fd5b6200077b87838801620006ae565b945060208601519150808211156200079257600080fd5b620007a087838801620006ae565b93506040860151915080821115620007b757600080fd5b50620007c686828701620006ae565b9150509250925092565b600181811c90821680620007e557607f821691505b6020821081036200080657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200016a57600081815260208120601f850160051c81016020861015620008355750805b601f850160051c820191505b81811015620003085782815560010162000841565b81516001600160401b0381111562000872576200087262000672565b6200088a81620008838454620007d0565b846200080c565b602080601f831160018114620008c25760008415620008a95750858301515b600019600386901b1c1916600185901b17855562000308565b600085815260208120601f198616915b82811015620008f357888601518255948401946001909101908401620008d2565b5085821015620009125787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000600182016200094357634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b038087168352808616602084015250836040830152608060608301528251806080840152620009898160a085016020870162000688565b601f01601f19169190910160a00195945050505050565b600060208284031215620009b357600080fd5b81516001600160e01b031981168114620009cc57600080fd5b9392505050565b61132480620009e36000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80636c0360eb116100ad578063a22cb46511610071578063a22cb4651461026a578063b88d4fde1461027d578063c87b56dd14610290578063e985e9c5146102a3578063f2fde38b146102b657600080fd5b80636c0360eb1461022057806370a0823114610228578063715018a6146102495780638da5cb5b1461025157806395d89b411461026257600080fd5b8063248b71fc116100f4578063248b71fc146101c157806342842e0e146101d457806355f804b3146101e75780636352211e146101fa5780636a6278421461020d57600080fd5b806301ffc9a71461013157806306fdde0314610159578063081812fc1461016e578063095ea7b31461019957806323b872dd146101ae575b600080fd5b61014461013f366004610e08565b6102c9565b60405190151581526020015b60405180910390f35b61016161031b565b6040516101509190610e75565b61018161017c366004610e88565b6103ad565b6040516001600160a01b039091168152602001610150565b6101ac6101a7366004610ebd565b6103d6565b005b6101ac6101bc366004610ee7565b6103e5565b6101ac6101cf366004610ebd565b610475565b6101ac6101e2366004610ee7565b6104c1565b6101ac6101f5366004610faf565b6104dc565b610181610208366004610e88565b6104f0565b6101ac61021b366004610ff8565b6104fb565b610161610527565b61023b610236366004610ff8565b610536565b604051908152602001610150565b6101ac61057e565b6006546001600160a01b0316610181565b610161610592565b6101ac610278366004611013565b6105a1565b6101ac61028b36600461104f565b6105ac565b61016161029e366004610e88565b6105c4565b6101446102b13660046110cb565b61062c565b6101ac6102c4366004610ff8565b61065a565b60006001600160e01b031982166380ac58cd60e01b14806102fa57506001600160e01b03198216635b5e139f60e01b145b8061031557506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461032a906110fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610356906110fe565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050905090565b60006103b882610698565b506000828152600460205260409020546001600160a01b0316610315565b6103e18282336106d1565b5050565b6001600160a01b03821661041457604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006104218383336106de565b9050836001600160a01b0316816001600160a01b03161461046f576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161040b565b50505050565b61047d6107d7565b60005b818110156104bc5761049483600854610804565b600880549060006104a483611138565b919050555080806104b490611138565b915050610480565b505050565b6104bc838383604051806020016040528060008152506105ac565b6104e46107d7565b60076103e182826111a5565b600061031582610698565b6105036107d7565b61050f81600854610804565b6008805490600061051f83611138565b919050555050565b60606007805461032a906110fe565b60006001600160a01b038216610562576040516322718ad960e21b81526000600482015260240161040b565b506001600160a01b031660009081526003602052604090205490565b6105866107d7565b610590600061081e565b565b60606001805461032a906110fe565b6103e1338383610870565b6105b78484846103e5565b61046f338585858561090f565b60606105cf82610698565b5060006105da610527565b905060008151116105fa5760405180602001604052806000815250610625565b8061060484610a3a565b604051602001610615929190611265565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106626107d7565b6001600160a01b03811661068c57604051631e4fbdf760e01b81526000600482015260240161040b565b6106958161081e565b50565b6000818152600260205260408120546001600160a01b03168061031557604051637e27328960e01b81526004810184905260240161040b565b6104bc8383836001610acd565b6000828152600260205260408120546001600160a01b039081169083161561070b5761070b818486610bd3565b6001600160a01b0381161561074957610728600085600080610acd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610778576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105905760405163118cdaa760e01b815233600482015260240161040b565b6103e1828260405180602001604052806000815250610c37565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166108a257604051630b61174360e31b81526001600160a01b038316600482015260240161040b565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610a3357604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610951908890889087908790600401611294565b6020604051808303816000875af192505050801561098c575060408051601f3d908101601f19168201909252610989918101906112d1565b60015b6109f5573d8080156109ba576040519150601f19603f3d011682016040523d82523d6000602084013e6109bf565b606091505b5080516000036109ed57604051633250574960e11b81526001600160a01b038516600482015260240161040b565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610a3157604051633250574960e11b81526001600160a01b038516600482015260240161040b565b505b5050505050565b60606000610a4783610c4f565b600101905060008167ffffffffffffffff811115610a6757610a67610f23565b6040519080825280601f01601f191660200182016040528015610a91576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a9b57509392505050565b8080610ae157506001600160a01b03821615155b15610ba3576000610af184610698565b90506001600160a01b03831615801590610b1d5750826001600160a01b0316816001600160a01b031614155b8015610b305750610b2e818461062c565b155b15610b595760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161040b565b8115610ba15783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde838383610d27565b6104bc576001600160a01b038316610c0c57604051637e27328960e01b81526004810182905260240161040b565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161040b565b610c418383610d8d565b6104bc33600085858561090f565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610c8e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610cba576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610cd857662386f26fc10000830492506010015b6305f5e1008310610cf0576305f5e100830492506008015b6127108310610d0457612710830492506004015b60648310610d16576064830492506002015b600a83106103155760010192915050565b60006001600160a01b03831615801590610d855750826001600160a01b0316846001600160a01b03161480610d615750610d61848461062c565b80610d8557506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610db757604051633250574960e11b81526000600482015260240161040b565b6000610dc5838360006106de565b90506001600160a01b038116156104bc576040516339e3563760e11b81526000600482015260240161040b565b6001600160e01b03198116811461069557600080fd5b600060208284031215610e1a57600080fd5b813561062581610df2565b60005b83811015610e40578181015183820152602001610e28565b50506000910152565b60008151808452610e61816020860160208601610e25565b601f01601f19169290920160200192915050565b6020815260006106256020830184610e49565b600060208284031215610e9a57600080fd5b5035919050565b80356001600160a01b0381168114610eb857600080fd5b919050565b60008060408385031215610ed057600080fd5b610ed983610ea1565b946020939093013593505050565b600080600060608486031215610efc57600080fd5b610f0584610ea1565b9250610f1360208501610ea1565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115610f5457610f54610f23565b604051601f8501601f19908116603f01168101908282118183101715610f7c57610f7c610f23565b81604052809350858152868686011115610f9557600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215610fc157600080fd5b813567ffffffffffffffff811115610fd857600080fd5b8201601f81018413610fe957600080fd5b610d8584823560208401610f39565b60006020828403121561100a57600080fd5b61062582610ea1565b6000806040838503121561102657600080fd5b61102f83610ea1565b91506020830135801515811461104457600080fd5b809150509250929050565b6000806000806080858703121561106557600080fd5b61106e85610ea1565b935061107c60208601610ea1565b925060408501359150606085013567ffffffffffffffff81111561109f57600080fd5b8501601f810187136110b057600080fd5b6110bf87823560208401610f39565b91505092959194509250565b600080604083850312156110de57600080fd5b6110e783610ea1565b91506110f560208401610ea1565b90509250929050565b600181811c9082168061111257607f821691505b60208210810361113257634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161115857634e487b7160e01b600052601160045260246000fd5b5060010190565b601f8211156104bc57600081815260208120601f850160051c810160208610156111865750805b601f850160051c820191505b81811015610a3157828155600101611192565b815167ffffffffffffffff8111156111bf576111bf610f23565b6111d3816111cd84546110fe565b8461115f565b602080601f83116001811461120857600084156111f05750858301515b600019600386901b1c1916600185901b178555610a31565b600085815260208120601f198616915b8281101561123757888601518255948401946001909101908401611218565b50858210156112555787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008351611277818460208801610e25565b83519083019061128b818360208801610e25565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906112c790830184610e49565b9695505050505050565b6000602082840312156112e357600080fd5b815161062581610df256fea2646970667358221220859a3b46c6279c03c351d3f7b4bbf40cf7376426ce64d29f7a3864e5350073ba64736f6c63430008140033"