{
    "version": "v2.3.5",
    "name": "Governance",
    "bytecode": "0b0b094021415641a041c541ec4243425a42bf42f04338010000000102a0010201010606000b1600a001a905b31601160216031604160574010002180540b916000c0d621401014113067b16000d11626e170216014c051602a0052f13077b1600111306626c170316020005170416040c0d626c170516050c3013087b16050e2c0f2d0d2a1706160616033213097b1600130616031340422c2a16004362170716074f4f1708130617090b170a0c170b160b1603314c40481600160916090d2a626c170c160c3f170d160d160a28130a7b160d170a160016090d2a16091340422a62170e160e134040134041626c131b2a170f160e0c13404062160f664417100d160c13142c2a171116041611161113142a6217121612160816107241130b7b16091340422a1709160b0d2a170b4a7fb416071308130a626d17131607130a130c626d17141607130c132c6217151607132c1334626f17161607133516074362171716131614161516161617020100040903402c1600030002170817071706170517041604ce012f0c7b1606ce02410d7b16071601340f7b16080c1320627116022f107b16081320132162160341117b160716051608020000020e020f1600a00013c0436f72651601000317041703170216020d2aa10016031604020000010101161600a0052f4c02a003021600a0042f4c0756a00632130c7ba002021307047c7b180100010800403016001401010004170217011601ce002f130d7b16020d10ce030105170617051704170316041400414c031603ba4a16a0006ba0016b44a0046b44a0056b441707160416074e41130e7b160316051606bb000000000008a003a102a005a104561385265c002aa1060100010600403a000716001401020004170217011601ce002f16010c2f1b130d7b160213211325626e17031603a0050d2a2f13077b160213251326626c170416040c3313087b1326160413142c2a170516024316052f0e7b1603a10516021325160562a10301000104001816001401030004170217011601ce002f130d7b16021321134041627117031602431340412f0e7b1603a1010102010500402516001401040004170217011601ce002f16010c2f1b130d7b160213211340416271170316021340411340616217041602431340612f0e7b140100160444631603a8",
    "codeHash": "7ebf06319b04aef7a7013a42ea2b7fccb3fc86178c27240aa2b2678d9068d9c7",
    "fieldsSig": {
        "names": [
            "chainId",
            "governanceChainId",
            "governanceEmitterAddress",
            "tokenBridgeFactory",
            "receivedSequence",
            "messageFee",
            "guardianSets",
            "guardianSetIndexes",
            "previousGuardianSetExpirationTimeMS"
        ],
        "types": [
            "U256",
            "U256",
            "ByteVec",
            "ByteVec",
            "U256",
            "U256",
            "[ByteVec;2]",
            "[U256;2]",
            "U256"
        ],
        "isMutable": [
            false,
            false,
            false,
            false,
            true,
            true,
            true,
            true,
            true
        ]
    },
    "eventsSig": [
        {
            "name": "WormholeMessage",
            "fieldNames": [
                "sender",
                "targetChainId",
                "sequence",
                "nonce",
                "payload",
                "consistencyLevel"
            ],
            "fieldTypes": [
                "ByteVec",
                "U256",
                "U256",
                "ByteVec",
                "ByteVec",
                "U256"
            ]
        }
    ],
    "functions": [
        {
            "name": "getMessageFee",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [],
            "paramTypes": [],
            "paramIsMutable": [],
            "returnTypes": [
                "U256"
            ]
        },
        {
            "name": "publishWormholeMessage",
            "usePreapprovedAssets": true,
            "useAssetsInContract": true,
            "isPublic": true,
            "paramNames": [
                "payer",
                "targetChainId",
                "sequence",
                "nonce",
                "payload",
                "consistencyLevel"
            ],
            "paramTypes": [
                "Address",
                "U256",
                "U256",
                "ByteVec",
                "ByteVec",
                "U256"
            ],
            "paramIsMutable": [
                false,
                false,
                false,
                false,
                false,
                false
            ],
            "returnTypes": []
        },
        {
            "name": "parseAndVerifyVAA",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "data",
                "isGovernanceVAA"
            ],
            "paramTypes": [
                "ByteVec",
                "Bool"
            ],
            "paramIsMutable": [
                false,
                false
            ],
            "returnTypes": [
                "U256",
                "U256",
                "ByteVec",
                "U256",
                "ByteVec"
            ]
        },
        {
            "name": "parseAndVerifyGovernanceVAAGeneric",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "vaa",
                "targetSequence",
                "coreModule",
                "action"
            ],
            "paramTypes": [
                "ByteVec",
                "U256",
                "U256",
                "ByteVec"
            ],
            "paramIsMutable": [
                false,
                false,
                false,
                false
            ],
            "returnTypes": [
                "U256",
                "U256",
                "ByteVec"
            ]
        },
        {
            "name": "parseAndVerifyGovernanceVAA",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": false,
            "paramNames": [
                "vaa",
                "action"
            ],
            "paramTypes": [
                "ByteVec",
                "ByteVec"
            ],
            "paramIsMutable": [
                false,
                false
            ],
            "returnTypes": [
                "U256",
                "ByteVec"
            ]
        },
        {
            "name": "getGuardiansInfo",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": false,
            "paramNames": [
                "guardianSetIndex"
            ],
            "paramTypes": [
                "U256"
            ],
            "paramIsMutable": [
                false
            ],
            "returnTypes": [
                "ByteVec"
            ]
        },
        {
            "name": "submitContractUpgrade",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "vaa"
            ],
            "paramTypes": [
                "ByteVec"
            ],
            "paramIsMutable": [
                false
            ],
            "returnTypes": []
        },
        {
            "name": "updatePreviousGuardianSet",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": false,
            "paramNames": [],
            "paramTypes": [],
            "paramIsMutable": [],
            "returnTypes": []
        },
        {
            "name": "submitNewGuardianSet",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "vaa"
            ],
            "paramTypes": [
                "ByteVec"
            ],
            "paramIsMutable": [
                false
            ],
            "returnTypes": []
        },
        {
            "name": "submitSetMessageFee",
            "usePreapprovedAssets": false,
            "useAssetsInContract": false,
            "isPublic": true,
            "paramNames": [
                "vaa"
            ],
            "paramTypes": [
                "ByteVec"
            ],
            "paramIsMutable": [
                false
            ],
            "returnTypes": []
        },
        {
            "name": "submitTransferFees",
            "usePreapprovedAssets": false,
            "useAssetsInContract": true,
            "isPublic": true,
            "paramNames": [
                "vaa"
            ],
            "paramTypes": [
                "ByteVec"
            ],
            "paramIsMutable": [
                false
            ],
            "returnTypes": []
        }
    ],
    "constants": [
        {
            "name": "Version",
            "value": {
                "type": "ByteVec",
                "value": "01"
            }
        },
        {
            "name": "GuardianSetExpireDuration",
            "value": {
                "type": "U256",
                "value": "86400000"
            }
        },
        {
            "name": "CoreModule",
            "value": {
                "type": "U256",
                "value": "1131377253"
            }
        }
    ],
    "enums": [
        {
            "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": "ActionId",
            "fields": [
                {
                    "name": "ContractUpgrade",
                    "value": {
                        "type": "ByteVec",
                        "value": "01"
                    }
                },
                {
                    "name": "NewGuardianSet",
                    "value": {
                        "type": "ByteVec",
                        "value": "02"
                    }
                },
                {
                    "name": "NewMessageFee",
                    "value": {
                        "type": "ByteVec",
                        "value": "03"
                    }
                },
                {
                    "name": "TransferFee",
                    "value": {
                        "type": "ByteVec",
                        "value": "04"
                    }
                }
            ]
        }
    ]
}
