/** * 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, getArrayDecoder, getArrayEncoder, getBytesDecoder, getBytesEncoder, getI64Decoder, getI64Encoder, 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 { findRentSettlementEvalPda, RentSettlementEvalSeeds } from '../pdas'; import { getPackedEvalCoreDecoder, getPackedEvalCoreEncoder, type PackedEvalCore, type PackedEvalCoreArgs, } from '../types'; export const RENT_SETTLEMENT_EVAL_DISCRIMINATOR = new Uint8Array([ 147, 22, 229, 15, 43, 227, 184, 21, ]); export function getRentSettlementEvalDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( RENT_SETTLEMENT_EVAL_DISCRIMINATOR, ); } /** One settlement evaluation of one stake. */ export type RentSettlementEval = { discriminator: ReadonlyUint8Array; version: number; bump: number; domain: Array; gameId: Address; stake: Address; nonce: bigint; /** The authority incarnation the evaluation was begun under. */ incarnation: bigint; /** Who paid this account's rent (refunded to them when it closes). */ funder: Address; /** The three source keys PINNED at Begin (GRID body, LEVEL system id, DEF definition id). */ sourceKeys: Array
; /** 1 once finalized; the result below is then final (idempotent). */ finalized: number; debit: bigint; newClock: bigint; reached: number; saturated: number; /** The live paid clock / balance revision the result was computed against. */ finalizedPaidClock: bigint; finalizedBalanceRevision: bigint; core: PackedEvalCore; /** Additive growth budget — carve typed fields from the FRONT; NEVER append. */ reserved: Array; }; export type RentSettlementEvalArgs = { version: number; bump: number; domain: Array; gameId: Address; stake: Address; nonce: number | bigint; /** The authority incarnation the evaluation was begun under. */ incarnation: number | bigint; /** Who paid this account's rent (refunded to them when it closes). */ funder: Address; /** The three source keys PINNED at Begin (GRID body, LEVEL system id, DEF definition id). */ sourceKeys: Array
; /** 1 once finalized; the result below is then final (idempotent). */ finalized: number; debit: number | bigint; newClock: number | bigint; reached: number; saturated: number; /** The live paid clock / balance revision the result was computed against. */ finalizedPaidClock: number | bigint; finalizedBalanceRevision: number | bigint; core: PackedEvalCoreArgs; /** Additive growth budget — carve typed fields from the FRONT; NEVER append. */ reserved: Array; }; /** Gets the encoder for {@link RentSettlementEvalArgs} account data. */ export function getRentSettlementEvalEncoder(): FixedSizeEncoder { return transformEncoder( getStructEncoder([ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['version', getU8Encoder()], ['bump', getU8Encoder()], ['domain', getArrayEncoder(getU8Encoder(), { size: 8 })], ['gameId', getAddressEncoder()], ['stake', getAddressEncoder()], ['nonce', getU64Encoder()], ['incarnation', getU64Encoder()], ['funder', getAddressEncoder()], ['sourceKeys', getArrayEncoder(getAddressEncoder(), { size: 3 })], ['finalized', getU8Encoder()], ['debit', getU64Encoder()], ['newClock', getI64Encoder()], ['reached', getU8Encoder()], ['saturated', getU8Encoder()], ['finalizedPaidClock', getI64Encoder()], ['finalizedBalanceRevision', getU64Encoder()], ['core', getPackedEvalCoreEncoder()], ['reserved', getArrayEncoder(getU8Encoder(), { size: 64 })], ]), (value) => ({ ...value, discriminator: RENT_SETTLEMENT_EVAL_DISCRIMINATOR, }), ); } /** Gets the decoder for {@link RentSettlementEval} account data. */ export function getRentSettlementEvalDecoder(): FixedSizeDecoder { return getStructDecoder([ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['version', getU8Decoder()], ['bump', getU8Decoder()], ['domain', getArrayDecoder(getU8Decoder(), { size: 8 })], ['gameId', getAddressDecoder()], ['stake', getAddressDecoder()], ['nonce', getU64Decoder()], ['incarnation', getU64Decoder()], ['funder', getAddressDecoder()], ['sourceKeys', getArrayDecoder(getAddressDecoder(), { size: 3 })], ['finalized', getU8Decoder()], ['debit', getU64Decoder()], ['newClock', getI64Decoder()], ['reached', getU8Decoder()], ['saturated', getU8Decoder()], ['finalizedPaidClock', getI64Decoder()], ['finalizedBalanceRevision', getU64Decoder()], ['core', getPackedEvalCoreDecoder()], ['reserved', getArrayDecoder(getU8Decoder(), { size: 64 })], ]); } /** Gets the codec for {@link RentSettlementEval} account data. */ export function getRentSettlementEvalCodec(): FixedSizeCodec< RentSettlementEvalArgs, RentSettlementEval > { return combineCodec( getRentSettlementEvalEncoder(), getRentSettlementEvalDecoder(), ); } export function decodeRentSettlementEval( encodedAccount: EncodedAccount, ): Account; export function decodeRentSettlementEval( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodeRentSettlementEval( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): | Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getRentSettlementEvalDecoder(), ); } export async function fetchRentSettlementEval( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeRentSettlementEval(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeRentSettlementEval< TAddress extends string = string, >( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeRentSettlementEval(maybeAccount); } export async function fetchAllRentSettlementEval( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeRentSettlementEval( rpc, addresses, config, ); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeRentSettlementEval( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeRentSettlementEval(maybeAccount), ); } export async function fetchRentSettlementEvalFromSeeds( rpc: Parameters[0], seeds: RentSettlementEvalSeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const maybeAccount = await fetchMaybeRentSettlementEvalFromSeeds( rpc, seeds, config, ); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeRentSettlementEvalFromSeeds( rpc: Parameters[0], seeds: RentSettlementEvalSeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const { programAddress, ...fetchConfig } = config; const [address] = await findRentSettlementEvalPda(seeds, { programAddress }); return await fetchMaybeRentSettlementEval(rpc, address, fetchConfig); }