@aephia/atlas-kit 0.6.0-next.71 → 0.6.0-next.73

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.
@@ -1,6 +1,12 @@
1
1
  import { type Address, type DiscoveryRequest, type EntityRef, type ReadOptions, type SageContext } from '../client/index.js';
2
2
  import { type CelestialBodyAccountData, type StarSystemAccountData, type WorldCoordinates, type WorldFixedValue } from '../internal/c4/world.js';
3
3
  import { type CargoDefinitionSummary } from '../registry/index.js';
4
+ import { type PlanetClaimStakePlotsSnapshot } from './planet-claim-stake-plots.js';
5
+ import { type StarbaseStatusSnapshot } from './starbase-status.js';
6
+ export { claimStakeTierIndex } from './planet-claim-stake-plots.js';
7
+ export type { ClaimStakeTier, PlanetClaimStakePlotDefinition, PlanetClaimStakePlotStructure, PlanetClaimStakePlotTier, PlanetClaimStakePlotsSnapshot, } from './planet-claim-stake-plots.js';
8
+ export { deriveStarbaseStatus, starbaseLevelIndex } from './starbase-status.js';
9
+ export type { ResolvedStarbaseUpgradeMaterial, ResolvedStarbaseUpgradeProgress, StarbaseServiceAvailability, StarbaseStatus, StarbaseStatusSnapshot, StarbaseUpgradeMaterial, StarbaseUpgradeProgress, } from './starbase-status.js';
4
10
  export type { StarSystemAccountData, WorldAsteroidData, WorldAsteroidResourceData, WorldClaimStakeGroupData, WorldConnectionCosts, WorldConnectionData, WorldCoordinates, WorldCraftingHabData, WorldFaction, WorldFixedValue, WorldPlanetData, WorldPlanetSubtype, WorldPlanetResourceData, WorldStarbaseData, WorldStarbaseLevel, WorldStarbaseLevelData, WorldStarbaseLevelInfoData, WorldStarbaseMaxLevelData, WorldStarbaseUpgradeData, WorldStructureData, } from '../internal/c4/world.js';
5
11
  /** Options supported by galaxy-scale StarSystem discovery.
6
12
  * @example
@@ -134,6 +140,22 @@ export declare function findCelestialBodyPda(game: Address, bodyId: number): Pro
134
140
  * ```
135
141
  */
136
142
  export declare function getStarSystem(ctx: SageContext, address: Address, options?: ReadOptions): Promise<StarSystemSnapshot>;
143
+ /** Reads one StarSystem and derives the status of its shared Starbase.
144
+ *
145
+ * Returns `undefined` when the System exists but has no Starbase; a missing
146
+ * System account still throws. The StarSystem stays on the shared account
147
+ * cache. Upgrade materials resolve lazily through the definitions registry,
148
+ * so a Starbase at its maximum level never loads the Game definitions.
149
+ *
150
+ * @example
151
+ * ```ts
152
+ * declare const ctx: SageContext;
153
+ * declare const system: Address;
154
+ * const status = await getStarbaseStatus(ctx, system);
155
+ * console.log(status?.level, status?.current.hullPoints);
156
+ * ```
157
+ */
158
+ export declare function getStarbaseStatus(ctx: SageContext, system: Address, options?: ReadOptions): Promise<StarbaseStatusSnapshot | undefined>;
137
159
  /** Reads an optional StarSystem by account address.
138
160
  * @example
139
161
  * ```ts
@@ -183,6 +205,30 @@ export declare function getCelestialBody(ctx: SageContext, address: Address, opt
183
205
  * ```
184
206
  */
185
207
  export declare function getPlanetResources(context: SageContext, planet: Address, options?: ReadOptions): Promise<PlanetResourcesSnapshot>;
