/** * This code was AUTOGENERATED using the codama library. * Please DO NOT EDIT THIS FILE, instead use visitors * to add features, then rerun codama to update it. * * @see https://github.com/codama-idl/codama */ import { assertAccountExists, assertAccountsExist, decodeAccount, fetchEncodedAccount, fetchEncodedAccounts, type Account, type EncodedAccount, type FetchAccountConfig, type FetchAccountsConfig, type MaybeAccount, type MaybeEncodedAccount, } from '@solana/accounts'; import { getAddressDecoder, getAddressEncoder, type Address, } from '@solana/addresses'; import { addDecoderSizePrefix, addEncoderSizePrefix, combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getI64Decoder, getI64Encoder, getStructDecoder, getStructEncoder, getU32Decoder, getU32Encoder, getU8Decoder, getU8Encoder, getUtf8Decoder, getUtf8Encoder, transformEncoder, type Codec, type Decoder, type Encoder, type ReadonlyUint8Array, } from '@solana/codecs'; export const MESSAGE_ACCOUNT_DISCRIMINATOR = new Uint8Array([ 15, 40, 235, 178, 191, 96, 190, 12, ]); export function getMessageAccountDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( MESSAGE_ACCOUNT_DISCRIMINATOR ); } export type MessageAccount = { discriminator: ReadonlyUint8Array; sender: Address; recipient: Address; messageId: string; payloadHash: ReadonlyUint8Array; messageType: number; timestamp: bigint; expiresAt: bigint; status: number; bump: number; }; export type MessageAccountArgs = { sender: Address; recipient: Address; messageId: string; payloadHash: ReadonlyUint8Array; messageType: number; timestamp: number | bigint; expiresAt: number | bigint; status: number; bump: number; }; export function getMessageAccountEncoder(): Encoder { return transformEncoder( getStructEncoder([ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['sender', getAddressEncoder()], ['recipient', getAddressEncoder()], ['messageId', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())], ['payloadHash', fixEncoderSize(getBytesEncoder(), 32)], ['messageType', getU8Encoder()], ['timestamp', getI64Encoder()], ['expiresAt', getI64Encoder()], ['status', getU8Encoder()], ['bump', getU8Encoder()], ]), (value) => ({ ...value, discriminator: MESSAGE_ACCOUNT_DISCRIMINATOR }) ); } export function getMessageAccountDecoder(): Decoder { return getStructDecoder([ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['sender', getAddressDecoder()], ['recipient', getAddressDecoder()], ['messageId', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())], ['payloadHash', fixDecoderSize(getBytesDecoder(), 32)], ['messageType', getU8Decoder()], ['timestamp', getI64Decoder()], ['expiresAt', getI64Decoder()], ['status', getU8Decoder()], ['bump', getU8Decoder()], ]); } export function getMessageAccountCodec(): Codec< MessageAccountArgs, MessageAccount > { return combineCodec(getMessageAccountEncoder(), getMessageAccountDecoder()); } export function decodeMessageAccount( encodedAccount: EncodedAccount ): Account; export function decodeMessageAccount( encodedAccount: MaybeEncodedAccount ): MaybeAccount; export function decodeMessageAccount( encodedAccount: EncodedAccount | MaybeEncodedAccount ): Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getMessageAccountDecoder() ); } export async function fetchMessageAccount( rpc: Parameters[0], address: Address, config?: FetchAccountConfig ): Promise> { const maybeAccount = await fetchMaybeMessageAccount(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeMessageAccount< TAddress extends string = string, >( rpc: Parameters[0], address: Address, config?: FetchAccountConfig ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeMessageAccount(maybeAccount); } export async function fetchAllMessageAccount( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig ): Promise[]> { const maybeAccounts = await fetchAllMaybeMessageAccount( rpc, addresses, config ); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeMessageAccount( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeMessageAccount(maybeAccount) ); }