/** * 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, 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 { findKingSystemTrackerPda, KingSystemTrackerSeeds } from '../pdas'; import { getMinorFactionIdDecoder, getMinorFactionIdEncoder, getSystemIdDecoder, getSystemIdEncoder, type MinorFactionId, type MinorFactionIdArgs, type SystemId, type SystemIdArgs, } from '../types'; export const KING_SYSTEM_TRACKER_DISCRIMINATOR = new Uint8Array([ 106, 127, 42, 151, 31, 125, 246, 254, ]); export function getKingSystemTrackerDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( KING_SYSTEM_TRACKER_DISCRIMINATOR, ); } /** Canonical membership and current effective major-faction ownership for the 69 King systems. */ export type KingSystemTracker = { discriminator: ReadonlyUint8Array; version: number; bump: number; systemCount: number; pad0: number; gameId: Address; systemIds: Array; owners: Array; majorCounts: Array; configuredAt: bigint; reserved: Array; }; export type KingSystemTrackerArgs = { version: number; bump: number; systemCount: number; pad0: number; gameId: Address; systemIds: Array; owners: Array; majorCounts: Array; configuredAt: number | bigint; reserved: Array; }; /** Gets the encoder for {@link KingSystemTrackerArgs} account data. */ export function getKingSystemTrackerEncoder(): FixedSizeEncoder { return transformEncoder( getStructEncoder([ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['version', getU8Encoder()], ['bump', getU8Encoder()], ['systemCount', getU8Encoder()], ['pad0', getU8Encoder()], ['gameId', getAddressEncoder()], ['systemIds', getArrayEncoder(getSystemIdEncoder(), { size: 69 })], ['owners', getArrayEncoder(getMinorFactionIdEncoder(), { size: 69 })], ['majorCounts', getArrayEncoder(getU8Encoder(), { size: 3 })], ['configuredAt', getI64Encoder()], ['reserved', getArrayEncoder(getU8Encoder(), { size: 32 })], ]), (value) => ({ ...value, discriminator: KING_SYSTEM_TRACKER_DISCRIMINATOR }), ); } /** Gets the decoder for {@link KingSystemTracker} account data. */ export function getKingSystemTrackerDecoder(): FixedSizeDecoder { return getStructDecoder([ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['version', getU8Decoder()], ['bump', getU8Decoder()], ['systemCount', getU8Decoder()], ['pad0', getU8Decoder()], ['gameId', getAddressDecoder()], ['systemIds', getArrayDecoder(getSystemIdDecoder(), { size: 69 })], ['owners', getArrayDecoder(getMinorFactionIdDecoder(), { size: 69 })], ['majorCounts', getArrayDecoder(getU8Decoder(), { size: 3 })], ['configuredAt', getI64Decoder()], ['reserved', getArrayDecoder(getU8Decoder(), { size: 32 })], ]); } /** Gets the codec for {@link KingSystemTracker} account data. */ export function getKingSystemTrackerCodec(): FixedSizeCodec< KingSystemTrackerArgs, KingSystemTracker > { return combineCodec( getKingSystemTrackerEncoder(), getKingSystemTrackerDecoder(), ); } export function decodeKingSystemTracker( encodedAccount: EncodedAccount, ): Account; export function decodeKingSystemTracker( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodeKingSystemTracker( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): | Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getKingSystemTrackerDecoder(), ); } export async function fetchKingSystemTracker( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeKingSystemTracker(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeKingSystemTracker< TAddress extends string = string, >( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeKingSystemTracker(maybeAccount); } export async function fetchAllKingSystemTracker( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeKingSystemTracker( rpc, addresses, config, ); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeKingSystemTracker( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeKingSystemTracker(maybeAccount), ); } export async function fetchKingSystemTrackerFromSeeds( rpc: Parameters[0], seeds: KingSystemTrackerSeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const maybeAccount = await fetchMaybeKingSystemTrackerFromSeeds( rpc, seeds, config, ); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeKingSystemTrackerFromSeeds( rpc: Parameters[0], seeds: KingSystemTrackerSeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const { programAddress, ...fetchConfig } = config; const [address] = await findKingSystemTrackerPda(seeds, { programAddress }); return await fetchMaybeKingSystemTracker(rpc, address, fetchConfig); }