/** * 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, getU32Decoder, getU32Encoder, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, } from '@solana/kit'; /** * The six v1 earning rules (`earning_rules` in `xp_config_v1.json`), integer * form. Combat class weights are the program's canonical * `COMBAT_SIZE_POINTS` table (`ShipCounts::get_combat_size`), not config. */ export type XpEarningRulesV1 = { /** §1 Pilot: XP per AU travelled by subwarp (x acting fleet raw ship count). */ pilotXpPerAuSubwarp: number; /** §1 Pilot: XP per AU travelled by warp (x ship count). */ pilotXpPerAuWarp: number; /** §1 Pilot: XP per warp lane traversed (x ship count). */ pilotXpPerWarpLane: number; /** §2 Data: XP per unsuccessful scan (x ship count). */ dataXpPerUnsuccessfulScan: number; /** §2 Data: XP per successful scan (x ship count). */ dataXpPerSuccessfulScan: number; /** §3 Mining: XP per minute of mining (x ship count), floored once with carry. */ miningXpPerMinute: number; /** §4 Combat: XP per destroyed-fleet combat-size point. */ combatXpPerSizeUnit: number; /** §6 Crafting: XP per second of the job's BASE duration (before the crew divisor). */ craftingXpPerBaseSecond: number; /** §5 Building: XP per building tier on placement (designed 0; read, never assumed). */ buildingPlacementXpPerTier: number; /** §5 Building: XP per building tier per full operational day. */ buildingOperationalXpPerTierPerDay: number; }; export type XpEarningRulesV1Args = XpEarningRulesV1; export function getXpEarningRulesV1Encoder(): FixedSizeEncoder { return getStructEncoder([ ['pilotXpPerAuSubwarp', getU32Encoder()], ['pilotXpPerAuWarp', getU32Encoder()], ['pilotXpPerWarpLane', getU32Encoder()], ['dataXpPerUnsuccessfulScan', getU32Encoder()], ['dataXpPerSuccessfulScan', getU32Encoder()], ['miningXpPerMinute', getU32Encoder()], ['combatXpPerSizeUnit', getU32Encoder()], ['craftingXpPerBaseSecond', getU32Encoder()], ['buildingPlacementXpPerTier', getU32Encoder()], ['buildingOperationalXpPerTierPerDay', getU32Encoder()], ]); } export function getXpEarningRulesV1Decoder(): FixedSizeDecoder { return getStructDecoder([ ['pilotXpPerAuSubwarp', getU32Decoder()], ['pilotXpPerAuWarp', getU32Decoder()], ['pilotXpPerWarpLane', getU32Decoder()], ['dataXpPerUnsuccessfulScan', getU32Decoder()], ['dataXpPerSuccessfulScan', getU32Decoder()], ['miningXpPerMinute', getU32Decoder()], ['combatXpPerSizeUnit', getU32Decoder()], ['craftingXpPerBaseSecond', getU32Decoder()], ['buildingPlacementXpPerTier', getU32Decoder()], ['buildingOperationalXpPerTierPerDay', getU32Decoder()], ]); } export function getXpEarningRulesV1Codec(): FixedSizeCodec< XpEarningRulesV1Args, XpEarningRulesV1 > { return combineCodec( getXpEarningRulesV1Encoder(), getXpEarningRulesV1Decoder(), ); }