# mining
Documentation: next (source: develop).

Install the preview: `pnpm add @aephia/atlas-kit@next`. These docs follow develop and may include changes not yet published to npm.

Markdown source of https://develop.atlas-kit-docs.pages.dev/reference/mining/ — see https://develop.atlas-kit-docs.pages.dev/ai/ for the full machine-readable surface.

## Interfaces

<a id="fleetminingoutput"></a>

### FleetMiningOutput

Defined in: [packages/sage/src/mining/index.ts:108](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L108)

One selected and registry-resolved output of an active mining Fleet.

#### Example

```ts
declare const output: FleetMiningOutput;
console.log(output.cargo.name, output.unitsPerSecond);
```

#### Extends

- [`ResourceDepositItem`](/reference/mining/#resourcedeposititem)

#### Properties

<a id="activeminercountraw"></a>

##### activeMinerCountRaw

```ts
readonly activeMinerCountRaw: bigint;
```

Defined in: [packages/sage/src/mining/index.ts:56](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L56)

###### Inherited from

[`ResourceDepositItem`](/reference/mining/#resourcedeposititem).[`activeMinerCountRaw`](/reference/mining/#resourcedeposititem)

<a id="amountminedunitsraw"></a>

##### amountMinedUnitsRaw

```ts
readonly amountMinedUnitsRaw: bigint;
```

Defined in: [packages/sage/src/mining/index.ts:55](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L55)

###### Inherited from

[`ResourceDepositItem`](/reference/mining/#resourcedeposititem).[`amountMinedUnitsRaw`](/reference/mining/#resourcedeposititem)

<a id="cargo"></a>

##### cargo

```ts
readonly cargo: CargoDefinitionSummary;
```

Defined in: [packages/sage/src/mining/index.ts:53](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L53)

###### Inherited from

[`ResourceDepositItem`](/reference/mining/#resourcedeposititem).[`cargo`](/reference/mining/#resourcedeposititem)

<a id="richness"></a>

##### richness

```ts
readonly richness: WorldFixedValue;
```

Defined in: [packages/sage/src/mining/index.ts:54](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L54)

###### Inherited from

[`ResourceDepositItem`](/reference/mining/#resourcedeposititem).[`richness`](/reference/mining/#resourcedeposititem)

<a id="unitspersecond"></a>

##### unitsPerSecond

```ts
readonly unitsPerSecond: number;
```

Defined in: [packages/sage/src/mining/index.ts:110](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L110)

Nominal cargo units per second, with Fleet capacity shared among selected resources.

***

<a id="fleetminingsnapshot"></a>

### FleetMiningSnapshot

Defined in: [packages/sage/src/mining/index.ts:120](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L120)

Immutable current extraction relationship for one active mining Fleet.

#### Example

```ts
declare const mining: FleetMiningSnapshot;
console.log(mining.outputs);
```

#### Properties

<a id="asteroid"></a>

##### asteroid

```ts
readonly asteroid: EntityRef<"celestialBody">;
```

Defined in: [packages/sage/src/mining/index.ts:124](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L124)

<a id="fleet"></a>

##### fleet

```ts
readonly fleet: EntityRef<"fleet">;
```

Defined in: [packages/sage/src/mining/index.ts:122](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L122)

<a id="kind"></a>

##### kind

```ts
readonly kind: "fleetMining";
```

Defined in: [packages/sage/src/mining/index.ts:121](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L121)

<a id="lastupdatedatunixseconds"></a>

##### lastUpdatedAtUnixSeconds

```ts
readonly lastUpdatedAtUnixSeconds: bigint;
```

Defined in: [packages/sage/src/mining/index.ts:125](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L125)

<a id="miningrate"></a>

##### miningRate

```ts
readonly miningRate: {
  raw: bigint;
  unitsPerSecond: number;
};
```

Defined in: [packages/sage/src/mining/index.ts:128](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L128)

Fleet base rate before sharing among selected resources and applying richness.

###### raw

```ts
readonly raw: bigint;
```

###### unitsPerSecond

```ts
readonly unitsPerSecond: number;
```

<a id="outputs"></a>

##### outputs

```ts
readonly outputs: readonly FleetMiningOutput[];
```

Defined in: [packages/sage/src/mining/index.ts:132](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L132)

<a id="ownerprofile"></a>

##### ownerProfile

```ts
readonly ownerProfile: EntityRef<"profile">;
```

Defined in: [packages/sage/src/mining/index.ts:123](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L123)

<a id="regionxpmodifier"></a>

##### regionXpModifier

```ts
readonly regionXpModifier: WorldFixedValue;
```

Defined in: [packages/sage/src/mining/index.ts:126](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L126)

#### Methods

<a id="tojson"></a>

##### toJSON()

```ts
toJSON(): unknown;
```

Defined in: [packages/sage/src/mining/index.ts:133](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L133)

###### Returns

`unknown`

***

<a id="miningestimate"></a>

### MiningEstimate

Defined in: [packages/sage/src/mining/estimate.ts:75](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L75)

Immutable, JSON-safe constant-rate estimate, not a settlement guarantee.
Projected quantities are fractional numbers; chain rounding, changing state,
eligibility and tick ordering are excluded. A null limit means unbounded by
that constraint, never an unknown balance. No-output scenarios run for zero time
and project no upkeep. An initially full hold conservatively permits no mining,
even when Food outflow could offset output: tick ordering is not established.

#### Example

```ts
declare const estimate: MiningEstimate;
console.log(estimate.durationSeconds, estimate.limitingFactors);
```

#### Properties

<a id="basis"></a>

##### basis

```ts
readonly basis: "official-model-estimate";
```

Defined in: [packages/sage/src/mining/estimate.ts:76](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L76)

<a id="consumedammounits"></a>

##### consumedAmmoUnits

```ts
readonly consumedAmmoUnits: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:95](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L95)

<a id="consumedfoodunits"></a>

##### consumedFoodUnits

```ts
readonly consumedFoodUnits: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:94](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L94)

<a id="durationseconds"></a>

##### durationSeconds

```ts
readonly durationSeconds: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:78](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L78)

Requested duration clipped to the modeled limits, in seconds.

<a id="finaloccupiedspace"></a>

##### finalOccupiedSpace

```ts
readonly finalOccupiedSpace: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:96](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L96)

<a id="foodvolumeoutflowpersecond"></a>

##### foodVolumeOutflowPerSecond

```ts
readonly foodVolumeOutflowPerSecond: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:85](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L85)

<a id="limitingfactors"></a>

##### limitingFactors

```ts
readonly limitingFactors: readonly MiningEstimateLimit[];
```

Defined in: [packages/sage/src/mining/estimate.ts:93](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L93)

<a id="limitsseconds"></a>

##### limitsSeconds

```ts
readonly limitsSeconds: {
  ammo: number | null;
  cargo: number | null;
  food: number | null;
};
```

Defined in: [packages/sage/src/mining/estimate.ts:88](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L88)

###### ammo

```ts
readonly ammo: number | null;
```

###### cargo

```ts
readonly cargo: number | null;
```

###### food

```ts
readonly food: number | null;
```

<a id="netcargogrowthpersecond"></a>

##### netCargoGrowthPerSecond

```ts
readonly netCargoGrowthPerSecond: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:87](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L87)

May be negative when Food consumption frees more space than mining uses.

<a id="outputs-1"></a>

##### outputs

```ts
readonly outputs: readonly {
  cargoId: number;
  projectedUnits: number;
  unitsPerSecond: number;
}[];
```

Defined in: [packages/sage/src/mining/estimate.ts:79](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L79)

<a id="resourcevolumeinflowpersecond"></a>

##### resourceVolumeInflowPerSecond

```ts
readonly resourceVolumeInflowPerSecond: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:84](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L84)

***

<a id="miningestimateinput"></a>

### MiningEstimateInput

Defined in: [packages/sage/src/mining/estimate.ts:37](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L37)

Explicit constant-rate Asteroid scenario. Balances and rates use cargo units;
capacity, occupancy and storage costs use translated storage units. Occupancy
includes all available Food; Ammo is held separately and frees no cargo space.
Supply all 1–8 selected resources, including zero-yield rows. Fleet rate already
includes ship/component effects: do not apply those again in the multipliers.

#### Example

```ts
const input: MiningEstimateInput = {
  fleetUnitsPerSecond: 2, durationSeconds: 60,
  resources: [{ cargoId: 300, richness: 1, storageCost: 1, runtimeMultiplier: 1 }],
  cargo: { occupiedSpace: 10, capacity: 100 },
  food: { availableUnits: 10, burnUnitsPerSecond: 0.1, storageCost: 1 },
  ammo: { availableUnits: 10, burnUnitsPerSecond: 0.1 },
};
```

#### Properties

<a id="ammo"></a>

##### ammo

```ts
readonly ammo: {
  availableUnits: number;
  burnUnitsPerSecond: number;
};
```

Defined in: [packages/sage/src/mining/estimate.ts:48](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L48)

###### availableUnits

```ts
readonly availableUnits: number;
```

###### burnUnitsPerSecond

```ts
readonly burnUnitsPerSecond: number;
```

<a id="cargo-1"></a>

##### cargo

```ts
readonly cargo: {
  capacity: number;
  occupiedSpace: number;
};
```

Defined in: [packages/sage/src/mining/estimate.ts:42](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L42)

###### capacity

```ts
readonly capacity: number;
```

###### occupiedSpace

```ts
readonly occupiedSpace: number;
```

<a id="durationseconds-1"></a>

##### durationSeconds

```ts
readonly durationSeconds: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:40](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L40)

Requested duration; the result reports the clipped duration.

<a id="fleetunitspersecond"></a>

##### fleetUnitsPerSecond

```ts
readonly fleetUnitsPerSecond: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:38](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L38)

<a id="food"></a>

##### food

```ts
readonly food: {
  availableUnits: number;
  burnUnitsPerSecond: number;
  storageCost: number;
};
```

Defined in: [packages/sage/src/mining/estimate.ts:43](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L43)

###### availableUnits

```ts
readonly availableUnits: number;
```

###### burnUnitsPerSecond

```ts
readonly burnUnitsPerSecond: number;
```

###### storageCost

```ts
readonly storageCost: number;
```

<a id="resources"></a>

##### resources

```ts
readonly resources: readonly MiningEstimateResourceInput[];
```

Defined in: [packages/sage/src/mining/estimate.ts:41](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L41)

***

<a id="miningestimateresourceinput"></a>

### MiningEstimateResourceInput

Defined in: [packages/sage/src/mining/estimate.ts:14](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L14)

One selected Asteroid resource, using translated storage units rather than encoded fixed point.
`runtimeMultiplier` is the caller's effective multiplier, including any applicable
crew/research effects. No modifier composition or eligibility is inferred.

#### Example

```ts
const resource: MiningEstimateResourceInput = {
  cargoId: 300, richness: 2, storageCost: 2, runtimeMultiplier: 1.5,
};
```

#### Properties

<a id="cargoid"></a>

##### cargoId

```ts
readonly cargoId: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:15](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L15)

