{
  "_format": "hh-sol-artifact-1",
  "contractName": "TRC6909MetadataUpgradeable",
  "sourceName": "contracts/token/TRC6909/extensions/TRC6909MetadataUpgradeable.sol",
  "abi": [
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "TRC6909InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "TRC6909InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        }
      ],
      "name": "TRC6909InvalidApprover",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "TRC6909InvalidReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "TRC6909InvalidSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "TRC6909InvalidSpender",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "OperatorSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "newDecimals",
          "type": "uint8"
        }
      ],
      "name": "TRC6909DecimalsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "newName",
          "type": "string"
        }
      ],
      "name": "TRC6909NameUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "newSymbol",
          "type": "string"
        }
      ],
      "name": "TRC6909SymbolUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "isOperator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setOperator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60808060405234601d57d3601d57d2601d5761094890816100228239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ad800c1461052d578062fdd58e146104d457806301ffc9a71461045a578063095bcdb6146104385780633f47e662146103df578063426a8493146103595780634e41a1fb146102f3578063558a72971461022f578063598af9e7146101ee578063b6363cf2146101985763fe99049a14610090575f80fd5b3461019457d361019457d2610194576080366003190112610194576100b36105aa565b6100bb6105c9565b60643590604435906001600160a01b03841633141580610171575b6100ef575b6100e493610799565b602060405160018152f35b6100fa823386610770565b5f198110610109575b506100db565b8381106101435793836100e49561011f83610700565b60018060a01b0333165f5260205260405f20855f526020520360405f205593610103565b604051630681656b60e51b815233600482015260248101919091526044810193909352506064820152608490fd5b5061017b84610738565b335f908152602091909152604090205460ff16156100d6565b5f80fd5b3461019457d361019457d2610194576040366003190112610194576101bb6105aa565b6101cc6101c66105c9565b91610738565b9060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461019457d361019457d26101945760603660031901126101945760206102276102166105aa565b61021e6105c9565b60443591610770565b604051908152f35b3461019457d361019457d2610194576040366003190112610194576102526105aa565b602435908115158092036101945733156102e0576001600160a01b03169081156102cd5761027f33610738565b825f5260205260405f2060ff1981541660ff83161790556040519081527fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b631c99e77f60e31b5f525f60045260245ffd5b6379ce1f7760e01b5f525f60045260245ffd5b3461019457d361019457d2610194576020366003190112610194576004355f527f5d3cdfc8b49195da6280952caa2aadb1d709d06d576f9ee6ceaf35fb83cc9000602052610355610349600160405f200161061b565b60405191829182610580565b0390f35b3461019457d361019457d261019457610371366105e8565b909133156102e0576001600160a01b03169081156102cd5761039233610700565b825f5260205260405f20835f526020528060405f20556040519081527fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b3461019457d361019457d2610194576020366003190112610194576004355f527f5d3cdfc8b49195da6280952caa2aadb1d709d06d576f9ee6ceaf35fb83cc9000602052602060ff600260405f20015416604051908152f35b3461019457d361019457d2610194576100e4610453366105e8565b9133610799565b3461019457d361019457d26101945760203660031901126101945760043563ffffffff60e01b8116809103610194576020906371abc79560e01b81149081156104a9575b506040519015158152f35b630f632fb360e01b8114915081156104c3575b508261049e565b6301ffc9a760e01b149050826104bc565b3461019457d361019457d2610194576040366003190112610194576104f76105aa565b60018060a01b03165f525f805160206108e583398151915260205260405f206024355f52602052602060405f2054604051908152f35b3461019457d361019457d2610194576020366003190112610194576004355f527f5d3cdfc8b49195da6280952caa2aadb1d709d06d576f9ee6ceaf35fb83cc900060205261035561034960405f2061061b565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b6004356001600160a81b0381168103610194576001600160a01b031690565b6024356001600160a81b0381168103610194576001600160a01b031690565b6060906003190112610194576004356001600160a81b0381168103610194576001600160a01b0316906024359060443590565b90604051915f908054908160011c916001811680156106f6575b6020841081146106e2578387529081156106c4575060011461068c575b5050829003601f01601f1916820167ffffffffffffffff81118382101761067857604052565b634e487b7160e01b5f52604160045260245ffd5b9091505f5260205f205f905b8282106106ae5750602091508301015f80610652565b6001816020925483858901015201910190610698565b9150506020925060ff191682850152151560051b8301015f80610652565b634e487b7160e01b5f52602260045260245ffd5b92607f1692610635565b6001600160a01b03165f9081527f93cde49003e545345558860c138c88f79bdc58417976f453134e8463dfae31026020526040902090565b6001600160a01b03165f9081527f93cde49003e545345558860c138c88f79bdc58417976f453134e8463dfae31016020526040902090565b61077990610700565b9060018060a01b03165f5260205260405f20905f5260205260405f205490565b91926001600160a01b0383169182156108d1576001600160a01b03169283156108be57825f525f805160206108e583398151915260205260405f20855f5260205260405f20549082821061088557508190835f525f805160206108e583398151915260205260405f20865f526020520360405f2055825f525f805160206108e583398151915260205260405f20845f5260205260405f20805491808301809311610871577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885992604092558151903382526020820152a4565b634e487b7160e01b5f52601160045260245ffd5b604051630cc122ef60e11b81526001600160a01b0391909116600482015260248101919091526044810182905260648101859052608490fd5b63102e5fab60e31b5f525f60045260245ffd5b634cdfa10760e11b5f525f60045260245ffdfe93cde49003e545345558860c138c88f79bdc58417976f453134e8463dfae3100a36474726f6e58221220b6a4f4c2c501d469d58791fbf08b85175197069be609532c3dfca1e1bd09f4046c6578706572696d656e74616cf564736f6c634300081a0041",
  "deployedBytecode": "0x60806040526004361015610011575f80fd5b5f3560e01c8062ad800c1461052d578062fdd58e146104d457806301ffc9a71461045a578063095bcdb6146104385780633f47e662146103df578063426a8493146103595780634e41a1fb146102f3578063558a72971461022f578063598af9e7146101ee578063b6363cf2146101985763fe99049a14610090575f80fd5b3461019457d361019457d2610194576080366003190112610194576100b36105aa565b6100bb6105c9565b60643590604435906001600160a01b03841633141580610171575b6100ef575b6100e493610799565b602060405160018152f35b6100fa823386610770565b5f198110610109575b506100db565b8381106101435793836100e49561011f83610700565b60018060a01b0333165f5260205260405f20855f526020520360405f205593610103565b604051630681656b60e51b815233600482015260248101919091526044810193909352506064820152608490fd5b5061017b84610738565b335f908152602091909152604090205460ff16156100d6565b5f80fd5b3461019457d361019457d2610194576040366003190112610194576101bb6105aa565b6101cc6101c66105c9565b91610738565b9060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b3461019457d361019457d26101945760603660031901126101945760206102276102166105aa565b61021e6105c9565b60443591610770565b604051908152f35b3461019457d361019457d2610194576040366003190112610194576102526105aa565b602435908115158092036101945733156102e0576001600160a01b03169081156102cd5761027f33610738565b825f5260205260405f2060ff1981541660ff83161790556040519081527fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b631c99e77f60e31b5f525f60045260245ffd5b6379ce1f7760e01b5f525f60045260245ffd5b3461019457d361019457d2610194576020366003190112610194576004355f527f5d3cdfc8b49195da6280952caa2aadb1d709d06d576f9ee6ceaf35fb83cc9000602052610355610349600160405f200161061b565b60405191829182610580565b0390f35b3461019457d361019457d261019457610371366105e8565b909133156102e0576001600160a01b03169081156102cd5761039233610700565b825f5260205260405f20835f526020528060405f20556040519081527fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b3461019457d361019457d2610194576020366003190112610194576004355f527f5d3cdfc8b49195da6280952caa2aadb1d709d06d576f9ee6ceaf35fb83cc9000602052602060ff600260405f20015416604051908152f35b3461019457d361019457d2610194576100e4610453366105e8565b9133610799565b3461019457d361019457d26101945760203660031901126101945760043563ffffffff60e01b8116809103610194576020906371abc79560e01b81149081156104a9575b506040519015158152f35b630f632fb360e01b8114915081156104c3575b508261049e565b6301ffc9a760e01b149050826104bc565b3461019457d361019457d2610194576040366003190112610194576104f76105aa565b60018060a01b03165f525f805160206108e583398151915260205260405f206024355f52602052602060405f2054604051908152f35b3461019457d361019457d2610194576020366003190112610194576004355f527f5d3cdfc8b49195da6280952caa2aadb1d709d06d576f9ee6ceaf35fb83cc900060205261035561034960405f2061061b565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b6004356001600160a81b0381168103610194576001600160a01b031690565b6024356001600160a81b0381168103610194576001600160a01b031690565b6060906003190112610194576004356001600160a81b0381168103610194576001600160a01b0316906024359060443590565b90604051915f908054908160011c916001811680156106f6575b6020841081146106e2578387529081156106c4575060011461068c575b5050829003601f01601f1916820167ffffffffffffffff81118382101761067857604052565b634e487b7160e01b5f52604160045260245ffd5b9091505f5260205f205f905b8282106106ae5750602091508301015f80610652565b6001816020925483858901015201910190610698565b9150506020925060ff191682850152151560051b8301015f80610652565b634e487b7160e01b5f52602260045260245ffd5b92607f1692610635565b6001600160a01b03165f9081527f93cde49003e545345558860c138c88f79bdc58417976f453134e8463dfae31026020526040902090565b6001600160a01b03165f9081527f93cde49003e545345558860c138c88f79bdc58417976f453134e8463dfae31016020526040902090565b61077990610700565b9060018060a01b03165f5260205260405f20905f5260205260405f205490565b91926001600160a01b0383169182156108d1576001600160a01b03169283156108be57825f525f805160206108e583398151915260205260405f20855f5260205260405f20549082821061088557508190835f525f805160206108e583398151915260205260405f20865f526020520360405f2055825f525f805160206108e583398151915260205260405f20845f5260205260405f20805491808301809311610871577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885992604092558151903382526020820152a4565b634e487b7160e01b5f52601160045260245ffd5b604051630cc122ef60e11b81526001600160a01b0391909116600482015260248101919091526044810182905260648101859052608490fd5b63102e5fab60e31b5f525f60045260245ffd5b634cdfa10760e11b5f525f60045260245ffdfe93cde49003e545345558860c138c88f79bdc58417976f453134e8463dfae3100a36474726f6e58221220b6a4f4c2c501d469d58791fbf08b85175197069be609532c3dfca1e1bd09f4046c6578706572696d656e74616cf564736f6c634300081a0041",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
