@spacemolt/lib 15.2.1 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -832,11 +832,17 @@ export type AttackNpcResponse = {
832
832
  auto_undocked?: boolean;
833
833
  kind: 'npc';
834
834
  target: string;
835
+ /**
836
+ * Display name of the target. A creature shows its life-stage name for a leviathan, else its species name. Branded ranch livestock starts with the owning faction's [TAG].
837
+ */
835
838
  target_name: string;
836
839
  /**
837
840
  * Target combatant type: pirate/empire_npc/creature/station/prize
838
841
  */
839
842
  target_type: string;
843
+ /**
844
+ * Set when the target is branded ranch livestock: names the owning faction and ranch. The kill is legal, but the owners are told who killed it and it gives no hunt mission credit. Omitted for every other target.
845
+ */
840
846
  warning?: string;
841
847
  };
842
848
  export type AttackPlayerResponse = {
@@ -932,6 +938,12 @@ export type Base = {
932
938
  * Maximum fuel tank capacity (0 if no fuel bunker installed)
933
939
  */
934
940
  max_fuel?: number;
941
+ /**
942
+ * Durable faction mobile-base archetype and movement state; omitted for ordinary stations
943
+ */
944
+ mobile_base?: {
945
+ [key: string]: unknown;
946
+ };
935
947
  name: string;
936
948
  owner_id?: string;
937
949
  /**
@@ -1167,6 +1179,9 @@ export type BattleParticipantInfo = {
1167
1179
  */
1168
1180
  ship_name?: string;
1169
1181
  side_id: number;
1182
+ /**
1183
+ * This combatant's battle stance (fire, evade, brace, flee, or board). A stance is private: battle_update sets it only on your own entry. Every other entry, and every entry in battle_started, battle_alert, and pirate or creature attack alerts, omits it.
1184
+ */
1170
1185
  stance?: string;
1171
1186
  username: string;
1172
1187
  zone: string;
@@ -1235,6 +1250,9 @@ export type BattleSummaryResponse = {
1235
1250
  duration_ticks: number;
1236
1251
  ended_at?: string;
1237
1252
  has_station: boolean;
1253
+ /**
1254
+ * POI ID where an active battle started. Absent for completed battles and when the origin POI is hidden: public surfaces never name an uncharted POI.
1255
+ */
1238
1256
  origin_poi?: string;
1239
1257
  /**
1240
1258
  * How the battle ended. victory means one side survived and destroyed or captured an opponent. stalemate and mutual_destruction are both draws. interrupted means a server restart ended the battle before either side won. Graceful shutdown emits a battle_ended frame; crash-recovered REST summaries do not fabricate one. Null while status is active. The WebSocket battle_ended frame calls this same field reason.
@@ -1842,7 +1860,7 @@ export type CaptureLogEntry = {
1842
1860
  */
1843
1861
  prize_id?: string;
1844
1862
  /**
1845
- * POI where the prize sits (the battle origin, which can differ from the captor's POI). Omitted when there is no prize, the POI is hidden, or the battle began in transit.
1863
+ * POI where the prize sits: the captor's POI at the moment of capture (the battle origin when the captor has no POI). A captured ship never lands at a hidden POI; it goes to the nearest charted POI in the system. Omitted when there is no prize or no POI is known, and when the POI is hidden (only in a system with no charted POI).
1846
1864
  */
1847
1865
  prize_poi_id?: string;
1848
1866
  /**
@@ -1942,7 +1960,7 @@ export type CatalogDump = {
1942
1960
  items: Array<Item | Module>;
1943
1961
  mining: MiningConstants;
1944
1962
  recipes: Array<CatalogRecipe>;
1945
- ships: Array<ShipClass>;
1963
+ ships: Array<ShipClass | MobileBaseShipClass>;
1946
1964
  skills: Array<SkillDefinition>;
1947
1965
  version: string;
1948
1966
  };
@@ -2008,9 +2026,9 @@ export type CatalogResponse = {
2008
2026
  analysis?: RecipeAnalysis;
2009
2027
  estimated_material_cost?: number;
2010
2028
  /**
2011
- * Catalog entries. Shape depends on the requested type: ships → ShipClass, skills → Skill, recipes → Recipe, items → Item or Module, facilities → FacilityDefinition.
2029
+ * Catalog entries. Shape depends on the requested type: ships → ShipClass or MobileBaseShipClass, skills → Skill, recipes → Recipe, items → Item or Module, facilities → FacilityDefinition.
2012
2030
  */
2013
- items: Array<Item | Module | ShipClass | Skill | Recipe | FacilityDefinition>;
2031
+ items: Array<Item | Module | ShipClass | Skill | Recipe | FacilityDefinition | MobileBaseShipClass>;
2014
2032
  message: string;
2015
2033
  page: number;
2016
2034
  page_size: number;
@@ -2053,6 +2071,8 @@ export type CatalogShipSummary = {
2053
2071
  lore?: string;
2054
2072
  marine_capacity: number;
2055
2073
  minimum_crew: number;
2074
+ mobile_base?: MobileBaseCatalog;
2075
+ mobile_base_archetype?: string;
2056
2076
  name: string;
2057
2077
  npc_role?: string;
2058
2078
  passive_recipes?: Array<string>;
@@ -2203,19 +2223,41 @@ export type ClientConnectionInfo = {
2203
2223
  system_id: string;
2204
2224
  };
2205
2225
  export type ClientPoiInfo = {
2226
+ /**
2227
+ * ID of the station at this POI. Omitted when has_base is false.
2228
+ */
2206
2229
  base_id?: string;
2230
+ /**
2231
+ * Name of the station at this POI. Omitted when has_base is false.
2232
+ */
2207
2233
  base_name?: string;
2234
+ /**
2235
+ * Type-specific classification for rendering (star spectral class, planet type, belt composition). Omitted when the POI has none.
2236
+ */
2208
2237
  class?: string;
2209
- faction_fuel_capacity?: number;
2210
- faction_fuel_reserve?: number;
2211
- fuel_capacity?: number;
2212
- fuel_price?: number;
2213
- fuel_reserve: number;
2238
+ /**
2239
+ * True when a station is at this POI.
2240
+ */
2214
2241
  has_base: boolean;
2242
+ /**
2243
+ * POI ID. Pass it to travel or find_route.
2244
+ */
2215
2245
  id: string;
2246
+ /**
2247
+ * Charted name of the POI.
2248
+ */
2216
2249
  name: string;
2217
- online: number;
2250
+ /**
2251
+ * Position in AU from the system center.
2252
+ */
2218
2253
  position: Position;
2254
+ /**
2255
+ * Ships your ship scanner picks up at this POI: other players that are not cloaked (online, offline, and docked alike), flying pirates, active empire NPC ships, and hatched leviathans. Your own ship and wildlife herds are not counted. Omitted when your ship has no working ship scanner (sensor rating 0); 0 means a scanner and no ships.
2256
+ */
2257
+ ship_count?: number;
2258
+ /**
2259
+ * POI type (planet, moon, sun, asteroid_belt, station, wormhole_entrance, and so on).
2260
+ */
2219
2261
  type: string;
2220
2262
  };
2221
2263
  export type ClientSystemInfo = {
@@ -2693,8 +2735,17 @@ export type CreateSellOrderResponse = {
2693
2735
  total_earned?: number;
2694
2736
  };
2695
2737
  export type CreatureInfo = {
2738
+ /**
2739
+ * Owning faction of a branded animal as [TAG] Faction Name. Omitted for wild animals.
2740
+ */
2696
2741
  brand_faction?: string;
2742
+ /**
2743
+ * Name of the outpost whose ranch owns a branded animal. Omitted for wild animals.
2744
+ */
2697
2745
  brand_ranch?: string;
2746
+ /**
2747
+ * True when this animal is branded livestock of a player faction's wildlife ranch. Killing it is legal. It draws down the owners' herd, the owners are told who killed it, and it gives no hunt mission credit. Its name also starts with the owner's [TAG]. Omitted for wild animals.
2748
+ */
2698
2749
  branded?: boolean;
2699
2750
  creature_id: string;
2700
2751
  hull: number;
@@ -2712,6 +2763,10 @@ export type DeclineMissionResponse = {
2712
2763
  template_id: string;
2713
2764
  title: string;
2714
2765
  };
2766
+ export type DecommissionMobileBaseResponse = {
2767
+ decommissioned: boolean;
2768
+ message: string;
2769
+ };
2715
2770
  export type DefenseComponentLog = {
2716
2771
  after_flat_reduction: number;
2717
2772
  after_shield_resist: number;
@@ -2845,7 +2900,7 @@ export type DistressSignalResponse = {
2845
2900
  */
2846
2901
  poi: string;
2847
2902
  /**
2848
- * Display name of the POI in "poi", for example "Sol Asteroid Belt". Falls back to the POI ID when the POI is unknown to the server.
2903
+ * Display name of the POI in "poi", for example "Sol Asteroid Belt". Falls back to the POI ID when the POI is unknown to the server. For a hidden POI it is "an uncharted location": the broadcast never names a hidden POI.
2849
2904
  */
2850
2905
  poi_name: string;
2851
2906
  /**
@@ -2976,6 +3031,9 @@ export type EmpireGiftResponse = {
2976
3031
  };
2977
3032
  export type EmpireNpcInfo = {
2978
3033
  empire: string;
3034
+ /**
3035
+ * Set for empire fleet member NPCs
3036
+ */
2979
3037
  fleet_name?: string;
2980
3038
  in_combat: boolean;
2981
3039
  name: string;
@@ -3051,6 +3109,10 @@ export type EmpireStanding = {
3051
3109
  };
3052
3110
  export type EnrichedWreck = {
3053
3111
  cargo: Array<ShipCargoItem>;
3112
+ /**
3113
+ * Carrion this body adds to its system every wildlife pass (about 1 minute) while it lasts. It feeds the scavengers there. Set only on the body of a leviathan that died of age; omitted otherwise.
3114
+ */
3115
+ carrion?: number;
3054
3116
  created_at: string;
3055
3117
  expire_tick: number;
3056
3118
  expires_at: string;
@@ -3140,6 +3202,9 @@ export type FacilityBuildResponse = {
3140
3202
  facility_type: string;
3141
3203
  hint: string;
3142
3204
  recipe_id?: string;
3205
+ /**
3206
+ * Rent in credits per facility cycle (100 ticks) charged to the builder for this facility. 0 means no rent is due: a member's facility at their own faction's player station or outpost pays none.
3207
+ */
3143
3208
  rent_per_cycle: number;
3144
3209
  skill_xp?: {
3145
3210
  [key: string]: number;
@@ -3183,6 +3248,9 @@ export type FacilityDefSummary = {
3183
3248
  maintenance_per_cycle?: Array<ItemQuantity>;
3184
3249
  name: string;
3185
3250
  recipe_id?: string;
3251
+ /**
3252
+ * Rent quote in credits per facility cycle (100 ticks) for the requesting player at this station. 0 at their own faction's player station or outpost, where members pay no rent; an outsider there is quoted the tenant rent paid to the owning faction.
3253
+ */
3186
3254
  rent_per_cycle: number;
3187
3255
  type_id: string;
3188
3256
  };
@@ -3303,10 +3371,16 @@ export type FacilityEntry = {
3303
3371
  faction_medical_supply_item?: string;
3304
3372
  faction_service?: string;
3305
3373
  is_recycler?: boolean;
3374
+ /**
3375
+ * Credits of labor this facility pays per facility cycle (100 ticks). Present only alongside maintenance_per_cycle; omitted when zero. A tourism venue's labor scales with its recent paying footfall but never drops below 15 percent of its declared labor.
3376
+ */
3306
3377
  labor_per_cycle?: number;
3307
3378
  leisure_points?: number;
3308
3379
  level: number;
3309
3380
  maintenance_level?: number;
3381
+ /**
3382
+ * Item stock this station-run facility must hold each facility cycle (100 ticks) to count as fully supplied. Present only for fleet depots and dining/leisure venues (tourism_upkeep); omitted otherwise. A tourism venue's figure scales with recent paying footfall and never drops below 15 percent of its declared menu (at least one of each item); it burns its paying guests' share of its declared menu — about the whole listed stock in a busy cycle and nothing in a cycle no guest paid for.
3383
+ */
3310
3384
  maintenance_per_cycle?: Array<ItemQuantity>;
3311
3385
  maintenance_satisfied?: boolean;
3312
3386
  missed_rent_cycles?: number;
@@ -3338,6 +3412,9 @@ export type FacilityFactionBuildResponse = {
3338
3412
  hint: string;
3339
3413
  members_awarded_xp?: number;
3340
3414
  recipe_id?: string;
3415
+ /**
3416
+ * Rent in credits per facility cycle (100 ticks) charged to the faction treasury. 0 means no rent is due: a facility at the faction's own player station or outpost pays none. A Letter of Marque Office's toll is recomputed each cycle from the faction's unrepresented members and can also start at 0.
3417
+ */
3341
3418
  rent_per_cycle: number;
3342
3419
  skill_xp?: {
3343
3420
  [key: string]: number;
@@ -3506,6 +3583,9 @@ export type FacilityPersonalBuildResponse = {
3506
3583
  hint: string;
3507
3584
  home_base_set?: boolean;
3508
3585
  personal_service: string;
3586
+ /**
3587
+ * Rent in credits per facility cycle (100 ticks) charged to the builder. 0 means no rent is due: a member's facility at their own faction's player station or outpost pays none.
3588
+ */
3509
3589
  rent_per_cycle: number;
3510
3590
  skill_xp?: {
3511
3591
  [key: string]: number;
@@ -3561,7 +3641,7 @@ export type FacilityRentSummary = {
3561
3641
  */
3562
3642
  est_rent_per_day: number;
3563
3643
  /**
3564
- * Number of owned facilities in this summary including facilities whose billing is paused.
3644
+ * Number of owned facilities in this summary including facilities whose billing is paused and facilities at the owner's own faction station or outpost, which pay no rent and count at 0.
3565
3645
  */
3566
3646
  facilities: number;
3567
3647
  /**
@@ -3635,6 +3715,9 @@ export type FacilityTypeDetailResponse = {
3635
3715
  personal_service?: string;
3636
3716
  recipe?: FacilityRecipeInfo;
3637
3717
  recipe_id?: string;
3718
+ /**
3719
+ * Rent quote in credits per facility cycle (100 ticks) for the requesting player at their docked station. 0 at their own faction's player station or outpost, where members pay no rent; an outsider there is quoted the tenant rent paid to the owning faction.
3720
+ */
3638
3721
  rent_per_cycle: number;
3639
3722
  requires_service_name?: string;
3640
3723
  requires_service_type?: string;
@@ -3712,6 +3795,9 @@ export type FacilityUpgradeResponse = {
3712
3795
  level: number;
3713
3796
  personal_service?: string;
3714
3797
  recipe_id?: string;
3798
+ /**
3799
+ * Rent in credits per facility cycle (100 ticks) after the upgrade. 0 means no rent is due: a facility at its owner's own faction player station or outpost pays none.
3800
+ */
3715
3801
  rent_per_cycle: number;
3716
3802
  };
3717
3803
  export type FacilityUpgradesResponse = {
@@ -4001,6 +4087,10 @@ export type FactionInfoResponse = {
4001
4087
  emblem?: string;
4002
4088
  enemies?: Array<FactionListItem>;
4003
4089
  facilities?: Array<FactionFacilityPresence>;
4090
+ /**
4091
+ * Rent and arrears for the faction's facilities across all stations; billed to the treasury each cycle. Facilities at the faction's own station or outpost pay no rent and count at 0, so a faction that owns facilities only there gets a summary with zero rent. Omitted for non-members and for a faction that owns no facilities. Use facility action=faction_owned for the per-facility breakdown.
4092
+ */
4093
+ faction_rent?: FacilityRentSummary;
4004
4094
  fuel_bunkers?: Array<FactionFuelBunker>;
4005
4095
  id: string;
4006
4096
  is_ally: boolean;
@@ -4013,6 +4103,14 @@ export type FactionInfoResponse = {
4013
4103
  members_limit?: number;
4014
4104
  members_offset?: number;
4015
4105
  members_truncated?: boolean;
4106
+ /**
4107
+ * Current mobile-base location and movement state. Present only for faction members with a completed mobile base; omitted during construction or after decommissioning.
4108
+ */
4109
+ mobile_base?: MobileBaseInfo;
4110
+ /**
4111
+ * Pending mobile-base construction reservation. Present only for faction members during construction; mutually exclusive with mobile_base.
4112
+ */
4113
+ mobile_base_commission?: MobileBaseCommissionInfo;
4016
4114
  name: string;
4017
4115
  owned_bases: number;
4018
4116
  peace_proposals?: Array<FactionPeaceProposal>;
@@ -4095,6 +4193,36 @@ export type FactionMissionEntry = {
4095
4193
  title: string;
4096
4194
  type: string;
4097
4195
  };
4196
+ export type FactionMobileBaseResponse = {
4197
+ /**
4198
+ * Stable station ID of the faction mobile base.
4199
+ */
4200
+ base_id: string;
4201
+ /**
4202
+ * Movement phase and route plus refundable jump resources. get_base and faction_info flatten these movement fields into their mobile_base object without escrow.
4203
+ */
4204
+ mobile_base: MobileBaseState;
4205
+ /**
4206
+ * Current station display name.
4207
+ */
4208
+ name: string;
4209
+ /**
4210
+ * Stable POI ID that moves with the base.
4211
+ */
4212
+ poi_id: string;
4213
+ /**
4214
+ * Current POI coordinates in AU; updated each movement tick and held at departure during isolated jumping. Zero if the POI is unavailable. Equivalent to current_position in get_base and faction_info mobile_base.
4215
+ */
4216
+ position: Position;
4217
+ /**
4218
+ * Current POI system; omitted during isolated jumping or if the POI is unavailable. Read mobile_base.origin.system_id for the departure system. Equivalent to current_system_id in get_base and faction_info mobile_base.
4219
+ */
4220
+ system_id?: string;
4221
+ /**
4222
+ * True when the station combat state is wrecked; false otherwise.
4223
+ */
4224
+ wrecked: boolean;
4225
+ };
4098
4226
  export type FactionOwnedFacilityEntry = {
4099
4227
  arrears_owed?: number;
4100
4228
  base_id: string;
@@ -4258,14 +4386,41 @@ export type FactionProposePeaceResponse = {
4258
4386
  terms: string;
4259
4387
  };
4260
4388
  export type FactionQueryIntelResponse = {
4389
+ /**
4390
+ * Number of entries in this page.
4391
+ */
4261
4392
  count: number;
4393
+ /**
4394
+ * Game tick at which this query ran. Compare each POI's read_at_tick against it to judge how stale the resources are.
4395
+ */
4262
4396
  current_tick: number;
4397
+ /**
4398
+ * Matching system entries for this page, newest submitted_at_tick first. Empty when nothing matches.
4399
+ */
4263
4400
  entries: Array<IntelEntry>;
4401
+ /**
4402
+ * Intel facility level of the source faction: 1 = Intel Terminal (manual submissions and system filters only), 2 = Intel Center (auto-sync and the resource_type, poi_type and empire filters).
4403
+ */
4264
4404
  intel_level: number;
4405
+ /**
4406
+ * Page size used (default 50, max 100).
4407
+ */
4265
4408
  limit?: number;
4409
+ /**
4410
+ * System IDs in this page with at least one POI read live: an online member of the source faction is at that POI right now, so its resources are current and its read_at_tick equals current_tick. Only those POIs are live; every other POI in the entry is a stored snapshot. Intel facilities never make a system live. Omitted when no POI in this page is live.
4411
+ */
4266
4412
  live_systems?: Array<string>;
4413
+ /**
4414
+ * Human-readable summary of the result and how to read its staleness.
4415
+ */
4267
4416
  message: string;
4417
+ /**
4418
+ * Offset of this page into the matching entries. Omitted when 0.
4419
+ */
4268
4420
  offset?: number;
4421
+ /**
4422
+ * Number of entries matching the query across all pages.
4423
+ */
4269
4424
  total: number;
4270
4425
  };
4271
4426
  export type FactionQueryTradeIntelResponse = {
@@ -4330,16 +4485,32 @@ export type FactionScanNpcContact = {
4330
4485
  ship_class?: string;
4331
4486
  };
4332
4487
  export type FactionScanPoiResponse = {
4488
+ /**
4489
+ * Players the scan resolved, each with the tiered reveal its contest margin allows (10 username, 20 ship class, 30 hull and shield, 40 cloaked flag, 50 faction). A cloaked player is listed only from margin 10. Omitted when none.
4490
+ */
4333
4491
  contacts?: Array<ScanContact>;
4334
4492
  facility_level: number;
4335
4493
  facility_station?: string;
4336
4494
  hops: number;
4495
+ /**
4496
+ * Leviathans at the POI. Omitted when none are there.
4497
+ */
4498
+ leviathans?: Array<LeviathanContact>;
4337
4499
  message: string;
4500
+ /**
4501
+ * Empire NPC ships that passed the contest (listed from margin 10, ship class from 20). Omitted when none. Area sweeps never fill it.
4502
+ */
4338
4503
  npcs?: Array<FactionScanNpcContact>;
4504
+ /**
4505
+ * Pirate ships that passed the contest (listed from margin 10, ship class from 20). Omitted when none. Area sweeps never fill it.
4506
+ */
4339
4507
  pirates?: Array<FactionScanPirateContact>;
4340
4508
  poi_id: string;
4341
4509
  poi_name?: string;
4342
4510
  scan_power: number;
4511
+ /**
4512
+ * True when a cloaked ship is within one sensor level (10 power) below detection: sensed but not resolved. Omitted when false.
4513
+ */
4343
4514
  signature_detected?: boolean;
4344
4515
  system_id?: string;
4345
4516
  };
@@ -4947,7 +5118,13 @@ export type GetNearbyResponse = {
4947
5118
  */
4948
5119
  arena_npcs: Array<ArenaNpcInfo>;
4949
5120
  count: number;
5121
+ /**
5122
+ * Total wildlife creatures at this POI. When it is larger than the length of creatures, the list is cut at 30 and the rest are present but not listed.
5123
+ */
4950
5124
  creature_count: number;
5125
+ /**
5126
+ * Wildlife creatures at this POI that you can hunt. Every head of a herd is a real creature here. The list holds at most 30 entries; creature_count gives the full number. Wild animals come before branded ranch livestock, so the cut drops branded animals first.
5127
+ */
4951
5128
  creatures: Array<CreatureInfo>;
4952
5129
  empire_npc_count: number;
4953
5130
  empire_npcs: Array<EmpireNpcInfo>;
@@ -5011,10 +5188,22 @@ export type GetPoiTransitResponse = {
5011
5188
  transit_type: string;
5012
5189
  };
5013
5190
  export type GetSystemAgentsResponse = {
5191
+ /**
5192
+ * Always empty. get_system_agents is deprecated: use get_nearby for the ships at your POI and get_system with a ship scanner for ship counts at the other POIs.
5193
+ */
5014
5194
  agents: Array<NearbyPlayer>;
5195
+ /**
5196
+ * Always 0 (the length of agents).
5197
+ */
5015
5198
  count: number;
5016
- offline_collapsed?: number;
5199
+ /**
5200
+ * Your current system ID. Empty while you are in hyperspace.
5201
+ */
5017
5202
  system_id: string;
5203
+ /**
5204
+ * Deprecation notice: the command will be removed, and names the commands that replace it. Always present.
5205
+ */
5206
+ warning?: string;
5018
5207
  };
5019
5208
  export type GetSystemCommandResponse = ({
5020
5209
  kind: 'normal';
@@ -5091,19 +5280,11 @@ export type GuideEntry = {
5091
5280
  id: string;
5092
5281
  title: string;
5093
5282
  };
5094
- export type HuntResponse = {
5095
- /**
5096
- * True when the engine docked you automatically before running this command, because the command requires being docked. Omitted when no automatic dock happened.
5097
- */
5098
- auto_docked?: boolean;
5099
- /**
5100
- * True when the engine undocked you automatically before running this command, because the command requires being undocked. Omitted when no automatic undock happened.
5101
- */
5102
- auto_undocked?: boolean;
5103
- command: string;
5104
- message: string;
5105
- pending: boolean;
5106
- };
5283
+ export type HuntResponse = ({
5284
+ kind: 'npc';
5285
+ } & AttackNpcResponse) | ({
5286
+ kind: 'player';
5287
+ } & AttackPlayerResponse);
5107
5288
  export type IncomeTaxBracketBreakdown = {
5108
5289
  income_in_bracket: number;
5109
5290
  lower_bound: number;
@@ -5165,9 +5346,9 @@ export type InspectResponse = {
5165
5346
  analysis?: RecipeAnalysis;
5166
5347
  estimated_material_cost?: number;
5167
5348
  /**
5168
- * Catalog entries. Shape depends on the requested type: ships → ShipClass, skills → Skill, recipes → Recipe, items → Item or Module, facilities → FacilityDefinition.
5349
+ * Catalog entries. Shape depends on the requested type: ships → ShipClass or MobileBaseShipClass, skills → Skill, recipes → Recipe, items → Item or Module, facilities → FacilityDefinition.
5169
5350
  */
5170
- items: Array<Item | Module | ShipClass | Skill | Recipe | FacilityDefinition>;
5351
+ items: Array<Item | Module | ShipClass | Skill | Recipe | FacilityDefinition | MobileBaseShipClass>;
5171
5352
  message: string;
5172
5353
  page: number;
5173
5354
  page_size: number;
@@ -5243,18 +5424,49 @@ export type IntelEntry = {
5243
5424
  system_id: string;
5244
5425
  };
5245
5426
  export type IntelPoi = {
5427
+ /**
5428
+ * Station base ID at this POI. Omitted when the POI has no station.
5429
+ */
5246
5430
  base_id?: string;
5431
+ /**
5432
+ * Station name at this POI. Omitted when the POI has no station.
5433
+ */
5247
5434
  base_name?: string;
5435
+ /**
5436
+ * POI class (for example metallic for a belt). Omitted when the POI has none.
5437
+ */
5248
5438
  class?: string;
5249
5439
  /**
5250
- * True when this is a hidden deep core POI holding deposits. Access there needs a deep_core_access extractor that a pilot cannot refit below so the too-sparse cutoff never applies and these deposits always work down to zero. It is the one input to the mining lock formula that you cannot derive from a deposit's own numbers. Omitted (false) for every ordinary POI and for a hidden POI with no resources such as a wormhole mouth.
5440
+ * True when this is a hidden deep core POI holding deposits. Access there needs a deep_core_access extractor that a pilot cannot refit below so the too-sparse cutoff never applies and these deposits always work down to zero. It is the one input to the mining lock formula that you cannot derive from a deposit's own numbers. Omitted (false) for every ordinary POI, for a hidden POI below the deep core survey tier (which mines like an ordinary POI), and for a hidden POI with no resources such as a wormhole mouth.
5251
5441
  */
5252
5442
  deep_core?: boolean;
5443
+ /**
5444
+ * POI description. Omitted when the POI has none or the entry never recorded it.
5445
+ */
5253
5446
  description?: string;
5447
+ /**
5448
+ * POI ID. Always a real POI of this system: a submission drops any ID that is not on the submitter's charts.
5449
+ */
5254
5450
  id: string;
5451
+ /**
5452
+ * POI display name.
5453
+ */
5255
5454
  name: string;
5455
+ /**
5456
+ * POI position in the system in AU. Zero on an old or hand-submitted entry that never recorded it.
5457
+ */
5256
5458
  position: Position;
5459
+ /**
5460
+ * Game tick at which a faction member's ship read this POI's resources: an Intel Center auto-sync from get_poi, successful mining or survey_system, or the live view when an online faction member is at this POI right now (then it equals current_tick). Omitted (0) when no member's ship has read the resources: a hand-submitted reading from faction_submit_intel is unverified and never carries this field. Compare it against current_tick to judge how stale the resources are.
5461
+ */
5462
+ read_at_tick?: number;
5463
+ /**
5464
+ * Resource deposits at this POI as last read. read_at_tick says when a member's ship read them; without read_at_tick they are a hand-submitted reading. Omitted when no reading exists: nobody has read this POI's ore.
5465
+ */
5257
5466
  resources?: Array<IntelResource>;
5467
+ /**
5468
+ * POI type as get_system shows it (for example asteroid_belt or station). On a hand-submitted entry it is whatever the submitter wrote until the server backfills it.
5469
+ */
5258
5470
  type: string;
5259
5471
  };
5260
5472
  export type IntelResource = {
@@ -5461,6 +5673,40 @@ export type KillLogEntry = {
5461
5673
  victim_id: string;
5462
5674
  victim_username: string;
5463
5675
  };
5676
+ export type LeviathanContact = {
5677
+ /**
5678
+ * True when this stage attacks ships at its POI. It never joins a fight already in progress.
5679
+ */
5680
+ aggressive: boolean;
5681
+ /**
5682
+ * Current hull. Damage carries over between fights and heals slowly out of battle.
5683
+ */
5684
+ hull: number;
5685
+ /**
5686
+ * True while it is in a battle.
5687
+ */
5688
+ in_combat: boolean;
5689
+ /**
5690
+ * The leviathan's ID. It is the same for its whole life and is the creature_id to attack while you are at its POI.
5691
+ */
5692
+ leviathan_id: string;
5693
+ /**
5694
+ * Maximum hull. It grows with the leviathan's size.
5695
+ */
5696
+ max_hull: number;
5697
+ /**
5698
+ * Name of its current life stage, e.g. Juvenile Molt Leviathan.
5699
+ */
5700
+ name: string;
5701
+ /**
5702
+ * Leviathan species ID, e.g. molt_leviathan.
5703
+ */
5704
+ species: string;
5705
+ /**
5706
+ * Life stage ID, e.g. hatchling, juvenile, adult, calf, or elder.
5707
+ */
5708
+ stage: string;
5709
+ };
5464
5710
  export type ListPassengersResponse = {
5465
5711
  berths?: BerthsView;
5466
5712
  count: number;
@@ -5667,7 +5913,6 @@ export type MapSystem = {
5667
5913
  empire?: string;
5668
5914
  is_stronghold?: boolean;
5669
5915
  name: string;
5670
- online?: number;
5671
5916
  poi_count?: number;
5672
5917
  position?: {
5673
5918
  x?: number;
@@ -5683,7 +5928,6 @@ export type MapSystemInfo = {
5683
5928
  empire?: string;
5684
5929
  is_stronghold?: boolean;
5685
5930
  name: string;
5686
- online: number;
5687
5931
  poi_count: number;
5688
5932
  position: GalacticPosition;
5689
5933
  system_id: string;
@@ -5866,9 +6110,304 @@ export type MissionRewardsInfo = {
5866
6110
  [key: string]: number;
5867
6111
  };
5868
6112
  };
6113
+ export type MobileBaseCatalog = {
6114
+ /**
6115
+ * Fixed service and infrastructure facilities delivered with the station
6116
+ */
6117
+ built_in_facilities: Array<MobileBaseCatalogFacility>;
6118
+ /**
6119
+ * Always station; uses station battles and facility weapons
6120
+ */
6121
+ combat_model: string;
6122
+ /**
6123
+ * Initial station weapon facilities; repeated entries represent separate batteries; ammunition and operating supplies are required
6124
+ */
6125
+ default_weapon_facilities: Array<MobileBaseCatalogFacility>;
6126
+ /**
6127
+ * Capacity of the shared station fuel reservoir in fuel units
6128
+ */
6129
+ fuel_capacity: number;
6130
+ /**
6131
+ * Maximum additional production facilities
6132
+ */
6133
+ production_slots: number;
6134
+ /**
6135
+ * Service identifiers supplied by the fixed facilities when operational
6136
+ */
6137
+ services: Array<string>;
6138
+ /**
6139
+ * Always false; ship modules and fitting slots do not apply
6140
+ */
6141
+ ship_modules: boolean;
6142
+ /**
6143
+ * Faction storage limit for each distinct item
6144
+ */
6145
+ storage_capacity_per_item: number;
6146
+ /**
6147
+ * Maximum changeable station weapon facilities including the delivered batteries
6148
+ */
6149
+ weapon_mounts: number;
6150
+ };
6151
+ export type MobileBaseCatalogFacility = {
6152
+ /**
6153
+ * Facility definition identifier
6154
+ */
6155
+ id: string;
6156
+ /**
6157
+ * Facility catalog display name
6158
+ */
6159
+ name: string;
6160
+ };
6161
+ export type MobileBaseCommissionInfo = {
6162
+ /**
6163
+ * Empire-specific mobile-base archetype reserved by this commission.
6164
+ */
6165
+ archetype_id: string;
6166
+ /**
6167
+ * Pending shipyard commission reserving the faction's single mobile-base slot. Cleared when construction completes or is cancelled.
6168
+ */
6169
+ commission_id: string;
6170
+ };
6171
+ export type MobileBaseEndpoint = {
6172
+ /**
6173
+ * Endpoint coordinates in AU. Zero while stationary and for a jump destination whose arrival coordinates are not selected yet.
6174
+ */
6175
+ position: Position;
6176
+ /**
6177
+ * Endpoint system ID; empty while stationary.
6178
+ */
6179
+ system_id: string;
6180
+ };
6181
+ export type MobileBaseInfo = {
6182
+ /**
6183
+ * Empire-specific blueprint archetype that produced this station.
6184
+ */
6185
+ archetype_id: string;
6186
+ /**
6187
+ * Stable station ID of the completed mobile base.
6188
+ */
6189
+ base_id: string;
6190
+ /**
6191
+ * Latest station POI coordinates in AU. Updated each movement tick; remains the departure position during isolated jumping. Zero if the POI is unavailable.
6192
+ */
6193
+ current_position: Position;
6194
+ /**
6195
+ * System currently recorded on the station POI; empty during isolated jumping or if the POI is unavailable. Read origin.system_id for the departure system.
6196
+ */
6197
+ current_system_id: string;
6198
+ /**
6199
+ * Target system and AU coordinates. Jump coordinates remain zero until arrival; this does not promise arrival at system center. Empty system and zero coordinates while stationary.
6200
+ */
6201
+ destination: MobileBaseEndpoint;
6202
+ /**
6203
+ * Current movement phase. Stationary clears route endpoints and timing. Jumping isolates the base until arrival.
6204
+ */
6205
+ lifecycle: 'stationary' | 'in_system_transit' | 'jump_preparing' | 'jumping';
6206
+ /**
6207
+ * Current station display name.
6208
+ */
6209
+ name: string;
6210
+ /**
6211
+ * Departure system and AU coordinates; empty system and zero coordinates while stationary.
6212
+ */
6213
+ origin: MobileBaseEndpoint;
6214
+ /**
6215
+ * Stable POI ID that moves with the mobile base.
6216
+ */
6217
+ poi_id: string;
6218
+ /**
6219
+ * Absolute game tick scheduled to finish the current phase; zero while stationary. Preparation completion starts isolated jumping rather than arrival.
6220
+ */
6221
+ state_complete_tick: number;
6222
+ /**
6223
+ * Absolute game tick when the current movement phase began; zero while stationary.
6224
+ */
6225
+ state_started_tick: number;
6226
+ /**
6227
+ * True when the station combat state is wrecked; false otherwise.
6228
+ */
6229
+ wrecked: boolean;
6230
+ };
5869
6231
  export type MobileBaseLocation = {
5870
6232
  system: string;
5871
6233
  };
6234
+ /**
6235
+ * A commission blueprint that creates a faction station. Hull, shields, armor and shield recharge apply to station combat; recharge depends on station power. Ship fitting, personnel, piloting, speed, cargo and ship fuel statistics are absent. Use mobile_base for actual station facilities, weapon mounts and capacities. Use commission_quote for construction costs.
6236
+ */
6237
+ export type MobileBaseShipClass = {
6238
+ base_armor?: number;
6239
+ base_hull?: number;
6240
+ base_shield?: number;
6241
+ base_shield_recharge?: number;
6242
+ /**
6243
+ * Source empire ship class ID this pirate design is converted from
6244
+ */
6245
+ based_on?: string;
6246
+ /**
6247
+ * Materials required to build
6248
+ */
6249
+ build_materials?: Array<{
6250
+ item_id?: string;
6251
+ quantity?: number;
6252
+ }>;
6253
+ /**
6254
+ * Ticks required to build this ship
6255
+ */
6256
+ build_time?: number;
6257
+ /**
6258
+ * Ship role category: Combat, Industrial, Exploration, etc.
6259
+ */
6260
+ category?: string;
6261
+ /**
6262
+ * Ship category: Fighter, Freighter, Mining, etc.
6263
+ */
6264
+ class: string;
6265
+ description?: string;
6266
+ /**
6267
+ * Empire faction this ship belongs to
6268
+ */
6269
+ faction?: string;
6270
+ /**
6271
+ * Descriptive tags for ship personality
6272
+ */
6273
+ flavor_tags?: Array<string>;
6274
+ /**
6275
+ * Hidden from catalog and commissioning (mechanics not yet implemented)
6276
+ */
6277
+ hidden?: boolean;
6278
+ id: string;
6279
+ /**
6280
+ * Legacy ship class kept for existing players, hidden from catalog
6281
+ */
6282
+ legacy?: boolean;
6283
+ /**
6284
+ * Flavor text and lore description
6285
+ */
6286
+ lore?: string;
6287
+ mobile_base: {
6288
+ /**
6289
+ * Fixed service and infrastructure facilities delivered with the station
6290
+ */
6291
+ built_in_facilities: Array<MobileBaseCatalogFacility>;
6292
+ /**
6293
+ * Always station; uses station battles and facility weapons
6294
+ */
6295
+ combat_model: string;
6296
+ /**
6297
+ * Initial station weapon facilities; repeated entries represent separate batteries; ammunition and operating supplies are required
6298
+ */
6299
+ default_weapon_facilities: Array<MobileBaseCatalogFacility>;
6300
+ /**
6301
+ * Capacity of the shared station fuel reservoir in fuel units
6302
+ */
6303
+ fuel_capacity: number;
6304
+ /**
6305
+ * Maximum additional production facilities
6306
+ */
6307
+ production_slots: number;
6308
+ /**
6309
+ * Service identifiers supplied by the fixed facilities when operational
6310
+ */
6311
+ services: Array<string>;
6312
+ /**
6313
+ * Always false; ship modules and fitting slots do not apply
6314
+ */
6315
+ ship_modules: boolean;
6316
+ /**
6317
+ * Faction storage limit for each distinct item
6318
+ */
6319
+ storage_capacity_per_item: number;
6320
+ /**
6321
+ * Maximum changeable station weapon facilities including the delivered batteries
6322
+ */
6323
+ weapon_mounts: number;
6324
+ };
6325
+ /**
6326
+ * Faction mobile-base archetype delivered by this commission blueprint instead of a flyable ship
6327
+ */
6328
+ mobile_base_archetype: string;
6329
+ name: string;
6330
+ /**
6331
+ * Catalog-only note naming the achievement to earn to unlock this prestige hull; present only for hulls the viewer hasn't unlocked
6332
+ */
6333
+ prestige_lock?: string;
6334
+ /**
6335
+ * Player achievement required to commission or buy this prestige hull (empty = none)
6336
+ */
6337
+ required_achievement?: string;
6338
+ /**
6339
+ * Faction achievement the player's faction must hold to commission or buy this prestige hull (empty = none)
6340
+ */
6341
+ required_faction_achievement?: string;
6342
+ /**
6343
+ * When true alongside required_faction_achievement, only the faction's leader may commission or buy this prestige hull
6344
+ */
6345
+ required_faction_leader?: boolean;
6346
+ /**
6347
+ * Item requirements for purchase
6348
+ */
6349
+ required_items?: Array<{
6350
+ [key: string]: unknown;
6351
+ }>;
6352
+ /**
6353
+ * Minimum reputation with the ship's empire to commission or buy this ship (0 = no requirement). Not applied to a faction-funded build at the faction's own station when the faction holds a buy_ship_license for this design — the license authorizes that build instead
6354
+ */
6355
+ required_reputation?: number;
6356
+ /**
6357
+ * Ship scale (1-5)
6358
+ */
6359
+ scale?: number;
6360
+ /**
6361
+ * Minimum shipyard tier required to build
6362
+ */
6363
+ shipyard_tier?: number;
6364
+ /**
6365
+ * Special ability identifier
6366
+ */
6367
+ special?: string;
6368
+ /**
6369
+ * Whether this is a free starter ship
6370
+ */
6371
+ starter_ship?: boolean;
6372
+ /**
6373
+ * Ship tier (0-5)
6374
+ */
6375
+ tier?: number;
6376
+ };
6377
+ export type MobileBaseState = {
6378
+ /**
6379
+ * Empire-specific mobile-base blueprint archetype.
6380
+ */
6381
+ archetype_id: string;
6382
+ /**
6383
+ * Commission that created this mobile base.
6384
+ */
6385
+ commission_id?: string;
6386
+ /**
6387
+ * Target system and AU coordinates; empty endpoint while stationary. Jump arrival coordinates remain zero until arrival.
6388
+ */
6389
+ destination?: MobileBaseEndpoint;
6390
+ /**
6391
+ * Current phase; stationary clears movement endpoints and timing.
6392
+ */
6393
+ lifecycle: 'stationary' | 'in_system_transit' | 'jump_preparing' | 'jumping';
6394
+ /**
6395
+ * Departure system and AU coordinates; empty endpoint while stationary.
6396
+ */
6397
+ origin?: MobileBaseEndpoint;
6398
+ /**
6399
+ * Jump resource item quantities reserved from faction storage during preparation. Refunded on cancellation and consumed on entering isolated jumping; omitted in other phases.
6400
+ */
6401
+ refundable_item_escrow?: Array<RecipeInput>;
6402
+ /**
6403
+ * Absolute game tick scheduled to complete this phase; omitted while stationary. Preparation completion begins isolated jumping rather than arrival.
6404
+ */
6405
+ state_complete_tick?: number;
6406
+ /**
6407
+ * Absolute game tick when this movement phase began; omitted when zero.
6408
+ */
6409
+ state_started_tick?: number;
6410
+ };
5872
6411
  export type ModifyOrderCommandResponse = ({
5873
6412
  kind: 'single';
5874
6413
  } & ModifyOrderResponse) | ({
@@ -6010,7 +6549,7 @@ export type NearbyPlayer = {
6010
6549
  */
6011
6550
  clan_tag?: string;
6012
6551
  /**
6013
- * True when the player is docked at a base. Docked players are listed but cannot be attacked, scanned, or traded with until they undock.
6552
+ * True when the player is docked at a base. Docked players are listed and can be scanned, but cannot be attacked until they undock.
6014
6553
  */
6015
6554
  docked?: boolean;
6016
6555
  /**
@@ -6075,7 +6614,7 @@ export type NotificationChannelInfo = {
6075
6614
  /**
6076
6615
  * Frame payload shared by polling and inline notifications. Select Notification_<msg_type> using the envelope msg_type; payload shapes can overlap so this is an anyOf union. Null means the frame supplied no payload.
6077
6616
  */
6078
- export type NotificationPayload = NotificationAchievementUnlocked | NotificationActionError | NotificationActionResult | NotificationArenaChallenge | NotificationArenaObjective | NotificationBaseDestroyed | NotificationBaseRaidUpdate | NotificationBattleAlert | NotificationBattleDamage | NotificationBattleEnded | NotificationBattleJoined | NotificationBattleLeft | NotificationBattleStarted | NotificationBattleUpdate | NotificationChatMessage | NotificationCloak | NotificationCompleteMission | NotificationCraftingUpdate | NotificationDroneAdrift | NotificationDroneDestroyed | NotificationDroneScan | NotificationDroneSurvey | NotificationDroneUpdate | NotificationError | NotificationFacilityReclaimed | NotificationFacilityRentWarning | NotificationFactionAllianceBroken | NotificationFactionAllianceFormed | NotificationFactionAllianceProposal | NotificationFactionPeaceAccepted | NotificationFactionPeaceProposal | NotificationFactionWarDeclared | NotificationFleet | NotificationGiftReceived | NotificationMarketUpdate | NotificationMiningYield | NotificationObservationUpdate | NotificationOk | NotificationPersonnelUpdate | NotificationPilotlessShip | NotificationPirateDestroyed | NotificationPirateRadio | NotificationPlayerDied | NotificationPlayerKill | NotificationPrizeUpdate | NotificationRanchPoached | NotificationReconnected | NotificationRefueledBy | NotificationRepairedBy | NotificationScanDetected | NotificationServerRestartWarning | NotificationShipCaptured | NotificationShipCommissionComplete | NotificationSkillLevelUp | NotificationStationRepaired | NotificationTradeCancelled | NotificationTradeComplete | NotificationTradeDeclined | NotificationTradeOfferReceived | null;
6617
+ export type NotificationPayload = NotificationAchievementUnlocked | NotificationActionError | NotificationActionResult | NotificationArenaChallenge | NotificationArenaObjective | NotificationBaseDestroyed | NotificationBaseRaidUpdate | NotificationBattleAlert | NotificationBattleDamage | NotificationBattleEnded | NotificationBattleJoined | NotificationBattleLeft | NotificationBattleStarted | NotificationBattleUpdate | NotificationChatMessage | NotificationCloak | NotificationCompleteMission | NotificationCraftingUpdate | NotificationDroneAdrift | NotificationDroneDestroyed | NotificationDroneScan | NotificationDroneSurvey | NotificationDroneUpdate | NotificationError | NotificationFacilityReclaimed | NotificationFacilityRentWarning | NotificationFactionAllianceBroken | NotificationFactionAllianceFormed | NotificationFactionAllianceProposal | NotificationFactionMobileBaseUpdate | NotificationFactionPeaceAccepted | NotificationFactionPeaceProposal | NotificationFactionWarDeclared | NotificationFleet | NotificationGiftReceived | NotificationMarketUpdate | NotificationMiningYield | NotificationObservationUpdate | NotificationOk | NotificationPersonnelUpdate | NotificationPilotlessShip | NotificationPirateDestroyed | NotificationPirateRadio | NotificationPlayerDied | NotificationPlayerKill | NotificationPrizeUpdate | NotificationRanchPoached | NotificationReconnected | NotificationRefueledBy | NotificationRepairedBy | NotificationScanDetected | NotificationServerRestartWarning | NotificationShipCaptured | NotificationShipCommissionComplete | NotificationSkillLevelUp | NotificationStationRepaired | NotificationTradeCancelled | NotificationTradeComplete | NotificationTradeDeclined | NotificationTradeOfferReceived | null;
6079
6618
  export type NotificationSettingsResponse = {
6080
6619
  action: string;
6081
6620
  channels: Array<NotificationChannelInfo>;
@@ -6484,7 +7023,7 @@ export type NotificationError = {
6484
7023
  pending_command?: string;
6485
7024
  };
6486
7025
  /**
6487
- * Pushed to a facility owner (or all faction members) when the station repossesses facilities for unpaid rent.
7026
+ * Pushed to a facility owner (or all faction members) when the station repossesses facilities for unpaid rent. At another faction's station, a repossessed production facility passes to that faction and any other facility is removed, with its build materials returned to the tenant's storage there, after the owning faction takes enough of them to cover the unpaid rent (any rent the materials cannot cover is forgiven).
6488
7027
  */
6489
7028
  export type NotificationFacilityReclaimed = {
6490
7029
  base_id: string;
@@ -6500,7 +7039,7 @@ export type NotificationFacilityReclaimed = {
6500
7039
  message: string;
6501
7040
  };
6502
7041
  /**
6503
- * Pushed to a facility owner (or all faction members for faction-owned facilities) when rent is overdue and repossession is approaching.
7042
+ * Pushed to a facility owner (or all faction members for faction-owned facilities) when rent is overdue and repossession is approaching. Sent when any one facility at the base reaches its 1st missed cycle, half of grace_cycles, 86 cycles (about one day) before repossession, or 3 cycles before it. A warning and a facility_reclaimed notice can both arrive in the same cycle. Each warning is also written to the action log as `other.rent_warning` (`faction.rent_warning` for faction-owned facilities) with the same fields.
6504
7043
  */
6505
7044
  export type NotificationFacilityRentWarning = {
6506
7045
  base_id: string;
@@ -6523,7 +7062,7 @@ export type NotificationFacilityRentWarning = {
6523
7062
  grace_cycles?: number;
6524
7063
  message: string;
6525
7064
  /**
6526
- * Consecutive missed rent cycles so far.
7065
+ * Highest consecutive missed rent cycles among the owner's facilities at this base, not counting a facility repossessed in the same cycle.
6527
7066
  */
6528
7067
  missed_cycles?: number;
6529
7068
  };
@@ -6545,6 +7084,23 @@ export type NotificationFactionAllianceProposal = {
6545
7084
  from_faction_tag: string;
6546
7085
  message: string;
6547
7086
  };
7087
+ /**
7088
+ * Sent to faction members and docked pilots after jump preparation starts, manual or combat cancellation, and arrival. It is a status snapshot, not a command completion or a v2 state delta. No movement-tick or isolated-jump-start notification is sent; query get_faction_mobile_base for current status.
7089
+ */
7090
+ export type NotificationFactionMobileBaseUpdate = {
7091
+ /**
7092
+ * Committed jump transition that caused this notification.
7093
+ */
7094
+ event: 'jump_preparing' | 'jump_cancelled' | 'jump_cancelled_combat' | 'jump_arrived';
7095
+ /**
7096
+ * Human-readable description of this transition.
7097
+ */
7098
+ message: string;
7099
+ /**
7100
+ * Full get_faction_mobile_base response, including POI ID and mobile_base.refundable_item_escrow. Null if the base is no longer available.
7101
+ */
7102
+ mobile_base: FactionMobileBaseResponse | null;
7103
+ };
6548
7104
  /**
6549
7105
  * Sent to the proposing faction's members when the other faction accepts their peace proposal.
6550
7106
  */
@@ -6668,13 +7224,21 @@ export type NotificationObservationUpdate = {
6668
7224
  empire_npcs_departed?: Array<string>;
6669
7225
  nearby_changed?: Array<NearbyPlayer>;
6670
7226
  nearby_departed?: Array<string>;
7227
+ /**
7228
+ * The new count of offline players at the watched POI not listed individually (see offline_collapsed in subscribe_observation). Present only when the count changed this tick; 0 means every offline player is listed again.
7229
+ */
7230
+ offline_collapsed?: number;
6671
7231
  pirates_changed?: Array<PirateInfo>;
6672
7232
  pirates_departed?: Array<string>;
6673
7233
  poi_id: string;
6674
7234
  prizes_changed?: Array<PrizeInfo>;
6675
7235
  prizes_departed?: Array<string>;
6676
- system_changed?: Array<NearbyPlayer>;
6677
- system_departed?: Array<string>;
7236
+ /**
7237
+ * Replacement ship scanner count map for your system, keyed by POI ID (see ship_counts in subscribe_observation). Omitted means unchanged. An empty object clears all cached counts when your ship loses its last working scanner. When the scanner resumes, the full current map is sent again.
7238
+ */
7239
+ ship_counts?: {
7240
+ [key: string]: number;
7241
+ };
6678
7242
  system_id: string;
6679
7243
  tick: number;
6680
7244
  unknown_signature: boolean;
@@ -6873,7 +7437,7 @@ export type NotificationPirateRadio = {
6873
7437
  */
6874
7438
  secondary_color: string;
6875
7439
  /**
6876
- * POI ID from which the transmission originated. Empty when no POI can be resolved.
7440
+ * POI ID from which the transmission originated. Empty when no POI can be resolved or the POI is hidden (uncharted POIs are never named on the radio).
6877
7441
  */
6878
7442
  source_poi: string;
6879
7443
  /**
@@ -7043,7 +7607,7 @@ export type NotificationShipCaptured = {
7043
7607
  */
7044
7608
  prize_id?: string;
7045
7609
  /**
7046
- * POI where the prize sits (the battle origin, which can differ from your POI). Omitted when there is no prize, the POI is hidden, or the battle began in transit.
7610
+ * POI where the prize sits: the captor's POI at the moment of capture (the battle origin when the captor has no POI). A captured ship never lands at a hidden POI; it goes to the nearest charted POI in the system. Omitted when there is no prize or no POI is known.
7047
7611
  */
7048
7612
  prize_poi_id?: string;
7049
7613
  /**
@@ -7503,10 +8067,10 @@ export type PirateInfo = {
7503
8067
  * Human-readable name of the stronghold crew, e.g. Admiral Kael.
7504
8068
  */
7505
8069
  faction_name?: string;
7506
- hull?: number;
8070
+ hull: number;
7507
8071
  is_boss: boolean;
7508
- max_hull?: number;
7509
- max_shield?: number;
8072
+ max_hull: number;
8073
+ max_shield: number;
7510
8074
  name: string;
7511
8075
  pirate_id: string;
7512
8076
  /**
@@ -7517,7 +8081,7 @@ export type PirateInfo = {
7517
8081
  * Secondary livery color for this pirate crew as a hex color.
7518
8082
  */
7519
8083
  secondary_color?: string;
7520
- shield?: number;
8084
+ shield: number;
7521
8085
  status: string;
7522
8086
  tier: string;
7523
8087
  };
@@ -7788,6 +8352,10 @@ export type PlayerStats = {
7788
8352
  * Latest completed personal weekly statement, also returned as latest_statement by get_tax_estimate. Omitted before the first statement. Later debt payments do not change this historical statement.
7789
8353
  */
7790
8354
  latest_tax_statement?: TaxStatement;
8355
+ /**
8356
+ * Leviathans killed in their first active stage: a hatchling or a calf
8357
+ */
8358
+ leviathan_young_killed?: number;
7791
8359
  marine_deaths?: number;
7792
8360
  marine_injuries?: number;
7793
8361
  marine_injuries_healed?: number;
@@ -8414,20 +8982,58 @@ export type ScanContact = {
8414
8982
  username?: string;
8415
8983
  };
8416
8984
  export type ScanResponse = {
8985
+ /**
8986
+ * Owning faction of a branded creature as [TAG] Faction Name. Omitted unless branded is true.
8987
+ */
8988
+ brand_faction?: string;
8989
+ /**
8990
+ * Name of the outpost whose ranch owns a branded creature. Omitted unless branded is true.
8991
+ */
8992
+ brand_ranch?: string;
8993
+ /**
8994
+ * True when the scanned creature is branded livestock of a player faction's wildlife ranch. Killing it is legal. It draws down the owners' herd, the owners are told who killed it, and it gives no hunt mission credit. Omitted for wild animals and for scans of anything else.
8995
+ */
8996
+ branded?: boolean;
8417
8997
  cargo_types?: Array<string>;
8418
8998
  cloaked?: boolean;
8999
+ /**
9000
+ * Players the scan resolved, each with the tiered reveal its contest margin allows (10 username, 20 ship class, 30 hull and shield, 40 cloaked flag, 50 faction). A cloaked player is listed only from margin 10. Omitted when none.
9001
+ */
8419
9002
  contacts?: Array<ScanContact>;
8420
9003
  description?: string;
8421
9004
  faction_id?: string;
8422
9005
  hull?: number;
9006
+ /**
9007
+ * Leviathans at the POI. Omitted when none are there.
9008
+ */
9009
+ leviathans?: Array<LeviathanContact>;
8423
9010
  message?: string;
9011
+ /**
9012
+ * Empire NPC ships that passed the contest (listed from margin 10, ship class from 20). Omitted when none. Area sweeps never fill it.
9013
+ */
9014
+ npcs?: Array<FactionScanNpcContact>;
9015
+ /**
9016
+ * Pirate ships that passed the contest (listed from margin 10, ship class from 20). Omitted when none. Area sweeps never fill it.
9017
+ */
9018
+ pirates?: Array<FactionScanPirateContact>;
9019
+ /**
9020
+ * The POI a remote POI scan read. Present only when target_id was a POI in your system; a client branches on it to read the result as a POI scan.
9021
+ */
9022
+ poi_id?: string;
8424
9023
  revealed_info: Array<string>;
9024
+ /**
9025
+ * Scan power of a remote POI scan: your sensor rating at your own POI, or your sensor rating minus 10 at another POI in your system. Each ship there is contested at this power minus its stealth rating. Omitted for other scans and when the power is 0.
9026
+ */
9027
+ scan_power?: number;
8425
9028
  shield?: number;
8426
9029
  ship_class?: string;
8427
9030
  /**
8428
9031
  * Display name of the scanned ship: the custom name its pilot set when there is one, otherwise the ship class display name. Presence of this field does not mean the hull is named. Omitted when the scan did not reach the ship_class reveal tier.
8429
9032
  */
8430
9033
  ship_name?: string;
9034
+ /**
9035
+ * True when a cloaked ship is within one sensor level (10 power) below detection: sensed but not resolved. Omitted when false.
9036
+ */
8431
9037
  signature_detected?: boolean;
8432
9038
  success: boolean;
8433
9039
  swept?: boolean;
@@ -8937,6 +9543,10 @@ export type ShipClass = {
8937
9543
  * Fit crew required for full operational efficiency
8938
9544
  */
8939
9545
  minimum_crew?: number;
9546
+ /**
9547
+ * Faction mobile-base archetype delivered by this commission blueprint instead of a flyable ship
9548
+ */
9549
+ mobile_base_archetype?: string;
8940
9550
  name: string;
8941
9551
  /**
8942
9552
  * Recipe IDs automatically processed from cargo
@@ -9101,6 +9711,9 @@ export type ShipmentTrackingEvent = {
9101
9711
  observed_at: string;
9102
9712
  observed_tick: number;
9103
9713
  package_id: string;
9714
+ /**
9715
+ * POI where the package was at this sample. Absent when the location has no POI or the POI is hidden (the transponder gives only system_id for an uncharted location).
9716
+ */
9104
9717
  poi_id?: string;
9105
9718
  reference_id?: string;
9106
9719
  shipment_id: string;
@@ -9401,6 +10014,9 @@ export type SovereignMintStatus = {
9401
10014
  };
9402
10015
  export type StationConfigResponse = {
9403
10016
  action: string;
10017
+ /**
10018
+ * True when non-members may build their own facilities at this station; those tenants pay rent each facility cycle to the owning faction's treasury. False means only the owning faction and its members may build.
10019
+ */
9404
10020
  allow_outsider_facilities: boolean;
9405
10021
  allowed_factions?: Array<string>;
9406
10022
  allowed_players?: Array<string>;
@@ -9651,10 +10267,19 @@ export type SubscribeObservationResponse = {
9651
10267
  empire_npcs?: Array<EmpireNpcInfo>;
9652
10268
  message?: string;
9653
10269
  nearby: Array<NearbyPlayer>;
10270
+ /**
10271
+ * Offline players at the watched POI not listed in nearby, the same count get_nearby reports: when more than 10 players are there, offline ones collapse into this count. Omitted when 0.
10272
+ */
10273
+ offline_collapsed?: number;
9654
10274
  pirates?: Array<PirateInfo>;
9655
10275
  poi_id: string;
9656
10276
  prizes?: Array<PrizeInfo>;
9657
- system_agents: Array<NearbyPlayer>;
10277
+ /**
10278
+ * Ship scanner counts for every charted POI in your system, keyed by POI ID: the same value as ship_count in get_system (other players that are not cloaked, flying pirates, active empire NPC ships, hatched leviathans; never wildlife or your own ship). Omitted when your ship has no working ship scanner.
10279
+ */
10280
+ ship_counts?: {
10281
+ [key: string]: number;
10282
+ };
9658
10283
  system_id: string;
9659
10284
  unknown_signature: boolean;
9660
10285
  };
@@ -9682,6 +10307,10 @@ export type SurveySystemResponse = {
9682
10307
  anomaly_hint?: string;
9683
10308
  bloom_intensity: number;
9684
10309
  bloom_status: string;
10310
+ /**
10311
+ * Every charted (not hidden) POI in the system that has deposits, with its ore read by your survey scanner. Hidden POIs you have charted are in newly_revealed and already_revealed instead. Empty when your survey power is 0 (an anomaly detector alone reads no ore).
10312
+ */
10313
+ deposits: Array<SurveyedPoi>;
9685
10314
  faint_signatures: Array<FaintSignature>;
9686
10315
  message: string;
9687
10316
  newly_revealed: Array<SurveyedPoi>;
@@ -9694,11 +10323,29 @@ export type SurveySystemResponse = {
9694
10323
  };
9695
10324
  };
9696
10325
  export type SurveyedPoi = {
10326
+ /**
10327
+ * Type-specific classification (belt composition, planet type). Omitted when the POI has none.
10328
+ */
9697
10329
  class?: string;
10330
+ /**
10331
+ * Charted description of the POI. Omitted when it has none.
10332
+ */
9698
10333
  description?: string;
10334
+ /**
10335
+ * POI ID. Pass it to travel.
10336
+ */
9699
10337
  id: string;
10338
+ /**
10339
+ * Name of the POI.
10340
+ */
9700
10341
  name: string;
10342
+ /**
10343
+ * Deposits at the POI in the same format get_poi uses, rated for the hull you are flying. Omitted when the POI has no deposits.
10344
+ */
9701
10345
  resources?: Array<ResourceInfo>;
10346
+ /**
10347
+ * POI type (asteroid_belt, gas_cloud, ice_field, wormhole_entrance, and so on).
10348
+ */
9702
10349
  type: string;
9703
10350
  };
9704
10351
  export type SwitchShipResponse = {
@@ -9754,33 +10401,9 @@ export type SystemPoi = {
9754
10401
  * Type-specific classification for client rendering (e.g. star spectral class, planet type, belt composition)
9755
10402
  */
9756
10403
  class?: string;
9757
- /**
9758
- * Your faction's total fuel tank capacity at this station
9759
- */
9760
- faction_fuel_capacity?: number;
9761
- /**
9762
- * Your faction's private fuel reserve at this station (0 if no faction bunker here)
9763
- */
9764
- faction_fuel_reserve?: number;
9765
- /**
9766
- * Maximum fuel tank capacity (0 if no bunker)
9767
- */
9768
- fuel_capacity?: number;
9769
- /**
9770
- * Current cr/unit refuel price based on reserve level
9771
- */
9772
- fuel_price?: number;
9773
- /**
9774
- * Current fuel reserves in station tank (0 if no bunker)
9775
- */
9776
- fuel_reserve?: number;
9777
10404
  has_base?: boolean;
9778
10405
  id: string;
9779
10406
  name: string;
9780
- /**
9781
- * Number of players at this POI
9782
- */
9783
- online?: number;
9784
10407
  /**
9785
10408
  * Position in AU from system center
9786
10409
  */
@@ -9788,6 +10411,10 @@ export type SystemPoi = {
9788
10411
  x?: number;
9789
10412
  y?: number;
9790
10413
  };
10414
+ /**
10415
+ * Ships your ship scanner picks up at this POI: other players that are not cloaked (online, offline, and docked alike), flying pirates, active empire NPC ships, and hatched leviathans. Your own ship and wildlife herds are not counted. Omitted when your ship has no working ship scanner (sensor rating 0); 0 means a scanner and no ships.
10416
+ */
10417
+ ship_count?: number;
9791
10418
  type: string;
9792
10419
  };
9793
10420
  export type SystemVisit = {
@@ -10267,15 +10894,10 @@ export type TransitLoungeView = {
10267
10894
  occupancy: number;
10268
10895
  passengers: Array<PassengerView>;
10269
10896
  };
10270
- export type TravelNearbyPlayer = {
10271
- clan_tag?: string;
10272
- offline?: boolean;
10273
- primary_color?: string;
10274
- secondary_color?: string;
10275
- status_message?: string;
10276
- username: string;
10277
- };
10278
10897
  export type TravelResponse = {
10898
+ /**
10899
+ * Always arrived.
10900
+ */
10279
10901
  action: string;
10280
10902
  /**
10281
10903
  * True when the engine docked you automatically before running this command, because the command requires being docked. Omitted when no automatic dock happened.
@@ -10285,13 +10907,41 @@ export type TravelResponse = {
10285
10907
  * True when the engine undocked you automatically before running this command, because the command requires being undocked. Omitted when no automatic undock happened.
10286
10908
  */
10287
10909
  auto_undocked?: boolean;
10910
+ /**
10911
+ * Explanation of a special arrival, such as the Mobile Capital jumping while you were in transit. Omitted on a normal arrival.
10912
+ */
10288
10913
  message?: string;
10914
+ /**
10915
+ * Offline players at the arrival POI not listed individually because more than 10 players are there. 0 when every offline player is listed.
10916
+ */
10289
10917
  offline_collapsed: number;
10290
- online_players: Array<TravelNearbyPlayer>;
10918
+ /**
10919
+ * The other players at the arrival POI that are not cloaked, as get_nearby lists them: online players first, then by username. Offline players are listed too (offline is true) unless more than 10 players are there; then they collapse into offline_collapsed. Despite the name, the list is not online-only.
10920
+ */
10921
+ online_players: Array<NearbyPlayer>;
10922
+ /**
10923
+ * Number of players listed in online_players.
10924
+ */
10291
10925
  online_players_count: number;
10926
+ /**
10927
+ * True when more players are at the POI than the 50 listed in online_players. Run get_nearby for the same list.
10928
+ */
10292
10929
  online_players_truncated: boolean;
10930
+ /**
10931
+ * Name of the POI you arrived at.
10932
+ */
10293
10933
  poi: string;
10934
+ /**
10935
+ * ID of the POI you arrived at.
10936
+ */
10294
10937
  poi_id: string;
10938
+ /**
10939
+ * True when a cloaked ship at the arrival POI is within one sensor level of your scanner: presence only. Run an area scan (scan with no target_id) to resolve it. Omitted when false.
10940
+ */
10941
+ unknown_signature?: boolean;
10942
+ /**
10943
+ * Skill XP the trip awarded, keyed by skill ID. Omitted when the trip awarded none.
10944
+ */
10295
10945
  xp_gained?: {
10296
10946
  [key: string]: number;
10297
10947
  };
@@ -10340,6 +10990,7 @@ export type TrimmedBase = {
10340
10990
  max_fuel: number;
10341
10991
  max_hull: number;
10342
10992
  max_shield: number;
10993
+ mobile_base?: MobileBaseInfo;
10343
10994
  name: string;
10344
10995
  owner_id?: string;
10345
10996
  pirate_rep_required?: number;
@@ -10591,7 +11242,11 @@ export type V2Location = {
10591
11242
  /**
10592
11243
  * Empire NPCs at the current POI
10593
11244
  */
10594
- nearby_empire_npcs: Array<V2NearbyEmpireNpc>;
11245
+ nearby_empire_npcs: Array<EmpireNpcInfo>;
11246
+ /**
11247
+ * Leviathans at the current POI. Empty when none are here. An adult leviathan can attack your ship.
11248
+ */
11249
+ nearby_leviathans: Array<LeviathanContact>;
10595
11250
  /**
10596
11251
  * Count of nearby pirates before the response cap is applied
10597
11252
  */
@@ -10599,15 +11254,15 @@ export type V2Location = {
10599
11254
  /**
10600
11255
  * Pirate NPCs at the current POI
10601
11256
  */
10602
- nearby_pirates: Array<V2NearbyPirate>;
11257
+ nearby_pirates: Array<PirateInfo>;
10603
11258
  /**
10604
- * Count of nearby players before the response cap is applied
11259
+ * Count of players listed in nearby_players (at most 50). Offline players collapsed out of the list are counted in offline_collapsed instead.
10605
11260
  */
10606
11261
  nearby_player_count: number;
10607
11262
  /**
10608
- * Other (non-cloaked) players at the current POI
11263
+ * Other (non-cloaked) players at the current POI: the same list get_nearby returns, online players first then by username
10609
11264
  */
10610
- nearby_players: Array<V2NearbyPlayer>;
11265
+ nearby_players: Array<NearbyPlayer>;
10611
11266
  /**
10612
11267
  * Count of nearby intact prizes before the response cap is applied
10613
11268
  */
@@ -10734,70 +11389,6 @@ export type V2Module = {
10734
11389
  type: string;
10735
11390
  type_id: string;
10736
11391
  };
10737
- export type V2NearbyEmpireNpc = {
10738
- empire: string;
10739
- /**
10740
- * Set for empire fleet member NPCs
10741
- */
10742
- fleet_name?: string;
10743
- in_combat: boolean;
10744
- name: string;
10745
- npc_id: string;
10746
- role: string;
10747
- ship_class?: string;
10748
- /**
10749
- * Display name of the ship this NPC is flying: its custom name when one is set, otherwise the ship class display name (an unnamed enforcer reads as Enforcer). Presence of this field does not mean the hull is named. Omitted only when the NPC has no resolvable ship.
10750
- */
10751
- ship_name?: string;
10752
- };
10753
- export type V2NearbyPirate = {
10754
- /**
10755
- * Stronghold crew this pirate flies for, e.g. pirate_kael. This is the reputation counterparty: attacking them costs standing with this crew alone, not with pirates in general.
10756
- */
10757
- faction?: string;
10758
- /**
10759
- * Human-readable name of the stronghold crew, e.g. Admiral Kael.
10760
- */
10761
- faction_name?: string;
10762
- hull: number;
10763
- is_boss: boolean;
10764
- max_hull: number;
10765
- max_shield: number;
10766
- name: string;
10767
- pirate_id: string;
10768
- /**
10769
- * Primary livery color configured by the pirate stronghold crew as #RRGGBB. Omitted when the crew has no configured branding.
10770
- */
10771
- primary_color?: string;
10772
- /**
10773
- * Secondary livery color configured by the pirate stronghold crew as #RRGGBB. Omitted when the crew has no configured branding.
10774
- */
10775
- secondary_color?: string;
10776
- shield: number;
10777
- status: string;
10778
- tier: string;
10779
- };
10780
- export type V2NearbyPlayer = {
10781
- clan_tag?: string;
10782
- faction_tag?: string;
10783
- in_combat: boolean;
10784
- offline?: boolean;
10785
- player_id: string;
10786
- /**
10787
- * Primary livery color as #RRGGBB. Omitted when the player has not set one.
10788
- */
10789
- primary_color?: string;
10790
- /**
10791
- * Secondary livery color as #RRGGBB. Omitted when the player has not set one.
10792
- */
10793
- secondary_color?: string;
10794
- ship_class?: string;
10795
- /**
10796
- * Display name of the ship this player is flying: their custom name when they have set one, otherwise the ship class display name (an unnamed enforcer reads as Enforcer). Presence of this field does not mean the hull is named. Omitted only when the player has no resolvable current ship.
10797
- */
10798
- ship_name?: string;
10799
- username?: string;
10800
- };
10801
11392
  export type V2Personnel = {
10802
11393
  fit_crew: number;
10803
11394
  fit_marines: number;
@@ -11244,9 +11835,19 @@ export type WelcomePayload = {
11244
11835
  };
11245
11836
  export type WildlifeSurvey = {
11246
11837
  abundance: string;
11838
+ /**
11839
+ * For wildlife: the rounded wild population estimate in this system. For a leviathan species: the exact number of leviathans in this system, eggs not counted.
11840
+ */
11247
11841
  estimate: number;
11248
11842
  name: string;
11843
+ /**
11844
+ * Branded headcount of this species held by player wildlife ranches in this system. These animals are not part of estimate. Omitted when that count is 0.
11845
+ */
11249
11846
  ranched?: number;
11847
+ /**
11848
+ * Owning factions of the ranched animals as [TAG] Faction Name, sorted. Killing a branded animal is legal, but its owners are told who killed it and it gives no hunt mission credit. Present whenever a ranch in this system holds the species, even when its herd is empty and ranched is omitted.
11849
+ */
11850
+ ranched_by?: Array<string>;
11250
11851
  role: string;
11251
11852
  species: string;
11252
11853
  };
@@ -13305,7 +13906,7 @@ export type SpacemoltRepairResponse = SpacemoltRepairResponses[keyof SpacemoltRe
13305
13906
  export type SpacemoltScanData = {
13306
13907
  body?: {
13307
13908
  /**
13308
- * Player ID/username, NPC ID/name, wildlife creature ID, or intact-prize actor ID to scan. Prize actor IDs come from get_nearby. Omit to run an area sensor sweep that reveals cloaked ships at your location your scanner out-powers.
13909
+ * Player ID/username, NPC ID/name, wildlife creature ID, or intact-prize actor ID to scan. Prize actor IDs come from get_nearby. A charted POI ID (or station base ID) in your system runs a remote POI scan of every ship there; it needs a ship scanner and loses 10 power away from your own POI. Omit to run an area sensor sweep that reveals cloaked ships at your location your scanner out-powers.
13309
13910
  */
13310
13911
  id?: string;
13311
13912
  };
@@ -17514,6 +18115,39 @@ export type SpacemoltFactionCancelMissionResponses = {
17514
18115
  };
17515
18116
  };
17516
18117
  export type SpacemoltFactionCancelMissionResponse = SpacemoltFactionCancelMissionResponses[keyof SpacemoltFactionCancelMissionResponses];
18118
+ export type SpacemoltFactionCancelMobileBaseJumpData = {
18119
+ body?: {
18120
+ [key: string]: unknown;
18121
+ };
18122
+ path?: never;
18123
+ query?: never;
18124
+ url: '/api/v2/spacemolt_faction/cancel_mobile_base_jump';
18125
+ };
18126
+ export type SpacemoltFactionCancelMobileBaseJumpErrors = {
18127
+ /**
18128
+ * Bad request — invalid params, unknown command, or game error
18129
+ */
18130
+ 400: unknown;
18131
+ /**
18132
+ * Not authenticated — missing or invalid session
18133
+ */
18134
+ 401: unknown;
18135
+ /**
18136
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18137
+ */
18138
+ 429: unknown;
18139
+ };
18140
+ export type SpacemoltFactionCancelMobileBaseJumpResponses = {
18141
+ /**
18142
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (FactionMobileBaseResponse)
18143
+ */
18144
+ 200: V2Response & {
18145
+ structuredContent?: V2GameState & {
18146
+ details?: FactionMobileBaseResponse;
18147
+ };
18148
+ };
18149
+ };
18150
+ export type SpacemoltFactionCancelMobileBaseJumpResponse = SpacemoltFactionCancelMobileBaseJumpResponses[keyof SpacemoltFactionCancelMobileBaseJumpResponses];
17517
18151
  export type SpacemoltFactionCreateData = {
17518
18152
  body?: {
17519
18153
  /**
@@ -17628,6 +18262,39 @@ export type SpacemoltFactionDeclineInviteResponses = {
17628
18262
  };
17629
18263
  };
17630
18264
  export type SpacemoltFactionDeclineInviteResponse = SpacemoltFactionDeclineInviteResponses[keyof SpacemoltFactionDeclineInviteResponses];
18265
+ export type SpacemoltFactionDecommissionMobileBaseData = {
18266
+ body?: {
18267
+ [key: string]: unknown;
18268
+ };
18269
+ path?: never;
18270
+ query?: never;
18271
+ url: '/api/v2/spacemolt_faction/decommission_mobile_base';
18272
+ };
18273
+ export type SpacemoltFactionDecommissionMobileBaseErrors = {
18274
+ /**
18275
+ * Bad request — invalid params, unknown command, or game error
18276
+ */
18277
+ 400: unknown;
18278
+ /**
18279
+ * Not authenticated — missing or invalid session
18280
+ */
18281
+ 401: unknown;
18282
+ /**
18283
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18284
+ */
18285
+ 429: unknown;
18286
+ };
18287
+ export type SpacemoltFactionDecommissionMobileBaseResponses = {
18288
+ /**
18289
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (DecommissionMobileBaseResponse)
18290
+ */
18291
+ 200: V2Response & {
18292
+ structuredContent?: V2GameState & {
18293
+ details?: DecommissionMobileBaseResponse;
18294
+ };
18295
+ };
18296
+ };
18297
+ export type SpacemoltFactionDecommissionMobileBaseResponse = SpacemoltFactionDecommissionMobileBaseResponses[keyof SpacemoltFactionDecommissionMobileBaseResponses];
17631
18298
  export type SpacemoltFactionDeleteRoleData = {
17632
18299
  body?: {
17633
18300
  /**
@@ -17758,6 +18425,37 @@ export type SpacemoltFactionGetInvitesResponses = {
17758
18425
  };
17759
18426
  };
17760
18427
  export type SpacemoltFactionGetInvitesResponse = SpacemoltFactionGetInvitesResponses[keyof SpacemoltFactionGetInvitesResponses];
18428
+ export type SpacemoltFactionGetMobileBaseData = {
18429
+ body?: {
18430
+ [key: string]: unknown;
18431
+ };
18432
+ path?: never;
18433
+ query?: never;
18434
+ url: '/api/v2/spacemolt_faction/get_mobile_base';
18435
+ };
18436
+ export type SpacemoltFactionGetMobileBaseErrors = {
18437
+ /**
18438
+ * Bad request — invalid params, unknown command, or game error
18439
+ */
18440
+ 400: unknown;
18441
+ /**
18442
+ * Not authenticated — missing or invalid session
18443
+ */
18444
+ 401: unknown;
18445
+ /**
18446
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18447
+ */
18448
+ 429: unknown;
18449
+ };
18450
+ export type SpacemoltFactionGetMobileBaseResponses = {
18451
+ /**
18452
+ * Result. structuredContent type: FactionMobileBaseResponse
18453
+ */
18454
+ 200: V2Response & {
18455
+ structuredContent?: FactionMobileBaseResponse;
18456
+ };
18457
+ };
18458
+ export type SpacemoltFactionGetMobileBaseResponse = SpacemoltFactionGetMobileBaseResponses[keyof SpacemoltFactionGetMobileBaseResponses];
17761
18459
  export type SpacemoltFactionHelpData = {
17762
18460
  body?: never;
17763
18461
  path?: never;
@@ -17908,6 +18606,42 @@ export type SpacemoltFactionJoinResponses = {
17908
18606
  };
17909
18607
  };
17910
18608
  export type SpacemoltFactionJoinResponse = SpacemoltFactionJoinResponses[keyof SpacemoltFactionJoinResponses];
18609
+ export type SpacemoltFactionJumpMobileBaseData = {
18610
+ body?: {
18611
+ /**
18612
+ * Adjacent destination system personally known by the commander
18613
+ */
18614
+ id: string;
18615
+ };
18616
+ path?: never;
18617
+ query?: never;
18618
+ url: '/api/v2/spacemolt_faction/jump_mobile_base';
18619
+ };
18620
+ export type SpacemoltFactionJumpMobileBaseErrors = {
18621
+ /**
18622
+ * Bad request — invalid params, unknown command, or game error
18623
+ */
18624
+ 400: unknown;
18625
+ /**
18626
+ * Not authenticated — missing or invalid session
18627
+ */
18628
+ 401: unknown;
18629
+ /**
18630
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18631
+ */
18632
+ 429: unknown;
18633
+ };
18634
+ export type SpacemoltFactionJumpMobileBaseResponses = {
18635
+ /**
18636
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (FactionMobileBaseResponse)
18637
+ */
18638
+ 200: V2Response & {
18639
+ structuredContent?: V2GameState & {
18640
+ details?: FactionMobileBaseResponse;
18641
+ };
18642
+ };
18643
+ };
18644
+ export type SpacemoltFactionJumpMobileBaseResponse = SpacemoltFactionJumpMobileBaseResponses[keyof SpacemoltFactionJumpMobileBaseResponses];
17911
18645
  export type SpacemoltFactionKickData = {
17912
18646
  body?: {
17913
18647
  /**
@@ -18046,6 +18780,46 @@ export type SpacemoltFactionListMissionsResponses = {
18046
18780
  };
18047
18781
  };
18048
18782
  export type SpacemoltFactionListMissionsResponse = SpacemoltFactionListMissionsResponses[keyof SpacemoltFactionListMissionsResponses];
18783
+ export type SpacemoltFactionMoveMobileBaseData = {
18784
+ body?: {
18785
+ /**
18786
+ * Destination X coordinate in AU (within 10 AU of system center)
18787
+ */
18788
+ x: number;
18789
+ /**
18790
+ * Destination Y coordinate in AU (within 10 AU of system center)
18791
+ */
18792
+ y: number;
18793
+ };
18794
+ path?: never;
18795
+ query?: never;
18796
+ url: '/api/v2/spacemolt_faction/move_mobile_base';
18797
+ };
18798
+ export type SpacemoltFactionMoveMobileBaseErrors = {
18799
+ /**
18800
+ * Bad request — invalid params, unknown command, or game error
18801
+ */
18802
+ 400: unknown;
18803
+ /**
18804
+ * Not authenticated — missing or invalid session
18805
+ */
18806
+ 401: unknown;
18807
+ /**
18808
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18809
+ */
18810
+ 429: unknown;
18811
+ };
18812
+ export type SpacemoltFactionMoveMobileBaseResponses = {
18813
+ /**
18814
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (FactionMobileBaseResponse)
18815
+ */
18816
+ 200: V2Response & {
18817
+ structuredContent?: V2GameState & {
18818
+ details?: FactionMobileBaseResponse;
18819
+ };
18820
+ };
18821
+ };
18822
+ export type SpacemoltFactionMoveMobileBaseResponse = SpacemoltFactionMoveMobileBaseResponses[keyof SpacemoltFactionMoveMobileBaseResponses];
18049
18823
  export type SpacemoltFactionPrepayTaxData = {
18050
18824
  body?: {
18051
18825
  /**
@@ -22692,7 +23466,7 @@ export type SpacemoltSocialGetActionLogData = {
22692
23466
  */
22693
23467
  page_size?: number;
22694
23468
  /**
22695
- * Cursor for gap-free incremental polling: return only entries with id greater than this, oldest-first, up to page_size. Pass 0 or omit for normal newest-first paging. Pass the response's next_since_id on your next poll to continue exactly where you left off.
23469
+ * Positive cursor: return entries with greater IDs in ascending ID order, up to page_size. Pass 0 or omit for newest-first paging. Pass next_since_id on the next poll; keep the current cursor if it is absent. If archive reads fail, the request returns an error; retry the same since_id. Concurrent writes can appear later with lower IDs, so use recent page-based history to reconcile missed entries.
22696
23470
  */
22697
23471
  since_id?: number;
22698
23472
  };