<a id="richness-1"></a>

##### richness

```ts
readonly richness: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:16](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L16)

<a id="runtimemultiplier"></a>

##### runtimeMultiplier

```ts
readonly runtimeMultiplier: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:18](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L18)

<a id="storagecost"></a>

##### storageCost

```ts
readonly storageCost: number;
```

Defined in: [packages/sage/src/mining/estimate.ts:17](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L17)

***

<a id="miningoutputrate"></a>

### MiningOutputRate

Defined in: [packages/sage/src/mining/index.ts:96](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L96)

One nominal resource output after sharing Fleet capacity and applying richness.

#### Example

```ts
const rate: MiningOutputRate = { cargoId: 8, unitsPerSecond: 4.5 };
```

#### Properties

<a id="cargoid-1"></a>

##### cargoId

```ts
readonly cargoId: number;
```

Defined in: [packages/sage/src/mining/index.ts:97](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L97)

<a id="unitspersecond-1"></a>

##### unitsPerSecond

```ts
readonly unitsPerSecond: number;
```

Defined in: [packages/sage/src/mining/index.ts:98](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L98)

***

<a id="miningoutputrateinput"></a>

### MiningOutputRateInput

Defined in: [packages/sage/src/mining/index.ts:85](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L85)

A pure rate input pairing one cargo id with Asteroid richness.

