{
    "version": "0.1.0",
    "name": "token_messenger_minter",
    "instructions": [
        {
            "name": "initialize",
            "accounts": [
                {
                    "name": "payer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "upgradeAuthority",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "authorityPda",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMessenger",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMinter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMessengerMinterProgramData",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMessengerMinterProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "InitializeParams"
                    }
                }
            ]
        },
        {
            "name": "transferOwnership",
            "accounts": [
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMessenger",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "TransferOwnershipParams"
                    }
                }
            ]
        },
        {
            "name": "acceptOwnership",
            "accounts": [
                {
                    "name": "pendingOwner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMessenger",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "AcceptOwnershipParams"
                    }
                }
            ]
        },
        {
            "name": "addRemoteTokenMessenger",
            "accounts": [
                {
                    "name": "payer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "remoteTokenMessenger",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "AddRemoteTokenMessengerParams"
                    }
                }
            ]
        },
        {
            "name": "removeRemoteTokenMessenger",
            "accounts": [
                {
                    "name": "payee",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "remoteTokenMessenger",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "RemoveRemoteTokenMessengerParams"
                    }
                }
            ]
        },
        {
            "name": "depositForBurn",
            "accounts": [
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "eventRentPayer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "senderAuthorityPda",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "burnTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "remoteTokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMinter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "localToken",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "burnTokenMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "messageSentEventData",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitterProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMessengerMinterProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "DepositForBurnParams"
                    }
                }
            ],
            "returns": "u64"
        },
        {
            "name": "depositForBurnWithCaller",
            "accounts": [
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "eventRentPayer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "senderAuthorityPda",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "burnTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "remoteTokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMinter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "localToken",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "burnTokenMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "messageSentEventData",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitterProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMessengerMinterProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "DepositForBurnWithCallerParams"
                    }
                }
            ],
            "returns": "u64"
        },
        {
            "name": "replaceDepositForBurn",
            "accounts": [
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "eventRentPayer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "senderAuthorityPda",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "messageSentEventData",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitterProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMessengerMinterProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "ReplaceDepositForBurnParams"
                    }
                }
            ],
            "returns": "u64"
        },
        {
            "name": "handleReceiveMessage",
            "accounts": [
                {
                    "name": "authorityPda",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "remoteTokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMinter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "localToken",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenPair",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "recipientTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "custodyTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "HandleReceiveMessageParams"
                    }
                }
            ]
        },
        {
            "name": "setTokenController",
            "accounts": [
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMinter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "SetTokenControllerParams"
                    }
                }
            ]
        },
        {
            "name": "pause",
            "accounts": [
                {
                    "name": "pauser",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMinter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "PauseParams"
                    }
                }
            ]
        },
        {
            "name": "unpause",
            "accounts": [
                {
                    "name": "pauser",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMinter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "UnpauseParams"
                    }
                }
            ]
        },
        {
            "name": "updatePauser",
            "accounts": [
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMessenger",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenMinter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "UpdatePauserParams"
                    }
                }
            ]
        },
        {
            "name": "setMaxBurnAmountPerMessage",
            "accounts": [
                {
                    "name": "tokenController",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMinter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "localToken",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "SetMaxBurnAmountPerMessageParams"
                    }
                }
            ]
        },
        {
            "name": "addLocalToken",
            "accounts": [
                {
                    "name": "payer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenController",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMinter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "localToken",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "custodyTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "localTokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "AddLocalTokenParams"
                    }
                }
            ]
        },
        {
            "name": "removeLocalToken",
            "accounts": [
                {
                    "name": "payee",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenController",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMinter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "localToken",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "custodyTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "RemoveLocalTokenParams"
                    }
                }
            ]
        },
        {
            "name": "linkTokenPair",
            "accounts": [
                {
                    "name": "payer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenController",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMinter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenPair",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "LinkTokenPairParams"
                    }
                }
            ]
        },
        {
            "name": "unlinkTokenPair",
            "accounts": [
                {
                    "name": "payee",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenController",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMinter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenPair",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "UninkTokenPairParams"
                    }
                }
            ]
        },
        {
            "name": "burnTokenCustody",
            "accounts": [
                {
                    "name": "payee",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "tokenController",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "tokenMinter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "localToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "custodyTokenAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "custodyTokenMint",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "BurnTokenCustodyParams"
                    }
                }
            ]
        }
    ],
    "accounts": [
        {
            "name": "TokenMessenger",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "owner",
                        "type": "publicKey"
                    },
                    {
                        "name": "pendingOwner",
                        "type": "publicKey"
                    },
                    {
                        "name": "localMessageTransmitter",
                        "type": "publicKey"
                    },
                    {
                        "name": "messageBodyVersion",
                        "type": "u32"
                    },
                    {
                        "name": "authorityBump",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "RemoteTokenMessenger",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "domain",
                        "type": "u32"
                    },
                    {
                        "name": "tokenMessenger",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "TokenMinter",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "tokenController",
                        "type": "publicKey"
                    },
                    {
                        "name": "pauser",
                        "type": "publicKey"
                    },
                    {
                        "name": "paused",
                        "type": "bool"
                    },
                    {
                        "name": "bump",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "TokenPair",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "remoteDomain",
                        "type": "u32"
                    },
                    {
                        "name": "remoteToken",
                        "type": "publicKey"
                    },
                    {
                        "name": "localToken",
                        "type": "publicKey"
                    },
                    {
                        "name": "bump",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "LocalToken",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "custody",
                        "type": "publicKey"
                    },
                    {
                        "name": "mint",
                        "type": "publicKey"
                    },
                    {
                        "name": "burnLimitPerMessage",
                        "type": "u64"
                    },
                    {
                        "name": "messagesSent",
                        "type": "u64"
                    },
                    {
                        "name": "messagesReceived",
                        "type": "u64"
                    },
                    {
                        "name": "amountSent",
                        "type": "u128"
                    },
                    {
                        "name": "amountReceived",
                        "type": "u128"
                    },
                    {
                        "name": "bump",
                        "type": "u8"
                    },
                    {
                        "name": "custodyBump",
                        "type": "u8"
                    }
                ]
            }
        }
    ],
    "types": [
        {
            "name": "AcceptOwnershipParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "AddRemoteTokenMessengerParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "domain",
                        "type": "u32"
                    },
                    {
                        "name": "tokenMessenger",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "DepositForBurnWithCallerParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "destinationDomain",
                        "type": "u32"
                    },
                    {
                        "name": "mintRecipient",
                        "type": "publicKey"
                    },
                    {
                        "name": "destinationCaller",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "DepositForBurnParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "destinationDomain",
                        "type": "u32"
                    },
                    {
                        "name": "mintRecipient",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "HandleReceiveMessageParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "remoteDomain",
                        "type": "u32"
                    },
                    {
                        "name": "sender",
                        "type": "publicKey"
                    },
                    {
                        "name": "messageBody",
                        "type": "bytes"
                    },
                    {
                        "name": "authorityBump",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "InitializeParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "tokenController",
                        "type": "publicKey"
                    },
                    {
                        "name": "localMessageTransmitter",
                        "type": "publicKey"
                    },
                    {
                        "name": "messageBodyVersion",
                        "type": "u32"
                    }
                ]
            }
        },
        {
            "name": "RemoveRemoteTokenMessengerParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "ReplaceDepositForBurnParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "originalMessage",
                        "type": "bytes"
                    },
                    {
                        "name": "originalAttestation",
                        "type": "bytes"
                    },
                    {
                        "name": "newDestinationCaller",
                        "type": "publicKey"
                    },
                    {
                        "name": "newMintRecipient",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "TransferOwnershipParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "newOwner",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "AddLocalTokenParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "BurnTokenCustodyParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "amount",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "LinkTokenPairParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "localToken",
                        "type": "publicKey"
                    },
                    {
                        "name": "remoteDomain",
                        "type": "u32"
                    },
                    {
                        "name": "remoteToken",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "PauseParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "RemoveLocalTokenParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "SetMaxBurnAmountPerMessageParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "burnLimitPerMessage",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "SetTokenControllerParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "tokenController",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "UninkTokenPairParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "UnpauseParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "UpdatePauserParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "newPauser",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "TokenMinterError",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "InvalidAuthority"
                    },
                    {
                        "name": "InvalidTokenMinterState"
                    },
                    {
                        "name": "ProgramPaused"
                    },
                    {
                        "name": "InvalidTokenPairState"
                    },
                    {
                        "name": "InvalidLocalTokenState"
                    },
                    {
                        "name": "InvalidPauser"
                    },
                    {
                        "name": "InvalidTokenController"
                    },
                    {
                        "name": "BurnAmountExceeded"
                    },
                    {
                        "name": "InvalidAmount"
                    }
                ]
            }
        }
    ],
    "events": [
        {
            "name": "OwnershipTransferStarted",
            "fields": [
                {
                    "name": "previousOwner",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "newOwner",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "OwnershipTransferred",
            "fields": [
                {
                    "name": "previousOwner",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "newOwner",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "DepositForBurn",
            "fields": [
                {
                    "name": "nonce",
                    "type": "u64",
                    "index": false
                },
                {
                    "name": "burnToken",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "amount",
                    "type": "u64",
                    "index": false
                },
                {
                    "name": "depositor",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "mintRecipient",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "destinationDomain",
                    "type": "u32",
                    "index": false
                },
                {
                    "name": "destinationTokenMessenger",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "destinationCaller",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "MintAndWithdraw",
            "fields": [
                {
                    "name": "mintRecipient",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "amount",
                    "type": "u64",
                    "index": false
                },
                {
                    "name": "mintToken",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "RemoteTokenMessengerAdded",
            "fields": [
                {
                    "name": "domain",
                    "type": "u32",
                    "index": false
                },
                {
                    "name": "tokenMessenger",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "RemoteTokenMessengerRemoved",
            "fields": [
                {
                    "name": "domain",
                    "type": "u32",
                    "index": false
                },
                {
                    "name": "tokenMessenger",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "SetTokenController",
            "fields": [
                {
                    "name": "tokenController",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "PauserChanged",
            "fields": [
                {
                    "name": "newAddress",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "SetBurnLimitPerMessage",
            "fields": [
                {
                    "name": "token",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "burnLimitPerMessage",
                    "type": "u64",
                    "index": false
                }
            ]
        },
        {
            "name": "LocalTokenAdded",
            "fields": [
                {
                    "name": "custody",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "mint",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "LocalTokenRemoved",
            "fields": [
                {
                    "name": "custody",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "mint",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "TokenPairLinked",
            "fields": [
                {
                    "name": "localToken",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "remoteDomain",
                    "type": "u32",
                    "index": false
                },
                {
                    "name": "remoteToken",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "TokenPairUnlinked",
            "fields": [
                {
                    "name": "localToken",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "remoteDomain",
                    "type": "u32",
                    "index": false
                },
                {
                    "name": "remoteToken",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "Pause",
            "fields": []
        },
        {
            "name": "Unpause",
            "fields": []
        },
        {
            "name": "TokenCustodyBurned",
            "fields": [
                {
                    "name": "custodyTokenAccount",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "amount",
                    "type": "u64",
                    "index": false
                }
            ]
        }
    ],
    "errors": [
        {
            "code": 6000,
            "name": "InvalidAuthority",
            "msg": "Invalid authority"
        },
        {
            "code": 6001,
            "name": "InvalidTokenMessengerState",
            "msg": "Invalid token messenger state"
        },
        {
            "code": 6002,
            "name": "InvalidTokenMessenger",
            "msg": "Invalid token messenger"
        },
        {
            "code": 6003,
            "name": "InvalidOwner",
            "msg": "Invalid owner"
        },
        {
            "code": 6004,
            "name": "MalformedMessage",
            "msg": "Malformed message"
        },
        {
            "code": 6005,
            "name": "InvalidMessageBodyVersion",
            "msg": "Invalid message body version"
        },
        {
            "code": 6006,
            "name": "InvalidAmount",
            "msg": "Invalid amount"
        },
        {
            "code": 6007,
            "name": "InvalidDestinationDomain",
            "msg": "Invalid destination domain"
        },
        {
            "code": 6008,
            "name": "InvalidDestinationCaller",
            "msg": "Invalid destination caller"
        },
        {
            "code": 6009,
            "name": "InvalidMintRecipient",
            "msg": "Invalid mint recipient"
        },
        {
            "code": 6010,
            "name": "InvalidSender",
            "msg": "Invalid sender"
        },
        {
            "code": 6011,
            "name": "InvalidTokenPair",
            "msg": "Invalid token pair"
        },
        {
            "code": 6012,
            "name": "InvalidTokenMint",
            "msg": "Invalid token mint"
        }
    ],
    "metadata": {
        "address": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3"
    }
}
