/** * 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, getStructDecoder, getStructEncoder, 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 { getBuildingDefinitionsDecoder, getBuildingDefinitionsEncoder, getCargoDefinitionsDecoder, getCargoDefinitionsEncoder, getClaimStakeDefinitionsDecoder, getClaimStakeDefinitionsEncoder, getCombatConfigDecoder, getCombatConfigEncoder, getCraftingHabDefinitionsDecoder, getCraftingHabDefinitionsEncoder, getCurrenciesDecoder, getCurrenciesEncoder, getHabBuildingDefinitionsDecoder, getHabBuildingDefinitionsEncoder, getResearchTreeDefinitionsDecoder, getResearchTreeDefinitionsEncoder, getResourcesDecoder, getResourcesEncoder, getShipDefinitionsDecoder, getShipDefinitionsEncoder, getStimulantDefinitionsDecoder, getStimulantDefinitionsEncoder, getXpDefinitionsDecoder, getXpDefinitionsEncoder, type BuildingDefinitions, type BuildingDefinitionsArgs, type CargoDefinitions, type CargoDefinitionsArgs, type ClaimStakeDefinitions, type ClaimStakeDefinitionsArgs, type CombatConfig, type CombatConfigArgs, type CraftingHabDefinitions, type CraftingHabDefinitionsArgs, type Currencies, type CurrenciesArgs, type HabBuildingDefinitions, type HabBuildingDefinitionsArgs, type ResearchTreeDefinitions, type ResearchTreeDefinitionsArgs, type Resources, type ResourcesArgs, type ShipDefinitions, type ShipDefinitionsArgs, type StimulantDefinitions, type StimulantDefinitionsArgs, type XpDefinitions, type XpDefinitionsArgs, } from '../types'; export const GAME_DISCRIMINATOR = new Uint8Array([ 27, 90, 166, 125, 74, 100, 121, 18, ]); export function getGameDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(GAME_DISCRIMINATOR); } export type Game = { discriminator: ReadonlyUint8Array; /** The data version of this account. */ version: number; /** The player profile that manages this Game. */ profile: Address; /** token resources */ resources: Resources; /** currency related settings */ currencies: Currencies; /** Combat configuration */ combat: CombatConfig; /** Crew program config account used for crew import/export flows. */ crewConfig: Address; shipDefinitions: ShipDefinitions; cargoDefinitions: CargoDefinitions; claimStakeDefinitions: ClaimStakeDefinitions; buildingDefinitions: BuildingDefinitions; craftingHabDefinitions: CraftingHabDefinitions; habBuildingDefinitions: HabBuildingDefinitions; xpDefinitions: XpDefinitions; researchTreeDefinitions: ResearchTreeDefinitions; stimulantDefinitions: StimulantDefinitions; }; export type GameArgs = { /** The data version of this account. */ version: number; /** The player profile that manages this Game. */ profile: Address; /** token resources */ resources: ResourcesArgs; /** currency related settings */ currencies: CurrenciesArgs; /** Combat configuration */ combat: CombatConfigArgs; /** Crew program config account used for crew import/export flows. */ crewConfig: Address; shipDefinitions: ShipDefinitionsArgs; cargoDefinitions: CargoDefinitionsArgs; claimStakeDefinitions: ClaimStakeDefinitionsArgs; buildingDefinitions: BuildingDefinitionsArgs; craftingHabDefinitions: CraftingHabDefinitionsArgs; habBuildingDefinitions: HabBuildingDefinitionsArgs; xpDefinitions: XpDefinitionsArgs; researchTreeDefinitions: ResearchTreeDefinitionsArgs; stimulantDefinitions: StimulantDefinitionsArgs; }; /** Gets the encoder for {@link GameArgs} account data. */ export function getGameEncoder(): Encoder { return transformEncoder( getStructEncoder([ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['version', getU8Encoder()], ['profile', getAddressEncoder()], ['resources', getResourcesEncoder()], ['currencies', getCurrenciesEncoder()], ['combat', getCombatConfigEncoder()], ['crewConfig', getAddressEncoder()], ['shipDefinitions', getShipDefinitionsEncoder()], ['cargoDefinitions', getCargoDefinitionsEncoder()], ['claimStakeDefinitions', getClaimStakeDefinitionsEncoder()], ['buildingDefinitions', getBuildingDefinitionsEncoder()], ['craftingHabDefinitions', getCraftingHabDefinitionsEncoder()], ['habBuildingDefinitions', getHabBuildingDefinitionsEncoder()], ['xpDefinitions', getXpDefinitionsEncoder()], ['researchTreeDefinitions', getResearchTreeDefinitionsEncoder()], ['stimulantDefinitions', getStimulantDefinitionsEncoder()], ]), (value) => ({ ...value, discriminator: GAME_DISCRIMINATOR }), ); } /** Gets the decoder for {@link Game} account data. */ export function getGameDecoder(): Decoder { return getStructDecoder([ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['version', getU8Decoder()], ['profile', getAddressDecoder()], ['resources', getResourcesDecoder()], ['currencies', getCurrenciesDecoder()], ['combat', getCombatConfigDecoder()], ['crewConfig', getAddressDecoder()], ['shipDefinitions', getShipDefinitionsDecoder()], ['cargoDefinitions', getCargoDefinitionsDecoder()], ['claimStakeDefinitions', getClaimStakeDefinitionsDecoder()], ['buildingDefinitions', getBuildingDefinitionsDecoder()], ['craftingHabDefinitions', getCraftingHabDefinitionsDecoder()], ['habBuildingDefinitions', getHabBuildingDefinitionsDecoder()], ['xpDefinitions', getXpDefinitionsDecoder()], ['researchTreeDefinitions', getResearchTreeDefinitionsDecoder()], ['stimulantDefinitions', getStimulantDefinitionsDecoder()], ]); } /** Gets the codec for {@link Game} account data. */ export function getGameCodec(): Codec { return combineCodec(getGameEncoder(), getGameDecoder()); } export function decodeGame( encodedAccount: EncodedAccount, ): Account; export function decodeGame( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodeGame( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getGameDecoder(), ); } export async function fetchGame( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeGame(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeGame( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeGame(maybeAccount); } export async function fetchAllGame( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeGame(rpc, addresses, config); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeGame( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeGame(maybeAccount)); }