#### Example

```ts
const input: MiningOutputRateInput = { cargoId: 8, richness: 1.5 };
```

#### Properties

<a id="cargoid-2"></a>

##### cargoId

```ts
readonly cargoId: number;
```

Defined in: [packages/sage/src/mining/index.ts:86](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L86)

<a id="richness-2"></a>

##### richness

```ts
readonly richness: number;
```

Defined in: [packages/sage/src/mining/index.ts:87](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L87)

***

<a id="miningprofile"></a>

### MiningProfile

Defined in: [packages/sage/src/mining/profile.ts:44](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L44)

Reference mining values for one selected resource at the given richness,
with no crew, research or rare-mineral multiplier. `fullHold` starts from an
empty hold carrying exactly the Food it burns and a full Ammo bank; it is
null when nothing is mined, the hold has no capacity, or Food outflow would
keep pace with output. Ratios are null when that consumable is not burned.

#### Example

```ts
declare const profile: MiningProfile;
console.log(profile.unitsPerHour, profile.fullHold?.durationSeconds);
```

#### Properties

<a id="basis-1"></a>

##### basis

```ts
readonly basis: "official-model-estimate";
```

Defined in: [packages/sage/src/mining/profile.ts:45](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L45)

<a id="fullhold"></a>

##### fullHold

