@shipload/sdk 2.0.0-rc1 → 2.0.0-rc11

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.
Files changed (74) hide show
  1. package/lib/shipload.d.ts +1701 -1183
  2. package/lib/shipload.js +6746 -3447
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +6429 -3229
  5. package/lib/shipload.m.js.map +1 -1
  6. package/package.json +6 -6
  7. package/src/capabilities/crafting.ts +26 -0
  8. package/src/capabilities/gathering.ts +36 -0
  9. package/src/capabilities/guards.ts +38 -0
  10. package/src/capabilities/hauling.ts +22 -0
  11. package/src/capabilities/index.ts +8 -0
  12. package/src/capabilities/loading.ts +8 -0
  13. package/src/capabilities/modules.ts +57 -0
  14. package/src/capabilities/movement.ts +29 -0
  15. package/src/capabilities/storage.ts +72 -0
  16. package/src/contracts/server.ts +932 -314
  17. package/src/data/capabilities.ts +408 -0
  18. package/src/data/categories.ts +58 -0
  19. package/src/data/colors.ts +53 -0
  20. package/src/data/items.json +17 -0
  21. package/src/data/locations.ts +53 -0
  22. package/src/data/nebula-adjectives.json +211 -0
  23. package/src/data/nebula-nouns.json +151 -0
  24. package/src/data/recipes.ts +571 -0
  25. package/src/data/syllables.json +1386 -780
  26. package/src/data/tiers.ts +45 -0
  27. package/src/derivation/crafting.ts +197 -0
  28. package/src/derivation/index.ts +28 -0
  29. package/src/derivation/location-size.ts +15 -0
  30. package/src/derivation/resources.ts +142 -0
  31. package/src/derivation/stats.ts +146 -0
  32. package/src/derivation/stratum.ts +124 -0
  33. package/src/entities/cargo-utils.ts +46 -9
  34. package/src/entities/container.ts +106 -0
  35. package/src/entities/entity-inventory.ts +13 -13
  36. package/src/entities/inventory-accessor.ts +42 -0
  37. package/src/entities/location.ts +7 -188
  38. package/src/entities/makers.ts +72 -0
  39. package/src/entities/player.ts +1 -273
  40. package/src/entities/ship-deploy.ts +263 -0
  41. package/src/entities/ship.ts +93 -453
  42. package/src/entities/warehouse.ts +34 -148
  43. package/src/errors.ts +4 -4
  44. package/src/index-module.ts +226 -42
  45. package/src/managers/actions.ts +111 -79
  46. package/src/managers/context.ts +0 -9
  47. package/src/managers/entities.ts +22 -5
  48. package/src/managers/index.ts +0 -1
  49. package/src/managers/locations.ts +15 -79
  50. package/src/market/items.ts +30 -0
  51. package/src/nft/description.ts +175 -0
  52. package/src/nft/deserializers.ts +81 -0
  53. package/src/nft/index.ts +2 -0
  54. package/src/resolution/resolve-item.ts +313 -0
  55. package/src/scheduling/accessor.ts +82 -0
  56. package/src/scheduling/projection.ts +158 -54
  57. package/src/scheduling/schedule.ts +24 -0
  58. package/src/shipload.ts +0 -5
  59. package/src/travel/travel.ts +93 -19
  60. package/src/types/capabilities.ts +71 -0
  61. package/src/types/entity-traits.ts +69 -0
  62. package/src/types/entity.ts +39 -0
  63. package/src/types/index.ts +3 -0
  64. package/src/types.ts +76 -33
  65. package/src/utils/hash.ts +1 -1
  66. package/src/utils/system.ts +148 -11
  67. package/src/data/goods.json +0 -23
  68. package/src/managers/trades.ts +0 -119
  69. package/src/market/goods.ts +0 -31
  70. package/src/market/market.ts +0 -209
  71. package/src/market/rolls.ts +0 -8
  72. package/src/trading/collect.ts +0 -939
  73. package/src/trading/deal.ts +0 -208
  74. package/src/trading/trade.ts +0 -203
