/** * 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, getBytesDecoder, getBytesEncoder, getMapDecoder, getMapEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, transformEncoder, type Account, type Address, type Codec, type Decoder, type EncodedAccount, type Encoder, type FetchAccountConfig, type FetchAccountsConfig, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array, } from '@solana/kit'; import { findMissionStakeVaultPda, MissionStakeVaultSeeds } from '../pdas'; import { getCargoIdDecoder, getCargoIdEncoder, type CargoId, type CargoIdArgs, } from '../types'; export const MISSION_STAKE_VAULT_DISCRIMINATOR = new Uint8Array([ 86, 39, 130, 102, 182, 152, 18, 251, ]); export function getMissionStakeVaultDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( MISSION_STAKE_VAULT_DISCRIMINATOR, ); } export type MissionStakeVault = { discriminator: ReadonlyUint8Array; version: number; bump: number; gameId: Address; /** The owning `MissionProcess` (the seed component). */ mission: Address; /** Escrowed ATLAS (the player's stake). Same type as `EncounterTreasury.vault`. */ vault: bigint; /** Escrowed resources (the multi-resource stake legs). */ reserves: Map; }; export type MissionStakeVaultArgs = { version: number; bump: number; gameId: Address; /** The owning `MissionProcess` (the seed component). */ mission: Address; /** Escrowed ATLAS (the player's stake). Same type as `EncounterTreasury.vault`. */ vault: number | bigint; /** Escrowed resources (the multi-resource stake legs). */ reserves: Map; }; /** Gets the encoder for {@link MissionStakeVaultArgs} account data. */ export function getMissionStakeVaultEncoder(): Encoder { return transformEncoder( getStructEncoder([ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['version', getU8Encoder()], ['bump', getU8Encoder()], ['gameId', getAddressEncoder()], ['mission', getAddressEncoder()], ['vault', getU64Encoder()], ['reserves', getMapEncoder(getCargoIdEncoder(), getU64Encoder())], ]), (value) => ({ ...value, discriminator: MISSION_STAKE_VAULT_DISCRIMINATOR }), ); } /** Gets the decoder for {@link MissionStakeVault} account data. */ export function getMissionStakeVaultDecoder(): Decoder { return getStructDecoder([ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['version', getU8Decoder()], ['bump', getU8Decoder()], ['gameId', getAddressDecoder()], ['mission', getAddressDecoder()], ['vault', getU64Decoder()], ['reserves', getMapDecoder(getCargoIdDecoder(), getU64Decoder())], ]); } /** Gets the codec for {@link MissionStakeVault} account data. */ export function getMissionStakeVaultCodec(): Codec< MissionStakeVaultArgs, MissionStakeVault > { return combineCodec( getMissionStakeVaultEncoder(), getMissionStakeVaultDecoder(), ); } export function decodeMissionStakeVault( encodedAccount: EncodedAccount, ): Account; export function decodeMissionStakeVault( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodeMissionStakeVault( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): | Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getMissionStakeVaultDecoder(), ); } export async function fetchMissionStakeVault( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeMissionStakeVault(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeMissionStakeVault< TAddress extends string = string, >( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeMissionStakeVault(maybeAccount); } export async function fetchAllMissionStakeVault( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeMissionStakeVault( rpc, addresses, config, ); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeMissionStakeVault( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeMissionStakeVault(maybeAccount), ); } export async function fetchMissionStakeVaultFromSeeds( rpc: Parameters[0], seeds: MissionStakeVaultSeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const maybeAccount = await fetchMaybeMissionStakeVaultFromSeeds( rpc, seeds, config, ); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeMissionStakeVaultFromSeeds( rpc: Parameters[0], seeds: MissionStakeVaultSeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const { programAddress, ...fetchConfig } = config; const [address] = await findMissionStakeVaultPda(seeds, { programAddress }); return await fetchMaybeMissionStakeVault(rpc, address, fetchConfig); }