208
+ /** Reads one Planet and its StarSystem, then summarizes Claim Stake plot
209
+ * availability for every tier.
210
+ *
211
+ * The Planet and System stay on the shared account cache; Claim Stake
212
+ * definitions load lazily through the registry so each occupying structure can
213
+ * be grouped under its definition and tier. Availability is per definition,
214
+ * matching the placement planner's check. A Planet whose System has no
215
+ * Starbase still lists plot limits by level and occupied plots, but no current
216
+ * limit or availability. An Asteroid address is rejected: only Planets carry
217
+ * Claim Stake plots.
218
+ *
219
+ * @example
220
+ * ```ts
221
+ * declare const ctx: SageContext;
222
+ * declare const planet: Address;
223
+ * const plots = await getPlanetClaimStakePlots(ctx, planet);
224
+ * for (const tier of plots.tiers) {
225
+ * for (const entry of tier.definitions) {
226
+ * console.log(entry.definition.name, tier.plotLimit, entry.available);
227
+ * }
228
+ * }
229
+ * ```
230
+ */
231
+ export declare function getPlanetClaimStakePlots(ctx: SageContext, planet: Address, options?: ReadOptions): Promise<PlanetClaimStakePlotsSnapshot>;
186
232
  /** Reads an optional CelestialBody by account address.
187
233
  * @example
188
234
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/world/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,SAAS,EAEd,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAOL,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,gBAAgB,EAChB,SAAS,GAAG,UAAU,CACvB,GAAG;IACF,uGAAuG;IACvG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,gBAAgB,EAChB,SAAS,GAAG,UAAU,CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,MAAM,IAAI,OAAO,CAAC;CACnB;AAED,KAAK,iBAAiB,GAAG,OAAO,CAAC,wBAAwB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAC/E,KAAK,mBAAmB,GAAG,OAAO,CAChC,wBAAwB,EACxB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CACrB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,IAAI,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;CACpC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAClD,MAAM,IAAI,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,IAAI,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG,gBAAgB,CAAC;AA2LtE;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAM7B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAUzC;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAa7B;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAaxC;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,qBAAqB,CAAC,CAMhC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,uBAAuB,CAAC,CAMlC;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAU5C;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,qBAAqB,CAAC,CAehC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAChB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAW3C;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,WAAW,EAChB,aAAa,EAAE,OAAO,EACtB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAwB3C;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,WAAW,EAChB,aAAa,EAAE,OAAO,EACtB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CASpC;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,WAAW,EAChB,aAAa,EAAE,OAAO,EACtB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAStC;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,gBAAgB,GACnB,MAAM,CAER;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAK3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/world/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,10 @@ import { requireGameAddress } from '../internal/game-context.js';
5
5
  import { attachReadMeta, readMeta } from '../internal/read-meta.js';
6
6
  import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
7
7
  import { resolveCargo, } from '../registry/index.js';
8
+ import { createPlanetClaimStakePlotsSnapshot, } from './planet-claim-stake-plots.js';
9
+ import { createStarbaseStatusSnapshot, } from './starbase-status.js';
10
+ export { claimStakeTierIndex } from './planet-claim-stake-plots.js';
11
+ export { deriveStarbaseStatus, starbaseLevelIndex } from './starbase-status.js';
8
12
  const STAR_SYSTEM_SNAPSHOTS = new WeakMap();
9
13
  const CELESTIAL_BODY_SNAPSHOTS = new WeakMap();
10
14
  function directMetadata(envelope) {
@@ -133,6 +137,27 @@ export async function getStarSystem(ctx, address, options) {
133
137
  requireGameAddress(ctx);
134
138
  return toStarSystemSnapshot(ctx, await ctx.data.read(starSystemAccountDefinition, address, options));
135
139
  }
140
+ /** Reads one StarSystem and derives the status of its shared Starbase.
141
+ *
142
+ * Returns `undefined` when the System exists but has no Starbase; a missing
143
+ * System account still throws. The StarSystem stays on the shared account
144
+ * cache. Upgrade materials resolve lazily through the definitions registry,
145
+ * so a Starbase at its maximum level never loads the Game definitions.
146
+ *
147
+ * @example
148
+ * ```ts
149
+ * declare const ctx: SageContext;
150
+ * declare const system: Address;
151
+ * const status = await getStarbaseStatus(ctx, system);
152
+ * console.log(status?.level, status?.current.hullPoints);
153
+ * ```
154
+ */
155
+ export async function getStarbaseStatus(ctx, system, options) {
156
+ const snapshot = await getStarSystem(ctx, system, options);
157
+ return snapshot.starbase === undefined
158
+ ? undefined
159
+ : createStarbaseStatusSnapshot(ctx, snapshot, snapshot.starbase);
160
+ }
136
161
  /** Reads an optional StarSystem by account address.
137
162
  * @example
138
163
  * ```ts
@@ -210,6 +235,37 @@ export async function getPlanetResources(context, planet, options) {
210
235
  requireGameAddress(context);
211
236
  return createPlanetResourcesSnapshot(context, await context.data.read(celestialBodyAccountDefinition, planet, options));
212
237
  }
238
+ /** Reads one Planet and its StarSystem, then summarizes Claim Stake plot
239
+ * availability for every tier.
240
+ *
241
+ * The Planet and System stay on the shared account cache; Claim Stake
242
+ * definitions load lazily through the registry so each occupying structure can
243
+ * be grouped under its definition and tier. Availability is per definition,
244
+ * matching the placement planner's check. A Planet whose System has no
245
+ * Starbase still lists plot limits by level and occupied plots, but no current
246
+ * limit or availability. An Asteroid address is rejected: only Planets carry
247
+ * Claim Stake plots.
248
+ *
249
+ * @example
250
+ * ```ts
251
+ * declare const ctx: SageContext;
252
+ * declare const planet: Address;
253
+ * const plots = await getPlanetClaimStakePlots(ctx, planet);
254
+ * for (const tier of plots.tiers) {
255
+ * for (const entry of tier.definitions) {
256
+ * console.log(entry.definition.name, tier.plotLimit, entry.available);
257
+ * }
258
+ * }
259
+ * ```
260
+ */
261
+ export async function getPlanetClaimStakePlots(ctx, planet, options) {
262
+ const body = await getCelestialBody(ctx, planet, options);
263
+ if (body.kind !== 'planet') {
264
+ throw new AccountDecodeError('celestialBody', body.address, new RangeError('The decoded CelestialBody is not a Planet.'), `CelestialBody ${body.address} is an Asteroid and has no Claim Stake plots. Supply a Planet address before retrying.`);
265
+ }
266
+ const system = await getStarSystem(ctx, body.system.address, options);
267
+ return createPlanetClaimStakePlotsSnapshot(ctx, body, system);
268
+ }
213
269
  /** Reads an optional CelestialBody by account address.
214
270
  * @example
215
271
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/world/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,GAQV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,8BAA8B,EAC9B,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,GAK5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EACL,YAAY,GAEb,MAAM,sBAAsB,CAAC;AAoJ9B,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAGtC,CAAC;AACJ,MAAM,wBAAwB,GAAG,IAAI,OAAO,EAGzC,CAAC;AAEJ,SAAS,cAAc,CACrB,QAA6B;IAE7B,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,QAAQ,EAAE,QAAQ;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA+C,EAC/C,QAAkB;IAElB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAE,CAAC;IACxE,IAAI,IAAwB,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC;QACtC,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,GAAG,IAAI;YAAE,IAAI,GAAG,QAAQ,CAAC;IAC7D,CAAC;IACD,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,IAAI,EAAE,IAAI,IAAI,EAAE;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAoB,EACpB,QAAiD;IAEjD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,kBAAkB,CAC1B,YAAY,EACZ,QAAQ,CAAC,OAAO,EAChB,IAAI,UAAU,CAAC,qDAAqD,CAAC,EACrE,qBAAqB,QAAQ,CAAC,OAAO,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,6BAA6B,IAAI,kGAAkG,CAC/M,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,sBAAsB,CACrC,cAAc,CACZ,uBAAuB,CAAC;QACtB,GAAG,QAAQ,CAAC,IAAI;QAChB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,YAAqB;KAC5B,CAAC,EACF,cAAc,CAAC,QAAQ,CAAC,CACzB,CACF,CAAC;IACF,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAoB,EACpB,QAAoD;IAEpD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,kBAAkB,CAC1B,eAAe,EACf,QAAQ,CAAC,OAAO,EAChB,IAAI,UAAU,CAAC,wDAAwD,CAAC,EACxE,wBAAwB,QAAQ,CAAC,OAAO,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,6BAA6B,IAAI,qGAAqG,CACrN,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC1C,MAAM,QAAQ,GAAG,sBAAsB,CACrC,cAAc,CACZ,uBAAuB,CAAC;QACtB,GAAG,IAAI;QACP,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;KACxC,CAAC,EACF,cAAc,CAAC,QAAQ,CAAC,CACzB,CACuB,CAAC;IAC3B,wBAAwB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,OAAoB,EACpB,QAAoD;IAEpD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,kBAAkB,CAC1B,eAAe,EACf,QAAQ,CAAC,OAAO,EAChB,IAAI,UAAU,CAAC,wDAAwD,CAAC,EACxE,wBAAwB,QAAQ,CAAC,OAAO,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,yBAAyB,IAAI,8FAA8F,CAC1M,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,kBAAkB,CAC1B,eAAe,EACf,QAAQ,CAAC,OAAO,EAChB,IAAI,UAAU,CAAC,4CAA4C,CAAC,EAC5D,iBAAiB,QAAQ,CAAC,OAAO,gGAAgG,CAClI,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAsB,QAAQ,CAAC,IAAI,CAAC;IAChD,MAAM,gBAAgB,GAAG,MAAM,0BAA0B,CACvD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,EAAE,CACV,CAAC;IACF,IAAI,QAAQ,CAAC,OAAO,KAAK,gBAAgB,EAAE,CAAC;QAC1C,MAAM,IAAI,kBAAkB,CAC1B,eAAe,EACf,QAAQ,CAAC,OAAO,EAChB,IAAI,UAAU,CACZ,uEAAuE,CACxE,EACD,iBAAiB,QAAQ,CAAC,OAAO,eAAe,MAAM,CAAC,EAAE,8CAA8C,gBAAgB,4GAA4G,CACpO,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChD,KAAK,EAAE,MAAM,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC;QACpD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,sBAAsB,CAC3B,cAAc,CACZ,uBAAuB,CAAC;QACtB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,MAAM,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,iBAA0B;QAChC,uBAAuB,EAAE,MAAM,CAAC,qBAAqB;QACrD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS;QACT,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC;QAC9C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC,EACF,cAAc,CAAC,QAAQ,CAAC,CACzB,CACF,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,IAA2B,EAC3B,MAA0B;IAE1B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,IAAI,kBAAkB,CAC1B,eAAe,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,UAAU,CACZ,qEAAqE,CACtE,EACD,iBAAiB,IAAI,CAAC,OAAO,0BAA0B,IAAI,CAAC,MAAM,CAAC,OAAO,8BAA8B,MAAM,CAAC,OAAO,4EAA4E,CACnM,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO;IACjE,MAAM,IAAI,kBAAkB,CAC1B,eAAe,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,UAAU,CACZ,yEAAyE,CAC1E,EACD,cAAc,MAAM,CAAC,OAAO,gCAAgC,IAAI,CAAC,OAAO,sHAAsH,CAC/L,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAa,EACb,QAAgB;IAEhB,OAAO,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAa,EACb,MAAc;IAEd,OAAO,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAgB,EAChB,OAAgB,EAChB,OAAqB;IAErB,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,oBAAoB,CACzB,GAAG,EACH,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,EAAE,OAAO,CAAC,CACnE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAgB,EAChB,OAAgB,EAChB,OAAqB;IAErB,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CACxC,2BAA2B,EAC3B,CAAC,OAAO,CAAC,EACT,OAAO,CACR,CAAC;IACF,OAAO,QAAQ,KAAK,SAAS;QAC3B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAgB,EAChB,QAAgB,EAChB,OAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,GAAG,EACH,MAAM,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAC1D,OAAO,CACR,CAAC;IACF,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAChD,MAAM,IAAI,kBAAkB,CAC1B,YAAY,EACZ,MAAM,CAAC,OAAO,EACd,IAAI,UAAU,CAAC,0DAA0D,CAAC,EAC1E,cAAc,MAAM,CAAC,OAAO,iBAAiB,QAAQ,mBAAmB,MAAM,CAAC,QAAQ,qGAAqG,CAC7L,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAgB,EAChB,UAAsC,EAAE;IAExC,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,EAAE;QACrE,GAAG,gBAAgB;QACnB,OAAO,EAAE,+BAA+B,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxD,QAAQ,EAAE,2BAA2B;KACtC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAE,CAAC;IACtC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CACpC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAgB,EAChB,OAAgB,EAChB,OAAqB;IAErB,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,uBAAuB,CAC5B,GAAG,EACH,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE,OAAO,EAAE,OAAO,CAAC,CACtE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAoB,EACpB,MAAe,EACf,OAAqB;IAErB,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,6BAA6B,CAClC,OAAO,EACP,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE,MAAM,EAAE,OAAO,CAAC,CACzE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAgB,EAChB,OAAgB,EAChB,OAAqB;IAErB,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CACxC,8BAA8B,EAC9B,CAAC,OAAO,CAAC,EACT,OAAO,CACR,CAAC;IACF,OAAO,QAAQ,KAAK,SAAS;QAC3B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAgB,EAChB,MAAc,EACd,OAAqB;IAErB,MAAM,IAAI,GAAG,MAAM,gBAAgB,CACjC,GAAG,EACH,MAAM,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAC3D,OAAO,CACR,CAAC;IACF,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,kBAAkB,CAC1B,eAAe,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,UAAU,CACZ,6DAA6D,CAC9D,EACD,iBAAiB,IAAI,CAAC,OAAO,iBAAiB,MAAM,mBAAmB,IAAI,CAAC,EAAE,qGAAqG,CACpL,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAgB,EAChB,UAAyC,EAAE;IAE3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,8BAA8B,EAAE;QACxE,GAAG,OAAO;QACV,OAAO,EAAE,kCAAkC,CAAC,IAAI,CAAC;QACjD,QAAQ,EAAE,2BAA2B;KACtC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACxC,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,CACvC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAE,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAgB,EAChB,aAAsB,EACtB,OAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CACvC,8BAA8B,EAC9B,MAAM,CAAC,sBAAsB,EAC7B,OAAO,CACR,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAE,CAAC;YACtD,MAAM,IAAI,kBAAkB,CAC1B,eAAe,EACf,OAAO,EACP,IAAI,UAAU,CAAC,4CAA4C,CAAC,EAC5D,cAAc,MAAM,CAAC,OAAO,iCAAiC,OAAO,6GAA6G,CAClL,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpD,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAClB,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAE,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAgB,EAChB,aAAsB,EACtB,OAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAC3B,CAAC,IAAI,EAA0B,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CACzD,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAE,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAClB,cAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAgB,EAChB,aAAsB,EACtB,OAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAC7B,CAAC,IAAI,EAA4B,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAC7D,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAE,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAClB,cAAc,CAAC,SAAS,EAAE,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAsB,EACtB,EAAoB;IAEpB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,GAAgB,EAChB,WAAoB,EACpB,OAAqB;IAErB,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,WAAW,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/world/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { type Address, type EntityRef, type SageContext } from '../client/index.js';
2
+ import type { ClaimStakeTier as C4ClaimStakeTier, GameClaimStakeDefinitionData } from '../internal/c4/claim-stake-definitions.js';
3
+ import type { WorldFixedValue, WorldStarbaseLevel } from '../internal/c4/world.js';
4
+ import type { PlanetSnapshot, StarSystemSnapshot } from './index.js';
5
+ /** Claim Stake tier label, the column axis of Planet plot tables.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * const tier: ClaimStakeTier = 'two';
10
+ * ```
11
+ */
12
+ export type ClaimStakeTier = C4ClaimStakeTier;
13
+ /** Returns the zero-based column index of a Claim Stake tier.
14
+ *
15
+ * Planet plot, base rent and base placement-fee tables are indexed
16
+ * `[starbaseLevelIndex][claimStakeTierIndex]`: seven Starbase level rows and
17
+ * five tier columns.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * declare const planet: PlanetSnapshot;
22
+ * const level1TierTwo = planet.details.claimStakePlots[1]![claimStakeTierIndex('two')];
23
+ * ```
24
+ */
25
+ export declare function claimStakeTierIndex(tier: ClaimStakeTier): number;
26
+ /** One Claim Stake structure recorded on a Planet plot.
27
+ *
28
+ * `active` is true while the stored deactivation time is zero. A deactivated
29
+ * structure still occupies its plot until the program removes it from the
30
+ * Planet.
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * declare const structure: PlanetClaimStakePlotStructure;
35
+ * console.log(structure.address, structure.active);
36
+ * ```
37
+ */
38
+ export interface PlanetClaimStakePlotStructure {
39
+ readonly address: Address;
40
+ readonly deactivationTimeUnixSeconds: bigint;
41
+ readonly active: boolean;
42
+ }
43
+ /** One Claim Stake definition and the plots it occupies on a Planet.
44
+ *
45
+ * `occupied` counts every structure still recorded for this definition.
46
+ * `available` is the tier's `plotLimit` minus `occupied`, clamped at zero; it
47
+ * is the per-definition check the placement planner runs
48
+ * (`claimedCount(details, definition.id)` against the tier cell) and is absent
49
+ * when the System has no Starbase. `requiredTagsProvided` is true when the
50
+ * Planet provides every tag the definition requires. Neither value is a
51
+ * complete eligibility verdict: permissions, rent, faction rules and
52
+ * concurrent placements remain chain-authoritative. `chronology` is the stored
53
+ * placement order the program uses to index structures.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * declare const entry: PlanetClaimStakePlotDefinition;
58
+ * console.log(entry.definition.name, entry.occupied, entry.available);
59
+ * ```
60
+ */
61
+ export interface PlanetClaimStakePlotDefinition {
62
+ readonly definition: GameClaimStakeDefinitionData;
63
+ readonly requiredTagsProvided: boolean;
64
+ readonly occupied: number;
65
+ readonly available?: number;
66
+ readonly structures: readonly PlanetClaimStakePlotStructure[];
67
+ readonly chronology: readonly Address[];
68
+ }
69
+ /** Plot limits for one Claim Stake tier on a Planet.
70
+ *
71
+ * `plotLimitByLevel` lists the stored plot cell for every Starbase level in
72
+ * {@link starbaseLevelIndex} order. `plotLimit`, `baseRentRate` and
73
+ * `basePlacementFee` select the row for the System's current Starbase level
74
+ * and are absent when the System has no Starbase. The limit applies per
75
+ * definition: the placement planner compares one definition's recorded
76
+ * structures against this cell, so each entry in `definitions` carries its own
77
+ * `occupied` and `available`. Whether the program also caps the tier as a
78
+ * whole is not established by the pinned contract, so no tier-wide remainder is
79
+ * reported. Base rent and placement fee are the stored Planet values;
80
+ * definition multipliers and the exact settlement remain program-authoritative.
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * declare const tier: PlanetClaimStakePlotTier;
85
+ * for (const entry of tier.definitions) {
86
+ * console.log(entry.definition.name, tier.plotLimit, entry.available);
87
+ * }
88
+ * ```
89
+ */
90
+ export interface PlanetClaimStakePlotTier {
91
+ readonly tier: ClaimStakeTier;
92
+ readonly tierIndex: number;
93
+ readonly plotLimitByLevel: readonly number[];
94
+ readonly plotLimit?: number;
95
+ readonly baseRentRate?: WorldFixedValue;
96
+ readonly basePlacementFee?: WorldFixedValue;
97
+ readonly definitions: readonly PlanetClaimStakePlotDefinition[];
98
+ }
99
+ /** Immutable Claim Stake plot availability of one Planet.
100
+ *
101
+ * `tiers` always holds the five Claim Stake tiers in order. `starbaseLevel`
102
+ * and `starbaseLevelIndex` come from the Planet's StarSystem and are absent
103
+ * when that System has no Starbase. Read metadata reports the older of the
104
+ * Planet and StarSystem observations.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * declare const plots: PlanetClaimStakePlotsSnapshot;
109
+ * const open = plots.tiers.flatMap((tier) =>
110
+ * tier.definitions.filter((entry) => (entry.available ?? 0) > 0),
111
+ * );
112
+ * console.log(plots.name, open.map((entry) => entry.definition.name));
113
+ * ```
114
+ */
115
+ export interface PlanetClaimStakePlotsSnapshot {
116
+ readonly kind: 'planetClaimStakePlots';
117
+ readonly address: Address;
118
+ readonly bodyId: number;
119
+ readonly name: string;
120
+ readonly game: Address;
121
+ readonly system: EntityRef<'starSystem'>;
122
+ readonly starbaseLevel?: WorldStarbaseLevel;
123
+ readonly starbaseLevelIndex?: number;
124
+ readonly providedTags: readonly number[];
125
+ readonly tiers: readonly PlanetClaimStakePlotTier[];
126
+ toJSON(): unknown;
127
+ }
128
+ /** Builds the plot availability snapshot for a loaded Planet and its System. */
129
+ export declare function createPlanetClaimStakePlotsSnapshot(context: SageContext, planet: PlanetSnapshot, system: StarSystemSnapshot): Promise<PlanetClaimStakePlotsSnapshot>;
130
+ //# sourceMappingURL=planet-claim-stake-plots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planet-claim-stake-plots.d.ts","sourceRoot":"","sources":["../../src/world/planet-claim-stake-plots.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,SAAS,EAEd,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,cAAc,IAAI,gBAAgB,EAClC,4BAA4B,EAC7B,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAEV,eAAe,EACf,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AASjC,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAU9C;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAEhE;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,4BAA4B,CAAC;IAClD,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,SAAS,8BAA8B,EAAE,CAAC;CACjE;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACpD,MAAM,IAAI,OAAO,CAAC;CACnB;AAwBD,gFAAgF;AAChF,wBAAsB,mCAAmC,CACvD,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,6BAA6B,CAAC,CAiFxC"}
@@ -0,0 +1,110 @@
1
+ import { entityRef, } from '../client/index.js';
2
+ import { attachJsonSerialization } from '../internal/json.js';
3
+ import { attachReadMeta, readMeta } from '../internal/read-meta.js';
4
+ import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
5
+ import { listClaimStakeDefinitions, resolveClaimStakeDefinition, } from '../registry/index.js';
6
+ import { starbaseLevelIndex } from './starbase-status.js';
7
+ const CLAIM_STAKE_TIERS = Object.freeze([
8
+ 'one',
9
+ 'two',
10
+ 'three',
11
+ 'four',
12
+ 'five',
13
+ ]);
14
+ /** Returns the zero-based column index of a Claim Stake tier.
15
+ *
16
+ * Planet plot, base rent and base placement-fee tables are indexed
17
+ * `[starbaseLevelIndex][claimStakeTierIndex]`: seven Starbase level rows and
18
+ * five tier columns.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * declare const planet: PlanetSnapshot;
23
+ * const level1TierTwo = planet.details.claimStakePlots[1]![claimStakeTierIndex('two')];
24
+ * ```
25
+ */
26
+ export function claimStakeTierIndex(tier) {
27
+ return CLAIM_STAKE_TIERS.indexOf(tier);
28
+ }
29
+ function structuresOf(group) {
30
+ return (group?.structures ?? []).map((structure) => ({
31
+ active: structure.deactivationTimeUnixSeconds === 0n,
32
+ address: structure.address,
33
+ deactivationTimeUnixSeconds: structure.deactivationTimeUnixSeconds,
34
+ }));
35
+ }
36
+ function olderMetadata(planet, system) {
37
+ return {
38
+ commitment: planet.commitment,
39
+ slot: planet.slot < system.slot ? planet.slot : system.slot,
40
+ source: planet.source,
41
+ strategy: 'direct',
42
+ };
43
+ }
44
+ /** Builds the plot availability snapshot for a loaded Planet and its System. */
45
+ export async function createPlanetClaimStakePlotsSnapshot(context, planet, system) {
46
+ const details = planet.details;
47
+ const catalog = await listClaimStakeDefinitions(context);
48
+ const groups = new Map(details.claimedPlots.map((group) => [group.key, group]));
49
+ const known = new Set(catalog.map((definition) => definition.id));
50
+ // A group keyed outside the loaded catalog forces the registry refresh and
51
+ // out-of-sync rejection that every definition lookup applies.
52
+ const refreshed = await Promise.all([...groups.keys()]
53
+ .filter((key) => !known.has(key))
54
+ .map((key) => resolveClaimStakeDefinition(context, key)));
55
+ const definitions = [...catalog, ...refreshed];
56
+ const starbase = system.starbase;
57
+ const levelIndex = starbase === undefined ? undefined : starbaseLevelIndex(starbase.level);
58
+ const tiers = CLAIM_STAKE_TIERS.map((tier, tierIndex) => {
59
+ // The pinned Planet codec fixes seven level rows and five tier columns.
60
+ const plotLimitByLevel = details.claimStakePlots.map((row) => row[tierIndex]);
61
+ const plotLimit = levelIndex === undefined ? undefined : plotLimitByLevel[levelIndex];
62
+ const entries = definitions
63
+ .filter((definition) => definition.tier === tier)
64
+ .map((definition) => {
65
+ const group = groups.get(definition.id);
66
+ const structures = structuresOf(group);
67
+ const occupied = structures.length;
68
+ return {
69
+ chronology: [...(group?.chronoAddresses ?? [])],
70
+ definition,
71
+ occupied,
72
+ ...(plotLimit === undefined
73
+ ? {}
74
+ : { available: Math.max(0, plotLimit - occupied) }),
75
+ requiredTagsProvided: definition.requiredTagIds.every((tag) => details.providedTags.includes(tag)),
76
+ structures,
77
+ };
78
+ });
79
+ if (levelIndex === undefined || plotLimit === undefined) {
80
+ return { definitions: entries, plotLimitByLevel, tier, tierIndex };
81
+ }
82
+ return {
83
+ basePlacementFee: {
84
+ ...details.baseClaimStakePlacementFee[levelIndex][tierIndex],
85
+ },
86
+ baseRentRate: {
87
+ ...details.baseClaimStakeRentRate[levelIndex][tierIndex],
88
+ },
89
+ definitions: entries,
90
+ plotLimit,
91
+ plotLimitByLevel,
92
+ tier,
93
+ tierIndex,
94
+ };
95
+ });
96
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
97
+ address: planet.address,
98
+ bodyId: planet.id,
99
+ game: planet.game,
100
+ kind: 'planetClaimStakePlots',
101
+ name: planet.name,
102
+ providedTags: [...details.providedTags],
103
+ ...(starbase === undefined || levelIndex === undefined
104
+ ? {}
105
+ : { starbaseLevel: starbase.level, starbaseLevelIndex: levelIndex }),
106
+ system: entityRef('starSystem', system.address),
107
+ tiers,
108
+ }), olderMetadata(readMeta(planet), readMeta(system))));
109
+ }
110
+ //# sourceMappingURL=planet-claim-stake-plots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planet-claim-stake-plots.js","sourceRoot":"","sources":["../../src/world/planet-claim-stake-plots.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAKV,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EACL,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAY1D,MAAM,iBAAiB,GAA8B,MAAM,CAAC,MAAM,CAAC;IACjE,KAAK;IACL,KAAK;IACL,OAAO;IACP,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAoB;IACtD,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AA4GD,SAAS,YAAY,CACnB,KAA2C;IAE3C,OAAO,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,EAAE,SAAS,CAAC,2BAA2B,KAAK,EAAE;QACpD,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,2BAA2B,EAAE,SAAS,CAAC,2BAA2B;KACnE,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CACpB,MAAgB,EAChB,MAAgB;IAEhB,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;QAC3D,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,QAAQ;KACnB,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,OAAoB,EACpB,MAAsB,EACtB,MAA0B;IAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CACxD,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,2EAA2E;IAC3E,8DAA8D;IAC9D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;SACf,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAChC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,2BAA2B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAC3D,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,UAAU,GACd,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CACjC,CAAC,IAAI,EAAE,SAAS,EAA4B,EAAE;QAC5C,wEAAwE;QACxE,MAAM,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAClD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAE,CACzB,CAAC;QACF,MAAM,SAAS,GACb,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAE,CAAC;QACvE,MAAM,OAAO,GAAG,WAAW;aACxB,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC;aAChD,GAAG,CAAC,CAAC,UAAU,EAAkC,EAAE;YAClD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;YACnC,OAAO;gBACL,UAAU,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC;gBAC/C,UAAU;gBACV,QAAQ;gBACR,GAAG,CAAC,SAAS,KAAK,SAAS;oBACzB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC;gBACrD,oBAAoB,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5D,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CACnC;gBACD,UAAU;aACX,CAAC;QACJ,CAAC,CAAC,CAAC;QACL,IAAI,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACxD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACrE,CAAC;QACD,OAAO;YACL,gBAAgB,EAAE;gBAChB,GAAG,OAAO,CAAC,0BAA0B,CAAC,UAAU,CAAE,CAAC,SAAS,CAAE;aAC/D;YACD,YAAY,EAAE;gBACZ,GAAG,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAE,CAAC,SAAS,CAAE;aAC3D;YACD,WAAW,EAAE,OAAO;YACpB,SAAS;YACT,gBAAgB;YAChB,IAAI;YACJ,SAAS;SACV,CAAC;IACJ,CAAC,CACF,CAAC;IACF,OAAO,sBAAsB,CAC3B,cAAc,CACZ,uBAAuB,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,uBAAgC;QACtC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;QACvC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS;YACpD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;QACtE,MAAM,EAAE,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC;QAC/C,KAAK;KACN,CAAC,EACF,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAE,EAAE,QAAQ,CAAC,MAAM,CAAE,CAAC,CACpD,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,176 @@
1
+ import { type Address, type EntityRef, type SageContext } from '../client/index.js';
2
+ import type { WorldFaction, WorldStarbaseData, WorldStarbaseLevel, WorldStarbaseLevelInfoData } from '../internal/c4/world.js';
3
+ import { type CargoDefinitionSummary } from '../registry/index.js';
4
+ import type { StarSystemSnapshot } from './index.js';
5
+ /** Returns the zero-based ordinal of a Starbase level label.
6
+ *
7
+ * Levels `level-0` through `level-5` map to 0 through 5 and the Central Space
8
+ * Station (`css`) ranks above them as 6. This is the row index used by Planet
9
+ * Claim Stake plot tables and Starbase Crafting Hab plot tables, and the order
10
+ * used to compare a Starbase level with a service enable level.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const unlocked = starbaseLevelIndex('level-3') >= starbaseLevelIndex('level-2');
15
+ * ```
16
+ */
17
+ export declare function starbaseLevelIndex(level: WorldStarbaseLevel): number;
18
+ /** One material a shared Starbase needs before it can reach its next level.
19
+ *
20
+ * `needed`, `deposited` and `remaining` are raw cargo units. `complete` is true
21
+ * once `deposited` has reached `needed`. `crew` and `durationSeconds` describe
22
+ * one contribution of this material: a Starbase Player installs it through its
23
+ * own `StarbaseUpgradeProcess`, which the `starbases` entry reads separately.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * declare const material: StarbaseUpgradeMaterial;
28
+ * console.log(material.cargoId, material.remaining);
29
+ * ```
30
+ */
31
+ export interface StarbaseUpgradeMaterial {
32
+ readonly cargoId: number;
33
+ readonly needed: bigint;
34
+ readonly deposited: bigint;
35
+ readonly remaining: bigint;
36
+ readonly complete: boolean;
37
+ readonly crew: number;
38
+ readonly durationSeconds: number;
39
+ }
40
+ /** Shared progress of a Starbase toward its next level.
41
+ *
42
+ * `complete` is true when every listed material is fully deposited. The pinned
43
+ * contract states that the Starbase should then change level and reset the
44
+ * deposits; the program applies that change, the SDK only reports the stored
45
+ * state.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * declare const upgrade: StarbaseUpgradeProgress;
50
+ * console.log(upgrade.toLevel, upgrade.complete);
51
+ * ```
52
+ */
53
+ export interface StarbaseUpgradeProgress {
54
+ readonly toLevel: WorldStarbaseLevel;
55
+ readonly complete: boolean;
56
+ readonly materials: readonly StarbaseUpgradeMaterial[];
57
+ }
58
+ /** Whether one Starbase service is enabled at the current level.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * declare const service: StarbaseServiceAvailability;
63
+ * if (service.available) console.log('enabled since', service.enabledFromLevel);
64
+ * ```
65
+ */
66
+ export interface StarbaseServiceAvailability {
67
+ readonly enabledFromLevel: WorldStarbaseLevel;
68
+ readonly available: boolean;
69
+ }
70
+ /** Derived status of the shared Starbase nested in one StarSystem.
71
+ *
72
+ * `current` pairs the stored hull and shield points with the maximums the
73
+ * current level configures. `pendingHullPoints` mirrors the stored
74
+ * `pendingHp` field as is: the pinned contract only names it, so the SDK makes
75
+ * no claim about when or how the program settles it into `hullPoints`.
76
+ * `timing` values are raw Unix seconds, as on the Fleet combat status; shield
77
+ * and hull settlement rules are likewise unqualified. `upgrade` is absent once
78
+ * the Starbase has reached its maximum level.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * declare const status: StarbaseStatus;
83
+ * console.log(status.level, status.current.hullPoints, status.current.maxHullPoints);
84
+ * ```
85
+ */
86
+ export interface StarbaseStatus {
87
+ readonly kind: 'starbaseStatus';
88
+ readonly owner: WorldFaction;
89
+ readonly level: WorldStarbaseLevel;
90
+ /** Ordinal from {@link starbaseLevelIndex}; the Central Space Station is 6. */
91
+ readonly levelIndex: number;
92
+ readonly maxLevel: WorldStarbaseLevel;
93
+ readonly atMaxLevel: boolean;
94
+ /** Configured values for the current level, copied from the level table. */
95
+ readonly levelInfo: WorldStarbaseLevelInfoData;
96
+ readonly current: {
97
+ readonly hullPoints: number;
98
+ readonly pendingHullPoints: number;
99
+ readonly maxHullPoints: number;
100
+ readonly shieldPoints: number;
101
+ readonly maxShieldPoints: number;
102
+ };
103
+ readonly timing: {
104
+ /** When shield points may resume regenerating after reaching zero. */
105
+ readonly shieldBreakDelayEndsAtUnixSeconds: bigint;
106
+ readonly lastCombatUpdateAtUnixSeconds: bigint;
107
+ /** When the Starbase was last built or destroyed. */
108
+ readonly builtOrDestroyedAtUnixSeconds: bigint;
109
+ };
110
+ readonly services: {
111
+ readonly localMarket: StarbaseServiceAvailability;
112
+ readonly repair: StarbaseServiceAvailability;
113
+ };
114
+ readonly upgrade?: StarbaseUpgradeProgress;
115
+ toJSON(): unknown;
116
+ }
117
+ /** One upgrade material with its registry-resolved cargo definition.
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * declare const material: ResolvedStarbaseUpgradeMaterial;
122
+ * console.log(material.cargo.name, material.remaining);
123
+ * ```
124
+ */
125
+ export interface ResolvedStarbaseUpgradeMaterial extends StarbaseUpgradeMaterial {
126
+ readonly cargo: CargoDefinitionSummary;
127
+ }
128
+ /** Upgrade progress whose materials carry resolved cargo definitions.
129
+ *
130
+ * @example
131
+ * ```ts
132
+ * declare const upgrade: ResolvedStarbaseUpgradeProgress;
133
+ * console.log(upgrade.materials.map((material) => material.cargo.name));
134
+ * ```
135
+ */
136
+ export interface ResolvedStarbaseUpgradeProgress extends Omit<StarbaseUpgradeProgress, 'materials'> {
137
+ readonly materials: readonly ResolvedStarbaseUpgradeMaterial[];
138
+ }
139
+ /** Immutable shared Starbase status read for one StarSystem.
140
+ *
141
+ * `address` is the StarSystem address: the nested Starbase has no account of
142
+ * its own. Read metadata comes from the StarSystem observation.
143
+ *
144
+ * @example
145
+ * ```ts
146
+ * declare const status: StarbaseStatusSnapshot;
147
+ * console.log(status.systemName, status.upgrade?.materials[0]?.cargo.name);
148
+ * ```
149
+ */
150
+ export interface StarbaseStatusSnapshot extends Omit<StarbaseStatus, 'upgrade'> {
151
+ readonly address: Address;
152
+ readonly system: EntityRef<'starSystem'>;
153
+ readonly systemName: string;
154
+ readonly upgrade?: ResolvedStarbaseUpgradeProgress;
155
+ }
156
+ /** Derives the status of a shared Starbase from already-loaded StarSystem data.
157
+ *
158
+ * This is pure and network-free: it needs neither the context nor the Game
159
+ * definitions registry, so galaxy-map readers can call it on every System they
160
+ * already hold. The result is a new deeply frozen value; the input is left
161
+ * untouched. Materials carry numeric cargo ids; use `getStarbaseStatus` when
162
+ * you want them resolved to cargo definitions.
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * declare const system: StarSystemSnapshot;
167
+ * if (system.starbase !== undefined) {
168
+ * const status = deriveStarbaseStatus(system.starbase);
169
+ * console.log(status.level, status.upgrade?.toLevel);
170
+ * }
171
+ * ```
172
+ */
173
+ export declare function deriveStarbaseStatus(starbase: WorldStarbaseData): StarbaseStatus;
174
+ /** Builds the resolved status snapshot for a loaded StarSystem's Starbase. */
175
+ export declare function createStarbaseStatusSnapshot(context: SageContext, system: StarSystemSnapshot, starbase: WorldStarbaseData): Promise<StarbaseStatusSnapshot>;
176
+ //# sourceMappingURL=starbase-status.d.ts.map