@@ -1,166 +1,62 @@
1
- import {Name, NameType, UInt32, UInt64, UInt64Type} from '@wharfkit/antelope'
1
+ import {UInt64, UInt64Type} from '@wharfkit/antelope'
2
2
  import {ServerContract} from '../contracts'
3
- import {Coordinates, CoordinatesType, TaskType} from '../types'
3
+ import {CoordinatesType} from '../types'
4
4
  import {Location} from './location'
5
- import {getGood} from '../market/goods'
6
- import * as schedule from '../scheduling/schedule'
7
- import {Scheduleable} from '../scheduling/schedule'
5
+ import {ScheduleAccessor} from '../scheduling/accessor'
6
+ import {InventoryAccessor} from './inventory-accessor'
8
7
  import {EntityInventory} from './entity-inventory'
8
+ import * as schedule from '../scheduling/schedule'
9
9
 
10
10
  export interface WarehouseStateInput {
11
11
  id: UInt64Type
12
- owner: NameType
12
+ owner: string
13
13
  name: string
14
- location: CoordinatesType | {x: number; y: number; z?: number}
14
+ coordinates: CoordinatesType | {x: number; y: number; z?: number}
15
+ hullmass?: number
15
16
  capacity: number
16
- loaders: ServerContract.Types.loader_stats
17
+ loaders?: ServerContract.Types.loader_stats
17
18
  schedule?: ServerContract.Types.schedule
18
19
  cargo?: ServerContract.Types.cargo_item[]
19
20
  }
20
21
 
