---
# System prepended metadata

title: Untitled

---

## Mint
- Mint is only allowed from BaseChain.
- 3,605 supply, 500k OMNI cost 
- Each account can only mint 10 NFTs in any given time.
- Each account can mint a max of 50 NFTs.

**To mint -**
```solidity
OmniNFTA.mint(mintNmber)

// interchain
fee = OmniNFT.estimateMintFees(
        uint256 mintNumber,
        address payable _refundAddress,
        address nftRecipient,
        bytes memory _adapterParams
)
OmniNFT.mint{value: fee}(
        uint256 mintNumber, // number of nfts that need to be minted
        address payable _refundAddress, // user address
        address nftRecipient, // user address
        bytes memory _adapterParams
    )
 // Will confirm the value that adapterparams should take.
```
- **mintNumber** is the number of NFTs to mint for the account

**Text to display on mint page**
- that each user can mint a max of 50 NFTs, 10 in each mint.
- That every NFT can be redeemed for the Omnicat paid for it, but that is an irreversible process.

**Data to display**

- Number of NFTs minted (total) - 
```solidity
OmniNFTA.nextTokenIdMint()
```
This gives the number of NFTs inted so far.

- Number of NFTs minted by the user - 
```solidity
OmniNFTA.UserMintedNumber(address userAddress)
```

- Balance of User = 
```solidity
OmniNFTA.balanceOf(userAddress)
OmniNFT.balanceOf(userAddress)
```


## Burn
- Burn is only allowed after the whole collection has been minted out.
- Burning an NFT gives you back your omnicat.
- Burn can only be done one NFT at a time.

**To Burn -**
```solidity
// On Blast
OmniNFTA.burn(tokenId)
// On other chain
fee = OmniNFT.estimateBurnFees(
        uint256 tokenId,
        address payable _refundAddress,
        bytes memory _adapterParams
    ) // view call
OmniNFT.burn{value: fee}(
        uint256 tokenId,
        address payable _refundAddress,
        bytes memory _adapterParams
)
```

## Transfer
```solidity
// interchain
OmniNFT (or omniNFTA).

uint256 fee = estimateSendFee(
        uint16 _dstChainId,
        bytes memory _toAddress,
        uint _tokenId,
        bool _useZro, // false
        bytes memory _adapterParams
    )


sendFrom{value: fee}(
    address _from, // user address
    uint16 _dstChainId, // the chain to send the NFT to
    bytes memory _toAddress, // The address on the other chain to send it to
    uint _tokenId, // tokenId to send
    address payable _refundAddress, // user address
    address _zroPaymentAddress, // zero address
    bytes memory _adapterParams // same as with omnicat
)
```

```solidity
// on the same chain
omniNFT.safeTransferFrom(
    address from, // user address
    address to, // the address to send the NFT to
    uint256 tokenId // the tokenID to send
)
```
These should all be called by the user.


## How to get the PFP.

- first, you need to get the tokenIds owned by the user in that particular chain

**subgraph urls**
(will update for all chains)
```
BLAST=https://api.studio.thegraph.com/query/46638/nft-blast-test/version/latest
ARBITRUM=https://api.studio.thegraph.com/query/46638/nft-arbitrum-test/version/latest
```

**query**
```graphql
# useraddress should be toLowerCase()
{
  owners(where: {id: "0xecb9aba786144562535636d2e73c2fae370cd8f8"}){
    id
    ownedTokens{
      id
    }
  }
}
# ownedTokens is an array of tokenIds which the user owns on that chain
```

- second to get the image for a tokenURI
```
https://api.omnicat.xyz/nft/${tokenId}
```

## ABIs

