/** * This code was AUTOGENERATED using the kinobi library. * Please DO NOT EDIT THIS FILE, instead use visitors * to add features, then rerun kinobi to update it. * * @see https://github.com/kinobi-so/kinobi */ import { Account, Context, Option, OptionOrNullable, Pda, PublicKey, RpcAccount, RpcGetAccountOptions, RpcGetAccountsOptions, assertAccountExists, deserializeAccount, gpaBuilder, publicKey as toPublicKey, } from '@metaplex-foundation/umi'; import { Serializer, bytes, mapSerializer, option, publicKey as publicKeySerializer, struct, u8, } from '@metaplex-foundation/umi/serializers'; import { ReceiveLibraryTimeout, ReceiveLibraryTimeoutArgs, getReceiveLibraryTimeoutSerializer, } from '../types'; export type ReceiveLibraryConfig = Account; export type ReceiveLibraryConfigAccountData = { discriminator: Uint8Array; messageLib: PublicKey; timeout: Option; bump: number; }; export type ReceiveLibraryConfigAccountDataArgs = { messageLib: PublicKey; timeout: OptionOrNullable; bump: number; }; export function getReceiveLibraryConfigAccountDataSerializer(): Serializer< ReceiveLibraryConfigAccountDataArgs, ReceiveLibraryConfigAccountData > { return mapSerializer< ReceiveLibraryConfigAccountDataArgs, any, ReceiveLibraryConfigAccountData >( struct( [ ['discriminator', bytes({ size: 8 })], ['messageLib', publicKeySerializer()], ['timeout', option(getReceiveLibraryTimeoutSerializer())], ['bump', u8()], ], { description: 'ReceiveLibraryConfigAccountData' } ), (value) => ({ ...value, discriminator: new Uint8Array([142, 226, 251, 138, 1, 206, 91, 193]), }) ) as Serializer< ReceiveLibraryConfigAccountDataArgs, ReceiveLibraryConfigAccountData >; } export function deserializeReceiveLibraryConfig( rawAccount: RpcAccount ): ReceiveLibraryConfig { return deserializeAccount( rawAccount, getReceiveLibraryConfigAccountDataSerializer() ); } export async function fetchReceiveLibraryConfig( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); assertAccountExists(maybeAccount, 'ReceiveLibraryConfig'); return deserializeReceiveLibraryConfig(maybeAccount); } export async function safeFetchReceiveLibraryConfig( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); return maybeAccount.exists ? deserializeReceiveLibraryConfig(maybeAccount) : null; } export async function fetchAllReceiveLibraryConfig( context: Pick, publicKeys: Array, options?: RpcGetAccountsOptions ): Promise { const maybeAccounts = await context.rpc.getAccounts( publicKeys.map((key) => toPublicKey(key, false)), options ); return maybeAccounts.map((maybeAccount) => { assertAccountExists(maybeAccount, 'ReceiveLibraryConfig'); return deserializeReceiveLibraryConfig(maybeAccount); }); } export async function safeFetchAllReceiveLibraryConfig( context: Pick, publicKeys: Array, options?: RpcGetAccountsOptions ): Promise { const maybeAccounts = await context.rpc.getAccounts( publicKeys.map((key) => toPublicKey(key, false)), options ); return maybeAccounts .filter((maybeAccount) => maybeAccount.exists) .map((maybeAccount) => deserializeReceiveLibraryConfig(maybeAccount as RpcAccount) ); } export function getReceiveLibraryConfigGpaBuilder( context: Pick ) { const programId = context.programs.getPublicKey( 'endpoint', '76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6' ); return gpaBuilder(context, programId) .registerFields<{ discriminator: Uint8Array; messageLib: PublicKey; timeout: OptionOrNullable; bump: number; }>({ discriminator: [0, bytes({ size: 8 })], messageLib: [8, publicKeySerializer()], timeout: [40, option(getReceiveLibraryTimeoutSerializer())], bump: [null, u8()], }) .deserializeUsing((account) => deserializeReceiveLibraryConfig(account) ) .whereField( 'discriminator', new Uint8Array([142, 226, 251, 138, 1, 206, 91, 193]) ); }