```ts
readonly fullHold: 
  | {
  ammoUnits: number;
  durationSeconds: number;
  foodUnits: number;
  limitedBy: "cargo" | "ammo";
  minedUnits: number;
}
  | null;
```

Defined in: [packages/sage/src/mining/profile.ts:52](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L52)

###### Union Members

###### Type Literal

```ts
{
  ammoUnits: number;
  durationSeconds: number;
  foodUnits: number;
  limitedBy: "cargo" | "ammo";
  minedUnits: number;
}
```

###### ammoUnits

```ts
readonly ammoUnits: number;
```

###### durationSeconds

```ts
readonly durationSeconds: number;
```

###### foodUnits

```ts
readonly foodUnits: number;
```

Food burned, which is also the Food to carry in the hold at the start.

###### limitedBy

```ts
readonly limitedBy: "cargo" | "ammo";
```

###### minedUnits

```ts
readonly minedUnits: number;
```

***

`null`

<a id="unitsperammo"></a>

##### unitsPerAmmo

```ts
readonly unitsPerAmmo: number | null;
```

Defined in: [packages/sage/src/mining/profile.ts:51](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L51)

Resource units mined per Ammo burned.

<a id="unitsperfood"></a>

##### unitsPerFood

```ts
readonly unitsPerFood: number | null;
```

Defined in: [packages/sage/src/mining/profile.ts:49](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L49)

Resource units mined per Food burned.

<a id="unitsperhour"></a>

##### unitsPerHour

```ts
readonly unitsPerHour: number;
```

Defined in: [packages/sage/src/mining/profile.ts:47](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L47)

<a id="unitspersecond-2"></a>

##### unitsPerSecond

```ts
readonly unitsPerSecond: number;
```

Defined in: [packages/sage/src/mining/profile.ts:46](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L46)

***

<a id="miningprofileinput"></a>

### MiningProfileInput

Defined in: [packages/sage/src/mining/profile.ts:17](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L17)

Fleet or ship configuration cargo stats plus one reference Asteroid resource.
Richness and storage costs are explicit assumptions: storage costs are
translated storage units per unit (an encoded 256 is 1), not raw values.

#### Example

```ts
declare const ship: { readonly stats: MiningProfileInput['stats'] };
const input: MiningProfileInput = {
  stats: ship.stats, richness: 1, resourceStorageCost: 1, foodStorageCost: 1,
};
```

#### Properties

<a id="foodstoragecost"></a>

##### foodStorageCost

```ts
readonly foodStorageCost: number;
```

Defined in: [packages/sage/src/mining/profile.ts:30](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L30)

<a id="resourcestoragecost"></a>

##### resourceStorageCost

```ts
readonly resourceStorageCost: number;
```

Defined in: [packages/sage/src/mining/profile.ts:29](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L29)

<a id="richness-3"></a>

##### richness

```ts
readonly richness: number;
```

Defined in: [packages/sage/src/mining/profile.ts:28](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L28)

<a id="stats"></a>

##### stats

```ts
readonly stats: {
  cargo: Pick<FleetCargoStatsData, 
     | "miningRate"
     | "foodConsumptionRate"
     | "ammoConsumptionRate"
     | "cargoCapacity"
    | "ammoCapacity">;
};
```

Defined in: [packages/sage/src/mining/profile.ts:18](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L18)

###### cargo

```ts
readonly cargo: Pick<FleetCargoStatsData, 
  | "miningRate"
  | "foodConsumptionRate"
  | "ammoConsumptionRate"
  | "cargoCapacity"
| "ammoCapacity">;
```

***

<a id="resourcedeposititem"></a>

### ResourceDepositItem

Defined in: [packages/sage/src/mining/index.ts:52](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L52)

One registry-resolved resource row nested in an Asteroid deposit.

#### Example

