@ottochain/sdk 1.6.0 → 2.0.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 (40) hide show
  1. package/dist/cjs/apps/contracts/index.js +18 -13
  2. package/dist/cjs/apps/contracts/state-machines/index.js +139 -7
  3. package/dist/cjs/apps/corporate/index.js +18 -20
  4. package/dist/cjs/apps/corporate/state-machines/index.js +535 -6336
  5. package/dist/cjs/apps/governance/index.js +32 -31
  6. package/dist/cjs/apps/governance/state-machines/index.js +498 -2315
  7. package/dist/cjs/apps/identity/index.js +15 -7
  8. package/dist/cjs/apps/identity/state-machines/index.js +516 -4
  9. package/dist/cjs/apps/index.js +15 -13
  10. package/dist/cjs/apps/markets/index.js +23 -10
  11. package/dist/cjs/apps/markets/state-machines/index.js +1904 -230
  12. package/dist/esm/apps/contracts/index.js +16 -13
  13. package/dist/esm/apps/contracts/state-machines/index.js +138 -6
  14. package/dist/esm/apps/corporate/index.js +14 -20
  15. package/dist/esm/apps/corporate/state-machines/index.js +534 -6335
  16. package/dist/esm/apps/governance/index.js +26 -30
  17. package/dist/esm/apps/governance/state-machines/index.js +497 -2314
  18. package/dist/esm/apps/identity/index.js +13 -7
  19. package/dist/esm/apps/identity/state-machines/index.js +515 -3
  20. package/dist/esm/apps/index.js +14 -12
  21. package/dist/esm/apps/markets/index.js +19 -10
  22. package/dist/esm/apps/markets/state-machines/index.js +1903 -229
  23. package/dist/types/apps/contracts/index.d.ts +661 -9
  24. package/dist/types/apps/contracts/state-machines/index.d.ts +109 -6
  25. package/dist/types/apps/corporate/index.d.ts +4015 -7
  26. package/dist/types/apps/corporate/state-machines/index.d.ts +472 -5587
  27. package/dist/types/apps/governance/index.d.ts +2151 -12
  28. package/dist/types/apps/governance/state-machines/index.d.ts +462 -1875
  29. package/dist/types/apps/identity/index.d.ts +601 -4
  30. package/dist/types/apps/identity/state-machines/index.d.ts +393 -3
  31. package/dist/types/apps/index.d.ts +14 -12
  32. package/dist/types/apps/markets/index.d.ts +1690 -7
  33. package/dist/types/apps/markets/state-machines/index.d.ts +1416 -184
  34. package/package.json +1 -1
  35. package/dist/cjs/apps/oracles/index.js +0 -59
  36. package/dist/cjs/apps/oracles/state-machines/index.js +0 -415
  37. package/dist/esm/apps/oracles/index.js +0 -42
  38. package/dist/esm/apps/oracles/state-machines/index.js +0 -412
  39. package/dist/types/apps/oracles/index.d.ts +0 -34
  40. package/dist/types/apps/oracles/state-machines/index.d.ts +0 -312
@@ -2,47 +2,58 @@
2
2
  * Auto-generated from JSON state machine definitions.
3
3
  * DO NOT EDIT - regenerate with: npm run prebuild
4
4
  */
5
- export const marketUniversalDef = {
5
+ export const marketAuctionDef = {
6
6
  "metadata": {
7
- "name": "Market",
8
- "description": "Universal market state machine: predictions, auctions, crowdfunding, group buys",
9
- "version": "1.1.0"
7
+ "name": "MarketAuction",
8
+ "description": "Auction market supporting English, Dutch, and sealed-bid variants",
9
+ "version": "1.0.0",
10
+ "crossReferences": {
11
+ "sellerIdentityId": "Links to seller's IdentityAgent",
12
+ "escrowId": "Links to ContractEscrow for asset custody"
13
+ }
10
14
  },
11
15
  "states": {
12
16
  "PROPOSED": {
13
17
  "id": "PROPOSED",
14
18
  "isFinal": false,
15
- "metadata": null
19
+ "metadata": {
20
+ "description": "Auction created but not yet open"
21
+ }
16
22
  },
17
23
  "OPEN": {
18
24
  "id": "OPEN",
19
25
  "isFinal": false,
20
- "metadata": null
21
- },
22
- "CLOSED": {
23
- "id": "CLOSED",
24
- "isFinal": false,
25
- "metadata": null
26
+ "metadata": {
27
+ "description": "Accepting bids"
28
+ }
26
29
  },
27
- "RESOLVING": {
28
- "id": "RESOLVING",
30
+ "CLOSING": {
31
+ "id": "CLOSING",
29
32
  "isFinal": false,
30
- "metadata": null
33
+ "metadata": {
34
+ "description": "Bid period ended, determining winner"
35
+ }
31
36
  },
32
37
  "SETTLED": {
33
38
  "id": "SETTLED",
34
39
  "isFinal": true,
35
- "metadata": null
40
+ "metadata": {
41
+ "description": "Winner determined, transfer complete"
42
+ }
36
43
  },
37
- "REFUNDED": {
38
- "id": "REFUNDED",
44
+ "NO_SALE": {
45
+ "id": "NO_SALE",
39
46
  "isFinal": true,
40
- "metadata": null
47
+ "metadata": {
48
+ "description": "Reserve not met or no valid bids"
49
+ }
41
50
  },
42
51
  "CANCELLED": {
43
52
  "id": "CANCELLED",
44
53
  "isFinal": true,
45
- "metadata": null
54
+ "metadata": {
55
+ "description": "Auction cancelled by seller"
56
+ }
46
57
  }
47
58
  },
48
59
  "initialState": "PROPOSED",
@@ -57,7 +68,7 @@ export const marketUniversalDef = {
57
68
  "var": "event.agent"
58
69
  },
59
70
  {
60
- "var": "state.creator"
71
+ "var": "state.seller"
61
72
  }
62
73
  ]
63
74
  },
@@ -69,8 +80,11 @@ export const marketUniversalDef = {
69
80
  {
70
81
  "status": "OPEN",
71
82
  "openedAt": {
72
- "var": "$epochProgress"
73
- }
83
+ "var": "$timestamp"
84
+ },
85
+ "bids": [],
86
+ "highBid": null,
87
+ "highBidder": null
74
88
  }
75
89
  ]
76
90
  },
@@ -86,7 +100,7 @@ export const marketUniversalDef = {
86
100
  "var": "event.agent"
87
101
  },
88
102
  {
89
- "var": "state.creator"
103
+ "var": "state.seller"
90
104
  }
91
105
  ]
92
106
  },
@@ -98,10 +112,7 @@ export const marketUniversalDef = {
98
112
  {
99
113
  "status": "CANCELLED",
100
114
  "cancelledAt": {
101
- "var": "$epochProgress"
102
- },
103
- "reason": {
104
- "var": "event.reason"
115
+ "var": "$timestamp"
105
116
  }
106
117
  }
107
118
  ]
