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