/** * 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, } from '@metaplex-foundation/umi/serializers'; export type ExecutionContextV1 = Account; export type ExecutionContextV1AccountData = { discriminator: Uint8Array; initialPayerBalance: bigint; /** * The maximum total lamports allowed to be used by all instructions in this execution. * This is a hard cap for the sum of lamports consumed by all instructions in the execution batch. */ feeLimit: bigint; }; export type ExecutionContextV1AccountDataArgs = { initialPayerBalance: number | bigint; /** * The maximum total lamports allowed to be used by all instructions in this execution. * This is a hard cap for the sum of lamports consumed by all instructions in the execution batch. */ feeLimit: number | bigint; }; export function getExecutionContextV1AccountDataSerializer(): Serializer< ExecutionContextV1AccountDataArgs, ExecutionContextV1AccountData > { return mapSerializer< ExecutionContextV1AccountDataArgs, any, ExecutionContextV1AccountData >( struct( [ ['discriminator', bytes({ size: 8 })], ['initialPayerBalance', u64()], ['feeLimit', u64()], ], { description: 'ExecutionContextV1AccountData' } ), (value) => ({ ...value, discriminator: new Uint8Array([132, 92, 176, 59, 141, 186, 141, 137]), }) ) as Serializer< ExecutionContextV1AccountDataArgs, ExecutionContextV1AccountData >; } export function deserializeExecutionContextV1( rawAccount: RpcAccount ): ExecutionContextV1 { return deserializeAccount( rawAccount, getExecutionContextV1AccountDataSerializer() ); } export async function fetchExecutionContextV1( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); assertAccountExists(maybeAccount, 'ExecutionContextV1'); return deserializeExecutionContextV1(maybeAccount); } export async function safeFetchExecutionContextV1( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); return maybeAccount.exists ? deserializeExecutionContextV1(maybeAccount) : null; } export async function fetchAllExecutionContextV1( 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, 'ExecutionContextV1'); return deserializeExecutionContextV1(maybeAccount); }); } export async function safeFetchAllExecutionContextV1( 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) => deserializeExecutionContextV1(maybeAccount as RpcAccount) ); } export function getExecutionContextV1GpaBuilder( context: Pick ) { const programId = context.programs.getPublicKey( 'executor', '6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn' ); return gpaBuilder(context, programId) .registerFields<{ discriminator: Uint8Array; initialPayerBalance: number | bigint; feeLimit: number | bigint; }>({ discriminator: [0, bytes({ size: 8 })], initialPayerBalance: [8, u64()], feeLimit: [16, u64()], }) .deserializeUsing((account) => deserializeExecutionContextV1(account) ) .whereField( 'discriminator', new Uint8Array([132, 92, 176, 59, 141, 186, 141, 137]) ); } export function getExecutionContextV1Size(): number { return 24; }