{
    "version": "v2.3.5",
    "name": "RemoteTokenPool",
    "bytecode": "090b09402040294032408040d841274143415f417f41a4010000000102a00102010000000104a002140b2028576f726d686f6c65294402010000000102ce0302010000000102a000020101070a004025b31600160116021603160500061708170716061604464c041606160413c3038d7ea4c68000a7b11709160416091607ab16080c334c04160616091608aba00016072a16082aa100000005090240321600ce004113157b160443102f13117b1602ce03000717051603ce0300071706160616053113167b14010116056b44ce0244ce016744160143674416014416066b4417071605ce030008170816071608020000060a02402ace0014010116016744cc1706160616004113157b1603ce024113197b1604ce012f13197b1602ce03000817071605ce0300081708160716083313167b160716082b1709160916080201000202010e16011308334c081600130a160113082b832d0216000201000202010e16011308334c081600130a160113082b832c02160002010003030010b3ce004113157ba0031602310f7b1600a1011601a1021602a103010105070112b316011602160316040005170617051600b11606aca00016062ba100160502",
    "codeHash": "9f9a0a641df62cf6d831fbd7e8cdbcc7511682dd9ebf9d988ce42ae7280c6ee9",
    "fieldsSig": {
        "names": [
            "tokenBridgeId",
            "tokenChainId",
            "bridgeTokenId",
            "totalBridged",
            "symbol_",
            "name_",
            "decimals_",
            "sequence_",
            "__stdInterfaceId"
        ],
        "types": [
            "ByteVec",
            "U256",
            "ByteVec",
            "U256",
            "ByteVec",
            "ByteVec",
            "U256",
            "U256",
            "ByteVec"
        ],
        "isMutable": [
            false,
            false,
            false,
            true,
            true,
            true,
            false,
            true,
            false
        ]
    },
    "eventsSig": [],
    "functions": [
        {
            "name": "getSymbol",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [],
            "paramTypes": [],
            "paramIsMutable": [],
            "returnTypes": [
                "ByteVec"
            ]
        },
        {
            "name": "getName",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [],
            "paramTypes": [],
            "paramIsMutable": [],
            "returnTypes": [
                "ByteVec"
            ]
        },
        {
            "name": "getDecimals",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [],
            "paramTypes": [],
            "paramIsMutable": [],
            "returnTypes": [
                "U256"
            ]
        },
        {
            "name": "getTotalSupply",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [],
            "paramTypes": [],
            "paramIsMutable": [],
            "returnTypes": [
                "U256"
            ]
        },
        {
            "name": "completeTransfer",
            "usePreapprovedAssets": true,
            "useAssetsInContract": true,
            "isPublic": true,
            "paramNames": [
                "emitterChainId",
                "amount",
                "vaaTokenId",
                "vaaTokenChainId",
                "recipient",
                "normalizedArbiterFee",
                "caller"
            ],
            "paramTypes": [
                "U256",
                "U256",
                "ByteVec",
                "U256",
                "Address",
                "U256",
                "Address"
            ],
            "paramIsMutable": [
                false,
                false,
                false,
                false,
                false,
                false,
                false
            ],
            "returnTypes": []
        },
        {
            "name": "prepareTransfer",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": false,
            "paramNames": [
                "callerContractId",
                "toAddress",
                "amount",
                "arbiterFee",
                "nonce"
            ],
            "paramTypes": [
                "ByteVec",
                "ByteVec",
                "U256",
                "U256",
                "ByteVec"
            ],
            "paramIsMutable": [
                false,
                false,
                false,
                false,
                false
            ],
            "returnTypes": [
                "ByteVec",
                "U256"
            ]
        },
        {
            "name": "prepareCompleteTransfer",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": false,
            "paramNames": [
                "callerContractId",
                "emitterChainId",
                "amount",
                "vaaTokenId",
                "vaaTokenChainId",
                "normalizedArbiterFee"
            ],
            "paramTypes": [
                "ByteVec",
                "U256",
                "U256",
                "ByteVec",
                "U256",
                "U256"
            ],
            "paramIsMutable": [
                false,
                false,
                false,
                false,
                false,
                false
            ],
            "returnTypes": [
                "U256",
                "U256"
            ]
        },
        {
            "name": "normalizeAmount",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "amount",
                "decimals"
            ],
            "paramTypes": [
                "U256",
                "U256"
            ],
            "paramIsMutable": [
                false,
                false
            ],
            "returnTypes": [
                "U256"
            ]
        },
        {
            "name": "deNormalizeAmount",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "amount",
                "decimals"
            ],
            "paramTypes": [
                "U256",
                "U256"
            ],
            "paramIsMutable": [
                false,
                false
            ],
            "returnTypes": [
                "U256"
            ]
        },
        {
            "name": "updateDetails",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "symbol",
                "name",
                "sequence"
            ],
            "paramTypes": [
                "ByteVec",
                "ByteVec",
                "U256"
            ],
            "paramIsMutable": [
                false,
                false,
                false
            ],
            "returnTypes": []
        },
        {
            "name": "transfer",
            "usePreapprovedAssets": true,
            "useAssetsInContract": true,
            "isPublic": true,
            "paramNames": [
                "fromAddress",
                "toAddress",
                "amount",
                "arbiterFee",
                "nonce"
            ],
            "paramTypes": [
                "Address",
                "ByteVec",
                "U256",
                "U256",
                "ByteVec"
            ],
            "paramIsMutable": [
                false,
                false,
                false,
                false,
                false
            ],
            "returnTypes": [
                "ByteVec"
            ]
        }
    ],
    "constants": [
        {
            "name": "WormholePostfix",
            "value": {
                "type": "ByteVec",
                "value": "2028576f726d686f6c6529"
            }
        }
    ],
    "enums": [
        {
            "name": "Path",
            "fields": [
                {
                    "name": "AttestTokenHandler",
                    "value": {
                        "type": "ByteVec",
                        "value": "00"
                    }
                },
                {
                    "name": "TokenBridgeForChain",
                    "value": {
                        "type": "ByteVec",
                        "value": "01"
                    }
                },
                {
                    "name": "TokenPool",
                    "value": {
                        "type": "ByteVec",
                        "value": "02"
                    }
                }
            ]
        },
        {
            "name": "ErrorCodes",
            "fields": [
                {
                    "name": "InvalidEmitChainId",
                    "value": {
                        "type": "U256",
                        "value": "0"
                    }
                },
                {
                    "name": "InvalidEmitAddress",
                    "value": {
                        "type": "U256",
                        "value": "1"
                    }
                },
                {
                    "name": "InvalidMessageSize",
                    "value": {
                        "type": "U256",
                        "value": "2"
                    }
                },
                {
                    "name": "InvalidSequence",
                    "value": {
                        "type": "U256",
                        "value": "3"
                    }
                },
                {
                    "name": "InvalidModule",
                    "value": {
                        "type": "U256",
                        "value": "4"
                    }
                },
                {
                    "name": "InvalidActionId",
                    "value": {
                        "type": "U256",
                        "value": "5"
                    }
                },
                {
                    "name": "InvalidVersion",
                    "value": {
                        "type": "U256",
                        "value": "6"
                    }
                },
                {
                    "name": "InvalidGuardianSetIndex",
                    "value": {
                        "type": "U256",
                        "value": "7"
                    }
                },
                {
                    "name": "InvalidGuardianSetSize",
                    "value": {
                        "type": "U256",
                        "value": "8"
                    }
                },
                {
                    "name": "InvalidSignatureSize",
                    "value": {
                        "type": "U256",
                        "value": "9"
                    }
                },
                {
                    "name": "InvalidSignatureGuardianIndex",
                    "value": {
                        "type": "U256",
                        "value": "10"
                    }
                },
                {
                    "name": "InvalidSignature",
                    "value": {
                        "type": "U256",
                        "value": "11"
                    }
                },
                {
                    "name": "GuardianSetExpired",
                    "value": {
                        "type": "U256",
                        "value": "12"
                    }
                },
                {
                    "name": "InvalidTargetChainId",
                    "value": {
                        "type": "U256",
                        "value": "13"
                    }
                },
                {
                    "name": "ContractStateMismatch",
                    "value": {
                        "type": "U256",
                        "value": "14"
                    }
                },
                {
                    "name": "InvalidRegisterChainMessage",
                    "value": {
                        "type": "U256",
                        "value": "15"
                    }
                },
                {
                    "name": "InvalidTokenId",
                    "value": {
                        "type": "U256",
                        "value": "16"
                    }
                },
                {
                    "name": "InvalidNonceSize",
                    "value": {
                        "type": "U256",
                        "value": "17"
                    }
                },
                {
                    "name": "TokenNotExist",
                    "value": {
                        "type": "U256",
                        "value": "18"
                    }
                },
                {
                    "name": "InvalidTransferTargetChain",
                    "value": {
                        "type": "U256",
                        "value": "19"
                    }
                },
                {
                    "name": "InvalidDestroyUnexecutedSequenceMessage",
                    "value": {
                        "type": "U256",
                        "value": "20"
                    }
                },
                {
                    "name": "InvalidCaller",
                    "value": {
                        "type": "U256",
                        "value": "21"
                    }
                },
                {
                    "name": "ArbiterFeeLessThanAmount",
                    "value": {
                        "type": "U256",
                        "value": "22"
                    }
                },
                {
                    "name": "InvalidAttestTokenMessage",
                    "value": {
                        "type": "U256",
                        "value": "23"
                    }
                },
                {
                    "name": "InvalidPayloadId",
                    "value": {
                        "type": "U256",
                        "value": "24"
                    }
                },
                {
                    "name": "InvalidTransferMessage",
                    "value": {
                        "type": "U256",
                        "value": "25"
                    }
                },
                {
                    "name": "ExpectRemoteToken",
                    "value": {
                        "type": "U256",
                        "value": "26"
                    }
                },
                {
                    "name": "InvalidConsistencyLevel",
                    "value": {
                        "type": "U256",
                        "value": "27"
                    }
                },
                {
                    "name": "InvalidUpdateRefundAddressMessage",
                    "value": {
                        "type": "U256",
                        "value": "28"
                    }
                },
                {
                    "name": "TransferAmountLessThanMessageFee",
                    "value": {
                        "type": "U256",
                        "value": "29"
                    }
                },
                {
                    "name": "InvalidAttestTokenArg",
                    "value": {
                        "type": "U256",
                        "value": "30"
                    }
                },
                {
                    "name": "InvalidAttestTokenHandler",
                    "value": {
                        "type": "U256",
                        "value": "31"
                    }
                },
                {
                    "name": "NotSupported",
                    "value": {
                        "type": "U256",
                        "value": "32"
                    }
                }
            ]
        },
        {
            "name": "PayloadId",
            "fields": [
                {
                    "name": "Transfer",
                    "value": {
                        "type": "ByteVec",
                        "value": "01"
                    }
                },
                {
                    "name": "AttestToken",
                    "value": {
                        "type": "ByteVec",
                        "value": "02"
                    }
                }
            ]
        }
    ],
    "stdInterfaceId": "0001"
}
