dredless 0.2.0 → 0.2.1

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 (77) hide show
  1. package/README.md +48 -48
  2. package/docs/API_REFERENCE.md +2481 -2481
  3. package/docs/BROWSER_API.md +98 -98
  4. package/docs/NODE_API.md +359 -359
  5. package/package.json +34 -34
  6. package/src/browser.d.ts +212 -212
  7. package/src/browser.js +133 -133
  8. package/src/client/core.js +1202 -1202
  9. package/src/client/domains/index.js +1818 -1818
  10. package/src/client/index.d.ts +2 -2
  11. package/src/client/index.js +1 -1
  12. package/src/compression/lz4.d.ts +1 -1
  13. package/src/compression/lz4.js +112 -112
  14. package/src/constants.js +74 -74
  15. package/src/crypto/chacha-native.d.ts +9 -9
  16. package/src/crypto/chacha-native.js +48 -48
  17. package/src/crypto/chacha.d.ts +25 -25
  18. package/src/crypto/chacha.js +274 -274
  19. package/src/events.js +39 -39
  20. package/src/index.d.ts +2277 -2277
  21. package/src/index.js +125 -125
  22. package/src/network/browser-session.js +291 -291
  23. package/src/network/connection.d.ts +1 -1
  24. package/src/network/connection.js +31 -31
  25. package/src/network/cookies.js +85 -85
  26. package/src/network/http.js +34 -34
  27. package/src/network/index.d.ts +4 -4
  28. package/src/network/index.js +4 -4
  29. package/src/network/servers.d.ts +7 -7
  30. package/src/network/servers.js +133 -133
  31. package/src/network/session.d.ts +7 -7
  32. package/src/network/session.js +320 -320
  33. package/src/network/ships.d.ts +12 -12
  34. package/src/network/ships.js +73 -73
  35. package/src/node.d.ts +2 -2
  36. package/src/node.js +8 -8
  37. package/src/protocol/codec/binary.d.ts +3 -3
  38. package/src/protocol/codec/binary.js +52 -52
  39. package/src/protocol/codec/msgpack.d.ts +3 -3
  40. package/src/protocol/codec/msgpack.js +555 -555
  41. package/src/protocol/inbound/frame.d.ts +1 -1
  42. package/src/protocol/inbound/frame.js +8 -8
  43. package/src/protocol/inbound/world-payload.d.ts +3 -3
  44. package/src/protocol/inbound/world-payload.js +21 -21
  45. package/src/protocol/index.d.ts +11 -11
  46. package/src/protocol/index.js +19 -19
  47. package/src/protocol/outbound/blueprint.d.ts +22 -22
  48. package/src/protocol/outbound/blueprint.js +36 -36
  49. package/src/protocol/outbound/commands.d.ts +3 -3
  50. package/src/protocol/outbound/commands.js +149 -149
  51. package/src/protocol/outbound/comms.d.ts +28 -28
  52. package/src/protocol/outbound/comms.js +40 -40
  53. package/src/protocol/outbound/inventory.d.ts +64 -64
  54. package/src/protocol/outbound/inventory.js +147 -147
  55. package/src/protocol/outbound/ship-management.d.ts +84 -84
  56. package/src/protocol/outbound/ship-management.js +221 -221
  57. package/src/protocol/outbound/sign.d.ts +18 -18
  58. package/src/protocol/outbound/sign.js +45 -45
  59. package/src/protocol/outbound/ui-config.d.ts +157 -157
  60. package/src/protocol/outbound/ui-config.js +578 -578
  61. package/src/runtime.js +36 -36
  62. package/src/state/generator-maze.d.ts +32 -32
  63. package/src/state/generator-maze.js +370 -370
  64. package/src/state/index.d.ts +3 -3
  65. package/src/state/index.js +3 -3
  66. package/src/state/items.js +20 -20
  67. package/src/state/model/decoder.js +1554 -1554
  68. package/src/state/model/index.d.ts +33 -33
  69. package/src/state/model/index.js +2 -2
  70. package/src/state/model/loader-config.js +1020 -1020
  71. package/src/state/model/reader.js +69 -69
  72. package/src/state/model/state.js +1257 -1257
  73. package/src/state/overworld.js +72 -72
  74. package/src/state/tilesets.js +53 -53
  75. package/src/state/world/index.d.ts +29 -29
  76. package/src/state/world/index.js +180 -180
  77. package/src/state/world/state.js +297 -297
