mining
Interfaces
Section titled “Interfaces”FleetMiningOutput
Section titled “FleetMiningOutput”Defined in: packages/sage/src/mining/index.ts:108
One selected and registry-resolved output of an active mining Fleet.
Example
Section titled “Example”declare const output: FleetMiningOutput;console.log(output.cargo.name, output.unitsPerSecond);Extends
Section titled “Extends”Properties
Section titled “Properties”activeMinerCountRaw
Section titled “activeMinerCountRaw”readonly activeMinerCountRaw: bigint;Defined in: packages/sage/src/mining/index.ts:56
Inherited from
Section titled “Inherited from”ResourceDepositItem.activeMinerCountRaw
amountMinedUnitsRaw
Section titled “amountMinedUnitsRaw”readonly amountMinedUnitsRaw: bigint;Defined in: packages/sage/src/mining/index.ts:55
Inherited from
Section titled “Inherited from”ResourceDepositItem.amountMinedUnitsRaw
readonly cargo: CargoDefinitionSummary;Defined in: packages/sage/src/mining/index.ts:53
Inherited from
Section titled “Inherited from”richness
Section titled “richness”readonly richness: WorldFixedValue;Defined in: packages/sage/src/mining/index.ts:54
Inherited from
Section titled “Inherited from”unitsPerSecond
Section titled “unitsPerSecond”readonly unitsPerSecond: number;Defined in: packages/sage/src/mining/index.ts:110
Nominal cargo units per second, with Fleet capacity shared among selected resources.
FleetMiningSnapshot
Section titled “FleetMiningSnapshot”Defined in: packages/sage/src/mining/index.ts:120
Immutable current extraction relationship for one active mining Fleet.
Example
Section titled “Example”declare const mining: FleetMiningSnapshot;console.log(mining.outputs);Properties
Section titled “Properties”asteroid
Section titled “asteroid”readonly asteroid: EntityRef<"celestialBody">;Defined in: packages/sage/src/mining/index.ts:124
readonly fleet: EntityRef<"fleet">;Defined in: packages/sage/src/mining/index.ts:122
readonly kind: "fleetMining";Defined in: packages/sage/src/mining/index.ts:121
lastUpdatedAtUnixSeconds
Section titled “lastUpdatedAtUnixSeconds”readonly lastUpdatedAtUnixSeconds: bigint;Defined in: packages/sage/src/mining/index.ts:125
miningRate
Section titled “miningRate”readonly miningRate: { raw: bigint; unitsPerSecond: number;};Defined in: packages/sage/src/mining/index.ts:128
Fleet base rate before sharing among selected resources and applying richness.
readonly raw: bigint;unitsPerSecond
Section titled “unitsPerSecond”readonly unitsPerSecond: number;outputs
Section titled “outputs”readonly outputs: readonly FleetMiningOutput[];Defined in: packages/sage/src/mining/index.ts:132
ownerProfile
Section titled “ownerProfile”readonly ownerProfile: EntityRef<"profile">;Defined in: packages/sage/src/mining/index.ts:123
regionXpModifier
Section titled “regionXpModifier”readonly regionXpModifier: WorldFixedValue;Defined in: packages/sage/src/mining/index.ts:126
Methods
Section titled “Methods”toJSON()
Section titled “toJSON()”toJSON(): unknown;Defined in: packages/sage/src/mining/index.ts:133
Returns
Section titled “Returns”unknown
MiningEstimate
Section titled “MiningEstimate”Defined in: packages/sage/src/mining/estimate.ts:75
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
Section titled “Example”declare const estimate: MiningEstimate;console.log(estimate.durationSeconds, estimate.limitingFactors);Properties
Section titled “Properties”readonly basis: "official-model-estimate";Defined in: packages/sage/src/mining/estimate.ts:76
consumedAmmoUnits
Section titled “consumedAmmoUnits”readonly consumedAmmoUnits: number;Defined in: packages/sage/src/mining/estimate.ts:95
consumedFoodUnits
Section titled “consumedFoodUnits”readonly consumedFoodUnits: number;Defined in: packages/sage/src/mining/estimate.ts:94
durationSeconds
Section titled “durationSeconds”readonly durationSeconds: number;Defined in: packages/sage/src/mining/estimate.ts:78
Requested duration clipped to the modeled limits, in seconds.
finalOccupiedSpace
Section titled “finalOccupiedSpace”readonly finalOccupiedSpace: number;Defined in: packages/sage/src/mining/estimate.ts:96
foodVolumeOutflowPerSecond
Section titled “foodVolumeOutflowPerSecond”readonly foodVolumeOutflowPerSecond: number;Defined in: packages/sage/src/mining/estimate.ts:85
limitingFactors
Section titled “limitingFactors”readonly limitingFactors: readonly MiningEstimateLimit[];Defined in: packages/sage/src/mining/estimate.ts:93
limitsSeconds
Section titled “limitsSeconds”readonly limitsSeconds: { ammo: number | null; cargo: number | null; food: number | null;};Defined in: packages/sage/src/mining/estimate.ts:88
readonly ammo: number | null;readonly cargo: number | null;readonly food: number | null;netCargoGrowthPerSecond
Section titled “netCargoGrowthPerSecond”readonly netCargoGrowthPerSecond: number;Defined in: packages/sage/src/mining/estimate.ts:87
May be negative when Food consumption frees more space than mining uses.
outputs
Section titled “outputs”readonly outputs: readonly { cargoId: number; projectedUnits: number; unitsPerSecond: number;}[];Defined in: packages/sage/src/mining/estimate.ts:79
resourceVolumeInflowPerSecond
Section titled “resourceVolumeInflowPerSecond”readonly resourceVolumeInflowPerSecond: number;Defined in: packages/sage/src/mining/estimate.ts:84
MiningEstimateInput
Section titled “MiningEstimateInput”Defined in: packages/sage/src/mining/estimate.ts:37
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
Section titled “Example”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
Section titled “Properties”readonly ammo: { availableUnits: number; burnUnitsPerSecond: number;};Defined in: packages/sage/src/mining/estimate.ts:48
availableUnits
Section titled “availableUnits”readonly availableUnits: number;burnUnitsPerSecond
Section titled “burnUnitsPerSecond”readonly burnUnitsPerSecond: number;readonly cargo: { capacity: number; occupiedSpace: number;};Defined in: packages/sage/src/mining/estimate.ts:42
capacity
Section titled “capacity”readonly capacity: number;occupiedSpace
Section titled “occupiedSpace”readonly occupiedSpace: number;durationSeconds
Section titled “durationSeconds”readonly durationSeconds: number;Defined in: packages/sage/src/mining/estimate.ts:40
Requested duration; the result reports the clipped duration.
fleetUnitsPerSecond
Section titled “fleetUnitsPerSecond”readonly fleetUnitsPerSecond: number;Defined in: packages/sage/src/mining/estimate.ts:38
readonly food: { availableUnits: number; burnUnitsPerSecond: number; storageCost: number;};Defined in: packages/sage/src/mining/estimate.ts:43
availableUnits
Section titled “availableUnits”readonly availableUnits: number;burnUnitsPerSecond
Section titled “burnUnitsPerSecond”readonly burnUnitsPerSecond: number;storageCost
Section titled “storageCost”readonly storageCost: number;resources
Section titled “resources”readonly resources: readonly MiningEstimateResourceInput[];Defined in: packages/sage/src/mining/estimate.ts:41
MiningEstimateResourceInput
Section titled “MiningEstimateResourceInput”Defined in: packages/sage/src/mining/estimate.ts:14
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
Section titled “Example”const resource: MiningEstimateResourceInput = { cargoId: 300, richness: 2, storageCost: 2, runtimeMultiplier: 1.5,};Properties
Section titled “Properties”cargoId
Section titled “cargoId”readonly cargoId: number;Defined in: packages/sage/src/mining/estimate.ts:15
richness
Section titled “richness”readonly richness: number;Defined in: packages/sage/src/mining/estimate.ts:16
runtimeMultiplier
Section titled “runtimeMultiplier”readonly runtimeMultiplier: number;Defined in: packages/sage/src/mining/estimate.ts:18
storageCost
Section titled “storageCost”readonly storageCost: number;Defined in: packages/sage/src/mining/estimate.ts:17
MiningOutputRate
Section titled “MiningOutputRate”Defined in: packages/sage/src/mining/index.ts:96
One nominal resource output after sharing Fleet capacity and applying richness.
Example
Section titled “Example”const rate: MiningOutputRate = { cargoId: 8, unitsPerSecond: 4.5 };Properties
Section titled “Properties”cargoId
Section titled “cargoId”readonly cargoId: number;Defined in: packages/sage/src/mining/index.ts:97
unitsPerSecond
Section titled “unitsPerSecond”readonly unitsPerSecond: number;Defined in: packages/sage/src/mining/index.ts:98
MiningOutputRateInput
Section titled “MiningOutputRateInput”Defined in: packages/sage/src/mining/index.ts:85
A pure rate input pairing one cargo id with Asteroid richness.
Example
Section titled “Example”const input: MiningOutputRateInput = { cargoId: 8, richness: 1.5 };Properties
Section titled “Properties”cargoId
Section titled “cargoId”readonly cargoId: number;Defined in: packages/sage/src/mining/index.ts:86
richness
Section titled “richness”readonly richness: number;Defined in: packages/sage/src/mining/index.ts:87
MiningProfile
Section titled “MiningProfile”Defined in: packages/sage/src/mining/profile.ts:44
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
Section titled “Example”declare const profile: MiningProfile;console.log(profile.unitsPerHour, profile.fullHold?.durationSeconds);Properties
Section titled “Properties”readonly basis: "official-model-estimate";Defined in: packages/sage/src/mining/profile.ts:45
fullHold
Section titled “fullHold”readonly fullHold: | { ammoUnits: number; durationSeconds: number; foodUnits: number; limitedBy: "cargo" | "ammo"; minedUnits: number;} | null;Defined in: packages/sage/src/mining/profile.ts:52
Union Members
Section titled “Union Members”Type Literal
Section titled “Type Literal”{ ammoUnits: number; durationSeconds: number; foodUnits: number; limitedBy: "cargo" | "ammo"; minedUnits: number;}ammoUnits
Section titled “ammoUnits”readonly ammoUnits: number;durationSeconds
Section titled “durationSeconds”readonly durationSeconds: number;foodUnits
Section titled “foodUnits”readonly foodUnits: number;Food burned, which is also the Food to carry in the hold at the start.
limitedBy
Section titled “limitedBy”readonly limitedBy: "cargo" | "ammo";minedUnits
Section titled “minedUnits”readonly minedUnits: number;null
unitsPerAmmo
Section titled “unitsPerAmmo”readonly unitsPerAmmo: number | null;Defined in: packages/sage/src/mining/profile.ts:51
Resource units mined per Ammo burned.
unitsPerFood
Section titled “unitsPerFood”readonly unitsPerFood: number | null;Defined in: packages/sage/src/mining/profile.ts:49
Resource units mined per Food burned.
unitsPerHour
Section titled “unitsPerHour”readonly unitsPerHour: number;Defined in: packages/sage/src/mining/profile.ts:47
unitsPerSecond
Section titled “unitsPerSecond”readonly unitsPerSecond: number;Defined in: packages/sage/src/mining/profile.ts:46
MiningProfileInput
Section titled “MiningProfileInput”Defined in: packages/sage/src/mining/profile.ts:17
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
Section titled “Example”declare const ship: { readonly stats: MiningProfileInput['stats'] };const input: MiningProfileInput = { stats: ship.stats, richness: 1, resourceStorageCost: 1, foodStorageCost: 1,};Properties
Section titled “Properties”foodStorageCost
Section titled “foodStorageCost”readonly foodStorageCost: number;Defined in: packages/sage/src/mining/profile.ts:30
resourceStorageCost
Section titled “resourceStorageCost”readonly resourceStorageCost: number;Defined in: packages/sage/src/mining/profile.ts:29
richness
Section titled “richness”readonly richness: number;Defined in: packages/sage/src/mining/profile.ts:28
readonly stats: { cargo: Pick<FleetCargoStatsData, | "miningRate" | "foodConsumptionRate" | "ammoConsumptionRate" | "cargoCapacity" | "ammoCapacity">;};Defined in: packages/sage/src/mining/profile.ts:18
readonly cargo: Pick<FleetCargoStatsData, | "miningRate" | "foodConsumptionRate" | "ammoConsumptionRate" | "cargoCapacity"| "ammoCapacity">;ResourceDepositItem
Section titled “ResourceDepositItem”Defined in: packages/sage/src/mining/index.ts:52
One registry-resolved resource row nested in an Asteroid deposit.
Example
Section titled “Example”declare const resource: ResourceDepositItem;console.log(resource.cargo.name, resource.richness.value);Extended by
Section titled “Extended by”Properties
Section titled “Properties”activeMinerCountRaw
Section titled “activeMinerCountRaw”readonly activeMinerCountRaw: bigint;Defined in: packages/sage/src/mining/index.ts:56
amountMinedUnitsRaw
Section titled “amountMinedUnitsRaw”readonly amountMinedUnitsRaw: bigint;Defined in: packages/sage/src/mining/index.ts:55
readonly cargo: CargoDefinitionSummary;Defined in: packages/sage/src/mining/index.ts:53
richness
Section titled “richness”readonly richness: WorldFixedValue;Defined in: packages/sage/src/mining/index.ts:54
ResourceDepositSnapshot
Section titled “ResourceDepositSnapshot”Defined in: packages/sage/src/mining/index.ts:66
Immutable, translated Asteroid resource-deposit snapshot.
Example
Section titled “Example”declare const deposit: ResourceDepositSnapshot;console.log(deposit.resources);Properties
Section titled “Properties”address
Section titled “address”readonly address: Address;Defined in: packages/sage/src/mining/index.ts:68
bodyId
Section titled “bodyId”readonly bodyId: number;Defined in: packages/sage/src/mining/index.ts:69
readonly game: Address;Defined in: packages/sage/src/mining/index.ts:71
readonly kind: "resourceDeposit";Defined in: packages/sage/src/mining/index.ts:67
lastSyncedAtUnixSeconds
Section titled “lastSyncedAtUnixSeconds”readonly lastSyncedAtUnixSeconds: bigint;Defined in: packages/sage/src/mining/index.ts:74
readonly name: string;Defined in: packages/sage/src/mining/index.ts:70
resources
Section titled “resources”readonly resources: readonly ResourceDepositItem[];Defined in: packages/sage/src/mining/index.ts:75
system
Section titled “system”readonly system: EntityRef<"starSystem">;Defined in: packages/sage/src/mining/index.ts:72
systemSequenceId
Section titled “systemSequenceId”readonly systemSequenceId: bigint;Defined in: packages/sage/src/mining/index.ts:73
Methods
Section titled “Methods”toJSON()
Section titled “toJSON()”toJSON(): unknown;Defined in: packages/sage/src/mining/index.ts:76
Returns
Section titled “Returns”unknown
Type Aliases
Section titled “Type Aliases”MiningDiscoveryOptions
Section titled “MiningDiscoveryOptions”type MiningDiscoveryOptions = Omit<DiscoveryRequest, "filters" | "strategy">;Defined in: packages/sage/src/mining/index.ts:142
Options supported by owner-scoped active-mining discovery.
Example
Section titled “Example”const options: MiningDiscoveryOptions = { commitment: 'confirmed' };MiningEstimateLimit
Section titled “MiningEstimateLimit”type MiningEstimateLimit = "duration" | "food" | "ammo" | "cargo" | "no-output";Defined in: packages/sage/src/mining/estimate.ts:60
Constraints reached at the end of an estimate; simultaneous limits are retained.
Example
Section titled “Example”const reason: MiningEstimateLimit = 'food';Functions
Section titled “Functions”deriveMiningEstimate()
Section titled “deriveMiningEstimate()”function deriveMiningEstimate(input): MiningEstimate;Defined in: packages/sage/src/mining/estimate.ts:133
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
Section titled “Parameters”| Parameter | Type |
|---|---|
input | MiningEstimateInput |
Returns
Section titled “Returns”Throws
Section titled “Throws”InvalidDerivationInputError for invalid selections, inconsistent cargo occupancy, negative/nonfinite values or arithmetic overflow.
Example
Section titled “Example”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);deriveMiningOutputRates()
Section titled “deriveMiningOutputRates()”function deriveMiningOutputRates(fleetUnitsPerSecond, outputs): readonly MiningOutputRate[];Defined in: packages/sage/src/mining/index.ts:312
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
Section titled “Parameters”| Parameter | Type |
|---|---|
fleetUnitsPerSecond | number |
outputs | readonly MiningOutputRateInput[] |
Returns
Section titled “Returns”readonly MiningOutputRate[]
Example
Section titled “Example”const rates = deriveMiningOutputRates(2, [{ cargoId: 8, richness: 1.5 }]);deriveMiningProfile()
Section titled “deriveMiningProfile()”function deriveMiningProfile(input): MiningProfile;Defined in: packages/sage/src/mining/profile.ts:107
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
Section titled “Parameters”| Parameter | Type |
|---|---|
input | MiningProfileInput |
Returns
Section titled “Returns”Throws
Section titled “Throws”InvalidDerivationInputError for negative or non-finite stats or assumptions, or derived values that overflow to Infinity.
Example
Section titled “Example”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); // 7200console.log(profile.fullHold?.durationSeconds); // 50: 100 capacity / 2 per secondconsole.log(profile.fullHold?.foodUnits); // 6.25 Food carried and burnedderiveMiningStateAgeSeconds()
Section titled “deriveMiningStateAgeSeconds()”function deriveMiningStateAgeSeconds(lastUpdatedAtUnixSeconds, atUnixSeconds): number;Defined in: packages/sage/src/mining/index.ts:292
Derives mining-state age in whole seconds and clamps future timestamps.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
lastUpdatedAtUnixSeconds | bigint |
atUnixSeconds | bigint |
Returns
Section titled “Returns”number
Example
Section titled “Example”const age = deriveMiningStateAgeSeconds(100n, 112n); // 12getFleetMiningState()
Section titled “getFleetMiningState()”function getFleetMiningState( context, fleet, options?): Promise< | FleetMiningSnapshot| undefined>;Defined in: packages/sage/src/mining/index.ts:476
Reads a Fleet and returns its active extraction relationship, if mining.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
context | SageContext |
fleet | Address |
options? | ReadOptions |
Returns
Section titled “Returns”Promise<
| FleetMiningSnapshot
| undefined>
Example
Section titled “Example”declare const ctx: SageContext;declare const fleet: Address;const mining = await getFleetMiningState(ctx, fleet);getFleetMiningStatesByOwner()
Section titled “getFleetMiningStatesByOwner()”function getFleetMiningStatesByOwner( context, owner,options?): Promise<readonly FleetMiningSnapshot[]>;Defined in: packages/sage/src/mining/index.ts:500
Finds active mining Fleets for one owner through stable Fleet filters.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
context | SageContext |
owner | Address |
options? | MiningDiscoveryOptions |
Returns
Section titled “Returns”Promise<readonly FleetMiningSnapshot[]>
Example
Section titled “Example”declare const ctx: SageContext;declare const owner: Address;const mining = await getFleetMiningStatesByOwner(ctx, owner);getResourceDeposit()
Section titled “getResourceDeposit()”function getResourceDeposit( context, asteroid,options?): Promise<ResourceDepositSnapshot>;Defined in: packages/sage/src/mining/index.ts:245
Reads a required Asteroid resource deposit by CelestialBody address.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
context | SageContext |
asteroid | Address |
options? | ReadOptions |
Returns
Section titled “Returns”Promise<ResourceDepositSnapshot>
Example
Section titled “Example”declare const ctx: SageContext;declare const asteroid: Address;const deposit = await getResourceDeposit(ctx, asteroid);maybeGetResourceDeposit()
Section titled “maybeGetResourceDeposit()”function maybeGetResourceDeposit( context, asteroid, options?): Promise< | ResourceDepositSnapshot| undefined>;Defined in: packages/sage/src/mining/index.ts:270
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 because it is
not a resource deposit.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
context | SageContext |
asteroid | Address |
options? | ReadOptions |
Returns
Section titled “Returns”Promise<
| ResourceDepositSnapshot
| undefined>
Example
Section titled “Example”declare const ctx: SageContext;declare const asteroid: Address;const deposit = await maybeGetResourceDeposit(ctx, asteroid);projectMiningOutputUnits()
Section titled “projectMiningOutputUnits()”function projectMiningOutputUnits(unitsPerSecond, elapsedSeconds): number;Defined in: packages/sage/src/mining/index.ts:346
Projects nominal output units from a rate and elapsed seconds.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
unitsPerSecond | number |
elapsedSeconds | number |
Returns
Section titled “Returns”number
Example
Section titled “Example”const units = projectMiningOutputUnits(4.5, 20); // 90