@pairlobby/fixtures 0.11.0

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 (59) hide show
  1. package/LICENSE +93 -0
  2. package/README.md +5 -0
  3. package/dist/admin-contract.d.ts +3 -0
  4. package/dist/admin-contract.d.ts.map +1 -0
  5. package/dist/admin-contract.js +63 -0
  6. package/dist/admin-contract.js.map +1 -0
  7. package/dist/auto-close-contract.d.ts +3 -0
  8. package/dist/auto-close-contract.d.ts.map +1 -0
  9. package/dist/auto-close-contract.js +204 -0
  10. package/dist/auto-close-contract.js.map +1 -0
  11. package/dist/contract.d.ts +4 -0
  12. package/dist/contract.d.ts.map +1 -0
  13. package/dist/contract.js +688 -0
  14. package/dist/contract.js.map +1 -0
  15. package/dist/fake-agent.d.ts +41 -0
  16. package/dist/fake-agent.d.ts.map +1 -0
  17. package/dist/fake-agent.js +90 -0
  18. package/dist/fake-agent.js.map +1 -0
  19. package/dist/faulty-store.d.ts +19 -0
  20. package/dist/faulty-store.d.ts.map +1 -0
  21. package/dist/faulty-store.js +54 -0
  22. package/dist/faulty-store.js.map +1 -0
  23. package/dist/group-contract.d.ts +3 -0
  24. package/dist/group-contract.d.ts.map +1 -0
  25. package/dist/group-contract.js +237 -0
  26. package/dist/group-contract.js.map +1 -0
  27. package/dist/handover-samples.d.ts +3 -0
  28. package/dist/handover-samples.d.ts.map +1 -0
  29. package/dist/handover-samples.js +23 -0
  30. package/dist/handover-samples.js.map +1 -0
  31. package/dist/harness.d.ts +635 -0
  32. package/dist/harness.d.ts.map +1 -0
  33. package/dist/harness.js +114 -0
  34. package/dist/harness.js.map +1 -0
  35. package/dist/index.d.ts +9 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +9 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/interrupt-contract.d.ts +3 -0
  40. package/dist/interrupt-contract.d.ts.map +1 -0
  41. package/dist/interrupt-contract.js +142 -0
  42. package/dist/interrupt-contract.js.map +1 -0
  43. package/dist/memory-store.d.ts +39 -0
  44. package/dist/memory-store.d.ts.map +1 -0
  45. package/dist/memory-store.js +175 -0
  46. package/dist/memory-store.js.map +1 -0
  47. package/dist/redemption-contract.d.ts +3 -0
  48. package/dist/redemption-contract.d.ts.map +1 -0
  49. package/dist/redemption-contract.js +94 -0
  50. package/dist/redemption-contract.js.map +1 -0
  51. package/dist/rejoin-contract.d.ts +3 -0
  52. package/dist/rejoin-contract.d.ts.map +1 -0
  53. package/dist/rejoin-contract.js +117 -0
  54. package/dist/rejoin-contract.js.map +1 -0
  55. package/dist/request-contract.d.ts +3 -0
  56. package/dist/request-contract.d.ts.map +1 -0
  57. package/dist/request-contract.js +215 -0
  58. package/dist/request-contract.js.map +1 -0
  59. package/package.json +40 -0
