/** * 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 { combineCodec, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, } from '@solana/kit'; /** * One track's integer budget parameters, mirrored from the versioned * `xp_config` schema (`xp_config_v1.json`). All fields are unsigned * integers: settlement runs on-chain where float arithmetic is * non-deterministic across validators (spec ยง9a). */ export type XpBudgetParams = { /** Whole XP the track may earn per day (`ceil(annual_xp / 91.25)`). */ maxXpPerDay: bigint; /** Regen numerator: gained = elapsed_s * numerator / denominator. */ regenNumerator: bigint; /** * Regen denominator. Never zero in valid config; settlement defends * with `max(1)`. */ regenDenominator: bigint; /** Whole-XP bank ceiling: one full day of regen banked. */ bankCeiling: bigint; }; export type XpBudgetParamsArgs = { /** Whole XP the track may earn per day (`ceil(annual_xp / 91.25)`). */ maxXpPerDay: number | bigint; /** Regen numerator: gained = elapsed_s * numerator / denominator. */ regenNumerator: number | bigint; /** * Regen denominator. Never zero in valid config; settlement defends * with `max(1)`. */ regenDenominator: number | bigint; /** Whole-XP bank ceiling: one full day of regen banked. */ bankCeiling: number | bigint; }; export function getXpBudgetParamsEncoder(): FixedSizeEncoder { return getStructEncoder([ ['maxXpPerDay', getU64Encoder()], ['regenNumerator', getU64Encoder()], ['regenDenominator', getU64Encoder()], ['bankCeiling', getU64Encoder()], ]); } export function getXpBudgetParamsDecoder(): FixedSizeDecoder { return getStructDecoder([ ['maxXpPerDay', getU64Decoder()], ['regenNumerator', getU64Decoder()], ['regenDenominator', getU64Decoder()], ['bankCeiling', getU64Decoder()], ]); } export function getXpBudgetParamsCodec(): FixedSizeCodec< XpBudgetParamsArgs, XpBudgetParams > { return combineCodec(getXpBudgetParamsEncoder(), getXpBudgetParamsDecoder()); }