21
- export class Warehouse extends ServerContract.Types.entity_info implements Scheduleable {
22
- static fromState(state: WarehouseStateInput): Warehouse {
23
- const entityInfo = ServerContract.Types.entity_info.from({
24
- type: Name.from('warehouse'),
25
- id: UInt64.from(state.id),
26
- owner: Name.from(state.owner),
27
- entity_name: state.name,
28
- location: ServerContract.Types.coordinates.from(state.location),
29
- capacity: UInt32.from(state.capacity),
30
- cargomass: UInt32.from(0),
31
- cargo: state.cargo || [],
32
- loaders: state.loaders,
33
- is_idle: !state.schedule,
34
- current_task_elapsed: UInt32.from(0),
35
- current_task_remaining: UInt32.from(0),
36
- pending_tasks: [],
37
- schedule: state.schedule,
38
- mass: UInt32.from(0),
39
- energy: 0,
40
- engines: ServerContract.Types.movement_stats.from({
41
- thrust: 0,
42
- drain: 0,
43
- maxmass: 0,
44
- }),
45
- generator: ServerContract.Types.energy_stats.from({
46
- capacity: 0,
47
- recharge: 0,
48
- }),
49
- })
50
- return new Warehouse(entityInfo)
51
- }
52
-
53
- private _location?: Location
54
- private _inventory?: EntityInventory[]
22
+ export class Warehouse extends ServerContract.Types.entity_info {
23
+ private _sched?: ScheduleAccessor
24
+ private _inv?: InventoryAccessor
55
25
 
56
26
  get name(): string {
57
27
  return this.entity_name
58
28
  }
59
29
 
30
+ get inv(): InventoryAccessor {
31
+ return (this._inv ??= new InventoryAccessor(this))
32
+ }
33
+
60
34
  get inventory(): EntityInventory[] {
61
- if (!this._inventory) {
62
- this._inventory = this.cargo.map((item) => new EntityInventory(item))
63
- }
64
- return this._inventory
35
+ return this.inv.items
65
36
  }
66
37
 
67
- get hasSchedule(): boolean {
68
- return schedule.hasSchedule(this)
38
+ get sched(): ScheduleAccessor {
39
+ return (this._sched ??= new ScheduleAccessor(this))
69
40
  }
70
41
 
71
42
  get isIdle(): boolean {
72
43
  return this.is_idle
73
44
  }
74
45
 
75
- get tasks(): ServerContract.Types.task[] {
76
- return schedule.getTasks(this)
77
- }
78
-
79
- scheduleDuration(): number {
80
- return schedule.scheduleDuration(this)
81
- }
82
-
83
- scheduleElapsed(now: Date): number {
84
- return schedule.scheduleElapsed(this, now)
85
- }
86
-
87
- scheduleRemaining(now: Date): number {
88
- return schedule.scheduleRemaining(this, now)
89
- }
90
-
91
- scheduleComplete(now: Date): boolean {
92
- return schedule.scheduleComplete(this, now)
93
- }
94
-
95
- currentTaskIndex(now: Date): number {
96
- return schedule.currentTaskIndex(this, now)
97
- }
98
-
99
- currentTask(now: Date): ServerContract.Types.task | undefined {
100
- return schedule.currentTask(this, now)
101
- }
102
-
103
- currentTaskType(now: Date): TaskType | undefined {
104
- return schedule.currentTaskType(this, now)
105
- }
106
-
107
- getTaskStartTime(index: number): number {
108
- return schedule.getTaskStartTime(this, index)
109
- }
110
-
111
- getTaskElapsed(index: number, now: Date): number {
112
- return schedule.getTaskElapsed(this, index, now)
113
- }
114
-
115
- getTaskRemaining(index: number, now: Date): number {
116
- return schedule.getTaskRemaining(this, index, now)
117
- }
118
-
119
- isTaskComplete(index: number, now: Date): boolean {
120
- return schedule.isTaskComplete(this, index, now)
121
- }
122
-
123
- isTaskInProgress(index: number, now: Date): boolean {
124
- return schedule.isTaskInProgress(this, index, now)
125
- }
126
-
127
- currentTaskProgress(now: Date): number {
128
- return schedule.currentTaskProgress(this, now)
129
- }
130
-
131
- scheduleProgress(now: Date): number {
132
- return schedule.scheduleProgress(this, now)
133
- }
134
-
135
46
  isLoading(now: Date): boolean {
136
- const taskType = this.currentTaskType(now)
137
- return taskType === TaskType.LOAD
47
+ return schedule.isLoading(this, now)
138
48
  }
139
49
 
140
50
  isUnloading(now: Date): boolean {
141
- const taskType = this.currentTaskType(now)
142
- return taskType === TaskType.UNLOAD
51
+ return schedule.isUnloading(this, now)
143
52
  }
144
53
 
145
- calcCargoMass(): UInt64 {
146
- let mass = UInt64.from(0)
147
- for (const item of this.cargo) {
148
- const good = getGood(item.good_id)
149
- mass = mass.adding(good.mass.multiplying(item.quantity))
150
- }
151
- return mass
152
- }
153
-
154
- get currentLocation(): Coordinates {
155
- return this.location
54
+ get location(): Location {
55
+ return Location.from(this.coordinates)
156
56
  }
157
57
 
158
58
  get totalCargoMass(): UInt64 {
159
- return this.inventory.reduce((sum, c) => sum.adding(c.totalMass), UInt64.from(0))
160
- }
161
-
162
- get cargoValue(): UInt64 {
163
- return this.inventory.reduce((sum, c) => sum.adding(c.totalCost), UInt64.from(0))
59
+ return this.inv.totalMass
164
60
  }
165
61
 
166
62
  get maxCapacity(): UInt64 {
@@ -168,38 +64,28 @@ export class Warehouse extends ServerContract.Types.entity_info implements Sched
168
64
  }
169
65
 
170
66
  get availableCapacity(): UInt64 {
171
- if (this.totalCargoMass.gte(this.maxCapacity)) {
172
- return UInt64.from(0)
173
- }
174
- return this.maxCapacity.subtracting(this.totalCargoMass)
67
+ const cargo = this.totalCargoMass
68
+ return cargo.gte(this.maxCapacity) ? UInt64.from(0) : this.maxCapacity.subtracting(cargo)
175
69
  }
176
70
 
177
71
  hasSpace(goodMass: UInt64, quantity: number): boolean {
178
- const additionalMass = goodMass.multiplying(quantity)
179
- const newTotal = this.totalCargoMass.adding(additionalMass)
180
- return newTotal.lte(this.maxCapacity)
72
+ return this.totalCargoMass.adding(goodMass.multiplying(quantity)).lte(this.maxCapacity)
181
73
  }
182
74
 
183
75
  get isFull(): boolean {
184
76
  return this.totalCargoMass.gte(this.maxCapacity)
185
77
  }
186
78
 
187
- get locationObject(): Location {
188
- if (!this._location) {
189
- this._location = Location.from(this.location)
190
- }
191
- return this._location
192
- }
193
-
194
- setLocation(location: Location): void {
195
- this._location = location
79
+ getCargoForItem(goodId: UInt64Type): EntityInventory | undefined {
80
+ return this.inv.forItem(goodId)
196
81
  }
197
82
 
198
- getCargoForGood(goodId: UInt64Type): EntityInventory | undefined {
199
- return this.inventory.find((c) => c.good_id.equals(goodId))
83
+ get orbitalAltitude(): number {
84
+ return this.coordinates.z?.toNumber() || 0
200
85
  }
201
86
 
202
- get orbitalAltitude(): number {
203
- return this.location.z?.toNumber() || 0
87
+ get totalMass(): UInt64 {
88
+ const hull = this.hullmass ? UInt64.from(this.hullmass) : UInt64.from(0)
89
+ return hull.adding(this.totalCargoMass)
204
90
  }
205
91
  }
package/src/errors.ts CHANGED
@@ -9,11 +9,11 @@ export const ERROR_SYSTEM_DISABLED = 'This game is currently disabled.'
9
9
  export const ERROR_SYSTEM_NOT_INITIALIZED = 'This game has not been initialized.'
10
10
  export const GAME_NOT_FOUND = 'Cannot find game for given account name.'
11
11
  export const GAME_SEED_NOT_SET = 'This game has not initialized an epoch seed value.'
12
- export const GOOD_DOES_NOT_EXIST = 'Good does not exist.'
13
- export const GOOD_NOT_AVAILABLE_AT_LOCATION = 'Good is not tradeable at ship location.'
12
+ export const ITEM_DOES_NOT_EXIST = 'Item does not exist.'
13
+ export const ITEM_NOT_AVAILABLE_AT_LOCATION = 'Item is not tradeable at ship location.'
14
14
  export const INSUFFICIENT_BALANCE = 'Insufficient balance.'
15
- export const INSUFFICIENT_GOOD_QUANTITY = 'Insufficient quantity in cargo.'
16
- export const INSUFFICIENT_GOOD_SUPPLY = 'Insufficient supply of good at location.'
15
+ export const INSUFFICIENT_ITEM_QUANTITY = 'Insufficient quantity in cargo.'
16
+ export const INSUFFICIENT_ITEM_SUPPLY = 'Insufficient supply of item at location.'
17
17
  export const INVALID_AMOUNT = 'Invalid amount.'
18
18
  export const REQUIRES_MORE_THAN_ONE = 'A value greater than one is required.'
19
19
  export const REQUIRES_POSITIVE_VALUE = 'Value must be greater than zero.'
@@ -8,6 +8,10 @@ export {Shipload} from './shipload'
8
8
  export {Ship} from './entities/ship'
9
9
  export type {ShipStateInput} from './entities/ship'
10
10
  export {Warehouse} from './entities/warehouse'
11
+ export type {WarehouseStateInput} from './entities/warehouse'
12
+ export {Container} from './entities/container'
13
+ export type {ContainerStateInput} from './entities/container'
14
+ export {makeShip, makeWarehouse, makeContainer} from './entities/makers'
11
15
 
12
16
  export type movement_stats = ServerContract.Types.movement_stats
13
17
  export type energy_stats = ServerContract.Types.energy_stats
@@ -16,6 +20,13 @@ export type schedule = ServerContract.Types.schedule
16
20
  export type task = ServerContract.Types.task
17
21
  export type cargo_item = ServerContract.Types.cargo_item
18
22
  export type warehouse_row = ServerContract.Types.warehouse_row
23
+ export type container_row = ServerContract.Types.container_row
24
+ export type gatherer_stats = ServerContract.Types.gatherer_stats
25
+
26
+ export type location_static = ServerContract.Types.location_static
27
+ export type location_epoch = ServerContract.Types.location_epoch
28
+ export type location_derived = ServerContract.Types.location_derived
29
+ export type location_row = ServerContract.Types.location_row
19
30
  export {Player} from './entities/player'
20
31
  export type {PlayerStateInput} from './entities/player'
21
32
  export {EntityInventory} from './entities/entity-inventory'
@@ -26,45 +37,57 @@ export {
26
37
  EntitiesManager,
27
38
  PlayersManager,
28
39
  LocationsManager,
29
- TradesManager,
30
40
  EpochsManager,
31
41
  ActionsManager,
32
42
  } from './managers'
33
43
  export type {EntityType} from './managers'
44
+ export type {EntityRefInput} from './managers/actions'
34
45
 
35
- export {getGood, getGoods, goodIds} from './market/goods'
46
+ export {getItem, getItems, itemIds} from './market/items'
36
47
  export {getCurrentEpoch, getEpochInfo} from './scheduling/epoch'
37
48
  export type {EpochInfo} from './scheduling/epoch'
38
- export {marketPrice, marketPrices, getRarity, Rarities} from './market/market'
39
- export type {Rarity} from './market/market'
40
- export {getSystemName, hasSystem} from './utils/system'
49
+ export {
50
+ getSystemName,
51
+ hasSystem,
52
+ getLocationType,
53
+ getLocationTypeName,
54
+ isGatherableLocation,
55
+ deriveLocationStatic,
56
+ deriveLocationEpoch,
57
+ deriveLocation,
58
+ } from './utils/system'
41
59
 
42
- export {hash, hash512} from './utils/hash'
60
+ export {
61
+ deriveStratum,
62
+ deriveResourceStats,
63
+ deriveLocationSize,
64
+ getEligibleResources,
65
+ getResourceWeight,
66
+ getLocationCandidates,
67
+ getDepthThreshold,
68
+ getResourceTier,
69
+ depthScaleFactor,
70
+ DEPTH_THRESHOLD_T1,
71
+ DEPTH_THRESHOLD_T2,
72
+ DEPTH_THRESHOLD_T3,
73
+ DEPTH_THRESHOLD_T4,
74
+ DEPTH_THRESHOLD_T5,
75
+ LOCATION_MIN_DEPTH,
76
+ LOCATION_MAX_DEPTH,
77
+ PLANET_SUBTYPE_GAS_GIANT,
78
+ PLANET_SUBTYPE_ROCKY,
79
+ PLANET_SUBTYPE_TERRESTRIAL,
80
+ PLANET_SUBTYPE_ICY,
81
+ PLANET_SUBTYPE_OCEAN,
82
+ PLANET_SUBTYPE_INDUSTRIAL,
83
+ } from './derivation'
43
84
 
44
- export type {Deal, FindDealsOptions} from './trading/deal'
45
- export {findDealsForShip, findBestDeal} from './trading/deal'
85
+ export type {StratumInfo, ResourceStats} from './derivation'
46
86
 
47
- export type {
48
- CollectActionType,
49
- CollectOption,
50
- CollectAnalysis,
51
- CollectAnalysisOptions,
52
- CollectAnalysisCallbacks,
53
- BetterSaleLocation,
54
- RepositionLocation,
55
- DiscountedGoodInfo,
56
- PotentialDeal,
57
- CargoSaleItem,
58
- } from './trading/collect'
59
- export {
60
- analyzeCollectOptions,
61
- analyzeCargoSale,
62
- createSellAndTradeOption,
63
- createTravelToSellOption,
64
- createSellAndRepositionOption,
65
- createSellAndStayOption,
66
- createExploreOption,
67
- } from './trading/collect'
87
+ export {getStatDefinitions, getStatName, resolveStats} from './derivation'
88
+ export type {StatDefinition, NamedStats} from './derivation'
89
+
90
+ export {hash, hash512} from './utils/hash'
68
91
 
69
92
  export {
70
93
  distanceBetweenCoordinates,
@@ -91,32 +114,193 @@ export {
91
114
  estimateTravelTime,
92
115
  estimateDealTravelTime,
93
116
  hasEnergyForDistance,
117
+ getFlightOrigin,
118
+ getDestinationLocation,
119
+ getPositionAt,
94
120
  } from './travel/travel'
95
121
  export type {
96
122
  LoadTimeBreakdown,
97
123
  EstimatedTravelTime,
98
124
  EstimateTravelTimeOptions,
99
125
  TransferEntity,
126
+ HasScheduleAndLocation,
100
127
  } from './travel/travel'
101
128
 
102
- export {
103
- calculateUpdatedCargoCost,
104
- calculateMaxTradeQuantity,
105
- calculateTradeProfit,
106
- calculateProfitPerMass,
107
- calculateProfitPerSecond,
108
- findBestGoodToTrade,
109
- calculateBreakEvenPrice,
110
- isProfitable,
111
- calculateROI,
112
- } from './trading/trade'
113
- export type {TradeCalculation, TradeProfitResult} from './trading/trade'
114
-
115
129
  export * as schedule from './scheduling/schedule'
116
130
  export type {Scheduleable, ScheduleData} from './scheduling/schedule'
131
+ export {ScheduleAccessor, createScheduleAccessor} from './scheduling/accessor'
132
+ export {InventoryAccessor, createInventoryAccessor} from './entities/inventory-accessor'
133
+ export type {HasCargo} from './entities/inventory-accessor'
117
134
 
118
135
  export * as cargoUtils from './entities/cargo-utils'
119
136
  export type {CargoData} from './entities/cargo-utils'
120
137
 
121
138
  export {projectEntity, projectEntityAt, createProjectedEntity} from './scheduling/projection'
122
139
  export type {Projectable, ProjectedEntity} from './scheduling/projection'
140
+
141
+ export * from './types/capabilities'
142
+ export * from './types/entity'
143
+ export * from './capabilities'
144
+
145
+ export {
146
+ categoryColors,
147
+ tierColors,
148
+ categoryIcons,
149
+ componentIcon,
150
+ moduleIcon,
151
+ itemIcons,
152
+ } from './data/colors'
153
+
154
+ export {itemTier, itemOffset, itemCategory, isRelatedItem, isCraftedItem} from './data/tiers'
155
+ export type {CraftedItemCategory} from './data/tiers'
156
+
157
+ export {getCategoryInfo} from './data/categories'
158
+ export type {CategoryInfo} from './data/categories'
159
+
160
+ export {getPlanetSubtypes, getPlanetSubtype} from './data/locations'
161
+ export type {PlanetSubtypeInfo} from './data/locations'
162
+
163
+ export {
164
+ capabilityNames,
165
+ capabilityAttributes,
166
+ statMappings,
167
+ isInvertedAttribute,
168
+ getCapabilityAttributes,
169
+ getStatMappings,
170
+ getStatMappingsForStat,
171
+ getStatMappingsForCapability,
172
+ } from './data/capabilities'
173
+ export type {CapabilityAttribute, StatMapping} from './data/capabilities'
174
+
175
+ export {
176
+ components,
177
+ entityRecipes,
178
+ moduleRecipes,
179
+ getComponentById,
180
+ getEntityRecipe,
181
+ getEntityRecipeByItemId,
182
+ getModuleRecipe,
183
+ getModuleRecipeByItemId,
184
+ getAllCraftableItems,
185
+ getComponentsForCategory,
186
+ getComponentsForStat,
187
+ ITEM_HULL_PLATES,
188
+ ITEM_CARGO_LINING,
189
+ ITEM_CONTAINER_T1_PACKED,
190
+ ITEM_THRUSTER_CORE,
191
+ ITEM_POWER_CELL,
192
+ ITEM_ENGINE_T1,
193
+ ITEM_GENERATOR_T1,
194
+ ITEM_SHIP_T1_PACKED,
195
+ ITEM_WAREHOUSE_T1_PACKED,
196
+ ITEM_MATTER_CONDUIT,
197
+ ITEM_SURVEY_PROBE,
198
+ ITEM_CARGO_ARM,
199
+ ITEM_TOOL_BIT,
200
+ ITEM_REACTION_CHAMBER,
201
+ ITEM_GATHERER_T1,
202
+ ITEM_LOADER_T1,
203
+ ITEM_MANUFACTURING_T1,
204
+ ITEM_STORAGE_T1,
205
+ ITEM_HULL_PLATES_T2,
206
+ ITEM_CARGO_LINING_T2,
207
+ ITEM_CONTAINER_T2_PACKED,
208
+ ITEM_FOCUSING_ARRAY,
209
+ } from './data/recipes'
210
+ export type {
211
+ ComponentDefinition,
212
+ ComponentStat,
213
+ RecipeInput,
214
+ EntityRecipe,
215
+ ModuleRecipe,
216
+ ModuleSlot,
217
+ CraftableItem,
218
+ } from './data/recipes'
219
+
220
+ export {
221
+ encodeStats,
222
+ decodeStat,
223
+ decodeStats,
224
+ decodeCraftedItemStats,
225
+ blendStacks,
226
+ computeComponentStats,
227
+ blendComponentStacks,
228
+ computeEntityStats,
229
+ blendCargoStacks,
230
+ blendCrossGroup,
231
+ categoryItemMass,
232
+ computeInputMass,
233
+ } from './derivation/crafting'
234
+ export type {StackInput, CategoryStacks} from './derivation/crafting'
235
+
236
+ export {computeContainerCapabilities, computeContainerT2Capabilities} from './entities/container'
237
+
238
+ export {
239
+ computeShipHullCapabilities,
240
+ computeEngineCapabilities,
241
+ computeGeneratorCapabilities,
242
+ computeGathererCapabilities,
243
+ computeHaulerCapabilities,
244
+ computeLoaderCapabilities,
245
+ computeManufacturingCapabilities,
246
+ computeWarehouseHullCapabilities,
247
+ computeStorageCapabilities,
248
+ computeShipCapabilities,
249
+ } from './entities/ship-deploy'
250
+ export type {ShipCapabilities} from './entities/ship-deploy'
251
+
252
+ export {resolveItem} from './resolution/resolve-item'
253
+ export type {
254
+ ResolvedItem,
255
+ ResolvedItemStat,
256
+ ResolvedAttributeGroup,
257
+ ResolvedModuleSlot,
258
+ ResolvedItemType,
259
+ } from './resolution/resolve-item'
260
+
261
+ export * as NFT from './nft'
262
+ export {
263
+ deserializeAsset,
264
+ deserializeResource,
265
+ deserializeComponent,
266
+ deserializeModule,
267
+ deserializeEntity,
268
+ readCommonBase,
269
+ } from './nft/deserializers'
270
+ export type {
271
+ NFTCargoItem,
272
+ NFTModuleSlot,
273
+ NFTInstalledModule,
274
+ NFTCommonBase,
275
+ } from './nft/deserializers'
276
+
277
+ export {
278
+ buildEntityDescription,
279
+ formatModuleLine,
280
+ entityDisplayName,
281
+ moduleDisplayName,
282
+ computeBaseHullmass,
283
+ computeBaseCapacityShip,
284
+ computeBaseCapacityWarehouse,
285
+ computeEngineThrust,
286
+ computeEngineDrain,
287
+ computeGeneratorCap,
288
+ computeGeneratorRech,
289
+ computeGathererYield,
290
+ computeGathererDrain,
291
+ computeGathererDepth,
292
+ computeGathererSpeed,
293
+ computeLoaderMass,
294
+ computeLoaderThrust,
295
+ computeCrafterSpeed,
296
+ computeCrafterDrain,
297
+ } from './nft/description'
298
+
299
+ export {getEntitySlotLayout} from './data/recipes'
300
+ export {
301
+ ITEM_TYPE_RESOURCE,
302
+ ITEM_TYPE_COMPONENT,
303
+ ITEM_TYPE_MODULE,
304
+ ITEM_TYPE_ENTITY,
305
+ itemTypeCode,
306
+ } from './data/tiers'