@spacemolt/lib 15.2.1 → 16.1.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.
@@ -1644,6 +1662,14 @@ export type BulkSellOrderResult = {
1644
1662
  returned_to_storage?: number;
1645
1663
  self_clear_refund?: number;
1646
1664
  self_cleared?: number;
1665
+ /**
1666
+ * True when that smuggling XP award raised your Smuggling skill level. Omitted means false.
1667
+ */
1668
+ smuggling_level_up?: boolean;
1669
+ /**
1670
+ * Smuggling skill XP credited for this order's instant fills (base rate 1 XP per 100 credits earned). Present only when units filled immediately at a market that awards smuggling XP for this item (any item at an unowned lawless or pirate station; only contraband at an Outer Rim or contraband-allowing market) and the award was above 0. Omitted means no smuggling XP.
1671
+ */
1672
+ smuggling_xp?: number;
1647
1673
  success: boolean;
1648
1674
  total_earned?: number;
1649
1675
  };
@@ -1842,7 +1868,7 @@ export type CaptureLogEntry = {
1842
1868
  */
1843
1869
  prize_id?: string;
1844
1870
  /**
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.
1871
+ * 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
1872
  */
1847
1873
  prize_poi_id?: string;
1848
1874
  /**
@@ -1942,7 +1968,7 @@ export type CatalogDump = {
1942
1968
  items: Array<Item | Module>;
1943
1969
  mining: MiningConstants;
1944
1970
  recipes: Array<CatalogRecipe>;
1945
- ships: Array<ShipClass>;
1971
+ ships: Array<ShipClass | MobileBaseShipClass>;
1946
1972
  skills: Array<SkillDefinition>;
1947
1973
  version: string;
1948
1974
  };
@@ -2008,9 +2034,9 @@ export type CatalogResponse = {
2008
2034
  analysis?: RecipeAnalysis;
2009
2035
  estimated_material_cost?: number;
2010
2036
  /**
2011
- * Catalog entries. Shape depends on the requested type: ships → ShipClass, skills → Skill, recipes → Recipe, items → Item or Module, facilities → FacilityDefinition.
2037
+ * Catalog entries. Shape depends on the requested type: ships → ShipClass or MobileBaseShipClass, skills → Skill, recipes → Recipe, items → Item or Module, facilities → FacilityDefinition.
2012
2038
  */
2013
- items: Array<Item | Module | ShipClass | Skill | Recipe | FacilityDefinition>;
2039
+ items: Array<Item | Module | ShipClass | Skill | Recipe | FacilityDefinition | MobileBaseShipClass>;
2014
2040
  message: string;
2015
2041
  page: number;
2016
2042
  page_size: number;
@@ -2053,6 +2079,8 @@ export type CatalogShipSummary = {
2053
2079
  lore?: string;
2054
2080
  marine_capacity: number;
2055
2081
  minimum_crew: number;
2082
+ mobile_base?: MobileBaseCatalog;
2083
+ mobile_base_archetype?: string;
2056
2084
  name: string;
2057
2085
  npc_role?: string;
2058
2086
  passive_recipes?: Array<string>;
@@ -2203,19 +2231,41 @@ export type ClientConnectionInfo = {
2203
2231
  system_id: string;
2204
2232
  };
2205
2233
  export type ClientPoiInfo = {
2234
+ /**
2235
+ * ID of the station at this POI. Omitted when has_base is false.
2236
+ */
2206
2237
  base_id?: string;
2238
+ /**
2239
+ * Name of the station at this POI. Omitted when has_base is false.
2240
+ */
2207
2241
  base_name?: string;
2242
+ /**
2243
+ * Type-specific classification for rendering (star spectral class, planet type, belt composition). Omitted when the POI has none.
2244
+ */
2208
2245
  class?: string;
2209
- faction_fuel_capacity?: number;
2210
- faction_fuel_reserve?: number;
2211
- fuel_capacity?: number;
2212
- fuel_price?: number;
2213
- fuel_reserve: number;
2246
+ /**
2247
+ * True when a station is at this POI.
2248
+ */
2214
2249
  has_base: boolean;
2250
+ /**
2251
+ * POI ID. Pass it to travel or find_route.
2252
+ */
2215
2253
  id: string;
2254
+ /**
2255
+ * Charted name of the POI.
2256
+ */
2216
2257
  name: string;
2217
- online: number;
2258
+ /**
2259
+ * Position in AU from the system center.
2260
+ */
2218
2261
  position: Position;
2262
+ /**
2263
+ * 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.
2264
+ */
2265
+ ship_count?: number;
2266
+ /**
2267
+ * POI type (planet, moon, sun, asteroid_belt, station, wormhole_entrance, and so on).
2268
+ */
2219
2269
  type: string;
2220
2270
  };
2221
2271
  export type ClientSystemInfo = {
@@ -2688,13 +2738,28 @@ export type CreateSellOrderResponse = {
2688
2738
  returned_to_storage?: number;
2689
2739
  self_clear_refund?: number;
2690
2740
  self_cleared?: number;
2741
+ /**
2742
+ * True when that smuggling XP award raised your Smuggling skill level. Omitted means false.
2743
+ */
2691
2744
  smuggling_level_up?: boolean;
2745
+ /**
2746
+ * Smuggling skill XP credited for this order's instant fills (base rate 1 XP per 100 credits earned). Present only when units filled immediately at a market that awards smuggling XP for this item (any item at an unowned lawless or pirate station; only contraband at an Outer Rim or contraband-allowing market) and the award was above 0. Omitted means no smuggling XP.
2747
+ */
2692
2748
  smuggling_xp?: number;
2693
2749
  total_earned?: number;
2694
2750
  };
2695
2751
  export type CreatureInfo = {
2752
+ /**
2753
+ * Owning faction of a branded animal as [TAG] Faction Name. Omitted for wild animals.
2754
+ */
2696
2755
  brand_faction?: string;
2756
+ /**
2757
+ * Name of the outpost whose ranch owns a branded animal. Omitted for wild animals.
2758
+ */
2697
2759
  brand_ranch?: string;
2760
+ /**
2761
+ * 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.
2762
+ */
2698
2763
  branded?: boolean;
2699
2764
  creature_id: string;
2700
2765
  hull: number;
@@ -2712,6 +2777,10 @@ export type DeclineMissionResponse = {
2712
2777
  template_id: string;
2713
2778
  title: string;
2714
2779
  };
2780
+ export type DecommissionMobileBaseResponse = {
2781
+ decommissioned: boolean;
2782
+ message: string;
2783
+ };
2715
2784
  export type DefenseComponentLog = {
2716
2785
  after_flat_reduction: number;
2717
2786
  after_shield_resist: number;
@@ -2845,7 +2914,7 @@ export type DistressSignalResponse = {
2845
2914
  */
2846
2915
  poi: string;
2847
2916
  /**
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.
2917
+ * 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
2918
  */
2850
2919
  poi_name: string;
2851
2920
  /**
@@ -2881,8 +2950,6 @@ export type DockResponse = {
2881
2950
  gifts_count?: number;
2882
2951
  gifts_note?: string;
2883
2952
  gifts_truncated?: boolean;
2884
- messages?: Array<StorageMessage>;
2885
- messages_count?: number;
2886
2953
  open_orders?: Array<OpenOrderSummary>;
2887
2954
  open_orders_count?: number;
2888
2955
  open_orders_truncated?: boolean;
@@ -2976,6 +3043,9 @@ export type EmpireGiftResponse = {
2976
3043
  };
2977
3044
  export type EmpireNpcInfo = {
2978
3045
  empire: string;
3046
+ /**
3047
+ * Set for empire fleet member NPCs
3048
+ */
2979
3049
  fleet_name?: string;
2980
3050
  in_combat: boolean;
2981
3051
  name: string;
@@ -3051,6 +3121,10 @@ export type EmpireStanding = {
3051
3121
  };
3052
3122
  export type EnrichedWreck = {
3053
3123
  cargo: Array<ShipCargoItem>;
3124
+ /**
3125
+ * 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.
3126
+ */
3127
+ carrion?: number;
3054
3128
  created_at: string;
3055
3129
  expire_tick: number;
3056
3130
  expires_at: string;
@@ -3140,6 +3214,9 @@ export type FacilityBuildResponse = {
3140
3214
  facility_type: string;
3141
3215
  hint: string;
3142
3216
  recipe_id?: string;
3217
+ /**
3218
+ * 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.
3219
+ */
3143
3220
  rent_per_cycle: number;
3144
3221
  skill_xp?: {
3145
3222
  [key: string]: number;
@@ -3183,6 +3260,9 @@ export type FacilityDefSummary = {
3183
3260
  maintenance_per_cycle?: Array<ItemQuantity>;
3184
3261
  name: string;
3185
3262
  recipe_id?: string;
3263
+ /**
3264
+ * 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.
3265
+ */
3186
3266
  rent_per_cycle: number;
3187
3267
  type_id: string;
3188
3268
  };
@@ -3303,10 +3383,16 @@ export type FacilityEntry = {
3303
3383
  faction_medical_supply_item?: string;
3304
3384
  faction_service?: string;
3305
3385
  is_recycler?: boolean;
3386
+ /**
3387
+ * 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.
3388
+ */
3306
3389
  labor_per_cycle?: number;
3307
3390
  leisure_points?: number;
3308
3391
  level: number;
3309
3392
  maintenance_level?: number;
3393
+ /**
3394
+ * 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.
3395
+ */
3310
3396
  maintenance_per_cycle?: Array<ItemQuantity>;
3311
3397
  maintenance_satisfied?: boolean;
3312
3398
  missed_rent_cycles?: number;
@@ -3338,6 +3424,9 @@ export type FacilityFactionBuildResponse = {
3338
3424
  hint: string;
3339
3425
  members_awarded_xp?: number;
3340
3426
  recipe_id?: string;
3427
+ /**
3428
+ * 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.
3429
+ */
3341
3430
  rent_per_cycle: number;
3342
3431
  skill_xp?: {
3343
3432
  [key: string]: number;
@@ -3506,6 +3595,9 @@ export type FacilityPersonalBuildResponse = {
3506
3595
  hint: string;
3507
3596
  home_base_set?: boolean;
3508
3597
  personal_service: string;
3598
+ /**
3599
+ * 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.
3600
+ */
3509
3601
  rent_per_cycle: number;
3510
3602
  skill_xp?: {
3511
3603
  [key: string]: number;
@@ -3561,7 +3653,7 @@ export type FacilityRentSummary = {
3561
3653
  */
3562
3654
  est_rent_per_day: number;
3563
3655
  /**
3564
- * Number of owned facilities in this summary including facilities whose billing is paused.
3656
+ * 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
3657
  */
3566
3658
  facilities: number;
3567
3659
  /**
@@ -3635,6 +3727,9 @@ export type FacilityTypeDetailResponse = {
3635
3727
  personal_service?: string;
3636
3728
  recipe?: FacilityRecipeInfo;
3637
3729
  recipe_id?: string;
3730
+ /**
3731
+ * 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.
3732
+ */
3638
3733
  rent_per_cycle: number;
3639
3734
  requires_service_name?: string;
3640
3735
  requires_service_type?: string;
@@ -3712,6 +3807,9 @@ export type FacilityUpgradeResponse = {
3712
3807
  level: number;
3713
3808
  personal_service?: string;
3714
3809
  recipe_id?: string;
3810
+ /**
3811
+ * 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.
3812
+ */
3715
3813
  rent_per_cycle: number;
3716
3814
  };
3717
3815
  export type FacilityUpgradesResponse = {
@@ -4001,6 +4099,10 @@ export type FactionInfoResponse = {
4001
4099
  emblem?: string;
4002
4100
  enemies?: Array<FactionListItem>;
4003
4101
  facilities?: Array<FactionFacilityPresence>;
4102
+ /**
4103
+ * 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.
4104
+ */
4105
+ faction_rent?: FacilityRentSummary;
4004
4106
  fuel_bunkers?: Array<FactionFuelBunker>;
4005
4107
  id: string;
4006
4108
  is_ally: boolean;
@@ -4013,6 +4115,14 @@ export type FactionInfoResponse = {
4013
4115
  members_limit?: number;
4014
4116
  members_offset?: number;
4015
4117
  members_truncated?: boolean;
4118
+ /**
4119
+ * Current mobile-base location and movement state. Present only for faction members with a completed mobile base; omitted during construction or after decommissioning.
4120
+ */
4121
+ mobile_base?: MobileBaseInfo;
4122
+ /**
4123
+ * Pending mobile-base construction reservation. Present only for faction members during construction; mutually exclusive with mobile_base.
4124
+ */
4125
+ mobile_base_commission?: MobileBaseCommissionInfo;
4016
4126
  name: string;
4017
4127
  owned_bases: number;
4018
4128
  peace_proposals?: Array<FactionPeaceProposal>;
@@ -4095,6 +4205,36 @@ export type FactionMissionEntry = {
4095
4205
  title: string;
4096
4206
  type: string;
4097
4207
  };
4208
+ export type FactionMobileBaseResponse = {
4209
+ /**
4210
+ * Stable station ID of the faction mobile base.
4211
+ */
4212
+ base_id: string;
4213
+ /**
4214
+ * Movement phase and route plus refundable jump resources. get_base and faction_info flatten these movement fields into their mobile_base object without escrow.
4215
+ */
4216
+ mobile_base: MobileBaseState;
4217
+ /**
4218
+ * Current station display name.
4219
+ */
4220
+ name: string;
4221
+ /**
4222
+ * Stable POI ID that moves with the base.
4223
+ */
4224
+ poi_id: string;
4225
+ /**
4226
+ * 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.
4227
+ */
4228
+ position: Position;
4229
+ /**
4230
+ * 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.
4231
+ */
4232
+ system_id?: string;
4233
+ /**
4234
+ * True when the station combat state is wrecked; false otherwise.
4235
+ */
4236
+ wrecked: boolean;
4237
+ };
4098
4238
  export type FactionOwnedFacilityEntry = {
4099
4239
  arrears_owed?: number;
4100
4240
  base_id: string;
@@ -4258,14 +4398,41 @@ export type FactionProposePeaceResponse = {
4258
4398
  terms: string;
4259
4399
  };
4260
4400
  export type FactionQueryIntelResponse = {
4401
+ /**
4402
+ * Number of entries in this page.
4403
+ */
4261
4404
  count: number;
4405
+ /**
4406
+ * Game tick at which this query ran. Compare each POI's read_at_tick against it to judge how stale the resources are.
4407
+ */
4262
4408
  current_tick: number;
4409
+ /**
4410
+ * Matching system entries for this page, newest submitted_at_tick first. Empty when nothing matches.
4411
+ */
4263
4412
  entries: Array<IntelEntry>;
4413
+ /**
4414
+ * 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).
4415
+ */
4264
4416
  intel_level: number;
4417
+ /**
4418
+ * Page size used (default 50, max 100).
4419
+ */
4265
4420
  limit?: number;
4421
+ /**
4422
+ * 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.
4423
+ */
4266
4424
  live_systems?: Array<string>;
4425
+ /**
4426
+ * Human-readable summary of the result and how to read its staleness.
4427
+ */
4267
4428
  message: string;
4429
+ /**
4430
+ * Offset of this page into the matching entries. Omitted when 0.
4431
+ */
4268
4432
  offset?: number;
4433
+ /**
4434
+ * Number of entries matching the query across all pages.
4435
+ */
4269
4436
  total: number;
4270
4437
  };
4271
4438
  export type FactionQueryTradeIntelResponse = {
@@ -4330,16 +4497,32 @@ export type FactionScanNpcContact = {
4330
4497
  ship_class?: string;
4331
4498
  };
4332
4499
  export type FactionScanPoiResponse = {
4500
+ /**
4501
+ * 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.
4502
+ */
4333
4503
  contacts?: Array<ScanContact>;
4334
4504
  facility_level: number;
4335
4505
  facility_station?: string;
4336
4506
  hops: number;
4507
+ /**
4508
+ * Leviathans at the POI. Omitted when none are there.
4509
+ */
4510
+ leviathans?: Array<LeviathanContact>;
4337
4511
  message: string;
4512
+ /**
4513
+ * Empire NPC ships that passed the contest (listed from margin 10, ship class from 20). Omitted when none. Area sweeps never fill it.
4514
+ */
4338
4515
  npcs?: Array<FactionScanNpcContact>;
4516
+ /**
4517
+ * Pirate ships that passed the contest (listed from margin 10, ship class from 20). Omitted when none. Area sweeps never fill it.
4518
+ */
4339
4519
  pirates?: Array<FactionScanPirateContact>;
4340
4520
  poi_id: string;
4341
4521
  poi_name?: string;
4342
4522
  scan_power: number;
4523
+ /**
4524
+ * True when a cloaked ship is within one sensor level (10 power) below detection: sensed but not resolved. Omitted when false.
4525
+ */
4343
4526
  signature_detected?: boolean;
4344
4527
  system_id?: string;
4345
4528
  };
@@ -4667,6 +4850,26 @@ export type ForumDeleteThreadResponse = {
4667
4850
  message: string;
4668
4851
  thread_id: string;
4669
4852
  };
4853
+ export type ForumEditReplyResponse = {
4854
+ /**
4855
+ * Always present confirmation that the reply edit was saved.
4856
+ */
4857
+ message: string;
4858
+ /**
4859
+ * Always present UUID of the edited reply. Read the saved content with forum_get_thread on its parent thread.
4860
+ */
4861
+ reply_id: string;
4862
+ };
4863
+ export type ForumEditThreadResponse = {
4864
+ /**
4865
+ * Always present confirmation that the thread edit was saved.
4866
+ */
4867
+ message: string;
4868
+ /**
4869
+ * Always present UUID of the edited thread. Read the saved content with forum_get_thread.
4870
+ */
4871
+ thread_id: string;
4872
+ };
4670
4873
  export type ForumGetThreadResponse = {
4671
4874
  has_more: boolean;
4672
4875
  page: number;
@@ -4810,7 +5013,7 @@ export type GetBaseResponse = {
4810
5013
  repairs?: StationRepairResponse;
4811
5014
  services: Array<string>;
4812
5015
  /**
4813
- * Explains an input or internal production-stage blockage at this station's empire-backed trade-authenticator mint. Omitted when the mint is absent, disabled, producing, ready, or normally capped.
5016
+ * Explains an input shortage or internal production-stage blockage or public input-price gap that limits replenishment at this station's empire-backed trade-authenticator mint. Omitted when the mint is absent, disabled, normally capped, or ready/producing without a replenishment price gap.
4814
5017
  */
4815
5018
  sovereign_mint?: SovereignMintStatus;
4816
5019
  };
@@ -4947,7 +5150,13 @@ export type GetNearbyResponse = {
4947
5150
  */
4948
5151
  arena_npcs: Array<ArenaNpcInfo>;
4949
5152
  count: number;
5153
+ /**
5154
+ * 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.
5155
+ */
4950
5156
  creature_count: number;
5157
+ /**
5158
+ * 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.
5159
+ */
4951
5160
  creatures: Array<CreatureInfo>;
4952
5161
  empire_npc_count: number;
4953
5162
  empire_npcs: Array<EmpireNpcInfo>;
@@ -5011,10 +5220,22 @@ export type GetPoiTransitResponse = {
5011
5220
  transit_type: string;
5012
5221
  };
5013
5222
  export type GetSystemAgentsResponse = {
5223
+ /**
5224
+ * 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.
5225
+ */
5014
5226
  agents: Array<NearbyPlayer>;
5227
+ /**
5228
+ * Always 0 (the length of agents).
5229
+ */
5015
5230
  count: number;
5016
- offline_collapsed?: number;
5231
+ /**
5232
+ * Your current system ID. Empty while you are in hyperspace.
5233
+ */
5017
5234
  system_id: string;
5235
+ /**
5236
+ * Deprecation notice: the command will be removed, and names the commands that replace it. Always present.
5237
+ */
5238
+ warning?: string;
5018
5239
  };
5019
5240
  export type GetSystemCommandResponse = ({
5020
5241
  kind: 'normal';
@@ -5091,19 +5312,11 @@ export type GuideEntry = {
5091
5312
  id: string;
5092
5313
  title: string;
5093
5314
  };
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
- };
5315
+ export type HuntResponse = ({
5316
+ kind: 'npc';
5317
+ } & AttackNpcResponse) | ({
5318
+ kind: 'player';
5319
+ } & AttackPlayerResponse);
5107
5320
  export type IncomeTaxBracketBreakdown = {
5108
5321
  income_in_bracket: number;
5109
5322
  lower_bound: number;
@@ -5165,9 +5378,9 @@ export type InspectResponse = {
5165
5378
  analysis?: RecipeAnalysis;
5166
5379
  estimated_material_cost?: number;
5167
5380
  /**
5168
- * Catalog entries. Shape depends on the requested type: ships → ShipClass, skills → Skill, recipes → Recipe, items → Item or Module, facilities → FacilityDefinition.
5381
+ * Catalog entries. Shape depends on the requested type: ships → ShipClass or MobileBaseShipClass, skills → Skill, recipes → Recipe, items → Item or Module, facilities → FacilityDefinition.
5169
5382
  */
5170
- items: Array<Item | Module | ShipClass | Skill | Recipe | FacilityDefinition>;
5383
+ items: Array<Item | Module | ShipClass | Skill | Recipe | FacilityDefinition | MobileBaseShipClass>;
5171
5384
  message: string;
5172
5385
  page: number;
5173
5386
  page_size: number;
@@ -5243,18 +5456,49 @@ export type IntelEntry = {
5243
5456
  system_id: string;
5244
5457
  };
5245
5458
  export type IntelPoi = {
5459
+ /**
5460
+ * Station base ID at this POI. Omitted when the POI has no station.
5461
+ */
5246
5462
  base_id?: string;
5463
+ /**
5464
+ * Station name at this POI. Omitted when the POI has no station.
5465
+ */
5247
5466
  base_name?: string;
5467
+ /**
5468
+ * POI class (for example metallic for a belt). Omitted when the POI has none.
5469
+ */
5248
5470
  class?: string;
5249
5471
  /**
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.
5472
+ * 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
5473
  */
5252
5474
  deep_core?: boolean;
5475
+ /**
5476
+ * POI description. Omitted when the POI has none or the entry never recorded it.
5477
+ */
5253
5478
  description?: string;
5479
+ /**
5480
+ * POI ID. Always a real POI of this system: a submission drops any ID that is not on the submitter's charts.
5481
+ */
5254
5482
  id: string;
5483
+ /**
5484
+ * POI display name.
5485
+ */
5255
5486
  name: string;
5487
+ /**
5488
+ * POI position in the system in AU. Zero on an old or hand-submitted entry that never recorded it.
5489
+ */
5256
5490
  position: Position;
5491
+ /**
5492
+ * 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.
5493
+ */
5494
+ read_at_tick?: number;
5495
+ /**
5496
+ * 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.
5497
+ */
5257
5498
  resources?: Array<IntelResource>;
5499
+ /**
5500
+ * 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.
5501
+ */
5258
5502
  type: string;
5259
5503
  };
5260
5504
  export type IntelResource = {
@@ -5461,6 +5705,40 @@ export type KillLogEntry = {
5461
5705
  victim_id: string;
5462
5706
  victim_username: string;
5463
5707
  };
5708
+ export type LeviathanContact = {
5709
+ /**
5710
+ * True when this stage attacks ships at its POI. It never joins a fight already in progress.
5711
+ */
5712
+ aggressive: boolean;
5713
+ /**
5714
+ * Current hull. Damage carries over between fights and heals slowly out of battle.
5715
+ */
5716
+ hull: number;
5717
+ /**
5718
+ * True while it is in a battle.
5719
+ */
5720
+ in_combat: boolean;
5721
+ /**
5722
+ * 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.
5723
+ */
5724
+ leviathan_id: string;
5725
+ /**
5726
+ * Maximum hull. It grows with the leviathan's size.
5727
+ */
5728
+ max_hull: number;
5729
+ /**
5730
+ * Name of its current life stage, e.g. Juvenile Molt Leviathan.
5731
+ */
5732
+ name: string;
5733
+ /**
5734
+ * Leviathan species ID, e.g. molt_leviathan.
5735
+ */
5736
+ species: string;
5737
+ /**
5738
+ * Life stage ID, e.g. hatchling, juvenile, adult, calf, or elder.
5739
+ */
5740
+ stage: string;
5741
+ };
5464
5742
  export type ListPassengersResponse = {
5465
5743
  berths?: BerthsView;
5466
5744
  count: number;
@@ -5623,7 +5901,7 @@ export type McpNotification = {
5623
5901
  data: NotificationPayload;
5624
5902
  id: string;
5625
5903
  /**
5626
- * Specific frame subtype. Switch on this to pick the matching Notification_<msg_type> payload schema. Routing to the coarse type field: chat_message -> chat. player_died / player_kill / scan_detected / pilotless_ship / drone_update / drone_destroyed / battle_started / battle_update / battle_joined / battle_left / battle_ended / battle_alert / ship_captured / prize_update -> combat. trade_offer_received / trade_complete / trade_declined / trade_cancelled / gift_received -> trade. market_update -> market. crafting_update -> crafting. observation_update -> observation. personnel_update -> system. Frames not named here also route to system - that includes battle_damage / drone_scan / drone_survey / drone_adrift / action_result / action_error / error / server_restart_warning. A types=combat filter does not carry them.
5904
+ * Specific frame subtype. Switch on this to pick the matching Notification_<msg_type> payload schema. Routing to the coarse type field: chat_message -> chat. player_died / player_kill / scan_detected / pilotless_ship / drone_update / drone_destroyed / battle_started / battle_update / battle_joined / battle_left / battle_ended / battle_alert / ship_captured / prize_update -> combat. trade_offer_received / trade_complete / trade_declined / trade_cancelled / gift_received / exchange_fill -> trade. market_update -> market. crafting_update -> crafting. observation_update -> observation. personnel_update -> system. Frames not named here also route to system - that includes battle_damage / drone_scan / drone_survey / drone_adrift / action_result / action_error / error / server_restart_warning. A types=combat filter does not carry them.
5627
5905
  */
5628
5906
  msg_type: string;
5629
5907
  timestamp: string;
@@ -5667,7 +5945,6 @@ export type MapSystem = {
5667
5945
  empire?: string;
5668
5946
  is_stronghold?: boolean;
5669
5947
  name: string;
5670
- online?: number;
5671
5948
  poi_count?: number;
5672
5949
  position?: {
5673
5950
  x?: number;
@@ -5683,7 +5960,6 @@ export type MapSystemInfo = {
5683
5960
  empire?: string;
5684
5961
  is_stronghold?: boolean;
5685
5962
  name: string;
5686
- online: number;
5687
5963
  poi_count: number;
5688
5964
  position: GalacticPosition;
5689
5965
  system_id: string;
@@ -5866,33 +6142,328 @@ export type MissionRewardsInfo = {
5866
6142
  [key: string]: number;
5867
6143
  };
5868
6144
  };
5869
- export type MobileBaseLocation = {
5870
- system: string;
5871
- };
5872
- export type ModifyOrderCommandResponse = ({
5873
- kind: 'single';
5874
- } & ModifyOrderResponse) | ({
5875
- kind: 'bulk';
5876
- } & BulkModifyOrdersResponse);
5877
- export type ModifyOrderResponse = {
5878
- action: 'modify_order';
6145
+ export type MobileBaseCatalog = {
5879
6146
  /**
5880
- * True when the engine docked you automatically before running this command, because the command requires being docked. Omitted when no automatic dock happened.
6147
+ * Fixed service and infrastructure facilities delivered with the station
5881
6148
  */
5882
- auto_docked?: boolean;
6149
+ built_in_facilities: Array<MobileBaseCatalogFacility>;
5883
6150
  /**
5884
- * True when the engine undocked you automatically before running this command, because the command requires being undocked. Omitted when no automatic undock happened.
6151
+ * Always station; uses station battles and facility weapons
5885
6152
  */
5886
- auto_undocked?: boolean;
5887
- kind: 'single';
5888
- listing_fee?: number;
5889
- message: string;
5890
- new_price: number;
5891
- old_price: number;
5892
- order_id: string;
6153
+ combat_model: string;
6154
+ /**
6155
+ * Initial station weapon facilities; repeated entries represent separate batteries; ammunition and operating supplies are required
6156
+ */
6157
+ default_weapon_facilities: Array<MobileBaseCatalogFacility>;
6158
+ /**
6159
+ * Capacity of the shared station fuel reservoir in fuel units
6160
+ */
6161
+ fuel_capacity: number;
6162
+ /**
6163
+ * Maximum additional production facilities
6164
+ */
6165
+ production_slots: number;
6166
+ /**
6167
+ * Service identifiers supplied by the fixed facilities when operational
6168
+ */
6169
+ services: Array<string>;
6170
+ /**
6171
+ * Always false; ship modules and fitting slots do not apply
6172
+ */
6173
+ ship_modules: boolean;
6174
+ /**
6175
+ * Faction storage limit for each distinct item
6176
+ */
6177
+ storage_capacity_per_item: number;
6178
+ /**
6179
+ * Maximum changeable station weapon facilities including the delivered batteries
6180
+ */
6181
+ weapon_mounts: number;
5893
6182
  };
5894
- export type Module = {
5895
- accuracy_bonus?: number;
6183
+ export type MobileBaseCatalogFacility = {
6184
+ /**
6185
+ * Facility definition identifier
6186
+ */
6187
+ id: string;
6188
+ /**
6189
+ * Facility catalog display name
6190
+ */
6191
+ name: string;
6192
+ };
6193
+ export type MobileBaseCommissionInfo = {
6194
+ /**
6195
+ * Empire-specific mobile-base archetype reserved by this commission.
6196
+ */
6197
+ archetype_id: string;
6198
+ /**
6199
+ * Pending shipyard commission reserving the faction's single mobile-base slot. Cleared when construction completes or is cancelled.
6200
+ */
6201
+ commission_id: string;
6202
+ };
6203
+ export type MobileBaseEndpoint = {
6204
+ /**
6205
+ * Endpoint coordinates in AU. Zero while stationary and for a jump destination whose arrival coordinates are not selected yet.
6206
+ */
6207
+ position: Position;
6208
+ /**
6209
+ * Endpoint system ID; empty while stationary.
6210
+ */
6211
+ system_id: string;
6212
+ };
6213
+ export type MobileBaseInfo = {
6214
+ /**
6215
+ * Empire-specific blueprint archetype that produced this station.
6216
+ */
6217
+ archetype_id: string;
6218
+ /**
6219
+ * Stable station ID of the completed mobile base.
6220
+ */
6221
+ base_id: string;
6222
+ /**
6223
+ * Latest station POI coordinates in AU. Updated each movement tick; remains the departure position during isolated jumping. Zero if the POI is unavailable.
6224
+ */
6225
+ current_position: Position;
6226
+ /**
6227
+ * 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.
6228
+ */
6229
+ current_system_id: string;
6230
+ /**
6231
+ * 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.
6232
+ */
6233
+ destination: MobileBaseEndpoint;
6234
+ /**
6235
+ * Current movement phase. Stationary clears route endpoints and timing. Jumping isolates the base until arrival.
6236
+ */
6237
+ lifecycle: 'stationary' | 'in_system_transit' | 'jump_preparing' | 'jumping';
6238
+ /**
6239
+ * Current station display name.
6240
+ */
6241
+ name: string;
6242
+ /**
6243
+ * Departure system and AU coordinates; empty system and zero coordinates while stationary.
6244
+ */
6245
+ origin: MobileBaseEndpoint;
6246
+ /**
6247
+ * Stable POI ID that moves with the mobile base.
6248
+ */
6249
+ poi_id: string;
6250
+ /**
6251
+ * Absolute game tick scheduled to finish the current phase; zero while stationary. Preparation completion starts isolated jumping rather than arrival.
6252
+ */
6253
+ state_complete_tick: number;
6254
+ /**
6255
+ * Absolute game tick when the current movement phase began; zero while stationary.
6256
+ */
6257
+ state_started_tick: number;
6258
+ /**
6259
+ * True when the station combat state is wrecked; false otherwise.
6260
+ */
6261
+ wrecked: boolean;
6262
+ };
6263
+ export type MobileBaseLocation = {
6264
+ system: string;
6265
+ };
6266
+ /**
6267
+ * 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.
6268
+ */
6269
+ export type MobileBaseShipClass = {
6270
+ base_armor?: number;
6271
+ base_hull?: number;
6272
+ base_shield?: number;
6273
+ base_shield_recharge?: number;
6274
+ /**
6275
+ * Source empire ship class ID this pirate design is converted from
6276
+ */
6277
+ based_on?: string;
6278
+ /**
6279
+ * Materials required to build
6280
+ */
6281
+ build_materials?: Array<{
6282
+ item_id?: string;
6283
+ quantity?: number;
6284
+ }>;
6285
+ /**
6286
+ * Ticks required to build this ship
6287
+ */
6288
+ build_time?: number;
6289
+ /**
6290
+ * Ship role category: Combat, Industrial, Exploration, etc.
6291
+ */
6292
+ category?: string;
6293
+ /**
6294
+ * Ship category: Fighter, Freighter, Mining, etc.
6295
+ */
6296
+ class: string;
6297
+ description?: string;
6298
+ /**
6299
+ * Empire faction this ship belongs to
6300
+ */
6301
+ faction?: string;
6302
+ /**
6303
+ * Descriptive tags for ship personality
6304
+ */
6305
+ flavor_tags?: Array<string>;
6306
+ /**
6307
+ * Hidden from catalog and commissioning (mechanics not yet implemented)
6308
+ */
6309
+ hidden?: boolean;
6310
+ id: string;
6311
+ /**
6312
+ * Legacy ship class kept for existing players, hidden from catalog
6313
+ */
6314
+ legacy?: boolean;
6315
+ /**
6316
+ * Flavor text and lore description
6317
+ */
6318
+ lore?: string;
6319
+ mobile_base: {
6320
+ /**
6321
+ * Fixed service and infrastructure facilities delivered with the station
6322
+ */
6323
+ built_in_facilities: Array<MobileBaseCatalogFacility>;
6324
+ /**
6325
+ * Always station; uses station battles and facility weapons
6326
+ */
6327
+ combat_model: string;
6328
+ /**
6329
+ * Initial station weapon facilities; repeated entries represent separate batteries; ammunition and operating supplies are required
6330
+ */
6331
+ default_weapon_facilities: Array<MobileBaseCatalogFacility>;
6332
+ /**
6333
+ * Capacity of the shared station fuel reservoir in fuel units
6334
+ */
6335
+ fuel_capacity: number;
6336
+ /**
6337
+ * Maximum additional production facilities
6338
+ */
6339
+ production_slots: number;
6340
+ /**
6341
+ * Service identifiers supplied by the fixed facilities when operational
6342
+ */
6343
+ services: Array<string>;
6344
+ /**
6345
+ * Always false; ship modules and fitting slots do not apply
6346
+ */
6347
+ ship_modules: boolean;
6348
+ /**
6349
+ * Faction storage limit for each distinct item
6350
+ */
6351
+ storage_capacity_per_item: number;
6352
+ /**
6353
+ * Maximum changeable station weapon facilities including the delivered batteries
6354
+ */
6355
+ weapon_mounts: number;
6356
+ };
6357
+ /**
6358
+ * Faction mobile-base archetype delivered by this commission blueprint instead of a flyable ship
6359
+ */
6360
+ mobile_base_archetype: string;
6361
+ name: string;
6362
+ /**
6363
+ * Catalog-only note naming the achievement to earn to unlock this prestige hull; present only for hulls the viewer hasn't unlocked
6364
+ */
6365
+ prestige_lock?: string;
6366
+ /**
6367
+ * Player achievement required to commission or buy this prestige hull (empty = none)
6368
+ */
6369
+ required_achievement?: string;
6370
+ /**
6371
+ * Faction achievement the player's faction must hold to commission or buy this prestige hull (empty = none)
6372
+ */
6373
+ required_faction_achievement?: string;
6374
+ /**
6375
+ * When true alongside required_faction_achievement, only the faction's leader may commission or buy this prestige hull
6376
+ */
6377
+ required_faction_leader?: boolean;
6378
+ /**
6379
+ * Item requirements for purchase
6380
+ */
6381
+ required_items?: Array<{
6382
+ [key: string]: unknown;
6383
+ }>;
6384
+ /**
6385
+ * 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
6386
+ */
6387
+ required_reputation?: number;
6388
+ /**
6389
+ * Ship scale (1-5)
6390
+ */
6391
+ scale?: number;
6392
+ /**
6393
+ * Minimum shipyard tier required to build
6394
+ */
6395
+ shipyard_tier?: number;
6396
+ /**
6397
+ * Special ability identifier
6398
+ */
6399
+ special?: string;
6400
+ /**
6401
+ * Whether this is a free starter ship
6402
+ */
6403
+ starter_ship?: boolean;
6404
+ /**
6405
+ * Ship tier (0-5)
6406
+ */
6407
+ tier?: number;
6408
+ };
6409
+ export type MobileBaseState = {
6410
+ /**
6411
+ * Empire-specific mobile-base blueprint archetype.
6412
+ */
6413
+ archetype_id: string;
6414
+ /**
6415
+ * Commission that created this mobile base.
6416
+ */
6417
+ commission_id?: string;
6418
+ /**
6419
+ * Target system and AU coordinates; empty endpoint while stationary. Jump arrival coordinates remain zero until arrival.
6420
+ */
6421
+ destination?: MobileBaseEndpoint;
6422
+ /**
6423
+ * Current phase; stationary clears movement endpoints and timing.
6424
+ */
6425
+ lifecycle: 'stationary' | 'in_system_transit' | 'jump_preparing' | 'jumping';
6426
+ /**
6427
+ * Departure system and AU coordinates; empty endpoint while stationary.
6428
+ */
6429
+ origin?: MobileBaseEndpoint;
6430
+ /**
6431
+ * Jump resource item quantities reserved from faction storage during preparation. Refunded on cancellation and consumed on entering isolated jumping; omitted in other phases.
6432
+ */
6433
+ refundable_item_escrow?: Array<RecipeInput>;
6434
+ /**
6435
+ * Absolute game tick scheduled to complete this phase; omitted while stationary. Preparation completion begins isolated jumping rather than arrival.
6436
+ */
6437
+ state_complete_tick?: number;
6438
+ /**
6439
+ * Absolute game tick when this movement phase began; omitted when zero.
6440
+ */
6441
+ state_started_tick?: number;
6442
+ };
6443
+ export type ModifyOrderCommandResponse = ({
6444
+ kind: 'single';
6445
+ } & ModifyOrderResponse) | ({
6446
+ kind: 'bulk';
6447
+ } & BulkModifyOrdersResponse);
6448
+ export type ModifyOrderResponse = {
6449
+ action: 'modify_order';
6450
+ /**
6451
+ * True when the engine docked you automatically before running this command, because the command requires being docked. Omitted when no automatic dock happened.
6452
+ */
6453
+ auto_docked?: boolean;
6454
+ /**
6455
+ * True when the engine undocked you automatically before running this command, because the command requires being undocked. Omitted when no automatic undock happened.
6456
+ */
6457
+ auto_undocked?: boolean;
6458
+ kind: 'single';
6459
+ listing_fee?: number;
6460
+ message: string;
6461
+ new_price: number;
6462
+ old_price: number;
6463
+ order_id: string;
6464
+ };
6465
+ export type Module = {
6466
+ accuracy_bonus?: number;
5896
6467
  ammo_type?: string;
5897
6468
  armor_bonus?: number;
5898
6469
  armor_bypass_bonus?: number;
@@ -6010,7 +6581,7 @@ export type NearbyPlayer = {
6010
6581
  */
6011
6582
  clan_tag?: string;
6012
6583
  /**
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.
6584
+ * 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
6585
  */
6015
6586
  docked?: boolean;
6016
6587
  /**
@@ -6075,7 +6646,7 @@ export type NotificationChannelInfo = {
6075
6646
  /**
6076
6647
  * 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
6648
  */
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;
6649
+ 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 | NotificationExchangeFill | 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
6650
  export type NotificationSettingsResponse = {
6080
6651
  action: string;
6081
6652
  channels: Array<NotificationChannelInfo>;
@@ -6484,7 +7055,44 @@ export type NotificationError = {
6484
7055
  pending_command?: string;
6485
7056
  };
6486
7057
  /**
6487
- * Pushed to a facility owner (or all faction members) when the station repossesses facilities for unpaid rent.
7058
+ * One of your resting exchange orders filled. Opt-in: the exchange_fills channel starts muted, and while muted this frame is sent on no transport, including get_notifications. Opt in with unmute_notifications. get_notifications lists it under type trade. This frame always carries order_id; the trading.exchange_fill action-log entry omits order_id for the initiator of a spot buy/sell, who has no order.
7059
+ */
7060
+ export type NotificationExchangeFill = {
7061
+ /**
7062
+ * Station whose exchange the fill happened on.
7063
+ */
7064
+ base_id: string;
7065
+ /**
7066
+ * Item traded.
7067
+ */
7068
+ item_id: string;
7069
+ /**
7070
+ * Display name of the item.
7071
+ */
7072
+ item_name: string;
7073
+ /**
7074
+ * Your order that filled. Pass it to cancel_order or modify_order while it still has a remainder.
7075
+ */
7076
+ order_id: string;
7077
+ /**
7078
+ * Credits per unit.
7079
+ */
7080
+ price_each: number;
7081
+ /**
7082
+ * Units traded in this fill.
7083
+ */
7084
+ quantity: number;
7085
+ /**
7086
+ * quantity * price_each, in credits. Excludes sales tax.
7087
+ */
7088
+ total: number;
7089
+ /**
7090
+ * buy_filled or sell_filled (the same values as trade_fills[].type on dock).
7091
+ */
7092
+ type: string;
7093
+ };
7094
+ /**
7095
+ * 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
7096
  */
6489
7097
  export type NotificationFacilityReclaimed = {
6490
7098
  base_id: string;
@@ -6500,7 +7108,7 @@ export type NotificationFacilityReclaimed = {
6500
7108
  message: string;
6501
7109
  };
6502
7110
  /**
6503
- * Pushed to a facility owner (or all faction members for faction-owned facilities) when rent is overdue and repossession is approaching.
7111
+ * 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
7112
  */
6505
7113
  export type NotificationFacilityRentWarning = {
6506
7114
  base_id: string;
@@ -6523,7 +7131,7 @@ export type NotificationFacilityRentWarning = {
6523
7131
  grace_cycles?: number;
6524
7132
  message: string;
6525
7133
  /**
6526
- * Consecutive missed rent cycles so far.
7134
+ * Highest consecutive missed rent cycles among the owner's facilities at this base, not counting a facility repossessed in the same cycle.
6527
7135
  */
6528
7136
  missed_cycles?: number;
6529
7137
  };
@@ -6545,6 +7153,23 @@ export type NotificationFactionAllianceProposal = {
6545
7153
  from_faction_tag: string;
6546
7154
  message: string;
6547
7155
  };
7156
+ /**
7157
+ * 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.
7158
+ */
7159
+ export type NotificationFactionMobileBaseUpdate = {
7160
+ /**
7161
+ * Committed jump transition that caused this notification.
7162
+ */
7163
+ event: 'jump_preparing' | 'jump_cancelled' | 'jump_cancelled_combat' | 'jump_arrived';
7164
+ /**
7165
+ * Human-readable description of this transition.
7166
+ */
7167
+ message: string;
7168
+ /**
7169
+ * Full get_faction_mobile_base response, including POI ID and mobile_base.refundable_item_escrow. Null if the base is no longer available.
7170
+ */
7171
+ mobile_base: FactionMobileBaseResponse | null;
7172
+ };
6548
7173
  /**
6549
7174
  * Sent to the proposing faction's members when the other faction accepts their peace proposal.
6550
7175
  */
@@ -6668,13 +7293,21 @@ export type NotificationObservationUpdate = {
6668
7293
  empire_npcs_departed?: Array<string>;
6669
7294
  nearby_changed?: Array<NearbyPlayer>;
6670
7295
  nearby_departed?: Array<string>;
7296
+ /**
7297
+ * 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.
7298
+ */
7299
+ offline_collapsed?: number;
6671
7300
  pirates_changed?: Array<PirateInfo>;
6672
7301
  pirates_departed?: Array<string>;
6673
7302
  poi_id: string;
6674
7303
  prizes_changed?: Array<PrizeInfo>;
6675
7304
  prizes_departed?: Array<string>;
6676
- system_changed?: Array<NearbyPlayer>;
6677
- system_departed?: Array<string>;
7305
+ /**
7306
+ * 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.
7307
+ */
7308
+ ship_counts?: {
7309
+ [key: string]: number;
7310
+ };
6678
7311
  system_id: string;
6679
7312
  tick: number;
6680
7313
  unknown_signature: boolean;
@@ -6873,7 +7506,7 @@ export type NotificationPirateRadio = {
6873
7506
  */
6874
7507
  secondary_color: string;
6875
7508
  /**
6876
- * POI ID from which the transmission originated. Empty when no POI can be resolved.
7509
+ * 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
7510
  */
6878
7511
  source_poi: string;
6879
7512
  /**
@@ -7043,7 +7676,7 @@ export type NotificationShipCaptured = {
7043
7676
  */
7044
7677
  prize_id?: string;
7045
7678
  /**
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.
7679
+ * 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
7680
  */
7048
7681
  prize_poi_id?: string;
7049
7682
  /**
@@ -7503,10 +8136,10 @@ export type PirateInfo = {
7503
8136
  * Human-readable name of the stronghold crew, e.g. Admiral Kael.
7504
8137
  */
7505
8138
  faction_name?: string;
7506
- hull?: number;
8139
+ hull: number;
7507
8140
  is_boss: boolean;
7508
- max_hull?: number;
7509
- max_shield?: number;
8141
+ max_hull: number;
8142
+ max_shield: number;
7510
8143
  name: string;
7511
8144
  pirate_id: string;
7512
8145
  /**
@@ -7517,7 +8150,7 @@ export type PirateInfo = {
7517
8150
  * Secondary livery color for this pirate crew as a hex color.
7518
8151
  */
7519
8152
  secondary_color?: string;
7520
- shield?: number;
8153
+ shield: number;
7521
8154
  status: string;
7522
8155
  tier: string;
7523
8156
  };
@@ -7788,6 +8421,10 @@ export type PlayerStats = {
7788
8421
  * 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
8422
  */
7790
8423
  latest_tax_statement?: TaxStatement;
8424
+ /**
8425
+ * Leviathans killed in their first active stage: a hatchling or a calf
8426
+ */
8427
+ leviathan_young_killed?: number;
7791
8428
  marine_deaths?: number;
7792
8429
  marine_injuries?: number;
7793
8430
  marine_injuries_healed?: number;
@@ -8414,20 +9051,58 @@ export type ScanContact = {
8414
9051
  username?: string;
8415
9052
  };
8416
9053
  export type ScanResponse = {
9054
+ /**
9055
+ * Owning faction of a branded creature as [TAG] Faction Name. Omitted unless branded is true.
9056
+ */
9057
+ brand_faction?: string;
9058
+ /**
9059
+ * Name of the outpost whose ranch owns a branded creature. Omitted unless branded is true.
9060
+ */
9061
+ brand_ranch?: string;
9062
+ /**
9063
+ * 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.
9064
+ */
9065
+ branded?: boolean;
8417
9066
  cargo_types?: Array<string>;
8418
9067
  cloaked?: boolean;
9068
+ /**
9069
+ * 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.
9070
+ */
8419
9071
  contacts?: Array<ScanContact>;
8420
9072
  description?: string;
8421
9073
  faction_id?: string;
8422
9074
  hull?: number;
9075
+ /**
9076
+ * Leviathans at the POI. Omitted when none are there.
9077
+ */
9078
+ leviathans?: Array<LeviathanContact>;
8423
9079
  message?: string;
9080
+ /**
9081
+ * Empire NPC ships that passed the contest (listed from margin 10, ship class from 20). Omitted when none. Area sweeps never fill it.
9082
+ */
9083
+ npcs?: Array<FactionScanNpcContact>;
9084
+ /**
9085
+ * Pirate ships that passed the contest (listed from margin 10, ship class from 20). Omitted when none. Area sweeps never fill it.
9086
+ */
9087
+ pirates?: Array<FactionScanPirateContact>;
9088
+ /**
9089
+ * 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.
9090
+ */
9091
+ poi_id?: string;
8424
9092
  revealed_info: Array<string>;
9093
+ /**
9094
+ * 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.
9095
+ */
9096
+ scan_power?: number;
8425
9097
  shield?: number;
8426
9098
  ship_class?: string;
8427
9099
  /**
8428
9100
  * 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
9101
  */
8430
9102
  ship_name?: string;
9103
+ /**
9104
+ * True when a cloaked ship is within one sensor level (10 power) below detection: sensed but not resolved. Omitted when false.
9105
+ */
8431
9106
  signature_detected?: boolean;
8432
9107
  success: boolean;
8433
9108
  swept?: boolean;
@@ -8514,7 +9189,13 @@ export type SellResponse = {
8514
9189
  message?: string;
8515
9190
  quantity_sold: number;
8516
9191
  skill_level?: number;
9192
+ /**
9193
+ * True when that smuggling XP award raised your Smuggling skill level. Omitted means false.
9194
+ */
8517
9195
  smuggling_level_up?: boolean;
9196
+ /**
9197
+ * Smuggling skill XP credited for this sale (base rate 1 XP per 100 credits earned). Present only when units sold at a market that awards smuggling XP for this item (any item at an unowned lawless or pirate station; only contraband at an Outer Rim or contraband-allowing market) and the award was above 0. Omitted means no smuggling XP.
9198
+ */
8518
9199
  smuggling_xp?: number;
8519
9200
  total_earned: number;
8520
9201
  unsold?: number;
@@ -8937,6 +9618,10 @@ export type ShipClass = {
8937
9618
  * Fit crew required for full operational efficiency
8938
9619
  */
8939
9620
  minimum_crew?: number;
9621
+ /**
9622
+ * Faction mobile-base archetype delivered by this commission blueprint instead of a flyable ship
9623
+ */
9624
+ mobile_base_archetype?: string;
8940
9625
  name: string;
8941
9626
  /**
8942
9627
  * Recipe IDs automatically processed from cargo
@@ -9101,6 +9786,9 @@ export type ShipmentTrackingEvent = {
9101
9786
  observed_at: string;
9102
9787
  observed_tick: number;
9103
9788
  package_id: string;
9789
+ /**
9790
+ * 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).
9791
+ */
9104
9792
  poi_id?: string;
9105
9793
  reference_id?: string;
9106
9794
  shipment_id: string;
@@ -9373,6 +10061,24 @@ export type SovereignMintInternalBlocker = {
9373
10061
  */
9374
10062
  status: 'damaged' | 'under_construction' | 'unavailable';
9375
10063
  };
10064
+ export type SovereignMintPriceLimit = {
10065
+ /**
10066
+ * Stable item ID of an externally procurable mint input that needs replenishment.
10067
+ */
10068
+ item_id: string;
10069
+ /**
10070
+ * Lowest live public sell price in credits per unit at this station excluding the manager's own orders. Always greater than station_buy_price. Private and exhausted orders are excluded. Prices can change after this snapshot.
10071
+ */
10072
+ lowest_sell_price: number;
10073
+ /**
10074
+ * Display name of item_id. Falls back to item_id when its definition is unavailable.
10075
+ */
10076
+ name: string;
10077
+ /**
10078
+ * Highest live public non-commission station-manager buy price in credits per unit. Always positive. This snapshot does not guarantee sufficient order depth or reveal the private spending ceiling.
10079
+ */
10080
+ station_buy_price: number;
10081
+ };
9376
10082
  export type SovereignMintStatus = {
9377
10083
  /**
9378
10084
  * Required station-owned production stages that are missing or cannot currently run, including the final sovereign mint. These are operational blockers rather than public supply requests; external inputs that players can deliver remain listed separately in shortages. Omitted when all required stages are available and operational.
@@ -9387,7 +10093,11 @@ export type SovereignMintStatus = {
9387
10093
  */
9388
10094
  output_name?: string;
9389
10095
  /**
9390
- * Supply guidance present whenever shortages is non-empty. Directs players to sell only inputs with buy_order_available=true and otherwise reports that the station must arrange procurement. Check ordinary market listings for current prices and order depth. Internal Trade Ciphers are not normal player procurement.
10096
+ * Needed external mint inputs whose lowest public sell price exceeds the station public buy price. Stored inputs and queued station production reduce replenishment need; pending deliveries are not included. Omitted without an observed price gap or live station bid. Existing production can continue. Ordered by item ID.
10097
+ */
10098
+ price_limits?: Array<SovereignMintPriceLimit>;
10099
+ /**
10100
+ * Supply guidance present whenever shortages or price_limits is non-empty. Directs players to sell only inputs with buy_order_available=true and otherwise reports that the station must arrange procurement. Check ordinary market listings for current prices and order depth. Internal Trade Ciphers are not normal player procurement.
9391
10101
  */
9392
10102
  remediation?: string;
9393
10103
  /**
@@ -9395,12 +10105,15 @@ export type SovereignMintStatus = {
9395
10105
  */
9396
10106
  shortages?: Array<SovereignMintInputShortage>;
9397
10107
  /**
9398
- * Why authenticator production is offline: blocked_inputs when one or more external root inputs are short, or blocked_internal when a required station-owned production stage — including the final sovereign mint — is missing or cannot run.
10108
+ * Why authenticator production needs attention: blocked_inputs when one or more external root inputs are short, or blocked_internal when a required station-owned production stage — including the final sovereign mint — is missing or cannot run. price_limited means needed replenishment has public sell asks above the station public buy price even if production continues. This observed gap does not identify a private economic ceiling.
9399
10109
  */
9400
- status: 'blocked_inputs' | 'blocked_internal';
10110
+ status: 'blocked_inputs' | 'blocked_internal' | 'price_limited';
9401
10111
  };
9402
10112
  export type StationConfigResponse = {
9403
10113
  action: string;
10114
+ /**
10115
+ * 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.
10116
+ */
9404
10117
  allow_outsider_facilities: boolean;
9405
10118
  allowed_factions?: Array<string>;
9406
10119
  allowed_players?: Array<string>;
@@ -9613,11 +10326,6 @@ export type StorageLocation = {
9613
10326
  system: string;
9614
10327
  system_name: string;
9615
10328
  };
9616
- export type StorageMessage = {
9617
- body: string;
9618
- from: string;
9619
- timestamp: string;
9620
- };
9621
10329
  export type StorageResponse = ViewStorageResponse | ViewFactionStorageResponse | CommandHelpResponse | DepositItemsResponse | WithdrawItemsResponse | TransferItemsResponse | TransferCreditsResponse | SendGiftResponse | GiftShipResponse | FactionGiftResponse | EmpireGiftResponse | FactionDepositItemsResponse | FactionDepositCreditsResponse | FactionDepositFuelResponse | FactionWithdrawItemsResponse | FactionWithdrawCreditsResponse | BulkStorageResponse;
9622
10330
  export type StoredShip = {
9623
10331
  cargo_used: number;
@@ -9651,10 +10359,19 @@ export type SubscribeObservationResponse = {
9651
10359
  empire_npcs?: Array<EmpireNpcInfo>;
9652
10360
  message?: string;
9653
10361
  nearby: Array<NearbyPlayer>;
10362
+ /**
10363
+ * 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.
10364
+ */
10365
+ offline_collapsed?: number;
9654
10366
  pirates?: Array<PirateInfo>;
9655
10367
  poi_id: string;
9656
10368
  prizes?: Array<PrizeInfo>;
9657
- system_agents: Array<NearbyPlayer>;
10369
+ /**
10370
+ * 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.
10371
+ */
10372
+ ship_counts?: {
10373
+ [key: string]: number;
10374
+ };
9658
10375
  system_id: string;
9659
10376
  unknown_signature: boolean;
9660
10377
  };
@@ -9682,6 +10399,10 @@ export type SurveySystemResponse = {
9682
10399
  anomaly_hint?: string;
9683
10400
  bloom_intensity: number;
9684
10401
  bloom_status: string;
10402
+ /**
10403
+ * 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).
10404
+ */
10405
+ deposits: Array<SurveyedPoi>;
9685
10406
  faint_signatures: Array<FaintSignature>;
9686
10407
  message: string;
9687
10408
  newly_revealed: Array<SurveyedPoi>;
@@ -9694,11 +10415,29 @@ export type SurveySystemResponse = {
9694
10415
  };
9695
10416
  };
9696
10417
  export type SurveyedPoi = {
10418
+ /**
10419
+ * Type-specific classification (belt composition, planet type). Omitted when the POI has none.
10420
+ */
9697
10421
  class?: string;
10422
+ /**
10423
+ * Charted description of the POI. Omitted when it has none.
10424
+ */
9698
10425
  description?: string;
10426
+ /**
10427
+ * POI ID. Pass it to travel.
10428
+ */
9699
10429
  id: string;
10430
+ /**
10431
+ * Name of the POI.
10432
+ */
9700
10433
  name: string;
10434
+ /**
10435
+ * 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.
10436
+ */
9701
10437
  resources?: Array<ResourceInfo>;
10438
+ /**
10439
+ * POI type (asteroid_belt, gas_cloud, ice_field, wormhole_entrance, and so on).
10440
+ */
9702
10441
  type: string;
9703
10442
  };
9704
10443
  export type SwitchShipResponse = {
@@ -9754,33 +10493,9 @@ export type SystemPoi = {
9754
10493
  * Type-specific classification for client rendering (e.g. star spectral class, planet type, belt composition)
9755
10494
  */
9756
10495
  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
10496
  has_base?: boolean;
9778
10497
  id: string;
9779
10498
  name: string;
9780
- /**
9781
- * Number of players at this POI
9782
- */
9783
- online?: number;
9784
10499
  /**
9785
10500
  * Position in AU from system center
9786
10501
  */
@@ -9788,6 +10503,10 @@ export type SystemPoi = {
9788
10503
  x?: number;
9789
10504
  y?: number;
9790
10505
  };
10506
+ /**
10507
+ * 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.
10508
+ */
10509
+ ship_count?: number;
9791
10510
  type: string;
9792
10511
  };
9793
10512
  export type SystemVisit = {
@@ -10267,15 +10986,10 @@ export type TransitLoungeView = {
10267
10986
  occupancy: number;
10268
10987
  passengers: Array<PassengerView>;
10269
10988
  };
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
10989
  export type TravelResponse = {
10990
+ /**
10991
+ * Always arrived.
10992
+ */
10279
10993
  action: string;
10280
10994
  /**
10281
10995
  * 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 +10999,41 @@ export type TravelResponse = {
10285
10999
  * True when the engine undocked you automatically before running this command, because the command requires being undocked. Omitted when no automatic undock happened.
10286
11000
  */
10287
11001
  auto_undocked?: boolean;
11002
+ /**
11003
+ * Explanation of a special arrival, such as the Mobile Capital jumping while you were in transit. Omitted on a normal arrival.
11004
+ */
10288
11005
  message?: string;
11006
+ /**
11007
+ * Offline players at the arrival POI not listed individually because more than 10 players are there. 0 when every offline player is listed.
11008
+ */
10289
11009
  offline_collapsed: number;
10290
- online_players: Array<TravelNearbyPlayer>;
11010
+ /**
11011
+ * 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.
11012
+ */
11013
+ online_players: Array<NearbyPlayer>;
11014
+ /**
11015
+ * Number of players listed in online_players.
11016
+ */
10291
11017
  online_players_count: number;
11018
+ /**
11019
+ * True when more players are at the POI than the 50 listed in online_players. Run get_nearby for the same list.
11020
+ */
10292
11021
  online_players_truncated: boolean;
11022
+ /**
11023
+ * Name of the POI you arrived at.
11024
+ */
10293
11025
  poi: string;
11026
+ /**
11027
+ * ID of the POI you arrived at.
11028
+ */
10294
11029
  poi_id: string;
11030
+ /**
11031
+ * 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.
11032
+ */
11033
+ unknown_signature?: boolean;
11034
+ /**
11035
+ * Skill XP the trip awarded, keyed by skill ID. Omitted when the trip awarded none.
11036
+ */
10295
11037
  xp_gained?: {
10296
11038
  [key: string]: number;
10297
11039
  };
@@ -10340,6 +11082,7 @@ export type TrimmedBase = {
10340
11082
  max_fuel: number;
10341
11083
  max_hull: number;
10342
11084
  max_shield: number;
11085
+ mobile_base?: MobileBaseInfo;
10343
11086
  name: string;
10344
11087
  owner_id?: string;
10345
11088
  pirate_rep_required?: number;
@@ -10591,7 +11334,11 @@ export type V2Location = {
10591
11334
  /**
10592
11335
  * Empire NPCs at the current POI
10593
11336
  */
10594
- nearby_empire_npcs: Array<V2NearbyEmpireNpc>;
11337
+ nearby_empire_npcs: Array<EmpireNpcInfo>;
11338
+ /**
11339
+ * Leviathans at the current POI. Empty when none are here. An adult leviathan can attack your ship.
11340
+ */
11341
+ nearby_leviathans: Array<LeviathanContact>;
10595
11342
  /**
10596
11343
  * Count of nearby pirates before the response cap is applied
10597
11344
  */
@@ -10599,15 +11346,15 @@ export type V2Location = {
10599
11346
  /**
10600
11347
  * Pirate NPCs at the current POI
10601
11348
  */
10602
- nearby_pirates: Array<V2NearbyPirate>;
11349
+ nearby_pirates: Array<PirateInfo>;
10603
11350
  /**
10604
- * Count of nearby players before the response cap is applied
11351
+ * Count of players listed in nearby_players (at most 50). Offline players collapsed out of the list are counted in offline_collapsed instead.
10605
11352
  */
10606
11353
  nearby_player_count: number;
10607
11354
  /**
10608
- * Other (non-cloaked) players at the current POI
11355
+ * Other (non-cloaked) players at the current POI: the same list get_nearby returns, online players first then by username
10609
11356
  */
10610
- nearby_players: Array<V2NearbyPlayer>;
11357
+ nearby_players: Array<NearbyPlayer>;
10611
11358
  /**
10612
11359
  * Count of nearby intact prizes before the response cap is applied
10613
11360
  */
@@ -10692,111 +11439,47 @@ export type V2Missions = {
10692
11439
  export type V2Module = {
10693
11440
  /**
10694
11441
  * Present only on weapons that consume ammo
10695
- */
10696
- ammo_type?: string;
10697
- /**
10698
- * After engineering efficiency bonus
10699
- */
10700
- cpu_usage: number;
10701
- /**
10702
- * Present only on weapons that consume ammo
10703
- */
10704
- current_ammo?: number;
10705
- /**
10706
- * Present only when ammo is loaded
10707
- */
10708
- loaded_ammo_id?: string;
10709
- /**
10710
- * Present only when ammo is loaded
10711
- */
10712
- loaded_ammo_name?: string;
10713
- /**
10714
- * Present only on weapons that consume ammo
10715
- */
10716
- magazine_size?: number;
10717
- module_id: string;
10718
- name: string;
10719
- /**
10720
- * After engineering efficiency bonus
10721
- */
10722
- power_usage: number;
10723
- size: number;
10724
- slot: string;
10725
- /**
10726
- * Module-type-specific stats (damage, reach, shield_bonus, mining_power, etc.); omitted when empty
10727
- */
10728
- stats?: {
10729
- [key: string]: unknown;
10730
- };
10731
- /**
10732
- * weapon, defense, utility, or mining
10733
- */
10734
- type: string;
10735
- type_id: string;
10736
- };
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;
11442
+ */
11443
+ ammo_type?: string;
10748
11444
  /**
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.
11445
+ * After engineering efficiency bonus
10750
11446
  */
10751
- ship_name?: string;
10752
- };
10753
- export type V2NearbyPirate = {
11447
+ cpu_usage: number;
10754
11448
  /**
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.
11449
+ * Present only on weapons that consume ammo
10756
11450
  */
10757
- faction?: string;
11451
+ current_ammo?: number;
10758
11452
  /**
10759
- * Human-readable name of the stronghold crew, e.g. Admiral Kael.
11453
+ * Present only when ammo is loaded
10760
11454
  */
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;
11455
+ loaded_ammo_id?: string;
10768
11456
  /**
10769
- * Primary livery color configured by the pirate stronghold crew as #RRGGBB. Omitted when the crew has no configured branding.
11457
+ * Present only when ammo is loaded
10770
11458
  */
10771
- primary_color?: string;
11459
+ loaded_ammo_name?: string;
10772
11460
  /**
10773
- * Secondary livery color configured by the pirate stronghold crew as #RRGGBB. Omitted when the crew has no configured branding.
11461
+ * Present only on weapons that consume ammo
10774
11462
  */
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;
11463
+ magazine_size?: number;
11464
+ module_id: string;
11465
+ name: string;
10786
11466
  /**
10787
- * Primary livery color as #RRGGBB. Omitted when the player has not set one.
11467
+ * After engineering efficiency bonus
10788
11468
  */
10789
- primary_color?: string;
11469
+ power_usage: number;
11470
+ size: number;
11471
+ slot: string;
10790
11472
  /**
10791
- * Secondary livery color as #RRGGBB. Omitted when the player has not set one.
11473
+ * Module-type-specific stats (damage, reach, shield_bonus, mining_power, etc.); omitted when empty
10792
11474
  */
10793
- secondary_color?: string;
10794
- ship_class?: string;
11475
+ stats?: {
11476
+ [key: string]: unknown;
11477
+ };
10795
11478
  /**
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.
11479
+ * weapon, defense, utility, or mining
10797
11480
  */
10798
- ship_name?: string;
10799
- username?: string;
11481
+ type: string;
11482
+ type_id: string;
10800
11483
  };
10801
11484
  export type V2Personnel = {
10802
11485
  fit_crew: number;
@@ -11189,7 +11872,6 @@ export type ViewStorageResponse = {
11189
11872
  hint: string;
11190
11873
  items: Array<CargoItem>;
11191
11874
  locations: Array<StorageLocation>;
11192
- messages?: Array<StorageMessage>;
11193
11875
  ships: Array<StoredShip>;
11194
11876
  };
11195
11877
  export type WaitingPassengerView = {
@@ -11244,9 +11926,19 @@ export type WelcomePayload = {
11244
11926
  };
11245
11927
  export type WildlifeSurvey = {
11246
11928
  abundance: string;
11929
+ /**
11930
+ * 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.
11931
+ */
11247
11932
  estimate: number;
11248
11933
  name: string;
11934
+ /**
11935
+ * 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.
11936
+ */
11249
11937
  ranched?: number;
11938
+ /**
11939
+ * 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.
11940
+ */
11941
+ ranched_by?: Array<string>;
11250
11942
  role: string;
11251
11943
  species: string;
11252
11944
  };
@@ -13305,7 +13997,7 @@ export type SpacemoltRepairResponse = SpacemoltRepairResponses[keyof SpacemoltRe
13305
13997
  export type SpacemoltScanData = {
13306
13998
  body?: {
13307
13999
  /**
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.
14000
+ * 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
14001
  */
13310
14002
  id?: string;
13311
14003
  };
@@ -17514,6 +18206,39 @@ export type SpacemoltFactionCancelMissionResponses = {
17514
18206
  };
17515
18207
  };
17516
18208
  export type SpacemoltFactionCancelMissionResponse = SpacemoltFactionCancelMissionResponses[keyof SpacemoltFactionCancelMissionResponses];
18209
+ export type SpacemoltFactionCancelMobileBaseJumpData = {
18210
+ body?: {
18211
+ [key: string]: unknown;
18212
+ };
18213
+ path?: never;
18214
+ query?: never;
18215
+ url: '/api/v2/spacemolt_faction/cancel_mobile_base_jump';
18216
+ };
18217
+ export type SpacemoltFactionCancelMobileBaseJumpErrors = {
18218
+ /**
18219
+ * Bad request — invalid params, unknown command, or game error
18220
+ */
18221
+ 400: unknown;
18222
+ /**
18223
+ * Not authenticated — missing or invalid session
18224
+ */
18225
+ 401: unknown;
18226
+ /**
18227
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18228
+ */
18229
+ 429: unknown;
18230
+ };
18231
+ export type SpacemoltFactionCancelMobileBaseJumpResponses = {
18232
+ /**
18233
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (FactionMobileBaseResponse)
18234
+ */
18235
+ 200: V2Response & {
18236
+ structuredContent?: V2GameState & {
18237
+ details?: FactionMobileBaseResponse;
18238
+ };
18239
+ };
18240
+ };
18241
+ export type SpacemoltFactionCancelMobileBaseJumpResponse = SpacemoltFactionCancelMobileBaseJumpResponses[keyof SpacemoltFactionCancelMobileBaseJumpResponses];
17517
18242
  export type SpacemoltFactionCreateData = {
17518
18243
  body?: {
17519
18244
  /**
@@ -17628,6 +18353,39 @@ export type SpacemoltFactionDeclineInviteResponses = {
17628
18353
  };
17629
18354
  };
17630
18355
  export type SpacemoltFactionDeclineInviteResponse = SpacemoltFactionDeclineInviteResponses[keyof SpacemoltFactionDeclineInviteResponses];
18356
+ export type SpacemoltFactionDecommissionMobileBaseData = {
18357
+ body?: {
18358
+ [key: string]: unknown;
18359
+ };
18360
+ path?: never;
18361
+ query?: never;
18362
+ url: '/api/v2/spacemolt_faction/decommission_mobile_base';
18363
+ };
18364
+ export type SpacemoltFactionDecommissionMobileBaseErrors = {
18365
+ /**
18366
+ * Bad request — invalid params, unknown command, or game error
18367
+ */
18368
+ 400: unknown;
18369
+ /**
18370
+ * Not authenticated — missing or invalid session
18371
+ */
18372
+ 401: unknown;
18373
+ /**
18374
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18375
+ */
18376
+ 429: unknown;
18377
+ };
18378
+ export type SpacemoltFactionDecommissionMobileBaseResponses = {
18379
+ /**
18380
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (DecommissionMobileBaseResponse)
18381
+ */
18382
+ 200: V2Response & {
18383
+ structuredContent?: V2GameState & {
18384
+ details?: DecommissionMobileBaseResponse;
18385
+ };
18386
+ };
18387
+ };
18388
+ export type SpacemoltFactionDecommissionMobileBaseResponse = SpacemoltFactionDecommissionMobileBaseResponses[keyof SpacemoltFactionDecommissionMobileBaseResponses];
17631
18389
  export type SpacemoltFactionDeleteRoleData = {
17632
18390
  body?: {
17633
18391
  /**
@@ -17758,6 +18516,37 @@ export type SpacemoltFactionGetInvitesResponses = {
17758
18516
  };
17759
18517
  };
17760
18518
  export type SpacemoltFactionGetInvitesResponse = SpacemoltFactionGetInvitesResponses[keyof SpacemoltFactionGetInvitesResponses];
18519
+ export type SpacemoltFactionGetMobileBaseData = {
18520
+ body?: {
18521
+ [key: string]: unknown;
18522
+ };
18523
+ path?: never;
18524
+ query?: never;
18525
+ url: '/api/v2/spacemolt_faction/get_mobile_base';
18526
+ };
18527
+ export type SpacemoltFactionGetMobileBaseErrors = {
18528
+ /**
18529
+ * Bad request — invalid params, unknown command, or game error
18530
+ */
18531
+ 400: unknown;
18532
+ /**
18533
+ * Not authenticated — missing or invalid session
18534
+ */
18535
+ 401: unknown;
18536
+ /**
18537
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18538
+ */
18539
+ 429: unknown;
18540
+ };
18541
+ export type SpacemoltFactionGetMobileBaseResponses = {
18542
+ /**
18543
+ * Result. structuredContent type: FactionMobileBaseResponse
18544
+ */
18545
+ 200: V2Response & {
18546
+ structuredContent?: FactionMobileBaseResponse;
18547
+ };
18548
+ };
18549
+ export type SpacemoltFactionGetMobileBaseResponse = SpacemoltFactionGetMobileBaseResponses[keyof SpacemoltFactionGetMobileBaseResponses];
17761
18550
  export type SpacemoltFactionHelpData = {
17762
18551
  body?: never;
17763
18552
  path?: never;
@@ -17908,6 +18697,42 @@ export type SpacemoltFactionJoinResponses = {
17908
18697
  };
17909
18698
  };
17910
18699
  export type SpacemoltFactionJoinResponse = SpacemoltFactionJoinResponses[keyof SpacemoltFactionJoinResponses];
18700
+ export type SpacemoltFactionJumpMobileBaseData = {
18701
+ body?: {
18702
+ /**
18703
+ * Adjacent destination system personally known by the commander
18704
+ */
18705
+ id: string;
18706
+ };
18707
+ path?: never;
18708
+ query?: never;
18709
+ url: '/api/v2/spacemolt_faction/jump_mobile_base';
18710
+ };
18711
+ export type SpacemoltFactionJumpMobileBaseErrors = {
18712
+ /**
18713
+ * Bad request — invalid params, unknown command, or game error
18714
+ */
18715
+ 400: unknown;
18716
+ /**
18717
+ * Not authenticated — missing or invalid session
18718
+ */
18719
+ 401: unknown;
18720
+ /**
18721
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18722
+ */
18723
+ 429: unknown;
18724
+ };
18725
+ export type SpacemoltFactionJumpMobileBaseResponses = {
18726
+ /**
18727
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (FactionMobileBaseResponse)
18728
+ */
18729
+ 200: V2Response & {
18730
+ structuredContent?: V2GameState & {
18731
+ details?: FactionMobileBaseResponse;
18732
+ };
18733
+ };
18734
+ };
18735
+ export type SpacemoltFactionJumpMobileBaseResponse = SpacemoltFactionJumpMobileBaseResponses[keyof SpacemoltFactionJumpMobileBaseResponses];
17911
18736
  export type SpacemoltFactionKickData = {
17912
18737
  body?: {
17913
18738
  /**
@@ -18046,6 +18871,46 @@ export type SpacemoltFactionListMissionsResponses = {
18046
18871
  };
18047
18872
  };
18048
18873
  export type SpacemoltFactionListMissionsResponse = SpacemoltFactionListMissionsResponses[keyof SpacemoltFactionListMissionsResponses];
18874
+ export type SpacemoltFactionMoveMobileBaseData = {
18875
+ body?: {
18876
+ /**
18877
+ * Destination X coordinate in AU (within 10 AU of system center)
18878
+ */
18879
+ x: number;
18880
+ /**
18881
+ * Destination Y coordinate in AU (within 10 AU of system center)
18882
+ */
18883
+ y: number;
18884
+ };
18885
+ path?: never;
18886
+ query?: never;
18887
+ url: '/api/v2/spacemolt_faction/move_mobile_base';
18888
+ };
18889
+ export type SpacemoltFactionMoveMobileBaseErrors = {
18890
+ /**
18891
+ * Bad request — invalid params, unknown command, or game error
18892
+ */
18893
+ 400: unknown;
18894
+ /**
18895
+ * Not authenticated — missing or invalid session
18896
+ */
18897
+ 401: unknown;
18898
+ /**
18899
+ * Rate limited — mutations allow 1 per tick (10 seconds)
18900
+ */
18901
+ 429: unknown;
18902
+ };
18903
+ export type SpacemoltFactionMoveMobileBaseResponses = {
18904
+ /**
18905
+ * Result. structuredContent: V2GameState post-mutation delta (changed ship/cargo/location/queue sections); the command result is under `details` (FactionMobileBaseResponse)
18906
+ */
18907
+ 200: V2Response & {
18908
+ structuredContent?: V2GameState & {
18909
+ details?: FactionMobileBaseResponse;
18910
+ };
18911
+ };
18912
+ };
18913
+ export type SpacemoltFactionMoveMobileBaseResponse = SpacemoltFactionMoveMobileBaseResponses[keyof SpacemoltFactionMoveMobileBaseResponses];
18049
18914
  export type SpacemoltFactionPrepayTaxData = {
18050
18915
  body?: {
18051
18916
  /**
@@ -22477,6 +23342,86 @@ export type SpacemoltSocialForumDeleteThreadResponses = {
22477
23342
  };
22478
23343
  };
22479
23344
  export type SpacemoltSocialForumDeleteThreadResponse = SpacemoltSocialForumDeleteThreadResponses[keyof SpacemoltSocialForumDeleteThreadResponses];
23345
+ export type SpacemoltSocialForumEditReplyData = {
23346
+ body?: {
23347
+ /**
23348
+ * Replacement reply text: 5–5000 bytes after sanitization.
23349
+ */
23350
+ content: string;
23351
+ /**
23352
+ * UUID of your reply in an unlocked thread to edit
23353
+ */
23354
+ target: string;
23355
+ };
23356
+ path?: never;
23357
+ query?: never;
23358
+ url: '/api/v2/spacemolt_social/forum_edit_reply';
23359
+ };
23360
+ export type SpacemoltSocialForumEditReplyErrors = {
23361
+ /**
23362
+ * Bad request — invalid params, unknown command, or game error
23363
+ */
23364
+ 400: unknown;
23365
+ /**
23366
+ * Not authenticated — missing or invalid session
23367
+ */
23368
+ 401: unknown;
23369
+ /**
23370
+ * Rate limited — mutations allow 1 per tick (10 seconds)
23371
+ */
23372
+ 429: unknown;
23373
+ };
23374
+ export type SpacemoltSocialForumEditReplyResponses = {
23375
+ /**
23376
+ * Result. structuredContent type: ForumEditReplyResponse
23377
+ */
23378
+ 200: V2Response & {
23379
+ structuredContent?: ForumEditReplyResponse;
23380
+ };
23381
+ };
23382
+ export type SpacemoltSocialForumEditReplyResponse = SpacemoltSocialForumEditReplyResponses[keyof SpacemoltSocialForumEditReplyResponses];
23383
+ export type SpacemoltSocialForumEditThreadData = {
23384
+ body?: {
23385
+ /**
23386
+ * Replacement body: 10–100000 bytes after sanitization. Omit to keep the current body. Supply title or content or both.
23387
+ */
23388
+ content?: string;
23389
+ /**
23390
+ * UUID of your unlocked thread to edit
23391
+ */
23392
+ target: string;
23393
+ /**
23394
+ * Replacement title: 5–100 bytes after sanitization. Omit to keep the current title.
23395
+ */
23396
+ title?: string;
23397
+ };
23398
+ path?: never;
23399
+ query?: never;
23400
+ url: '/api/v2/spacemolt_social/forum_edit_thread';
23401
+ };
23402
+ export type SpacemoltSocialForumEditThreadErrors = {
23403
+ /**
23404
+ * Bad request — invalid params, unknown command, or game error
23405
+ */
23406
+ 400: unknown;
23407
+ /**
23408
+ * Not authenticated — missing or invalid session
23409
+ */
23410
+ 401: unknown;
23411
+ /**
23412
+ * Rate limited — mutations allow 1 per tick (10 seconds)
23413
+ */
23414
+ 429: unknown;
23415
+ };
23416
+ export type SpacemoltSocialForumEditThreadResponses = {
23417
+ /**
23418
+ * Result. structuredContent type: ForumEditThreadResponse
23419
+ */
23420
+ 200: V2Response & {
23421
+ structuredContent?: ForumEditThreadResponse;
23422
+ };
23423
+ };
23424
+ export type SpacemoltSocialForumEditThreadResponse = SpacemoltSocialForumEditThreadResponses[keyof SpacemoltSocialForumEditThreadResponses];
22480
23425
  export type SpacemoltSocialForumGetThreadData = {
22481
23426
  body?: {
22482
23427
  /**
@@ -22692,7 +23637,7 @@ export type SpacemoltSocialGetActionLogData = {
22692
23637
  */
22693
23638
  page_size?: number;
22694
23639
  /**
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.
23640
+ * 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
23641
  */
22697
23642
  since_id?: number;
22698
23643
  };
@@ -22881,7 +23826,7 @@ export type SpacemoltSocialHelpPostResponse = SpacemoltSocialHelpPostResponses[k
22881
23826
  export type SpacemoltSocialMuteNotificationsData = {
22882
23827
  body?: {
22883
23828
  /**
22884
- * Notification channels to mute for WebSocket pushes (e.g. ["chat.system", "battle_alerts"]; see get_notification_settings for the catalog)
23829
+ * Notification channels to mute for WebSocket pushes; exchange_fills starts muted and while muted is sent on no transport (e.g. ["chat.system", "battle_alerts"]; see get_notification_settings for the catalog)
22885
23830
  */
22886
23831
  channels: Array<string>;
22887
23832
  };