{
    "version": "0.1.0",
    "name": "message_transmitter",
    "instructions": [
        {
            "name": "initialize",
            "accounts": [
                {
                    "name": "payer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "upgradeAuthority",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "messageTransmitterProgramData",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "messageTransmitterProgram",
                    "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": "messageTransmitter",
                    "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": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "AcceptOwnershipParams"
                    }
                }
            ]
        },
        {
            "name": "updatePauser",
            "accounts": [
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "UpdatePauserParams"
                    }
                }
            ]
        },
        {
            "name": "updateAttesterManager",
            "accounts": [
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "UpdateAttesterManagerParams"
                    }
                }
            ]
        },
        {
            "name": "pause",
            "accounts": [
                {
                    "name": "pauser",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "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": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "UnpauseParams"
                    }
                }
            ]
        },
        {
            "name": "setMaxMessageBodySize",
            "accounts": [
                {
                    "name": "owner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "SetMaxMessageBodySizeParams"
                    }
                }
            ]
        },
        {
            "name": "enableAttester",
            "accounts": [
                {
                    "name": "payer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "attesterManager",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "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": "EnableAttesterParams"
                    }
                }
            ]
        },
        {
            "name": "disableAttester",
            "accounts": [
                {
                    "name": "payer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "attesterManager",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "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": "DisableAttesterParams"
                    }
                }
            ]
        },
        {
            "name": "setSignatureThreshold",
            "accounts": [
                {
                    "name": "attesterManager",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "eventAuthority",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "program",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "SetSignatureThresholdParams"
                    }
                }
            ]
        },
        {
            "name": "sendMessage",
            "accounts": [
                {
                    "name": "eventRentPayer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "senderAuthorityPda",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "messageSentEventData",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "senderProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "SendMessageParams"
                    }
                }
            ],
            "returns": "u64"
        },
        {
            "name": "sendMessageWithCaller",
            "accounts": [
                {
                    "name": "eventRentPayer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "senderAuthorityPda",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "messageSentEventData",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "senderProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "SendMessageWithCallerParams"
                    }
                }
            ],
            "returns": "u64"
        },
        {
            "name": "replaceMessage",
            "accounts": [
                {
                    "name": "eventRentPayer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "senderAuthorityPda",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "messageSentEventData",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "senderProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "ReplaceMessageParams"
                    }
                }
            ],
            "returns": "u64"
        },
        {
            "name": "receiveMessage",
            "accounts": [
                {
                    "name": "payer",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "caller",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "authorityPda",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "messageTransmitter",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "usedNonces",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "receiver",
                    "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": "ReceiveMessageParams"
                    }
                }
            ]
        },
        {
            "name": "reclaimEventAccount",
            "accounts": [
                {
                    "name": "payee",
                    "isMut": true,
                    "isSigner": true,
                    "docs": [
                        "rent SOL receiver, should match original rent payer"
                    ]
                },
                {
                    "name": "messageTransmitter",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "messageSentEventData",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "ReclaimEventAccountParams"
                    }
                }
            ]
        },
        {
            "name": "getNoncePda",
            "accounts": [
                {
                    "name": "messageTransmitter",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "GetNoncePDAParams"
                    }
                }
            ],
            "returns": "publicKey"
        },
        {
            "name": "isNonceUsed",
            "accounts": [
                {
                    "name": "usedNonces",
                    "isMut": false,
                    "isSigner": false,
                    "docs": [
                        "Account will be explicitly loaded to avoid error when it's not initialized"
                    ]
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "IsNonceUsedParams"
                    }
                }
            ],
            "returns": "bool"
        }
    ],
    "accounts": [
        {
            "name": "MessageSent",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "rentPayer",
                        "type": "publicKey"
                    },
                    {
                        "name": "message",
                        "type": "bytes"
                    }
                ]
            }
        },
        {
            "name": "MessageTransmitter",
            "docs": [
                "Main state of the MessageTransmitter program"
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "owner",
                        "type": "publicKey"
                    },
                    {
                        "name": "pendingOwner",
                        "type": "publicKey"
                    },
                    {
                        "name": "attesterManager",
                        "type": "publicKey"
                    },
                    {
                        "name": "pauser",
                        "type": "publicKey"
                    },
                    {
                        "name": "paused",
                        "type": "bool"
                    },
                    {
                        "name": "localDomain",
                        "type": "u32"
                    },
                    {
                        "name": "version",
                        "type": "u32"
                    },
                    {
                        "name": "signatureThreshold",
                        "type": "u32"
                    },
                    {
                        "name": "enabledAttesters",
                        "type": {
                            "vec": "publicKey"
                        }
                    },
                    {
                        "name": "maxMessageBodySize",
                        "type": "u64"
                    },
                    {
                        "name": "nextAvailableNonce",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "UsedNonces",
            "docs": [
                "UsedNonces account holds an array of bits that indicate which nonces were already used",
                "so they can't be resused to receive new messages. Array starts with the first_nonce and",
                "holds flags for UsedNonces::MAX_NONCES. Nonces are recorded separately for each remote_domain."
            ],
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "remoteDomain",
                        "type": "u32"
                    },
                    {
                        "name": "firstNonce",
                        "type": "u64"
                    },
                    {
                        "name": "usedNonces",
                        "type": {
                            "array": [
                                "u64",
                                100
                            ]
                        }
                    }
                ]
            }
        }
    ],
    "types": [
        {
            "name": "AcceptOwnershipParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "DisableAttesterParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "attester",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "EnableAttesterParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "newAttester",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "GetNoncePDAParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "nonce",
                        "type": "u64"
                    },
                    {
                        "name": "sourceDomain",
                        "type": "u32"
                    }
                ]
            }
        },
        {
            "name": "InitializeParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "localDomain",
                        "type": "u32"
                    },
                    {
                        "name": "attester",
                        "type": "publicKey"
                    },
                    {
                        "name": "maxMessageBodySize",
                        "type": "u64"
                    },
                    {
                        "name": "version",
                        "type": "u32"
                    }
                ]
            }
        },
        {
            "name": "IsNonceUsedParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "nonce",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "PauseParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "ReceiveMessageParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "message",
                        "type": "bytes"
                    },
                    {
                        "name": "attestation",
                        "type": "bytes"
                    }
                ]
            }
        },
        {
            "name": "HandleReceiveMessageParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "remoteDomain",
                        "type": "u32"
                    },
                    {
                        "name": "sender",
                        "type": "publicKey"
                    },
                    {
                        "name": "messageBody",
                        "type": "bytes"
                    },
                    {
                        "name": "authorityBump",
                        "type": "u8"
                    }
                ]
            }
        },
        {
            "name": "ReclaimEventAccountParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "attestation",
                        "type": "bytes"
                    }
                ]
            }
        },
        {
            "name": "ReplaceMessageParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "originalMessage",
                        "type": "bytes"
                    },
                    {
                        "name": "originalAttestation",
                        "type": "bytes"
                    },
                    {
                        "name": "newMessageBody",
                        "type": "bytes"
                    },
                    {
                        "name": "newDestinationCaller",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "SendMessageWithCallerParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "destinationDomain",
                        "type": "u32"
                    },
                    {
                        "name": "recipient",
                        "type": "publicKey"
                    },
                    {
                        "name": "messageBody",
                        "type": "bytes"
                    },
                    {
                        "name": "destinationCaller",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "SendMessageParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "destinationDomain",
                        "type": "u32"
                    },
                    {
                        "name": "recipient",
                        "type": "publicKey"
                    },
                    {
                        "name": "messageBody",
                        "type": "bytes"
                    }
                ]
            }
        },
        {
            "name": "SetMaxMessageBodySizeParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "newMaxMessageBodySize",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "SetSignatureThresholdParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "newSignatureThreshold",
                        "type": "u32"
                    }
                ]
            }
        },
        {
            "name": "TransferOwnershipParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "newOwner",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "UnpauseParams",
            "type": {
                "kind": "struct",
                "fields": []
            }
        },
        {
            "name": "UpdateAttesterManagerParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "newAttesterManager",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "UpdatePauserParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "newPauser",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "MathError",
            "type": {
                "kind": "enum",
                "variants": [
                    {
                        "name": "MathOverflow"
                    },
                    {
                        "name": "MathUnderflow"
                    },
                    {
                        "name": "ErrorInDivision"
                    }
                ]
            }
        }
    ],
    "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": "PauserChanged",
            "fields": [
                {
                    "name": "newAddress",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "AttesterManagerUpdated",
            "fields": [
                {
                    "name": "previousAttesterManager",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "newAttesterManager",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "MessageReceived",
            "fields": [
                {
                    "name": "caller",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "sourceDomain",
                    "type": "u32",
                    "index": false
                },
                {
                    "name": "nonce",
                    "type": "u64",
                    "index": false
                },
                {
                    "name": "sender",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "messageBody",
                    "type": "bytes",
                    "index": false
                }
            ]
        },
        {
            "name": "SignatureThresholdUpdated",
            "fields": [
                {
                    "name": "oldSignatureThreshold",
                    "type": "u32",
                    "index": false
                },
                {
                    "name": "newSignatureThreshold",
                    "type": "u32",
                    "index": false
                }
            ]
        },
        {
            "name": "AttesterEnabled",
            "fields": [
                {
                    "name": "attester",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "AttesterDisabled",
            "fields": [
                {
                    "name": "attester",
                    "type": "publicKey",
                    "index": false
                }
            ]
        },
        {
            "name": "MaxMessageBodySizeUpdated",
            "fields": [
                {
                    "name": "newMaxMessageBodySize",
                    "type": "u64",
                    "index": false
                }
            ]
        },
        {
            "name": "Pause",
            "fields": []
        },
        {
            "name": "Unpause",
            "fields": []
        }
    ],
    "errors": [
        {
            "code": 6000,
            "name": "InvalidAuthority",
            "msg": "Invalid authority"
        },
        {
            "code": 6001,
            "name": "ProgramPaused",
            "msg": "Instruction is not allowed at this time"
        },
        {
            "code": 6002,
            "name": "InvalidMessageTransmitterState",
            "msg": "Invalid message transmitter state"
        },
        {
            "code": 6003,
            "name": "InvalidSignatureThreshold",
            "msg": "Invalid signature threshold"
        },
        {
            "code": 6004,
            "name": "SignatureThresholdAlreadySet",
            "msg": "Signature threshold already set"
        },
        {
            "code": 6005,
            "name": "InvalidOwner",
            "msg": "Invalid owner"
        },
        {
            "code": 6006,
            "name": "InvalidPauser",
            "msg": "Invalid pauser"
        },
        {
            "code": 6007,
            "name": "InvalidAttesterManager",
            "msg": "Invalid attester manager"
        },
        {
            "code": 6008,
            "name": "InvalidAttester",
            "msg": "Invalid attester"
        },
        {
            "code": 6009,
            "name": "AttesterAlreadyEnabled",
            "msg": "Attester already enabled"
        },
        {
            "code": 6010,
            "name": "TooFewEnabledAttesters",
            "msg": "Too few enabled attesters"
        },
        {
            "code": 6011,
            "name": "SignatureThresholdTooLow",
            "msg": "Signature threshold is too low"
        },
        {
            "code": 6012,
            "name": "AttesterAlreadyDisabled",
            "msg": "Attester already disabled"
        },
        {
            "code": 6013,
            "name": "MessageBodyLimitExceeded",
            "msg": "Message body exceeds max size"
        },
        {
            "code": 6014,
            "name": "InvalidDestinationCaller",
            "msg": "Invalid destination caller"
        },
        {
            "code": 6015,
            "name": "InvalidRecipient",
            "msg": "Invalid message recipient"
        },
        {
            "code": 6016,
            "name": "SenderNotPermitted",
            "msg": "Sender is not permitted"
        },
        {
            "code": 6017,
            "name": "InvalidSourceDomain",
            "msg": "Invalid source domain"
        },
        {
            "code": 6018,
            "name": "InvalidDestinationDomain",
            "msg": "Invalid destination domain"
        },
        {
            "code": 6019,
            "name": "InvalidMessageVersion",
            "msg": "Invalid message version"
        },
        {
            "code": 6020,
            "name": "InvalidUsedNoncesAccount",
            "msg": "Invalid used nonces account"
        },
        {
            "code": 6021,
            "name": "InvalidRecipientProgram",
            "msg": "Invalid recipient program"
        },
        {
            "code": 6022,
            "name": "InvalidNonce",
            "msg": "Invalid nonce"
        },
        {
            "code": 6023,
            "name": "NonceAlreadyUsed",
            "msg": "Nonce already used"
        },
        {
            "code": 6024,
            "name": "MessageTooShort",
            "msg": "Message is too short"
        },
        {
            "code": 6025,
            "name": "MalformedMessage",
            "msg": "Malformed message"
        },
        {
            "code": 6026,
            "name": "InvalidSignatureOrderOrDupe",
            "msg": "Invalid signature order or dupe"
        },
        {
            "code": 6027,
            "name": "InvalidAttesterSignature",
            "msg": "Invalid attester signature"
        },
        {
            "code": 6028,
            "name": "InvalidAttestationLength",
            "msg": "Invalid attestation length"
        },
        {
            "code": 6029,
            "name": "InvalidSignatureRecoveryId",
            "msg": "Invalid signature recovery ID"
        },
        {
            "code": 6030,
            "name": "InvalidSignatureSValue",
            "msg": "Invalid signature S value"
        },
        {
            "code": 6031,
            "name": "InvalidMessageHash",
            "msg": "Invalid message hash"
        }
    ],
    "metadata": {
        "address": "CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd"
    }
}
