@ottochain/sdk 1.5.0 → 1.7.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/cjs/apps/contracts/index.js +20 -19
  2. package/dist/cjs/apps/contracts/state-machines/index.js +845 -0
  3. package/dist/cjs/apps/corporate/index.js +20 -34
  4. package/dist/cjs/apps/corporate/state-machines/index.js +4445 -0
  5. package/dist/cjs/apps/governance/index.js +34 -44
  6. package/dist/cjs/apps/governance/state-machines/index.js +2938 -0
  7. package/dist/cjs/apps/identity/index.js +16 -11
  8. package/dist/{esm/apps/oracles/state-machines/oracle.json → cjs/apps/identity/state-machines/index.js} +385 -4
  9. package/dist/cjs/apps/index.js +15 -13
  10. package/dist/cjs/apps/markets/index.js +24 -14
  11. package/dist/cjs/apps/markets/state-machines/index.js +2302 -0
  12. package/dist/cjs/ottochain/index.js +4 -1
  13. package/dist/cjs/ottochain/normalize.js +17 -3
  14. package/dist/cjs/ottochain/types.js +12 -0
  15. package/dist/esm/apps/contracts/index.js +17 -15
  16. package/dist/esm/apps/contracts/state-machines/index.js +842 -0
  17. package/dist/esm/apps/corporate/index.js +15 -30
  18. package/dist/esm/apps/corporate/state-machines/index.js +4442 -0
  19. package/dist/esm/apps/governance/index.js +27 -39
  20. package/dist/esm/apps/governance/state-machines/index.js +2935 -0
  21. package/dist/esm/apps/identity/index.js +13 -7
  22. package/dist/{cjs/apps/oracles/state-machines/oracle.json → esm/apps/identity/state-machines/index.js} +382 -4
  23. package/dist/esm/apps/index.js +14 -12
  24. package/dist/esm/apps/markets/index.js +19 -10
  25. package/dist/esm/apps/markets/state-machines/index.js +2299 -0
  26. package/dist/esm/ottochain/index.js +2 -0
  27. package/dist/esm/ottochain/normalize.js +17 -3
  28. package/dist/esm/ottochain/types.js +11 -1
  29. package/dist/types/apps/contracts/index.d.ts +661 -9
  30. package/dist/types/apps/contracts/state-machines/index.d.ts +652 -0
  31. package/dist/types/apps/corporate/index.d.ts +4015 -7
  32. package/dist/types/apps/corporate/state-machines/index.d.ts +4006 -0
  33. package/dist/types/apps/governance/index.d.ts +2151 -12
  34. package/dist/types/apps/governance/state-machines/index.d.ts +2138 -0
  35. package/dist/types/apps/identity/index.d.ts +601 -4
  36. package/dist/types/apps/identity/state-machines/index.d.ts +596 -0
  37. package/dist/types/apps/index.d.ts +14 -12
  38. package/dist/types/apps/markets/index.d.ts +1690 -7
  39. package/dist/types/apps/markets/state-machines/index.d.ts +1680 -0
  40. package/dist/types/ottochain/index.d.ts +2 -1
  41. package/dist/types/ottochain/normalize.d.ts +14 -0
  42. package/dist/types/ottochain/types.d.ts +9 -0
  43. package/package.json +4 -3
  44. package/dist/cjs/apps/contracts/state-machines/contract.json +0 -352
  45. package/dist/cjs/apps/contracts/state-machines/escrow.json +0 -354
  46. package/dist/cjs/apps/corporate/state-machines/corporate-board.json +0 -1064
  47. package/dist/cjs/apps/corporate/state-machines/corporate-bylaws.json +0 -751
  48. package/dist/cjs/apps/corporate/state-machines/corporate-committee.json +0 -957
  49. package/dist/cjs/apps/corporate/state-machines/corporate-compliance.json +0 -1293
  50. package/dist/cjs/apps/corporate/state-machines/corporate-entity.json +0 -861
  51. package/dist/cjs/apps/corporate/state-machines/corporate-officers.json +0 -843
  52. package/dist/cjs/apps/corporate/state-machines/corporate-proxy.json +0 -783
  53. package/dist/cjs/apps/corporate/state-machines/corporate-resolution.json +0 -1174
  54. package/dist/cjs/apps/corporate/state-machines/corporate-securities.json +0 -1215
  55. package/dist/cjs/apps/corporate/state-machines/corporate-shareholders.json +0 -1298
  56. package/dist/cjs/apps/governance/state-machines/dao-multisig.json +0 -667
  57. package/dist/cjs/apps/governance/state-machines/dao-single.json +0 -230
  58. package/dist/cjs/apps/governance/state-machines/dao-threshold.json +0 -624
  59. package/dist/cjs/apps/governance/state-machines/dao-token.json +0 -638
  60. package/dist/cjs/apps/governance/state-machines/governance-constitution.json +0 -357
  61. package/dist/cjs/apps/governance/state-machines/governance-executive.json +0 -387
  62. package/dist/cjs/apps/governance/state-machines/governance-judiciary.json +0 -558
  63. package/dist/cjs/apps/governance/state-machines/governance-legislature.json +0 -662
  64. package/dist/cjs/apps/governance/state-machines/governance-simple.json +0 -625
  65. package/dist/cjs/apps/identity/state-machines/agent-identity.json +0 -270
  66. package/dist/cjs/apps/markets/state-machines/market-universal.json +0 -621
  67. package/dist/cjs/apps/oracles/index.js +0 -62
  68. package/dist/esm/apps/contracts/state-machines/contract.json +0 -352
  69. package/dist/esm/apps/contracts/state-machines/escrow.json +0 -354
  70. package/dist/esm/apps/corporate/state-machines/corporate-board.json +0 -1064
  71. package/dist/esm/apps/corporate/state-machines/corporate-bylaws.json +0 -751
  72. package/dist/esm/apps/corporate/state-machines/corporate-committee.json +0 -957
  73. package/dist/esm/apps/corporate/state-machines/corporate-compliance.json +0 -1293
  74. package/dist/esm/apps/corporate/state-machines/corporate-entity.json +0 -861
  75. package/dist/esm/apps/corporate/state-machines/corporate-officers.json +0 -843
  76. package/dist/esm/apps/corporate/state-machines/corporate-proxy.json +0 -783
  77. package/dist/esm/apps/corporate/state-machines/corporate-resolution.json +0 -1174
  78. package/dist/esm/apps/corporate/state-machines/corporate-securities.json +0 -1215
  79. package/dist/esm/apps/corporate/state-machines/corporate-shareholders.json +0 -1298
  80. package/dist/esm/apps/governance/state-machines/dao-multisig.json +0 -667
  81. package/dist/esm/apps/governance/state-machines/dao-single.json +0 -230
  82. package/dist/esm/apps/governance/state-machines/dao-threshold.json +0 -624
  83. package/dist/esm/apps/governance/state-machines/dao-token.json +0 -638
  84. package/dist/esm/apps/governance/state-machines/governance-constitution.json +0 -357
  85. package/dist/esm/apps/governance/state-machines/governance-executive.json +0 -387
  86. package/dist/esm/apps/governance/state-machines/governance-judiciary.json +0 -558
  87. package/dist/esm/apps/governance/state-machines/governance-legislature.json +0 -662
  88. package/dist/esm/apps/governance/state-machines/governance-simple.json +0 -625
  89. package/dist/esm/apps/identity/state-machines/agent-identity.json +0 -270
  90. package/dist/esm/apps/markets/state-machines/market-universal.json +0 -621
  91. package/dist/esm/apps/oracles/index.js +0 -42
  92. package/dist/types/apps/oracles/index.d.ts +0 -34