### **OmniNFTA**
```json
[
    {
      "type": "constructor",
      "inputs": [
        {
          "name": "_omnicat",
          "type": "address",
          "internalType": "contract IOmniCat"
        },
        {
          "name": "_nftInfo",
          "type": "tuple",
          "internalType": "struct NftInfo",
          "components": [
            { "name": "baseURI", "type": "string", "internalType": "string" },
            {
              "name": "MINT_COST",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "MAX_MINTS_PER_ACCOUNT",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "COLLECTION_SIZE",
              "type": "uint256",
              "internalType": "uint256"
            },
            { "name": "name", "type": "string", "internalType": "string" },
            { "name": "symbol", "type": "string", "internalType": "string" }
          ]
        },
        {
          "name": "_minGasToTransfer",
          "type": "uint256",
          "internalType": "uint256"
        },
        { "name": "_lzEndpoint", "type": "address", "internalType": "address" },
        {
          "name": "_mintStartTimestamp",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "nonpayable"
    },
    { "type": "receive", "stateMutability": "payable" },
    {
      "type": "function",
      "name": "BLAST",
      "inputs": [],
      "outputs": [
        { "name": "", "type": "address", "internalType": "contract IBlast" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "COLLECTION_SIZE",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "DEFAULT_PAYLOAD_SIZE_LIMIT",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "FUNCTION_TYPE_SEND",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "MAX_MINTS_PER_ACCOUNT",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "MINT_COST",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "NFTUserRefund",
      "inputs": [
        {
          "name": "hashedPayload",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "outputs": [
        { "name": "userAddress", "type": "address", "internalType": "address" },
        { "name": "chainID", "type": "uint16", "internalType": "uint16" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "UserMintedNumber",
      "inputs": [
        { "name": "userAddress", "type": "address", "internalType": "address" }
      ],
      "outputs": [
        { "name": "mintedNumber", "type": "uint256", "internalType": "uint256" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "approve",
      "inputs": [
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "balanceOf",
      "inputs": [
        { "name": "owner", "type": "address", "internalType": "address" }
      ],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "baseURI",
      "inputs": [],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "burn",
      "inputs": [
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "clearCredits",
      "inputs": [
        { "name": "_payload", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "dstChainIdToBatchLimit",
      "inputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "dstChainIdToTransferGas",
      "inputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "estimateSendBatchFee",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_toAddress", "type": "bytes", "internalType": "bytes" },
        {
          "name": "_tokenIds",
          "type": "uint256[]",
          "internalType": "uint256[]"
        },
        { "name": "_useZro", "type": "bool", "internalType": "bool" },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [
        { "name": "nativeFee", "type": "uint256", "internalType": "uint256" },
        { "name": "zroFee", "type": "uint256", "internalType": "uint256" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "estimateSendFee",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_toAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_tokenId", "type": "uint256", "internalType": "uint256" },
        { "name": "_useZro", "type": "bool", "internalType": "bool" },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [
        { "name": "nativeFee", "type": "uint256", "internalType": "uint256" },
        { "name": "zroFee", "type": "uint256", "internalType": "uint256" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "extraGas",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "extractNative",
      "inputs": [
        { "name": "amount", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "failedMessages",
      "inputs": [
        { "name": "", "type": "uint16", "internalType": "uint16" },
        { "name": "", "type": "bytes", "internalType": "bytes" },
        { "name": "", "type": "uint64", "internalType": "uint64" }
      ],
      "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "forceResumeReceive",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "getApproved",
      "inputs": [
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getConfig",
      "inputs": [
        { "name": "_version", "type": "uint16", "internalType": "uint16" },
        { "name": "_chainId", "type": "uint16", "internalType": "uint16" },
        { "name": "", "type": "address", "internalType": "address" },
        { "name": "_configType", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getTrustedRemoteAddress",
      "inputs": [
        { "name": "_remoteChainId", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "interchainTransactionFees",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isApprovedForAll",
      "inputs": [
        { "name": "owner", "type": "address", "internalType": "address" },
        { "name": "operator", "type": "address", "internalType": "address" }
      ],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isTrustedRemote",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "lzEndpoint",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "contract ILayerZeroEndpoint"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "lzReceive",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_nonce", "type": "uint64", "internalType": "uint64" },
        { "name": "_payload", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "minDstGasLookup",
      "inputs": [
        { "name": "", "type": "uint16", "internalType": "uint16" },
        { "name": "", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "minGasToTransferAndStore",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "mint",
      "inputs": [
        { "name": "mintNumber", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "mintStartTimestamp",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "name",
      "inputs": [],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "nextTokenIdMint",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "nonblockingLzReceive",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_nonce", "type": "uint64", "internalType": "uint64" },
        { "name": "_payload", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "omniUserRefund",
      "inputs": [
        { "name": "userAddress", "type": "address", "internalType": "address" },
        { "name": "chainId", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [
        { "name": "refundAmount", "type": "uint256", "internalType": "uint256" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "omnicat",
      "inputs": [],
      "outputs": [
        { "name": "", "type": "address", "internalType": "contract IOmniCat" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "onOFTReceived",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "", "type": "bytes", "internalType": "bytes" },
        { "name": "", "type": "uint64", "internalType": "uint64" },
        { "name": "_from", "type": "bytes32", "internalType": "bytes32" },
        { "name": "_amount", "type": "uint256", "internalType": "uint256" },
        { "name": "_payload", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "owner",
      "inputs": [],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "ownerOf",
      "inputs": [
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "pauseContract",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "paused",
      "inputs": [],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "payloadSizeLimitLookup",
      "inputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "precrime",
      "inputs": [],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "renounceOwnership",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "retryMessage",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_nonce", "type": "uint64", "internalType": "uint64" },
        { "name": "_payload", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "safeTransferFrom",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "safeTransferFrom",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" },
        { "name": "data", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "sendBatchFrom",
      "inputs": [
        { "name": "_from", "type": "address", "internalType": "address" },
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_toAddress", "type": "bytes", "internalType": "bytes" },
        {
          "name": "_tokenIds",
          "type": "uint256[]",
          "internalType": "uint256[]"
        },
        {
          "name": "_refundAddress",
          "type": "address",
          "internalType": "address payable"
        },
        {
          "name": "_zroPaymentAddress",
          "type": "address",
          "internalType": "address"
        },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "sendFrom",
      "inputs": [
        { "name": "_from", "type": "address", "internalType": "address" },
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_toAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_tokenId", "type": "uint256", "internalType": "uint256" },
        {
          "name": "_refundAddress",
          "type": "address",
          "internalType": "address payable"
        },
        {
          "name": "_zroPaymentAddress",
          "type": "address",
          "internalType": "address"
        },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "sendNFTRefund",
      "inputs": [
        {
          "name": "hashedPayload",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "sendOmniRefund",
      "inputs": [
        { "name": "userAddress", "type": "address", "internalType": "address" },
        { "name": "chainID", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "setApprovalForAll",
      "inputs": [
        { "name": "operator", "type": "address", "internalType": "address" },
        { "name": "approved", "type": "bool", "internalType": "bool" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setBaseUri",
      "inputs": [
        { "name": "_newBaseURI", "type": "string", "internalType": "string" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setConfig",
      "inputs": [
        { "name": "_version", "type": "uint16", "internalType": "uint16" },
        { "name": "_chainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_configType", "type": "uint256", "internalType": "uint256" },
        { "name": "_config", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setDstChainIdToBatchLimit",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        {
          "name": "_dstChainIdToBatchLimit",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setDstChainIdToTransferGas",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        {
          "name": "_dstChainIdToTransferGas",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setMinDstGas",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_packetType", "type": "uint16", "internalType": "uint16" },
        { "name": "_minGas", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setMinGasToTransferAndStore",
      "inputs": [
        {
          "name": "_minGasToTransferAndStore",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setPayloadSizeLimit",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_size", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setPrecrime",
      "inputs": [
        { "name": "_precrime", "type": "address", "internalType": "address" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setReceiveVersion",
      "inputs": [
        { "name": "_version", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setSendVersion",
      "inputs": [
        { "name": "_version", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setTrustedRemote",
      "inputs": [
        {
          "name": "_remoteChainId",
          "type": "uint16",
          "internalType": "uint16"
        },
        { "name": "_path", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setTrustedRemoteAddress",
      "inputs": [
        {
          "name": "_remoteChainId",
          "type": "uint16",
          "internalType": "uint16"
        },
        { "name": "_remoteAddress", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "storedCredits",
      "inputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
      "outputs": [
        { "name": "srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "toAddress", "type": "address", "internalType": "address" },
        { "name": "index", "type": "uint256", "internalType": "uint256" },
        { "name": "creditsRemain", "type": "bool", "internalType": "bool" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "supportsInterface",
      "inputs": [
        { "name": "interfaceId", "type": "bytes4", "internalType": "bytes4" }
      ],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "symbol",
      "inputs": [],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "tokenURI",
      "inputs": [
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "transferFrom",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "transferOwnership",
      "inputs": [
        { "name": "newOwner", "type": "address", "internalType": "address" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "trustedRemoteLookup",
      "inputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "unpauseContract",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "event",
      "name": "Approval",
      "inputs": [
        {
          "name": "owner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "approved",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "tokenId",
          "type": "uint256",
          "indexed": true,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "ApprovalForAll",
      "inputs": [
        {
          "name": "owner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "operator",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "approved",
          "type": "bool",
          "indexed": false,
          "internalType": "bool"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "CollectionMinted",
      "inputs": [],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "CreditCleared",
      "inputs": [
        {
          "name": "_hashedPayload",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "CreditStored",
      "inputs": [
        {
          "name": "_hashedPayload",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        },
        {
          "name": "_payload",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "MessageFailed",
      "inputs": [
        {
          "name": "_srcChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_srcAddress",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        },
        {
          "name": "_nonce",
          "type": "uint64",
          "indexed": false,
          "internalType": "uint64"
        },
        {
          "name": "_payload",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        },
        {
          "name": "_reason",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "OwnershipTransferred",
      "inputs": [
        {
          "name": "previousOwner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "newOwner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Paused",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "ReceiveFromChain",
      "inputs": [
        {
          "name": "_srcChainId",
          "type": "uint16",
          "indexed": true,
          "internalType": "uint16"
        },
        {
          "name": "_srcAddress",
          "type": "bytes",
          "indexed": true,
          "internalType": "bytes"
        },
        {
          "name": "_toAddress",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "_tokenIds",
          "type": "uint256[]",
          "indexed": false,
          "internalType": "uint256[]"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "RetryMessageSuccess",
      "inputs": [
        {
          "name": "_srcChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_srcAddress",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        },
        {
          "name": "_nonce",
          "type": "uint64",
          "indexed": false,
          "internalType": "uint64"
        },
        {
          "name": "_payloadHash",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SendToChain",
      "inputs": [
        {
          "name": "_dstChainId",
          "type": "uint16",
          "indexed": true,
          "internalType": "uint16"
        },
        {
          "name": "_from",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "_toAddress",
          "type": "bytes",
          "indexed": true,
          "internalType": "bytes"
        },
        {
          "name": "_tokenIds",
          "type": "uint256[]",
          "indexed": false,
          "internalType": "uint256[]"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetDstChainIdToBatchLimit",
      "inputs": [
        {
          "name": "_dstChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_dstChainIdToBatchLimit",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetDstChainIdToTransferGas",
      "inputs": [
        {
          "name": "_dstChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_dstChainIdToTransferGas",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetMinDstGas",
      "inputs": [
        {
          "name": "_dstChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_type",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_minDstGas",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetMinGasToTransferAndStore",
      "inputs": [
        {
          "name": "_minGasToTransferAndStore",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetPrecrime",
      "inputs": [
        {
          "name": "precrime",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetTrustedRemote",
      "inputs": [
        {
          "name": "_remoteChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_path",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetTrustedRemoteAddress",
      "inputs": [
        {
          "name": "_remoteChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_remoteAddress",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetUserMintRefund",
      "inputs": [
        {
          "name": "hashedPayload",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        },
        {
          "name": "userAddress",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        },
        {
          "name": "chainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "tokens",
          "type": "uint256[]",
          "indexed": false,
          "internalType": "uint256[]"
        },
        {
          "name": "done",
          "type": "bool",
          "indexed": false,
          "internalType": "bool"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetUserOmniRefund",
      "inputs": [
        {
          "name": "userAddress",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        },
        {
          "name": "chainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "refundAmount",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Transfer",
      "inputs": [
        {
          "name": "from",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "to",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "tokenId",
          "type": "uint256",
          "indexed": true,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Unpaused",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    }
  ]
```

