{
    "version": "v2.3.5",
    "name": "AttestTokenHandler",
    "bytecode": "0605409940c840fe412741540000010b0540591600040e11ce000102170517041703170217011601ce022f0c7b1603ce03410d7b16020c2f130d7b1604a000340f7b16040d2aa10016050c0d621401024113187b16050d1321621706160513211323626d17071607ce022f13177b160513231324626c170816051324134044621709160513404413406462170a1605431340642f0e7b160616090004160a00041608160402010304060019ce04131f7b160000001817051818170416017a1602a216041603a31604160516011602100cce01010d01030308001ace0419131f7b160000001707170617051704170316011602a21603ce0216061604160516071601160213080cce01010e010001050014ce0419131f7b160000001704181703170217011601ce02160216031604110cce01010f0000010201190c170116011320311600160116010d2a62140100421a4c0516010d2a17014a2e16000c16016202",
    "codeHash": "a8d5b3de6a6267d4a12eb793dc90832b0b0e5b84f54c5458d0fedfe73dc0871c",
    "fieldsSig": {
        "names": [
            "governance",
            "localTokenBridge",
            "targetChainId",
            "targetTokenBridge",
            "receivedSequence",
            "isLocalHandler"
        ],
        "types": [
            "ByteVec",
            "ByteVec",
            "U256",
            "ByteVec",
            "U256",
            "Bool"
        ],
        "isMutable": [
            false,
            false,
            false,
            false,
            true,
            false
        ]
    },
    "eventsSig": [],
    "functions": [
        {
            "name": "parseAttestToken",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": false,
            "paramNames": [
                "vaa"
            ],
            "paramTypes": [
                "ByteVec"
            ],
            "paramIsMutable": [
                false
            ],
            "returnTypes": [
                "ByteVec",
                "ByteVec",
                "ByteVec",
                "U256",
                "U256"
            ]
        },
        {
            "name": "createLocalTokenPool",
            "usePreapprovedAssets": true,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "vaa",
                "payer",
                "createContractAlphAmount",
                "tokenAmount"
            ],
            "paramTypes": [
                "ByteVec",
                "Address",
                "U256",
                "U256"
            ],
            "paramIsMutable": [
                false,
                false,
                false,
                false
            ],
            "returnTypes": []
        },
        {
            "name": "createRemoteTokenPool",
            "usePreapprovedAssets": true,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "vaa",
                "payer",
                "createContractAlphAmount"
            ],
            "paramTypes": [
                "ByteVec",
                "Address",
                "U256"
            ],
            "paramIsMutable": [
                false,
                false,
                false
            ],
            "returnTypes": []
        },
        {
            "name": "updateRemoteTokenPool",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "vaa"
            ],
            "paramTypes": [
                "ByteVec"
            ],
            "paramIsMutable": [
                false
            ],
            "returnTypes": []
        },
        {
            "name": "removeTrailingZeros",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": false,
            "paramNames": [
                "bytes"
            ],
            "paramTypes": [
                "ByteVec"
            ],
            "paramIsMutable": [
                false
            ],
            "returnTypes": [
                "ByteVec"
            ]
        }
    ],
    "constants": [],
    "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"
                    }
                }
            ]
        }
    ]
}