@@ -0,0 +1,2935 @@
1
+ /**
2
+ * Auto-generated from JSON state machine definitions.
3
+ * DO NOT EDIT - regenerate with: npm run prebuild
4
+ */
5
+ export const daoMultisigDef = {
6
+ "metadata": {
7
+ "name": "MultisigDAO",
8
+ "description": "N-of-M multisig governance. Requires threshold signatures for actions.",
9
+ "version": "1.0.0",
10
+ "category": "governance/dao"
11
+ },
12
+ "states": {
13
+ "ACTIVE": {
14
+ "id": "ACTIVE",
15
+ "isFinal": false,
16
+ "metadata": null
17
+ },
18
+ "PENDING": {
19
+ "id": "PENDING",
20
+ "isFinal": false,
21
+ "metadata": null
22
+ },
23
+ "DISSOLVED": {
24
+ "id": "DISSOLVED",
25
+ "isFinal": true,
26
+ "metadata": null
27
+ }
28
+ },
29
+ "initialState": "ACTIVE",
30
+ "transitions": [
31
+ {
32
+ "from": "ACTIVE",
33
+ "to": "PENDING",
34
+ "eventName": "propose",
35
+ "guard": {
36
+ "in": [
37
+ {
38
+ "var": "event.agent"
39
+ },
40
+ {
41
+ "var": "state.signers"
42
+ }
43
+ ]
44
+ },
45
+ "effect": {
46
+ "merge": [
47
+ {
48
+ "var": "state"
49
+ },
50
+ {
51
+ "proposal": {
52
+ "id": {
53
+ "var": "event.proposalId"
54
+ },
55
+ "actionType": {
56
+ "var": "event.actionType"
57
+ },
58
+ "payload": {
59
+ "var": "event.payload"
60
+ },
61
+ "proposer": {
62
+ "var": "event.agent"
63
+ },
64
+ "proposedAt": {
65
+ "var": "$timestamp"
66
+ },
67
+ "expiresAt": {
68
+ "+": [
69
+ {
70
+ "var": "$timestamp"
71
+ },
72
+ {
73
+ "var": "state.proposalTTLMs"
74
+ }
75
+ ]
76
+ }
77
+ },
78
+ "signatures": {
79
+ "setKey": [
80
+ {},
81
+ {
82
+ "var": "event.agent"
83
+ },
84
+ {
85
+ "var": "$timestamp"
86
+ }
87
+ ]
88
+ }
89
+ }
90
+ ]
91
+ },
92
+ "dependencies": []
93
+ },
94
+ {
95
+ "from": "PENDING",
96
+ "to": "PENDING",
97
+ "eventName": "sign",
98
+ "guard": {
99
+ "and": [
100
+ {
101
+ "in": [
102
+ {
103
+ "var": "event.agent"
104
+ },
105
+ {
106
+ "var": "state.signers"
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "!": [
112
+ {
113
+ "getKey": [
114
+ {
115
+ "var": "state.signatures"
116
+ },
117
+ {
118
+ "var": "event.agent"
119
+ }
120
+ ]
121
+ }
122
+ ]
123
+ },
124
+ {
125
+ "<": [
126
+ {
127
+ "size": {
128
+ "var": "state.signatures"
129
+ }
130
+ },
131
+ {
132
+ "var": "state.threshold"
133
+ }
134
+ ]
135
+ }
136
+ ]
137
+ },
138
+ "effect": {
139
+ "merge": [
140
+ {
141
+ "var": "state"
142
+ },
143
+ {
144
+ "signatures": {
145
+ "setKey": [
146
+ {
147
+ "var": "state.signatures"
148
+ },
149
+ {
150
+ "var": "event.agent"
151
+ },
152
+ {
153
+ "var": "$timestamp"
154
+ }
155
+ ]
156
+ }
157
+ }
158
+ ]
159
+ },
160
+ "dependencies": []
161
+ },
162
+ {
163
+ "from": "PENDING",
164
+ "to": "ACTIVE",
165
+ "eventName": "execute",
166
+ "guard": {
167
+ ">=": [
168
+ {
169
+ "size": {
170
+ "var": "state.signatures"
171
+ }
172
+ },
173
+ {
174
+ "var": "state.threshold"
175
+ }
176
+ ]
177
+ },
178
+ "effect": {
179
+ "merge": [
180
+ {
181
+ "var": "state"
182
+ },
183
+ {
184
+ "actions": {
185
+ "cat": [
186
+ {
187
+ "var": "state.actions"
188
+ },
189
+ [
190
+ {
191
+ "id": {
192
+ "var": "state.proposal.id"
193
+ },
194
+ "type": {
195
+ "var": "state.proposal.actionType"
196
+ },
197
+ "payload": {
198
+ "var": "state.proposal.payload"
199
+ },
200
+ "signatures": {
201
+ "var": "state.signatures"
202
+ },
203
+ "executedAt": {
204
+ "var": "$timestamp"
205
+ }
206
+ }
207
+ ]
208
+ ]
209
+ },
210
+ "proposal": null,
211
+ "signatures": {}
212
+ }
213
+ ]
214
+ },
215
+ "emits": [
216
+ {
217
+ "event": "multisig_executed",
218
+ "to": "external"
219
+ }
220
+ ],
221
+ "dependencies": []
222
+ },
223
+ {
224
+ "from": "PENDING",
225
+ "to": "ACTIVE",
226
+ "eventName": "cancel",
227
+ "guard": {
228
+ "or": [
229
+ {
230
+ ">": [
231
+ {
232
+ "var": "$timestamp"
233
+ },
234
+ {
235
+ "var": "state.proposal.expiresAt"
236
+ }
237
+ ]
238
+ },
239
+ {
240
+ "===": [
241
+ {
242
+ "var": "event.agent"
243
+ },
244
+ {
245
+ "var": "state.proposal.proposer"
246
+ }
247
+ ]
248
+ }
249
+ ]
250
+ },
251
+ "effect": {
252
+ "merge": [
253
+ {
254
+ "var": "state"
255
+ },
256
+ {
257
+ "cancelledProposals": {
258
+ "cat": [
259
+ {
260
+ "var": "state.cancelledProposals"
261
+ },
262
+ [
263
+ {
264
+ "merge": [
265
+ {
266
+ "var": "state.proposal"
267
+ },
268
+ {
269
+ "cancelledAt": {
270
+ "var": "$timestamp"
271
+ }
272
+ }
273
+ ]
274
+ }
275
+ ]
276
+ ]
277
+ },
278
+ "proposal": null,
279
+ "signatures": {}
280
+ }
281
+ ]
282
+ },
283
+ "dependencies": []
284
+ },
285
+ {
286
+ "from": "ACTIVE",
287
+ "to": "PENDING",
288
+ "eventName": "propose_add_signer",
289
+ "guard": {
290
+ "in": [
291
+ {
292
+ "var": "event.agent"
293
+ },
294
+ {
295
+ "var": "state.signers"
296
+ }
297
+ ]
298
+ },
299
+ "effect": {
300
+ "merge": [
301
+ {
302
+ "var": "state"
303
+ },
304
+ {
305
+ "proposal": {
306
+ "id": {
307
+ "var": "event.proposalId"
308
+ },
309
+ "actionType": "add_signer",
310
+ "payload": {
311
+ "newSigner": {
312
+ "var": "event.newSigner"
313
+ }
314
+ },
315
+ "proposer": {
316
+ "var": "event.agent"
317
+ },
318
+ "proposedAt": {
319
+ "var": "$timestamp"
320
+ },
321
+ "expiresAt": {
322
+ "+": [
323
+ {
324
+ "var": "$timestamp"
325
+ },
326
+ {
327
+ "var": "state.proposalTTLMs"
328
+ }
329
+ ]
330
+ }
331
+ },
332
+ "signatures": {
333
+ "setKey": [
334
+ {},
335
+ {
336
+ "var": "event.agent"
337
+ },
338
+ {
339
+ "var": "$timestamp"
340
+ }
341
+ ]
342
+ }
343
+ }
344
+ ]
345
+ },
346
+ "dependencies": []
347
+ },
348
+ {
349
+ "from": "ACTIVE",
350
+ "to": "PENDING",
351
+ "eventName": "propose_remove_signer",
352
+ "guard": {
353
+ "and": [
354
+ {
355
+ "in": [
356
+ {
357
+ "var": "event.agent"
358
+ },
359
+ {
360
+ "var": "state.signers"
361
+ }
362
+ ]
363
+ },
364
+ {
365
+ ">": [
366
+ {
367
+ "size": {
368
+ "var": "state.signers"
369
+ }
370
+ },
371
+ {
372
+ "var": "state.threshold"
373
+ }
374
+ ]
375
+ }
376
+ ]
377
+ },
378
+ "effect": {
379
+ "merge": [
380
+ {
381
+ "var": "state"
382
+ },
383
+ {
384
+ "proposal": {
385
+ "id": {
386
+ "var": "event.proposalId"
387
+ },
388
+ "actionType": "remove_signer",
389
+ "payload": {
390
+ "removeSigner": {
391
+ "var": "event.removeSigner"
392
+ }
393
+ },
394
+ "proposer": {
395
+ "var": "event.agent"
396
+ },
397
+ "proposedAt": {
398
+ "var": "$timestamp"
399
+ },
400
+ "expiresAt": {
401
+ "+": [
402
+ {
403
+ "var": "$timestamp"
404
+ },
405
+ {
406
+ "var": "state.proposalTTLMs"
407
+ }
408
+ ]
409
+ }
410
+ },
411
+ "signatures": {
412
+ "setKey": [
413
+ {},
414
+ {
415
+ "var": "event.agent"
416
+ },
417
+ {
418
+ "var": "$timestamp"
419
+ }
420
+ ]
421
+ }
422
+ }
423
+ ]
424
+ },
425
+ "dependencies": []
426
+ },
427
+ {
428
+ "from": "ACTIVE",
429
+ "to": "PENDING",
430
+ "eventName": "propose_change_threshold",
431
+ "guard": {
432
+ "and": [
433
+ {
434
+ "in": [
435
+ {
436
+ "var": "event.agent"
437
+ },
438
+ {
439
+ "var": "state.signers"
440
+ }
441
+ ]
442
+ },
443
+ {
444
+ ">=": [
445
+ {
446
+ "var": "event.newThreshold"
447
+ },
448
+ 1
449
+ ]
450
+ },
451
+ {
452
+ "<=": [
453
+ {
454
+ "var": "event.newThreshold"
455
+ },
456
+ {
457
+ "size": {
458
+ "var": "state.signers"
459
+ }
460
+ }
461
+ ]
462
+ }
463
+ ]
464
+ },
465
+ "effect": {
466
+ "merge": [
467
+ {
468
+ "var": "state"
469
+ },
470
+ {
471
+ "proposal": {
472
+ "id": {
473
+ "var": "event.proposalId"
474
+ },
475
+ "actionType": "change_threshold",
476
+ "payload": {
477
+ "newThreshold": {
478
+ "var": "event.newThreshold"
479
+ }
480
+ },
481
+ "proposer": {
482
+ "var": "event.agent"
483
+ },
484
+ "proposedAt": {
485
+ "var": "$timestamp"
486
+ },
487
+ "expiresAt": {
488
+ "+": [
489
+ {
490
+ "var": "$timestamp"
491
+ },
492
+ {
493
+ "var": "state.proposalTTLMs"
494
+ }
495
+ ]
496
+ }
497
+ },
498
+ "signatures": {
499
+ "setKey": [
500
+ {},
501
+ {
502
+ "var": "event.agent"
503
+ },
504
+ {
505
+ "var": "$timestamp"
506
+ }
507
+ ]
508
+ }
509
+ }
510
+ ]
511
+ },
512
+ "dependencies": []
513
+ },
514
+ {
515
+ "from": "PENDING",
516
+ "to": "ACTIVE",
517
+ "eventName": "apply_signer_change",
518
+ "guard": {
519
+ "and": [
520
+ {
521
+ ">=": [
522
+ {
523
+ "size": {
524
+ "var": "state.signatures"
525
+ }
526
+ },
527
+ {
528
+ "var": "state.threshold"
529
+ }
530
+ ]
531
+ },
532
+ {
533
+ "in": [
534
+ {
535
+ "var": "state.proposal.actionType"
536
+ },
537
+ [
538
+ "add_signer",
539
+ "remove_signer",
540
+ "change_threshold"
541
+ ]
542
+ ]
543
+ }
544
+ ]
545
+ },
546
+ "effect": {
547
+ "if": [
548
+ {
549
+ "===": [
550
+ {
551
+ "var": "state.proposal.actionType"
552
+ },
553
+ "add_signer"
554
+ ]
555
+ },
556
+ {
557
+ "merge": [
558
+ {
559
+ "var": "state"
560
+ },
561
+ {
562
+ "signers": {
563
+ "cat": [
564
+ {
565
+ "var": "state.signers"
566
+ },
567
+ [
568
+ {
569
+ "var": "state.proposal.payload.newSigner"
570
+ }
571
+ ]
572
+ ]
573
+ },
574
+ "proposal": null,
575
+ "signatures": {}
576
+ }
577
+ ]
578
+ },
579
+ {
580
+ "===": [
581
+ {
582
+ "var": "state.proposal.actionType"
583
+ },
584
+ "remove_signer"
585
+ ]
586
+ },
587
+ {
588
+ "merge": [
589
+ {
590
+ "var": "state"
591
+ },
592
+ {
593
+ "signers": {
594
+ "filter": [
595
+ {
596
+ "var": "state.signers"
597
+ },
598
+ {
599
+ "!==": [
600
+ {
601
+ "var": ""
602
+ },
603
+ {
604
+ "var": "state.proposal.payload.removeSigner"
605
+ }
606
+ ]
607
+ }
608
+ ]
609
+ },
610
+ "proposal": null,
611
+ "signatures": {}
612
+ }
613
+ ]
614
+ },
615
+ {
616
+ "merge": [
617
+ {
618
+ "var": "state"
619
+ },
620
+ {
621
+ "threshold": {
622
+ "var": "state.proposal.payload.newThreshold"
623
+ },
624
+ "proposal": null,
625
+ "signatures": {}
626
+ }
627
+ ]
628
+ }
629
+ ]
630
+ },
631
+ "dependencies": []
632
+ },
633
+ {
634
+ "from": "ACTIVE",
635
+ "to": "DISSOLVED",
636
+ "eventName": "dissolve",
637
+ "guard": {
638
+ "===": [
639
+ {
640
+ "var": "event.signatureCount"
641
+ },
642
+ {
643
+ "size": {
644
+ "var": "state.signers"
645
+ }
646
+ }
647
+ ]
648
+ },
649
+ "effect": {
650
+ "merge": [
651
+ {
652
+ "var": "state"
653
+ },
654
+ {
655
+ "dissolvedAt": {
656
+ "var": "$timestamp"
657
+ },
658
+ "status": "DISSOLVED"
659
+ }
660
+ ]
661
+ },
662
+ "dependencies": []
663
+ }
664
+ ],
665
+ "crossReferences": {
666
+ "Identity": "signer verification",
667
+ "Contract": "action execution targets",
668
+ "Treasury": "fund management",
669
+ "Escrow": "controlled release"
670
+ }
671
+ };
672
+ export const daoReputationDef = {
673
+ "metadata": {
674
+ "name": "DAOReputation",
675
+ "description": "Reputation-based governance. Minimum reputation required for participation.",
676
+ "version": "1.0.0",
677
+ "category": "governance/dao"
678
+ },
679
+ "states": {
680
+ "ACTIVE": {
681
+ "id": "ACTIVE",
682
+ "isFinal": false,
683
+ "metadata": null
684
+ },
685
+ "VOTING": {
686
+ "id": "VOTING",
687
+ "isFinal": false,
688
+ "metadata": null
689
+ },
690
+ "DISSOLVED": {
691
+ "id": "DISSOLVED",
692
+ "isFinal": true,
693
+ "metadata": null
694
+ }
695
+ },
696
+ "initialState": "ACTIVE",
697
+ "transitions": [
698
+ {
699
+ "from": "ACTIVE",
700
+ "to": "VOTING",
701
+ "eventName": "propose",
702
+ "guard": {
703
+ ">=": [
704
+ {
705
+ "var": "event.agentReputation"
706
+ },
707
+ {
708
+ "var": "state.proposeThreshold"
709
+ }
710
+ ]
711
+ },
712
+ "effect": {
713
+ "merge": [
714
+ {
715
+ "var": "state"
716
+ },
717
+ {
718
+ "proposal": {
719
+ "id": {
720
+ "var": "event.proposalId"
721
+ },
722
+ "title": {
723
+ "var": "event.title"
724
+ },
725
+ "description": {
726
+ "var": "event.description"
727
+ },
728
+ "actionType": {
729
+ "var": "event.actionType"
730
+ },
731
+ "payload": {
732
+ "var": "event.payload"
733
+ },
734
+ "proposer": {
735
+ "var": "event.agent"
736
+ },
737
+ "proposedAt": {
738
+ "var": "$timestamp"
739
+ },
740
+ "deadline": {
741
+ "+": [
742
+ {
743
+ "var": "$timestamp"
744
+ },
745
+ {
746
+ "var": "state.votingPeriodMs"
747
+ }
748
+ ]
749
+ }
750
+ },
751
+ "votes": {
752
+ "for": [],
753
+ "against": [],
754
+ "abstain": []
755
+ }
756
+ }
757
+ ]
758
+ },
759
+ "dependencies": []
760
+ },
761
+ {
762
+ "from": "VOTING",
763
+ "to": "VOTING",
764
+ "eventName": "vote",
765
+ "guard": {
766
+ "and": [
767
+ {
768
+ ">=": [
769
+ {
770
+ "var": "event.agentReputation"
771
+ },
772
+ {
773
+ "var": "state.voteThreshold"
774
+ }
775
+ ]
776
+ },
777
+ {
778
+ "!": [
779
+ {
780
+ "in": [
781
+ {
782
+ "var": "event.agent"
783
+ },
784
+ {
785
+ "var": "state.votes.for"
786
+ }
787
+ ]
788
+ }
789
+ ]
790
+ },
791
+ {
792
+ "!": [
793
+ {
794
+ "in": [
795
+ {
796
+ "var": "event.agent"
797
+ },
798
+ {
799
+ "var": "state.votes.against"
800
+ }
801
+ ]
802
+ }
803
+ ]
804
+ },
805
+ {
806
+ "!": [
807
+ {
808
+ "in": [
809
+ {
810
+ "var": "event.agent"
811
+ },
812
+ {
813
+ "var": "state.votes.abstain"
814
+ }
815
+ ]
816
+ }
817
+ ]
818
+ },
819
+ {
820
+ "<=": [
821
+ {
822
+ "var": "$timestamp"
823
+ },
824
+ {
825
+ "var": "state.proposal.deadline"
826
+ }
827
+ ]
828
+ }
829
+ ]
830
+ },
831
+ "effect": {
832
+ "merge": [
833
+ {
834
+ "var": "state"
835
+ },
836
+ {
837
+ "votes": {
838
+ "if": [
839
+ {
840
+ "===": [
841
+ {
842
+ "var": "event.vote"
843
+ },
844
+ "for"
845
+ ]
846
+ },
847
+ {
848
+ "merge": [
849
+ {
850
+ "var": "state.votes"
851
+ },
852
+ {
853
+ "for": {
854
+ "cat": [
855
+ {
856
+ "var": "state.votes.for"
857
+ },
858
+ [
859
+ {
860
+ "var": "event.agent"
861
+ }
862
+ ]
863
+ ]
864
+ }
865
+ }
866
+ ]
867
+ },
868
+ {
869
+ "===": [
870
+ {
871
+ "var": "event.vote"
872
+ },
873
+ "against"
874
+ ]
875
+ },
876
+ {
877
+ "merge": [
878
+ {
879
+ "var": "state.votes"
880
+ },
881
+ {
882
+ "against": {
883
+ "cat": [
884
+ {
885
+ "var": "state.votes.against"
886
+ },
887
+ [
888
+ {
889
+ "var": "event.agent"
890
+ }
891
+ ]
892
+ ]
893
+ }
894
+ }
895
+ ]
896
+ },
897
+ {
898
+ "merge": [
899
+ {
900
+ "var": "state.votes"
901
+ },
902
+ {
903
+ "abstain": {
904
+ "cat": [
905
+ {
906
+ "var": "state.votes.abstain"
907
+ },
908
+ [
909
+ {
910
+ "var": "event.agent"
911
+ }
912
+ ]
913
+ ]
914
+ }
915
+ }
916
+ ]
917
+ }
918
+ ]
919
+ }
920
+ }
921
+ ]
922
+ },
923
+ "dependencies": []
924
+ },
925
+ {
926
+ "from": "VOTING",
927
+ "to": "ACTIVE",
928
+ "eventName": "execute",
929
+ "guard": {
930
+ "and": [
931
+ {
932
+ ">": [
933
+ {
934
+ "var": "$timestamp"
935
+ },
936
+ {
937
+ "var": "state.proposal.deadline"
938
+ }
939
+ ]
940
+ },
941
+ {
942
+ ">": [
943
+ {
944
+ "size": {
945
+ "var": "state.votes.for"
946
+ }
947
+ },
948
+ {
949
+ "size": {
950
+ "var": "state.votes.against"
951
+ }
952
+ }
953
+ ]
954
+ },
955
+ {
956
+ ">=": [
957
+ {
958
+ "+": [
959
+ {
960
+ "size": {
961
+ "var": "state.votes.for"
962
+ }
963
+ },
964
+ {
965
+ "size": {
966
+ "var": "state.votes.against"
967
+ }
968
+ }
969
+ ]
970
+ },
971
+ {
972
+ "var": "state.quorum"
973
+ }
974
+ ]
975
+ }
976
+ ]
977
+ },
978
+ "effect": {
979
+ "merge": [
980
+ {
981
+ "var": "state"
982
+ },
983
+ {
984
+ "history": {
985
+ "cat": [
986
+ {
987
+ "var": "state.history"
988
+ },
989
+ [
990
+ {
991
+ "type": "executed",
992
+ "proposal": {
993
+ "var": "state.proposal"
994
+ },
995
+ "votes": {
996
+ "var": "state.votes"
997
+ },
998
+ "at": {
999
+ "var": "$timestamp"
1000
+ }
1001
+ }
1002
+ ]
1003
+ ]
1004
+ },
1005
+ "proposal": null,
1006
+ "votes": null
1007
+ }
1008
+ ]
1009
+ },
1010
+ "emits": [
1011
+ {
1012
+ "event": "proposal_executed",
1013
+ "to": "Reputation",
1014
+ "payload": {
1015
+ "action": "increase",
1016
+ "agents": {
1017
+ "var": "state.votes.for"
1018
+ }
1019
+ }
1020
+ }
1021
+ ],
1022
+ "dependencies": []
1023
+ },
1024
+ {
1025
+ "from": "VOTING",
1026
+ "to": "ACTIVE",
1027
+ "eventName": "reject",
1028
+ "guard": {
1029
+ "and": [
1030
+ {
1031
+ ">": [
1032
+ {
1033
+ "var": "$timestamp"
1034
+ },
1035
+ {
1036
+ "var": "state.proposal.deadline"
1037
+ }
1038
+ ]
1039
+ },
1040
+ {
1041
+ "or": [
1042
+ {
1043
+ "<=": [
1044
+ {
1045
+ "size": {
1046
+ "var": "state.votes.for"
1047
+ }
1048
+ },
1049
+ {
1050
+ "size": {
1051
+ "var": "state.votes.against"
1052
+ }
1053
+ }
1054
+ ]
1055
+ },
1056
+ {
1057
+ "<": [
1058
+ {
1059
+ "+": [
1060
+ {
1061
+ "size": {
1062
+ "var": "state.votes.for"
1063
+ }
1064
+ },
1065
+ {
1066
+ "size": {
1067
+ "var": "state.votes.against"
1068
+ }
1069
+ }
1070
+ ]
1071
+ },
1072
+ {
1073
+ "var": "state.quorum"
1074
+ }
1075
+ ]
1076
+ }
1077
+ ]
1078
+ }
1079
+ ]
1080
+ },
1081
+ "effect": {
1082
+ "merge": [
1083
+ {
1084
+ "var": "state"
1085
+ },
1086
+ {
1087
+ "history": {
1088
+ "cat": [
1089
+ {
1090
+ "var": "state.history"
1091
+ },
1092
+ [
1093
+ {
1094
+ "type": "rejected",
1095
+ "proposal": {
1096
+ "var": "state.proposal"
1097
+ },
1098
+ "votes": {
1099
+ "var": "state.votes"
1100
+ },
1101
+ "at": {
1102
+ "var": "$timestamp"
1103
+ }
1104
+ }
1105
+ ]
1106
+ ]
1107
+ },
1108
+ "proposal": null,
1109
+ "votes": null
1110
+ }
1111
+ ]
1112
+ },
1113
+ "dependencies": []
1114
+ },
1115
+ {
1116
+ "from": "ACTIVE",
1117
+ "to": "ACTIVE",
1118
+ "eventName": "join",
1119
+ "guard": {
1120
+ "and": [
1121
+ {
1122
+ ">=": [
1123
+ {
1124
+ "var": "event.agentReputation"
1125
+ },
1126
+ {
1127
+ "var": "state.memberThreshold"
1128
+ }
1129
+ ]
1130
+ },
1131
+ {
1132
+ "!": [
1133
+ {
1134
+ "in": [
1135
+ {
1136
+ "var": "event.agent"
1137
+ },
1138
+ {
1139
+ "var": "state.members"
1140
+ }
1141
+ ]
1142
+ }
1143
+ ]
1144
+ }
1145
+ ]
1146
+ },
1147
+ "effect": {
1148
+ "merge": [
1149
+ {
1150
+ "var": "state"
1151
+ },
1152
+ {
1153
+ "members": {
1154
+ "cat": [
1155
+ {
1156
+ "var": "state.members"
1157
+ },
1158
+ [
1159
+ {
1160
+ "var": "event.agent"
1161
+ }
1162
+ ]
1163
+ ]
1164
+ },
1165
+ "memberJoinedAt": {
1166
+ "setKey": [
1167
+ {
1168
+ "var": "state.memberJoinedAt"
1169
+ },
1170
+ {
1171
+ "var": "event.agent"
1172
+ },
1173
+ {
1174
+ "var": "$timestamp"
1175
+ }
1176
+ ]
1177
+ }
1178
+ }
1179
+ ]
1180
+ },
1181
+ "dependencies": []
1182
+ },
1183
+ {
1184
+ "from": "ACTIVE",
1185
+ "to": "ACTIVE",
1186
+ "eventName": "leave",
1187
+ "guard": {
1188
+ "in": [
1189
+ {
1190
+ "var": "event.agent"
1191
+ },
1192
+ {
1193
+ "var": "state.members"
1194
+ }
1195
+ ]
1196
+ },
1197
+ "effect": {
1198
+ "merge": [
1199
+ {
1200
+ "var": "state"
1201
+ },
1202
+ {
1203
+ "members": {
1204
+ "filter": [
1205
+ {
1206
+ "var": "state.members"
1207
+ },
1208
+ {
1209
+ "!==": [
1210
+ {
1211
+ "var": ""
1212
+ },
1213
+ {
1214
+ "var": "event.agent"
1215
+ }
1216
+ ]
1217
+ }
1218
+ ]
1219
+ }
1220
+ }
1221
+ ]
1222
+ },
1223
+ "dependencies": []
1224
+ },
1225
+ {
1226
+ "from": "ACTIVE",
1227
+ "to": "VOTING",
1228
+ "eventName": "propose_threshold_change",
1229
+ "guard": {
1230
+ ">=": [
1231
+ {
1232
+ "var": "event.agentReputation"
1233
+ },
1234
+ {
1235
+ "var": "state.proposeThreshold"
1236
+ }
1237
+ ]
1238
+ },
1239
+ "effect": {
1240
+ "merge": [
1241
+ {
1242
+ "var": "state"
1243
+ },
1244
+ {
1245
+ "proposal": {
1246
+ "id": {
1247
+ "var": "event.proposalId"
1248
+ },
1249
+ "title": "Threshold Change",
1250
+ "actionType": "threshold_change",
1251
+ "payload": {
1252
+ "memberThreshold": {
1253
+ "var": "event.memberThreshold"
1254
+ },
1255
+ "voteThreshold": {
1256
+ "var": "event.voteThreshold"
1257
+ },
1258
+ "proposeThreshold": {
1259
+ "var": "event.proposeThreshold"
1260
+ }
1261
+ },
1262
+ "proposer": {
1263
+ "var": "event.agent"
1264
+ },
1265
+ "proposedAt": {
1266
+ "var": "$timestamp"
1267
+ },
1268
+ "deadline": {
1269
+ "+": [
1270
+ {
1271
+ "var": "$timestamp"
1272
+ },
1273
+ {
1274
+ "var": "state.votingPeriodMs"
1275
+ }
1276
+ ]
1277
+ }
1278
+ },
1279
+ "votes": {
1280
+ "for": [],
1281
+ "against": [],
1282
+ "abstain": []
1283
+ }
1284
+ }
1285
+ ]
1286
+ },
1287
+ "dependencies": []
1288
+ }
1289
+ ],
1290
+ "crossReferences": {
1291
+ "Identity": "member verification",
1292
+ "Reputation": "threshold checks",
1293
+ "Contract": "action execution"
1294
+ }
1295
+ };
1296
+ export const daoSingleDef = {
1297
+ "metadata": {
1298
+ "name": "SingleOwnerDAO",
1299
+ "description": "Single owner controls all actions. Simplest governance model.",
1300
+ "version": "1.0.0",
1301
+ "category": "governance/dao"
1302
+ },
1303
+ "states": {
1304
+ "ACTIVE": {
1305
+ "id": "ACTIVE",
1306
+ "isFinal": false,
1307
+ "metadata": null
1308
+ },
1309
+ "TRANSFERRING": {
1310
+ "id": "TRANSFERRING",
1311
+ "isFinal": false,
1312
+ "metadata": null
1313
+ },
1314
+ "DISSOLVED": {
1315
+ "id": "DISSOLVED",
1316
+ "isFinal": true,
1317
+ "metadata": null
1318
+ }
1319
+ },
1320
+ "initialState": "ACTIVE",
1321
+ "transitions": [
1322
+ {
1323
+ "from": "ACTIVE",
1324
+ "to": "ACTIVE",
1325
+ "eventName": "execute",
1326
+ "guard": {
1327
+ "===": [
1328
+ {
1329
+ "var": "event.agent"
1330
+ },
1331
+ {
1332
+ "var": "state.owner"
1333
+ }
1334
+ ]
1335
+ },
1336
+ "effect": {
1337
+ "merge": [
1338
+ {
1339
+ "var": "state"
1340
+ },
1341
+ {
1342
+ "actions": {
1343
+ "cat": [
1344
+ {
1345
+ "var": "state.actions"
1346
+ },
1347
+ [
1348
+ {
1349
+ "id": {
1350
+ "var": "event.actionId"
1351
+ },
1352
+ "type": {
1353
+ "var": "event.actionType"
1354
+ },
1355
+ "payload": {
1356
+ "var": "event.payload"
1357
+ },
1358
+ "executedAt": {
1359
+ "var": "$timestamp"
1360
+ }
1361
+ }
1362
+ ]
1363
+ ]
1364
+ }
1365
+ }
1366
+ ]
1367
+ },
1368
+ "emits": [
1369
+ {
1370
+ "event": "action_executed",
1371
+ "to": "external"
1372
+ }
1373
+ ],
1374
+ "dependencies": []
1375
+ },
1376
+ {
1377
+ "from": "ACTIVE",
1378
+ "to": "TRANSFERRING",
1379
+ "eventName": "transfer_ownership",
1380
+ "guard": {
1381
+ "===": [
1382
+ {
1383
+ "var": "event.agent"
1384
+ },
1385
+ {
1386
+ "var": "state.owner"
1387
+ }
1388
+ ]
1389
+ },
1390
+ "effect": {
1391
+ "merge": [
1392
+ {
1393
+ "var": "state"
1394
+ },
1395
+ {
1396
+ "pendingOwner": {
1397
+ "var": "event.newOwner"
1398
+ },
1399
+ "transferInitiatedAt": {
1400
+ "var": "$timestamp"
1401
+ }
1402
+ }
1403
+ ]
1404
+ },
1405
+ "dependencies": []
1406
+ },
1407
+ {
1408
+ "from": "TRANSFERRING",
1409
+ "to": "ACTIVE",
1410
+ "eventName": "accept_ownership",
1411
+ "guard": {
1412
+ "===": [
1413
+ {
1414
+ "var": "event.agent"
1415
+ },
1416
+ {
1417
+ "var": "state.pendingOwner"
1418
+ }
1419
+ ]
1420
+ },
1421
+ "effect": {
1422
+ "merge": [
1423
+ {
1424
+ "var": "state"
1425
+ },
1426
+ {
1427
+ "owner": {
1428
+ "var": "state.pendingOwner"
1429
+ },
1430
+ "pendingOwner": null,
1431
+ "transferInitiatedAt": null,
1432
+ "ownershipHistory": {
1433
+ "cat": [
1434
+ {
1435
+ "var": "state.ownershipHistory"
1436
+ },
1437
+ [
1438
+ {
1439
+ "from": {
1440
+ "var": "state.owner"
1441
+ },
1442
+ "to": {
1443
+ "var": "state.pendingOwner"
1444
+ },
1445
+ "at": {
1446
+ "var": "$timestamp"
1447
+ }
1448
+ }
1449
+ ]
1450
+ ]
1451
+ }
1452
+ }
1453
+ ]
1454
+ },
1455
+ "emits": [
1456
+ {
1457
+ "event": "ownership_transferred",
1458
+ "to": "Identity"
1459
+ }
1460
+ ],
1461
+ "dependencies": []
1462
+ },
1463
+ {
1464
+ "from": "TRANSFERRING",
1465
+ "to": "ACTIVE",
1466
+ "eventName": "cancel_transfer",
1467
+ "guard": {
1468
+ "===": [
1469
+ {
1470
+ "var": "event.agent"
1471
+ },
1472
+ {
1473
+ "var": "state.owner"
1474
+ }
1475
+ ]
1476
+ },
1477
+ "effect": {
1478
+ "merge": [
1479
+ {
1480
+ "var": "state"
1481
+ },
1482
+ {
1483
+ "pendingOwner": null,
1484
+ "transferInitiatedAt": null
1485
+ }
1486
+ ]
1487
+ },
1488
+ "dependencies": []
1489
+ },
1490
+ {
1491
+ "from": "ACTIVE",
1492
+ "to": "DISSOLVED",
1493
+ "eventName": "dissolve",
1494
+ "guard": {
1495
+ "===": [
1496
+ {
1497
+ "var": "event.agent"
1498
+ },
1499
+ {
1500
+ "var": "state.owner"
1501
+ }
1502
+ ]
1503
+ },
1504
+ "effect": {
1505
+ "merge": [
1506
+ {
1507
+ "var": "state"
1508
+ },
1509
+ {
1510
+ "dissolvedAt": {
1511
+ "var": "$timestamp"
1512
+ },
1513
+ "status": "DISSOLVED"
1514
+ }
1515
+ ]
1516
+ },
1517
+ "dependencies": []
1518
+ }
1519
+ ],
1520
+ "crossReferences": {
1521
+ "Identity": "owner registration",
1522
+ "Contract": "action execution targets",
1523
+ "Treasury": "fund management"
1524
+ }
1525
+ };
1526
+ export const daoTokenDef = {
1527
+ "metadata": {
1528
+ "name": "TokenDAO",
1529
+ "description": "Token-weighted voting. Voting power proportional to token holdings.",
1530
+ "version": "1.0.0",
1531
+ "category": "governance/dao"
1532
+ },
1533
+ "states": {
1534
+ "ACTIVE": {
1535
+ "id": "ACTIVE",
1536
+ "isFinal": false,
1537
+ "metadata": null
1538
+ },
1539
+ "VOTING": {
1540
+ "id": "VOTING",
1541
+ "isFinal": false,
1542
+ "metadata": null
1543
+ },
1544
+ "QUEUED": {
1545
+ "id": "QUEUED",
1546
+ "isFinal": false,
1547
+ "metadata": null
1548
+ },
1549
+ "DISSOLVED": {
1550
+ "id": "DISSOLVED",
1551
+ "isFinal": true,
1552
+ "metadata": null
1553
+ }
1554
+ },
1555
+ "initialState": "ACTIVE",
1556
+ "transitions": [
1557
+ {
1558
+ "from": "ACTIVE",
1559
+ "to": "VOTING",
1560
+ "eventName": "propose",
1561
+ "guard": {
1562
+ ">=": [
1563
+ {
1564
+ "getKey": [
1565
+ {
1566
+ "var": "state.balances"
1567
+ },
1568
+ {
1569
+ "var": "event.agent"
1570
+ }
1571
+ ]
1572
+ },
1573
+ {
1574
+ "var": "state.proposalThreshold"
1575
+ }
1576
+ ]
1577
+ },
1578
+ "effect": {
1579
+ "merge": [
1580
+ {
1581
+ "var": "state"
1582
+ },
1583
+ {
1584
+ "proposal": {
1585
+ "id": {
1586
+ "var": "event.proposalId"
1587
+ },
1588
+ "title": {
1589
+ "var": "event.title"
1590
+ },
1591
+ "description": {
1592
+ "var": "event.description"
1593
+ },
1594
+ "actionType": {
1595
+ "var": "event.actionType"
1596
+ },
1597
+ "payload": {
1598
+ "var": "event.payload"
1599
+ },
1600
+ "proposer": {
1601
+ "var": "event.agent"
1602
+ },
1603
+ "proposedAt": {
1604
+ "var": "$timestamp"
1605
+ },
1606
+ "votingEndsAt": {
1607
+ "+": [
1608
+ {
1609
+ "var": "$timestamp"
1610
+ },
1611
+ {
1612
+ "var": "state.votingPeriodMs"
1613
+ }
1614
+ ]
1615
+ },
1616
+ "snapshotBlock": {
1617
+ "var": "event.snapshotBlock"
1618
+ }
1619
+ },
1620
+ "votes": {
1621
+ "for": 0,
1622
+ "against": 0,
1623
+ "abstain": 0,
1624
+ "voters": {}
1625
+ }
1626
+ }
1627
+ ]
1628
+ },
1629
+ "dependencies": []
1630
+ },
1631
+ {
1632
+ "from": "VOTING",
1633
+ "to": "VOTING",
1634
+ "eventName": "vote",
1635
+ "guard": {
1636
+ "and": [
1637
+ {
1638
+ ">": [
1639
+ {
1640
+ "getKey": [
1641
+ {
1642
+ "var": "state.balances"
1643
+ },
1644
+ {
1645
+ "var": "event.agent"
1646
+ }
1647
+ ]
1648
+ },
1649
+ 0
1650
+ ]
1651
+ },
1652
+ {
1653
+ "!": [
1654
+ {
1655
+ "getKey": [
1656
+ {
1657
+ "var": "state.votes.voters"
1658
+ },
1659
+ {
1660
+ "var": "event.agent"
1661
+ }
1662
+ ]
1663
+ }
1664
+ ]
1665
+ },
1666
+ {
1667
+ "<=": [
1668
+ {
1669
+ "var": "$timestamp"
1670
+ },
1671
+ {
1672
+ "var": "state.proposal.votingEndsAt"
1673
+ }
1674
+ ]
1675
+ }
1676
+ ]
1677
+ },
1678
+ "effect": {
1679
+ "merge": [
1680
+ {
1681
+ "var": "state"
1682
+ },
1683
+ {
1684
+ "votes": {
1685
+ "merge": [
1686
+ {
1687
+ "var": "state.votes"
1688
+ },
1689
+ {
1690
+ "if": [
1691
+ {
1692
+ "===": [
1693
+ {
1694
+ "var": "event.vote"
1695
+ },
1696
+ "for"
1697
+ ]
1698
+ },
1699
+ {
1700
+ "for": {
1701
+ "+": [
1702
+ {
1703
+ "var": "state.votes.for"
1704
+ },
1705
+ {
1706
+ "getKey": [
1707
+ {
1708
+ "var": "state.balances"
1709
+ },
1710
+ {
1711
+ "var": "event.agent"
1712
+ }
1713
+ ]
1714
+ }
1715
+ ]
1716
+ }
1717
+ },
1718
+ {
1719
+ "===": [
1720
+ {
1721
+ "var": "event.vote"
1722
+ },
1723
+ "against"
1724
+ ]
1725
+ },
1726
+ {
1727
+ "against": {
1728
+ "+": [
1729
+ {
1730
+ "var": "state.votes.against"
1731
+ },
1732
+ {
1733
+ "getKey": [
1734
+ {
1735
+ "var": "state.balances"
1736
+ },
1737
+ {
1738
+ "var": "event.agent"
1739
+ }
1740
+ ]
1741
+ }
1742
+ ]
1743
+ }
1744
+ },
1745
+ {
1746
+ "abstain": {
1747
+ "+": [
1748
+ {
1749
+ "var": "state.votes.abstain"
1750
+ },
1751
+ {
1752
+ "getKey": [
1753
+ {
1754
+ "var": "state.balances"
1755
+ },
1756
+ {
1757
+ "var": "event.agent"
1758
+ }
1759
+ ]
1760
+ }
1761
+ ]
1762
+ }
1763
+ }
1764
+ ]
1765
+ },
1766
+ {
1767
+ "voters": {
1768
+ "setKey": [
1769
+ {
1770
+ "var": "state.votes.voters"
1771
+ },
1772
+ {
1773
+ "var": "event.agent"
1774
+ },
1775
+ {
1776
+ "vote": {
1777
+ "var": "event.vote"
1778
+ },
1779
+ "weight": {
1780
+ "getKey": [
1781
+ {
1782
+ "var": "state.balances"
1783
+ },
1784
+ {
1785
+ "var": "event.agent"
1786
+ }
1787
+ ]
1788
+ },
1789
+ "votedAt": {
1790
+ "var": "$timestamp"
1791
+ }
1792
+ }
1793
+ ]
1794
+ }
1795
+ }
1796
+ ]
1797
+ }
1798
+ }
1799
+ ]
1800
+ },
1801
+ "dependencies": []
1802
+ },
1803
+ {
1804
+ "from": "VOTING",
1805
+ "to": "QUEUED",
1806
+ "eventName": "queue",
1807
+ "guard": {
1808
+ "and": [
1809
+ {
1810
+ ">": [
1811
+ {
1812
+ "var": "$timestamp"
1813
+ },
1814
+ {
1815
+ "var": "state.proposal.votingEndsAt"
1816
+ }
1817
+ ]
1818
+ },
1819
+ {
1820
+ ">": [
1821
+ {
1822
+ "var": "state.votes.for"
1823
+ },
1824
+ {
1825
+ "var": "state.votes.against"
1826
+ }
1827
+ ]
1828
+ },
1829
+ {
1830
+ ">=": [
1831
+ {
1832
+ "+": [
1833
+ {
1834
+ "var": "state.votes.for"
1835
+ },
1836
+ {
1837
+ "var": "state.votes.against"
1838
+ },
1839
+ {
1840
+ "var": "state.votes.abstain"
1841
+ }
1842
+ ]
1843
+ },
1844
+ {
1845
+ "var": "state.quorum"
1846
+ }
1847
+ ]
1848
+ }
1849
+ ]
1850
+ },
1851
+ "effect": {
1852
+ "merge": [
1853
+ {
1854
+ "var": "state"
1855
+ },
1856
+ {
1857
+ "proposal": {
1858
+ "merge": [
1859
+ {
1860
+ "var": "state.proposal"
1861
+ },
1862
+ {
1863
+ "queuedAt": {
1864
+ "var": "$timestamp"
1865
+ },
1866
+ "executableAt": {
1867
+ "+": [
1868
+ {
1869
+ "var": "$timestamp"
1870
+ },
1871
+ {
1872
+ "var": "state.timelockMs"
1873
+ }
1874
+ ]
1875
+ }
1876
+ }
1877
+ ]
1878
+ }
1879
+ }
1880
+ ]
1881
+ },
1882
+ "dependencies": []
1883
+ },
1884
+ {
1885
+ "from": "QUEUED",
1886
+ "to": "ACTIVE",
1887
+ "eventName": "execute",
1888
+ "guard": {
1889
+ ">=": [
1890
+ {
1891
+ "var": "$timestamp"
1892
+ },
1893
+ {
1894
+ "var": "state.proposal.executableAt"
1895
+ }
1896
+ ]
1897
+ },
1898
+ "effect": {
1899
+ "merge": [
1900
+ {
1901
+ "var": "state"
1902
+ },
1903
+ {
1904
+ "executedProposals": {
1905
+ "cat": [
1906
+ {
1907
+ "var": "state.executedProposals"
1908
+ },
1909
+ [
1910
+ {
1911
+ "merge": [
1912
+ {
1913
+ "var": "state.proposal"
1914
+ },
1915
+ {
1916
+ "votes": {
1917
+ "var": "state.votes"
1918
+ },
1919
+ "executedAt": {
1920
+ "var": "$timestamp"
1921
+ }
1922
+ }
1923
+ ]
1924
+ }
1925
+ ]
1926
+ ]
1927
+ },
1928
+ "proposal": null,
1929
+ "votes": null
1930
+ }
1931
+ ]
1932
+ },
1933
+ "emits": [
1934
+ {
1935
+ "event": "proposal_executed",
1936
+ "to": "external"
1937
+ }
1938
+ ],
1939
+ "dependencies": []
1940
+ },
1941
+ {
1942
+ "from": "VOTING",
1943
+ "to": "ACTIVE",
1944
+ "eventName": "reject",
1945
+ "guard": {
1946
+ "and": [
1947
+ {
1948
+ ">": [
1949
+ {
1950
+ "var": "$timestamp"
1951
+ },
1952
+ {
1953
+ "var": "state.proposal.votingEndsAt"
1954
+ }
1955
+ ]
1956
+ },
1957
+ {
1958
+ "or": [
1959
+ {
1960
+ "<=": [
1961
+ {
1962
+ "var": "state.votes.for"
1963
+ },
1964
+ {
1965
+ "var": "state.votes.against"
1966
+ }
1967
+ ]
1968
+ },
1969
+ {
1970
+ "<": [
1971
+ {
1972
+ "+": [
1973
+ {
1974
+ "var": "state.votes.for"
1975
+ },
1976
+ {
1977
+ "var": "state.votes.against"
1978
+ },
1979
+ {
1980
+ "var": "state.votes.abstain"
1981
+ }
1982
+ ]
1983
+ },
1984
+ {
1985
+ "var": "state.quorum"
1986
+ }
1987
+ ]
1988
+ }
1989
+ ]
1990
+ }
1991
+ ]
1992
+ },
1993
+ "effect": {
1994
+ "merge": [
1995
+ {
1996
+ "var": "state"
1997
+ },
1998
+ {
1999
+ "rejectedProposals": {
2000
+ "cat": [
2001
+ {
2002
+ "var": "state.rejectedProposals"
2003
+ },
2004
+ [
2005
+ {
2006
+ "merge": [
2007
+ {
2008
+ "var": "state.proposal"
2009
+ },
2010
+ {
2011
+ "votes": {
2012
+ "var": "state.votes"
2013
+ },
2014
+ "rejectedAt": {
2015
+ "var": "$timestamp"
2016
+ }
2017
+ }
2018
+ ]
2019
+ }
2020
+ ]
2021
+ ]
2022
+ },
2023
+ "proposal": null,
2024
+ "votes": null
2025
+ }
2026
+ ]
2027
+ },
2028
+ "dependencies": []
2029
+ },
2030
+ {
2031
+ "from": "QUEUED",
2032
+ "to": "ACTIVE",
2033
+ "eventName": "cancel",
2034
+ "guard": {
2035
+ "===": [
2036
+ {
2037
+ "var": "event.agent"
2038
+ },
2039
+ {
2040
+ "var": "state.proposal.proposer"
2041
+ }
2042
+ ]
2043
+ },
2044
+ "effect": {
2045
+ "merge": [
2046
+ {
2047
+ "var": "state"
2048
+ },
2049
+ {
2050
+ "cancelledProposals": {
2051
+ "cat": [
2052
+ {
2053
+ "var": "state.cancelledProposals"
2054
+ },
2055
+ [
2056
+ {
2057
+ "merge": [
2058
+ {
2059
+ "var": "state.proposal"
2060
+ },
2061
+ {
2062
+ "cancelledAt": {
2063
+ "var": "$timestamp"
2064
+ }
2065
+ }
2066
+ ]
2067
+ }
2068
+ ]
2069
+ ]
2070
+ },
2071
+ "proposal": null,
2072
+ "votes": null
2073
+ }
2074
+ ]
2075
+ },
2076
+ "dependencies": []
2077
+ },
2078
+ {
2079
+ "from": "ACTIVE",
2080
+ "to": "ACTIVE",
2081
+ "eventName": "delegate",
2082
+ "guard": {
2083
+ ">": [
2084
+ {
2085
+ "getKey": [
2086
+ {
2087
+ "var": "state.balances"
2088
+ },
2089
+ {
2090
+ "var": "event.agent"
2091
+ }
2092
+ ]
2093
+ },
2094
+ 0
2095
+ ]
2096
+ },
2097
+ "effect": {
2098
+ "merge": [
2099
+ {
2100
+ "var": "state"
2101
+ },
2102
+ {
2103
+ "delegations": {
2104
+ "setKey": [
2105
+ {
2106
+ "var": "state.delegations"
2107
+ },
2108
+ {
2109
+ "var": "event.agent"
2110
+ },
2111
+ {
2112
+ "var": "event.delegateTo"
2113
+ }
2114
+ ]
2115
+ }
2116
+ }
2117
+ ]
2118
+ },
2119
+ "dependencies": []
2120
+ },
2121
+ {
2122
+ "from": "ACTIVE",
2123
+ "to": "ACTIVE",
2124
+ "eventName": "undelegate",
2125
+ "guard": {
2126
+ "getKey": [
2127
+ {
2128
+ "var": "state.delegations"
2129
+ },
2130
+ {
2131
+ "var": "event.agent"
2132
+ }
2133
+ ]
2134
+ },
2135
+ "effect": {
2136
+ "merge": [
2137
+ {
2138
+ "var": "state"
2139
+ },
2140
+ {
2141
+ "delegations": {
2142
+ "deleteKey": [
2143
+ {
2144
+ "var": "state.delegations"
2145
+ },
2146
+ {
2147
+ "var": "event.agent"
2148
+ }
2149
+ ]
2150
+ }
2151
+ }
2152
+ ]
2153
+ },
2154
+ "dependencies": []
2155
+ }
2156
+ ],
2157
+ "crossReferences": {
2158
+ "Identity": "voter verification",
2159
+ "Token": "balance snapshots",
2160
+ "Contract": "action execution",
2161
+ "Treasury": "fund management"
2162
+ }
2163
+ };
2164
+ export const govSimpleDef = {
2165
+ "metadata": {
2166
+ "name": "Governance",
2167
+ "description": "Simple org governance: manage members, update rules, resolve disputes",
2168
+ "version": "1.0.0"
2169
+ },
2170
+ "states": {
2171
+ "ACTIVE": {
2172
+ "id": "ACTIVE",
2173
+ "isFinal": false,
2174
+ "metadata": null
2175
+ },
2176
+ "VOTING": {
2177
+ "id": "VOTING",
2178
+ "isFinal": false,
2179
+ "metadata": null
2180
+ },
2181
+ "DISPUTE": {
2182
+ "id": "DISPUTE",
2183
+ "isFinal": false,
2184
+ "metadata": null
2185
+ },
2186
+ "DISSOLVED": {
2187
+ "id": "DISSOLVED",
2188
+ "isFinal": true,
2189
+ "metadata": null
2190
+ }
2191
+ },
2192
+ "initialState": "ACTIVE",
2193
+ "transitions": [
2194
+ {
2195
+ "from": "ACTIVE",
2196
+ "to": "ACTIVE",
2197
+ "eventName": "add_member",
2198
+ "guard": {
2199
+ "in": [
2200
+ {
2201
+ "var": "event.agent"
2202
+ },
2203
+ {
2204
+ "var": "state.admins"
2205
+ }
2206
+ ]
2207
+ },
2208
+ "effect": {
2209
+ "merge": [
2210
+ {
2211
+ "var": "state"
2212
+ },
2213
+ {
2214
+ "members": {
2215
+ "setKey": [
2216
+ {
2217
+ "var": "state.members"
2218
+ },
2219
+ {
2220
+ "var": "event.member"
2221
+ },
2222
+ {
2223
+ "role": {
2224
+ "var": "event.role"
2225
+ },
2226
+ "addedAt": {
2227
+ "var": "$timestamp"
2228
+ }
2229
+ }
2230
+ ]
2231
+ }
2232
+ }
2233
+ ]
2234
+ },
2235
+ "dependencies": []
2236
+ },
2237
+ {
2238
+ "from": "ACTIVE",
2239
+ "to": "ACTIVE",
2240
+ "eventName": "remove_member",
2241
+ "guard": {
2242
+ "in": [
2243
+ {
2244
+ "var": "event.agent"
2245
+ },
2246
+ {
2247
+ "var": "state.admins"
2248
+ }
2249
+ ]
2250
+ },
2251
+ "effect": {
2252
+ "merge": [
2253
+ {
2254
+ "var": "state"
2255
+ },
2256
+ {
2257
+ "members": {
2258
+ "deleteKey": [
2259
+ {
2260
+ "var": "state.members"
2261
+ },
2262
+ {
2263
+ "var": "event.member"
2264
+ }
2265
+ ]
2266
+ }
2267
+ }
2268
+ ]
2269
+ },
2270
+ "dependencies": []
2271
+ },
2272
+ {
2273
+ "from": "ACTIVE",
2274
+ "to": "VOTING",
2275
+ "eventName": "propose",
2276
+ "guard": {
2277
+ "getKey": [
2278
+ {
2279
+ "var": "state.members"
2280
+ },
2281
+ {
2282
+ "var": "event.agent"
2283
+ }
2284
+ ]
2285
+ },
2286
+ "effect": {
2287
+ "merge": [
2288
+ {
2289
+ "var": "state"
2290
+ },
2291
+ {
2292
+ "proposal": {
2293
+ "id": {
2294
+ "var": "event.proposalId"
2295
+ },
2296
+ "type": {
2297
+ "var": "event.type"
2298
+ },
2299
+ "changes": {
2300
+ "var": "event.changes"
2301
+ },
2302
+ "proposer": {
2303
+ "var": "event.agent"
2304
+ },
2305
+ "proposedAt": {
2306
+ "var": "$timestamp"
2307
+ },
2308
+ "deadline": {
2309
+ "+": [
2310
+ {
2311
+ "var": "$timestamp"
2312
+ },
2313
+ {
2314
+ "var": "state.votingPeriodMs"
2315
+ }
2316
+ ]
2317
+ }
2318
+ },
2319
+ "votes": {}
2320
+ }
2321
+ ]
2322
+ },
2323
+ "dependencies": []
2324
+ },
2325
+ {
2326
+ "from": "VOTING",
2327
+ "to": "VOTING",
2328
+ "eventName": "vote",
2329
+ "guard": {
2330
+ "and": [
2331
+ {
2332
+ "getKey": [
2333
+ {
2334
+ "var": "state.members"
2335
+ },
2336
+ {
2337
+ "var": "event.agent"
2338
+ }
2339
+ ]
2340
+ },
2341
+ {
2342
+ "!": [
2343
+ {
2344
+ "getKey": [
2345
+ {
2346
+ "var": "state.votes"
2347
+ },
2348
+ {
2349
+ "var": "event.agent"
2350
+ }
2351
+ ]
2352
+ }
2353
+ ]
2354
+ }
2355
+ ]
2356
+ },
2357
+ "effect": {
2358
+ "merge": [
2359
+ {
2360
+ "var": "state"
2361
+ },
2362
+ {
2363
+ "votes": {
2364
+ "setKey": [
2365
+ {
2366
+ "var": "state.votes"
2367
+ },
2368
+ {
2369
+ "var": "event.agent"
2370
+ },
2371
+ {
2372
+ "vote": {
2373
+ "var": "event.vote"
2374
+ },
2375
+ "votedAt": {
2376
+ "var": "$timestamp"
2377
+ }
2378
+ }
2379
+ ]
2380
+ }
2381
+ }
2382
+ ]
2383
+ },
2384
+ "dependencies": []
2385
+ },
2386
+ {
2387
+ "from": "VOTING",
2388
+ "to": "ACTIVE",
2389
+ "eventName": "finalize",
2390
+ "guard": {
2391
+ ">=": [
2392
+ {
2393
+ "var": "event.forCount"
2394
+ },
2395
+ {
2396
+ "*": [
2397
+ {
2398
+ "size": {
2399
+ "var": "state.members"
2400
+ }
2401
+ },
2402
+ {
2403
+ "var": "state.passingThreshold"
2404
+ }
2405
+ ]
2406
+ }
2407
+ ]
2408
+ },
2409
+ "effect": {
2410
+ "merge": [
2411
+ {
2412
+ "var": "state"
2413
+ },
2414
+ {
2415
+ "rules": {
2416
+ "merge": [
2417
+ {
2418
+ "var": "state.rules"
2419
+ },
2420
+ {
2421
+ "var": "state.proposal.changes"
2422
+ }
2423
+ ]
2424
+ },
2425
+ "history": {
2426
+ "cat": [
2427
+ {
2428
+ "var": "state.history"
2429
+ },
2430
+ [
2431
+ {
2432
+ "type": "rule_change",
2433
+ "proposal": {
2434
+ "var": "state.proposal"
2435
+ },
2436
+ "outcome": "passed",
2437
+ "finalizedAt": {
2438
+ "var": "$timestamp"
2439
+ }
2440
+ }
2441
+ ]
2442
+ ]
2443
+ },
2444
+ "proposal": null,
2445
+ "votes": {}
2446
+ }
2447
+ ]
2448
+ },
2449
+ "dependencies": []
2450
+ },
2451
+ {
2452
+ "from": "VOTING",
2453
+ "to": "ACTIVE",
2454
+ "eventName": "finalize",
2455
+ "guard": {
2456
+ "<": [
2457
+ {
2458
+ "var": "event.forCount"
2459
+ },
2460
+ {
2461
+ "*": [
2462
+ {
2463
+ "size": {
2464
+ "var": "state.members"
2465
+ }
2466
+ },
2467
+ {
2468
+ "var": "state.passingThreshold"
2469
+ }
2470
+ ]
2471
+ }
2472
+ ]
2473
+ },
2474
+ "effect": {
2475
+ "merge": [
2476
+ {
2477
+ "var": "state"
2478
+ },
2479
+ {
2480
+ "history": {
2481
+ "cat": [
2482
+ {
2483
+ "var": "state.history"
2484
+ },
2485
+ [
2486
+ {
2487
+ "type": "rule_change",
2488
+ "proposal": {
2489
+ "var": "state.proposal"
2490
+ },
2491
+ "outcome": "failed",
2492
+ "finalizedAt": {
2493
+ "var": "$timestamp"
2494
+ }
2495
+ }
2496
+ ]
2497
+ ]
2498
+ },
2499
+ "proposal": null,
2500
+ "votes": {}
2501
+ }
2502
+ ]
2503
+ },
2504
+ "dependencies": []
2505
+ },
2506
+ {
2507
+ "from": "ACTIVE",
2508
+ "to": "DISPUTE",
2509
+ "eventName": "file_dispute",
2510
+ "guard": {
2511
+ "getKey": [
2512
+ {
2513
+ "var": "state.members"
2514
+ },
2515
+ {
2516
+ "var": "event.agent"
2517
+ }
2518
+ ]
2519
+ },
2520
+ "effect": {
2521
+ "merge": [
2522
+ {
2523
+ "var": "state"
2524
+ },
2525
+ {
2526
+ "dispute": {
2527
+ "id": {
2528
+ "var": "event.disputeId"
2529
+ },
2530
+ "plaintiff": {
2531
+ "var": "event.agent"
2532
+ },
2533
+ "defendant": {
2534
+ "var": "event.defendant"
2535
+ },
2536
+ "claim": {
2537
+ "var": "event.claim"
2538
+ },
2539
+ "filedAt": {
2540
+ "var": "$timestamp"
2541
+ },
2542
+ "evidence": []
2543
+ },
2544
+ "votes": {}
2545
+ }
2546
+ ]
2547
+ },
2548
+ "dependencies": []
2549
+ },
2550
+ {
2551
+ "from": "DISPUTE",
2552
+ "to": "DISPUTE",
2553
+ "eventName": "submit_evidence",
2554
+ "guard": {
2555
+ "or": [
2556
+ {
2557
+ "===": [
2558
+ {
2559
+ "var": "event.agent"
2560
+ },
2561
+ {
2562
+ "var": "state.dispute.plaintiff"
2563
+ }
2564
+ ]
2565
+ },
2566
+ {
2567
+ "===": [
2568
+ {
2569
+ "var": "event.agent"
2570
+ },
2571
+ {
2572
+ "var": "state.dispute.defendant"
2573
+ }
2574
+ ]
2575
+ }
2576
+ ]
2577
+ },
2578
+ "effect": {
2579
+ "merge": [
2580
+ {
2581
+ "var": "state"
2582
+ },
2583
+ {
2584
+ "dispute": {
2585
+ "merge": [
2586
+ {
2587
+ "var": "state.dispute"
2588
+ },
2589
+ {
2590
+ "evidence": {
2591
+ "cat": [
2592
+ {
2593
+ "var": "state.dispute.evidence"
2594
+ },
2595
+ [
2596
+ {
2597
+ "from": {
2598
+ "var": "event.agent"
2599
+ },
2600
+ "content": {
2601
+ "var": "event.content"
2602
+ },
2603
+ "at": {
2604
+ "var": "$timestamp"
2605
+ }
2606
+ }
2607
+ ]
2608
+ ]
2609
+ }
2610
+ }
2611
+ ]
2612
+ }
2613
+ }
2614
+ ]
2615
+ },
2616
+ "dependencies": []
2617
+ },
2618
+ {
2619
+ "from": "DISPUTE",
2620
+ "to": "DISPUTE",
2621
+ "eventName": "vote",
2622
+ "guard": {
2623
+ "and": [
2624
+ {
2625
+ "getKey": [
2626
+ {
2627
+ "var": "state.members"
2628
+ },
2629
+ {
2630
+ "var": "event.agent"
2631
+ }
2632
+ ]
2633
+ },
2634
+ {
2635
+ "!==": [
2636
+ {
2637
+ "var": "event.agent"
2638
+ },
2639
+ {
2640
+ "var": "state.dispute.plaintiff"
2641
+ }
2642
+ ]
2643
+ },
2644
+ {
2645
+ "!==": [
2646
+ {
2647
+ "var": "event.agent"
2648
+ },
2649
+ {
2650
+ "var": "state.dispute.defendant"
2651
+ }
2652
+ ]
2653
+ },
2654
+ {
2655
+ "!": [
2656
+ {
2657
+ "getKey": [
2658
+ {
2659
+ "var": "state.votes"
2660
+ },
2661
+ {
2662
+ "var": "event.agent"
2663
+ }
2664
+ ]
2665
+ }
2666
+ ]
2667
+ }
2668
+ ]
2669
+ },
2670
+ "effect": {
2671
+ "merge": [
2672
+ {
2673
+ "var": "state"
2674
+ },
2675
+ {
2676
+ "votes": {
2677
+ "setKey": [
2678
+ {
2679
+ "var": "state.votes"
2680
+ },
2681
+ {
2682
+ "var": "event.agent"
2683
+ },
2684
+ {
2685
+ "ruling": {
2686
+ "var": "event.ruling"
2687
+ },
2688
+ "votedAt": {
2689
+ "var": "$timestamp"
2690
+ }
2691
+ }
2692
+ ]
2693
+ }
2694
+ }
2695
+ ]
2696
+ },
2697
+ "dependencies": []
2698
+ },
2699
+ {
2700
+ "from": "DISPUTE",
2701
+ "to": "ACTIVE",
2702
+ "eventName": "resolve",
2703
+ "guard": {
2704
+ ">=": [
2705
+ {
2706
+ "size": {
2707
+ "var": "state.votes"
2708
+ }
2709
+ },
2710
+ {
2711
+ "var": "state.disputeQuorum"
2712
+ }
2713
+ ]
2714
+ },
2715
+ "effect": {
2716
+ "merge": [
2717
+ {
2718
+ "var": "state"
2719
+ },
2720
+ {
2721
+ "history": {
2722
+ "cat": [
2723
+ {
2724
+ "var": "state.history"
2725
+ },
2726
+ [
2727
+ {
2728
+ "type": "dispute",
2729
+ "dispute": {
2730
+ "var": "state.dispute"
2731
+ },
2732
+ "ruling": {
2733
+ "var": "event.ruling"
2734
+ },
2735
+ "remedy": {
2736
+ "var": "event.remedy"
2737
+ },
2738
+ "resolvedAt": {
2739
+ "var": "$timestamp"
2740
+ }
2741
+ }
2742
+ ]
2743
+ ]
2744
+ },
2745
+ "dispute": null,
2746
+ "votes": {}
2747
+ }
2748
+ ]
2749
+ },
2750
+ "dependencies": []
2751
+ },
2752
+ {
2753
+ "from": "ACTIVE",
2754
+ "to": "DISSOLVED",
2755
+ "eventName": "dissolve",
2756
+ "guard": {
2757
+ ">=": [
2758
+ {
2759
+ "var": "event.approvalCount"
2760
+ },
2761
+ {
2762
+ "*": [
2763
+ {
2764
+ "size": {
2765
+ "var": "state.members"
2766
+ }
2767
+ },
2768
+ 0.9
2769
+ ]
2770
+ }
2771
+ ]
2772
+ },
2773
+ "effect": {
2774
+ "merge": [
2775
+ {
2776
+ "var": "state"
2777
+ },
2778
+ {
2779
+ "dissolvedAt": {
2780
+ "var": "$timestamp"
2781
+ }
2782
+ }
2783
+ ]
2784
+ },
2785
+ "dependencies": []
2786
+ }
2787
+ ]
2788
+ };
2789
+ export const govUniversalDef = {
2790
+ "metadata": {
2791
+ "name": "GovernanceUniversal",
2792
+ "description": "Minimal governance state machine - extend for custom use cases",
2793
+ "version": "1.0.0"
2794
+ },
2795
+ "states": {
2796
+ "ACTIVE": {
2797
+ "id": "ACTIVE",
2798
+ "isFinal": false,
2799
+ "metadata": null
2800
+ },
2801
+ "VOTING": {
2802
+ "id": "VOTING",
2803
+ "isFinal": false,
2804
+ "metadata": null
2805
+ },
2806
+ "DISSOLVED": {
2807
+ "id": "DISSOLVED",
2808
+ "isFinal": true,
2809
+ "metadata": null
2810
+ }
2811
+ },
2812
+ "initialState": "ACTIVE",
2813
+ "transitions": [
2814
+ {
2815
+ "from": "ACTIVE",
2816
+ "to": "VOTING",
2817
+ "eventName": "propose",
2818
+ "guard": {
2819
+ "==": [
2820
+ 1,
2821
+ 1
2822
+ ]
2823
+ },
2824
+ "effect": {
2825
+ "merge": [
2826
+ {
2827
+ "var": "state"
2828
+ },
2829
+ {
2830
+ "status": "VOTING",
2831
+ "proposal": {
2832
+ "var": "event.proposal"
2833
+ },
2834
+ "proposedAt": {
2835
+ "var": "$timestamp"
2836
+ },
2837
+ "votes": {}
2838
+ }
2839
+ ]
2840
+ },
2841
+ "dependencies": []
2842
+ },
2843
+ {
2844
+ "from": "VOTING",
2845
+ "to": "VOTING",
2846
+ "eventName": "vote",
2847
+ "guard": {
2848
+ "==": [
2849
+ 1,
2850
+ 1
2851
+ ]
2852
+ },
2853
+ "effect": {
2854
+ "merge": [
2855
+ {
2856
+ "var": "state"
2857
+ },
2858
+ {
2859
+ "votes": {
2860
+ "merge": [
2861
+ {
2862
+ "var": "state.votes"
2863
+ },
2864
+ {
2865
+ "__key": {
2866
+ "var": "event.agent"
2867
+ },
2868
+ "__value": {
2869
+ "var": "event.vote"
2870
+ }
2871
+ }
2872
+ ]
2873
+ }
2874
+ }
2875
+ ]
2876
+ },
2877
+ "dependencies": []
2878
+ },
2879
+ {
2880
+ "from": "VOTING",
2881
+ "to": "ACTIVE",
2882
+ "eventName": "finalize",
2883
+ "guard": {
2884
+ "==": [
2885
+ 1,
2886
+ 1
2887
+ ]
2888
+ },
2889
+ "effect": {
2890
+ "merge": [
2891
+ {
2892
+ "var": "state"
2893
+ },
2894
+ {
2895
+ "status": "ACTIVE",
2896
+ "lastProposal": {
2897
+ "var": "state.proposal"
2898
+ },
2899
+ "lastResult": {
2900
+ "var": "event.result"
2901
+ },
2902
+ "proposal": null,
2903
+ "votes": null
2904
+ }
2905
+ ]
2906
+ },
2907
+ "dependencies": []
2908
+ },
2909
+ {
2910
+ "from": "ACTIVE",
2911
+ "to": "DISSOLVED",
2912
+ "eventName": "dissolve",
2913
+ "guard": {
2914
+ "==": [
2915
+ 1,
2916
+ 1
2917
+ ]
2918
+ },
2919
+ "effect": {
2920
+ "merge": [
2921
+ {
2922
+ "var": "state"
2923
+ },
2924
+ {
2925
+ "status": "DISSOLVED",
2926
+ "dissolvedAt": {
2927
+ "var": "$timestamp"
2928
+ }
2929
+ }
2930
+ ]
2931
+ },
2932
+ "dependencies": []
2933
+ }
2934
+ ]
2935
+ };