/** * 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, getI16Decoder, getI16Encoder, getI64Decoder, getI64Encoder, getMapDecoder, getMapEncoder, getSetDecoder, getSetEncoder, getStructDecoder, getStructEncoder, getU16Decoder, getU16Encoder, getU32Decoder, getU32Encoder, getU64Decoder, getU64Encoder, type Codec, type Decoder, type Encoder, } from '@solana/kit'; import { getBuildingIdDecoder, getBuildingIdEncoder, getBuildingTagDecoder, getBuildingTagEncoder, getCargoIdDecoder, getCargoIdEncoder, getCraftingModifiersDecoder, getCraftingModifiersEncoder, getNameDecoder, getNameEncoder, getRecipeIdDecoder, getRecipeIdEncoder, getResearchTagDecoder, getResearchTagEncoder, getTierDecoder, getTierEncoder, type BuildingId, type BuildingIdArgs, type BuildingTag, type BuildingTagArgs, type CargoId, type CargoIdArgs, type CraftingModifiers, type CraftingModifiersArgs, type Name, type NameArgs, type RecipeId, type RecipeIdArgs, type ResearchTag, type ResearchTagArgs, type Tier, type TierArgs, } from '.'; import { getI54F10Decoder, getI54F10Encoder, getU16F16Decoder, getU16F16Encoder, type I54F10, type I54F10Args, type U16F16, type U16F16Args, } from '../../fixed/codecs'; export type HabBuildingDefinition = { buildingId: BuildingId; name: Name; slots: number; crewSlots: number; neededCrew: number; constructionTime: bigint; resourceStorage: bigint; hubValue: number; minimumTier: Tier; craftingModifiers: CraftingModifiers; craftingJobConcurrency: number; xpValue: U16F16; refunds: Map; constructionCost: Map; researchRequirements: Set; requiredTags: Set; providedTags: Set; netResourceProduction: Map; recipesUnlocked: Set; }; export type HabBuildingDefinitionArgs = { buildingId: BuildingIdArgs; name: NameArgs; slots: number; crewSlots: number; neededCrew: number; constructionTime: number | bigint; resourceStorage: number | bigint; hubValue: number; minimumTier: TierArgs; craftingModifiers: CraftingModifiersArgs; craftingJobConcurrency: number; xpValue: U16F16Args; refunds: Map; constructionCost: Map; researchRequirements: Set; requiredTags: Set; providedTags: Set; netResourceProduction: Map; recipesUnlocked: Set; }; export function getHabBuildingDefinitionEncoder(): Encoder { return getStructEncoder([ ['buildingId', getBuildingIdEncoder()], ['name', getNameEncoder()], ['slots', getU32Encoder()], ['crewSlots', getI16Encoder()], ['neededCrew', getU16Encoder()], ['constructionTime', getI64Encoder()], ['resourceStorage', getU64Encoder()], ['hubValue', getU16Encoder()], ['minimumTier', getTierEncoder()], ['craftingModifiers', getCraftingModifiersEncoder()], ['craftingJobConcurrency', getU16Encoder()], ['xpValue', getU16F16Encoder()], ['refunds', getMapEncoder(getCargoIdEncoder(), getU64Encoder())], ['constructionCost', getMapEncoder(getCargoIdEncoder(), getU64Encoder())], ['researchRequirements', getSetEncoder(getResearchTagEncoder())], ['requiredTags', getSetEncoder(getBuildingTagEncoder())], ['providedTags', getSetEncoder(getBuildingTagEncoder())], [ 'netResourceProduction', getMapEncoder(getCargoIdEncoder(), getI54F10Encoder()), ], ['recipesUnlocked', getSetEncoder(getRecipeIdEncoder())], ]); } export function getHabBuildingDefinitionDecoder(): Decoder { return getStructDecoder([ ['buildingId', getBuildingIdDecoder()], ['name', getNameDecoder()], ['slots', getU32Decoder()], ['crewSlots', getI16Decoder()], ['neededCrew', getU16Decoder()], ['constructionTime', getI64Decoder()], ['resourceStorage', getU64Decoder()], ['hubValue', getU16Decoder()], ['minimumTier', getTierDecoder()], ['craftingModifiers', getCraftingModifiersDecoder()], ['craftingJobConcurrency', getU16Decoder()], ['xpValue', getU16F16Decoder()], ['refunds', getMapDecoder(getCargoIdDecoder(), getU64Decoder())], ['constructionCost', getMapDecoder(getCargoIdDecoder(), getU64Decoder())], ['researchRequirements', getSetDecoder(getResearchTagDecoder())], ['requiredTags', getSetDecoder(getBuildingTagDecoder())], ['providedTags', getSetDecoder(getBuildingTagDecoder())], [ 'netResourceProduction', getMapDecoder(getCargoIdDecoder(), getI54F10Decoder()), ], ['recipesUnlocked', getSetDecoder(getRecipeIdDecoder())], ]); } export function getHabBuildingDefinitionCodec(): Codec< HabBuildingDefinitionArgs, HabBuildingDefinition > { return combineCodec( getHabBuildingDefinitionEncoder(), getHabBuildingDefinitionDecoder(), ); }