/** * 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, u32, u8, } from '@metaplex-foundation/umi/serializers'; import { Acl, AclArgs, DstConfig, DstConfigArgs, Multisig, MultisigArgs, getAclSerializer, getDstConfigSerializer, getMultisigSerializer, } from '../types'; export type DvnConfig = Account; export type DvnConfigAccountData = { discriminator: Uint8Array; vid: number; bump: number; multisig: Multisig; acl: Acl; paused: boolean; msglibs: Array; admins: Array; priceFeed: PublicKey; dstConfigs: Array; defaultMultiplierBps: number; }; export type DvnConfigAccountDataArgs = { vid: number; bump: number; multisig: MultisigArgs; acl: AclArgs; paused: boolean; msglibs: Array; admins: Array; priceFeed: PublicKey; dstConfigs: Array; defaultMultiplierBps: number; }; export function getDvnConfigAccountDataSerializer(): Serializer< DvnConfigAccountDataArgs, DvnConfigAccountData > { return mapSerializer( struct( [ ['discriminator', bytes({ size: 8 })], ['vid', u32()], ['bump', u8()], ['multisig', getMultisigSerializer()], ['acl', getAclSerializer()], ['paused', bool()], ['msglibs', array(publicKeySerializer())], ['admins', array(publicKeySerializer())], ['priceFeed', publicKeySerializer()], ['dstConfigs', array(getDstConfigSerializer())], ['defaultMultiplierBps', u16()], ], { description: 'DvnConfigAccountData' } ), (value) => ({ ...value, discriminator: new Uint8Array([49, 81, 33, 98, 234, 168, 93, 73]), }) ) as Serializer; } export function deserializeDvnConfig(rawAccount: RpcAccount): DvnConfig { return deserializeAccount(rawAccount, getDvnConfigAccountDataSerializer()); } export async function fetchDvnConfig( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); assertAccountExists(maybeAccount, 'DvnConfig'); return deserializeDvnConfig(maybeAccount); } export async function safeFetchDvnConfig( context: Pick, publicKey: PublicKey | Pda, options?: RpcGetAccountOptions ): Promise { const maybeAccount = await context.rpc.getAccount( toPublicKey(publicKey, false), options ); return maybeAccount.exists ? deserializeDvnConfig(maybeAccount) : null; } export async function fetchAllDvnConfig( 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, 'DvnConfig'); return deserializeDvnConfig(maybeAccount); }); } export async function safeFetchAllDvnConfig( 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) => deserializeDvnConfig(maybeAccount as RpcAccount)); } export function getDvnConfigGpaBuilder( context: Pick ) { const programId = context.programs.getPublicKey( 'dvn', 'HtEYV4xB4wvsj5fgTkcfuChYpvGYzgzwvNhgDZQNh7wW' ); return gpaBuilder(context, programId) .registerFields<{ discriminator: Uint8Array; vid: number; bump: number; multisig: MultisigArgs; acl: AclArgs; paused: boolean; msglibs: Array; admins: Array; priceFeed: PublicKey; dstConfigs: Array; defaultMultiplierBps: number; }>({ discriminator: [0, bytes({ size: 8 })], vid: [8, u32()], bump: [12, u8()], multisig: [13, getMultisigSerializer()], acl: [null, getAclSerializer()], paused: [null, bool()], msglibs: [null, array(publicKeySerializer())], admins: [null, array(publicKeySerializer())], priceFeed: [null, publicKeySerializer()], dstConfigs: [null, array(getDstConfigSerializer())], defaultMultiplierBps: [null, u16()], }) .deserializeUsing((account) => deserializeDvnConfig(account)) .whereField( 'discriminator', new Uint8Array([49, 81, 33, 98, 234, 168, 93, 73]) ); }