wormhole-circle-integration/solana/ts/src/cctp/types/message_transmitter.ts

2736 lines
74 KiB
TypeScript

export type MessageTransmitter = {
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";
},
];
};
export const IDL: MessageTransmitter = {
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",
},
],
};