/** * 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, Pda, PublicKey, RpcAccount, RpcGetAccountOptions, RpcGetAccountsOptions, assertAccountExists, deserializeAccount, gpaBuilder, publicKey as toPublicKey, } from '@metaplex-foundation/umi'; import { Serializer, bytes, mapSerializer, struct, u64, u8, } from '@metaplex-foundation/umi/serializers'; export type Nonce = Account; export type NonceAccountData = { discriminator: Uint8Array; bump: number; outboundNonce: bigint; inboundNonce: bigint; }; export type NonceAccountDataArgs = { bump: number; outboundNonce: number | bigint; inboundNonce: number | bigint; }; export function getNonceAccountDataSerializer(): Serializer< NonceAccountDataArgs, NonceAccountData > { return mapSerializer( struct( [ ['discriminator', bytes({ size: 8 })], ['bump', u8()], ['outboundNonce', u64()], ['inboundNonce', u64()], ], { description: 'NonceAccountData' } ), (value) => ({ ...value, discriminator: new Uint8Array([143, 197, 147, 95, 106, 165, 50, 43]), }) ) as Serializer; } export function deserializeNonce(rawAccount: RpcAccount): Nonce { return deserializeAccount(rawAccount, getNonceAccountDataSerializer()); } export async function fetchNonce( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); assertAccountExists(maybeAccount, 'Nonce'); return deserializeNonce(maybeAccount); } export async function safeFetchNonce( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); return maybeAccount.exists ? deserializeNonce(maybeAccount) : null; } export async function fetchAllNonce( 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, 'Nonce'); return deserializeNonce(maybeAccount); }); } export async function safeFetchAllNonce( 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) => deserializeNonce(maybeAccount as RpcAccount)); } export function getNonceGpaBuilder(context: Pick) { const programId = context.programs.getPublicKey( 'executor', '6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn' ); return gpaBuilder(context, programId) .registerFields<{ discriminator: Uint8Array; bump: number; outboundNonce: number | bigint; inboundNonce: number | bigint; }>({ discriminator: [0, bytes({ size: 8 })], bump: [8, u8()], outboundNonce: [9, u64()], inboundNonce: [17, u64()], }) .deserializeUsing((account) => deserializeNonce(account)) .whereField( 'discriminator', new Uint8Array([143, 197, 147, 95, 106, 165, 50, 43]) ); } export function getNonceSize(): number { return 25; }