@@ -0,0 +1,635 @@
1
+ import type { ParticipantRole, RoomEvent, RoomInvitationChange, RoomPolicy, RoomSnapshot, SendEventRequest } from '@pairlobby/protocol';
2
+ import type { Identity, RoomStore } from '@pairlobby/server-core';
3
+ type RedeemedRoomResult = {
4
+ participantId: string;
5
+ roomId: string;
6
+ replayed: boolean;
7
+ };
8
+ type SentEventResult = {
9
+ event: RoomEvent;
10
+ deduplicated: boolean;
11
+ };
12
+ export interface Clock {
13
+ now(): number;
14
+ advance(ms: number): void;
15
+ }
16
+ export declare function fixedClock(start?: number): Clock;
17
+ /** A store that can also simulate retention dropping the front of the log. */
18
+ export interface TestableRoomStore extends RoomStore {
19
+ dropHistoryBefore(roomId: string, seq: number): void;
20
+ close?(): void;
21
+ }
22
+ export interface CreatedRoom {
23
+ roomId: string;
24
+ participantId: string;
25
+ controllerCredential: string;
26
+ participantCredential: string;
27
+ inviteCode: string;
28
+ }
29
+ export declare class RoomHarness {
30
+ readonly clock: Clock;
31
+ readonly store: TestableRoomStore;
32
+ private readonly service;
33
+ private roomId;
34
+ private controllerCredential;
35
+ constructor(store: TestableRoomStore, clock?: Clock);
36
+ createRoom(name: string, identity: Identity, policy?: RoomPolicy): Promise<CreatedRoom>;
37
+ mintInvite(role: ParticipantRole): Promise<string>;
38
+ /** Mints using a specific credential, to check who is allowed to widen a room. */
39
+ mintInviteAs(credential: string, role?: ParticipantRole): Promise<string>;
40
+ /** Mints a code that stops working after `lifetimeMs`. */
41
+ mintExpiringInvite(lifetimeMs: number, role?: ParticipantRole): Promise<string>;
42
+ mintInviteOnce(role?: ParticipantRole): Promise<string>;
43
+ /** The controller credential, for tests that need to act as the room owner. */
44
+ controller(): string;
45
+ redeemInvite(code: string, identity: Identity, attemptId: string, participantCredential: string): Promise<RedeemedRoomResult>;
46
+ send(credential: string, request: SendEventRequest): Promise<SentEventResult>;
47
+ control(credential: string, targetParticipantId: string, paused: boolean): Promise<RoomEvent>;
48
+ revoke(credential: string, targetParticipantId: string): Promise<RoomEvent>;
49
+ leave(credential: string): Promise<RoomEvent>;
50
+ rename(credential: string, name: string): Promise<RoomEvent>;
51
+ setJoinPolicy(credential: string, joinPolicy: 'invite_only' | 'open_to_guests'): Promise<RoomEvent>;
52
+ setInviteRole(credential: string, inviteRole: 'member' | 'guest'): Promise<RoomEvent>;
53
+ joinAsGuest(identity: Identity, participantCredential: string): Promise<import("@pairlobby/server-core").RedeemResult>;
54
+ recordInvitation(credential: string, change: RoomInvitationChange): Promise<RoomEvent>;
55
+ setLocalJoin(credential: string, localJoin: boolean): Promise<RoomEvent>;
56
+ /** As the relay would call it after establishing the caller is on its local network. */
57
+ joinOnLocalNetwork(identity: Identity, participantCredential: string): Promise<import("@pairlobby/server-core").RedeemResult>;
58
+ setLocked(credential: string, locked: boolean): Promise<RoomEvent>;
59
+ setExpiry(credential: string, expiresAt: number | null): Promise<RoomEvent>;
60
+ close(credential: string): Promise<RoomEvent>;
61
+ read(credential: string, after: number, limit?: number): Promise<{
62
+ latestSeq: number;
63
+ earliestSeq: number;
64
+ events: ({
65
+ at: number;
66
+ eventId: string;
67
+ protocolVersion: 1;
68
+ roomId: string;
69
+ seq: number;
70
+ senderId: string | null;
71
+ idempotencyKey: string | null;
72
+ recipientId: string | null;
73
+ replyTo: string | null;
74
+ recipientIds?: string[] | undefined;
75
+ allRecipients?: boolean | undefined;
76
+ quoteOf?: string | undefined;
77
+ } & ({
78
+ type: "message";
79
+ payload: {
80
+ text: string;
81
+ priority: "normal" | "priority";
82
+ responseStage?: "progress" | "final" | undefined;
83
+ };
84
+ } | {
85
+ type: "message.received";
86
+ payload: {
87
+ eventId: string;
88
+ stage?: "read" | undefined;
89
+ action?: "declined" | "working" | "waiting" | "no_action" | "reply_pending" | "done" | undefined;
90
+ reason?: string | undefined;
91
+ responseEventId?: string | undefined;
92
+ };
93
+ } | {
94
+ type: "message.delivery_failed";
95
+ payload: {
96
+ eventId: string;
97
+ reason: string;
98
+ stage?: "delivery" | "execution" | "publishing" | undefined;
99
+ };
100
+ } | {
101
+ type: "handover.offered";
102
+ payload: {
103
+ handoverId: string;
104
+ revision: number;
105
+ document: {
106
+ metadata: {
107
+ mode: "sequential" | "concurrent";
108
+ goal: string;
109
+ recipient: string;
110
+ nextAction: string;
111
+ decisions: string[];
112
+ blockers: string[];
113
+ repository?: {
114
+ dirty: boolean;
115
+ branch: string;
116
+ commit: string;
117
+ missingPaths: string[];
118
+ remote?: string | undefined;
119
+ worktreePath?: string | undefined;
120
+ } | undefined;
121
+ tests?: {
122
+ command: string;
123
+ result: "passed" | "failed" | "not_run";
124
+ notes?: string | undefined;
125
+ } | undefined;
126
+ };
127
+ body: string;
128
+ };
129
+ };
130
+ } | {
131
+ type: "handover.accepted";
132
+ payload: {
133
+ handoverId: string;
134
+ revision: number;
135
+ note?: string | undefined;
136
+ };
137
+ } | {
138
+ type: "handover.declined";
139
+ payload: {
140
+ handoverId: string;
141
+ revision: number;
142
+ reason?: string | undefined;
143
+ };
144
+ } | {
145
+ type: "participant.joined";
146
+ payload: {
147
+ participantId: string;
148
+ displayName: string;
149
+ kind: "agent" | "human";
150
+ role: "controller" | "guest" | "member";
151
+ capabilities?: {
152
+ deliverUnsolicited: boolean;
153
+ cancelTurn: boolean;
154
+ cancelTool: boolean;
155
+ runtime?: string | undefined;
156
+ runtimeVersion?: string | undefined;
157
+ } | undefined;
158
+ };
159
+ } | {
160
+ type: "participant.renamed";
161
+ payload: {
162
+ name: string;
163
+ source: "profile" | "room";
164
+ participantId: string;
165
+ previousName: string;
166
+ };
167
+ } | {
168
+ type: "participant.left";
169
+ payload: {
170
+ participantId: string;
171
+ };
172
+ } | {
173
+ type: "participant.revoked";
174
+ payload: {
175
+ participantId: string;
176
+ };
177
+ } | {
178
+ type: "control.pause";
179
+ payload: {
180
+ revision: number;
181
+ targetParticipantId: string;
182
+ reason?: string | undefined;
183
+ interrupt?: boolean | undefined;
184
+ };
185
+ } | {
186
+ type: "control.resume";
187
+ payload: {
188
+ revision: number;
189
+ targetParticipantId: string;
190
+ };
191
+ } | {
192
+ type: "control.ack";
193
+ payload: {
194
+ revision: number;
195
+ targetParticipantId: string;
196
+ outcome: "pause_requested" | "paused_between_turns" | "current_turn_cancelled" | "tool_cancellation_unknown" | "resumed" | "unsupported" | "disconnected";
197
+ detail?: string | undefined;
198
+ };
199
+ } | {
200
+ type: "room.closed";
201
+ payload: {
202
+ exportWindowEndsAt: number;
203
+ reason?: "inactivity" | "age" | "agents_and_guests_left" | "manual" | undefined;
204
+ };
205
+ } | {
206
+ type: "room.auto_close_changed";
207
+ payload: {
208
+ autoClose: {
209
+ mode: "off";
210
+ } | {
211
+ mode: "inactivity";
212
+ afterMs: number;
213
+ } | {
214
+ mode: "age";
215
+ afterMs: number;
216
+ } | {
217
+ mode: "agents_and_guests_left";
218
+ };
219
+ previous: {
220
+ mode: "off";
221
+ } | {
222
+ mode: "inactivity";
223
+ afterMs: number;
224
+ } | {
225
+ mode: "age";
226
+ afterMs: number;
227
+ } | {
228
+ mode: "agents_and_guests_left";
229
+ };
230
+ };
231
+ } | {
232
+ type: "room.renamed";
233
+ payload: {
234
+ name: string;
235
+ previousName: string;
236
+ };
237
+ } | {
238
+ type: "room.expiry_changed";
239
+ payload: {
240
+ expiresAt: number | null;
241
+ previousExpiresAt: number | null;
242
+ };
243
+ } | {
244
+ type: "room.access_changed";
245
+ payload: {
246
+ joinPolicy: "invite_only" | "open_to_guests";
247
+ inviteRole?: "guest" | "member" | undefined;
248
+ };
249
+ } | {
250
+ type: "room.local_join_changed";
251
+ payload: {
252
+ localJoin: boolean;
253
+ };
254
+ } | {
255
+ type: "room.invitation_changed";
256
+ payload: {
257
+ handle: string;
258
+ state: "invited" | "withdrawn";
259
+ role?: "guest" | "member" | undefined;
260
+ agents?: number | undefined;
261
+ };
262
+ } | {
263
+ type: "room.lock_changed";
264
+ payload: {
265
+ locked: boolean;
266
+ };
267
+ } | {
268
+ type: "participant.mute_changed";
269
+ payload: {
270
+ participantId: string;
271
+ muted: boolean;
272
+ };
273
+ } | {
274
+ type: "participant.role_changed";
275
+ payload: {
276
+ participantId: string;
277
+ role: "controller" | "guest" | "member";
278
+ previousRole: "controller" | "guest" | "member";
279
+ };
280
+ } | {
281
+ type: "conversation.turn_changed";
282
+ payload: {
283
+ mode: "sequential" | "parallel";
284
+ action: "mode" | "passed" | "working" | "claimed" | "skipped" | "cancelled";
285
+ requestIds: string[];
286
+ participantIds: string[];
287
+ };
288
+ }))[];
289
+ hasMore: boolean;
290
+ }>;
291
+ snapshot(credential: string): Promise<RoomSnapshot>;
292
+ export(credential: string): Promise<{
293
+ room: {
294
+ name: string;
295
+ expiresAt: number | null;
296
+ roomId: string;
297
+ createdAt: number;
298
+ closedAt: number | null;
299
+ lifecycle: "open" | "closed" | "expired" | "deleted";
300
+ policy: {
301
+ joinPolicy: "invite_only" | "open_to_guests";
302
+ maxParticipants: number;
303
+ maxEventPayloadBytes: number;
304
+ maxRetainedEventBytes: number;
305
+ maxRetainedEvents: number;
306
+ roomLifetimeMs: number | null;
307
+ inviteLifetimeMs: number | null;
308
+ exportWindowMs: number;
309
+ connectTicketLifetimeMs: number;
310
+ autoClose?: {
311
+ mode: "off";
312
+ } | {
313
+ mode: "inactivity";
314
+ afterMs: number;
315
+ } | {
316
+ mode: "age";
317
+ afterMs: number;
318
+ } | {
319
+ mode: "agents_and_guests_left";
320
+ } | undefined;
321
+ inviteRole?: "guest" | "member" | undefined;
322
+ localJoin?: boolean | undefined;
323
+ };
324
+ controlRevision: number;
325
+ latestSeq: number;
326
+ earliestSeq: number;
327
+ participants: {
328
+ participantId: string;
329
+ displayName: string;
330
+ kind: "agent" | "human";
331
+ role: "controller" | "guest" | "member";
332
+ capabilities: {
333
+ deliverUnsolicited: boolean;
334
+ cancelTurn: boolean;
335
+ cancelTool: boolean;
336
+ runtime?: string | undefined;
337
+ runtimeVersion?: string | undefined;
338
+ } | null;
339
+ controlRevision: number;
340
+ joinedAt: number;
341
+ paused: boolean;
342
+ acknowledgedOutcome: "pause_requested" | "paused_between_turns" | "current_turn_cancelled" | "tool_cancellation_unknown" | "resumed" | "unsupported" | "disconnected" | null;
343
+ revoked: boolean;
344
+ left: boolean;
345
+ muted?: boolean | undefined;
346
+ nameSource?: "profile" | "room" | undefined;
347
+ interruptRequested?: boolean | undefined;
348
+ acknowledgedRevision?: number | undefined;
349
+ }[];
350
+ locked?: boolean | undefined;
351
+ turnMode?: "sequential" | "parallel" | undefined;
352
+ lastMessageAt?: number | null | undefined;
353
+ autoCloseArmed?: boolean | undefined;
354
+ autoCloseAt?: number | null | undefined;
355
+ closeReason?: "inactivity" | "age" | "agents_and_guests_left" | "manual" | undefined;
356
+ messageReceiptScope?: "recipient" | "members" | undefined;
357
+ messageStagesSupported?: boolean | undefined;
358
+ rejoinSupported?: boolean | undefined;
359
+ renameSelfSupported?: boolean | undefined;
360
+ adminRolesSupported?: boolean | undefined;
361
+ inviteRoleSupported?: boolean | undefined;
362
+ autoCloseSupported?: boolean | undefined;
363
+ interruptSupported?: boolean | undefined;
364
+ quotedMessagesSupported?: boolean | undefined;
365
+ groupTurnsSupported?: boolean | undefined;
366
+ workingStatusSupported?: boolean | undefined;
367
+ };
368
+ events: ({
369
+ at: number;
370
+ eventId: string;
371
+ protocolVersion: 1;
372
+ roomId: string;
373
+ seq: number;
374
+ senderId: string | null;
375
+ idempotencyKey: string | null;
376
+ recipientId: string | null;
377
+ replyTo: string | null;
378
+ recipientIds?: string[] | undefined;
379
+ allRecipients?: boolean | undefined;
380
+ quoteOf?: string | undefined;
381
+ } & ({
382
+ type: "message";
383
+ payload: {
384
+ text: string;
385
+ priority: "normal" | "priority";
386
+ responseStage?: "progress" | "final" | undefined;
387
+ };
388
+ } | {
389
+ type: "message.received";
390
+ payload: {
391
+ eventId: string;
392
+ stage?: "read" | undefined;
393
+ action?: "declined" | "working" | "waiting" | "no_action" | "reply_pending" | "done" | undefined;
394
+ reason?: string | undefined;
395
+ responseEventId?: string | undefined;
396
+ };
397
+ } | {
398
+ type: "message.delivery_failed";
399
+ payload: {
400
+ eventId: string;
401
+ reason: string;
402
+ stage?: "delivery" | "execution" | "publishing" | undefined;
403
+ };
404
+ } | {
405
+ type: "handover.offered";
406
+ payload: {
407
+ handoverId: string;
408
+ revision: number;
409
+ document: {
410
+ metadata: {
411
+ mode: "sequential" | "concurrent";
412
+ goal: string;
413
+ recipient: string;
414
+ nextAction: string;
415
+ decisions: string[];
416
+ blockers: string[];
417
+ repository?: {
418
+ dirty: boolean;
419
+ branch: string;
420
+ commit: string;
421
+ missingPaths: string[];
422
+ remote?: string | undefined;
423
+ worktreePath?: string | undefined;
424
+ } | undefined;
425
+ tests?: {
426
+ command: string;
427
+ result: "passed" | "failed" | "not_run";
428
+ notes?: string | undefined;
429
+ } | undefined;
430
+ };
431
+ body: string;
432
+ };
433
+ };
434
+ } | {
435
+ type: "handover.accepted";
436
+ payload: {
437
+ handoverId: string;
438
+ revision: number;
439
+ note?: string | undefined;
440
+ };
441
+ } | {
442
+ type: "handover.declined";
443
+ payload: {
444
+ handoverId: string;
445
+ revision: number;
446
+ reason?: string | undefined;
447
+ };
448
+ } | {
449
+ type: "participant.joined";
450
+ payload: {
451
+ participantId: string;
452
+ displayName: string;
453
+ kind: "agent" | "human";
454
+ role: "controller" | "guest" | "member";
455
+ capabilities?: {
456
+ deliverUnsolicited: boolean;
457
+ cancelTurn: boolean;
458
+ cancelTool: boolean;
459
+ runtime?: string | undefined;
460
+ runtimeVersion?: string | undefined;
461
+ } | undefined;
462
+ };
463
+ } | {
464
+ type: "participant.renamed";
465
+ payload: {
466
+ name: string;
467
+ source: "profile" | "room";
468
+ participantId: string;
469
+ previousName: string;
470
+ };
471
+ } | {
472
+ type: "participant.left";
473
+ payload: {
474
+ participantId: string;
475
+ };
476
+ } | {
477
+ type: "participant.revoked";
478
+ payload: {
479
+ participantId: string;
480
+ };
481
+ } | {
482
+ type: "control.pause";
483
+ payload: {
484
+ revision: number;
485
+ targetParticipantId: string;
486
+ reason?: string | undefined;
487
+ interrupt?: boolean | undefined;
488
+ };
489
+ } | {
490
+ type: "control.resume";
491
+ payload: {
492
+ revision: number;
493
+ targetParticipantId: string;
494
+ };
495
+ } | {
496
+ type: "control.ack";
497
+ payload: {
498
+ revision: number;
499
+ targetParticipantId: string;
500
+ outcome: "pause_requested" | "paused_between_turns" | "current_turn_cancelled" | "tool_cancellation_unknown" | "resumed" | "unsupported" | "disconnected";
501
+ detail?: string | undefined;
502
+ };
503
+ } | {
504
+ type: "room.closed";
505
+ payload: {
506
+ exportWindowEndsAt: number;
507
+ reason?: "inactivity" | "age" | "agents_and_guests_left" | "manual" | undefined;
508
+ };
509
+ } | {
510
+ type: "room.auto_close_changed";
511
+ payload: {
512
+ autoClose: {
513
+ mode: "off";
514
+ } | {
515
+ mode: "inactivity";
516
+ afterMs: number;
517
+ } | {
518
+ mode: "age";
519
+ afterMs: number;
520
+ } | {
521
+ mode: "agents_and_guests_left";
522
+ };
523
+ previous: {
524
+ mode: "off";
525
+ } | {
526
+ mode: "inactivity";
527
+ afterMs: number;
528
+ } | {
529
+ mode: "age";
530
+ afterMs: number;
531
+ } | {
532
+ mode: "agents_and_guests_left";
533
+ };
534
+ };
535
+ } | {
536
+ type: "room.renamed";
537
+ payload: {
538
+ name: string;
539
+ previousName: string;
540
+ };
541
+ } | {
542
+ type: "room.expiry_changed";
543
+ payload: {
544
+ expiresAt: number | null;
545
+ previousExpiresAt: number | null;
546
+ };
547
+ } | {
548
+ type: "room.access_changed";
549
+ payload: {
550
+ joinPolicy: "invite_only" | "open_to_guests";
551
+ inviteRole?: "guest" | "member" | undefined;
552
+ };
553
+ } | {
554
+ type: "room.local_join_changed";
555
+ payload: {
556
+ localJoin: boolean;
557
+ };
558
+ } | {
559
+ type: "room.invitation_changed";
560
+ payload: {
561
+ handle: string;
562
+ state: "invited" | "withdrawn";
563
+ role?: "guest" | "member" | undefined;
564
+ agents?: number | undefined;
565
+ };
566
+ } | {
567
+ type: "room.lock_changed";
568
+ payload: {
569
+ locked: boolean;
570
+ };
571
+ } | {
572
+ type: "participant.mute_changed";
573
+ payload: {
574
+ participantId: string;
575
+ muted: boolean;
576
+ };
577
+ } | {
578
+ type: "participant.role_changed";
579
+ payload: {
580
+ participantId: string;
581
+ role: "controller" | "guest" | "member";
582
+ previousRole: "controller" | "guest" | "member";
583
+ };
584
+ } | {
585
+ type: "conversation.turn_changed";
586
+ payload: {
587
+ mode: "sequential" | "parallel";
588
+ action: "mode" | "passed" | "working" | "claimed" | "skipped" | "cancelled";
589
+ requestIds: string[];
590
+ participantIds: string[];
591
+ };
592
+ }))[];
593
+ handovers: {
594
+ handoverId: string;
595
+ revision: number;
596
+ document: {
597
+ metadata: {
598
+ mode: "sequential" | "concurrent";
599
+ goal: string;
600
+ recipient: string;
601
+ nextAction: string;
602
+ decisions: string[];
603
+ blockers: string[];
604
+ repository?: {
605
+ dirty: boolean;
606
+ branch: string;
607
+ commit: string;
608
+ missingPaths: string[];
609
+ remote?: string | undefined;
610
+ worktreePath?: string | undefined;
611
+ } | undefined;
612
+ tests?: {
613
+ command: string;
614
+ result: "passed" | "failed" | "not_run";
615
+ notes?: string | undefined;
616
+ } | undefined;
617
+ };
618
+ body: string;
619
+ };
620
+ state: "offered" | "accepted" | "declined";
621
+ roomId: string;
622
+ senderId: string;
623
+ recipientId: string;
624
+ offeredEventId: string;
625
+ resolvedEventId: string | null;
626
+ resolvedAt: number | null;
627
+ }[];
628
+ exportedAt: number;
629
+ complete: boolean;
630
+ }>;
631
+ dropHistoryBefore(seq: number): void;
632
+ dispose(): void;
633
+ }
634
+ export {};
635
+ //# sourceMappingURL=harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}