/** * 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, getMapDecoder, getMapEncoder, getSetDecoder, getSetEncoder, getStructDecoder, getStructEncoder, getU32Decoder, getU32Encoder, getU64Decoder, getU64Encoder, type Codec, type Decoder, type Encoder, } from '@solana/kit'; import { getCargoIdDecoder, getCargoIdEncoder, getCharacterModifierDecoder, getCharacterModifierEncoder, getNameDecoder, getNameEncoder, getResearchNodeIdDecoder, getResearchNodeIdEncoder, getResearchTagDecoder, getResearchTagEncoder, getXpCategoryDecoder, getXpCategoryEncoder, getXpCostDecoder, getXpCostEncoder, type CargoId, type CargoIdArgs, type CharacterModifier, type CharacterModifierArgs, type Name, type NameArgs, type ResearchNodeId, type ResearchNodeIdArgs, type ResearchTag, type ResearchTagArgs, type XpCategory, type XpCategoryArgs, type XpCost, type XpCostArgs, } from '.'; export type ResearchNode = { id: ResearchNodeId; name: Name; atlasCost: bigint; /** Maximum unlock level. A value of 1 is a normal one-time node; 0 means unlimited. */ maxLevel: number; /** Linear per-level economic cost increase in basis points, applied to cargo and ATLAS costs. */ costGrowthBps: number; cargoCost: Map; requiredTags: Set; xpCost: Map; modifier: CharacterModifier; }; export type ResearchNodeArgs = { id: ResearchNodeIdArgs; name: NameArgs; atlasCost: number | bigint; /** Maximum unlock level. A value of 1 is a normal one-time node; 0 means unlimited. */ maxLevel: number; /** Linear per-level economic cost increase in basis points, applied to cargo and ATLAS costs. */ costGrowthBps: number; cargoCost: Map; requiredTags: Set; xpCost: Map; modifier: CharacterModifierArgs; }; export function getResearchNodeEncoder(): Encoder { return getStructEncoder([ ['id', getResearchNodeIdEncoder()], ['name', getNameEncoder()], ['atlasCost', getU64Encoder()], ['maxLevel', getU32Encoder()], ['costGrowthBps', getU32Encoder()], ['cargoCost', getMapEncoder(getCargoIdEncoder(), getU64Encoder())], ['requiredTags', getSetEncoder(getResearchTagEncoder())], ['xpCost', getMapEncoder(getXpCategoryEncoder(), getXpCostEncoder())], ['modifier', getCharacterModifierEncoder()], ]); } export function getResearchNodeDecoder(): Decoder { return getStructDecoder([ ['id', getResearchNodeIdDecoder()], ['name', getNameDecoder()], ['atlasCost', getU64Decoder()], ['maxLevel', getU32Decoder()], ['costGrowthBps', getU32Decoder()], ['cargoCost', getMapDecoder(getCargoIdDecoder(), getU64Decoder())], ['requiredTags', getSetDecoder(getResearchTagDecoder())], ['xpCost', getMapDecoder(getXpCategoryDecoder(), getXpCostDecoder())], ['modifier', getCharacterModifierDecoder()], ]); } export function getResearchNodeCodec(): Codec { return combineCodec(getResearchNodeEncoder(), getResearchNodeDecoder()); }