@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
104 lines • 4.6 kB
JavaScript
import { PublicKey } from '@solana/web3.js';
import { SealevelInstructionWrapper } from '../utils/sealevelSerialization.js';
/**
* Mailbox instruction types matching Rust enum
* See: rust/sealevel/programs/mailbox/src/instruction.rs
*/
export var SealevelMailboxInstructionType;
(function (SealevelMailboxInstructionType) {
SealevelMailboxInstructionType[SealevelMailboxInstructionType["INIT"] = 0] = "INIT";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["INBOX_PROCESS"] = 1] = "INBOX_PROCESS";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["INBOX_SET_DEFAULT_ISM"] = 2] = "INBOX_SET_DEFAULT_ISM";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["INBOX_GET_RECIPIENT_ISM"] = 3] = "INBOX_GET_RECIPIENT_ISM";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["OUTBOX_DISPATCH"] = 4] = "OUTBOX_DISPATCH";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["OUTBOX_GET_COUNT"] = 5] = "OUTBOX_GET_COUNT";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["OUTBOX_GET_LATEST_CHECKPOINT"] = 6] = "OUTBOX_GET_LATEST_CHECKPOINT";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["OUTBOX_GET_ROOT"] = 7] = "OUTBOX_GET_ROOT";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["GET_OWNER"] = 8] = "GET_OWNER";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["TRANSFER_OWNERSHIP"] = 9] = "TRANSFER_OWNERSHIP";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["CLAIM_PROTOCOL_FEES"] = 10] = "CLAIM_PROTOCOL_FEES";
SealevelMailboxInstructionType[SealevelMailboxInstructionType["SET_PROTOCOL_FEE_CONFIG"] = 11] = "SET_PROTOCOL_FEE_CONFIG";
})(SealevelMailboxInstructionType || (SealevelMailboxInstructionType = {}));
export const SealevelMailboxInstructionName = {
[SealevelMailboxInstructionType.INIT]: 'Init',
[SealevelMailboxInstructionType.INBOX_PROCESS]: 'InboxProcess',
[SealevelMailboxInstructionType.INBOX_SET_DEFAULT_ISM]: 'InboxSetDefaultIsm',
[SealevelMailboxInstructionType.INBOX_GET_RECIPIENT_ISM]: 'InboxGetRecipientIsm',
[SealevelMailboxInstructionType.OUTBOX_DISPATCH]: 'OutboxDispatch',
[SealevelMailboxInstructionType.OUTBOX_GET_COUNT]: 'OutboxGetCount',
[SealevelMailboxInstructionType.OUTBOX_GET_LATEST_CHECKPOINT]: 'OutboxGetLatestCheckpoint',
[SealevelMailboxInstructionType.OUTBOX_GET_ROOT]: 'OutboxGetRoot',
[SealevelMailboxInstructionType.GET_OWNER]: 'GetOwner',
[SealevelMailboxInstructionType.TRANSFER_OWNERSHIP]: 'TransferOwnership',
[SealevelMailboxInstructionType.CLAIM_PROTOCOL_FEES]: 'ClaimProtocolFees',
[SealevelMailboxInstructionType.SET_PROTOCOL_FEE_CONFIG]: 'SetProtocolFeeConfig',
};
/**
* SetDefaultIsm instruction data
* Matches: rust/sealevel/programs/mailbox/src/instruction.rs
*/
export class SealevelMailboxSetDefaultIsmInstruction {
newIsm;
newIsmPubkey;
constructor(fields) {
Object.assign(this, fields);
this.newIsmPubkey = new PublicKey(this.newIsm);
}
}
export const SealevelMailboxSetDefaultIsmInstructionSchema = new Map([
[
SealevelInstructionWrapper,
{
kind: 'struct',
fields: [
['instruction', 'u32'], // Borsh enum discriminator (4 bytes)
['data', SealevelMailboxSetDefaultIsmInstruction],
],
},
],
[
SealevelMailboxSetDefaultIsmInstruction,
{
kind: 'struct',
fields: [
['newIsm', [32]], // Pubkey as 32-byte array
],
},
],
]);
/**
* TransferOwnership instruction data
* Matches: rust/sealevel/programs/mailbox/src/instruction.rs
*/
export class SealevelMailboxTransferOwnershipInstruction {
newOwner;
newOwnerPubkey;
constructor(fields) {
Object.assign(this, fields);
this.newOwnerPubkey = this.newOwner
? new PublicKey(this.newOwner)
: undefined;
}
}
export const SealevelMailboxTransferOwnershipInstructionSchema = new Map([
[
SealevelInstructionWrapper,
{
kind: 'struct',
fields: [
['instruction', 'u32'],
['data', SealevelMailboxTransferOwnershipInstruction],
],
},
],
[
SealevelMailboxTransferOwnershipInstruction,
{
kind: 'struct',
fields: [
['newOwner', { kind: 'option', type: [32] }], // Option<Pubkey>
],
},
],
]);
//# sourceMappingURL=serialization.js.map