### **OmniNFT**

```json
[
    {
      "type": "constructor",
      "inputs": [
        {
          "name": "_baseChainInfo",
          "type": "tuple",
          "internalType": "struct BaseChainInfo",
          "components": [
            {
              "name": "BASE_CHAIN_ID",
              "type": "uint16",
              "internalType": "uint16"
            },
            {
              "name": "BASE_CHAIN_ADDRESS",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "name": "_omnicat",
          "type": "address",
          "internalType": "contract IOmniCat"
        },
        {
          "name": "_nftInfo",
          "type": "tuple",
          "internalType": "struct NftInfo",
          "components": [
            { "name": "baseURI", "type": "string", "internalType": "string" },
            {
              "name": "MINT_COST",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "MAX_MINTS_PER_ACCOUNT",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "COLLECTION_SIZE",
              "type": "uint256",
              "internalType": "uint256"
            },
            { "name": "name", "type": "string", "internalType": "string" },
            { "name": "symbol", "type": "string", "internalType": "string" }
          ]
        },
        {
          "name": "_minGasToTransfer",
          "type": "uint256",
          "internalType": "uint256"
        },
        { "name": "_lzEndpoint", "type": "address", "internalType": "address" },
        {
          "name": "_omniBridgeFee",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "nonpayable"
    },
    { "type": "receive", "stateMutability": "payable" },
    {
      "type": "function",
      "name": "BASE_CHAIN_INFO",
      "inputs": [],
      "outputs": [
        { "name": "BASE_CHAIN_ID", "type": "uint16", "internalType": "uint16" },
        {
          "name": "BASE_CHAIN_ADDRESS",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "COLLECTION_SIZE",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "DEFAULT_PAYLOAD_SIZE_LIMIT",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "FUNCTION_TYPE_SEND",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "MAX_MINTS_PER_ACCOUNT",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "MAX_NFTS_IN_MINT",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "MINT_COST",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "approve",
      "inputs": [
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "balanceOf",
      "inputs": [
        { "name": "owner", "type": "address", "internalType": "address" }
      ],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "baseURI",
      "inputs": [],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "burn",
      "inputs": [
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" },
        {
          "name": "_refundAddress",
          "type": "address",
          "internalType": "address payable"
        },
        {
          "name": "_zroPaymentAddress",
          "type": "address",
          "internalType": "address"
        },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "clearCredits",
      "inputs": [
        { "name": "_payload", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "dstChainIdToBatchLimit",
      "inputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "dstChainIdToTransferGas",
      "inputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "estimateBurnFees",
      "inputs": [
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" },
        {
          "name": "_refundAddress",
          "type": "address",
          "internalType": "address payable"
        },
        {
          "name": "_zroPaymentAddress",
          "type": "address",
          "internalType": "address"
        },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "estimateMintFees",
      "inputs": [
        { "name": "mintNumber", "type": "uint256", "internalType": "uint256" },
        {
          "name": "_refundAddress",
          "type": "address",
          "internalType": "address payable"
        },
        {
          "name": "_zroPaymentAddress",
          "type": "address",
          "internalType": "address"
        },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "estimateSendBatchFee",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_toAddress", "type": "bytes", "internalType": "bytes" },
        {
          "name": "_tokenIds",
          "type": "uint256[]",
          "internalType": "uint256[]"
        },
        { "name": "_useZro", "type": "bool", "internalType": "bool" },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [
        { "name": "nativeFee", "type": "uint256", "internalType": "uint256" },
        { "name": "zroFee", "type": "uint256", "internalType": "uint256" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "estimateSendFee",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_toAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_tokenId", "type": "uint256", "internalType": "uint256" },
        { "name": "_useZro", "type": "bool", "internalType": "bool" },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [
        { "name": "nativeFee", "type": "uint256", "internalType": "uint256" },
        { "name": "zroFee", "type": "uint256", "internalType": "uint256" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "extraGas",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "extractNative",
      "inputs": [
        { "name": "amount", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "failedMessages",
      "inputs": [
        { "name": "", "type": "uint16", "internalType": "uint16" },
        { "name": "", "type": "bytes", "internalType": "bytes" },
        { "name": "", "type": "uint64", "internalType": "uint64" }
      ],
      "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "forceResumeReceive",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "getApproved",
      "inputs": [
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getConfig",
      "inputs": [
        { "name": "_version", "type": "uint16", "internalType": "uint16" },
        { "name": "_chainId", "type": "uint16", "internalType": "uint16" },
        { "name": "", "type": "address", "internalType": "address" },
        { "name": "_configType", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "getTrustedRemoteAddress",
      "inputs": [
        { "name": "_remoteChainId", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "interchainTransactionFees",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isApprovedForAll",
      "inputs": [
        { "name": "owner", "type": "address", "internalType": "address" },
        { "name": "operator", "type": "address", "internalType": "address" }
      ],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "isTrustedRemote",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "lzEndpoint",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "contract ILayerZeroEndpoint"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "lzReceive",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_nonce", "type": "uint64", "internalType": "uint64" },
        { "name": "_payload", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "minDstGasLookup",
      "inputs": [
        { "name": "", "type": "uint16", "internalType": "uint16" },
        { "name": "", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "minGasToTransferAndStore",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "mint",
      "inputs": [
        { "name": "mintNumber", "type": "uint256", "internalType": "uint256" },
        {
          "name": "_refundAddress",
          "type": "address",
          "internalType": "address payable"
        },
        {
          "name": "_zroPaymentAddress",
          "type": "address",
          "internalType": "address"
        },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "name",
      "inputs": [],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "nonblockingLzReceive",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_nonce", "type": "uint64", "internalType": "uint64" },
        { "name": "_payload", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "omniBridgeFee",
      "inputs": [],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "omnicat",
      "inputs": [],
      "outputs": [
        { "name": "", "type": "address", "internalType": "contract IOmniCat" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "owner",
      "inputs": [],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "ownerOf",
      "inputs": [
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "pauseContract",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "paused",
      "inputs": [],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "payloadSizeLimitLookup",
      "inputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "precrime",
      "inputs": [],
      "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "renounceOwnership",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "retryMessage",
      "inputs": [
        { "name": "_srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_srcAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_nonce", "type": "uint64", "internalType": "uint64" },
        { "name": "_payload", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "safeTransferFrom",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "safeTransferFrom",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" },
        { "name": "data", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "sendBatchFrom",
      "inputs": [
        { "name": "_from", "type": "address", "internalType": "address" },
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_toAddress", "type": "bytes", "internalType": "bytes" },
        {
          "name": "_tokenIds",
          "type": "uint256[]",
          "internalType": "uint256[]"
        },
        {
          "name": "_refundAddress",
          "type": "address",
          "internalType": "address payable"
        },
        {
          "name": "_zroPaymentAddress",
          "type": "address",
          "internalType": "address"
        },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "sendFrom",
      "inputs": [
        { "name": "_from", "type": "address", "internalType": "address" },
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_toAddress", "type": "bytes", "internalType": "bytes" },
        { "name": "_tokenId", "type": "uint256", "internalType": "uint256" },
        {
          "name": "_refundAddress",
          "type": "address",
          "internalType": "address payable"
        },
        {
          "name": "_zroPaymentAddress",
          "type": "address",
          "internalType": "address"
        },
        { "name": "_adapterParams", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "setApprovalForAll",
      "inputs": [
        { "name": "operator", "type": "address", "internalType": "address" },
        { "name": "approved", "type": "bool", "internalType": "bool" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setBaseUri",
      "inputs": [
        { "name": "_newBaseURI", "type": "string", "internalType": "string" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setConfig",
      "inputs": [
        { "name": "_version", "type": "uint16", "internalType": "uint16" },
        { "name": "_chainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_configType", "type": "uint256", "internalType": "uint256" },
        { "name": "_config", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setDstChainIdToBatchLimit",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        {
          "name": "_dstChainIdToBatchLimit",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setDstChainIdToTransferGas",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        {
          "name": "_dstChainIdToTransferGas",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setMinDstGas",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_packetType", "type": "uint16", "internalType": "uint16" },
        { "name": "_minGas", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setMinGasToTransferAndStore",
      "inputs": [
        {
          "name": "_minGasToTransferAndStore",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setOmniBridgeFee",
      "inputs": [
        {
          "name": "_omniBridgeFee",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setPayloadSizeLimit",
      "inputs": [
        { "name": "_dstChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "_size", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setPrecrime",
      "inputs": [
        { "name": "_precrime", "type": "address", "internalType": "address" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setReceiveVersion",
      "inputs": [
        { "name": "_version", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setSendVersion",
      "inputs": [
        { "name": "_version", "type": "uint16", "internalType": "uint16" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setTrustedRemote",
      "inputs": [
        {
          "name": "_remoteChainId",
          "type": "uint16",
          "internalType": "uint16"
        },
        { "name": "_path", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setTrustedRemoteAddress",
      "inputs": [
        {
          "name": "_remoteChainId",
          "type": "uint16",
          "internalType": "uint16"
        },
        { "name": "_remoteAddress", "type": "bytes", "internalType": "bytes" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "storedCredits",
      "inputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
      "outputs": [
        { "name": "srcChainId", "type": "uint16", "internalType": "uint16" },
        { "name": "toAddress", "type": "address", "internalType": "address" },
        { "name": "index", "type": "uint256", "internalType": "uint256" },
        { "name": "creditsRemain", "type": "bool", "internalType": "bool" }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "supportsInterface",
      "inputs": [
        { "name": "interfaceId", "type": "bytes4", "internalType": "bytes4" }
      ],
      "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "symbol",
      "inputs": [],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "tokenURI",
      "inputs": [
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [{ "name": "", "type": "string", "internalType": "string" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "transferFrom",
      "inputs": [
        { "name": "from", "type": "address", "internalType": "address" },
        { "name": "to", "type": "address", "internalType": "address" },
        { "name": "tokenId", "type": "uint256", "internalType": "uint256" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "transferOwnership",
      "inputs": [
        { "name": "newOwner", "type": "address", "internalType": "address" }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "trustedRemoteLookup",
      "inputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
      "outputs": [{ "name": "", "type": "bytes", "internalType": "bytes" }],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "unpauseContract",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "event",
      "name": "Approval",
      "inputs": [
        {
          "name": "owner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "approved",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "tokenId",
          "type": "uint256",
          "indexed": true,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "ApprovalForAll",
      "inputs": [
        {
          "name": "owner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "operator",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "approved",
          "type": "bool",
          "indexed": false,
          "internalType": "bool"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "CreditCleared",
      "inputs": [
        {
          "name": "_hashedPayload",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "CreditStored",
      "inputs": [
        {
          "name": "_hashedPayload",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        },
        {
          "name": "_payload",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "MessageFailed",
      "inputs": [
        {
          "name": "_srcChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_srcAddress",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        },
        {
          "name": "_nonce",
          "type": "uint64",
          "indexed": false,
          "internalType": "uint64"
        },
        {
          "name": "_payload",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        },
        {
          "name": "_reason",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "OwnershipTransferred",
      "inputs": [
        {
          "name": "previousOwner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "newOwner",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Paused",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "ReceiveFromChain",
      "inputs": [
        {
          "name": "_srcChainId",
          "type": "uint16",
          "indexed": true,
          "internalType": "uint16"
        },
        {
          "name": "_srcAddress",
          "type": "bytes",
          "indexed": true,
          "internalType": "bytes"
        },
        {
          "name": "_toAddress",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "_tokenIds",
          "type": "uint256[]",
          "indexed": false,
          "internalType": "uint256[]"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "RetryMessageSuccess",
      "inputs": [
        {
          "name": "_srcChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_srcAddress",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        },
        {
          "name": "_nonce",
          "type": "uint64",
          "indexed": false,
          "internalType": "uint64"
        },
        {
          "name": "_payloadHash",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SendToChain",
      "inputs": [
        {
          "name": "_dstChainId",
          "type": "uint16",
          "indexed": true,
          "internalType": "uint16"
        },
        {
          "name": "_from",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "_toAddress",
          "type": "bytes",
          "indexed": true,
          "internalType": "bytes"
        },
        {
          "name": "_tokenIds",
          "type": "uint256[]",
          "indexed": false,
          "internalType": "uint256[]"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetDstChainIdToBatchLimit",
      "inputs": [
        {
          "name": "_dstChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_dstChainIdToBatchLimit",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetDstChainIdToTransferGas",
      "inputs": [
        {
          "name": "_dstChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_dstChainIdToTransferGas",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetMinDstGas",
      "inputs": [
        {
          "name": "_dstChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_type",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_minDstGas",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetMinGasToTransferAndStore",
      "inputs": [
        {
          "name": "_minGasToTransferAndStore",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetPrecrime",
      "inputs": [
        {
          "name": "precrime",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetTrustedRemote",
      "inputs": [
        {
          "name": "_remoteChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_path",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetTrustedRemoteAddress",
      "inputs": [
        {
          "name": "_remoteChainId",
          "type": "uint16",
          "indexed": false,
          "internalType": "uint16"
        },
        {
          "name": "_remoteAddress",
          "type": "bytes",
          "indexed": false,
          "internalType": "bytes"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Transfer",
      "inputs": [
        {
          "name": "from",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "to",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "tokenId",
          "type": "uint256",
          "indexed": true,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Unpaused",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    }
  ]
```

### Ignore