/** * 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, getU128Decoder, getU128Encoder, getU32Decoder, getU32Encoder, 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 { findStarbaseGovernancePda, StarbaseGovernanceSeeds } from '../pdas'; import { getGovernanceBoundsDecoder, getGovernanceBoundsEncoder, getGovernanceParamsDecoder, getGovernanceParamsEncoder, getMinorFactionIdDecoder, getMinorFactionIdEncoder, type GovernanceBounds, type GovernanceBoundsArgs, type GovernanceParams, type GovernanceParamsArgs, type MinorFactionId, type MinorFactionIdArgs, } from '../types'; export const STARBASE_GOVERNANCE_DISCRIMINATOR = new Uint8Array([ 72, 237, 20, 111, 92, 131, 191, 151, ]); export function getStarbaseGovernanceDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( STARBASE_GOVERNANCE_DISCRIMINATOR, ); } export type StarbaseGovernance = { discriminator: ReadonlyUint8Array; version: number; gameId: Address; system: Address; registry: Address; previousGovernance: Address; successorGovernance: Address; starbaseSeqId: bigint; /** Faction controlling this immutable starbase generation. */ controllerFaction: MinorFactionId; bump: number; enabled: number; governanceLevel: number; /** Duration of a fee/reward-policy voting window. */ voteEpochDurationSecs: number; /** Duration between permissionless reward-index settlements. */ rewardEpochDurationSecs: number; currentVoteEpoch: bigint; currentRewardEpoch: bigint; pendingActivationVoteEpoch: bigint; maxPvpPerCrew: bigint; minQuorumPower: bigint; bounds: GovernanceBounds; activeParams: GovernanceParams; pendingParams: GovernanceParams; votePower: bigint; activeDelegatedPower: bigint; craftingFeeWeightedSum: bigint; localMarketFeeWeightedSum: bigint; localTreasuryShareWeightedSum: bigint; treasuryDistributionWeightedSum: bigint; }; export type StarbaseGovernanceArgs = { version: number; gameId: Address; system: Address; registry: Address; previousGovernance: Address; successorGovernance: Address; starbaseSeqId: number | bigint; /** Faction controlling this immutable starbase generation. */ controllerFaction: MinorFactionIdArgs; bump: number; enabled: number; governanceLevel: number; /** Duration of a fee/reward-policy voting window. */ voteEpochDurationSecs: number; /** Duration between permissionless reward-index settlements. */ rewardEpochDurationSecs: number; currentVoteEpoch: number | bigint; currentRewardEpoch: number | bigint; pendingActivationVoteEpoch: number | bigint; maxPvpPerCrew: number | bigint; minQuorumPower: number | bigint; bounds: GovernanceBoundsArgs; activeParams: GovernanceParamsArgs; pendingParams: GovernanceParamsArgs; votePower: number | bigint; activeDelegatedPower: number | bigint; craftingFeeWeightedSum: number | bigint; localMarketFeeWeightedSum: number | bigint; localTreasuryShareWeightedSum: number | bigint; treasuryDistributionWeightedSum: number | bigint; }; /** Gets the encoder for {@link StarbaseGovernanceArgs} account data. */ export function getStarbaseGovernanceEncoder(): FixedSizeEncoder { return transformEncoder( getStructEncoder([ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['version', getU8Encoder()], ['gameId', getAddressEncoder()], ['system', getAddressEncoder()], ['registry', getAddressEncoder()], ['previousGovernance', getAddressEncoder()], ['successorGovernance', getAddressEncoder()], ['starbaseSeqId', getU64Encoder()], ['controllerFaction', getMinorFactionIdEncoder()], ['bump', getU8Encoder()], ['enabled', getU8Encoder()], ['governanceLevel', getU8Encoder()], ['voteEpochDurationSecs', getU32Encoder()], ['rewardEpochDurationSecs', getU32Encoder()], ['currentVoteEpoch', getU64Encoder()], ['currentRewardEpoch', getU64Encoder()], ['pendingActivationVoteEpoch', getU64Encoder()], ['maxPvpPerCrew', getU64Encoder()], ['minQuorumPower', getU64Encoder()], ['bounds', getGovernanceBoundsEncoder()], ['activeParams', getGovernanceParamsEncoder()], ['pendingParams', getGovernanceParamsEncoder()], ['votePower', getU64Encoder()], ['activeDelegatedPower', getU64Encoder()], ['craftingFeeWeightedSum', getU128Encoder()], ['localMarketFeeWeightedSum', getU128Encoder()], ['localTreasuryShareWeightedSum', getU128Encoder()], ['treasuryDistributionWeightedSum', getU128Encoder()], ]), (value) => ({ ...value, discriminator: STARBASE_GOVERNANCE_DISCRIMINATOR }), ); } /** Gets the decoder for {@link StarbaseGovernance} account data. */ export function getStarbaseGovernanceDecoder(): FixedSizeDecoder { return getStructDecoder([ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['version', getU8Decoder()], ['gameId', getAddressDecoder()], ['system', getAddressDecoder()], ['registry', getAddressDecoder()], ['previousGovernance', getAddressDecoder()], ['successorGovernance', getAddressDecoder()], ['starbaseSeqId', getU64Decoder()], ['controllerFaction', getMinorFactionIdDecoder()], ['bump', getU8Decoder()], ['enabled', getU8Decoder()], ['governanceLevel', getU8Decoder()], ['voteEpochDurationSecs', getU32Decoder()], ['rewardEpochDurationSecs', getU32Decoder()], ['currentVoteEpoch', getU64Decoder()], ['currentRewardEpoch', getU64Decoder()], ['pendingActivationVoteEpoch', getU64Decoder()], ['maxPvpPerCrew', getU64Decoder()], ['minQuorumPower', getU64Decoder()], ['bounds', getGovernanceBoundsDecoder()], ['activeParams', getGovernanceParamsDecoder()], ['pendingParams', getGovernanceParamsDecoder()], ['votePower', getU64Decoder()], ['activeDelegatedPower', getU64Decoder()], ['craftingFeeWeightedSum', getU128Decoder()], ['localMarketFeeWeightedSum', getU128Decoder()], ['localTreasuryShareWeightedSum', getU128Decoder()], ['treasuryDistributionWeightedSum', getU128Decoder()], ]); } /** Gets the codec for {@link StarbaseGovernance} account data. */ export function getStarbaseGovernanceCodec(): FixedSizeCodec< StarbaseGovernanceArgs, StarbaseGovernance > { return combineCodec( getStarbaseGovernanceEncoder(), getStarbaseGovernanceDecoder(), ); } export function decodeStarbaseGovernance( encodedAccount: EncodedAccount, ): Account; export function decodeStarbaseGovernance( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodeStarbaseGovernance( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): | Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getStarbaseGovernanceDecoder(), ); } export async function fetchStarbaseGovernance( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeStarbaseGovernance(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeStarbaseGovernance< TAddress extends string = string, >( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeStarbaseGovernance(maybeAccount); } export async function fetchAllStarbaseGovernance( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeStarbaseGovernance( rpc, addresses, config, ); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeStarbaseGovernance( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeStarbaseGovernance(maybeAccount), ); } export async function fetchStarbaseGovernanceFromSeeds( rpc: Parameters[0], seeds: StarbaseGovernanceSeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const maybeAccount = await fetchMaybeStarbaseGovernanceFromSeeds( rpc, seeds, config, ); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeStarbaseGovernanceFromSeeds( rpc: Parameters[0], seeds: StarbaseGovernanceSeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const { programAddress, ...fetchConfig } = config; const [address] = await findStarbaseGovernancePda(seeds, { programAddress }); return await fetchMaybeStarbaseGovernance(rpc, address, fetchConfig); }