/** * 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, getArrayDecoder, getArrayEncoder, getI64Decoder, getI64Encoder, getSetDecoder, getSetEncoder, getStructDecoder, getStructEncoder, getU32Decoder, getU32Encoder, getU8Decoder, getU8Encoder, type Codec, type Decoder, type Encoder, } from '@solana/kit'; import { getFactionDecoder, getFactionEncoder, type Faction, type FactionArgs, } from '@staratlas/dev-profile-faction'; import { getBuildingTagDecoder, getBuildingTagEncoder, getCraftingHabsInfoDecoder, getCraftingHabsInfoEncoder, getLocationTagDecoder, getLocationTagEncoder, getRecipeIdDecoder, getRecipeIdEncoder, getStarbaseLevelDecoder, getStarbaseLevelEncoder, getStarbaseMaxLevelDecoder, getStarbaseMaxLevelEncoder, type BuildingTag, type BuildingTagArgs, type CraftingHabsInfo, type CraftingHabsInfoArgs, type LocationTag, type LocationTagArgs, type RecipeId, type RecipeIdArgs, type StarbaseLevel, type StarbaseLevelArgs, type StarbaseMaxLevel, type StarbaseMaxLevelArgs, } from '.'; import { getU32F32Decoder, getU32F32Encoder, type U32F32, type U32F32Args, } from '../../fixed/codecs'; /** Starbase */ export type Starbase = { /** The faction that owns this starbase. */ owner: Faction; /** The level of the `Starbase`. */ level: StarbaseLevel; /** The level at which local markets are enabled */ localMarketEnableLevel: StarbaseLevel; /** The level at which ship repairs are enabled */ repairEnableLevel: StarbaseLevel; /** The `Starbase` health points. */ hp: number; /** The `Starbase` pending health points */ pendingHp: number; /** The `Starbase` shield points. */ sp: number; /** The time at which SP can resume regenerating */ shieldBreakDelayExpiresAt: bigint; /** The last time the combat was updated */ lastCombatUpdate: bigint; /** The last time the starbase was built or destroyed */ builtDestroyedTimestamp: bigint; /** Crafting hab plots on the starbase. 5x7 grid where rows are corresponding starbase level and columns are crafting hab tier */ craftingHabPlots: Array>; /** Base rent rate for crafting habs on the starbase. 5x7 grid where rows are corresponding starbase level and columns are crafting hab tier */ baseCraftingHabRentRate: Array>; /** Base placement fee for crafting habs on the starbase. 5x7 grid where rows are corresponding starbase level and columns are crafting hab tier */ baseCraftingHabPlacementFee: Array>; /** The max level of the `Starbase` */ starbaseMaxLevel: StarbaseMaxLevel; /** A list of location tags provided by this starbase */ locationTags: Set; /** The tags provided by this starbase for crafting hab buildings. */ buildingTags: Set; /** The recipes that are valid for this starbase */ validRecipes: Set; /** Crafting habs currently placed on this starbase */ craftingHabs: { /** The total size of the unsized bytes in the list */ unsizedLen: number; /** The list of items containing offsets, and potentially extra metadata, for the start of each element in the unsized list */ offsetList: Array<{ offset: number; key: number }>; /** The list of byte offsets for the start of each element in the unsized list */ unsizedList: Array; }; }; export type StarbaseArgs = { /** The faction that owns this starbase. */ owner: FactionArgs; /** The level of the `Starbase`. */ level: StarbaseLevelArgs; /** The level at which local markets are enabled */ localMarketEnableLevel: StarbaseLevelArgs; /** The level at which ship repairs are enabled */ repairEnableLevel: StarbaseLevelArgs; /** The `Starbase` health points. */ hp: number; /** The `Starbase` pending health points */ pendingHp: number; /** The `Starbase` shield points. */ sp: number; /** The time at which SP can resume regenerating */ shieldBreakDelayExpiresAt: number | bigint; /** The last time the combat was updated */ lastCombatUpdate: number | bigint; /** The last time the starbase was built or destroyed */ builtDestroyedTimestamp: number | bigint; /** Crafting hab plots on the starbase. 5x7 grid where rows are corresponding starbase level and columns are crafting hab tier */ craftingHabPlots: Array>; /** Base rent rate for crafting habs on the starbase. 5x7 grid where rows are corresponding starbase level and columns are crafting hab tier */ baseCraftingHabRentRate: Array>; /** Base placement fee for crafting habs on the starbase. 5x7 grid where rows are corresponding starbase level and columns are crafting hab tier */ baseCraftingHabPlacementFee: Array>; /** The max level of the `Starbase` */ starbaseMaxLevel: StarbaseMaxLevelArgs; /** A list of location tags provided by this starbase */ locationTags: Set; /** The tags provided by this starbase for crafting hab buildings. */ buildingTags: Set; /** The recipes that are valid for this starbase */ validRecipes: Set; /** Crafting habs currently placed on this starbase */ craftingHabs: { /** The total size of the unsized bytes in the list */ unsizedLen: number; /** The list of items containing offsets, and potentially extra metadata, for the start of each element in the unsized list */ offsetList: Array<{ offset: number; key: number }>; /** The list of byte offsets for the start of each element in the unsized list */ unsizedList: Array; }; }; export function getStarbaseEncoder(): Encoder { return getStructEncoder([ ['owner', getFactionEncoder()], ['level', getStarbaseLevelEncoder()], ['localMarketEnableLevel', getStarbaseLevelEncoder()], ['repairEnableLevel', getStarbaseLevelEncoder()], ['hp', getU32Encoder()], ['pendingHp', getU32Encoder()], ['sp', getU32Encoder()], ['shieldBreakDelayExpiresAt', getI64Encoder()], ['lastCombatUpdate', getI64Encoder()], ['builtDestroyedTimestamp', getI64Encoder()], [ 'craftingHabPlots', getArrayEncoder(getArrayEncoder(getU32Encoder(), { size: 5 }), { size: 7, }), ], [ 'baseCraftingHabRentRate', getArrayEncoder(getArrayEncoder(getU32F32Encoder(), { size: 5 }), { size: 7, }), ], [ 'baseCraftingHabPlacementFee', getArrayEncoder(getArrayEncoder(getU32F32Encoder(), { size: 5 }), { size: 7, }), ], ['starbaseMaxLevel', getStarbaseMaxLevelEncoder()], ['locationTags', getSetEncoder(getLocationTagEncoder())], ['buildingTags', getSetEncoder(getBuildingTagEncoder())], ['validRecipes', getSetEncoder(getRecipeIdEncoder())], [ 'craftingHabs', getStructEncoder([ ['unsizedLen', getU32Encoder()], [ 'offsetList', getArrayEncoder( getStructEncoder([ ['offset', getU32Encoder()], ['key', getU8Encoder()], ]), ), ], ['unsizedList', getArrayEncoder(getCraftingHabsInfoEncoder())], ]), ], ]); } export function getStarbaseDecoder(): Decoder { return getStructDecoder([ ['owner', getFactionDecoder()], ['level', getStarbaseLevelDecoder()], ['localMarketEnableLevel', getStarbaseLevelDecoder()], ['repairEnableLevel', getStarbaseLevelDecoder()], ['hp', getU32Decoder()], ['pendingHp', getU32Decoder()], ['sp', getU32Decoder()], ['shieldBreakDelayExpiresAt', getI64Decoder()], ['lastCombatUpdate', getI64Decoder()], ['builtDestroyedTimestamp', getI64Decoder()], [ 'craftingHabPlots', getArrayDecoder(getArrayDecoder(getU32Decoder(), { size: 5 }), { size: 7, }), ], [ 'baseCraftingHabRentRate', getArrayDecoder(getArrayDecoder(getU32F32Decoder(), { size: 5 }), { size: 7, }), ], [ 'baseCraftingHabPlacementFee', getArrayDecoder(getArrayDecoder(getU32F32Decoder(), { size: 5 }), { size: 7, }), ], ['starbaseMaxLevel', getStarbaseMaxLevelDecoder()], ['locationTags', getSetDecoder(getLocationTagDecoder())], ['buildingTags', getSetDecoder(getBuildingTagDecoder())], ['validRecipes', getSetDecoder(getRecipeIdDecoder())], [ 'craftingHabs', getStructDecoder([ ['unsizedLen', getU32Decoder()], [ 'offsetList', getArrayDecoder( getStructDecoder([ ['offset', getU32Decoder()], ['key', getU8Decoder()], ]), ), ], ['unsizedList', getArrayDecoder(getCraftingHabsInfoDecoder())], ]), ], ]); } export function getStarbaseCodec(): Codec { return combineCodec(getStarbaseEncoder(), getStarbaseDecoder()); }