/** * 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, getStructDecoder, getStructEncoder, getU128Decoder, getU128Encoder, 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 { DemocracyGenerationHistorySeeds, findDemocracyGenerationHistoryPda, } from '../pdas'; import { getGovernanceParamsDecoder, getGovernanceParamsEncoder, getMinorFactionIdDecoder, getMinorFactionIdEncoder, type GovernanceParams, type GovernanceParamsArgs, type MinorFactionId, type MinorFactionIdArgs, } from '../types'; export const DEMOCRACY_GENERATION_HISTORY_DISCRIMINATOR = new Uint8Array([ 123, 17, 116, 124, 93, 233, 80, 12, ]); export function getDemocracyGenerationHistoryDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( DEMOCRACY_GENERATION_HISTORY_DISCRIMINATOR, ); } export type DemocracyGenerationHistory = { discriminator: ReadonlyUint8Array; version: number; bump: number; domain: Array; gameId: Address; system: Address; governance: Address; generation: bigint; starbaseSeqId: bigint; controller: MinorFactionId; enabled: number; startedDay: bigint; openDay: bigint; /** Exclusive endpoint: capture at day d ends this generation before d's close. Zero is live. */ retiredBeforeDay: bigint; retired: number; eligiblePower: bigint; /** * Canonical aggregate after the next close, maintained with each authenticated allocation * edit. Daily progress does not require every depositor to materialize their own position. */ nextPower: bigint; explicitPower: bigint; nextExplicitPower: bigint; weighted: Array; nextWeighted: Array; activeParams: GovernanceParams; weekDays: number; weekSums: Array; rewardIndex: bigint; fundedAtlas: bigint; claimedAtlas: bigint; rewardVault: bigint; reserved: Array; }; export type DemocracyGenerationHistoryArgs = { version: number; bump: number; domain: Array; gameId: Address; system: Address; governance: Address; generation: number | bigint; starbaseSeqId: number | bigint; controller: MinorFactionIdArgs; enabled: number; startedDay: number | bigint; openDay: number | bigint; /** Exclusive endpoint: capture at day d ends this generation before d's close. Zero is live. */ retiredBeforeDay: number | bigint; retired: number; eligiblePower: number | bigint; /** * Canonical aggregate after the next close, maintained with each authenticated allocation * edit. Daily progress does not require every depositor to materialize their own position. */ nextPower: number | bigint; explicitPower: number | bigint; nextExplicitPower: number | bigint; weighted: Array; nextWeighted: Array; activeParams: GovernanceParamsArgs; weekDays: number; weekSums: Array; rewardIndex: number | bigint; fundedAtlas: number | bigint; claimedAtlas: number | bigint; rewardVault: number | bigint; reserved: Array; }; /** Gets the encoder for {@link DemocracyGenerationHistoryArgs} account data. */ export function getDemocracyGenerationHistoryEncoder(): FixedSizeEncoder { return transformEncoder( getStructEncoder([ ['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['version', getU8Encoder()], ['bump', getU8Encoder()], ['domain', getArrayEncoder(getU8Encoder(), { size: 8 })], ['gameId', getAddressEncoder()], ['system', getAddressEncoder()], ['governance', getAddressEncoder()], ['generation', getU64Encoder()], ['starbaseSeqId', getU64Encoder()], ['controller', getMinorFactionIdEncoder()], ['enabled', getU8Encoder()], ['startedDay', getU64Encoder()], ['openDay', getU64Encoder()], ['retiredBeforeDay', getU64Encoder()], ['retired', getU8Encoder()], ['eligiblePower', getU64Encoder()], ['nextPower', getU64Encoder()], ['explicitPower', getU64Encoder()], ['nextExplicitPower', getU64Encoder()], ['weighted', getArrayEncoder(getU128Encoder(), { size: 4 })], ['nextWeighted', getArrayEncoder(getU128Encoder(), { size: 4 })], ['activeParams', getGovernanceParamsEncoder()], ['weekDays', getU8Encoder()], ['weekSums', getArrayEncoder(getU64Encoder(), { size: 4 })], ['rewardIndex', getU128Encoder()], ['fundedAtlas', getU64Encoder()], ['claimedAtlas', getU64Encoder()], ['rewardVault', getU64Encoder()], ['reserved', getArrayEncoder(getU8Encoder(), { size: 32 })], ]), (value) => ({ ...value, discriminator: DEMOCRACY_GENERATION_HISTORY_DISCRIMINATOR, }), ); } /** Gets the decoder for {@link DemocracyGenerationHistory} account data. */ export function getDemocracyGenerationHistoryDecoder(): FixedSizeDecoder { return getStructDecoder([ ['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['version', getU8Decoder()], ['bump', getU8Decoder()], ['domain', getArrayDecoder(getU8Decoder(), { size: 8 })], ['gameId', getAddressDecoder()], ['system', getAddressDecoder()], ['governance', getAddressDecoder()], ['generation', getU64Decoder()], ['starbaseSeqId', getU64Decoder()], ['controller', getMinorFactionIdDecoder()], ['enabled', getU8Decoder()], ['startedDay', getU64Decoder()], ['openDay', getU64Decoder()], ['retiredBeforeDay', getU64Decoder()], ['retired', getU8Decoder()], ['eligiblePower', getU64Decoder()], ['nextPower', getU64Decoder()], ['explicitPower', getU64Decoder()], ['nextExplicitPower', getU64Decoder()], ['weighted', getArrayDecoder(getU128Decoder(), { size: 4 })], ['nextWeighted', getArrayDecoder(getU128Decoder(), { size: 4 })], ['activeParams', getGovernanceParamsDecoder()], ['weekDays', getU8Decoder()], ['weekSums', getArrayDecoder(getU64Decoder(), { size: 4 })], ['rewardIndex', getU128Decoder()], ['fundedAtlas', getU64Decoder()], ['claimedAtlas', getU64Decoder()], ['rewardVault', getU64Decoder()], ['reserved', getArrayDecoder(getU8Decoder(), { size: 32 })], ]); } /** Gets the codec for {@link DemocracyGenerationHistory} account data. */ export function getDemocracyGenerationHistoryCodec(): FixedSizeCodec< DemocracyGenerationHistoryArgs, DemocracyGenerationHistory > { return combineCodec( getDemocracyGenerationHistoryEncoder(), getDemocracyGenerationHistoryDecoder(), ); } export function decodeDemocracyGenerationHistory< TAddress extends string = string, >( encodedAccount: EncodedAccount, ): Account; export function decodeDemocracyGenerationHistory< TAddress extends string = string, >( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodeDemocracyGenerationHistory< TAddress extends string = string, >( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): | Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getDemocracyGenerationHistoryDecoder(), ); } export async function fetchDemocracyGenerationHistory< TAddress extends string = string, >( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeDemocracyGenerationHistory( rpc, address, config, ); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeDemocracyGenerationHistory< TAddress extends string = string, >( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeDemocracyGenerationHistory(maybeAccount); } export async function fetchAllDemocracyGenerationHistory( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeDemocracyGenerationHistory( rpc, addresses, config, ); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeDemocracyGenerationHistory( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeDemocracyGenerationHistory(maybeAccount), ); } export async function fetchDemocracyGenerationHistoryFromSeeds( rpc: Parameters[0], seeds: DemocracyGenerationHistorySeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const maybeAccount = await fetchMaybeDemocracyGenerationHistoryFromSeeds( rpc, seeds, config, ); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeDemocracyGenerationHistoryFromSeeds( rpc: Parameters[0], seeds: DemocracyGenerationHistorySeeds, config: FetchAccountConfig & { programAddress?: Address } = {}, ): Promise> { const { programAddress, ...fetchConfig } = config; const [address] = await findDemocracyGenerationHistoryPda(seeds, { programAddress, }); return await fetchMaybeDemocracyGenerationHistory(rpc, address, fetchConfig); }