```ts
declare const resource: ResourceDepositItem;
console.log(resource.cargo.name, resource.richness.value);
```

#### Extended by

- [`FleetMiningOutput`](/reference/mining/#fleetminingoutput)

#### Properties

<a id="activeminercountraw-1"></a>

##### activeMinerCountRaw

```ts
readonly activeMinerCountRaw: bigint;
```

Defined in: [packages/sage/src/mining/index.ts:56](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L56)

<a id="amountminedunitsraw-1"></a>

##### amountMinedUnitsRaw

```ts
readonly amountMinedUnitsRaw: bigint;
```

Defined in: [packages/sage/src/mining/index.ts:55](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L55)

<a id="cargo-2"></a>

##### cargo

```ts
readonly cargo: CargoDefinitionSummary;
```

Defined in: [packages/sage/src/mining/index.ts:53](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L53)

<a id="richness-4"></a>

##### richness

```ts
readonly richness: WorldFixedValue;
```

Defined in: [packages/sage/src/mining/index.ts:54](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L54)

***

<a id="resourcedepositsnapshot"></a>

### ResourceDepositSnapshot

Defined in: [packages/sage/src/mining/index.ts:66](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L66)

Immutable, translated Asteroid resource-deposit snapshot.

#### Example

```ts
declare const deposit: ResourceDepositSnapshot;
console.log(deposit.resources);
```

#### Properties

<a id="address"></a>

##### address

```ts
readonly address: Address;
```

Defined in: [packages/sage/src/mining/index.ts:68](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L68)

<a id="bodyid"></a>

##### bodyId

```ts
readonly bodyId: number;
```

Defined in: [packages/sage/src/mining/index.ts:69](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L69)

<a id="game"></a>

##### game

```ts
readonly game: Address;
```

Defined in: [packages/sage/src/mining/index.ts:71](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L71)

<a id="kind-1"></a>

##### kind

```ts
readonly kind: "resourceDeposit";
```

Defined in: [packages/sage/src/mining/index.ts:67](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L67)

<a id="lastsyncedatunixseconds"></a>

##### lastSyncedAtUnixSeconds

```ts
readonly lastSyncedAtUnixSeconds: bigint;
```

Defined in: [packages/sage/src/mining/index.ts:74](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L74)

<a id="name"></a>

##### name

```ts
readonly name: string;
```

Defined in: [packages/sage/src/mining/index.ts:70](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L70)

<a id="resources-1"></a>

##### resources

```ts
readonly resources: readonly ResourceDepositItem[];
```

Defined in: [packages/sage/src/mining/index.ts:75](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L75)

<a id="system"></a>

##### system

```ts
readonly system: EntityRef<"starSystem">;
```

Defined in: [packages/sage/src/mining/index.ts:72](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L72)

<a id="systemsequenceid"></a>

##### systemSequenceId

```ts
readonly systemSequenceId: bigint;
```

Defined in: [packages/sage/src/mining/index.ts:73](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L73)

#### Methods

<a id="tojson-1"></a>

##### toJSON()

```ts
toJSON(): unknown;
```

Defined in: [packages/sage/src/mining/index.ts:76](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L76)

###### Returns

`unknown`

## Type Aliases

<a id="miningdiscoveryoptions"></a>

### MiningDiscoveryOptions

```ts
type MiningDiscoveryOptions = Omit<DiscoveryRequest, "filters" | "strategy">;
```

Defined in: [packages/sage/src/mining/index.ts:142](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L142)

Options supported by owner-scoped active-mining discovery.

#### Example

```ts
const options: MiningDiscoveryOptions = { commitment: 'confirmed' };
```

***

<a id="miningestimatelimit"></a>

### MiningEstimateLimit

```ts
type MiningEstimateLimit = "duration" | "food" | "ammo" | "cargo" | "no-output";
```

Defined in: [packages/sage/src/mining/estimate.ts:60](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L60)

Constraints reached at the end of an estimate; simultaneous limits are retained.

#### Example

```ts
const reason: MiningEstimateLimit = 'food';
```

## Functions

<a id="deriveminingestimate"></a>

### deriveMiningEstimate()

```ts
function deriveMiningEstimate(input): MiningEstimate;
```

Defined in: [packages/sage/src/mining/estimate.ts:133](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/estimate.ts#L133)

Estimates constant-rate Asteroid output, clipping duration to Food, Ammo and
cargo capacity. Each rate is Fleet rate / selected count × richness × explicit
effective runtime multiplier. Food consumption offsets volume growth while
mining; Ammo does not. Hardness is absent from the official current C4 model.
This is pure: it neither reads accounts nor validates resource eligibility.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `input` | [`MiningEstimateInput`](/reference/mining/#miningestimateinput) |

#### Returns

[`MiningEstimate`](/reference/mining/#miningestimate)

#### Throws

InvalidDerivationInputError for invalid selections, inconsistent cargo
occupancy, negative/nonfinite values or arithmetic overflow.

#### Example

```ts
const estimate = deriveMiningEstimate({
  fleetUnitsPerSecond: 2, durationSeconds: 60,
  resources: [{ cargoId: 300, richness: 1, storageCost: 1, runtimeMultiplier: 1 }],
  cargo: { occupiedSpace: 10, capacity: 100 },
  food: { availableUnits: 10, burnUnitsPerSecond: 0.1, storageCost: 1 },
  ammo: { availableUnits: 10, burnUnitsPerSecond: 0.1 },
});
console.log(estimate.outputs, estimate.limitingFactors);
```

***

<a id="deriveminingoutputrates"></a>

### deriveMiningOutputRates()

```ts
function deriveMiningOutputRates(fleetUnitsPerSecond, outputs): readonly MiningOutputRate[];
```

Defined in: [packages/sage/src/mining/index.ts:312](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L312)

Shares Fleet units/second equally among selected resources, then applies richness.
Supply the complete selected resource list, including zero-richness selections.
An empty selection returns no rates. Results are nominal estimates; cargo
limits, upkeep and whole-unit settlement remain chain-authoritative.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `fleetUnitsPerSecond` | `number` |
| `outputs` | readonly [`MiningOutputRateInput`](/reference/mining/#miningoutputrateinput)[] |

#### Returns

readonly [`MiningOutputRate`](/reference/mining/#miningoutputrate)[]

#### Example

```ts
const rates = deriveMiningOutputRates(2, [{ cargoId: 8, richness: 1.5 }]);
```

***

<a id="deriveminingprofile"></a>

### deriveMiningProfile()

```ts
function deriveMiningProfile(input): MiningProfile;
```

Defined in: [packages/sage/src/mining/profile.ts:107](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/profile.ts#L107)

Derives reference mining values from Fleet or ship configuration stats with
the official constant-rate model behind `deriveMiningEstimate`. The Fleet
rate times richness gives output; `foodConsumptionRate` and
`ammoConsumptionRate` are burned per second while mining, as the official
SAGE Editor Suite scenario applies them.

The full-hold scenario carries Food equal to rate × fill time, so the Food
burned frees exactly the space it occupied and the hold fills in capacity ÷
(output × storage cost) seconds, unless the Ammo bank runs out first. This is
an estimate, not a settlement: fixed-point rounding, eligibility, regional
research, planet-exit Fuel and changing state are excluded.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `input` | [`MiningProfileInput`](/reference/mining/#miningprofileinput) |

#### Returns

[`MiningProfile`](/reference/mining/#miningprofile)

#### Throws

InvalidDerivationInputError for negative or non-finite stats or
assumptions, or derived values that overflow to Infinity.

#### Example

```ts
const profile = deriveMiningProfile({
  stats: {
    cargo: {
      miningRate: { raw: 16384n, value: 1 },
      foodConsumptionRate: { raw: 2048n, value: 0.125 },
      ammoConsumptionRate: { raw: 1024n, value: 0.0625 },
      cargoCapacity: 100n,
      ammoCapacity: 1000n,
    },
  },
  richness: 2, resourceStorageCost: 1, foodStorageCost: 1,
});
console.log(profile.unitsPerHour); // 7200
console.log(profile.fullHold?.durationSeconds); // 50: 100 capacity / 2 per second
console.log(profile.fullHold?.foodUnits); // 6.25 Food carried and burned
```

***

<a id="deriveminingstateageseconds"></a>

### deriveMiningStateAgeSeconds()

```ts
function deriveMiningStateAgeSeconds(lastUpdatedAtUnixSeconds, atUnixSeconds): number;
```

Defined in: [packages/sage/src/mining/index.ts:292](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L292)

Derives mining-state age in whole seconds and clamps future timestamps.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `lastUpdatedAtUnixSeconds` | `bigint` |
| `atUnixSeconds` | `bigint` |

#### Returns

`number`

#### Example

```ts
const age = deriveMiningStateAgeSeconds(100n, 112n); // 12
```

***

<a id="getfleetminingstate"></a>

### getFleetMiningState()

```ts
function getFleetMiningState(
   context, 
   fleet, 
   options?): Promise<
  | FleetMiningSnapshot
| undefined>;
```

Defined in: [packages/sage/src/mining/index.ts:476](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L476)

Reads a Fleet and returns its active extraction relationship, if mining.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `context` | [`SageContext`](/reference/#sagecontext) |
| `fleet` | [`Address`](/reference/#address-20) |
| `options?` | [`ReadOptions`](/reference/client/#readoptions) |

#### Returns

`Promise`\<
  \| [`FleetMiningSnapshot`](/reference/mining/#fleetminingsnapshot)
  \| `undefined`\>

#### Example

```ts
declare const ctx: SageContext;
declare const fleet: Address;
const mining = await getFleetMiningState(ctx, fleet);
```

***

<a id="getfleetminingstatesbyowner"></a>

### getFleetMiningStatesByOwner()

```ts
function getFleetMiningStatesByOwner(
   context, 
   owner, 
options?): Promise<readonly FleetMiningSnapshot[]>;
```

Defined in: [packages/sage/src/mining/index.ts:500](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L500)

Finds active mining Fleets for one owner through stable Fleet filters.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `context` | [`SageContext`](/reference/#sagecontext) |
| `owner` | [`Address`](/reference/#address-20) |
| `options?` | [`MiningDiscoveryOptions`](/reference/mining/#miningdiscoveryoptions) |

#### Returns

`Promise`\<readonly [`FleetMiningSnapshot`](/reference/mining/#fleetminingsnapshot)[]\>

#### Example

```ts
declare const ctx: SageContext;
declare const owner: Address;
const mining = await getFleetMiningStatesByOwner(ctx, owner);
```

***

<a id="getresourcedeposit"></a>

### getResourceDeposit()

```ts
function getResourceDeposit(
   context, 
   asteroid, 
options?): Promise<ResourceDepositSnapshot>;
```

Defined in: [packages/sage/src/mining/index.ts:245](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L245)

Reads a required Asteroid resource deposit by CelestialBody address.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `context` | [`SageContext`](/reference/#sagecontext) |
| `asteroid` | [`Address`](/reference/#address-20) |
| `options?` | [`ReadOptions`](/reference/client/#readoptions) |

#### Returns

`Promise`\<[`ResourceDepositSnapshot`](/reference/mining/#resourcedepositsnapshot)\>

#### Example

```ts
declare const ctx: SageContext;
declare const asteroid: Address;
const deposit = await getResourceDeposit(ctx, asteroid);
```

***

<a id="maybegetresourcedeposit"></a>

### maybeGetResourceDeposit()

```ts
function maybeGetResourceDeposit(
   context, 
   asteroid, 
   options?): Promise<
  | ResourceDepositSnapshot
| undefined>;
```

Defined in: [packages/sage/src/mining/index.ts:270](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L270)

Reads an optional Asteroid resource deposit by CelestialBody address.

Returns `undefined` only when the account does not exist. A present
non-Asteroid CelestialBody throws [AccountDecodeError](/reference/client/#accountdecodeerror) because it is
not a resource deposit.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `context` | [`SageContext`](/reference/#sagecontext) |
| `asteroid` | [`Address`](/reference/#address-20) |
| `options?` | [`ReadOptions`](/reference/client/#readoptions) |

#### Returns

`Promise`\<
  \| [`ResourceDepositSnapshot`](/reference/mining/#resourcedepositsnapshot)
  \| `undefined`\>

#### Example

```ts
declare const ctx: SageContext;
declare const asteroid: Address;
const deposit = await maybeGetResourceDeposit(ctx, asteroid);
```

***

<a id="projectminingoutputunits"></a>

### projectMiningOutputUnits()

```ts
function projectMiningOutputUnits(unitsPerSecond, elapsedSeconds): number;
```

Defined in: [packages/sage/src/mining/index.ts:346](https://github.com/Aephia/atlas-kit/blob/develop/packages/sage/src/mining/index.ts#L346)

Projects nominal output units from a rate and elapsed seconds.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `unitsPerSecond` | `number` |
| `elapsedSeconds` | `number` |

#### Returns

`number`

#### Example

```ts
const units = projectMiningOutputUnits(4.5, 20); // 90
```
