/** * This code was AUTOGENERATED using the Codama library. * Please DO NOT EDIT THIS FILE, instead use visitors * to add features, then rerun Codama to update it. * * @see https://github.com/codama-idl/codama */ import { assertAccountExists, assertAccountsExist, combineCodec, decodeAccount, fetchEncodedAccount, fetchEncodedAccounts, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, getBooleanDecoder, getBooleanEncoder, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, transformEncoder, type Account, type Address, type EncodedAccount, type FetchAccountConfig, type FetchAccountsConfig, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array, } from "@solana/kit"; import { getAssetsDecoder, getAssetsEncoder, getFundingRateStateDecoder, getFundingRateStateEncoder, getOracleParamsDecoder, getOracleParamsEncoder, getPermissionsDecoder, getPermissionsEncoder, getPricingParamsDecoder, getPricingParamsEncoder, type Assets, type AssetsArgs, type FundingRateState, type FundingRateStateArgs, type OracleParams, type OracleParamsArgs, type Permissions, type PermissionsArgs, type PricingParams, type PricingParamsArgs, } from "../types"; export const CUSTODY_DISCRIMINATOR = new Uint8Array([ 1, 184, 48, 81, 93, 131, 63, 145, ]); export function getCustodyDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(CUSTODY_DISCRIMINATOR); } export type Custody = { discriminator: ReadonlyUint8Array; pool: Address; mint: Address; tokenAccount: Address; decimals: number; isStable: boolean; oracle: OracleParams; pricing: PricingParams; permissions: Permissions; targetRatioBps: bigint; assets: Assets; fundingRateState: FundingRateState; bump: number; tokenAccountBump: number; }; export type CustodyArgs = { pool: Address; mint: Address; tokenAccount: Address; decimals: number; isStable: boolean; oracle: OracleParamsArgs; pricing: PricingParamsArgs; permissions: PermissionsArgs; targetRatioBps: number | bigint; assets: AssetsArgs; fundingRateState: FundingRateStateArgs; bump: number; tokenAccountBump: number; }; /** Gets the encoder for {@link CustodyArgs} account data. */ export function getCustodyEncoder(): FixedSizeEncoder { return transformEncoder( getStructEncoder([ ["discriminator", fixEncoderSize(getBytesEncoder(), 8)], ["pool", getAddressEncoder()], ["mint", getAddressEncoder()], ["tokenAccount", getAddressEncoder()], ["decimals", getU8Encoder()], ["isStable", getBooleanEncoder()], ["oracle", getOracleParamsEncoder()], ["pricing", getPricingParamsEncoder()], ["permissions", getPermissionsEncoder()], ["targetRatioBps", getU64Encoder()], ["assets", getAssetsEncoder()], ["fundingRateState", getFundingRateStateEncoder()], ["bump", getU8Encoder()], ["tokenAccountBump", getU8Encoder()], ]), (value) => ({ ...value, discriminator: CUSTODY_DISCRIMINATOR }), ); } /** Gets the decoder for {@link Custody} account data. */ export function getCustodyDecoder(): FixedSizeDecoder { return getStructDecoder([ ["discriminator", fixDecoderSize(getBytesDecoder(), 8)], ["pool", getAddressDecoder()], ["mint", getAddressDecoder()], ["tokenAccount", getAddressDecoder()], ["decimals", getU8Decoder()], ["isStable", getBooleanDecoder()], ["oracle", getOracleParamsDecoder()], ["pricing", getPricingParamsDecoder()], ["permissions", getPermissionsDecoder()], ["targetRatioBps", getU64Decoder()], ["assets", getAssetsDecoder()], ["fundingRateState", getFundingRateStateDecoder()], ["bump", getU8Decoder()], ["tokenAccountBump", getU8Decoder()], ]); } /** Gets the codec for {@link Custody} account data. */ export function getCustodyCodec(): FixedSizeCodec { return combineCodec(getCustodyEncoder(), getCustodyDecoder()); } export function decodeCustody( encodedAccount: EncodedAccount, ): Account; export function decodeCustody( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodeCustody( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getCustodyDecoder(), ); } export async function fetchCustody( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeCustody(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeCustody( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeCustody(maybeAccount); } export async function fetchAllCustody( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeCustody(rpc, addresses, config); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeCustody( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeCustody(maybeAccount)); } export function getCustodySize(): number { return 296; }