@@ -111,15 +122,55 @@ export const marketUniversalDef = {
111
122
  {
112
123
  "from": "OPEN",
113
124
  "to": "OPEN",
114
- "eventName": "commit",
125
+ "eventName": "bid",
115
126
  "guard": {
116
127
  "and": [
117
128
  {
118
- ">": [
129
+ "!==": [
130
+ {
131
+ "var": "event.agent"
132
+ },
133
+ {
134
+ "var": "state.seller"
135
+ }
136
+ ]
137
+ },
138
+ {
139
+ ">=": [
119
140
  {
120
141
  "var": "event.amount"
121
142
  },
122
- 0
143
+ {
144
+ "var": "state.minBid"
145
+ }
146
+ ]
147
+ },
148
+ {
149
+ "or": [
150
+ {
151
+ "!": [
152
+ {
153
+ "var": "state.highBid"
154
+ }
155
+ ]
156
+ },
157
+ {
158
+ ">=": [
159
+ {
160
+ "var": "event.amount"
161
+ },
162
+ {
163
+ "+": [
164
+ {
165
+ "var": "state.highBid"
166
+ },
167
+ {
168
+ "var": "state.bidIncrement"
169
+ }
170
+ ]
171
+ }
172
+ ]
173
+ }
123
174
  ]
124
175
  },
125
176
  {
@@ -134,7 +185,7 @@ export const marketUniversalDef = {
134
185
  {
135
186
  "<=": [
136
187
  {
137
- "var": "$epochProgress"
188
+ "var": "$timestamp"
138
189
  },
139
190
  {
140
191
  "var": "state.deadline"
@@ -151,38 +202,34 @@ export const marketUniversalDef = {
151
202
  "var": "state"
152
203
  },
153
204
  {
154
- "commitments": {
155
- "merge": [
205
+ "bids": {
206
+ "cat": [
156
207
  {
157
- "var": "state.commitments"
208
+ "var": "state.bids"
158
209
  },
159
210
  [
160
211
  {
161
- "agent": {
212
+ "bidder": {
162
213
  "var": "event.agent"
163
214
  },
164
215
  "amount": {
165
216
  "var": "event.amount"
166
217
  },
167
- "data": {
168
- "var": "event.data"
169
- },
170
- "committedAt": {
171
- "var": "$epochProgress"
218
+ "bidAt": {
219
+ "var": "$timestamp"
172
220
  }
173
221
  }
174
222
  ]
175
223
  ]
176
224
  },
177
- "totalCommitted": {
178
- "+": [
179
- {
180
- "var": "state.totalCommitted"
181
- },
182
- {
183
- "var": "event.amount"
184
- }
185
- ]
225
+ "highBid": {
226
+ "var": "event.amount"
227
+ },
228
+ "highBidder": {
229
+ "var": "event.agent"
230
+ },
231
+ "lastBidAt": {
232
+ "var": "$timestamp"
186
233
  }
187
234
  }
188
235
  ]
@@ -191,7 +238,7 @@ export const marketUniversalDef = {
191
238
  },
192
239
  {
193
240
  "from": "OPEN",
194
- "to": "CLOSED",
241
+ "to": "CLOSING",
195
242
  "eventName": "close",
196
243
  "guard": {
197
244
  "or": [
@@ -201,7 +248,7 @@ export const marketUniversalDef = {
201
248
  "var": "event.agent"
202
249
  },
203
250
  {
204
- "var": "state.creator"
251
+ "var": "state.seller"
205
252
  }
206
253
  ]
207
254
  },
@@ -213,7 +260,7 @@ export const marketUniversalDef = {
213
260
  {
214
261
  ">=": [
215
262
  {
216
- "var": "$epochProgress"
263
+ "var": "$timestamp"
217
264
  },
218
265
  {
219
266
  "var": "state.deadline"
@@ -230,9 +277,9 @@ export const marketUniversalDef = {
230
277
  "var": "state"
231
278
  },
232
279
  {
233
- "status": "CLOSED",
280
+ "status": "CLOSING",
234
281
  "closedAt": {
235
- "var": "$epochProgress"
282
+ "var": "$timestamp"
236
283
  }
237
284
  }
238
285
  ]
@@ -240,28 +287,32 @@ export const marketUniversalDef = {
240
287
  "dependencies": []
241
288
  },
242
289
  {
243
- "from": "CLOSED",
244
- "to": "RESOLVING",
245
- "eventName": "submit_resolution",
290
+ "from": "CLOSING",
291
+ "to": "SETTLED",
292
+ "eventName": "settle",
246
293
  "guard": {
247
- "or": [
294
+ "and": [
248
295
  {
249
- "in": [
250
- {
251
- "var": "event.agent"
252
- },
253
- {
254
- "var": "state.oracles"
255
- }
256
- ]
296
+ "var": "state.highBidder"
257
297
  },
258
298
  {
259
- "===": [
299
+ "or": [
260
300
  {
261
- "var": "event.agent"
301
+ "!": [
302
+ {
303
+ "var": "state.reservePrice"
304
+ }
305
+ ]
262
306
  },
263
307
  {
264
- "var": "state.creator"
308
+ ">=": [
309
+ {
310
+ "var": "state.highBid"
311
+ },
312
+ {
313
+ "var": "state.reservePrice"
314
+ }
315
+ ]
265
316
  }
266
317
  ]
267
318
  }
@@ -273,29 +324,15 @@ export const marketUniversalDef = {
273
324
  "var": "state"
274
325
  },
275
326
  {
276
- "status": "RESOLVING",
277
- "resolutions": {
278
- "merge": [
279
- {
280
- "var": "state.resolutions"
281
- },
282
- [
283
- {
284
- "oracle": {
285
- "var": "event.agent"
286
- },
287
- "outcome": {
288
- "var": "event.outcome"
289
- },
290
- "proof": {
291
- "var": "event.proof"
292
- },
293
- "submittedAt": {
294
- "var": "$epochProgress"
295
- }
296
- }
297
- ]
298
- ]
327
+ "status": "SETTLED",
328
+ "settledAt": {
329
+ "var": "$timestamp"
330
+ },
331
+ "winner": {
332
+ "var": "state.highBidder"
333
+ },
334
+ "finalPrice": {
335
+ "var": "state.highBid"
299
336
  }
300
337
  }
301
338
  ]
@@ -303,37 +340,30 @@ export const marketUniversalDef = {
303
340
  "dependencies": []
304
341
  },
305
342
  {
306
- "from": "RESOLVING",
307
- "to": "RESOLVING",
308
- "eventName": "submit_resolution",
343
+ "from": "CLOSING",
344
+ "to": "NO_SALE",
345
+ "eventName": "no_sale",
309
346
  "guard": {
310
- "and": [
347
+ "or": [
311
348
  {
312
- "in": [
313
- {
314
- "var": "event.agent"
315
- },
349
+ "!": [
316
350
  {
317
- "var": "state.oracles"
351
+ "var": "state.highBidder"
318
352
  }
319
353
  ]
320
354
  },
321
355
  {
322
- "!": [
356
+ "and": [
323
357
  {
324
- "in": [
358
+ "var": "state.reservePrice"
359
+ },
360
+ {
361
+ "<": [
325
362
  {
326
- "var": "event.agent"
363
+ "var": "state.highBid"
327
364
  },
328
365
  {
329
- "map": [
330
- {
331
- "var": "state.resolutions"
332
- },
333
- {
334
- "var": "oracle"
335
- }
336
- ]
366
+ "var": "state.reservePrice"
337
367
  }
338
368
  ]
339
369
  }
@@ -347,75 +377,90 @@ export const marketUniversalDef = {
347
377
  "var": "state"
348
378
  },
349
379
  {
350
- "resolutions": {
351
- "merge": [
380
+ "status": "NO_SALE",
381
+ "closedAt": {
382
+ "var": "$timestamp"
383
+ },
384
+ "reason": {
385
+ "if": [
352
386
  {
353
- "var": "state.resolutions"
354
- },
355
- [
356
- {
357
- "oracle": {
358
- "var": "event.agent"
359
- },
360
- "outcome": {
361
- "var": "event.outcome"
362
- },
363
- "proof": {
364
- "var": "event.proof"
365
- },
366
- "submittedAt": {
367
- "var": "$epochProgress"
387
+ "!": [
388
+ {
389
+ "var": "state.highBidder"
368
390
  }
369
- }
370
- ]
391
+ ]
392
+ },
393
+ "no_bids",
394
+ "reserve_not_met"
371
395
  ]
372
396
  }
373
397
  }
374
398
  ]
375
399
  },
376
400
  "dependencies": []
401
+ }
402
+ ]
403
+ };
404
+ export const marketCrowdfundDef = {
405
+ "metadata": {
406
+ "name": "MarketCrowdfund",
407
+ "description": "All-or-nothing crowdfunding with threshold, deadline, and stretch goals",
408
+ "version": "1.0.0",
409
+ "crossReferences": {
410
+ "creatorIdentityId": "Links to creator's IdentityAgent",
411
+ "treasuryId": "Links to Treasury for fund custody"
412
+ }
413
+ },
414
+ "states": {
415
+ "PROPOSED": {
416
+ "id": "PROPOSED",
417
+ "isFinal": false,
418
+ "metadata": {
419
+ "description": "Campaign created but not yet open"
420
+ }
421
+ },
422
+ "OPEN": {
423
+ "id": "OPEN",
424
+ "isFinal": false,
425
+ "metadata": {
426
+ "description": "Accepting pledges"
427
+ }
428
+ },
429
+ "FUNDED": {
430
+ "id": "FUNDED",
431
+ "isFinal": true,
432
+ "metadata": {
433
+ "description": "Threshold met, funds released to creator"
434
+ }
435
+ },
436
+ "REFUNDED": {
437
+ "id": "REFUNDED",
438
+ "isFinal": true,
439
+ "metadata": {
440
+ "description": "Threshold not met, all pledges refunded"
441
+ }
377
442
  },
443
+ "CANCELLED": {
444
+ "id": "CANCELLED",
445
+ "isFinal": true,
446
+ "metadata": {
447
+ "description": "Campaign cancelled by creator"
448
+ }
449
+ }
450
+ },
451
+ "initialState": "PROPOSED",
452
+ "transitions": [
378
453
  {
379
- "from": "RESOLVING",
380
- "to": "SETTLED",
381
- "eventName": "finalize",
454
+ "from": "PROPOSED",
455
+ "to": "OPEN",
456
+ "eventName": "launch",
382
457
  "guard": {
383
- "or": [
384
- {
385
- ">=": [
386
- {
387
- "size": {
388
- "var": "state.resolutions"
389
- }
390
- },
391
- {
392
- "var": "state.quorum"
393
- }
394
- ]
395
- },
396
- {
397
- "===": [
398
- {
399
- "var": "state.marketType"
400
- },
401
- "crowdfund"
402
- ]
403
- },
458
+ "===": [
404
459
  {
405
- "===": [
406
- {
407
- "var": "state.marketType"
408
- },
409
- "group_buy"
410
- ]
460
+ "var": "event.agent"
411
461
  },
412
462
  {
413
- "===": [
414
- {
415
- "var": "state.marketType"
416
- },
417
- "auction"
418
- ]
463
+ "var": "state.creator"
419
464
  }
420
465
  ]
421
466
  },
@@ -425,37 +470,99 @@ export const marketUniversalDef = {
425
470
  "var": "state"
426
471
  },
427
472
  {
428
- "status": "SETTLED",
429
- "settledAt": {
430
- "var": "$epochProgress"
431
- },
432
- "finalOutcome": {
433
- "var": "event.outcome"
473
+ "status": "OPEN",
474
+ "launchedAt": {
475
+ "var": "$timestamp"
434
476
  },
435
- "settlement": {
436
- "var": "event.settlement"
437
- }
477
+ "pledges": [],
478
+ "totalPledged": 0,
479
+ "backerCount": 0
438
480
  }
439
481
  ]
440
482
  },
441
483
  "dependencies": []
442
484
  },
443
485
  {
444
- "from": "CLOSED",
445
- "to": "REFUNDED",
446
- "eventName": "refund",
486
+ "from": "PROPOSED",
487
+ "to": "CANCELLED",
488
+ "eventName": "cancel",
447
489
  "guard": {
448
- "and": [
490
+ "===": [
449
491
  {
450
- "var": "state.threshold"
492
+ "var": "event.agent"
451
493
  },
452
494
  {
453
- "<": [
495
+ "var": "state.creator"
496
+ }
497
+ ]
498
+ },
499
+ "effect": {
500
+ "merge": [
501
+ {
502
+ "var": "state"
503
+ },
504
+ {
505
+ "status": "CANCELLED",
506
+ "cancelledAt": {
507
+ "var": "$timestamp"
508
+ }
509
+ }
510
+ ]
511
+ },
512
+ "dependencies": []
513
+ },
514
+ {
515
+ "from": "OPEN",
516
+ "to": "OPEN",
517
+ "eventName": "pledge",
518
+ "guard": {
519
+ "and": [
520
+ {
521
+ ">": [
522
+ {
523
+ "var": "event.amount"
524
+ },
525
+ 0
526
+ ]
527
+ },
528
+ {
529
+ "!==": [
454
530
  {
455
- "var": "state.totalCommitted"
531
+ "var": "event.agent"
456
532
  },
457
533
  {
458
- "var": "state.threshold"
534
+ "var": "state.creator"
535
+ }
536
+ ]
537
+ },
538
+ {
539
+ "or": [
540
+ {
541
+ "!": [
542
+ {
543
+ "var": "state.minPledge"
544
+ }
545
+ ]
546
+ },
547
+ {
548
+ ">=": [
549
+ {
550
+ "var": "event.amount"
551
+ },
552
+ {
553
+ "var": "state.minPledge"
554
+ }
555
+ ]
556
+ }
557
+ ]
558
+ },
559
+ {
560
+ "<=": [
561
+ {
562
+ "var": "$timestamp"
563
+ },
564
+ {
565
+ "var": "state.deadline"
459
566
  }
460
567
  ]
461
568
  }
@@ -467,53 +574,206 @@ export const marketUniversalDef = {
467
574
  "var": "state"
468
575
  },
469
576
  {
470
- "status": "REFUNDED",
471
- "refundedAt": {
472
- "var": "$epochProgress"
577
+ "pledges": {
578
+ "cat": [
579
+ {
580
+ "var": "state.pledges"
581
+ },
582
+ [
583
+ {
584
+ "backer": {
585
+ "var": "event.agent"
586
+ },
587
+ "amount": {
588
+ "var": "event.amount"
589
+ },
590
+ "rewardTier": {
591
+ "var": "event.rewardTier"
592
+ },
593
+ "pledgedAt": {
594
+ "var": "$timestamp"
595
+ }
596
+ }
597
+ ]
598
+ ]
473
599
  },
474
- "reason": "threshold_not_met"
600
+ "totalPledged": {
601
+ "+": [
602
+ {
603
+ "var": "state.totalPledged"
604
+ },
605
+ {
606
+ "var": "event.amount"
607
+ }
608
+ ]
609
+ },
610
+ "backerCount": {
611
+ "+": [
612
+ {
613
+ "var": "state.backerCount"
614
+ },
615
+ 1
616
+ ]
617
+ }
475
618
  }
476
619
  ]
477
620
  },
478
621
  "dependencies": []
479
622
  },
480
623
  {
481
- "from": "RESOLVING",
482
- "to": "REFUNDED",
483
- "eventName": "refund",
624
+ "from": "OPEN",
625
+ "to": "OPEN",
626
+ "eventName": "increase_pledge",
484
627
  "guard": {
485
- "or": [
628
+ "and": [
486
629
  {
487
- "===": [
630
+ ">": [
488
631
  {
489
- "var": "event.agent"
632
+ "var": "event.additionalAmount"
633
+ },
634
+ 0
635
+ ]
636
+ },
637
+ {
638
+ "<=": [
639
+ {
640
+ "var": "$timestamp"
490
641
  },
491
642
  {
492
- "var": "state.creator"
643
+ "var": "state.deadline"
493
644
  }
494
645
  ]
495
646
  },
496
647
  {
497
- ">=": [
648
+ ">": [
498
649
  {
499
650
  "size": {
500
651
  "filter": [
501
652
  {
502
- "var": "state.resolutions"
653
+ "var": "state.pledges"
503
654
  },
504
655
  {
505
656
  "===": [
506
657
  {
507
- "var": "outcome"
658
+ "var": "backer"
508
659
  },
509
- "INVALID"
660
+ {
661
+ "var": "event.agent"
662
+ }
510
663
  ]
511
664
  }
512
665
  ]
513
666
  }
514
667
  },
668
+ 0
669
+ ]
670
+ }
671
+ ]
672
+ },
673
+ "effect": {
674
+ "merge": [
675
+ {
676
+ "var": "state"
677
+ },
678
+ {
679
+ "totalPledged": {
680
+ "+": [
681
+ {
682
+ "var": "state.totalPledged"
683
+ },
684
+ {
685
+ "var": "event.additionalAmount"
686
+ }
687
+ ]
688
+ }
689
+ }
690
+ ]
691
+ },
692
+ "dependencies": []
693
+ },
694
+ {
695
+ "from": "OPEN",
696
+ "to": "FUNDED",
697
+ "eventName": "finalize",
698
+ "guard": {
699
+ "and": [
700
+ {
701
+ ">=": [
702
+ {
703
+ "var": "state.totalPledged"
704
+ },
705
+ {
706
+ "var": "state.threshold"
707
+ }
708
+ ]
709
+ },
710
+ {
711
+ ">=": [
712
+ {
713
+ "var": "$timestamp"
714
+ },
715
+ {
716
+ "var": "state.deadline"
717
+ }
718
+ ]
719
+ }
720
+ ]
721
+ },
722
+ "effect": {
723
+ "merge": [
724
+ {
725
+ "var": "state"
726
+ },
727
+ {
728
+ "status": "FUNDED",
729
+ "fundedAt": {
730
+ "var": "$timestamp"
731
+ },
732
+ "stretchGoalsReached": {
733
+ "filter": [
734
+ {
735
+ "var": "state.stretchGoals"
736
+ },
737
+ {
738
+ "<=": [
739
+ {
740
+ "var": "target"
741
+ },
742
+ {
743
+ "var": "state.totalPledged"
744
+ }
745
+ ]
746
+ }
747
+ ]
748
+ }
749
+ }
750
+ ]
751
+ },
752
+ "dependencies": []
753
+ },
754
+ {
755
+ "from": "OPEN",
756
+ "to": "REFUNDED",
757
+ "eventName": "finalize",
758
+ "guard": {
759
+ "and": [
760
+ {
761
+ "<": [
762
+ {
763
+ "var": "state.totalPledged"
764
+ },
765
+ {
766
+ "var": "state.threshold"
767
+ }
768
+ ]
769
+ },
770
+ {
771
+ ">=": [
772
+ {
773
+ "var": "$timestamp"
774
+ },
515
775
  {
516
- "var": "state.quorum"
776
+ "var": "state.deadline"
517
777
  }
518
778
  ]
519
779
  }
@@ -527,20 +787,18 @@ export const marketUniversalDef = {
527
787
  {
528
788
  "status": "REFUNDED",
529
789
  "refundedAt": {
530
- "var": "$epochProgress"
790
+ "var": "$timestamp"
531
791
  },
532
- "reason": {
533
- "var": "event.reason"
534
- }
792
+ "reason": "threshold_not_met"
535
793
  }
536
794
  ]
537
795
  },
538
796
  "dependencies": []
539
797
  },
540
798
  {
541
- "from": "SETTLED",
542
- "to": "SETTLED",
543
- "eventName": "claim",
799
+ "from": "REFUNDED",
800
+ "to": "REFUNDED",
801
+ "eventName": "claim_refund",
544
802
  "guard": {
545
803
  "and": [
546
804
  {
@@ -549,12 +807,12 @@ export const marketUniversalDef = {
549
807
  "size": {
550
808
  "filter": [
551
809
  {
552
- "var": "state.commitments"
810
+ "var": "state.pledges"
553
811
  },
554
812
  {
555
813
  "===": [
556
814
  {
557
- "var": "agent"
815
+ "var": "backer"
558
816
  },
559
817
  {
560
818
  "var": "event.agent"
@@ -575,14 +833,7 @@ export const marketUniversalDef = {
575
833
  "var": "event.agent"
576
834
  },
577
835
  {
578
- "map": [
579
- {
580
- "var": "state.claims"
581
- },
582
- {
583
- "var": "agent"
584
- }
585
- ]
836
+ "var": "state.refundsClaimed"
586
837
  }
587
838
  ]
588
839
  }
@@ -596,22 +847,14 @@ export const marketUniversalDef = {
596
847
  "var": "state"
597
848
  },
598
849
  {
599
- "claims": {
600
- "merge": [
850
+ "refundsClaimed": {
851
+ "cat": [
601
852
  {
602
- "var": "state.claims"
853
+ "var": "state.refundsClaimed"
603
854
  },
604
855
  [
605
856
  {
606
- "agent": {
607
- "var": "event.agent"
608
- },
609
- "amount": {
610
- "var": "event.amount"
611
- },
612
- "claimedAt": {
613
- "var": "$epochProgress"
614
- }
857
+ "var": "event.agent"
615
858
  }
616
859
  ]
617
860
  ]
@@ -623,3 +866,1434 @@ export const marketUniversalDef = {
623
866
  }
624
867
  ]
625
868
  };
869
+ export const marketGroupBuyDef = {
870
+ "metadata": {
871
+ "name": "MarketGroupBuy",
872
+ "description": "Collective purchasing with quantity thresholds and tiered pricing",
873
+ "version": "1.0.0",
874
+ "crossReferences": {
875
+ "vendorIdentityId": "Links to vendor's IdentityAgent",
876
+ "escrowId": "Links to ContractEscrow for payment custody"
877
+ }
878
+ },
879
+ "states": {
880
+ "PROPOSED": {
881
+ "id": "PROPOSED",
882
+ "isFinal": false,
883
+ "metadata": {
884
+ "description": "Group buy created but not yet open"
885
+ }
886
+ },
887
+ "OPEN": {
888
+ "id": "OPEN",
889
+ "isFinal": false,
890
+ "metadata": {
891
+ "description": "Accepting orders"
892
+ }
893
+ },
894
+ "THRESHOLD_MET": {
895
+ "id": "THRESHOLD_MET",
896
+ "isFinal": false,
897
+ "metadata": {
898
+ "description": "Minimum quantity reached, continuing for better tier"
899
+ }
900
+ },
901
+ "PROCESSING": {
902
+ "id": "PROCESSING",
903
+ "isFinal": false,
904
+ "metadata": {
905
+ "description": "Order placed with vendor, awaiting fulfillment"
906
+ }
907
+ },
908
+ "FULFILLED": {
909
+ "id": "FULFILLED",
910
+ "isFinal": true,
911
+ "metadata": {
912
+ "description": "All items delivered to buyers"
913
+ }
914
+ },
915
+ "REFUNDED": {
916
+ "id": "REFUNDED",
917
+ "isFinal": true,
918
+ "metadata": {
919
+ "description": "Threshold not met, all orders refunded"
920
+ }
921
+ },
922
+ "CANCELLED": {
923
+ "id": "CANCELLED",
924
+ "isFinal": true,
925
+ "metadata": {
926
+ "description": "Group buy cancelled"
927
+ }
928
+ }
929
+ },
930
+ "initialState": "PROPOSED",
931
+ "transitions": [
932
+ {
933
+ "from": "PROPOSED",
934
+ "to": "OPEN",
935
+ "eventName": "open",
936
+ "guard": {
937
+ "===": [
938
+ {
939
+ "var": "event.agent"
940
+ },
941
+ {
942
+ "var": "state.organizer"
943
+ }
944
+ ]
945
+ },
946
+ "effect": {
947
+ "merge": [
948
+ {
949
+ "var": "state"
950
+ },
951
+ {
952
+ "status": "OPEN",
953
+ "openedAt": {
954
+ "var": "$timestamp"
955
+ },
956
+ "orders": [],
957
+ "totalQuantity": 0,
958
+ "currentTier": 0
959
+ }
960
+ ]
961
+ },
962
+ "dependencies": []
963
+ },
964
+ {
965
+ "from": "PROPOSED",
966
+ "to": "CANCELLED",
967
+ "eventName": "cancel",
968
+ "guard": {
969
+ "===": [
970
+ {
971
+ "var": "event.agent"
972
+ },
973
+ {
974
+ "var": "state.organizer"
975
+ }
976
+ ]
977
+ },
978
+ "effect": {
979
+ "merge": [
980
+ {
981
+ "var": "state"
982
+ },
983
+ {
984
+ "status": "CANCELLED",
985
+ "cancelledAt": {
986
+ "var": "$timestamp"
987
+ }
988
+ }
989
+ ]
990
+ },
991
+ "dependencies": []
992
+ },
993
+ {
994
+ "from": "OPEN",
995
+ "to": "OPEN",
996
+ "eventName": "order",
997
+ "guard": {
998
+ "and": [
999
+ {
1000
+ ">": [
1001
+ {
1002
+ "var": "event.quantity"
1003
+ },
1004
+ 0
1005
+ ]
1006
+ },
1007
+ {
1008
+ "or": [
1009
+ {
1010
+ "!": [
1011
+ {
1012
+ "var": "state.maxPerBuyer"
1013
+ }
1014
+ ]
1015
+ },
1016
+ {
1017
+ "<=": [
1018
+ {
1019
+ "var": "event.quantity"
1020
+ },
1021
+ {
1022
+ "var": "state.maxPerBuyer"
1023
+ }
1024
+ ]
1025
+ }
1026
+ ]
1027
+ },
1028
+ {
1029
+ "<=": [
1030
+ {
1031
+ "var": "$timestamp"
1032
+ },
1033
+ {
1034
+ "var": "state.deadline"
1035
+ }
1036
+ ]
1037
+ }
1038
+ ]
1039
+ },
1040
+ "effect": {
1041
+ "merge": [
1042
+ {
1043
+ "var": "state"
1044
+ },
1045
+ {
1046
+ "orders": {
1047
+ "cat": [
1048
+ {
1049
+ "var": "state.orders"
1050
+ },
1051
+ [
1052
+ {
1053
+ "buyer": {
1054
+ "var": "event.agent"
1055
+ },
1056
+ "quantity": {
1057
+ "var": "event.quantity"
1058
+ },
1059
+ "shippingInfo": {
1060
+ "var": "event.shippingInfo"
1061
+ },
1062
+ "orderedAt": {
1063
+ "var": "$timestamp"
1064
+ }
1065
+ }
1066
+ ]
1067
+ ]
1068
+ },
1069
+ "totalQuantity": {
1070
+ "+": [
1071
+ {
1072
+ "var": "state.totalQuantity"
1073
+ },
1074
+ {
1075
+ "var": "event.quantity"
1076
+ }
1077
+ ]
1078
+ }
1079
+ }
1080
+ ]
1081
+ },
1082
+ "dependencies": []
1083
+ },
1084
+ {
1085
+ "from": "OPEN",
1086
+ "to": "THRESHOLD_MET",
1087
+ "eventName": "check_threshold",
1088
+ "guard": {
1089
+ ">=": [
1090
+ {
1091
+ "var": "state.totalQuantity"
1092
+ },
1093
+ {
1094
+ "var": "state.minQuantity"
1095
+ }
1096
+ ]
1097
+ },
1098
+ "effect": {
1099
+ "merge": [
1100
+ {
1101
+ "var": "state"
1102
+ },
1103
+ {
1104
+ "status": "THRESHOLD_MET",
1105
+ "thresholdMetAt": {
1106
+ "var": "$timestamp"
1107
+ },
1108
+ "currentTier": {
1109
+ "reduce": [
1110
+ {
1111
+ "var": "state.priceTiers"
1112
+ },
1113
+ {
1114
+ "if": [
1115
+ {
1116
+ "<=": [
1117
+ {
1118
+ "var": "current.minQuantity"
1119
+ },
1120
+ {
1121
+ "var": "state.totalQuantity"
1122
+ }
1123
+ ]
1124
+ },
1125
+ {
1126
+ "var": "current.tier"
1127
+ },
1128
+ {
1129
+ "var": "accumulator"
1130
+ }
1131
+ ]
1132
+ },
1133
+ 0
1134
+ ]
1135
+ }
1136
+ }
1137
+ ]
1138
+ },
1139
+ "dependencies": []
1140
+ },
1141
+ {
1142
+ "from": "THRESHOLD_MET",
1143
+ "to": "THRESHOLD_MET",
1144
+ "eventName": "order",
1145
+ "guard": {
1146
+ "and": [
1147
+ {
1148
+ ">": [
1149
+ {
1150
+ "var": "event.quantity"
1151
+ },
1152
+ 0
1153
+ ]
1154
+ },
1155
+ {
1156
+ "<=": [
1157
+ {
1158
+ "var": "$timestamp"
1159
+ },
1160
+ {
1161
+ "var": "state.deadline"
1162
+ }
1163
+ ]
1164
+ }
1165
+ ]
1166
+ },
1167
+ "effect": {
1168
+ "merge": [
1169
+ {
1170
+ "var": "state"
1171
+ },
1172
+ {
1173
+ "orders": {
1174
+ "cat": [
1175
+ {
1176
+ "var": "state.orders"
1177
+ },
1178
+ [
1179
+ {
1180
+ "buyer": {
1181
+ "var": "event.agent"
1182
+ },
1183
+ "quantity": {
1184
+ "var": "event.quantity"
1185
+ },
1186
+ "shippingInfo": {
1187
+ "var": "event.shippingInfo"
1188
+ },
1189
+ "orderedAt": {
1190
+ "var": "$timestamp"
1191
+ }
1192
+ }
1193
+ ]
1194
+ ]
1195
+ },
1196
+ "totalQuantity": {
1197
+ "+": [
1198
+ {
1199
+ "var": "state.totalQuantity"
1200
+ },
1201
+ {
1202
+ "var": "event.quantity"
1203
+ }
1204
+ ]
1205
+ },
1206
+ "currentTier": {
1207
+ "reduce": [
1208
+ {
1209
+ "var": "state.priceTiers"
1210
+ },
1211
+ {
1212
+ "if": [
1213
+ {
1214
+ "<=": [
1215
+ {
1216
+ "var": "current.minQuantity"
1217
+ },
1218
+ {
1219
+ "+": [
1220
+ {
1221
+ "var": "state.totalQuantity"
1222
+ },
1223
+ {
1224
+ "var": "event.quantity"
1225
+ }
1226
+ ]
1227
+ }
1228
+ ]
1229
+ },
1230
+ {
1231
+ "var": "current.tier"
1232
+ },
1233
+ {
1234
+ "var": "accumulator"
1235
+ }
1236
+ ]
1237
+ },
1238
+ {
1239
+ "var": "state.currentTier"
1240
+ }
1241
+ ]
1242
+ }
1243
+ }
1244
+ ]
1245
+ },
1246
+ "dependencies": []
1247
+ },
1248
+ {
1249
+ "from": "THRESHOLD_MET",
1250
+ "to": "PROCESSING",
1251
+ "eventName": "finalize",
1252
+ "guard": {
1253
+ ">=": [
1254
+ {
1255
+ "var": "$timestamp"
1256
+ },
1257
+ {
1258
+ "var": "state.deadline"
1259
+ }
1260
+ ]
1261
+ },
1262
+ "effect": {
1263
+ "merge": [
1264
+ {
1265
+ "var": "state"
1266
+ },
1267
+ {
1268
+ "status": "PROCESSING",
1269
+ "finalizedAt": {
1270
+ "var": "$timestamp"
1271
+ },
1272
+ "finalTier": {
1273
+ "var": "state.currentTier"
1274
+ },
1275
+ "finalPricePerUnit": {
1276
+ "var": {
1277
+ "cat": [
1278
+ "state.priceTiers.",
1279
+ {
1280
+ "var": "state.currentTier"
1281
+ },
1282
+ ".pricePerUnit"
1283
+ ]
1284
+ }
1285
+ }
1286
+ }
1287
+ ]
1288
+ },
1289
+ "dependencies": []
1290
+ },
1291
+ {
1292
+ "from": "PROCESSING",
1293
+ "to": "FULFILLED",
1294
+ "eventName": "fulfill",
1295
+ "guard": {
1296
+ "or": [
1297
+ {
1298
+ "===": [
1299
+ {
1300
+ "var": "event.agent"
1301
+ },
1302
+ {
1303
+ "var": "state.vendor"
1304
+ }
1305
+ ]
1306
+ },
1307
+ {
1308
+ "===": [
1309
+ {
1310
+ "var": "event.agent"
1311
+ },
1312
+ {
1313
+ "var": "state.organizer"
1314
+ }
1315
+ ]
1316
+ }
1317
+ ]
1318
+ },
1319
+ "effect": {
1320
+ "merge": [
1321
+ {
1322
+ "var": "state"
1323
+ },
1324
+ {
1325
+ "status": "FULFILLED",
1326
+ "fulfilledAt": {
1327
+ "var": "$timestamp"
1328
+ },
1329
+ "trackingInfo": {
1330
+ "var": "event.trackingInfo"
1331
+ }
1332
+ }
1333
+ ]
1334
+ },
1335
+ "dependencies": []
1336
+ },
1337
+ {
1338
+ "from": "OPEN",
1339
+ "to": "REFUNDED",
1340
+ "eventName": "finalize",
1341
+ "guard": {
1342
+ "and": [
1343
+ {
1344
+ "<": [
1345
+ {
1346
+ "var": "state.totalQuantity"
1347
+ },
1348
+ {
1349
+ "var": "state.minQuantity"
1350
+ }
1351
+ ]
1352
+ },
1353
+ {
1354
+ ">=": [
1355
+ {
1356
+ "var": "$timestamp"
1357
+ },
1358
+ {
1359
+ "var": "state.deadline"
1360
+ }
1361
+ ]
1362
+ }
1363
+ ]
1364
+ },
1365
+ "effect": {
1366
+ "merge": [
1367
+ {
1368
+ "var": "state"
1369
+ },
1370
+ {
1371
+ "status": "REFUNDED",
1372
+ "refundedAt": {
1373
+ "var": "$timestamp"
1374
+ },
1375
+ "reason": "threshold_not_met"
1376
+ }
1377
+ ]
1378
+ },
1379
+ "dependencies": []
1380
+ },
1381
+ {
1382
+ "from": "REFUNDED",
1383
+ "to": "REFUNDED",
1384
+ "eventName": "claim_refund",
1385
+ "guard": {
1386
+ "and": [
1387
+ {
1388
+ ">": [
1389
+ {
1390
+ "size": {
1391
+ "filter": [
1392
+ {
1393
+ "var": "state.orders"
1394
+ },
1395
+ {
1396
+ "===": [
1397
+ {
1398
+ "var": "buyer"
1399
+ },
1400
+ {
1401
+ "var": "event.agent"
1402
+ }
1403
+ ]
1404
+ }
1405
+ ]
1406
+ }
1407
+ },
1408
+ 0
1409
+ ]
1410
+ },
1411
+ {
1412
+ "!": [
1413
+ {
1414
+ "in": [
1415
+ {
1416
+ "var": "event.agent"
1417
+ },
1418
+ {
1419
+ "var": "state.refundsClaimed"
1420
+ }
1421
+ ]
1422
+ }
1423
+ ]
1424
+ }
1425
+ ]
1426
+ },
1427
+ "effect": {
1428
+ "merge": [
1429
+ {
1430
+ "var": "state"
1431
+ },
1432
+ {
1433
+ "refundsClaimed": {
1434
+ "cat": [
1435
+ {
1436
+ "var": "state.refundsClaimed"
1437
+ },
1438
+ [
1439
+ {
1440
+ "var": "event.agent"
1441
+ }
1442
+ ]
1443
+ ]
1444
+ }
1445
+ }
1446
+ ]
1447
+ },
1448
+ "dependencies": []
1449
+ }
1450
+ ]
1451
+ };
1452
+ export const marketPredictionDef = {
1453
+ "metadata": {
1454
+ "name": "MarketPrediction",
1455
+ "description": "Binary or multi-outcome prediction market with oracle resolution and position staking",
1456
+ "version": "1.0.0",
1457
+ "crossReferences": {
1458
+ "oracleId": "Links to IdentityOracle that resolves the outcome",
1459
+ "creatorIdentityId": "Links to creator's IdentityAgent"
1460
+ }
1461
+ },
1462
+ "states": {
1463
+ "PROPOSED": {
1464
+ "id": "PROPOSED",
1465
+ "isFinal": false,
1466
+ "metadata": {
1467
+ "description": "Market created but not yet open for trading"
1468
+ }
1469
+ },
1470
+ "OPEN": {
1471
+ "id": "OPEN",
1472
+ "isFinal": false,
1473
+ "metadata": {
1474
+ "description": "Accepting positions on outcomes"
1475
+ }
1476
+ },
1477
+ "CLOSED": {
1478
+ "id": "CLOSED",
1479
+ "isFinal": false,
1480
+ "metadata": {
1481
+ "description": "No more positions, awaiting resolution"
1482
+ }
1483
+ },
1484
+ "RESOLVING": {
1485
+ "id": "RESOLVING",
1486
+ "isFinal": false,
1487
+ "metadata": {
1488
+ "description": "Oracle(s) submitting resolution"
1489
+ }
1490
+ },
1491
+ "DISPUTED": {
1492
+ "id": "DISPUTED",
1493
+ "isFinal": false,
1494
+ "metadata": {
1495
+ "description": "Resolution challenged, awaiting arbitration"
1496
+ }
1497
+ },
1498
+ "SETTLED": {
1499
+ "id": "SETTLED",
1500
+ "isFinal": true,
1501
+ "metadata": {
1502
+ "description": "Outcome finalized, payouts available"
1503
+ }
1504
+ },
1505
+ "REFUNDED": {
1506
+ "id": "REFUNDED",
1507
+ "isFinal": true,
1508
+ "metadata": {
1509
+ "description": "Market invalidated, all positions refunded"
1510
+ }
1511
+ },
1512
+ "CANCELLED": {
1513
+ "id": "CANCELLED",
1514
+ "isFinal": true,
1515
+ "metadata": {
1516
+ "description": "Market cancelled before opening"
1517
+ }
1518
+ }
1519
+ },
1520
+ "initialState": "PROPOSED",
1521
+ "transitions": [
1522
+ {
1523
+ "from": "PROPOSED",
1524
+ "to": "OPEN",
1525
+ "eventName": "open",
1526
+ "guard": {
1527
+ "===": [
1528
+ {
1529
+ "var": "event.agent"
1530
+ },
1531
+ {
1532
+ "var": "state.creator"
1533
+ }
1534
+ ]
1535
+ },
1536
+ "effect": {
1537
+ "merge": [
1538
+ {
1539
+ "var": "state"
1540
+ },
1541
+ {
1542
+ "status": "OPEN",
1543
+ "openedAt": {
1544
+ "var": "$timestamp"
1545
+ },
1546
+ "positions": {},
1547
+ "totalPool": 0
1548
+ }
1549
+ ]
1550
+ },
1551
+ "dependencies": []
1552
+ },
1553
+ {
1554
+ "from": "PROPOSED",
1555
+ "to": "CANCELLED",
1556
+ "eventName": "cancel",
1557
+ "guard": {
1558
+ "===": [
1559
+ {
1560
+ "var": "event.agent"
1561
+ },
1562
+ {
1563
+ "var": "state.creator"
1564
+ }
1565
+ ]
1566
+ },
1567
+ "effect": {
1568
+ "merge": [
1569
+ {
1570
+ "var": "state"
1571
+ },
1572
+ {
1573
+ "status": "CANCELLED",
1574
+ "cancelledAt": {
1575
+ "var": "$timestamp"
1576
+ },
1577
+ "reason": {
1578
+ "var": "event.reason"
1579
+ }
1580
+ }
1581
+ ]
1582
+ },
1583
+ "dependencies": []
1584
+ },
1585
+ {
1586
+ "from": "OPEN",
1587
+ "to": "OPEN",
1588
+ "eventName": "take_position",
1589
+ "guard": {
1590
+ "and": [
1591
+ {
1592
+ ">": [
1593
+ {
1594
+ "var": "event.amount"
1595
+ },
1596
+ 0
1597
+ ]
1598
+ },
1599
+ {
1600
+ "in": [
1601
+ {
1602
+ "var": "event.outcome"
1603
+ },
1604
+ {
1605
+ "var": "state.outcomes"
1606
+ }
1607
+ ]
1608
+ },
1609
+ {
1610
+ "or": [
1611
+ {
1612
+ "!": [
1613
+ {
1614
+ "var": "state.deadline"
1615
+ }
1616
+ ]
1617
+ },
1618
+ {
1619
+ "<=": [
1620
+ {
1621
+ "var": "$timestamp"
1622
+ },
1623
+ {
1624
+ "var": "state.deadline"
1625
+ }
1626
+ ]
1627
+ }
1628
+ ]
1629
+ }
1630
+ ]
1631
+ },
1632
+ "effect": {
1633
+ "merge": [
1634
+ {
1635
+ "var": "state"
1636
+ },
1637
+ {
1638
+ "positions": {
1639
+ "merge": [
1640
+ {
1641
+ "var": "state.positions"
1642
+ },
1643
+ {
1644
+ "__computed": {
1645
+ "cat": [
1646
+ {
1647
+ "var": "event.agent"
1648
+ },
1649
+ "_",
1650
+ {
1651
+ "var": "event.outcome"
1652
+ }
1653
+ ]
1654
+ }
1655
+ }
1656
+ ]
1657
+ },
1658
+ "totalPool": {
1659
+ "+": [
1660
+ {
1661
+ "var": "state.totalPool"
1662
+ },
1663
+ {
1664
+ "var": "event.amount"
1665
+ }
1666
+ ]
1667
+ }
1668
+ }
1669
+ ]
1670
+ },
1671
+ "dependencies": []
1672
+ },
1673
+ {
1674
+ "from": "OPEN",
1675
+ "to": "CLOSED",
1676
+ "eventName": "close",
1677
+ "guard": {
1678
+ "or": [
1679
+ {
1680
+ "===": [
1681
+ {
1682
+ "var": "event.agent"
1683
+ },
1684
+ {
1685
+ "var": "state.creator"
1686
+ }
1687
+ ]
1688
+ },
1689
+ {
1690
+ "and": [
1691
+ {
1692
+ "var": "state.deadline"
1693
+ },
1694
+ {
1695
+ ">=": [
1696
+ {
1697
+ "var": "$timestamp"
1698
+ },
1699
+ {
1700
+ "var": "state.deadline"
1701
+ }
1702
+ ]
1703
+ }
1704
+ ]
1705
+ }
1706
+ ]
1707
+ },
1708
+ "effect": {
1709
+ "merge": [
1710
+ {
1711
+ "var": "state"
1712
+ },
1713
+ {
1714
+ "status": "CLOSED",
1715
+ "closedAt": {
1716
+ "var": "$timestamp"
1717
+ }
1718
+ }
1719
+ ]
1720
+ },
1721
+ "dependencies": []
1722
+ },
1723
+ {
1724
+ "from": "CLOSED",
1725
+ "to": "RESOLVING",
1726
+ "eventName": "submit_resolution",
1727
+ "guard": {
1728
+ "in": [
1729
+ {
1730
+ "var": "event.agent"
1731
+ },
1732
+ {
1733
+ "var": "state.oracles"
1734
+ }
1735
+ ]
1736
+ },
1737
+ "effect": {
1738
+ "merge": [
1739
+ {
1740
+ "var": "state"
1741
+ },
1742
+ {
1743
+ "status": "RESOLVING",
1744
+ "resolutions": [
1745
+ {
1746
+ "oracle": {
1747
+ "var": "event.agent"
1748
+ },
1749
+ "outcome": {
1750
+ "var": "event.outcome"
1751
+ },
1752
+ "proof": {
1753
+ "var": "event.proof"
1754
+ },
1755
+ "submittedAt": {
1756
+ "var": "$timestamp"
1757
+ }
1758
+ }
1759
+ ]
1760
+ }
1761
+ ]
1762
+ },
1763
+ "dependencies": []
1764
+ },
1765
+ {
1766
+ "from": "RESOLVING",
1767
+ "to": "RESOLVING",
1768
+ "eventName": "submit_resolution",
1769
+ "guard": {
1770
+ "and": [
1771
+ {
1772
+ "in": [
1773
+ {
1774
+ "var": "event.agent"
1775
+ },
1776
+ {
1777
+ "var": "state.oracles"
1778
+ }
1779
+ ]
1780
+ },
1781
+ {
1782
+ "!": [
1783
+ {
1784
+ "in": [
1785
+ {
1786
+ "var": "event.agent"
1787
+ },
1788
+ {
1789
+ "map": [
1790
+ {
1791
+ "var": "state.resolutions"
1792
+ },
1793
+ {
1794
+ "var": "oracle"
1795
+ }
1796
+ ]
1797
+ }
1798
+ ]
1799
+ }
1800
+ ]
1801
+ }
1802
+ ]
1803
+ },
1804
+ "effect": {
1805
+ "merge": [
1806
+ {
1807
+ "var": "state"
1808
+ },
1809
+ {
1810
+ "resolutions": {
1811
+ "cat": [
1812
+ {
1813
+ "var": "state.resolutions"
1814
+ },
1815
+ [
1816
+ {
1817
+ "oracle": {
1818
+ "var": "event.agent"
1819
+ },
1820
+ "outcome": {
1821
+ "var": "event.outcome"
1822
+ },
1823
+ "proof": {
1824
+ "var": "event.proof"
1825
+ },
1826
+ "submittedAt": {
1827
+ "var": "$timestamp"
1828
+ }
1829
+ }
1830
+ ]
1831
+ ]
1832
+ }
1833
+ }
1834
+ ]
1835
+ },
1836
+ "dependencies": []
1837
+ },
1838
+ {
1839
+ "from": "RESOLVING",
1840
+ "to": "SETTLED",
1841
+ "eventName": "finalize",
1842
+ "guard": {
1843
+ ">=": [
1844
+ {
1845
+ "size": {
1846
+ "var": "state.resolutions"
1847
+ }
1848
+ },
1849
+ {
1850
+ "var": "state.quorum"
1851
+ }
1852
+ ]
1853
+ },
1854
+ "effect": {
1855
+ "merge": [
1856
+ {
1857
+ "var": "state"
1858
+ },
1859
+ {
1860
+ "status": "SETTLED",
1861
+ "settledAt": {
1862
+ "var": "$timestamp"
1863
+ },
1864
+ "finalOutcome": {
1865
+ "var": "event.outcome"
1866
+ },
1867
+ "claims": []
1868
+ }
1869
+ ]
1870
+ },
1871
+ "dependencies": []
1872
+ },
1873
+ {
1874
+ "from": "RESOLVING",
1875
+ "to": "DISPUTED",
1876
+ "eventName": "dispute",
1877
+ "guard": {
1878
+ "and": [
1879
+ {
1880
+ ">": [
1881
+ {
1882
+ "size": {
1883
+ "filter": [
1884
+ {
1885
+ "var": "state.positions"
1886
+ },
1887
+ {
1888
+ "===": [
1889
+ {
1890
+ "var": "agent"
1891
+ },
1892
+ {
1893
+ "var": "event.agent"
1894
+ }
1895
+ ]
1896
+ }
1897
+ ]
1898
+ }
1899
+ },
1900
+ 0
1901
+ ]
1902
+ },
1903
+ {
1904
+ "var": "event.stake"
1905
+ }
1906
+ ]
1907
+ },
1908
+ "effect": {
1909
+ "merge": [
1910
+ {
1911
+ "var": "state"
1912
+ },
1913
+ {
1914
+ "status": "DISPUTED",
1915
+ "disputedAt": {
1916
+ "var": "$timestamp"
1917
+ },
1918
+ "disputedBy": {
1919
+ "var": "event.agent"
1920
+ },
1921
+ "disputeStake": {
1922
+ "var": "event.stake"
1923
+ },
1924
+ "disputeReason": {
1925
+ "var": "event.reason"
1926
+ }
1927
+ }
1928
+ ]
1929
+ },
1930
+ "dependencies": []
1931
+ },
1932
+ {
1933
+ "from": "DISPUTED",
1934
+ "to": "SETTLED",
1935
+ "eventName": "ruling",
1936
+ "guard": {
1937
+ "var": "event.judicialRuling"
1938
+ },
1939
+ "effect": {
1940
+ "merge": [
1941
+ {
1942
+ "var": "state"
1943
+ },
1944
+ {
1945
+ "status": "SETTLED",
1946
+ "settledAt": {
1947
+ "var": "$timestamp"
1948
+ },
1949
+ "finalOutcome": {
1950
+ "var": "event.outcome"
1951
+ },
1952
+ "rulingId": {
1953
+ "var": "event.rulingId"
1954
+ },
1955
+ "claims": []
1956
+ }
1957
+ ]
1958
+ },
1959
+ "dependencies": []
1960
+ },
1961
+ {
1962
+ "from": "RESOLVING",
1963
+ "to": "REFUNDED",
1964
+ "eventName": "invalidate",
1965
+ "guard": {
1966
+ ">=": [
1967
+ {
1968
+ "size": {
1969
+ "filter": [
1970
+ {
1971
+ "var": "state.resolutions"
1972
+ },
1973
+ {
1974
+ "===": [
1975
+ {
1976
+ "var": "outcome"
1977
+ },
1978
+ "INVALID"
1979
+ ]
1980
+ }
1981
+ ]
1982
+ }
1983
+ },
1984
+ {
1985
+ "var": "state.quorum"
1986
+ }
1987
+ ]
1988
+ },
1989
+ "effect": {
1990
+ "merge": [
1991
+ {
1992
+ "var": "state"
1993
+ },
1994
+ {
1995
+ "status": "REFUNDED",
1996
+ "refundedAt": {
1997
+ "var": "$timestamp"
1998
+ },
1999
+ "reason": "oracle_invalidation"
2000
+ }
2001
+ ]
2002
+ },
2003
+ "dependencies": []
2004
+ },
2005
+ {
2006
+ "from": "SETTLED",
2007
+ "to": "SETTLED",
2008
+ "eventName": "claim",
2009
+ "guard": {
2010
+ "and": [
2011
+ {
2012
+ ">": [
2013
+ {
2014
+ "size": {
2015
+ "filter": [
2016
+ {
2017
+ "var": "state.positions"
2018
+ },
2019
+ {
2020
+ "and": [
2021
+ {
2022
+ "===": [
2023
+ {
2024
+ "var": "agent"
2025
+ },
2026
+ {
2027
+ "var": "event.agent"
2028
+ }
2029
+ ]
2030
+ },
2031
+ {
2032
+ "===": [
2033
+ {
2034
+ "var": "outcome"
2035
+ },
2036
+ {
2037
+ "var": "state.finalOutcome"
2038
+ }
2039
+ ]
2040
+ }
2041
+ ]
2042
+ }
2043
+ ]
2044
+ }
2045
+ },
2046
+ 0
2047
+ ]
2048
+ },
2049
+ {
2050
+ "!": [
2051
+ {
2052
+ "in": [
2053
+ {
2054
+ "var": "event.agent"
2055
+ },
2056
+ {
2057
+ "map": [
2058
+ {
2059
+ "var": "state.claims"
2060
+ },
2061
+ {
2062
+ "var": "agent"
2063
+ }
2064
+ ]
2065
+ }
2066
+ ]
2067
+ }
2068
+ ]
2069
+ }
2070
+ ]
2071
+ },
2072
+ "effect": {
2073
+ "merge": [
2074
+ {
2075
+ "var": "state"
2076
+ },
2077
+ {
2078
+ "claims": {
2079
+ "cat": [
2080
+ {
2081
+ "var": "state.claims"
2082
+ },
2083
+ [
2084
+ {
2085
+ "agent": {
2086
+ "var": "event.agent"
2087
+ },
2088
+ "amount": {
2089
+ "var": "event.amount"
2090
+ },
2091
+ "claimedAt": {
2092
+ "var": "$timestamp"
2093
+ }
2094
+ }
2095
+ ]
2096
+ ]
2097
+ }
2098
+ }
2099
+ ]
2100
+ },
2101
+ "dependencies": []
2102
+ }
2103
+ ]
2104
+ };
2105
+ export const marketUniversalDef = {
2106
+ "metadata": {
2107
+ "name": "MarketUniversal",
2108
+ "description": "Minimal market state machine - extend for custom use cases",
2109
+ "version": "1.0.0"
2110
+ },
2111
+ "states": {
2112
+ "PROPOSED": {
2113
+ "id": "PROPOSED",
2114
+ "isFinal": false,
2115
+ "metadata": null
2116
+ },
2117
+ "OPEN": {
2118
+ "id": "OPEN",
2119
+ "isFinal": false,
2120
+ "metadata": null
2121
+ },
2122
+ "CLOSED": {
2123
+ "id": "CLOSED",
2124
+ "isFinal": false,
2125
+ "metadata": null
2126
+ },
2127
+ "SETTLED": {
2128
+ "id": "SETTLED",
2129
+ "isFinal": true,
2130
+ "metadata": null
2131
+ },
2132
+ "CANCELLED": {
2133
+ "id": "CANCELLED",
2134
+ "isFinal": true,
2135
+ "metadata": null
2136
+ }
2137
+ },
2138
+ "initialState": "PROPOSED",
2139
+ "transitions": [
2140
+ {
2141
+ "from": "PROPOSED",
2142
+ "to": "OPEN",
2143
+ "eventName": "open",
2144
+ "guard": {
2145
+ "==": [
2146
+ 1,
2147
+ 1
2148
+ ]
2149
+ },
2150
+ "effect": {
2151
+ "merge": [
2152
+ {
2153
+ "var": "state"
2154
+ },
2155
+ {
2156
+ "status": "OPEN",
2157
+ "openedAt": {
2158
+ "var": "$timestamp"
2159
+ }
2160
+ }
2161
+ ]
2162
+ },
2163
+ "dependencies": []
2164
+ },
2165
+ {
2166
+ "from": "PROPOSED",
2167
+ "to": "CANCELLED",
2168
+ "eventName": "cancel",
2169
+ "guard": {
2170
+ "==": [
2171
+ 1,
2172
+ 1
2173
+ ]
2174
+ },
2175
+ "effect": {
2176
+ "merge": [
2177
+ {
2178
+ "var": "state"
2179
+ },
2180
+ {
2181
+ "status": "CANCELLED",
2182
+ "cancelledAt": {
2183
+ "var": "$timestamp"
2184
+ }
2185
+ }
2186
+ ]
2187
+ },
2188
+ "dependencies": []
2189
+ },
2190
+ {
2191
+ "from": "OPEN",
2192
+ "to": "OPEN",
2193
+ "eventName": "commit",
2194
+ "guard": {
2195
+ ">": [
2196
+ {
2197
+ "var": "event.amount"
2198
+ },
2199
+ 0
2200
+ ]
2201
+ },
2202
+ "effect": {
2203
+ "merge": [
2204
+ {
2205
+ "var": "state"
2206
+ },
2207
+ {
2208
+ "totalCommitted": {
2209
+ "+": [
2210
+ {
2211
+ "var": "state.totalCommitted"
2212
+ },
2213
+ {
2214
+ "var": "event.amount"
2215
+ }
2216
+ ]
2217
+ }
2218
+ }
2219
+ ]
2220
+ },
2221
+ "dependencies": []
2222
+ },
2223
+ {
2224
+ "from": "OPEN",
2225
+ "to": "CLOSED",
2226
+ "eventName": "close",
2227
+ "guard": {
2228
+ "==": [
2229
+ 1,
2230
+ 1
2231
+ ]
2232
+ },
2233
+ "effect": {
2234
+ "merge": [
2235
+ {
2236
+ "var": "state"
2237
+ },
2238
+ {
2239
+ "status": "CLOSED",
2240
+ "closedAt": {
2241
+ "var": "$timestamp"
2242
+ }
2243
+ }
2244
+ ]
2245
+ },
2246
+ "dependencies": []
2247
+ },
2248
+ {
2249
+ "from": "CLOSED",
2250
+ "to": "SETTLED",
2251
+ "eventName": "settle",
2252
+ "guard": {
2253
+ "==": [
2254
+ 1,
2255
+ 1
2256
+ ]
2257
+ },
2258
+ "effect": {
2259
+ "merge": [
2260
+ {
2261
+ "var": "state"
2262
+ },
2263
+ {
2264
+ "status": "SETTLED",
2265
+ "settledAt": {
2266
+ "var": "$timestamp"
2267
+ }
2268
+ }
2269
+ ]
2270
+ },
2271
+ "dependencies": []
2272
+ },
2273
+ {
2274
+ "from": "CLOSED",
2275
+ "to": "CANCELLED",
2276
+ "eventName": "cancel",
2277
+ "guard": {
2278
+ "==": [
2279
+ 1,
2280
+ 1
2281
+ ]
2282
+ },
2283
+ "effect": {
2284
+ "merge": [
2285
+ {
2286
+ "var": "state"
2287
+ },
2288
+ {
2289
+ "status": "CANCELLED",
2290
+ "cancelledAt": {
2291
+ "var": "$timestamp"
2292
+ }
2293
+ }
2294
+ ]
2295
+ },
2296
+ "dependencies": []
2297
+ }
2298
+ ]
2299
+ };