/** * 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, array, bool, bytes, mapSerializer, publicKey as publicKeySerializer, struct, u16, u8, } from '@metaplex-foundation/umi/serializers'; import { Acl, AclArgs, DstConfig, DstConfigArgs, getAclSerializer, getDstConfigSerializer, } from '../types'; export type ExecutorConfig = Account; export type ExecutorConfigAccountData = { discriminator: Uint8Array; bump: number; owner: PublicKey; acl: Acl; admins: Array; executors: Array; msglibs: Array; paused: boolean; defaultMultiplierBps: number; priceFeed: PublicKey; dstConfigs: Array; }; export type ExecutorConfigAccountDataArgs = { bump: number; owner: PublicKey; acl: AclArgs; admins: Array; executors: Array; msglibs: Array; paused: boolean; defaultMultiplierBps: number; priceFeed: PublicKey; dstConfigs: Array; }; export function getExecutorConfigAccountDataSerializer(): Serializer< ExecutorConfigAccountDataArgs, ExecutorConfigAccountData > { return mapSerializer< ExecutorConfigAccountDataArgs, any, ExecutorConfigAccountData >( struct( [ ['discriminator', bytes({ size: 8 })], ['bump', u8()], ['owner', publicKeySerializer()], ['acl', getAclSerializer()], ['admins', array(publicKeySerializer())], ['executors', array(publicKeySerializer())], ['msglibs', array(publicKeySerializer())], ['paused', bool()], ['defaultMultiplierBps', u16()], ['priceFeed', publicKeySerializer()], ['dstConfigs', array(getDstConfigSerializer())], ], { description: 'ExecutorConfigAccountData' } ), (value) => ({ ...value, discriminator: new Uint8Array([134, 17, 226, 24, 10, 173, 157, 78]), }) ) as Serializer; } export function deserializeExecutorConfig( rawAccount: RpcAccount ): ExecutorConfig { return deserializeAccount( rawAccount, getExecutorConfigAccountDataSerializer() ); } export async function fetchExecutorConfig( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); assertAccountExists(maybeAccount, 'ExecutorConfig'); return deserializeExecutorConfig(maybeAccount); } export async function safeFetchExecutorConfig( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); return maybeAccount.exists ? deserializeExecutorConfig(maybeAccount) : null; } export async function fetchAllExecutorConfig( 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, 'ExecutorConfig'); return deserializeExecutorConfig(maybeAccount); }); } export async function safeFetchAllExecutorConfig( 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) => deserializeExecutorConfig(maybeAccount as RpcAccount) ); } export function getExecutorConfigGpaBuilder( context: Pick ) { const programId = context.programs.getPublicKey( 'executor', '6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn' ); return gpaBuilder(context, programId) .registerFields<{ discriminator: Uint8Array; bump: number; owner: PublicKey; acl: AclArgs; admins: Array; executors: Array; msglibs: Array; paused: boolean; defaultMultiplierBps: number; priceFeed: PublicKey; dstConfigs: Array; }>({ discriminator: [0, bytes({ size: 8 })], bump: [8, u8()], owner: [9, publicKeySerializer()], acl: [41, getAclSerializer()], admins: [null, array(publicKeySerializer())], executors: [null, array(publicKeySerializer())], msglibs: [null, array(publicKeySerializer())], paused: [null, bool()], defaultMultiplierBps: [null, u16()], priceFeed: [null, publicKeySerializer()], dstConfigs: [null, array(getDstConfigSerializer())], }) .deserializeUsing((account) => deserializeExecutorConfig(account) ) .whereField( 'discriminator', new Uint8Array([134, 17, 226, 24, 10, 173, 157, 78]) ); }