package/src/index.d.ts CHANGED
@@ -1,2277 +1,2277 @@
1
- export interface Server {
2
- index: number;
3
- domain: string;
4
- description: string;
5
- playerCount: number;
6
- maxPlayerCount: number;
7
- ping: number | null;
8
- }
9
-
10
- export interface Ship {
11
- id: number | null;
12
- hexCode: string | null;
13
- name: string;
14
- iconUrl: string | null;
15
- playerCount: number;
16
- owned: boolean;
17
- saved: boolean;
18
- color: string;
19
- time: number | null;
20
- }
21
-
22
- export interface ShipList {
23
- playerCount?: number;
24
- maxPlayerCount?: number;
25
- isMuted?: boolean;
26
- ships: Ship[];
27
- }
28
-
29
- export type ShipSpec =
30
- | { type: "join_or_load"; id: number | string }
31
- | { type: "new"; name?: string | null; color?: string | null }
32
- | { type: "invite"; code: string };
33
-
34
- export type ServerRef = number | Server;
35
- export type ShipRef = number | string | Ship | ShipSpec | null;
36
- export type ShipPrivacy = 0 | 1 | boolean | "public" | "private";
37
- export type ShipPlayerRank = 0 | 1 | 3 | "guest" | "crew" | "captain";
38
- export type PlayerShipRank = "guest" | "crew" | "crew-invite-pending-deprecated" | "captain" | "banned";
39
- export const FabricatorType: {
40
- readonly Starter: "starter";
41
- readonly Munitions: "munitions";
42
- readonly Engineering: "engineering";
43
- readonly Equipment: "equipment";
44
- };
45
- export type FabricatorType = typeof FabricatorType[keyof typeof FabricatorType];
46
- export const SignDisplayMode: {
47
- readonly Always: "always";
48
- readonly WhenNear: "when-near";
49
- readonly OnHover: "on-hover";
50
- };
51
- export type SignDisplayMode = typeof SignDisplayMode[keyof typeof SignDisplayMode];
52
- export const EquipmentSlot: {
53
- readonly Head: "head";
54
- readonly Face: "face";
55
- readonly Body: "body";
56
- readonly Back: "back";
57
- readonly Hands: "hands";
58
- readonly Feet: "feet";
59
- };
60
- export type EquipmentSlot = typeof EquipmentSlot[keyof typeof EquipmentSlot];
61
- export type InventoryArea = "all" | "hotbar" | "equipment";
62
- export type InventorySlotRef = number | EquipmentSlot | InventorySlotHandle | InventorySlotSnapshot;
63
- export type ReadWorldScope = "ship" | "current" | "overworld" | number;
64
- export type EntityRef = number | EntityHandle | EntitySummary | EntityDebugSummary;
65
-
66
- export interface ShipConfig {
67
- privacy: number | null;
68
- privacyName: "public" | "private" | null;
69
- inviteKey: string | null;
70
- teamId: number | null;
71
- patronPerks: unknown[];
72
- }
73
-
74
- export interface CaptainSubrank {
75
- subrank: number | null;
76
- enableCheats: boolean;
77
- }
78
-
79
- export interface CurrentPlayerRank {
80
- shipRank: PlayerShipRank | null;
81
- subrank: number | null;
82
- isCaptain: boolean;
83
- patronTier: "bronze" | "silver" | "gold" | "plat" | "flux" | null;
84
- }
85
-
86
- export interface PlayerListEntry {
87
- refId: number | null;
88
- discrim: string | null;
89
- discrimColor: number | null;
90
- teamRank: number | null;
91
- captainRank: number | null;
92
- isCaptain: boolean;
93
- isShipOwner: boolean;
94
- canBeManaged: boolean;
95
- time: number | null;
96
- items: unknown[];
97
- aliasDiscrims: unknown[];
98
- extraAliasCount: number;
99
- onlineCount: number | null;
100
- }
101
-
102
- export interface ShipPlayerList {
103
- ownerCaptainRank: number | null;
104
- shipOwners: PlayerListEntry[];
105
- players: PlayerListEntry[];
106
- changes: PlayerListEntry[];
107
- removedPlayers: number[];
108
- }
109
-
110
- export interface ShipReadOptions {
111
- includeWorld?: boolean;
112
- includeTiles?: boolean;
113
- /** Include the per-cell block index. Off by default: building and sorting it is the most expensive part of a snapshot. */
114
- includeBlocks?: boolean;
115
- includeModel?: boolean;
116
- sort?: "distance" | null;
117
- }
118
-
119
- export interface DragPayload {
120
- source: number;
121
- target: number;
122
- split?: boolean;
123
- }
124
-
125
- export interface BlueprintPlacement {
126
- x: number;
127
- y: number;
128
- width?: number;
129
- height?: number;
130
- w?: number;
131
- h?: number;
132
- source: string;
133
- }
134
-
135
- export interface BlueprintPlacementMessage {
136
- type: 9;
137
- x: number;
138
- y: number;
139
- w: number;
140
- h: number;
141
- source: string;
142
- }
143
-
144
- export interface Command {
145
- type?: number;
146
- n?: number | null;
147
- x?: number;
148
- y?: number;
149
- mx?: number;
150
- my?: number;
151
- vx?: number;
152
- vy?: number;
153
- jump?: boolean;
154
- jump_held?: boolean;
155
- drop?: boolean;
156
- act1?: boolean;
157
- act1_held?: boolean;
158
- exit?: boolean;
159
- act2?: boolean;
160
- act_alt?: boolean;
161
- act_alt_held?: boolean;
162
- wrench_mode?: number;
163
- turret_mode?: number;
164
- scr_w?: number;
165
- scr_h?: number;
166
- motion?: number;
167
- focus_ent?: number | null;
168
- config_ent?: number | null;
169
- tip_select?: number | null;
170
- inv_slot?: number;
171
- blur?: boolean;
172
- drag?: DragPayload | null;
173
- }
174
-
175
- export interface ShipManagementMessage {
176
- type: 4;
177
- act: string;
178
- arg: unknown;
179
- rank?: unknown;
180
- }
181
-
182
- export interface SignTextMessage {
183
- type: 5;
184
- cmd: "sign_text";
185
- args: [string, 0 | 1 | 2];
186
- }
187
-
188
- export interface CommsMessage {
189
- type: 3;
190
- msg: string;
191
- }
192
-
193
- export interface NormalizedCommsMessage {
194
- raw: unknown;
195
- text: string;
196
- }
197
-
198
- export interface CommsEvent {
199
- type: "comms";
200
- filter?: number;
201
- ent_id: number | null;
202
- entity: number | null;
203
- msgs_text: unknown[];
204
- rawMessages: unknown[];
205
- messages: NormalizedCommsMessage[];
206
- update?: boolean;
207
- world?: number | null;
208
- }
209
-
210
- export interface InventoryDragCommand {
211
- drag: {
212
- source: number;
213
- target: number;
214
- split: boolean;
215
- };
216
- }
217
-
218
- export const PusherMode: {
219
- readonly Push: "push";
220
- readonly Pull: "pull";
221
- readonly DoNothing: "do-nothing";
222
- };
223
- export type PusherMode = typeof PusherMode[keyof typeof PusherMode];
224
- export const LoaderPosition: {
225
- readonly TopLeft: "top-left";
226
- readonly TopMiddle: "top-middle";
227
- readonly TopRight: "top-right";
228
- readonly MiddleLeft: "middle-left";
229
- readonly MiddleRight: "middle-right";
230
- readonly BottomLeft: "bottom-left";
231
- readonly BottomMiddle: "bottom-middle";
232
- readonly BottomRight: "bottom-right";
233
- };
234
- export type LoaderPosition = typeof LoaderPosition[keyof typeof LoaderPosition];
235
- export const LoaderFilterMode: {
236
- readonly AllowAll: "allow-all";
237
- readonly BlockFilter: "block-filter";
238
- readonly AllowFilter: "allow-filter";
239
- readonly BlockAll: "block-all";
240
- };
241
- export type LoaderFilterMode = typeof LoaderFilterMode[keyof typeof LoaderFilterMode];
242
- export const LoaderPriority: {
243
- readonly Low: "low";
244
- readonly Normal: "normal";
245
- readonly High: "high";
246
- };
247
- export type LoaderPriority = typeof LoaderPriority[keyof typeof LoaderPriority];
248
- export type ClipboardTarget =
249
- number
250
- | "loader"
251
- | "loader-config"
252
- | "loaderConfig"
253
- | "hatch"
254
- | "cargo-hatch"
255
- | "cargoHatch"
256
- | "ejector"
257
- | "cargo-ejector"
258
- | "cargoEjector"
259
- | "expando"
260
- | "expando-box"
261
- | "expandoBox"
262
- | "generator"
263
- | "shield-generator"
264
- | "shieldGenerator"
265
- | "navigation"
266
- | "navigation-unit"
267
- | "navigationUnit"
268
- | "nav"
269
- | "nav-unit"
270
- | "navUnit";
271
- export const FixedAngleDirection: {
272
- readonly Right: "right";
273
- readonly Up: "up";
274
- readonly Left: "left";
275
- readonly Down: "down";
276
- };
277
- export type FixedAngleDirection = typeof FixedAngleDirection[keyof typeof FixedAngleDirection];
278
-
279
- export interface PusherConfig {
280
- mode?: PusherMode;
281
- filteredMode?: PusherMode;
282
- angle?: number;
283
- speed?: number;
284
- filterInventory?: boolean;
285
- length?: number;
286
- }
287
-
288
- export interface LoaderConfig {
289
- pick?: LoaderPosition;
290
- place?: LoaderPosition;
291
- priority?: LoaderPriority;
292
- stack?: number;
293
- cycle?: number;
294
- requireOutput?: boolean;
295
- waitForStack?: boolean;
296
- }
297
-
298
- export interface LoaderFullConfig extends LoaderConfig {
299
- filterMode?: LoaderFilterMode;
300
- filterSlots?: Array<number | null | undefined>;
301
- }
302
-
303
- export class Session {
304
- constructor(gameSession?: string | null, gameVersion?: string | null);
305
-
306
- baseUrl: string;
307
- cookies: Map<string, string>;
308
- gameVersion: string | null;
309
- account: Account | null;
310
- geoServer: number | null;
311
- upgraded: boolean;
312
- isRegistered: boolean;
313
- showAds: boolean;
314
- forceTutorial: boolean;
315
- ban: unknown;
316
-
317
- get gameSession(): string;
318
-
319
- get gameToken(): string;
320
-
321
- get noticeVersion(): number | string | null;
322
- set noticeVersion(value: number | string | null);
323
-
324
- request(path: string, init?: RequestInit & { body?: BodyInit | Record<string, unknown> | null }): Promise<Response>;
325
-
326
- fetchAccountStatus(): Promise<unknown>;
327
-
328
- fetchShips(server: ServerRef): Promise<Ship[]>;
329
-
330
- fetchShipList(server: ServerRef): Promise<ShipList>;
331
-
332
- joinShipConnection(server: ServerRef, ship?: ShipRef): Promise<Connection>;
333
-
334
- startShipConnection(server: ServerRef, ship?: ShipRef): Promise<Connection>;
335
-
336
- startNewShipConnection(server: ServerRef, name?: string, color?: string): Promise<Connection>;
337
-
338
- joinInviteConnection(server: ServerRef, code: string): Promise<Connection>;
339
-
340
- joinShip(server: ServerRef, ship?: ShipRef): Promise<DredlessClient>;
341
-
342
- startShip(server: ServerRef, ship?: ShipRef): Promise<DredlessClient>;
343
-
344
- startNewShip(server: ServerRef, name?: string, color?: string): Promise<DredlessClient>;
345
-
346
- joinInvite(server: ServerRef, code: string): Promise<DredlessClient>;
347
-
348
- toJSON(): SessionSnapshot;
349
- }
350
-
351
- export class AnonSession extends Session {
352
- constructor(gameSession?: string | null, anonKey?: string | null, gameVersion?: string | null);
353
-
354
- get anonKey(): string;
355
- }
356
-
357
- export interface Account {
358
- name: string;
359
- color: number;
360
- game_rank: number;
361
- user_badges: string[];
362
- is_registered: boolean;
363
- }
364
-
365
- export interface SessionSnapshot {
366
- baseUrl: string;
367
- gameSession: string;
368
- gameToken: string;
369
- gameVersion: string | null;
370
- noticeVersion: number | string | null;
371
- cookies: Record<string, string>;
372
- account: Account | null;
373
- geoServer: number | null;
374
- upgraded: boolean;
375
- isRegistered: boolean;
376
- showAds: boolean;
377
- forceTutorial: boolean;
378
- ban: unknown;
379
- anonKey?: string;
380
- }
381
-
382
- export class Connection {
383
- constructor(session: Session, gameToken: string, netPort: number, serverId: number | Server, server?: Server | null);
384
-
385
- session: Session;
386
- baseUrl: string;
387
- gameToken: string;
388
- netPort: number;
389
- serverId: number;
390
- server: Server | null;
391
-
392
- toJSON(): ConnectionSnapshot;
393
- }
394
-
395
- export interface ConnectionSnapshot {
396
- baseUrl: string;
397
- gameToken: string;
398
- netPort: number;
399
- serverId: number;
400
- server: Server | null;
401
- session: SessionSnapshot;
402
- }
403
-
404
- export type WebSocketAttachMode = "observe" | "bootstrap" | "readonly";
405
-
406
- export interface AttachWebSocketOptions {
407
- mode?: WebSocketAttachMode;
408
- connected?: boolean | null;
409
- ready?: boolean;
410
- sid?: number | null;
411
- baseUrl?: string | null;
412
- session?: Session | null;
413
- serverId?: number | null;
414
- server?: Server | null;
415
- netPort?: number | null;
416
- gameToken?: string;
417
- }
418
-
419
- export interface DredlessClientOptions {
420
- connect?: boolean;
421
- /**
422
- * Retained entries in `packets`. Default 200. Pass 0 to disable the buffer or
423
- * Infinity for unbounded capture.
424
- */
425
- packetHistory?: number;
426
- /** Retained entries in each `WorldState.events`. Default 200. */
427
- eventHistory?: number;
428
- /** Retained entries in each `WorldState.modelPackets`. Default 100. */
429
- modelPacketHistory?: number;
430
- /** Retained entries in each `WorldState.chunks`. Default 64. */
431
- chunkHistory?: number;
432
- }
433
-
434
- export class DredlessClient {
435
- constructor(connection: Connection, options?: DredlessClientOptions);
436
-
437
- static attachWebSocket(websocket: unknown, options?: AttachWebSocketOptions): DredlessClient;
438
-
439
- connection: Connection | null;
440
- session: Session | null;
441
- baseUrl: string | null;
442
- attachMode: WebSocketAttachMode | null;
443
- attached: boolean;
444
- serverId: number | null;
445
- server: Server | null;
446
- netPort: number | null;
447
- gameToken: string;
448
- ws: unknown;
449
- sid: number | null;
450
- connected: boolean;
451
- ready: boolean;
452
- packetCount: number;
453
- lastPacket: unknown;
454
- net: ClientNetDomain;
455
- debug: ClientDebugDomain;
456
- player: PlayerDomain;
457
- inventory: InventoryDomain;
458
- management: ShipManagementDomain;
459
- readyPromise: Promise<this>;
460
-
461
- whenReady(): Promise<this>;
462
-
463
- close(code?: number, reason?: string): this;
464
-
465
- disconnect(code?: number, reason?: string): this;
466
-
467
- currentShip(): ShipDomain | null;
468
-
469
- ship(): ShipDomain | null;
470
-
471
- currentPlayerEntity(): EntityHandle | null;
472
-
473
- overworld(): OverworldDomain | null;
474
-
475
- world(id: number): WorldDomain | null;
476
-
477
- shipWorld(options?: {
478
- includeTiles?: boolean;
479
- includeModel?: boolean;
480
- includeBlocks?: boolean
481
- }): WorldSnapshot | null;
482
-
483
- state(options?: { includeTiles?: boolean; includeModel?: boolean; includeBlocks?: boolean }): ClientSnapshot;
484
-
485
- entities(scope?: number | string): EntitySnapshot[];
486
-
487
- entity(entityId: number, scope?: number | string): EntitySnapshot | null;
488
-
489
- on(type: string, callback: (...args: unknown[]) => void): this;
490
-
491
- off(type: string, callback: (...args: unknown[]) => void): this;
492
-
493
- once(type: string, callback: (...args: unknown[]) => void): this;
494
- }
495
-
496
- export interface ClientNetDomain {
497
- connected: boolean;
498
- ready: boolean;
499
- sid: number | null;
500
- packetCount: number;
501
- lastPacket: unknown;
502
-
503
- send(command?: Command): DredlessClient;
504
-
505
- sendMessage(message: unknown, options?: { afterReady?: boolean }): DredlessClient;
506
-
507
- sendRaw(message: unknown, options?: { afterReady?: boolean }): DredlessClient;
508
-
509
- sendEntityCommand(cmd: string, args?: unknown[]): DredlessClient;
510
-
511
- sendUiConfig(data: unknown): DredlessClient;
512
-
513
- sendBlueprintPlacement(placement: BlueprintPlacement): DredlessClient;
514
-
515
- setOutfit(outfit: unknown): DredlessClient;
516
- }
517
-
518
- export interface ClientDebugDomain {
519
- packets(): unknown[];
520
-
521
- decodeErrors(): unknown[];
522
-
523
- worldStore(): WorldStore;
524
-
525
- modelTable(worldId: number, tableId: number): Map<number, ModelRecord>;
526
-
527
- modelRecord(worldId: number, tableId: number, entityId: number): ModelRecord | null;
528
-
529
- entities(scope?: ReadWorldScope): EntityDebugSummary[];
530
-
531
- entity(scope: ReadWorldScope, entity: EntityRef): EntityDebugSummary | null;
532
-
533
- puiPanels(): PuiEvent[];
534
-
535
- commsPanels(): CommsEvent[];
536
- }
537
-
538
- export interface PlayerDomain {
539
- current(): PlayerSummary | null;
540
-
541
- entity(): EntityHandle | null;
542
-
543
- name(): string | null;
544
-
545
- rank(): CurrentPlayerRank;
546
-
547
- move(vector?: { x?: number; y?: number }, command?: Command): DredlessClient;
548
-
549
- aim(point?: { x?: number; y?: number; mx?: number; my?: number }, command?: Command): DredlessClient;
550
-
551
- action(flags?: Command, command?: Command): DredlessClient;
552
-
553
- useEntity(entity: EntityRef, options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
554
-
555
- useHeldItem(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
556
-
557
- placeHeldItem(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
558
-
559
- placeBlueprint(placement: BlueprintPlacement, options?: {
560
- invSlot?: number;
561
- hold?: boolean;
562
- mx?: number;
563
- my?: number
564
- }, command?: Command): DredlessClient;
565
-
566
- rotateHeldItem(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
567
-
568
- selectSlot(invSlot?: number, command?: Command): DredlessClient;
569
-
570
- inputSettings(): CurrentInputSettings;
571
-
572
- setInputSettings(settings?: InputSettings, options?: { send?: boolean }): DredlessClient;
573
-
574
- setView(width: number, height: number, options?: { send?: boolean }): DredlessClient;
575
-
576
- setScreenSize(width: number, height: number, options?: { send?: boolean }): DredlessClient;
577
-
578
- setWrenchMode(mode: WrenchMode, options?: { send?: boolean }): DredlessClient;
579
-
580
- setTurretMode(mode: TurretMode, options?: { send?: boolean }): DredlessClient;
581
- }
582
-
583
- export interface ShipManagementDomain {
584
- requestPlayerList(): DredlessClient;
585
-
586
- resetInvite(): DredlessClient;
587
-
588
- setPrivacy(privacy: ShipPrivacy): DredlessClient;
589
-
590
- recoverStarterItem(itemId: number): DredlessClient;
591
-
592
- setPlayerRank(refId: number, rank: ShipPlayerRank): DredlessClient;
593
-
594
- kickPlayer(refId: number): DredlessClient;
595
-
596
- banPlayer(refId: number): DredlessClient;
597
-
598
- demoteSelf(): DredlessClient;
599
-
600
- config(): ShipConfig | null;
601
-
602
- hasCheats(): boolean;
603
-
604
- playerList(): ShipPlayerList | null;
605
- }
606
-
607
- export interface InventoryDomain {
608
- state(): InventoryState | null;
609
-
610
- hotbarSize(): number;
611
-
612
- allSlots(): InventorySlotHandle[];
613
-
614
- slot(ref: InventorySlotRef): InventorySlotHandle;
615
-
616
- hotbarSlots(): InventorySlotHandle[];
617
-
618
- equipmentSlots(): {
619
- head: InventorySlotHandle;
620
- face: InventorySlotHandle;
621
- body: InventorySlotHandle;
622
- back: InventorySlotHandle;
623
- hands: InventorySlotHandle;
624
- feet: InventorySlotHandle
625
- };
626
-
627
- findItem(itemId: number, options?: { area?: InventoryArea }): InventorySlotHandle | null;
628
-
629
- findItems(itemId: number, options?: { area?: InventoryArea }): InventorySlotHandle[];
630
-
631
- firstEmpty(options?: { area?: InventoryArea }): InventorySlotHandle | null;
632
-
633
- move(source: InventorySlotRef, target: InventorySlotRef, options?: {
634
- split?: boolean
635
- }, command?: Command): DredlessClient;
636
-
637
- equip(source: InventorySlotRef, equipmentSlot?: EquipmentSlot | { split?: boolean }, options?: {
638
- split?: boolean
639
- } | Command, command?: Command): DredlessClient;
640
-
641
- unequip(equipmentSlot: EquipmentSlot, target?: InventorySlotRef, options?: {
642
- split?: boolean
643
- }, command?: Command): DredlessClient;
644
-
645
- select(slot: InventorySlotRef, command?: Command): DredlessClient;
646
- }
647
-
648
- export interface InventorySlotHandle {
649
- index: number;
650
- kind: "hotbar" | "equipment" | null;
651
- equipmentSlot: "head" | "face" | "body" | "back" | "hands" | "feet" | null;
652
- itemId: number | null;
653
- itemName: string | null;
654
- count: number;
655
- empty: boolean;
656
-
657
- exists(): boolean;
658
-
659
- snapshot(): InventorySlotSnapshot | null;
660
-
661
- moveTo(target: InventorySlotRef, options?: { split?: boolean }, command?: Command): DredlessClient;
662
-
663
- equip(equipmentSlot?: EquipmentSlot | { split?: boolean }, options?: {
664
- split?: boolean
665
- } | Command, command?: Command): DredlessClient;
666
-
667
- unequip(target?: InventorySlotRef, options?: { split?: boolean }, command?: Command): DredlessClient;
668
-
669
- select(command?: Command): DredlessClient;
670
- }
671
-
672
- export interface WorldDomain {
673
- id: number | null;
674
- entities: EntityCollection;
675
- machines: MachineCollection;
676
- players: PlayerCollection;
677
- blocks: BlockCollection;
678
- materials: MaterialCollection;
679
-
680
- exists(): boolean;
681
-
682
- snapshot(options?: {
683
- includeTiles?: boolean;
684
- includeModel?: boolean;
685
- includeBlocks?: boolean
686
- }): WorldSnapshot | null;
687
- }
688
-
689
- export interface ShipDomain extends WorldDomain {
690
- metadata: ShipWorldMetadataSummary | null;
691
-
692
- entity(): EntityHandle | null;
693
-
694
- overworldEntity: EntityHandle | null;
695
- }
696
-
697
- export interface OverworldDomain extends WorldDomain {
698
- ships(options?: ShipReadOptions): ShipHandle[];
699
-
700
- shipByHex(hexCode: string, options?: ShipReadOptions): ShipHandle | null;
701
-
702
- shipByEntity(entity: EntityRef, options?: ShipReadOptions): ShipHandle | null;
703
- }
704
-
705
- export interface EntityCollection {
706
- all(): EntityHandle[];
707
-
708
- snapshots(): EntitySnapshot[];
709
-
710
- states(): EntitySnapshot[];
711
-
712
- get(entity: EntityRef): EntityHandle;
713
- }
714
-
715
- export interface PlayerCollection {
716
- all(): PlayerSummary[];
717
-
718
- current(): PlayerSummary | null;
719
- }
720
-
721
- export interface BlockCollection {
722
- all(): BlockSummary[];
723
-
724
- at(x: number, y: number): BlockSummary | null;
725
- }
726
-
727
- export interface MaterialCollection {
728
- all(): MaterialSummary[];
729
- }
730
-
731
- export interface MachineCollection {
732
- state(): MachineSummary;
733
-
734
- raw(): MachineSummary;
735
-
736
- loaders(): LoaderHandle[];
737
-
738
- loader(entity: EntityRef): LoaderHandle;
739
-
740
- pushers(): PusherHandle[];
741
-
742
- pusher(entity: EntityRef): PusherHandle;
743
-
744
- launchers(): LauncherHandle[];
745
-
746
- launcher(entity: EntityRef): LauncherHandle;
747
-
748
- navigationUnits(): NavigationUnitHandle[];
749
-
750
- navigationUnit(entity?: EntityRef | null): NavigationUnitHandle | null;
751
-
752
- fabricators(): FabricatorHandle[];
753
-
754
- fabricator(entity: EntityRef): FabricatorHandle;
755
-
756
- commsStations(): CommsStationHandle[];
757
-
758
- commsStation(entity?: EntityRef | null): CommsStationHandle | null;
759
-
760
- signs(): SignHandle[];
761
-
762
- sign(entity: EntityRef): SignHandle;
763
-
764
- generators(): GeneratorHandle[];
765
-
766
- generator(entity: EntityRef): GeneratorHandle;
767
-
768
- cargoHatches(): CargoHatchHandle[];
769
-
770
- cargoHatch(entity: EntityRef): CargoHatchHandle;
771
-
772
- cargoEjectors(): CargoEjectorHandle[];
773
-
774
- cargoEjector(entity: EntityRef): CargoEjectorHandle;
775
-
776
- cannons(): CannonHandle[];
777
-
778
- cannon(entity: EntityRef): CannonHandle;
779
-
780
- thrusters(): ThrusterHandle[];
781
-
782
- thruster(entity: EntityRef): ThrusterHandle;
783
-
784
- helms(): HelmHandle[];
785
-
786
- helm(entity: EntityRef): HelmHandle;
787
-
788
- doors(): DoorHandle[];
789
-
790
- door(entity: EntityRef): DoorHandle;
791
-
792
- spawnPoints(): SpawnPointHandle[];
793
-
794
- spawnPoint(entity: EntityRef): SpawnPointHandle;
795
-
796
- shieldProjectors(): ShieldProjectorHandle[];
797
-
798
- shieldProjector(entity: EntityRef): ShieldProjectorHandle;
799
-
800
- fluidTanks(): FluidTankHandle[];
801
-
802
- fluidTank(entity: EntityRef): FluidTankHandle;
803
-
804
- expandoBoxes(): ExpandoBoxHandle[];
805
-
806
- expandoBox(entity: EntityRef): ExpandoBoxHandle;
807
- }
808
-
809
- export type EntityPublicType =
810
- | "loader"
811
- | "pusher"
812
- | "launcher"
813
- | "navigationUnit"
814
- | "fabricator"
815
- | "cargoEjector"
816
- | "cannon"
817
- | "thruster"
818
- | "cargoHatch"
819
- | "commsStation"
820
- | "fluidTank"
821
- | "shieldGenerator"
822
- | "shieldProjector"
823
- | "helm"
824
- | "sign"
825
- | "spawnPoint"
826
- | "door"
827
- | "expandoBox"
828
- | "player"
829
- | "ship"
830
- | "bot"
831
- | "looseItem"
832
- | "mapMarker"
833
- | "dockingSpring"
834
- | "hugeThruster"
835
- | "blueprintPreview"
836
- | "unknown";
837
-
838
- export type EntityFeatureName =
839
- | "health"
840
- | "position"
841
- | "outline"
842
- | "inventory"
843
- | "item"
844
- | "filter"
845
- | "filterMode"
846
- | "filterSlots"
847
- | "filterInventory"
848
- | "beam"
849
- | "occupied"
850
- | "loaderConfig"
851
- | "pusherConfig"
852
- | "launcherConfig"
853
- | "navigationConfig"
854
- | "fabricatorQueue"
855
- | "progress"
856
- | string;
857
- export type EntityTypeName = EntityPublicType | string;
858
-
859
- export interface EntitySnapshot extends EntitySummary {
860
- id: number;
861
- position: TransformSummary | null;
862
- rotation: number | null;
863
- type: EntityPublicType | string;
864
- features: string[];
865
-
866
- is(type: EntityTypeName): boolean;
867
-
868
- has(feature: EntityFeatureName): boolean;
869
-
870
- feature(feature: EntityFeatureName): unknown | null;
871
- }
872
-
873
- export interface EntityHandle {
874
- /** @deprecated Use id. */
875
- entity: number;
876
- id: number;
877
- position: TransformSummary | null;
878
- health: HealthSummary | null;
879
- type: EntityPublicType | string;
880
- features: string[];
881
-
882
- exists(): boolean;
883
-
884
- snapshot(): EntitySnapshot | null;
885
-
886
- is(type: EntityTypeName): boolean;
887
-
888
- has(feature: EntityFeatureName): boolean;
889
-
890
- feature(feature: EntityFeatureName): unknown | null;
891
-
892
- as(type: EntityTypeName): MachineHandle | null;
893
-
894
- asLoader(): LoaderHandle | null;
895
-
896
- asPusher(): PusherHandle | null;
897
-
898
- asLauncher(): LauncherHandle | null;
899
-
900
- asNavigationUnit(): NavigationUnitHandle | null;
901
-
902
- asCommsStation(): CommsStationHandle | null;
903
-
904
- asSign(): SignHandle | null;
905
-
906
- asGenerator(): GeneratorHandle | null;
907
-
908
- asCargoHatch(): CargoHatchHandle | null;
909
-
910
- asCannon(): CannonHandle | null;
911
-
912
- asThruster(): ThrusterHandle | null;
913
-
914
- asHelm(): HelmHandle | null;
915
-
916
- asDoor(): DoorHandle | null;
917
-
918
- asSpawnPoint(): SpawnPointHandle | null;
919
-
920
- asShieldProjector(): ShieldProjectorHandle | null;
921
-
922
- asFluidTank(): FluidTankHandle | null;
923
-
924
- asCargoEjector(): CargoEjectorHandle | null;
925
-
926
- asExpandoBox(): ExpandoBoxHandle | null;
927
-
928
- use(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
929
- }
930
-
931
- export interface MachineHandle extends EntityHandle {
932
- open(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
933
- }
934
-
935
- export interface LoaderHandle extends MachineHandle {
936
- state: LoaderSummary | null;
937
-
938
- configure(config?: LoaderConfig): DredlessClient;
939
-
940
- configureFull(config?: LoaderFullConfig): DredlessClient;
941
-
942
- copy(config?: LoaderFullConfig): DredlessClient;
943
-
944
- setPickPlace(pick: LoaderPosition, place: LoaderPosition, config?: LoaderConfig): DredlessClient;
945
-
946
- setPriority(priority: LoaderPriority, config?: LoaderConfig): DredlessClient;
947
-
948
- setStack(stack: number, config?: LoaderConfig): DredlessClient;
949
-
950
- setCycle(cycle: number, config?: LoaderConfig): DredlessClient;
951
-
952
- setRequireOutput(requireOutput: boolean, config?: LoaderConfig): DredlessClient;
953
-
954
- setWaitForStack(waitForStack: boolean, config?: LoaderConfig): DredlessClient;
955
-
956
- setFilterMode(filterMode: LoaderFilterMode): DredlessClient;
957
-
958
- setFilterItems(filterSlots?: Array<number | null | undefined>): DredlessClient;
959
-
960
- pick: number | undefined;
961
- place: number | undefined;
962
- priority: number | undefined;
963
- stack: number | undefined;
964
- cycle: number | undefined;
965
- requireOutput: boolean | undefined;
966
- waitForStack: boolean | undefined;
967
- filterMode: number | undefined;
968
- filterSlots: Array<number | null>;
969
- active: boolean | undefined;
970
- heldItem: { itemId: number; itemName: string | null; count: number | null } | null;
971
- progress: number | null | undefined;
972
- }
973
-
974
- export interface PusherHandle extends MachineHandle {
975
- state: PusherSummary | null;
976
- beam: PusherBeamSummary | null;
977
-
978
- configure(config?: PusherConfig): DredlessClient;
979
-
980
- setAngle(angle: number, config?: PusherConfig): DredlessClient;
981
-
982
- setSpeed(speed: number, config?: PusherConfig): DredlessClient;
983
-
984
- setLength(length: number, config?: PusherConfig): DredlessClient;
985
-
986
- setMode(mode: PusherMode, config?: PusherConfig): DredlessClient;
987
-
988
- setFilteredMode(mode: PusherMode, config?: PusherConfig): DredlessClient;
989
-
990
- setFilterInventory(filterInventory: boolean, config?: PusherConfig): DredlessClient;
991
-
992
- setFilterItems(filterSlots?: Array<number | null | undefined>): DredlessClient;
993
-
994
- angle: number | undefined;
995
- speed: number | undefined;
996
- length: number | undefined;
997
- mode: number | undefined;
998
- filteredMode: number | undefined;
999
- }
1000
-
1001
- export interface LauncherHandle extends MachineHandle {
1002
- state: LauncherSummary | null;
1003
-
1004
- setAngle(angle: number): DredlessClient;
1005
-
1006
- setPower(power: number): DredlessClient;
1007
-
1008
- angleDegrees: number | undefined;
1009
- angleRadians: number | undefined;
1010
- angleRaw: number | null | undefined;
1011
- }
1012
-
1013
- export interface NavigationUnitHandle extends MachineHandle {
1014
- state: NavigationUnitSummary | null;
1015
-
1016
- configure(config?: NavigationUnitConfig): DredlessClient;
1017
-
1018
- copy(config?: NavigationUnitConfig): DredlessClient;
1019
-
1020
- paste(config?: NavigationUnitConfig): DredlessClient;
1021
-
1022
- setDestination(destination: number, config?: NavigationUnitConfig): DredlessClient;
1023
-
1024
- setAutoWarp(config?: NavigationUnitConfig): DredlessClient;
1025
-
1026
- startWarp(config?: NavigationUnitConfig): DredlessClient;
1027
-
1028
- cancelWarp(config?: NavigationUnitConfig): DredlessClient;
1029
-
1030
- destination: number | undefined;
1031
- autoWarpOnShieldFailure: boolean | undefined;
1032
- autoWarpOnNoCaptains: boolean | undefined;
1033
- warp: string | undefined;
1034
- }
1035
-
1036
- export interface FabricatorHandle extends MachineHandle {
1037
- state: FabricatorSummary | null;
1038
- progress: number | null | undefined;
1039
- active: boolean | undefined;
1040
- craftingItem: { itemId: number; itemName: string | null; count: number | null } | null;
1041
-
1042
- panel(): PuiEvent | null;
1043
-
1044
- add(itemId: number, count?: number, index?: number): DredlessClient;
1045
-
1046
- sub(itemId: number, count?: number, index?: number): DredlessClient;
1047
-
1048
- clearQueue(): DredlessClient;
1049
-
1050
- toggleRepeat(): DredlessClient;
1051
-
1052
- lockResource(row: number): DredlessClient;
1053
-
1054
- unlockResource(row: number): DredlessClient;
1055
-
1056
- eject(row: number): DredlessClient;
1057
- }
1058
-
1059
- export interface CommsStationHandle extends MachineHandle {
1060
- state: CommsStationSummary | null;
1061
-
1062
- panel(): CommsEvent | null;
1063
-
1064
- sendMessage(message?: string): DredlessClient;
1065
- }
1066
-
1067
- export interface SignHandle extends MachineHandle {
1068
- state: SignSummary | null;
1069
-
1070
- setText(text?: string, mode?: SignDisplayMode): DredlessClient;
1071
-
1072
- text: string | undefined;
1073
- mode: number | undefined;
1074
- }
1075
-
1076
- export interface GeneratorHandle extends MachineHandle {
1077
- state: ShieldGeneratorSummary | null;
1078
-
1079
- solvePuzzle(solution: string | number): DredlessClient;
1080
- }
1081
-
1082
- export interface CargoHatchHandle extends MachineHandle {
1083
- state: CargoHatchSummary | null;
1084
- openFraction: number | null | undefined;
1085
-
1086
- configure(config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): DredlessClient;
1087
-
1088
- copy(config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): DredlessClient;
1089
-
1090
- paste(config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): DredlessClient;
1091
-
1092
- setFilterMode(filterMode: LoaderFilterMode): DredlessClient;
1093
-
1094
- setFilterItems(filterSlots?: Array<number | null | undefined>): DredlessClient;
1095
- }
1096
-
1097
- export interface CannonHandle extends MachineHandle {
1098
- state: CannonSummary | null;
1099
- }
1100
-
1101
- export interface ThrusterHandle extends MachineHandle {
1102
- state: ThrusterSummary | null;
1103
- }
1104
-
1105
- export interface HelmHandle extends MachineHandle {
1106
- state: HelmSummary | null;
1107
- occupied: boolean | undefined;
1108
- }
1109
-
1110
- export interface DoorHandle extends MachineHandle {
1111
- state: DoorSummary | null;
1112
- rank: number | undefined;
1113
- open: boolean | undefined;
1114
- }
1115
-
1116
- export interface SpawnPointHandle extends MachineHandle {
1117
- state: SpawnPointSummary | null;
1118
- rank: number | undefined;
1119
- }
1120
-
1121
- export interface ShieldProjectorHandle extends MachineHandle {
1122
- state: ShieldProjectorSummary | null;
1123
- active: boolean | undefined;
1124
- }
1125
-
1126
- export interface FluidTankHandle extends MachineHandle {
1127
- state: FluidTankSummary | null;
1128
- amount: number | null | undefined;
1129
- }
1130
-
1131
- export interface ExpandoBoxHandle extends MachineHandle {
1132
- state: ExpandoBoxSummary | null;
1133
- item: number | null | undefined;
1134
- count: number | null | undefined;
1135
- }
1136
-
1137
- export interface CargoEjectorHandle extends MachineHandle {
1138
- state: CargoEjectorSummary | null;
1139
- progress: number | null | undefined;
1140
- active: boolean | null | undefined;
1141
-
1142
- setDirection(direction: FixedAngleDirection): DredlessClient;
1143
-
1144
- copy(direction?: FixedAngleDirection): DredlessClient;
1145
-
1146
- paste(direction?: FixedAngleDirection): DredlessClient;
1147
- }
1148
-
1149
- export interface ShipHandle {
1150
- entity: number;
1151
- name: string | null;
1152
- hexCode: string | null;
1153
- distance: number | null;
1154
- worldId: number | null;
1155
- hasWorldData: boolean;
1156
-
1157
- world(): WorldDomain | null;
1158
-
1159
- snapshot(): ShipReadSummary;
1160
- }
1161
-
1162
- export interface ClientSnapshot {
1163
- baseUrl: string | null;
1164
- session: SessionSnapshot | Session | null;
1165
- connection: ConnectionSnapshot | null;
1166
- attachMode: WebSocketAttachMode | null;
1167
- serverId: number | null;
1168
- server: Server | null;
1169
- netPort: number | null;
1170
- sid: number | null;
1171
- ready: boolean;
1172
- connected: boolean;
1173
- currentWorldId: number | null;
1174
- worlds: WorldSnapshot[];
1175
- cpuLoad: number | null;
1176
- inventory: InventoryState | null;
1177
- puiPanels: PuiEvent[];
1178
- commsPanels: CommsEvent[];
1179
- currentCommsPanel: CommsEvent | null;
1180
- warnings: unknown[];
1181
- effects: unknown[];
1182
- chat: unknown[];
1183
- motd: unknown[];
1184
- sessionMessages: unknown[];
1185
- scannerResults: ScannerResult[];
1186
- lastScannerResult: ScannerResult | null;
1187
- shipConfig: ShipConfig | null;
1188
- captainSubrank: CaptainSubrank | null;
1189
- playerList: ShipPlayerList | null;
1190
- outfits: { sid: number; outfit: unknown }[];
1191
- commandAcks: CommandAck[];
1192
- lastCommandAck: CommandAck | null;
1193
- decodeErrors: unknown[];
1194
- packetCount: number;
1195
- lastPacket: unknown;
1196
- }
1197
-
1198
- export interface CommandAck {
1199
- world: number;
1200
- commandNumber: number;
1201
- }
1202
-
1203
- export interface ScannerResult {
1204
- kind: "manifest" | "bom" | "unknown";
1205
- sid: number | null;
1206
- shipHex: string | null;
1207
- shipName: string | null;
1208
- blocks: Record<string, number> | null;
1209
- objects: Record<string, number> | null;
1210
- inventories: Record<string, number> | null;
1211
- materials: Record<string, number> | null;
1212
- }
1213
-
1214
- export interface NavigationUnitConfig {
1215
- destination?: number;
1216
- page?: number;
1217
- warp?: boolean | "start" | "idle" | "cancel";
1218
- autoWarpOnShieldFailure?: boolean;
1219
- autoWarpOnNoCaptains?: boolean;
1220
- }
1221
-
1222
- export const WrenchMode: {
1223
- readonly DropAllItems: "drop-all-items";
1224
- readonly GrabPrimaryItems: "grab-primary-items";
1225
- readonly GrabAllItems: "grab-all-items";
1226
- };
1227
- export type WrenchMode = typeof WrenchMode[keyof typeof WrenchMode];
1228
- export const TurretMode: {
1229
- readonly ContinuousFire: "continuous-fire";
1230
- readonly VolleyFire: "volley-fire";
1231
- };
1232
- export type TurretMode = typeof TurretMode[keyof typeof TurretMode];
1233
-
1234
- export interface InputSettings {
1235
- wrenchMode?: WrenchMode;
1236
- turretMode?: TurretMode;
1237
- viewWidth?: number;
1238
- viewHeight?: number;
1239
- screenWidth?: number;
1240
- screenHeight?: number;
1241
- }
1242
-
1243
- export interface CurrentInputSettings {
1244
- wrenchMode: WrenchMode | null;
1245
- turretMode: TurretMode | null;
1246
- viewWidth: number | null;
1247
- viewHeight: number | null;
1248
- screenWidth: number | null;
1249
- screenHeight: number | null;
1250
- }
1251
-
1252
- export interface InventorySlotSnapshot {
1253
- index: number;
1254
- itemId: number | null;
1255
- itemName: string | null;
1256
- count: number;
1257
- kind: "hotbar" | "equipment";
1258
- equipmentSlot: "head" | "face" | "body" | "back" | "hands" | "feet" | null;
1259
- empty: boolean;
1260
- }
1261
-
1262
- export interface InventoryState {
1263
- type: "inventory";
1264
- filter?: number;
1265
- hotbarSize: number;
1266
- slots: InventorySlotSnapshot[];
1267
- hotbar: InventorySlotSnapshot[];
1268
- equipment: {
1269
- head: InventorySlotSnapshot;
1270
- face: InventorySlotSnapshot;
1271
- body: InventorySlotSnapshot;
1272
- back: InventorySlotSnapshot;
1273
- hands: InventorySlotSnapshot;
1274
- feet: InventorySlotSnapshot;
1275
- };
1276
- }
1277
-
1278
- export interface PuiEvent {
1279
- type: "pui";
1280
- filter?: number;
1281
- ent_id?: number;
1282
- update?: boolean;
1283
- data?: unknown;
1284
- world?: number | null;
1285
- }
1286
-
1287
- export interface CargoEjectorSummary {
1288
- entity: number;
1289
- typeId: number;
1290
- typeName: string | null;
1291
- progress: number | null;
1292
- active: boolean | null;
1293
- }
1294
-
1295
- export interface EntityContentsSummary {
1296
- itemHolder?: ItemHolderSummary;
1297
- expandoBox?: ExpandoBoxSummary;
1298
- hoverOutline?: HoverOutlineSummary;
1299
- mapMarker?: MapMarkerSummary;
1300
- dockingSpring?: DockingSpringSummary;
1301
- hugeThruster?: HugeThrusterSummary;
1302
- blueprintPreview?: BlueprintPreviewSummary;
1303
- itemCrate?: ItemCrateSummary;
1304
- health?: HealthSummary;
1305
- bot?: BotSummary;
1306
- fabricator?: FabricatorSummary;
1307
- cargoEjector?: CargoEjectorSummary;
1308
- cannon?: CannonSummary;
1309
- thruster?: ThrusterSummary;
1310
- pusher?: PusherSummary;
1311
- pusherBeam?: PusherBeamSummary;
1312
- launcher?: LauncherSummary;
1313
- loader?: LoaderSummary;
1314
- cargoHatch?: CargoHatchSummary;
1315
- navigationUnit?: NavigationUnitSummary;
1316
- commsStation?: CommsStationSummary;
1317
- fluidTank?: FluidTankSummary;
1318
- shieldGenerator?: ShieldGeneratorSummary;
1319
- shieldProjector?: ShieldProjectorSummary;
1320
- helm?: HelmSummary;
1321
- player?: PlayerSummary;
1322
- shipControl?: ShipControlSummary;
1323
- sign?: SignSummary;
1324
- spawnPoint?: SpawnPointSummary;
1325
- door?: DoorSummary;
1326
- shipSize?: ShipSizeSummary;
1327
- }
1328
-
1329
- export interface EntitySummary {
1330
- entity: number;
1331
- category: "placed_entity" | "loose_item" | "untyped_holder" | "metadata" | "player" | "ship_control" | "blueprint_preview" | "entity";
1332
- typeId: number | null;
1333
- typeName: string | null;
1334
- markerTypeId: number | null;
1335
- markerTypeName: string | null;
1336
- label: string;
1337
- kind: string[];
1338
- transform: TransformSummary | null;
1339
- footprint: {
1340
- width: number;
1341
- height: number;
1342
- source: "type" | "marker" | "heuristic" | "default" | "crate" | "huge_thruster" | "hover_outline"
1343
- };
1344
- type: EntityPublicType | string;
1345
- features: string[];
1346
- occupies: { x: number; y: number }[];
1347
- tables: { tableId: number; name: string | null; record: ModelRecord }[];
1348
- }
1349
-
1350
- export interface EntityDebugSummary extends Omit<EntitySummary, "type" | "features"> {
1351
- contents: EntityContentsSummary | null;
1352
- }
1353
-
1354
- export interface BlockSummary {
1355
- x: number;
1356
- y: number;
1357
- entities: EntityDebugSummary[];
1358
- }
1359
-
1360
- export interface WorldHistoryLimits {
1361
- /** Retained entries in `WorldState.events`. Default 200. */
1362
- eventHistory?: number;
1363
- /** Retained entries in `WorldState.modelPackets`. Default 100. */
1364
- modelPacketHistory?: number;
1365
- /** Retained entries in `WorldState.chunks`. Default 64. */
1366
- chunkHistory?: number;
1367
- }
1368
-
1369
- export class WorldStore {
1370
- constructor(limits?: WorldHistoryLimits);
1371
-
1372
- currentWorldId: number | null;
1373
- worlds: Map<number, WorldState>;
1374
- historyLimits: Required<WorldHistoryLimits>;
1375
-
1376
- get(id: number): WorldState;
1377
-
1378
- apply(packet: unknown): WorldUpdate | null;
1379
-
1380
- snapshot(options?: { includeTiles?: boolean; includeModel?: boolean; includeBlocks?: boolean }): WorldSnapshot[];
1381
-
1382
- ids(): number[];
1383
-
1384
- overworld(): WorldState | null;
1385
-
1386
- shipWorld(): WorldState | null;
1387
-
1388
- currentShipEntity(): EntityDebugSummary | null;
1389
- }
1390
-
1391
- export class WorldState {
1392
- constructor(id: number, limits?: WorldHistoryLimits);
1393
-
1394
- historyLimits: Required<WorldHistoryLimits>;
1395
- /** Chunks applied over the connection's lifetime, independent of retention. */
1396
- totalChunkCount: number;
1397
- /** Events recorded over the connection's lifetime, independent of retention. */
1398
- totalEventCount: number;
1399
- id: number;
1400
- seed: number | null;
1401
- isOverworld: boolean | null;
1402
- tileset: Tileset | null;
1403
- blockWidth: number | null;
1404
- blockHeight: number | null;
1405
- parentWorld: number | null;
1406
- parentEntity: number | null;
1407
- tiles: Map<string, Tile>;
1408
- chunks: unknown[];
1409
- events: unknown[];
1410
- modelPackets: unknown[];
1411
- commsBubbles: CommsBubbleSummary[];
1412
- model: ModelState;
1413
- lastChunkPatch: unknown;
1414
- lastPacket: unknown;
1415
- meta: unknown;
1416
-
1417
- readMeta(packet: unknown): void;
1418
-
1419
- addCommsBubble(packet: unknown): CommsBubbleSummary;
1420
-
1421
- decodeEncrypted(data: Uint8Array | ArrayBuffer | number[]): unknown;
1422
-
1423
- applyTile(value: unknown): Tile | null;
1424
-
1425
- applyChunk(value: unknown): Tile[] | null;
1426
-
1427
- setTile(tile: Tile): Tile;
1428
-
1429
- normalizeTile(tile: Tile): Tile;
1430
-
1431
- materials(): MaterialSummary[];
1432
-
1433
- snapshot(options?: { includeTiles?: boolean; includeModel?: boolean; includeBlocks?: boolean }): WorldSnapshot;
1434
-
1435
- table(id: number): Map<number, ModelRecord>;
1436
-
1437
- record(tableId: number, entityId: number): ModelRecord | null;
1438
-
1439
- tileDefinition(material: number): TileDefinition | null;
1440
-
1441
- entity(entityId: number): EntityDebugSummary | null;
1442
-
1443
- entities(): EntityDebugSummary[];
1444
-
1445
- blocks(): BlockSummary[];
1446
-
1447
- /** O(1) lookup of the block at a coordinate. */
1448
- blockAt(x: number, y: number): BlockSummary | null;
1449
- }
1450
-
1451
- export interface Tile {
1452
- x: number;
1453
- y: number;
1454
- material: number;
1455
- materialName?: string | null;
1456
- shape: number;
1457
- shapeName?: string | null;
1458
- hp: number;
1459
- /** @deprecated Use hp. This is the raw 0-255 HP fraction byte, not absolute integrity. */
1460
- integrity: number;
1461
- color: number | null;
1462
- solid?: boolean | null;
1463
- maxHp?: number | null;
1464
- hpRatio?: number | null;
1465
- hpValue?: number | null;
1466
- }
1467
-
1468
- export interface MaterialSummary {
1469
- material: number;
1470
- name: string | null;
1471
- count: number;
1472
- solid: boolean | null;
1473
- hp: number | null;
1474
- }
1475
-
1476
- export interface TilePhysics {
1477
- filter?: {
1478
- categoryBits: number;
1479
- maskBits: number;
1480
- groupIndex: number;
1481
- };
1482
- transparent?: boolean;
1483
- walkway?: boolean;
1484
- restitution?: number;
1485
- friction?: number;
1486
- }
1487
-
1488
- export interface TileDefinition {
1489
- name?: string;
1490
- solid: boolean;
1491
- destruct_item?: number;
1492
- blocks_bullets?: boolean;
1493
- hp?: number;
1494
- no_build_surface?: boolean;
1495
- physics?: TilePhysics;
1496
- }
1497
-
1498
- export interface Tileset {
1499
- scale: number;
1500
- atlas: string;
1501
- tile_width: number;
1502
- tiles: TileDefinition[];
1503
- }
1504
-
1505
- export interface WorldSnapshot {
1506
- id: number;
1507
- is_overworld: boolean | null;
1508
- overworldZone: OverworldZoneSummary | null;
1509
- shipMetadata: ShipWorldMetadataSummary | null;
1510
- tileset: Tileset | null;
1511
- seed: number | null;
1512
- block_w: number | null;
1513
- block_h: number | null;
1514
- parent_world: number | null;
1515
- parent_ent: number | null;
1516
- tileCount: number;
1517
- chunkCount: number;
1518
- lastChunkPatch: unknown;
1519
- lastPacket: unknown;
1520
- meta: unknown;
1521
- materials: MaterialSummary[];
1522
- model: ModelSnapshot;
1523
- entities: EntityDebugSummary[];
1524
- /** Present only when the snapshot was taken with `includeBlocks`. */
1525
- blocks?: BlockSummary[];
1526
- transforms: TransformSummary[];
1527
- machines: MachineSummary;
1528
- players: PlayerSummary[];
1529
- shipControls: ShipControlSummary[];
1530
- commsBubbles: CommsBubbleSummary[];
1531
- tiles?: Tile[];
1532
- }
1533
-
1534
- export interface OverworldZoneSummary {
1535
- id: number;
1536
- baseId: number;
1537
- layer: number;
1538
- key: string;
1539
- name: string;
1540
- tiered: boolean;
1541
- displayName: string;
1542
- }
1543
-
1544
- export interface ShipWorldMetadataSummary {
1545
- name: string | null;
1546
- color: number | null;
1547
- colorCss: string | null;
1548
- width: number | null;
1549
- height: number | null;
1550
- lockdownTimerSeconds: number | null;
1551
- lockdownCountdownSeconds: number | null;
1552
- onlineShipOwnerCount: number | null;
1553
- requiredShipOwnerCount: number | null;
1554
- allShipOwnersOnline: boolean | null;
1555
- lockdownEngaged: boolean | null;
1556
- lockdownState: ModelRecord;
1557
- shipState: ModelRecord;
1558
- }
1559
-
1560
- export interface WorldUpdate {
1561
- type: string;
1562
- world: WorldState | null;
1563
- packet?: unknown;
1564
- bubble?: CommsBubbleSummary;
1565
- decoded?: unknown;
1566
- updates?: unknown[];
1567
- result?: unknown;
1568
- }
1569
-
1570
- export interface CommsBubbleSummary {
1571
- sequence: number;
1572
- worldId: number;
1573
- entity: number | null;
1574
- modelId: number | null;
1575
- message: string;
1576
- color: number | null;
1577
- colorCss: string | null;
1578
- durationSeconds: number | null;
1579
- raw: unknown;
1580
- }
1581
-
1582
- export class ModelState {
1583
- generation: number | null;
1584
- tables: Map<number, Map<number, ModelRecord>>;
1585
- /** Capped at 500 retained ids; see `totalRemovedCount` for the true total. */
1586
- removedEntities: number[];
1587
- lastUpdate: unknown;
1588
- /** Capped at 100 retained entries; see `totalErrorCount` for the true total. */
1589
- errors: unknown[];
1590
- totalRemovedCount: number;
1591
- totalErrorCount: number;
1592
-
1593
- table(id: number): Map<number, ModelRecord>;
1594
-
1595
- record(tableId: number, entityId: number): ModelRecord | null;
1596
-
1597
- entity(entityId: number): EntityDebugSummary | null;
1598
-
1599
- entities(): EntityDebugSummary[];
1600
-
1601
- blocks(): BlockSummary[];
1602
-
1603
- /** O(1) lookup of the block at a coordinate. */
1604
- blockAt(x: number, y: number): BlockSummary | null;
1605
-
1606
- apply(bytes: Uint8Array | ArrayBuffer | number[]): unknown;
1607
-
1608
- snapshot(options?: { includeTables?: boolean; includeBlocks?: boolean }): ModelSnapshot;
1609
-
1610
- tablesSnapshot(): unknown[];
1611
-
1612
- transforms(): TransformSummary[];
1613
-
1614
- itemHolders(): ItemHolderSummary[];
1615
-
1616
- fabricators(): FabricatorSummary[];
1617
-
1618
- players(): PlayerSummary[];
1619
-
1620
- shipControls(): ShipControlSummary[];
1621
-
1622
- shipMetadata(): ShipWorldMetadataSummary | null;
1623
-
1624
- machines(): MachineSummary;
1625
- }
1626
-
1627
- export type ModelRecord = Record<string, unknown>;
1628
-
1629
- export interface ModelSnapshot {
1630
- generation: number | null;
1631
- tableCount: number;
1632
- entityCount: number;
1633
- removedEntities: number[];
1634
- lastUpdate: unknown;
1635
- errors: unknown[];
1636
- entities: EntityDebugSummary[];
1637
- /** Present only when the snapshot was taken with `includeBlocks`. */
1638
- blocks?: BlockSummary[];
1639
- transforms: TransformSummary[];
1640
- players: PlayerSummary[];
1641
- shipControls: ShipControlSummary[];
1642
- machines: MachineSummary;
1643
- tables: unknown[];
1644
- }
1645
-
1646
- export interface TransformSummary {
1647
- entity: number;
1648
- x: number | null;
1649
- y: number | null;
1650
- rot: number | null;
1651
- flags: unknown[];
1652
- }
1653
-
1654
- export interface ItemHolderSummary {
1655
- entity: number;
1656
- itemId: number | null;
1657
- itemName: string | null;
1658
- count: number | null;
1659
- }
1660
-
1661
- export interface ItemCrateSummary {
1662
- entity: number;
1663
- itemId: number | null;
1664
- itemName: string | null;
1665
- count: number | null;
1666
- width: number | null;
1667
- height: number | null;
1668
- itemState: ModelRecord;
1669
- sizeState: ModelRecord;
1670
- }
1671
-
1672
- export interface ExpandoBoxSummary {
1673
- entity: number;
1674
- itemId: number | null;
1675
- itemName: string | null;
1676
- count: number | null;
1677
- width: number | null;
1678
- height: number | null;
1679
- rawWidth: number | null;
1680
- rawHeight: number | null;
1681
- itemState: ModelRecord;
1682
- sizeState: ModelRecord;
1683
- }
1684
-
1685
- export interface HoverOutlineSummary {
1686
- entity: number;
1687
- width: number | null;
1688
- height: number | null;
1689
- rawWidth: number | null;
1690
- rawHeight: number | null;
1691
- state: ModelRecord;
1692
- }
1693
-
1694
- export interface MapMarkerSummary {
1695
- entity: number;
1696
- kind: string;
1697
- title: string | null;
1698
- key: string | null;
1699
- description: string | null;
1700
- color: number | null;
1701
- colorCss: string | null;
1702
- accentColor: number | null;
1703
- accentColorCss: string | null;
1704
- width: number | null;
1705
- height: number | null;
1706
- labelState: ModelRecord;
1707
- zoneState: ModelRecord;
1708
- }
1709
-
1710
- export interface DockingSpringSummary {
1711
- entity: number;
1712
- id: number | null;
1713
- width: number;
1714
- height: number;
1715
- state: ModelRecord;
1716
- }
1717
-
1718
- export interface HugeThrusterSummary {
1719
- entity: number;
1720
- width: number;
1721
- height: number;
1722
- state: ModelRecord;
1723
- }
1724
-
1725
- export interface ShipSizeSummary {
1726
- entity: number;
1727
- width: number | null;
1728
- height: number | null;
1729
- rawWidth: number | null;
1730
- rawHeight: number | null;
1731
- state: ModelRecord;
1732
- }
1733
-
1734
- export interface FluidTankSummary {
1735
- entity: number;
1736
- amount: number | null;
1737
- state: ModelRecord;
1738
- }
1739
-
1740
- export interface HealthSummary {
1741
- entity: number;
1742
- hp: number | null;
1743
- maxHp: number | null;
1744
- ratio: number | null;
1745
- state: ModelRecord;
1746
- }
1747
-
1748
- export interface BotSummary {
1749
- entity: number;
1750
- className: string;
1751
- identifier: string;
1752
- typeA: number | null;
1753
- typeB: number | null;
1754
- }
1755
-
1756
- export interface FabricatorSummary {
1757
- entity: number;
1758
- type: FabricatorType | null;
1759
- typeIndex: number | null;
1760
- typeIndex: number | null;
1761
- state: ModelRecord;
1762
- rows: { itemId: number | null; itemName: string | null; count: number | null }[];
1763
- progress: number | null;
1764
- progressRaw: number | null;
1765
- active: boolean;
1766
- craftingItemId: number | null;
1767
- craftingItemName: string | null;
1768
- craftingCount: number | null;
1769
- }
1770
-
1771
- export interface CannonSummary {
1772
- entity: number;
1773
- typeId: number;
1774
- typeName: string | null;
1775
- ammoItemId: number | null;
1776
- ammoName: string | null;
1777
- ammoCount: number;
1778
- aim: number | null;
1779
- recoil: number | null;
1780
- recoil2: number | null;
1781
- recoils: [number | null, number | null];
1782
- charge: number | null;
1783
- charged: boolean | null;
1784
- spin: number | null;
1785
- coolingCellCount: number;
1786
- state: ModelRecord;
1787
- }
1788
-
1789
- export interface ThrusterSummary {
1790
- entity: number;
1791
- typeId: number;
1792
- typeName: string | null;
1793
- facing: number;
1794
- facingName: "bottom" | "top" | "right" | "left" | "bottom-right" | "bottom-left" | "top-right" | "top-left" | null;
1795
- fuel: number | null;
1796
- state: ModelRecord;
1797
- }
1798
-
1799
- export interface LoaderSummary {
1800
- entity: number;
1801
- pick: number | null;
1802
- pickName: string | null;
1803
- place: number | null;
1804
- placeName: string | null;
1805
- priority: number | null;
1806
- priorityName: string | null;
1807
- requireOutput: boolean | null;
1808
- waitForStack: boolean | null;
1809
- stack: number | null;
1810
- cycle: number | null;
1811
- filterMode: number | null;
1812
- filterModeName: string | null;
1813
- filterSlots: (number | null)[] | null;
1814
- heldItemId: number | null;
1815
- heldItemName: string | null;
1816
- heldCount: number | null;
1817
- active: boolean;
1818
- progress: number | null;
1819
- state: ModelRecord;
1820
- filterState: ModelRecord;
1821
- filterSlotsState: ModelRecord;
1822
- }
1823
-
1824
- export interface CargoHatchSummary {
1825
- entity: number;
1826
- typeId: number;
1827
- typeName: string | null;
1828
- filterMode: number;
1829
- filterModeName: string | null;
1830
- filterSlots: (number | null)[] | null;
1831
- openFraction: number | null;
1832
- filterState: ModelRecord;
1833
- filterSlotsState: ModelRecord;
1834
- }
1835
-
1836
- export interface LauncherSummary {
1837
- entity: number;
1838
- angleRaw: number | null;
1839
- angleRadians: number | null;
1840
- angleDegrees: number | null;
1841
- state: ModelRecord;
1842
- }
1843
-
1844
- export interface NavigationUnitSummary {
1845
- entity: number;
1846
- destination: number;
1847
- destinationName: string | null;
1848
- autoWarpOnShieldFailure: boolean | null;
1849
- autoWarpOnNoCaptains: boolean | null;
1850
- state: ModelRecord;
1851
- }
1852
-
1853
- export interface PusherSummary {
1854
- entity: number;
1855
- mode: number;
1856
- modeName: string | null;
1857
- filteredMode: number;
1858
- filteredModeName: string | null;
1859
- angle: number | null;
1860
- speed: number;
1861
- length: number;
1862
- filterInventory: boolean;
1863
- filterSlots: (number | null)[] | null;
1864
- state: ModelRecord;
1865
- filterSlotsState: ModelRecord;
1866
- }
1867
-
1868
- export interface PusherBeamSummary {
1869
- entity: number;
1870
- active: boolean;
1871
- mode: number;
1872
- modeName: string | null;
1873
- lengthRaw: number;
1874
- length: number;
1875
- state: ModelRecord;
1876
- }
1877
-
1878
- export interface CommsStationSummary {
1879
- entity: number;
1880
- typeId: number;
1881
- typeName: string | null;
1882
- charges: number | null;
1883
- maxCharges: number;
1884
- chargeRatio: number | null;
1885
- occupied: boolean;
1886
- state: ModelRecord;
1887
- }
1888
-
1889
- export interface SignSummary {
1890
- entity: number;
1891
- text: string;
1892
- displayMode: number;
1893
- displayModeName: string | null;
1894
- state: ModelRecord;
1895
- }
1896
-
1897
- export interface SpawnPointSummary {
1898
- entity: number;
1899
- rank: number;
1900
- rankName: string | null;
1901
- state: ModelRecord;
1902
- }
1903
-
1904
- export interface DoorSummary {
1905
- entity: number;
1906
- rank: number;
1907
- rankName: string | null;
1908
- open: boolean;
1909
- rankState: ModelRecord;
1910
- state: ModelRecord;
1911
- }
1912
-
1913
- export interface ShieldProjectorSummary {
1914
- entity: number;
1915
- active: boolean;
1916
- state: ModelRecord;
1917
- }
1918
-
1919
- export interface ShieldGeneratorSummary {
1920
- entity: number;
1921
- charge: number;
1922
- maxCharge: number;
1923
- chargeRatio: number | null;
1924
- efficiencyPercent: number | null;
1925
- efficiency: number | null;
1926
- storedItemId: number | null;
1927
- storedItemName: string | null;
1928
- storedItemCount: number | null;
1929
- hasShieldCore: boolean;
1930
- boostState: number;
1931
- boostStateName: string | null;
1932
- boostTimer: number;
1933
- boostActive: boolean;
1934
- puzzleSeed: number | null;
1935
- puzzleSolution: string | null;
1936
- state: ModelRecord;
1937
- itemState: ModelRecord;
1938
- boostStateRaw: ModelRecord;
1939
- }
1940
-
1941
- export interface GeneratorMazeCellWalls {
1942
- up: boolean;
1943
- down: boolean;
1944
- left: boolean;
1945
- right: boolean;
1946
- }
1947
-
1948
- export interface GeneratorMazeCell {
1949
- x: number;
1950
- y: number;
1951
- value: number;
1952
- hex: string;
1953
- digit: number;
1954
- walls: GeneratorMazeCellWalls;
1955
- backtrackDirection: number;
1956
- marker: number;
1957
- }
1958
-
1959
- export interface GeneratorMaze {
1960
- seed: number;
1961
- width: number;
1962
- height: number;
1963
- cells: GeneratorMazeCell[];
1964
- rows: GeneratorMazeCell[][];
1965
- solution: string;
1966
- }
1967
-
1968
- export interface HelmSummary {
1969
- entity: number;
1970
- typeId: number;
1971
- typeName: string | null;
1972
- occupied: boolean;
1973
- }
1974
-
1975
- export interface PlayerSummary {
1976
- entity: number;
1977
- name: string | null;
1978
- heldItemId: number | null;
1979
- heldItemName: string | null;
1980
- repairTargetDistance: number | null;
1981
- repairTargetAngle: number | null;
1982
- shipRank: PlayerShipRank | null;
1983
- patronTier: "bronze" | "silver" | "gold" | "plat" | "flux" | null;
1984
- isDeveloper: boolean;
1985
- isPatron: boolean;
1986
- piloting: boolean;
1987
- muted: boolean;
1988
- actionPreview: PlayerActionPreviewSummary | null;
1989
- state: ModelRecord;
1990
- }
1991
-
1992
- export interface PlayerActionPreviewSummary {
1993
- entity: number;
1994
- active: boolean;
1995
- x: number | null;
1996
- y: number | null;
1997
- width: number | null;
1998
- height: number | null;
1999
- progress: number | null;
2000
- color: number | null;
2001
- colorCss: string | null;
2002
- actionName: "place" | "break" | "blueprint" | null;
2003
- blueprintId: number | null;
2004
- blueprintItems: BlueprintPreviewSummary[];
2005
- state: ModelRecord;
2006
- }
2007
-
2008
- export interface BlueprintPreviewSummary {
2009
- entity: number;
2010
- itemId: number;
2011
- itemName: string | null;
2012
- bits: number;
2013
- rawBits: number | null;
2014
- placementOffsets: number[];
2015
- placementCount: number;
2016
- placements: {
2017
- offset: number;
2018
- x: number | null;
2019
- y: number | null;
2020
- itemId: number;
2021
- itemName: string | null;
2022
- }[];
2023
- x: number | null;
2024
- y: number | null;
2025
- rot: number | null;
2026
- state: ModelRecord;
2027
- }
2028
-
2029
- export interface ShipControlSummary {
2030
- entity: number;
2031
- name: string | null;
2032
- hexCode: string | null;
2033
- shipWorldId: number | null;
2034
- color: number | null;
2035
- colorCss: string | null;
2036
- thrustX: number | null;
2037
- thrustY: number | null;
2038
- value52: number | null;
2039
- value84: number | null;
2040
- value96: number | null;
2041
- shield: ShipShieldSummary | null;
2042
- warp: ShipWarpSummary | null;
2043
- state: ModelRecord;
2044
- }
2045
-
2046
- export interface ShipReadSummary {
2047
- entity: number;
2048
- name: string | null;
2049
- hexCode: string | null;
2050
- color: number | null;
2051
- colorCss: string | null;
2052
- position: { x: number | null; y: number | null; rot: number | null } | null;
2053
- distance: number | null;
2054
- footprint: EntitySummary["footprint"];
2055
- label: string;
2056
- kind: string[];
2057
- thrust: { x: number | null; y: number | null };
2058
- shield: ShipShieldSummary | null;
2059
- warp: ShipWarpSummary | null;
2060
- worldId: number | null;
2061
- hasWorldData: boolean;
2062
- world: WorldSnapshot | null;
2063
- control: ShipControlSummary;
2064
- entitySummary: EntityDebugSummary;
2065
- }
2066
-
2067
- export interface ShipShieldSummary {
2068
- maxHp: number | null;
2069
- baseHp: number | null;
2070
- activeTankHp: number | null;
2071
- inactiveTankHp: number | null;
2072
- tankValues: number[];
2073
- }
2074
-
2075
- export interface ShipWarpSummary {
2076
- active: boolean;
2077
- ticks: number;
2078
- elapsedSeconds: number;
2079
- durationSeconds: number;
2080
- remainingSeconds: number;
2081
- }
2082
-
2083
- export interface MachineSummary {
2084
- itemHolders: ItemHolderSummary[];
2085
- health: HealthSummary[];
2086
- fabricators: FabricatorSummary[];
2087
- cargoEjectors: CargoEjectorSummary[];
2088
- cannons: CannonSummary[];
2089
- thrusters: ThrusterSummary[];
2090
- pushers: PusherSummary[];
2091
- pusherBeams: PusherBeamSummary[];
2092
- launchers: LauncherSummary[];
2093
- loaders: LoaderSummary[];
2094
- cargoHatches: CargoHatchSummary[];
2095
- navigationUnits: NavigationUnitSummary[];
2096
- commsStations: CommsStationSummary[];
2097
- fluidTanks: FluidTankSummary[];
2098
- shieldGenerators: ShieldGeneratorSummary[];
2099
- shieldProjectors: ShieldProjectorSummary[];
2100
- helms: HelmSummary[];
2101
- signs: SignSummary[];
2102
- spawnPoints: SpawnPointSummary[];
2103
- doors: DoorSummary[];
2104
- expandoBoxes: ExpandoBoxSummary[];
2105
- }
2106
-
2107
- export function decodeMsgpack(bytes: Uint8Array | ArrayBuffer | number[]): unknown;
2108
-
2109
- export function encodeMsgpack(value: unknown): Uint8Array;
2110
-
2111
- export function buildCommsMessage(message?: string): CommsMessage;
2112
-
2113
- export function normalizeCommsEvent(event: unknown): CommsEvent;
2114
-
2115
- export function flattenRichText(value: unknown): string;
2116
-
2117
- export function buildSignedCommandPacket(command: Command, sessionId: number): Uint8Array;
2118
-
2119
- export function buildInventoryDragCommand(source: number, target: number, split?: boolean): InventoryDragCommand;
2120
-
2121
- export function buildEquipItemCommand(source: number, slot: EquipmentSlot, split?: boolean): InventoryDragCommand;
2122
-
2123
- export function buildUnequipItemCommand(slot: EquipmentSlot, target?: number, split?: boolean): InventoryDragCommand;
2124
-
2125
- export function normalizeEquipmentSlot(slot: EquipmentSlot): 16 | 17 | 18 | 19 | 20 | 21;
2126
-
2127
- export function equipmentSlotName(slot: number): "head" | "face" | "body" | "back" | "hands" | "feet" | null;
2128
-
2129
- export function normalizeInventoryEvent(event: unknown): InventoryState;
2130
-
2131
- export function buildShipManagementMessage(act: string, arg?: unknown, extra?: Record<string, unknown> | null): ShipManagementMessage;
2132
-
2133
- export function buildShipPrivacyMessage(privacy: ShipPrivacy): ShipManagementMessage;
2134
-
2135
- export function buildStarterRecoveryMessage(itemId: number): ShipManagementMessage;
2136
-
2137
- export function buildPlayerListMessage(): ShipManagementMessage;
2138
-
2139
- export function buildInviteResetMessage(): ShipManagementMessage;
2140
-
2141
- export function buildSetPlayerRankMessage(refId: number, rank: ShipPlayerRank): ShipManagementMessage;
2142
-
2143
- export function buildKickPlayerMessage(refId: number): ShipManagementMessage;
2144
-
2145
- export function buildBanPlayerMessage(refId: number): ShipManagementMessage;
2146
-
2147
- export function buildDemoteSelfMessage(): ShipManagementMessage;
2148
-
2149
- export function normalizePrivacy(privacy: ShipPrivacy): 0 | 1;
2150
-
2151
- export function normalizePlayerRank(rank: ShipPlayerRank): 0 | 1 | 3;
2152
-
2153
- export function normalizeShipConfig(event: unknown): ShipConfig;
2154
-
2155
- export function normalizeCaptainSubrank(event: unknown): CaptainSubrank;
2156
-
2157
- export function normalizeShipPlayerList(event: unknown, previous?: ShipPlayerList | null, currentCaptainSubrank?: CaptainSubrank | null): ShipPlayerList;
2158
-
2159
- export function buildSignTextMessage(text?: string, mode?: SignDisplayMode): SignTextMessage;
2160
-
2161
- export function normalizeSignDisplayMode(mode?: SignDisplayMode): 0 | 1 | 2;
2162
-
2163
- export function signDisplayModeName(mode: number): SignDisplayMode | null;
2164
-
2165
- export function buildNavigationUnitConfigData(entity: number, config: NavigationUnitConfig & {
2166
- destination: number
2167
- }): Uint8Array;
2168
-
2169
- export function buildNavigationUnitClipboardConfigData(config: NavigationUnitConfig & {
2170
- destination: number
2171
- }): Uint8Array;
2172
-
2173
- export function buildNavigationUnitPasteConfigData(entity: number, config: NavigationUnitConfig & {
2174
- destination: number
2175
- }): Uint8Array;
2176
-
2177
- export function buildGeneratorMazePuzzleData(entity: number, solution: string | number): Uint8Array;
2178
-
2179
- export function buildCargoHatchFilterConfigData(entity: number, filterMode?: LoaderFilterMode): Uint8Array;
2180
-
2181
- export function buildCargoHatchFilterItemsData(entity: number, filterSlots?: Array<number | null | undefined>): Uint8Array;
2182
-
2183
- export function buildCargoHatchFullConfigData(entity: number, config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): Uint8Array;
2184
-
2185
- export function buildCargoHatchCopyConfigData(config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): Uint8Array;
2186
-
2187
- export function buildClipboardConfigData(target: ClipboardTarget, commandName: string, values?: Iterable<number>): Uint8Array;
2188
-
2189
- export function buildClipboardFixedAngleData(target: ClipboardTarget, direction: FixedAngleDirection): Uint8Array;
2190
-
2191
- export function buildGeneratorClipboardDirectionData(direction: FixedAngleDirection): Uint8Array;
2192
-
2193
- export function buildCargoEjectorDirectionData(entity: number, direction: FixedAngleDirection): Uint8Array;
2194
-
2195
- export function buildCargoEjectorPasteConfigData(entity: number, direction: FixedAngleDirection): Uint8Array;
2196
-
2197
- export function buildCargoEjectorCopyConfigData(direction: FixedAngleDirection): Uint8Array;
2198
-
2199
- export function buildCargoEjectorClipboardDirectionData(direction: FixedAngleDirection): Uint8Array;
2200
-
2201
- export function buildExpandoClipboardAngleData(angle: number): Uint8Array;
2202
-
2203
- export function buildLoaderClipboardConfigData(config?: LoaderConfig): Uint8Array;
2204
-
2205
- export function buildLoaderConfigData(entity: number, config?: LoaderConfig): Uint8Array;
2206
-
2207
- export function buildLoaderCopyConfigData(config?: LoaderFullConfig): Uint8Array;
2208
-
2209
- export function buildLoaderFilterConfigData(entity: number, filterMode?: LoaderFilterMode): Uint8Array;
2210
-
2211
- export function buildLoaderFilterItemsData(entity: number, filterSlots?: Array<number | null | undefined>): Uint8Array;
2212
-
2213
- export function buildLoaderFullConfigData(entity: number, config?: LoaderFullConfig): Uint8Array;
2214
-
2215
- export function buildPusherConfigData(entity: number, config?: PusherConfig): Uint8Array;
2216
-
2217
- export function buildPusherFilterItemsData(entity: number, filterSlots?: Array<number | null | undefined>): Uint8Array;
2218
-
2219
- export function generateGeneratorMaze(seed: number): GeneratorMaze;
2220
-
2221
- export function solveGeneratorMazeSeed(seed: number): string;
2222
-
2223
- export function maybeSolveGeneratorMazeSeed(seed: number | null | undefined): string | null;
2224
-
2225
- export function decryptPayload(wireBytes: Uint8Array | ArrayBuffer | number[], worldId: number, seed: number): Uint8Array;
2226
-
2227
- export function decompressLz4Frame(bytes: Uint8Array | ArrayBuffer | number[]): Uint8Array;
2228
-
2229
- export function decodeModelData(bytes: Uint8Array | ArrayBuffer | number[]): unknown;
2230
-
2231
- export function createSession(noticeVersion?: number | null): Promise<Session>;
2232
-
2233
- export function createAnonSession(anonKey?: string | null, noticeVersion?: number | null, baseUrl?: string): Promise<AnonSession>;
2234
-
2235
- export function createAnonToken(noticeVersion?: number | null, baseUrl?: string): Promise<string>;
2236
-
2237
- export function fetchNoticeVersion(): Promise<number>;
2238
-
2239
- export function fetchGameVersion(): Promise<string>;
2240
-
2241
- export function fetchServers(): Promise<Server[]>;
2242
-
2243
- export function fetchShips(session: Session, server: ServerRef): Promise<Ship[]>;
2244
-
2245
- export function fetchShipList(session: Session, server: ServerRef): Promise<ShipList>;
2246
-
2247
- export function joinShip(server: ServerRef, ship?: ShipRef, session?: Session | null): Promise<DredlessClient>;
2248
-
2249
- export function startShip(server: ServerRef, ship?: ShipRef, session?: Session | null): Promise<DredlessClient>;
2250
-
2251
- export function startNewShip(server: ServerRef, name?: string, color?: string, session?: Session | null): Promise<DredlessClient>;
2252
-
2253
- export function joinInvite(server: ServerRef, code: string, session?: Session | null): Promise<DredlessClient>;
2254
-
2255
- export function buildBlueprintPlacementMessage(placement: BlueprintPlacement): BlueprintPlacementMessage;
2256
-
2257
- export interface DredlessNamespace {
2258
- Session: typeof Session;
2259
- AnonSession: typeof AnonSession;
2260
- Connection: typeof Connection;
2261
- DredlessClient: typeof DredlessClient;
2262
- createSession: typeof createSession;
2263
- createAnonSession: typeof createAnonSession;
2264
- createAnonToken: typeof createAnonToken;
2265
- fetchNoticeVersion: typeof fetchNoticeVersion;
2266
- fetchGameVersion: typeof fetchGameVersion;
2267
- fetchServers: typeof fetchServers;
2268
- fetchShips: typeof fetchShips;
2269
- fetchShipList: typeof fetchShipList;
2270
- joinShip: typeof joinShip;
2271
- startShip: typeof startShip;
2272
- startNewShip: typeof startNewShip;
2273
- joinInvite: typeof joinInvite;
2274
- }
2275
-
2276
- export const Dredless: DredlessNamespace;
2277
- export default Dredless;
1
+ export interface Server {
2
+ index: number;
3
+ domain: string;
4
+ description: string;
5
+ playerCount: number;
6
+ maxPlayerCount: number;
7
+ ping: number | null;
8
+ }
9
+
10
+ export interface Ship {
11
+ id: number | null;
12
+ hexCode: string | null;
13
+ name: string;
14
+ iconUrl: string | null;
15
+ playerCount: number;
16
+ owned: boolean;
17
+ saved: boolean;
18
+ color: string;
19
+ time: number | null;
20
+ }
21
+
22
+ export interface ShipList {
23
+ playerCount?: number;
24
+ maxPlayerCount?: number;
25
+ isMuted?: boolean;
26
+ ships: Ship[];
27
+ }
28
+
29
+ export type ShipSpec =
30
+ | { type: "join_or_load"; id: number | string }
31
+ | { type: "new"; name?: string | null; color?: string | null }
32
+ | { type: "invite"; code: string };
33
+
34
+ export type ServerRef = number | Server;
35
+ export type ShipRef = number | string | Ship | ShipSpec | null;
36
+ export type ShipPrivacy = 0 | 1 | boolean | "public" | "private";
37
+ export type ShipPlayerRank = 0 | 1 | 3 | "guest" | "crew" | "captain";
38
+ export type PlayerShipRank = "guest" | "crew" | "crew-invite-pending-deprecated" | "captain" | "banned";
39
+ export const FabricatorType: {
40
+ readonly Starter: "starter";
41
+ readonly Munitions: "munitions";
42
+ readonly Engineering: "engineering";
43
+ readonly Equipment: "equipment";
44
+ };
45
+ export type FabricatorType = typeof FabricatorType[keyof typeof FabricatorType];
46
+ export const SignDisplayMode: {
47
+ readonly Always: "always";
48
+ readonly WhenNear: "when-near";
49
+ readonly OnHover: "on-hover";
50
+ };
51
+ export type SignDisplayMode = typeof SignDisplayMode[keyof typeof SignDisplayMode];
52
+ export const EquipmentSlot: {
53
+ readonly Head: "head";
54
+ readonly Face: "face";
55
+ readonly Body: "body";
56
+ readonly Back: "back";
57
+ readonly Hands: "hands";
58
+ readonly Feet: "feet";
59
+ };
60
+ export type EquipmentSlot = typeof EquipmentSlot[keyof typeof EquipmentSlot];
61
+ export type InventoryArea = "all" | "hotbar" | "equipment";
62
+ export type InventorySlotRef = number | EquipmentSlot | InventorySlotHandle | InventorySlotSnapshot;
63
+ export type ReadWorldScope = "ship" | "current" | "overworld" | number;
64
+ export type EntityRef = number | EntityHandle | EntitySummary | EntityDebugSummary;
65
+
66
+ export interface ShipConfig {
67
+ privacy: number | null;
68
+ privacyName: "public" | "private" | null;
69
+ inviteKey: string | null;
70
+ teamId: number | null;
71
+ patronPerks: unknown[];
72
+ }
73
+
74
+ export interface CaptainSubrank {
75
+ subrank: number | null;
76
+ enableCheats: boolean;
77
+ }
78
+
79
+ export interface CurrentPlayerRank {
80
+ shipRank: PlayerShipRank | null;
81
+ subrank: number | null;
82
+ isCaptain: boolean;
83
+ patronTier: "bronze" | "silver" | "gold" | "plat" | "flux" | null;
84
+ }
85
+
86
+ export interface PlayerListEntry {
87
+ refId: number | null;
88
+ discrim: string | null;
89
+ discrimColor: number | null;
90
+ teamRank: number | null;
91
+ captainRank: number | null;
92
+ isCaptain: boolean;
93
+ isShipOwner: boolean;
94
+ canBeManaged: boolean;
95
+ time: number | null;
96
+ items: unknown[];
97
+ aliasDiscrims: unknown[];
98
+ extraAliasCount: number;
99
+ onlineCount: number | null;
100
+ }
101
+
102
+ export interface ShipPlayerList {
103
+ ownerCaptainRank: number | null;
104
+ shipOwners: PlayerListEntry[];
105
+ players: PlayerListEntry[];
106
+ changes: PlayerListEntry[];
107
+ removedPlayers: number[];
108
+ }
109
+
110
+ export interface ShipReadOptions {
111
+ includeWorld?: boolean;
112
+ includeTiles?: boolean;
113
+ /** Include the per-cell block index. Off by default: building and sorting it is the most expensive part of a snapshot. */
114
+ includeBlocks?: boolean;
115
+ includeModel?: boolean;
116
+ sort?: "distance" | null;
117
+ }
118
+
119
+ export interface DragPayload {
120
+ source: number;
121
+ target: number;
122
+ split?: boolean;
123
+ }
124
+
125
+ export interface BlueprintPlacement {
126
+ x: number;
127
+ y: number;
128
+ width?: number;
129
+ height?: number;
130
+ w?: number;
131
+ h?: number;
132
+ source: string;
133
+ }
134
+
135
+ export interface BlueprintPlacementMessage {
136
+ type: 9;
137
+ x: number;
138
+ y: number;
139
+ w: number;
140
+ h: number;
141
+ source: string;
142
+ }
143
+
144
+ export interface Command {
145
+ type?: number;
146
+ n?: number | null;
147
+ x?: number;
148
+ y?: number;
149
+ mx?: number;
150
+ my?: number;
151
+ vx?: number;
152
+ vy?: number;
153
+ jump?: boolean;
154
+ jump_held?: boolean;
155
+ drop?: boolean;
156
+ act1?: boolean;
157
+ act1_held?: boolean;
158
+ exit?: boolean;
159
+ act2?: boolean;
160
+ act_alt?: boolean;
161
+ act_alt_held?: boolean;
162
+ wrench_mode?: number;
163
+ turret_mode?: number;
164
+ scr_w?: number;
165
+ scr_h?: number;
166
+ motion?: number;
167
+ focus_ent?: number | null;
168
+ config_ent?: number | null;
169
+ tip_select?: number | null;
170
+ inv_slot?: number;
171
+ blur?: boolean;
172
+ drag?: DragPayload | null;
173
+ }
174
+
175
+ export interface ShipManagementMessage {
176
+ type: 4;
177
+ act: string;
178
+ arg: unknown;
179
+ rank?: unknown;
180
+ }
181
+
182
+ export interface SignTextMessage {
183
+ type: 5;
184
+ cmd: "sign_text";
185
+ args: [string, 0 | 1 | 2];
186
+ }
187
+
188
+ export interface CommsMessage {
189
+ type: 3;
190
+ msg: string;
191
+ }
192
+
193
+ export interface NormalizedCommsMessage {
194
+ raw: unknown;
195
+ text: string;
196
+ }
197
+
198
+ export interface CommsEvent {
199
+ type: "comms";
200
+ filter?: number;
201
+ ent_id: number | null;
202
+ entity: number | null;
203
+ msgs_text: unknown[];
204
+ rawMessages: unknown[];
205
+ messages: NormalizedCommsMessage[];
206
+ update?: boolean;
207
+ world?: number | null;
208
+ }
209
+
210
+ export interface InventoryDragCommand {
211
+ drag: {
212
+ source: number;
213
+ target: number;
214
+ split: boolean;
215
+ };
216
+ }
217
+
218
+ export const PusherMode: {
219
+ readonly Push: "push";
220
+ readonly Pull: "pull";
221
+ readonly DoNothing: "do-nothing";
222
+ };
223
+ export type PusherMode = typeof PusherMode[keyof typeof PusherMode];
224
+ export const LoaderPosition: {
225
+ readonly TopLeft: "top-left";
226
+ readonly TopMiddle: "top-middle";
227
+ readonly TopRight: "top-right";
228
+ readonly MiddleLeft: "middle-left";
229
+ readonly MiddleRight: "middle-right";
230
+ readonly BottomLeft: "bottom-left";
231
+ readonly BottomMiddle: "bottom-middle";
232
+ readonly BottomRight: "bottom-right";
233
+ };
234
+ export type LoaderPosition = typeof LoaderPosition[keyof typeof LoaderPosition];
235
+ export const LoaderFilterMode: {
236
+ readonly AllowAll: "allow-all";
237
+ readonly BlockFilter: "block-filter";
238
+ readonly AllowFilter: "allow-filter";
239
+ readonly BlockAll: "block-all";
240
+ };
241
+ export type LoaderFilterMode = typeof LoaderFilterMode[keyof typeof LoaderFilterMode];
242
+ export const LoaderPriority: {
243
+ readonly Low: "low";
244
+ readonly Normal: "normal";
245
+ readonly High: "high";
246
+ };
247
+ export type LoaderPriority = typeof LoaderPriority[keyof typeof LoaderPriority];
248
+ export type ClipboardTarget =
249
+ number
250
+ | "loader"
251
+ | "loader-config"
252
+ | "loaderConfig"
253
+ | "hatch"
254
+ | "cargo-hatch"
255
+ | "cargoHatch"
256
+ | "ejector"
257
+ | "cargo-ejector"
258
+ | "cargoEjector"
259
+ | "expando"
260
+ | "expando-box"
261
+ | "expandoBox"
262
+ | "generator"
263
+ | "shield-generator"
264
+ | "shieldGenerator"
265
+ | "navigation"
266
+ | "navigation-unit"
267
+ | "navigationUnit"
268
+ | "nav"
269
+ | "nav-unit"
270
+ | "navUnit";
271
+ export const FixedAngleDirection: {
272
+ readonly Right: "right";
273
+ readonly Up: "up";
274
+ readonly Left: "left";
275
+ readonly Down: "down";
276
+ };
277
+ export type FixedAngleDirection = typeof FixedAngleDirection[keyof typeof FixedAngleDirection];
278
+
279
+ export interface PusherConfig {
280
+ mode?: PusherMode;
281
+ filteredMode?: PusherMode;
282
+ angle?: number;
283
+ speed?: number;
284
+ filterInventory?: boolean;
285
+ length?: number;
286
+ }
287
+
288
+ export interface LoaderConfig {
289
+ pick?: LoaderPosition;
290
+ place?: LoaderPosition;
291
+ priority?: LoaderPriority;
292
+ stack?: number;
293
+ cycle?: number;
294
+ requireOutput?: boolean;
295
+ waitForStack?: boolean;
296
+ }
297
+
298
+ export interface LoaderFullConfig extends LoaderConfig {
299
+ filterMode?: LoaderFilterMode;
300
+ filterSlots?: Array<number | null | undefined>;
301
+ }
302
+
303
+ export class Session {
304
+ constructor(gameSession?: string | null, gameVersion?: string | null);
305
+
306
+ baseUrl: string;
307
+ cookies: Map<string, string>;
308
+ gameVersion: string | null;
309
+ account: Account | null;
310
+ geoServer: number | null;
311
+ upgraded: boolean;
312
+ isRegistered: boolean;
313
+ showAds: boolean;
314
+ forceTutorial: boolean;
315
+ ban: unknown;
316
+
317
+ get gameSession(): string;
318
+
319
+ get gameToken(): string;
320
+
321
+ get noticeVersion(): number | string | null;
322
+ set noticeVersion(value: number | string | null);
323
+
324
+ request(path: string, init?: RequestInit & { body?: BodyInit | Record<string, unknown> | null }): Promise<Response>;
325
+
326
+ fetchAccountStatus(): Promise<unknown>;
327
+
328
+ fetchShips(server: ServerRef): Promise<Ship[]>;
329
+
330
+ fetchShipList(server: ServerRef): Promise<ShipList>;
331
+
332
+ joinShipConnection(server: ServerRef, ship?: ShipRef): Promise<Connection>;
333
+
334
+ startShipConnection(server: ServerRef, ship?: ShipRef): Promise<Connection>;
335
+
336
+ startNewShipConnection(server: ServerRef, name?: string, color?: string): Promise<Connection>;
337
+
338
+ joinInviteConnection(server: ServerRef, code: string): Promise<Connection>;
339
+
340
+ joinShip(server: ServerRef, ship?: ShipRef): Promise<DredlessClient>;
341
+
342
+ startShip(server: ServerRef, ship?: ShipRef): Promise<DredlessClient>;
343
+
344
+ startNewShip(server: ServerRef, name?: string, color?: string): Promise<DredlessClient>;
345
+
346
+ joinInvite(server: ServerRef, code: string): Promise<DredlessClient>;
347
+
348
+ toJSON(): SessionSnapshot;
349
+ }
350
+
351
+ export class AnonSession extends Session {
352
+ constructor(gameSession?: string | null, anonKey?: string | null, gameVersion?: string | null);
353
+
354
+ get anonKey(): string;
355
+ }
356
+
357
+ export interface Account {
358
+ name: string;
359
+ color: number;
360
+ game_rank: number;
361
+ user_badges: string[];
362
+ is_registered: boolean;
363
+ }
364
+
365
+ export interface SessionSnapshot {
366
+ baseUrl: string;
367
+ gameSession: string;
368
+ gameToken: string;
369
+ gameVersion: string | null;
370
+ noticeVersion: number | string | null;
371
+ cookies: Record<string, string>;
372
+ account: Account | null;
373
+ geoServer: number | null;
374
+ upgraded: boolean;
375
+ isRegistered: boolean;
376
+ showAds: boolean;
377
+ forceTutorial: boolean;
378
+ ban: unknown;
379
+ anonKey?: string;
380
+ }
381
+
382
+ export class Connection {
383
+ constructor(session: Session, gameToken: string, netPort: number, serverId: number | Server, server?: Server | null);
384
+
385
+ session: Session;
386
+ baseUrl: string;
387
+ gameToken: string;
388
+ netPort: number;
389
+ serverId: number;
390
+ server: Server | null;
391
+
392
+ toJSON(): ConnectionSnapshot;
393
+ }
394
+
395
+ export interface ConnectionSnapshot {
396
+ baseUrl: string;
397
+ gameToken: string;
398
+ netPort: number;
399
+ serverId: number;
400
+ server: Server | null;
401
+ session: SessionSnapshot;
402
+ }
403
+
404
+ export type WebSocketAttachMode = "observe" | "bootstrap" | "readonly";
405
+
406
+ export interface AttachWebSocketOptions {
407
+ mode?: WebSocketAttachMode;
408
+ connected?: boolean | null;
409
+ ready?: boolean;
410
+ sid?: number | null;
411
+ baseUrl?: string | null;
412
+ session?: Session | null;
413
+ serverId?: number | null;
414
+ server?: Server | null;
415
+ netPort?: number | null;
416
+ gameToken?: string;
417
+ }
418
+
419
+ export interface DredlessClientOptions {
420
+ connect?: boolean;
421
+ /**
422
+ * Retained entries in `packets`. Default 200. Pass 0 to disable the buffer or
423
+ * Infinity for unbounded capture.
424
+ */
425
+ packetHistory?: number;
426
+ /** Retained entries in each `WorldState.events`. Default 200. */
427
+ eventHistory?: number;
428
+ /** Retained entries in each `WorldState.modelPackets`. Default 100. */
429
+ modelPacketHistory?: number;
430
+ /** Retained entries in each `WorldState.chunks`. Default 64. */
431
+ chunkHistory?: number;
432
+ }
433
+
434
+ export class DredlessClient {
435
+ constructor(connection: Connection, options?: DredlessClientOptions);
436
+
437
+ static attachWebSocket(websocket: unknown, options?: AttachWebSocketOptions): DredlessClient;
438
+
439
+ connection: Connection | null;
440
+ session: Session | null;
441
+ baseUrl: string | null;
442
+ attachMode: WebSocketAttachMode | null;
443
+ attached: boolean;
444
+ serverId: number | null;
445
+ server: Server | null;
446
+ netPort: number | null;
447
+ gameToken: string;
448
+ ws: unknown;
449
+ sid: number | null;
450
+ connected: boolean;
451
+ ready: boolean;
452
+ packetCount: number;
453
+ lastPacket: unknown;
454
+ net: ClientNetDomain;
455
+ debug: ClientDebugDomain;
456
+ player: PlayerDomain;
457
+ inventory: InventoryDomain;
458
+ management: ShipManagementDomain;
459
+ readyPromise: Promise<this>;
460
+
461
+ whenReady(): Promise<this>;
462
+
463
+ close(code?: number, reason?: string): this;
464
+
465
+ disconnect(code?: number, reason?: string): this;
466
+
467
+ currentShip(): ShipDomain | null;
468
+
469
+ ship(): ShipDomain | null;
470
+
471
+ currentPlayerEntity(): EntityHandle | null;
472
+
473
+ overworld(): OverworldDomain | null;
474
+
475
+ world(id: number): WorldDomain | null;
476
+
477
+ shipWorld(options?: {
478
+ includeTiles?: boolean;
479
+ includeModel?: boolean;
480
+ includeBlocks?: boolean
481
+ }): WorldSnapshot | null;
482
+
483
+ state(options?: { includeTiles?: boolean; includeModel?: boolean; includeBlocks?: boolean }): ClientSnapshot;
484
+
485
+ entities(scope?: number | string): EntitySnapshot[];
486
+
487
+ entity(entityId: number, scope?: number | string): EntitySnapshot | null;
488
+
489
+ on(type: string, callback: (...args: unknown[]) => void): this;
490
+
491
+ off(type: string, callback: (...args: unknown[]) => void): this;
492
+
493
+ once(type: string, callback: (...args: unknown[]) => void): this;
494
+ }
495
+
496
+ export interface ClientNetDomain {
497
+ connected: boolean;
498
+ ready: boolean;
499
+ sid: number | null;
500
+ packetCount: number;
501
+ lastPacket: unknown;
502
+
503
+ send(command?: Command): DredlessClient;
504
+
505
+ sendMessage(message: unknown, options?: { afterReady?: boolean }): DredlessClient;
506
+
507
+ sendRaw(message: unknown, options?: { afterReady?: boolean }): DredlessClient;
508
+
509
+ sendEntityCommand(cmd: string, args?: unknown[]): DredlessClient;
510
+
511
+ sendUiConfig(data: unknown): DredlessClient;
512
+
513
+ sendBlueprintPlacement(placement: BlueprintPlacement): DredlessClient;
514
+
515
+ setOutfit(outfit: unknown): DredlessClient;
516
+ }
517
+
518
+ export interface ClientDebugDomain {
519
+ packets(): unknown[];
520
+
521
+ decodeErrors(): unknown[];
522
+
523
+ worldStore(): WorldStore;
524
+
525
+ modelTable(worldId: number, tableId: number): Map<number, ModelRecord>;
526
+
527
+ modelRecord(worldId: number, tableId: number, entityId: number): ModelRecord | null;
528
+
529
+ entities(scope?: ReadWorldScope): EntityDebugSummary[];
530
+
531
+ entity(scope: ReadWorldScope, entity: EntityRef): EntityDebugSummary | null;
532
+
533
+ puiPanels(): PuiEvent[];
534
+
535
+ commsPanels(): CommsEvent[];
536
+ }
537
+
538
+ export interface PlayerDomain {
539
+ current(): PlayerSummary | null;
540
+
541
+ entity(): EntityHandle | null;
542
+
543
+ name(): string | null;
544
+
545
+ rank(): CurrentPlayerRank;
546
+
547
+ move(vector?: { x?: number; y?: number }, command?: Command): DredlessClient;
548
+
549
+ aim(point?: { x?: number; y?: number; mx?: number; my?: number }, command?: Command): DredlessClient;
550
+
551
+ action(flags?: Command, command?: Command): DredlessClient;
552
+
553
+ useEntity(entity: EntityRef, options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
554
+
555
+ useHeldItem(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
556
+
557
+ placeHeldItem(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
558
+
559
+ placeBlueprint(placement: BlueprintPlacement, options?: {
560
+ invSlot?: number;
561
+ hold?: boolean;
562
+ mx?: number;
563
+ my?: number
564
+ }, command?: Command): DredlessClient;
565
+
566
+ rotateHeldItem(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
567
+
568
+ selectSlot(invSlot?: number, command?: Command): DredlessClient;
569
+
570
+ inputSettings(): CurrentInputSettings;
571
+
572
+ setInputSettings(settings?: InputSettings, options?: { send?: boolean }): DredlessClient;
573
+
574
+ setView(width: number, height: number, options?: { send?: boolean }): DredlessClient;
575
+
576
+ setScreenSize(width: number, height: number, options?: { send?: boolean }): DredlessClient;
577
+
578
+ setWrenchMode(mode: WrenchMode, options?: { send?: boolean }): DredlessClient;
579
+
580
+ setTurretMode(mode: TurretMode, options?: { send?: boolean }): DredlessClient;
581
+ }
582
+
583
+ export interface ShipManagementDomain {
584
+ requestPlayerList(): DredlessClient;
585
+
586
+ resetInvite(): DredlessClient;
587
+
588
+ setPrivacy(privacy: ShipPrivacy): DredlessClient;
589
+
590
+ recoverStarterItem(itemId: number): DredlessClient;
591
+
592
+ setPlayerRank(refId: number, rank: ShipPlayerRank): DredlessClient;
593
+
594
+ kickPlayer(refId: number): DredlessClient;
595
+
596
+ banPlayer(refId: number): DredlessClient;
597
+
598
+ demoteSelf(): DredlessClient;
599
+
600
+ config(): ShipConfig | null;
601
+
602
+ hasCheats(): boolean;
603
+
604
+ playerList(): ShipPlayerList | null;
605
+ }
606
+
607
+ export interface InventoryDomain {
608
+ state(): InventoryState | null;
609
+
610
+ hotbarSize(): number;
611
+
612
+ allSlots(): InventorySlotHandle[];
613
+
614
+ slot(ref: InventorySlotRef): InventorySlotHandle;
615
+
616
+ hotbarSlots(): InventorySlotHandle[];
617
+
618
+ equipmentSlots(): {
619
+ head: InventorySlotHandle;
620
+ face: InventorySlotHandle;
621
+ body: InventorySlotHandle;
622
+ back: InventorySlotHandle;
623
+ hands: InventorySlotHandle;
624
+ feet: InventorySlotHandle
625
+ };
626
+
627
+ findItem(itemId: number, options?: { area?: InventoryArea }): InventorySlotHandle | null;
628
+
629
+ findItems(itemId: number, options?: { area?: InventoryArea }): InventorySlotHandle[];
630
+
631
+ firstEmpty(options?: { area?: InventoryArea }): InventorySlotHandle | null;
632
+
633
+ move(source: InventorySlotRef, target: InventorySlotRef, options?: {
634
+ split?: boolean
635
+ }, command?: Command): DredlessClient;
636
+
637
+ equip(source: InventorySlotRef, equipmentSlot?: EquipmentSlot | { split?: boolean }, options?: {
638
+ split?: boolean
639
+ } | Command, command?: Command): DredlessClient;
640
+
641
+ unequip(equipmentSlot: EquipmentSlot, target?: InventorySlotRef, options?: {
642
+ split?: boolean
643
+ }, command?: Command): DredlessClient;
644
+
645
+ select(slot: InventorySlotRef, command?: Command): DredlessClient;
646
+ }
647
+
648
+ export interface InventorySlotHandle {
649
+ index: number;
650
+ kind: "hotbar" | "equipment" | null;
651
+ equipmentSlot: "head" | "face" | "body" | "back" | "hands" | "feet" | null;
652
+ itemId: number | null;
653
+ itemName: string | null;
654
+ count: number;
655
+ empty: boolean;
656
+
657
+ exists(): boolean;
658
+
659
+ snapshot(): InventorySlotSnapshot | null;
660
+
661
+ moveTo(target: InventorySlotRef, options?: { split?: boolean }, command?: Command): DredlessClient;
662
+
663
+ equip(equipmentSlot?: EquipmentSlot | { split?: boolean }, options?: {
664
+ split?: boolean
665
+ } | Command, command?: Command): DredlessClient;
666
+
667
+ unequip(target?: InventorySlotRef, options?: { split?: boolean }, command?: Command): DredlessClient;
668
+
669
+ select(command?: Command): DredlessClient;
670
+ }
671
+
672
+ export interface WorldDomain {
673
+ id: number | null;
674
+ entities: EntityCollection;
675
+ machines: MachineCollection;
676
+ players: PlayerCollection;
677
+ blocks: BlockCollection;
678
+ materials: MaterialCollection;
679
+
680
+ exists(): boolean;
681
+
682
+ snapshot(options?: {
683
+ includeTiles?: boolean;
684
+ includeModel?: boolean;
685
+ includeBlocks?: boolean
686
+ }): WorldSnapshot | null;
687
+ }
688
+
689
+ export interface ShipDomain extends WorldDomain {
690
+ metadata: ShipWorldMetadataSummary | null;
691
+
692
+ entity(): EntityHandle | null;
693
+
694
+ overworldEntity: EntityHandle | null;
695
+ }
696
+
697
+ export interface OverworldDomain extends WorldDomain {
698
+ ships(options?: ShipReadOptions): ShipHandle[];
699
+
700
+ shipByHex(hexCode: string, options?: ShipReadOptions): ShipHandle | null;
701
+
702
+ shipByEntity(entity: EntityRef, options?: ShipReadOptions): ShipHandle | null;
703
+ }
704
+
705
+ export interface EntityCollection {
706
+ all(): EntityHandle[];
707
+
708
+ snapshots(): EntitySnapshot[];
709
+
710
+ states(): EntitySnapshot[];
711
+
712
+ get(entity: EntityRef): EntityHandle;
713
+ }
714
+
715
+ export interface PlayerCollection {
716
+ all(): PlayerSummary[];
717
+
718
+ current(): PlayerSummary | null;
719
+ }
720
+
721
+ export interface BlockCollection {
722
+ all(): BlockSummary[];
723
+
724
+ at(x: number, y: number): BlockSummary | null;
725
+ }
726
+
727
+ export interface MaterialCollection {
728
+ all(): MaterialSummary[];
729
+ }
730
+
731
+ export interface MachineCollection {
732
+ state(): MachineSummary;
733
+
734
+ raw(): MachineSummary;
735
+
736
+ loaders(): LoaderHandle[];
737
+
738
+ loader(entity: EntityRef): LoaderHandle;
739
+
740
+ pushers(): PusherHandle[];
741
+
742
+ pusher(entity: EntityRef): PusherHandle;
743
+
744
+ launchers(): LauncherHandle[];
745
+
746
+ launcher(entity: EntityRef): LauncherHandle;
747
+
748
+ navigationUnits(): NavigationUnitHandle[];
749
+
750
+ navigationUnit(entity?: EntityRef | null): NavigationUnitHandle | null;
751
+
752
+ fabricators(): FabricatorHandle[];
753
+
754
+ fabricator(entity: EntityRef): FabricatorHandle;
755
+
756
+ commsStations(): CommsStationHandle[];
757
+
758
+ commsStation(entity?: EntityRef | null): CommsStationHandle | null;
759
+
760
+ signs(): SignHandle[];
761
+
762
+ sign(entity: EntityRef): SignHandle;
763
+
764
+ generators(): GeneratorHandle[];
765
+
766
+ generator(entity: EntityRef): GeneratorHandle;
767
+
768
+ cargoHatches(): CargoHatchHandle[];
769
+
770
+ cargoHatch(entity: EntityRef): CargoHatchHandle;
771
+
772
+ cargoEjectors(): CargoEjectorHandle[];
773
+
774
+ cargoEjector(entity: EntityRef): CargoEjectorHandle;
775
+
776
+ cannons(): CannonHandle[];
777
+
778
+ cannon(entity: EntityRef): CannonHandle;
779
+
780
+ thrusters(): ThrusterHandle[];
781
+
782
+ thruster(entity: EntityRef): ThrusterHandle;
783
+
784
+ helms(): HelmHandle[];
785
+
786
+ helm(entity: EntityRef): HelmHandle;
787
+
788
+ doors(): DoorHandle[];
789
+
790
+ door(entity: EntityRef): DoorHandle;
791
+
792
+ spawnPoints(): SpawnPointHandle[];
793
+
794
+ spawnPoint(entity: EntityRef): SpawnPointHandle;
795
+
796
+ shieldProjectors(): ShieldProjectorHandle[];
797
+
798
+ shieldProjector(entity: EntityRef): ShieldProjectorHandle;
799
+
800
+ fluidTanks(): FluidTankHandle[];
801
+
802
+ fluidTank(entity: EntityRef): FluidTankHandle;
803
+
804
+ expandoBoxes(): ExpandoBoxHandle[];
805
+
806
+ expandoBox(entity: EntityRef): ExpandoBoxHandle;
807
+ }
808
+
809
+ export type EntityPublicType =
810
+ | "loader"
811
+ | "pusher"
812
+ | "launcher"
813
+ | "navigationUnit"
814
+ | "fabricator"
815
+ | "cargoEjector"
816
+ | "cannon"
817
+ | "thruster"
818
+ | "cargoHatch"
819
+ | "commsStation"
820
+ | "fluidTank"
821
+ | "shieldGenerator"
822
+ | "shieldProjector"
823
+ | "helm"
824
+ | "sign"
825
+ | "spawnPoint"
826
+ | "door"
827
+ | "expandoBox"
828
+ | "player"
829
+ | "ship"
830
+ | "bot"
831
+ | "looseItem"
832
+ | "mapMarker"
833
+ | "dockingSpring"
834
+ | "hugeThruster"
835
+ | "blueprintPreview"
836
+ | "unknown";
837
+
838
+ export type EntityFeatureName =
839
+ | "health"
840
+ | "position"
841
+ | "outline"
842
+ | "inventory"
843
+ | "item"
844
+ | "filter"
845
+ | "filterMode"
846
+ | "filterSlots"
847
+ | "filterInventory"
848
+ | "beam"
849
+ | "occupied"
850
+ | "loaderConfig"
851
+ | "pusherConfig"
852
+ | "launcherConfig"
853
+ | "navigationConfig"
854
+ | "fabricatorQueue"
855
+ | "progress"
856
+ | string;
857
+ export type EntityTypeName = EntityPublicType | string;
858
+
859
+ export interface EntitySnapshot extends EntitySummary {
860
+ id: number;
861
+ position: TransformSummary | null;
862
+ rotation: number | null;
863
+ type: EntityPublicType | string;
864
+ features: string[];
865
+
866
+ is(type: EntityTypeName): boolean;
867
+
868
+ has(feature: EntityFeatureName): boolean;
869
+
870
+ feature(feature: EntityFeatureName): unknown | null;
871
+ }
872
+
873
+ export interface EntityHandle {
874
+ /** @deprecated Use id. */
875
+ entity: number;
876
+ id: number;
877
+ position: TransformSummary | null;
878
+ health: HealthSummary | null;
879
+ type: EntityPublicType | string;
880
+ features: string[];
881
+
882
+ exists(): boolean;
883
+
884
+ snapshot(): EntitySnapshot | null;
885
+
886
+ is(type: EntityTypeName): boolean;
887
+
888
+ has(feature: EntityFeatureName): boolean;
889
+
890
+ feature(feature: EntityFeatureName): unknown | null;
891
+
892
+ as(type: EntityTypeName): MachineHandle | null;
893
+
894
+ asLoader(): LoaderHandle | null;
895
+
896
+ asPusher(): PusherHandle | null;
897
+
898
+ asLauncher(): LauncherHandle | null;
899
+
900
+ asNavigationUnit(): NavigationUnitHandle | null;
901
+
902
+ asCommsStation(): CommsStationHandle | null;
903
+
904
+ asSign(): SignHandle | null;
905
+
906
+ asGenerator(): GeneratorHandle | null;
907
+
908
+ asCargoHatch(): CargoHatchHandle | null;
909
+
910
+ asCannon(): CannonHandle | null;
911
+
912
+ asThruster(): ThrusterHandle | null;
913
+
914
+ asHelm(): HelmHandle | null;
915
+
916
+ asDoor(): DoorHandle | null;
917
+
918
+ asSpawnPoint(): SpawnPointHandle | null;
919
+
920
+ asShieldProjector(): ShieldProjectorHandle | null;
921
+
922
+ asFluidTank(): FluidTankHandle | null;
923
+
924
+ asCargoEjector(): CargoEjectorHandle | null;
925
+
926
+ asExpandoBox(): ExpandoBoxHandle | null;
927
+
928
+ use(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
929
+ }
930
+
931
+ export interface MachineHandle extends EntityHandle {
932
+ open(options?: { invSlot?: number; hold?: boolean }, command?: Command): DredlessClient;
933
+ }
934
+
935
+ export interface LoaderHandle extends MachineHandle {
936
+ state: LoaderSummary | null;
937
+
938
+ configure(config?: LoaderConfig): DredlessClient;
939
+
940
+ configureFull(config?: LoaderFullConfig): DredlessClient;
941
+
942
+ copy(config?: LoaderFullConfig): DredlessClient;
943
+
944
+ setPickPlace(pick: LoaderPosition, place: LoaderPosition, config?: LoaderConfig): DredlessClient;
945
+
946
+ setPriority(priority: LoaderPriority, config?: LoaderConfig): DredlessClient;
947
+
948
+ setStack(stack: number, config?: LoaderConfig): DredlessClient;
949
+
950
+ setCycle(cycle: number, config?: LoaderConfig): DredlessClient;
951
+
952
+ setRequireOutput(requireOutput: boolean, config?: LoaderConfig): DredlessClient;
953
+
954
+ setWaitForStack(waitForStack: boolean, config?: LoaderConfig): DredlessClient;
955
+
956
+ setFilterMode(filterMode: LoaderFilterMode): DredlessClient;
957
+
958
+ setFilterItems(filterSlots?: Array<number | null | undefined>): DredlessClient;
959
+
960
+ pick: number | undefined;
961
+ place: number | undefined;
962
+ priority: number | undefined;
963
+ stack: number | undefined;
964
+ cycle: number | undefined;
965
+ requireOutput: boolean | undefined;
966
+ waitForStack: boolean | undefined;
967
+ filterMode: number | undefined;
968
+ filterSlots: Array<number | null>;
969
+ active: boolean | undefined;
970
+ heldItem: { itemId: number; itemName: string | null; count: number | null } | null;
971
+ progress: number | null | undefined;
972
+ }
973
+
974
+ export interface PusherHandle extends MachineHandle {
975
+ state: PusherSummary | null;
976
+ beam: PusherBeamSummary | null;
977
+
978
+ configure(config?: PusherConfig): DredlessClient;
979
+
980
+ setAngle(angle: number, config?: PusherConfig): DredlessClient;
981
+
982
+ setSpeed(speed: number, config?: PusherConfig): DredlessClient;
983
+
984
+ setLength(length: number, config?: PusherConfig): DredlessClient;
985
+
986
+ setMode(mode: PusherMode, config?: PusherConfig): DredlessClient;
987
+
988
+ setFilteredMode(mode: PusherMode, config?: PusherConfig): DredlessClient;
989
+
990
+ setFilterInventory(filterInventory: boolean, config?: PusherConfig): DredlessClient;
991
+
992
+ setFilterItems(filterSlots?: Array<number | null | undefined>): DredlessClient;
993
+
994
+ angle: number | undefined;
995
+ speed: number | undefined;
996
+ length: number | undefined;
997
+ mode: number | undefined;
998
+ filteredMode: number | undefined;
999
+ }
1000
+
1001
+ export interface LauncherHandle extends MachineHandle {
1002
+ state: LauncherSummary | null;
1003
+
1004
+ setAngle(angle: number): DredlessClient;
1005
+
1006
+ setPower(power: number): DredlessClient;
1007
+
1008
+ angleDegrees: number | undefined;
1009
+ angleRadians: number | undefined;
1010
+ angleRaw: number | null | undefined;
1011
+ }
1012
+
1013
+ export interface NavigationUnitHandle extends MachineHandle {
1014
+ state: NavigationUnitSummary | null;
1015
+
1016
+ configure(config?: NavigationUnitConfig): DredlessClient;
1017
+
1018
+ copy(config?: NavigationUnitConfig): DredlessClient;
1019
+
1020
+ paste(config?: NavigationUnitConfig): DredlessClient;
1021
+
1022
+ setDestination(destination: number, config?: NavigationUnitConfig): DredlessClient;
1023
+
1024
+ setAutoWarp(config?: NavigationUnitConfig): DredlessClient;
1025
+
1026
+ startWarp(config?: NavigationUnitConfig): DredlessClient;
1027
+
1028
+ cancelWarp(config?: NavigationUnitConfig): DredlessClient;
1029
+
1030
+ destination: number | undefined;
1031
+ autoWarpOnShieldFailure: boolean | undefined;
1032
+ autoWarpOnNoCaptains: boolean | undefined;
1033
+ warp: string | undefined;
1034
+ }
1035
+
1036
+ export interface FabricatorHandle extends MachineHandle {
1037
+ state: FabricatorSummary | null;
1038
+ progress: number | null | undefined;
1039
+ active: boolean | undefined;
1040
+ craftingItem: { itemId: number; itemName: string | null; count: number | null } | null;
1041
+
1042
+ panel(): PuiEvent | null;
1043
+
1044
+ add(itemId: number, count?: number, index?: number): DredlessClient;
1045
+
1046
+ sub(itemId: number, count?: number, index?: number): DredlessClient;
1047
+
1048
+ clearQueue(): DredlessClient;
1049
+
1050
+ toggleRepeat(): DredlessClient;
1051
+
1052
+ lockResource(row: number): DredlessClient;
1053
+
1054
+ unlockResource(row: number): DredlessClient;
1055
+
1056
+ eject(row: number): DredlessClient;
1057
+ }
1058
+
1059
+ export interface CommsStationHandle extends MachineHandle {
1060
+ state: CommsStationSummary | null;
1061
+
1062
+ panel(): CommsEvent | null;
1063
+
1064
+ sendMessage(message?: string): DredlessClient;
1065
+ }
1066
+
1067
+ export interface SignHandle extends MachineHandle {
1068
+ state: SignSummary | null;
1069
+
1070
+ setText(text?: string, mode?: SignDisplayMode): DredlessClient;
1071
+
1072
+ text: string | undefined;
1073
+ mode: number | undefined;
1074
+ }
1075
+
1076
+ export interface GeneratorHandle extends MachineHandle {
1077
+ state: ShieldGeneratorSummary | null;
1078
+
1079
+ solvePuzzle(solution: string | number): DredlessClient;
1080
+ }
1081
+
1082
+ export interface CargoHatchHandle extends MachineHandle {
1083
+ state: CargoHatchSummary | null;
1084
+ openFraction: number | null | undefined;
1085
+
1086
+ configure(config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): DredlessClient;
1087
+
1088
+ copy(config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): DredlessClient;
1089
+
1090
+ paste(config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): DredlessClient;
1091
+
1092
+ setFilterMode(filterMode: LoaderFilterMode): DredlessClient;
1093
+
1094
+ setFilterItems(filterSlots?: Array<number | null | undefined>): DredlessClient;
1095
+ }
1096
+
1097
+ export interface CannonHandle extends MachineHandle {
1098
+ state: CannonSummary | null;
1099
+ }
1100
+
1101
+ export interface ThrusterHandle extends MachineHandle {
1102
+ state: ThrusterSummary | null;
1103
+ }
1104
+
1105
+ export interface HelmHandle extends MachineHandle {
1106
+ state: HelmSummary | null;
1107
+ occupied: boolean | undefined;
1108
+ }
1109
+
1110
+ export interface DoorHandle extends MachineHandle {
1111
+ state: DoorSummary | null;
1112
+ rank: number | undefined;
1113
+ open: boolean | undefined;
1114
+ }
1115
+
1116
+ export interface SpawnPointHandle extends MachineHandle {
1117
+ state: SpawnPointSummary | null;
1118
+ rank: number | undefined;
1119
+ }
1120
+
1121
+ export interface ShieldProjectorHandle extends MachineHandle {
1122
+ state: ShieldProjectorSummary | null;
1123
+ active: boolean | undefined;
1124
+ }
1125
+
1126
+ export interface FluidTankHandle extends MachineHandle {
1127
+ state: FluidTankSummary | null;
1128
+ amount: number | null | undefined;
1129
+ }
1130
+
1131
+ export interface ExpandoBoxHandle extends MachineHandle {
1132
+ state: ExpandoBoxSummary | null;
1133
+ item: number | null | undefined;
1134
+ count: number | null | undefined;
1135
+ }
1136
+
1137
+ export interface CargoEjectorHandle extends MachineHandle {
1138
+ state: CargoEjectorSummary | null;
1139
+ progress: number | null | undefined;
1140
+ active: boolean | null | undefined;
1141
+
1142
+ setDirection(direction: FixedAngleDirection): DredlessClient;
1143
+
1144
+ copy(direction?: FixedAngleDirection): DredlessClient;
1145
+
1146
+ paste(direction?: FixedAngleDirection): DredlessClient;
1147
+ }
1148
+
1149
+ export interface ShipHandle {
1150
+ entity: number;
1151
+ name: string | null;
1152
+ hexCode: string | null;
1153
+ distance: number | null;
1154
+ worldId: number | null;
1155
+ hasWorldData: boolean;
1156
+
1157
+ world(): WorldDomain | null;
1158
+
1159
+ snapshot(): ShipReadSummary;
1160
+ }
1161
+
1162
+ export interface ClientSnapshot {
1163
+ baseUrl: string | null;
1164
+ session: SessionSnapshot | Session | null;
1165
+ connection: ConnectionSnapshot | null;
1166
+ attachMode: WebSocketAttachMode | null;
1167
+ serverId: number | null;
1168
+ server: Server | null;
1169
+ netPort: number | null;
1170
+ sid: number | null;
1171
+ ready: boolean;
1172
+ connected: boolean;
1173
+ currentWorldId: number | null;
1174
+ worlds: WorldSnapshot[];
1175
+ cpuLoad: number | null;
1176
+ inventory: InventoryState | null;
1177
+ puiPanels: PuiEvent[];
1178
+ commsPanels: CommsEvent[];
1179
+ currentCommsPanel: CommsEvent | null;
1180
+ warnings: unknown[];
1181
+ effects: unknown[];
1182
+ chat: unknown[];
1183
+ motd: unknown[];
1184
+ sessionMessages: unknown[];
1185
+ scannerResults: ScannerResult[];
1186
+ lastScannerResult: ScannerResult | null;
1187
+ shipConfig: ShipConfig | null;
1188
+ captainSubrank: CaptainSubrank | null;
1189
+ playerList: ShipPlayerList | null;
1190
+ outfits: { sid: number; outfit: unknown }[];
1191
+ commandAcks: CommandAck[];
1192
+ lastCommandAck: CommandAck | null;
1193
+ decodeErrors: unknown[];
1194
+ packetCount: number;
1195
+ lastPacket: unknown;
1196
+ }
1197
+
1198
+ export interface CommandAck {
1199
+ world: number;
1200
+ commandNumber: number;
1201
+ }
1202
+
1203
+ export interface ScannerResult {
1204
+ kind: "manifest" | "bom" | "unknown";
1205
+ sid: number | null;
1206
+ shipHex: string | null;
1207
+ shipName: string | null;
1208
+ blocks: Record<string, number> | null;
1209
+ objects: Record<string, number> | null;
1210
+ inventories: Record<string, number> | null;
1211
+ materials: Record<string, number> | null;
1212
+ }
1213
+
1214
+ export interface NavigationUnitConfig {
1215
+ destination?: number;
1216
+ page?: number;
1217
+ warp?: boolean | "start" | "idle" | "cancel";
1218
+ autoWarpOnShieldFailure?: boolean;
1219
+ autoWarpOnNoCaptains?: boolean;
1220
+ }
1221
+
1222
+ export const WrenchMode: {
1223
+ readonly DropAllItems: "drop-all-items";
1224
+ readonly GrabPrimaryItems: "grab-primary-items";
1225
+ readonly GrabAllItems: "grab-all-items";
1226
+ };
1227
+ export type WrenchMode = typeof WrenchMode[keyof typeof WrenchMode];
1228
+ export const TurretMode: {
1229
+ readonly ContinuousFire: "continuous-fire";
1230
+ readonly VolleyFire: "volley-fire";
1231
+ };
1232
+ export type TurretMode = typeof TurretMode[keyof typeof TurretMode];
1233
+
1234
+ export interface InputSettings {
1235
+ wrenchMode?: WrenchMode;
1236
+ turretMode?: TurretMode;
1237
+ viewWidth?: number;
1238
+ viewHeight?: number;
1239
+ screenWidth?: number;
1240
+ screenHeight?: number;
1241
+ }
1242
+
1243
+ export interface CurrentInputSettings {
1244
+ wrenchMode: WrenchMode | null;
1245
+ turretMode: TurretMode | null;
1246
+ viewWidth: number | null;
1247
+ viewHeight: number | null;
1248
+ screenWidth: number | null;
1249
+ screenHeight: number | null;
1250
+ }
1251
+
1252
+ export interface InventorySlotSnapshot {
1253
+ index: number;
1254
+ itemId: number | null;
1255
+ itemName: string | null;
1256
+ count: number;
1257
+ kind: "hotbar" | "equipment";
1258
+ equipmentSlot: "head" | "face" | "body" | "back" | "hands" | "feet" | null;
1259
+ empty: boolean;
1260
+ }
1261
+
1262
+ export interface InventoryState {
1263
+ type: "inventory";
1264
+ filter?: number;
1265
+ hotbarSize: number;
1266
+ slots: InventorySlotSnapshot[];
1267
+ hotbar: InventorySlotSnapshot[];
1268
+ equipment: {
1269
+ head: InventorySlotSnapshot;
1270
+ face: InventorySlotSnapshot;
1271
+ body: InventorySlotSnapshot;
1272
+ back: InventorySlotSnapshot;
1273
+ hands: InventorySlotSnapshot;
1274
+ feet: InventorySlotSnapshot;
1275
+ };
1276
+ }
1277
+
1278
+ export interface PuiEvent {
1279
+ type: "pui";
1280
+ filter?: number;
1281
+ ent_id?: number;
1282
+ update?: boolean;
1283
+ data?: unknown;
1284
+ world?: number | null;
1285
+ }
1286
+
1287
+ export interface CargoEjectorSummary {
1288
+ entity: number;
1289
+ typeId: number;
1290
+ typeName: string | null;
1291
+ progress: number | null;
1292
+ active: boolean | null;
1293
+ }
1294
+
1295
+ export interface EntityContentsSummary {
1296
+ itemHolder?: ItemHolderSummary;
1297
+ expandoBox?: ExpandoBoxSummary;
1298
+ hoverOutline?: HoverOutlineSummary;
1299
+ mapMarker?: MapMarkerSummary;
1300
+ dockingSpring?: DockingSpringSummary;
1301
+ hugeThruster?: HugeThrusterSummary;
1302
+ blueprintPreview?: BlueprintPreviewSummary;
1303
+ itemCrate?: ItemCrateSummary;
1304
+ health?: HealthSummary;
1305
+ bot?: BotSummary;
1306
+ fabricator?: FabricatorSummary;
1307
+ cargoEjector?: CargoEjectorSummary;
1308
+ cannon?: CannonSummary;
1309
+ thruster?: ThrusterSummary;
1310
+ pusher?: PusherSummary;
1311
+ pusherBeam?: PusherBeamSummary;
1312
+ launcher?: LauncherSummary;
1313
+ loader?: LoaderSummary;
1314
+ cargoHatch?: CargoHatchSummary;
1315
+ navigationUnit?: NavigationUnitSummary;
1316
+ commsStation?: CommsStationSummary;
1317
+ fluidTank?: FluidTankSummary;
1318
+ shieldGenerator?: ShieldGeneratorSummary;
1319
+ shieldProjector?: ShieldProjectorSummary;
1320
+ helm?: HelmSummary;
1321
+ player?: PlayerSummary;
1322
+ shipControl?: ShipControlSummary;
1323
+ sign?: SignSummary;
1324
+ spawnPoint?: SpawnPointSummary;
1325
+ door?: DoorSummary;
1326
+ shipSize?: ShipSizeSummary;
1327
+ }
1328
+
1329
+ export interface EntitySummary {
1330
+ entity: number;
1331
+ category: "placed_entity" | "loose_item" | "untyped_holder" | "metadata" | "player" | "ship_control" | "blueprint_preview" | "entity";
1332
+ typeId: number | null;
1333
+ typeName: string | null;
1334
+ markerTypeId: number | null;
1335
+ markerTypeName: string | null;
1336
+ label: string;
1337
+ kind: string[];
1338
+ transform: TransformSummary | null;
1339
+ footprint: {
1340
+ width: number;
1341
+ height: number;
1342
+ source: "type" | "marker" | "heuristic" | "default" | "crate" | "huge_thruster" | "hover_outline"
1343
+ };
1344
+ type: EntityPublicType | string;
1345
+ features: string[];
1346
+ occupies: { x: number; y: number }[];
1347
+ tables: { tableId: number; name: string | null; record: ModelRecord }[];
1348
+ }
1349
+
1350
+ export interface EntityDebugSummary extends Omit<EntitySummary, "type" | "features"> {
1351
+ contents: EntityContentsSummary | null;
1352
+ }
1353
+
1354
+ export interface BlockSummary {
1355
+ x: number;
1356
+ y: number;
1357
+ entities: EntityDebugSummary[];
1358
+ }
1359
+
1360
+ export interface WorldHistoryLimits {
1361
+ /** Retained entries in `WorldState.events`. Default 200. */
1362
+ eventHistory?: number;
1363
+ /** Retained entries in `WorldState.modelPackets`. Default 100. */
1364
+ modelPacketHistory?: number;
1365
+ /** Retained entries in `WorldState.chunks`. Default 64. */
1366
+ chunkHistory?: number;
1367
+ }
1368
+
1369
+ export class WorldStore {
1370
+ constructor(limits?: WorldHistoryLimits);
1371
+
1372
+ currentWorldId: number | null;
1373
+ worlds: Map<number, WorldState>;
1374
+ historyLimits: Required<WorldHistoryLimits>;
1375
+
1376
+ get(id: number): WorldState;
1377
+
1378
+ apply(packet: unknown): WorldUpdate | null;
1379
+
1380
+ snapshot(options?: { includeTiles?: boolean; includeModel?: boolean; includeBlocks?: boolean }): WorldSnapshot[];
1381
+
1382
+ ids(): number[];
1383
+
1384
+ overworld(): WorldState | null;
1385
+
1386
+ shipWorld(): WorldState | null;
1387
+
1388
+ currentShipEntity(): EntityDebugSummary | null;
1389
+ }
1390
+
1391
+ export class WorldState {
1392
+ constructor(id: number, limits?: WorldHistoryLimits);
1393
+
1394
+ historyLimits: Required<WorldHistoryLimits>;
1395
+ /** Chunks applied over the connection's lifetime, independent of retention. */
1396
+ totalChunkCount: number;
1397
+ /** Events recorded over the connection's lifetime, independent of retention. */
1398
+ totalEventCount: number;
1399
+ id: number;
1400
+ seed: number | null;
1401
+ isOverworld: boolean | null;
1402
+ tileset: Tileset | null;
1403
+ blockWidth: number | null;
1404
+ blockHeight: number | null;
1405
+ parentWorld: number | null;
1406
+ parentEntity: number | null;
1407
+ tiles: Map<string, Tile>;
1408
+ chunks: unknown[];
1409
+ events: unknown[];
1410
+ modelPackets: unknown[];
1411
+ commsBubbles: CommsBubbleSummary[];
1412
+ model: ModelState;
1413
+ lastChunkPatch: unknown;
1414
+ lastPacket: unknown;
1415
+ meta: unknown;
1416
+
1417
+ readMeta(packet: unknown): void;
1418
+
1419
+ addCommsBubble(packet: unknown): CommsBubbleSummary;
1420
+
1421
+ decodeEncrypted(data: Uint8Array | ArrayBuffer | number[]): unknown;
1422
+
1423
+ applyTile(value: unknown): Tile | null;
1424
+
1425
+ applyChunk(value: unknown): Tile[] | null;
1426
+
1427
+ setTile(tile: Tile): Tile;
1428
+
1429
+ normalizeTile(tile: Tile): Tile;
1430
+
1431
+ materials(): MaterialSummary[];
1432
+
1433
+ snapshot(options?: { includeTiles?: boolean; includeModel?: boolean; includeBlocks?: boolean }): WorldSnapshot;
1434
+
1435
+ table(id: number): Map<number, ModelRecord>;
1436
+
1437
+ record(tableId: number, entityId: number): ModelRecord | null;
1438
+
1439
+ tileDefinition(material: number): TileDefinition | null;
1440
+
1441
+ entity(entityId: number): EntityDebugSummary | null;
1442
+
1443
+ entities(): EntityDebugSummary[];
1444
+
1445
+ blocks(): BlockSummary[];
1446
+
1447
+ /** O(1) lookup of the block at a coordinate. */
1448
+ blockAt(x: number, y: number): BlockSummary | null;
1449
+ }
1450
+
1451
+ export interface Tile {
1452
+ x: number;
1453
+ y: number;
1454
+ material: number;
1455
+ materialName?: string | null;
1456
+ shape: number;
1457
+ shapeName?: string | null;
1458
+ hp: number;
1459
+ /** @deprecated Use hp. This is the raw 0-255 HP fraction byte, not absolute integrity. */
1460
+ integrity: number;
1461
+ color: number | null;
1462
+ solid?: boolean | null;
1463
+ maxHp?: number | null;
1464
+ hpRatio?: number | null;
1465
+ hpValue?: number | null;
1466
+ }
1467
+
1468
+ export interface MaterialSummary {
1469
+ material: number;
1470
+ name: string | null;
1471
+ count: number;
1472
+ solid: boolean | null;
1473
+ hp: number | null;
1474
+ }
1475
+
1476
+ export interface TilePhysics {
1477
+ filter?: {
1478
+ categoryBits: number;
1479
+ maskBits: number;
1480
+ groupIndex: number;
1481
+ };
1482
+ transparent?: boolean;
1483
+ walkway?: boolean;
1484
+ restitution?: number;
1485
+ friction?: number;
1486
+ }
1487
+
1488
+ export interface TileDefinition {
1489
+ name?: string;
1490
+ solid: boolean;
1491
+ destruct_item?: number;
1492
+ blocks_bullets?: boolean;
1493
+ hp?: number;
1494
+ no_build_surface?: boolean;
1495
+ physics?: TilePhysics;
1496
+ }
1497
+
1498
+ export interface Tileset {
1499
+ scale: number;
1500
+ atlas: string;
1501
+ tile_width: number;
1502
+ tiles: TileDefinition[];
1503
+ }
1504
+
1505
+ export interface WorldSnapshot {
1506
+ id: number;
1507
+ is_overworld: boolean | null;
1508
+ overworldZone: OverworldZoneSummary | null;
1509
+ shipMetadata: ShipWorldMetadataSummary | null;
1510
+ tileset: Tileset | null;
1511
+ seed: number | null;
1512
+ block_w: number | null;
1513
+ block_h: number | null;
1514
+ parent_world: number | null;
1515
+ parent_ent: number | null;
1516
+ tileCount: number;
1517
+ chunkCount: number;
1518
+ lastChunkPatch: unknown;
1519
+ lastPacket: unknown;
1520
+ meta: unknown;
1521
+ materials: MaterialSummary[];
1522
+ model: ModelSnapshot;
1523
+ entities: EntityDebugSummary[];
1524
+ /** Present only when the snapshot was taken with `includeBlocks`. */
1525
+ blocks?: BlockSummary[];
1526
+ transforms: TransformSummary[];
1527
+ machines: MachineSummary;
1528
+ players: PlayerSummary[];
1529
+ shipControls: ShipControlSummary[];
1530
+ commsBubbles: CommsBubbleSummary[];
1531
+ tiles?: Tile[];
1532
+ }
1533
+
1534
+ export interface OverworldZoneSummary {
1535
+ id: number;
1536
+ baseId: number;
1537
+ layer: number;
1538
+ key: string;
1539
+ name: string;
1540
+ tiered: boolean;
1541
+ displayName: string;
1542
+ }
1543
+
1544
+ export interface ShipWorldMetadataSummary {
1545
+ name: string | null;
1546
+ color: number | null;
1547
+ colorCss: string | null;
1548
+ width: number | null;
1549
+ height: number | null;
1550
+ lockdownTimerSeconds: number | null;
1551
+ lockdownCountdownSeconds: number | null;
1552
+ onlineShipOwnerCount: number | null;
1553
+ requiredShipOwnerCount: number | null;
1554
+ allShipOwnersOnline: boolean | null;
1555
+ lockdownEngaged: boolean | null;
1556
+ lockdownState: ModelRecord;
1557
+ shipState: ModelRecord;
1558
+ }
1559
+
1560
+ export interface WorldUpdate {
1561
+ type: string;
1562
+ world: WorldState | null;
1563
+ packet?: unknown;
1564
+ bubble?: CommsBubbleSummary;
1565
+ decoded?: unknown;
1566
+ updates?: unknown[];
1567
+ result?: unknown;
1568
+ }
1569
+
1570
+ export interface CommsBubbleSummary {
1571
+ sequence: number;
1572
+ worldId: number;
1573
+ entity: number | null;
1574
+ modelId: number | null;
1575
+ message: string;
1576
+ color: number | null;
1577
+ colorCss: string | null;
1578
+ durationSeconds: number | null;
1579
+ raw: unknown;
1580
+ }
1581
+
1582
+ export class ModelState {
1583
+ generation: number | null;
1584
+ tables: Map<number, Map<number, ModelRecord>>;
1585
+ /** Capped at 500 retained ids; see `totalRemovedCount` for the true total. */
1586
+ removedEntities: number[];
1587
+ lastUpdate: unknown;
1588
+ /** Capped at 100 retained entries; see `totalErrorCount` for the true total. */
1589
+ errors: unknown[];
1590
+ totalRemovedCount: number;
1591
+ totalErrorCount: number;
1592
+
1593
+ table(id: number): Map<number, ModelRecord>;
1594
+
1595
+ record(tableId: number, entityId: number): ModelRecord | null;
1596
+
1597
+ entity(entityId: number): EntityDebugSummary | null;
1598
+
1599
+ entities(): EntityDebugSummary[];
1600
+
1601
+ blocks(): BlockSummary[];
1602
+
1603
+ /** O(1) lookup of the block at a coordinate. */
1604
+ blockAt(x: number, y: number): BlockSummary | null;
1605
+
1606
+ apply(bytes: Uint8Array | ArrayBuffer | number[]): unknown;
1607
+
1608
+ snapshot(options?: { includeTables?: boolean; includeBlocks?: boolean }): ModelSnapshot;
1609
+
1610
+ tablesSnapshot(): unknown[];
1611
+
1612
+ transforms(): TransformSummary[];
1613
+
1614
+ itemHolders(): ItemHolderSummary[];
1615
+
1616
+ fabricators(): FabricatorSummary[];
1617
+
1618
+ players(): PlayerSummary[];
1619
+
1620
+ shipControls(): ShipControlSummary[];
1621
+
1622
+ shipMetadata(): ShipWorldMetadataSummary | null;
1623
+
1624
+ machines(): MachineSummary;
1625
+ }
1626
+
1627
+ export type ModelRecord = Record<string, unknown>;
1628
+
1629
+ export interface ModelSnapshot {
1630
+ generation: number | null;
1631
+ tableCount: number;
1632
+ entityCount: number;
1633
+ removedEntities: number[];
1634
+ lastUpdate: unknown;
1635
+ errors: unknown[];
1636
+ entities: EntityDebugSummary[];
1637
+ /** Present only when the snapshot was taken with `includeBlocks`. */
1638
+ blocks?: BlockSummary[];
1639
+ transforms: TransformSummary[];
1640
+ players: PlayerSummary[];
1641
+ shipControls: ShipControlSummary[];
1642
+ machines: MachineSummary;
1643
+ tables: unknown[];
1644
+ }
1645
+
1646
+ export interface TransformSummary {
1647
+ entity: number;
1648
+ x: number | null;
1649
+ y: number | null;
1650
+ rot: number | null;
1651
+ flags: unknown[];
1652
+ }
1653
+
1654
+ export interface ItemHolderSummary {
1655
+ entity: number;
1656
+ itemId: number | null;
1657
+ itemName: string | null;
1658
+ count: number | null;
1659
+ }
1660
+
1661
+ export interface ItemCrateSummary {
1662
+ entity: number;
1663
+ itemId: number | null;
1664
+ itemName: string | null;
1665
+ count: number | null;
1666
+ width: number | null;
1667
+ height: number | null;
1668
+ itemState: ModelRecord;
1669
+ sizeState: ModelRecord;
1670
+ }
1671
+
1672
+ export interface ExpandoBoxSummary {
1673
+ entity: number;
1674
+ itemId: number | null;
1675
+ itemName: string | null;
1676
+ count: number | null;
1677
+ width: number | null;
1678
+ height: number | null;
1679
+ rawWidth: number | null;
1680
+ rawHeight: number | null;
1681
+ itemState: ModelRecord;
1682
+ sizeState: ModelRecord;
1683
+ }
1684
+
1685
+ export interface HoverOutlineSummary {
1686
+ entity: number;
1687
+ width: number | null;
1688
+ height: number | null;
1689
+ rawWidth: number | null;
1690
+ rawHeight: number | null;
1691
+ state: ModelRecord;
1692
+ }
1693
+
1694
+ export interface MapMarkerSummary {
1695
+ entity: number;
1696
+ kind: string;
1697
+ title: string | null;
1698
+ key: string | null;
1699
+ description: string | null;
1700
+ color: number | null;
1701
+ colorCss: string | null;
1702
+ accentColor: number | null;
1703
+ accentColorCss: string | null;
1704
+ width: number | null;
1705
+ height: number | null;
1706
+ labelState: ModelRecord;
1707
+ zoneState: ModelRecord;
1708
+ }
1709
+
1710
+ export interface DockingSpringSummary {
1711
+ entity: number;
1712
+ id: number | null;
1713
+ width: number;
1714
+ height: number;
1715
+ state: ModelRecord;
1716
+ }
1717
+
1718
+ export interface HugeThrusterSummary {
1719
+ entity: number;
1720
+ width: number;
1721
+ height: number;
1722
+ state: ModelRecord;
1723
+ }
1724
+
1725
+ export interface ShipSizeSummary {
1726
+ entity: number;
1727
+ width: number | null;
1728
+ height: number | null;
1729
+ rawWidth: number | null;
1730
+ rawHeight: number | null;
1731
+ state: ModelRecord;
1732
+ }
1733
+
1734
+ export interface FluidTankSummary {
1735
+ entity: number;
1736
+ amount: number | null;
1737
+ state: ModelRecord;
1738
+ }
1739
+
1740
+ export interface HealthSummary {
1741
+ entity: number;
1742
+ hp: number | null;
1743
+ maxHp: number | null;
1744
+ ratio: number | null;
1745
+ state: ModelRecord;
1746
+ }
1747
+
1748
+ export interface BotSummary {
1749
+ entity: number;
1750
+ className: string;
1751
+ identifier: string;
1752
+ typeA: number | null;
1753
+ typeB: number | null;
1754
+ }
1755
+
1756
+ export interface FabricatorSummary {
1757
+ entity: number;
1758
+ type: FabricatorType | null;
1759
+ typeIndex: number | null;
1760
+ typeIndex: number | null;
1761
+ state: ModelRecord;
1762
+ rows: { itemId: number | null; itemName: string | null; count: number | null }[];
1763
+ progress: number | null;
1764
+ progressRaw: number | null;
1765
+ active: boolean;
1766
+ craftingItemId: number | null;
1767
+ craftingItemName: string | null;
1768
+ craftingCount: number | null;
1769
+ }
1770
+
1771
+ export interface CannonSummary {
1772
+ entity: number;
1773
+ typeId: number;
1774
+ typeName: string | null;
1775
+ ammoItemId: number | null;
1776
+ ammoName: string | null;
1777
+ ammoCount: number;
1778
+ aim: number | null;
1779
+ recoil: number | null;
1780
+ recoil2: number | null;
1781
+ recoils: [number | null, number | null];
1782
+ charge: number | null;
1783
+ charged: boolean | null;
1784
+ spin: number | null;
1785
+ coolingCellCount: number;
1786
+ state: ModelRecord;
1787
+ }
1788
+
1789
+ export interface ThrusterSummary {
1790
+ entity: number;
1791
+ typeId: number;
1792
+ typeName: string | null;
1793
+ facing: number;
1794
+ facingName: "bottom" | "top" | "right" | "left" | "bottom-right" | "bottom-left" | "top-right" | "top-left" | null;
1795
+ fuel: number | null;
1796
+ state: ModelRecord;
1797
+ }
1798
+
1799
+ export interface LoaderSummary {
1800
+ entity: number;
1801
+ pick: number | null;
1802
+ pickName: string | null;
1803
+ place: number | null;
1804
+ placeName: string | null;
1805
+ priority: number | null;
1806
+ priorityName: string | null;
1807
+ requireOutput: boolean | null;
1808
+ waitForStack: boolean | null;
1809
+ stack: number | null;
1810
+ cycle: number | null;
1811
+ filterMode: number | null;
1812
+ filterModeName: string | null;
1813
+ filterSlots: (number | null)[] | null;
1814
+ heldItemId: number | null;
1815
+ heldItemName: string | null;
1816
+ heldCount: number | null;
1817
+ active: boolean;
1818
+ progress: number | null;
1819
+ state: ModelRecord;
1820
+ filterState: ModelRecord;
1821
+ filterSlotsState: ModelRecord;
1822
+ }
1823
+
1824
+ export interface CargoHatchSummary {
1825
+ entity: number;
1826
+ typeId: number;
1827
+ typeName: string | null;
1828
+ filterMode: number;
1829
+ filterModeName: string | null;
1830
+ filterSlots: (number | null)[] | null;
1831
+ openFraction: number | null;
1832
+ filterState: ModelRecord;
1833
+ filterSlotsState: ModelRecord;
1834
+ }
1835
+
1836
+ export interface LauncherSummary {
1837
+ entity: number;
1838
+ angleRaw: number | null;
1839
+ angleRadians: number | null;
1840
+ angleDegrees: number | null;
1841
+ state: ModelRecord;
1842
+ }
1843
+
1844
+ export interface NavigationUnitSummary {
1845
+ entity: number;
1846
+ destination: number;
1847
+ destinationName: string | null;
1848
+ autoWarpOnShieldFailure: boolean | null;
1849
+ autoWarpOnNoCaptains: boolean | null;
1850
+ state: ModelRecord;
1851
+ }
1852
+
1853
+ export interface PusherSummary {
1854
+ entity: number;
1855
+ mode: number;
1856
+ modeName: string | null;
1857
+ filteredMode: number;
1858
+ filteredModeName: string | null;
1859
+ angle: number | null;
1860
+ speed: number;
1861
+ length: number;
1862
+ filterInventory: boolean;
1863
+ filterSlots: (number | null)[] | null;
1864
+ state: ModelRecord;
1865
+ filterSlotsState: ModelRecord;
1866
+ }
1867
+
1868
+ export interface PusherBeamSummary {
1869
+ entity: number;
1870
+ active: boolean;
1871
+ mode: number;
1872
+ modeName: string | null;
1873
+ lengthRaw: number;
1874
+ length: number;
1875
+ state: ModelRecord;
1876
+ }
1877
+
1878
+ export interface CommsStationSummary {
1879
+ entity: number;
1880
+ typeId: number;
1881
+ typeName: string | null;
1882
+ charges: number | null;
1883
+ maxCharges: number;
1884
+ chargeRatio: number | null;
1885
+ occupied: boolean;
1886
+ state: ModelRecord;
1887
+ }
1888
+
1889
+ export interface SignSummary {
1890
+ entity: number;
1891
+ text: string;
1892
+ displayMode: number;
1893
+ displayModeName: string | null;
1894
+ state: ModelRecord;
1895
+ }
1896
+
1897
+ export interface SpawnPointSummary {
1898
+ entity: number;
1899
+ rank: number;
1900
+ rankName: string | null;
1901
+ state: ModelRecord;
1902
+ }
1903
+
1904
+ export interface DoorSummary {
1905
+ entity: number;
1906
+ rank: number;
1907
+ rankName: string | null;
1908
+ open: boolean;
1909
+ rankState: ModelRecord;
1910
+ state: ModelRecord;
1911
+ }
1912
+
1913
+ export interface ShieldProjectorSummary {
1914
+ entity: number;
1915
+ active: boolean;
1916
+ state: ModelRecord;
1917
+ }
1918
+
1919
+ export interface ShieldGeneratorSummary {
1920
+ entity: number;
1921
+ charge: number;
1922
+ maxCharge: number;
1923
+ chargeRatio: number | null;
1924
+ efficiencyPercent: number | null;
1925
+ efficiency: number | null;
1926
+ storedItemId: number | null;
1927
+ storedItemName: string | null;
1928
+ storedItemCount: number | null;
1929
+ hasShieldCore: boolean;
1930
+ boostState: number;
1931
+ boostStateName: string | null;
1932
+ boostTimer: number;
1933
+ boostActive: boolean;
1934
+ puzzleSeed: number | null;
1935
+ puzzleSolution: string | null;
1936
+ state: ModelRecord;
1937
+ itemState: ModelRecord;
1938
+ boostStateRaw: ModelRecord;
1939
+ }
1940
+
1941
+ export interface GeneratorMazeCellWalls {
1942
+ up: boolean;
1943
+ down: boolean;
1944
+ left: boolean;
1945
+ right: boolean;
1946
+ }
1947
+
1948
+ export interface GeneratorMazeCell {
1949
+ x: number;
1950
+ y: number;
1951
+ value: number;
1952
+ hex: string;
1953
+ digit: number;
1954
+ walls: GeneratorMazeCellWalls;
1955
+ backtrackDirection: number;
1956
+ marker: number;
1957
+ }
1958
+
1959
+ export interface GeneratorMaze {
1960
+ seed: number;
1961
+ width: number;
1962
+ height: number;
1963
+ cells: GeneratorMazeCell[];
1964
+ rows: GeneratorMazeCell[][];
1965
+ solution: string;
1966
+ }
1967
+
1968
+ export interface HelmSummary {
1969
+ entity: number;
1970
+ typeId: number;
1971
+ typeName: string | null;
1972
+ occupied: boolean;
1973
+ }
1974
+
1975
+ export interface PlayerSummary {
1976
+ entity: number;
1977
+ name: string | null;
1978
+ heldItemId: number | null;
1979
+ heldItemName: string | null;
1980
+ repairTargetDistance: number | null;
1981
+ repairTargetAngle: number | null;
1982
+ shipRank: PlayerShipRank | null;
1983
+ patronTier: "bronze" | "silver" | "gold" | "plat" | "flux" | null;
1984
+ isDeveloper: boolean;
1985
+ isPatron: boolean;
1986
+ piloting: boolean;
1987
+ muted: boolean;
1988
+ actionPreview: PlayerActionPreviewSummary | null;
1989
+ state: ModelRecord;
1990
+ }
1991
+
1992
+ export interface PlayerActionPreviewSummary {
1993
+ entity: number;
1994
+ active: boolean;
1995
+ x: number | null;
1996
+ y: number | null;
1997
+ width: number | null;
1998
+ height: number | null;
1999
+ progress: number | null;
2000
+ color: number | null;
2001
+ colorCss: string | null;
2002
+ actionName: "place" | "break" | "blueprint" | null;
2003
+ blueprintId: number | null;
2004
+ blueprintItems: BlueprintPreviewSummary[];
2005
+ state: ModelRecord;
2006
+ }
2007
+
2008
+ export interface BlueprintPreviewSummary {
2009
+ entity: number;
2010
+ itemId: number;
2011
+ itemName: string | null;
2012
+ bits: number;
2013
+ rawBits: number | null;
2014
+ placementOffsets: number[];
2015
+ placementCount: number;
2016
+ placements: {
2017
+ offset: number;
2018
+ x: number | null;
2019
+ y: number | null;
2020
+ itemId: number;
2021
+ itemName: string | null;
2022
+ }[];
2023
+ x: number | null;
2024
+ y: number | null;
2025
+ rot: number | null;
2026
+ state: ModelRecord;
2027
+ }
2028
+
2029
+ export interface ShipControlSummary {
2030
+ entity: number;
2031
+ name: string | null;
2032
+ hexCode: string | null;
2033
+ shipWorldId: number | null;
2034
+ color: number | null;
2035
+ colorCss: string | null;
2036
+ thrustX: number | null;
2037
+ thrustY: number | null;
2038
+ value52: number | null;
2039
+ value84: number | null;
2040
+ value96: number | null;
2041
+ shield: ShipShieldSummary | null;
2042
+ warp: ShipWarpSummary | null;
2043
+ state: ModelRecord;
2044
+ }
2045
+
2046
+ export interface ShipReadSummary {
2047
+ entity: number;
2048
+ name: string | null;
2049
+ hexCode: string | null;
2050
+ color: number | null;
2051
+ colorCss: string | null;
2052
+ position: { x: number | null; y: number | null; rot: number | null } | null;
2053
+ distance: number | null;
2054
+ footprint: EntitySummary["footprint"];
2055
+ label: string;
2056
+ kind: string[];
2057
+ thrust: { x: number | null; y: number | null };
2058
+ shield: ShipShieldSummary | null;
2059
+ warp: ShipWarpSummary | null;
2060
+ worldId: number | null;
2061
+ hasWorldData: boolean;
2062
+ world: WorldSnapshot | null;
2063
+ control: ShipControlSummary;
2064
+ entitySummary: EntityDebugSummary;
2065
+ }
2066
+
2067
+ export interface ShipShieldSummary {
2068
+ maxHp: number | null;
2069
+ baseHp: number | null;
2070
+ activeTankHp: number | null;
2071
+ inactiveTankHp: number | null;
2072
+ tankValues: number[];
2073
+ }
2074
+
2075
+ export interface ShipWarpSummary {
2076
+ active: boolean;
2077
+ ticks: number;
2078
+ elapsedSeconds: number;
2079
+ durationSeconds: number;
2080
+ remainingSeconds: number;
2081
+ }
2082
+
2083
+ export interface MachineSummary {
2084
+ itemHolders: ItemHolderSummary[];
2085
+ health: HealthSummary[];
2086
+ fabricators: FabricatorSummary[];
2087
+ cargoEjectors: CargoEjectorSummary[];
2088
+ cannons: CannonSummary[];
2089
+ thrusters: ThrusterSummary[];
2090
+ pushers: PusherSummary[];
2091
+ pusherBeams: PusherBeamSummary[];
2092
+ launchers: LauncherSummary[];
2093
+ loaders: LoaderSummary[];
2094
+ cargoHatches: CargoHatchSummary[];
2095
+ navigationUnits: NavigationUnitSummary[];
2096
+ commsStations: CommsStationSummary[];
2097
+ fluidTanks: FluidTankSummary[];
2098
+ shieldGenerators: ShieldGeneratorSummary[];
2099
+ shieldProjectors: ShieldProjectorSummary[];
2100
+ helms: HelmSummary[];
2101
+ signs: SignSummary[];
2102
+ spawnPoints: SpawnPointSummary[];
2103
+ doors: DoorSummary[];
2104
+ expandoBoxes: ExpandoBoxSummary[];
2105
+ }
2106
+
2107
+ export function decodeMsgpack(bytes: Uint8Array | ArrayBuffer | number[]): unknown;
2108
+
2109
+ export function encodeMsgpack(value: unknown): Uint8Array;
2110
+
2111
+ export function buildCommsMessage(message?: string): CommsMessage;
2112
+
2113
+ export function normalizeCommsEvent(event: unknown): CommsEvent;
2114
+
2115
+ export function flattenRichText(value: unknown): string;
2116
+
2117
+ export function buildSignedCommandPacket(command: Command, sessionId: number): Uint8Array;
2118
+
2119
+ export function buildInventoryDragCommand(source: number, target: number, split?: boolean): InventoryDragCommand;
2120
+
2121
+ export function buildEquipItemCommand(source: number, slot: EquipmentSlot, split?: boolean): InventoryDragCommand;
2122
+
2123
+ export function buildUnequipItemCommand(slot: EquipmentSlot, target?: number, split?: boolean): InventoryDragCommand;
2124
+
2125
+ export function normalizeEquipmentSlot(slot: EquipmentSlot): 16 | 17 | 18 | 19 | 20 | 21;
2126
+
2127
+ export function equipmentSlotName(slot: number): "head" | "face" | "body" | "back" | "hands" | "feet" | null;
2128
+
2129
+ export function normalizeInventoryEvent(event: unknown): InventoryState;
2130
+
2131
+ export function buildShipManagementMessage(act: string, arg?: unknown, extra?: Record<string, unknown> | null): ShipManagementMessage;
2132
+
2133
+ export function buildShipPrivacyMessage(privacy: ShipPrivacy): ShipManagementMessage;
2134
+
2135
+ export function buildStarterRecoveryMessage(itemId: number): ShipManagementMessage;
2136
+
2137
+ export function buildPlayerListMessage(): ShipManagementMessage;
2138
+
2139
+ export function buildInviteResetMessage(): ShipManagementMessage;
2140
+
2141
+ export function buildSetPlayerRankMessage(refId: number, rank: ShipPlayerRank): ShipManagementMessage;
2142
+
2143
+ export function buildKickPlayerMessage(refId: number): ShipManagementMessage;
2144
+
2145
+ export function buildBanPlayerMessage(refId: number): ShipManagementMessage;
2146
+
2147
+ export function buildDemoteSelfMessage(): ShipManagementMessage;
2148
+
2149
+ export function normalizePrivacy(privacy: ShipPrivacy): 0 | 1;
2150
+
2151
+ export function normalizePlayerRank(rank: ShipPlayerRank): 0 | 1 | 3;
2152
+
2153
+ export function normalizeShipConfig(event: unknown): ShipConfig;
2154
+
2155
+ export function normalizeCaptainSubrank(event: unknown): CaptainSubrank;
2156
+
2157
+ export function normalizeShipPlayerList(event: unknown, previous?: ShipPlayerList | null, currentCaptainSubrank?: CaptainSubrank | null): ShipPlayerList;
2158
+
2159
+ export function buildSignTextMessage(text?: string, mode?: SignDisplayMode): SignTextMessage;
2160
+
2161
+ export function normalizeSignDisplayMode(mode?: SignDisplayMode): 0 | 1 | 2;
2162
+
2163
+ export function signDisplayModeName(mode: number): SignDisplayMode | null;
2164
+
2165
+ export function buildNavigationUnitConfigData(entity: number, config: NavigationUnitConfig & {
2166
+ destination: number
2167
+ }): Uint8Array;
2168
+
2169
+ export function buildNavigationUnitClipboardConfigData(config: NavigationUnitConfig & {
2170
+ destination: number
2171
+ }): Uint8Array;
2172
+
2173
+ export function buildNavigationUnitPasteConfigData(entity: number, config: NavigationUnitConfig & {
2174
+ destination: number
2175
+ }): Uint8Array;
2176
+
2177
+ export function buildGeneratorMazePuzzleData(entity: number, solution: string | number): Uint8Array;
2178
+
2179
+ export function buildCargoHatchFilterConfigData(entity: number, filterMode?: LoaderFilterMode): Uint8Array;
2180
+
2181
+ export function buildCargoHatchFilterItemsData(entity: number, filterSlots?: Array<number | null | undefined>): Uint8Array;
2182
+
2183
+ export function buildCargoHatchFullConfigData(entity: number, config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): Uint8Array;
2184
+
2185
+ export function buildCargoHatchCopyConfigData(config?: Pick<LoaderFullConfig, "filterMode" | "filterSlots">): Uint8Array;
2186
+
2187
+ export function buildClipboardConfigData(target: ClipboardTarget, commandName: string, values?: Iterable<number>): Uint8Array;
2188
+
2189
+ export function buildClipboardFixedAngleData(target: ClipboardTarget, direction: FixedAngleDirection): Uint8Array;
2190
+
2191
+ export function buildGeneratorClipboardDirectionData(direction: FixedAngleDirection): Uint8Array;
2192
+
2193
+ export function buildCargoEjectorDirectionData(entity: number, direction: FixedAngleDirection): Uint8Array;
2194
+
2195
+ export function buildCargoEjectorPasteConfigData(entity: number, direction: FixedAngleDirection): Uint8Array;
2196
+
2197
+ export function buildCargoEjectorCopyConfigData(direction: FixedAngleDirection): Uint8Array;
2198
+
2199
+ export function buildCargoEjectorClipboardDirectionData(direction: FixedAngleDirection): Uint8Array;
2200
+
2201
+ export function buildExpandoClipboardAngleData(angle: number): Uint8Array;
2202
+
2203
+ export function buildLoaderClipboardConfigData(config?: LoaderConfig): Uint8Array;
2204
+
2205
+ export function buildLoaderConfigData(entity: number, config?: LoaderConfig): Uint8Array;
2206
+
2207
+ export function buildLoaderCopyConfigData(config?: LoaderFullConfig): Uint8Array;
2208
+
2209
+ export function buildLoaderFilterConfigData(entity: number, filterMode?: LoaderFilterMode): Uint8Array;
2210
+
2211
+ export function buildLoaderFilterItemsData(entity: number, filterSlots?: Array<number | null | undefined>): Uint8Array;
2212
+
2213
+ export function buildLoaderFullConfigData(entity: number, config?: LoaderFullConfig): Uint8Array;
2214
+
2215
+ export function buildPusherConfigData(entity: number, config?: PusherConfig): Uint8Array;
2216
+
2217
+ export function buildPusherFilterItemsData(entity: number, filterSlots?: Array<number | null | undefined>): Uint8Array;
2218
+
2219
+ export function generateGeneratorMaze(seed: number): GeneratorMaze;
2220
+
2221
+ export function solveGeneratorMazeSeed(seed: number): string;
2222
+
2223
+ export function maybeSolveGeneratorMazeSeed(seed: number | null | undefined): string | null;
2224
+
2225
+ export function decryptPayload(wireBytes: Uint8Array | ArrayBuffer | number[], worldId: number, seed: number): Uint8Array;
2226
+
2227
+ export function decompressLz4Frame(bytes: Uint8Array | ArrayBuffer | number[]): Uint8Array;
2228
+
2229
+ export function decodeModelData(bytes: Uint8Array | ArrayBuffer | number[]): unknown;
2230
+
2231
+ export function createSession(noticeVersion?: number | null): Promise<Session>;
2232
+
2233
+ export function createAnonSession(anonKey?: string | null, noticeVersion?: number | null, baseUrl?: string): Promise<AnonSession>;
2234
+
2235
+ export function createAnonToken(noticeVersion?: number | null, baseUrl?: string): Promise<string>;
2236
+
2237
+ export function fetchNoticeVersion(): Promise<number>;
2238
+
2239
+ export function fetchGameVersion(): Promise<string>;
2240
+
2241
+ export function fetchServers(): Promise<Server[]>;
2242
+
2243
+ export function fetchShips(session: Session, server: ServerRef): Promise<Ship[]>;
2244
+
2245
+ export function fetchShipList(session: Session, server: ServerRef): Promise<ShipList>;
2246
+
2247
+ export function joinShip(server: ServerRef, ship?: ShipRef, session?: Session | null): Promise<DredlessClient>;
2248
+
2249
+ export function startShip(server: ServerRef, ship?: ShipRef, session?: Session | null): Promise<DredlessClient>;
2250
+
2251
+ export function startNewShip(server: ServerRef, name?: string, color?: string, session?: Session | null): Promise<DredlessClient>;
2252
+
2253
+ export function joinInvite(server: ServerRef, code: string, session?: Session | null): Promise<DredlessClient>;
2254
+
2255
+ export function buildBlueprintPlacementMessage(placement: BlueprintPlacement): BlueprintPlacementMessage;
2256
+
2257
+ export interface DredlessNamespace {
2258
+ Session: typeof Session;
2259
+ AnonSession: typeof AnonSession;
2260
+ Connection: typeof Connection;
2261
+ DredlessClient: typeof DredlessClient;
2262
+ createSession: typeof createSession;
2263
+ createAnonSession: typeof createAnonSession;
2264
+ createAnonToken: typeof createAnonToken;
2265
+ fetchNoticeVersion: typeof fetchNoticeVersion;
2266
+ fetchGameVersion: typeof fetchGameVersion;
2267
+ fetchServers: typeof fetchServers;
2268
+ fetchShips: typeof fetchShips;
2269
+ fetchShipList: typeof fetchShipList;
2270
+ joinShip: typeof joinShip;
2271
+ startShip: typeof startShip;
2272
+ startNewShip: typeof startNewShip;
2273
+ joinInvite: typeof joinInvite;
2274
+ }
2275
+
2276
+ export const Dredless: DredlessNamespace;
2277
+ export default Dredless;