/** * 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, getBooleanDecoder, getBooleanEncoder, getMapDecoder, getMapEncoder, getSetDecoder, getSetEncoder, getStructDecoder, getStructEncoder, getU16Decoder, getU16Encoder, getU32Decoder, getU32Encoder, type Codec, type Decoder, type Encoder, } from '@solana/kit'; import { getCargoCategoryIdDecoder, getCargoCategoryIdEncoder, getCargoIdDecoder, getCargoIdEncoder, getOptionalTierDecoder, getOptionalTierEncoder, getResearchTagDecoder, getResearchTagEncoder, getRiskZoneCheckedDecoder, getRiskZoneCheckedEncoder, getSizeClassDecoder, getSizeClassEncoder, type CargoCategoryId, type CargoCategoryIdArgs, type CargoId, type CargoIdArgs, type OptionalTier, type OptionalTierArgs, type ResearchTag, type ResearchTagArgs, type RiskZoneChecked, type RiskZoneCheckedArgs, type SizeClass, type SizeClassArgs, } from '.'; import { getI32F32Decoder, getI32F32Encoder, getU16F48Decoder, getU16F48Encoder, type I32F32, type I32F32Args, type U16F48, type U16F48Args, } from '../../fixed/codecs'; export type CharacterModifier = { fleetSize: number; fleetConcurrency: number; respawnTimeModifier: I32F32; warpLaneFeeModifier: I32F32; warpSpeedModifier: I32F32; subwarpSpeedModifier: I32F32; warpCooldownModifier: I32F32; craftingEfficiencyModifier: I32F32; craftingTimeModifier: I32F32; craftingJobConcurrencyBonus: number; maxResidentialPlotTier: OptionalTier; maxResidentialPlots: number; maxProductivePlotTier: OptionalTier; maxProductivePlots: number; securityZoneAccess: RiskZoneChecked; enemyFactionZoneAccess: boolean; maxDailyStreakLength: number; maxShipSize: SizeClass; /** Data Runner research multiplier for scan loot. Base 1.0, additive combine. */ scanPowerModifier: I32F32; /** Data Runner research multiplier for scan cooldown. Base 1.0, additive combine. */ scanCoolDownModifier: I32F32; researchTags: Set; cargoCategories: Set; rareMineralDiscovery: Map; }; export type CharacterModifierArgs = { fleetSize: number; fleetConcurrency: number; respawnTimeModifier: I32F32Args; warpLaneFeeModifier: I32F32Args; warpSpeedModifier: I32F32Args; subwarpSpeedModifier: I32F32Args; warpCooldownModifier: I32F32Args; craftingEfficiencyModifier: I32F32Args; craftingTimeModifier: I32F32Args; craftingJobConcurrencyBonus: number; maxResidentialPlotTier: OptionalTierArgs; maxResidentialPlots: number; maxProductivePlotTier: OptionalTierArgs; maxProductivePlots: number; securityZoneAccess: RiskZoneCheckedArgs; enemyFactionZoneAccess: boolean; maxDailyStreakLength: number; maxShipSize: SizeClassArgs; /** Data Runner research multiplier for scan loot. Base 1.0, additive combine. */ scanPowerModifier: I32F32Args; /** Data Runner research multiplier for scan cooldown. Base 1.0, additive combine. */ scanCoolDownModifier: I32F32Args; researchTags: Set; cargoCategories: Set; rareMineralDiscovery: Map; }; export function getCharacterModifierEncoder(): Encoder { return getStructEncoder([ ['fleetSize', getU32Encoder()], ['fleetConcurrency', getU32Encoder()], ['respawnTimeModifier', getI32F32Encoder()], ['warpLaneFeeModifier', getI32F32Encoder()], ['warpSpeedModifier', getI32F32Encoder()], ['subwarpSpeedModifier', getI32F32Encoder()], ['warpCooldownModifier', getI32F32Encoder()], ['craftingEfficiencyModifier', getI32F32Encoder()], ['craftingTimeModifier', getI32F32Encoder()], ['craftingJobConcurrencyBonus', getU16Encoder()], ['maxResidentialPlotTier', getOptionalTierEncoder()], ['maxResidentialPlots', getU32Encoder()], ['maxProductivePlotTier', getOptionalTierEncoder()], ['maxProductivePlots', getU32Encoder()], ['securityZoneAccess', getRiskZoneCheckedEncoder()], ['enemyFactionZoneAccess', getBooleanEncoder()], ['maxDailyStreakLength', getU32Encoder()], ['maxShipSize', getSizeClassEncoder()], ['scanPowerModifier', getI32F32Encoder()], ['scanCoolDownModifier', getI32F32Encoder()], ['researchTags', getSetEncoder(getResearchTagEncoder())], ['cargoCategories', getSetEncoder(getCargoCategoryIdEncoder())], [ 'rareMineralDiscovery', getMapEncoder(getCargoIdEncoder(), getU16F48Encoder()), ], ]); } export function getCharacterModifierDecoder(): Decoder { return getStructDecoder([ ['fleetSize', getU32Decoder()], ['fleetConcurrency', getU32Decoder()], ['respawnTimeModifier', getI32F32Decoder()], ['warpLaneFeeModifier', getI32F32Decoder()], ['warpSpeedModifier', getI32F32Decoder()], ['subwarpSpeedModifier', getI32F32Decoder()], ['warpCooldownModifier', getI32F32Decoder()], ['craftingEfficiencyModifier', getI32F32Decoder()], ['craftingTimeModifier', getI32F32Decoder()], ['craftingJobConcurrencyBonus', getU16Decoder()], ['maxResidentialPlotTier', getOptionalTierDecoder()], ['maxResidentialPlots', getU32Decoder()], ['maxProductivePlotTier', getOptionalTierDecoder()], ['maxProductivePlots', getU32Decoder()], ['securityZoneAccess', getRiskZoneCheckedDecoder()], ['enemyFactionZoneAccess', getBooleanDecoder()], ['maxDailyStreakLength', getU32Decoder()], ['maxShipSize', getSizeClassDecoder()], ['scanPowerModifier', getI32F32Decoder()], ['scanCoolDownModifier', getI32F32Decoder()], ['researchTags', getSetDecoder(getResearchTagDecoder())], ['cargoCategories', getSetDecoder(getCargoCategoryIdDecoder())], [ 'rareMineralDiscovery', getMapDecoder(getCargoIdDecoder(), getU16F48Decoder()), ], ]); } export function getCharacterModifierCodec(): Codec< CharacterModifierArgs, CharacterModifier > { return combineCodec( getCharacterModifierEncoder(), getCharacterModifierDecoder(), ); }