@ottochain/sdk 1.5.0 → 1.6.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 (80) hide show
  1. package/dist/cjs/apps/contracts/index.js +6 -10
  2. package/dist/cjs/apps/{governance/state-machines/governance-legislature.json → contracts/state-machines/index.js} +381 -330
  3. package/dist/cjs/apps/corporate/index.js +12 -24
  4. package/dist/cjs/apps/corporate/state-machines/index.js +10246 -0
  5. package/dist/cjs/apps/governance/index.js +11 -22
  6. package/dist/cjs/apps/governance/state-machines/index.js +4755 -0
  7. package/dist/cjs/apps/identity/index.js +3 -6
  8. package/dist/{esm/apps/identity/state-machines/agent-identity.json → cjs/apps/identity/state-machines/index.js} +9 -2
  9. package/dist/cjs/apps/markets/index.js +2 -5
  10. package/dist/{esm/apps/markets/state-machines/market-universal.json → cjs/apps/markets/state-machines/index.js} +9 -2
  11. package/dist/cjs/apps/oracles/index.js +2 -5
  12. package/dist/{esm/apps/oracles/state-machines/oracle.json → cjs/apps/oracles/state-machines/index.js} +9 -2
  13. package/dist/cjs/ottochain/index.js +4 -1
  14. package/dist/cjs/ottochain/normalize.js +17 -3
  15. package/dist/cjs/ottochain/types.js +12 -0
  16. package/dist/esm/apps/contracts/index.js +2 -3
  17. package/dist/esm/apps/{governance/state-machines/governance-legislature.json → contracts/state-machines/index.js} +378 -330
  18. package/dist/esm/apps/corporate/index.js +2 -11
  19. package/dist/esm/apps/corporate/state-machines/index.js +10243 -0
  20. package/dist/esm/apps/governance/index.js +2 -10
  21. package/dist/esm/apps/governance/state-machines/index.js +4752 -0
  22. package/dist/esm/apps/identity/index.js +2 -2
  23. package/dist/{cjs/apps/identity/state-machines/agent-identity.json → esm/apps/identity/state-machines/index.js} +6 -2
  24. package/dist/esm/apps/markets/index.js +1 -1
  25. package/dist/{cjs/apps/markets/state-machines/market-universal.json → esm/apps/markets/state-machines/index.js} +6 -2
  26. package/dist/esm/apps/oracles/index.js +1 -1
  27. package/dist/{cjs/apps/oracles/state-machines/oracle.json → esm/apps/oracles/state-machines/index.js} +6 -2
  28. package/dist/esm/ottochain/index.js +2 -0
  29. package/dist/esm/ottochain/normalize.js +17 -3
  30. package/dist/esm/ottochain/types.js +11 -1
  31. package/dist/types/apps/contracts/state-machines/index.d.ts +549 -0
  32. package/dist/types/apps/corporate/state-machines/index.d.ts +9121 -0
  33. package/dist/types/apps/governance/state-machines/index.d.ts +3551 -0
  34. package/dist/types/apps/identity/state-machines/index.d.ts +206 -0
  35. package/dist/types/apps/markets/state-machines/index.d.ts +448 -0
  36. package/dist/types/apps/oracles/state-machines/index.d.ts +312 -0
  37. package/dist/types/ottochain/index.d.ts +2 -1
  38. package/dist/types/ottochain/normalize.d.ts +14 -0
  39. package/dist/types/ottochain/types.d.ts +9 -0
  40. package/package.json +4 -3
  41. package/dist/cjs/apps/contracts/state-machines/contract.json +0 -352
  42. package/dist/cjs/apps/contracts/state-machines/escrow.json +0 -354
  43. package/dist/cjs/apps/corporate/state-machines/corporate-board.json +0 -1064
  44. package/dist/cjs/apps/corporate/state-machines/corporate-bylaws.json +0 -751
  45. package/dist/cjs/apps/corporate/state-machines/corporate-committee.json +0 -957
  46. package/dist/cjs/apps/corporate/state-machines/corporate-compliance.json +0 -1293
  47. package/dist/cjs/apps/corporate/state-machines/corporate-entity.json +0 -861
  48. package/dist/cjs/apps/corporate/state-machines/corporate-officers.json +0 -843
  49. package/dist/cjs/apps/corporate/state-machines/corporate-proxy.json +0 -783
  50. package/dist/cjs/apps/corporate/state-machines/corporate-resolution.json +0 -1174
  51. package/dist/cjs/apps/corporate/state-machines/corporate-securities.json +0 -1215
  52. package/dist/cjs/apps/corporate/state-machines/corporate-shareholders.json +0 -1298
  53. package/dist/cjs/apps/governance/state-machines/dao-multisig.json +0 -667
  54. package/dist/cjs/apps/governance/state-machines/dao-single.json +0 -230
  55. package/dist/cjs/apps/governance/state-machines/dao-threshold.json +0 -624
  56. package/dist/cjs/apps/governance/state-machines/dao-token.json +0 -638
  57. package/dist/cjs/apps/governance/state-machines/governance-constitution.json +0 -357
  58. package/dist/cjs/apps/governance/state-machines/governance-executive.json +0 -387
  59. package/dist/cjs/apps/governance/state-machines/governance-judiciary.json +0 -558
  60. package/dist/cjs/apps/governance/state-machines/governance-simple.json +0 -625
  61. package/dist/esm/apps/contracts/state-machines/contract.json +0 -352
  62. package/dist/esm/apps/contracts/state-machines/escrow.json +0 -354
  63. package/dist/esm/apps/corporate/state-machines/corporate-board.json +0 -1064
  64. package/dist/esm/apps/corporate/state-machines/corporate-bylaws.json +0 -751
  65. package/dist/esm/apps/corporate/state-machines/corporate-committee.json +0 -957
  66. package/dist/esm/apps/corporate/state-machines/corporate-compliance.json +0 -1293
  67. package/dist/esm/apps/corporate/state-machines/corporate-entity.json +0 -861
  68. package/dist/esm/apps/corporate/state-machines/corporate-officers.json +0 -843
  69. package/dist/esm/apps/corporate/state-machines/corporate-proxy.json +0 -783
  70. package/dist/esm/apps/corporate/state-machines/corporate-resolution.json +0 -1174
  71. package/dist/esm/apps/corporate/state-machines/corporate-securities.json +0 -1215
  72. package/dist/esm/apps/corporate/state-machines/corporate-shareholders.json +0 -1298
  73. package/dist/esm/apps/governance/state-machines/dao-multisig.json +0 -667
  74. package/dist/esm/apps/governance/state-machines/dao-single.json +0 -230
  75. package/dist/esm/apps/governance/state-machines/dao-threshold.json +0 -624
  76. package/dist/esm/apps/governance/state-machines/dao-token.json +0 -638
  77. package/dist/esm/apps/governance/state-machines/governance-constitution.json +0 -357
  78. package/dist/esm/apps/governance/state-machines/governance-executive.json +0 -387
  79. package/dist/esm/apps/governance/state-machines/governance-judiciary.json +0 -558
  80. package/dist/esm/apps/governance/state-machines/governance-simple.json +0 -625
@@ -1,12 +1,25 @@
1
- {
1
+ "use strict";
2
+ /**
3
+ * Auto-generated from JSON state machine definitions.
4
+ * DO NOT EDIT - regenerate with: npm run prebuild
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.escrowDef = exports.contractDef = void 0;
8
+ exports.contractDef = {
2
9
  "metadata": {
3
- "name": "Governance",
4
- "description": "Flexible governance for proposals, voting, delegation, and execution across relationship types",
5
- "version": "1.0.0"
10
+ "name": "Contract",
11
+ "description": "Agreement between two agents with completion attestation and dispute resolution",
12
+ "version": "1.0.0",
13
+ "crossReferences": {
14
+ "proposerIdentityId": "Links to proposer's AgentIdentity fiber",
15
+ "counterpartyIdentityId": "Links to counterparty's AgentIdentity fiber",
16
+ "escrowId": "Links to Escrow if payment is escrowed",
17
+ "arbitrationPoolId": "Links to ArbitrationPool for dispute resolution"
18
+ }
6
19
  },
7
20
  "states": {
8
- "DRAFT": {
9
- "id": "DRAFT",
21
+ "PROPOSED": {
22
+ "id": "PROPOSED",
10
23
  "isFinal": false,
11
24
  "metadata": null
12
25
  },
@@ -15,33 +28,18 @@
15
28
  "isFinal": false,
16
29
  "metadata": null
17
30
  },
18
- "PENDING": {
19
- "id": "PENDING",
20
- "isFinal": false,
21
- "metadata": null
22
- },
23
- "EXECUTING": {
24
- "id": "EXECUTING",
25
- "isFinal": false,
26
- "metadata": null
27
- },
28
- "EXECUTED": {
29
- "id": "EXECUTED",
31
+ "COMPLETED": {
32
+ "id": "COMPLETED",
30
33
  "isFinal": true,
31
34
  "metadata": null
32
35
  },
33
- "VETOED": {
34
- "id": "VETOED",
35
- "isFinal": true,
36
- "metadata": null
37
- },
38
- "DEFEATED": {
39
- "id": "DEFEATED",
40
- "isFinal": true,
36
+ "DISPUTED": {
37
+ "id": "DISPUTED",
38
+ "isFinal": false,
41
39
  "metadata": null
42
40
  },
43
- "EXPIRED": {
44
- "id": "EXPIRED",
41
+ "REJECTED": {
42
+ "id": "REJECTED",
45
43
  "isFinal": true,
46
44
  "metadata": null
47
45
  },
@@ -51,29 +49,48 @@
51
49
  "metadata": null
52
50
  }
53
51
  },
54
- "initialState": "DRAFT",
52
+ "initialState": "PROPOSED",
55
53
  "transitions": [
56
54
  {
57
- "from": "DRAFT",
55
+ "from": "PROPOSED",
58
56
  "to": "ACTIVE",
59
- "eventName": "submit",
57
+ "eventName": "accept",
60
58
  "guard": {
61
- "and": [
59
+ "===": [
62
60
  {
63
- "in": [
64
- {
65
- "var": "event.agent"
66
- },
67
- {
68
- "var": "state.proposers"
69
- }
70
- ]
61
+ "var": "event.agent"
71
62
  },
72
63
  {
73
- "var": "state.proposal.title"
64
+ "var": "state.counterparty"
65
+ }
66
+ ]
67
+ },
68
+ "effect": {
69
+ "merge": [
70
+ {
71
+ "var": "state"
72
+ },
73
+ {
74
+ "status": "ACTIVE",
75
+ "acceptedAt": {
76
+ "var": "$timestamp"
77
+ }
78
+ }
79
+ ]
80
+ },
81
+ "dependencies": []
82
+ },
83
+ {
84
+ "from": "PROPOSED",
85
+ "to": "REJECTED",
86
+ "eventName": "reject",
87
+ "guard": {
88
+ "===": [
89
+ {
90
+ "var": "event.agent"
74
91
  },
75
92
  {
76
- "var": "state.proposal.actions"
93
+ "var": "state.counterparty"
77
94
  }
78
95
  ]
79
96
  },
@@ -83,19 +100,41 @@
83
100
  "var": "state"
84
101
  },
85
102
  {
86
- "status": "ACTIVE",
87
- "submittedAt": {
103
+ "status": "REJECTED",
104
+ "rejectedAt": {
88
105
  "var": "$timestamp"
89
106
  },
90
- "votingEndsAt": {
91
- "+": [
92
- {
93
- "var": "$timestamp"
94
- },
95
- {
96
- "var": "state.config.votingPeriodMs"
97
- }
98
- ]
107
+ "rejectReason": {
108
+ "var": "event.reason"
109
+ }
110
+ }
111
+ ]
112
+ },
113
+ "dependencies": []
114
+ },
115
+ {
116
+ "from": "PROPOSED",
117
+ "to": "CANCELLED",
118
+ "eventName": "cancel",
119
+ "guard": {
120
+ "===": [
121
+ {
122
+ "var": "event.agent"
123
+ },
124
+ {
125
+ "var": "state.proposer"
126
+ }
127
+ ]
128
+ },
129
+ "effect": {
130
+ "merge": [
131
+ {
132
+ "var": "state"
133
+ },
134
+ {
135
+ "status": "CANCELLED",
136
+ "cancelledAt": {
137
+ "var": "$timestamp"
99
138
  }
100
139
  }
101
140
  ]
@@ -105,52 +144,51 @@
105
144
  {
106
145
  "from": "ACTIVE",
107
146
  "to": "ACTIVE",
108
- "eventName": "vote",
147
+ "eventName": "submit_completion",
109
148
  "guard": {
110
149
  "and": [
111
150
  {
112
- "<=": [
151
+ "or": [
113
152
  {
114
- "var": "$timestamp"
153
+ "===": [
154
+ {
155
+ "var": "event.agent"
156
+ },
157
+ {
158
+ "var": "state.proposer"
159
+ }
160
+ ]
115
161
  },
116
162
  {
117
- "var": "state.votingEndsAt"
118
- }
119
- ]
120
- },
121
- {
122
- "!": [
123
- {
124
- "getKey": [
163
+ "===": [
125
164
  {
126
- "var": "state.votes"
165
+ "var": "event.agent"
127
166
  },
128
167
  {
129
- "var": "event.agent"
168
+ "var": "state.counterparty"
130
169
  }
131
170
  ]
132
171
  }
133
172
  ]
134
173
  },
135
174
  {
136
- "or": [
175
+ "!": [
137
176
  {
138
177
  "in": [
139
178
  {
140
179
  "var": "event.agent"
141
180
  },
142
181
  {
143
- "var": "state.voters"
182
+ "map": [
183
+ {
184
+ "var": "state.completions"
185
+ },
186
+ {
187
+ "var": "agent"
188
+ }
189
+ ]
144
190
  }
145
191
  ]
146
- },
147
- {
148
- "===": [
149
- {
150
- "var": "state.config.openVoting"
151
- },
152
- true
153
- ]
154
192
  }
155
193
  ]
156
194
  }
@@ -162,31 +200,24 @@
162
200
  "var": "state"
163
201
  },
164
202
  {
165
- "votes": {
166
- "setKey": [
203
+ "completions": {
204
+ "cat": [
167
205
  {
168
- "var": "state.votes"
206
+ "var": "state.completions"
169
207
  },
170
- {
171
- "var": "event.agent"
172
- },
173
- {
174
- "choice": {
175
- "var": "event.choice"
176
- },
177
- "weight": {
178
- "var": "event.weight"
179
- },
180
- "conviction": {
181
- "var": "event.conviction"
182
- },
183
- "delegatedFrom": {
184
- "var": "event.delegatedFrom"
185
- },
186
- "votedAt": {
187
- "var": "$timestamp"
208
+ [
209
+ {
210
+ "agent": {
211
+ "var": "event.agent"
212
+ },
213
+ "proof": {
214
+ "var": "event.proof"
215
+ },
216
+ "submittedAt": {
217
+ "var": "$timestamp"
218
+ }
188
219
  }
189
- }
220
+ ]
190
221
  ]
191
222
  }
192
223
  }
@@ -196,37 +227,16 @@
196
227
  },
197
228
  {
198
229
  "from": "ACTIVE",
199
- "to": "ACTIVE",
200
- "eventName": "delegate",
230
+ "to": "COMPLETED",
231
+ "eventName": "finalize",
201
232
  "guard": {
202
- "and": [
203
- {
204
- "var": "state.config.allowDelegation"
205
- },
233
+ ">=": [
206
234
  {
207
- "!==": [
208
- {
209
- "var": "event.agent"
210
- },
211
- {
212
- "var": "event.delegateTo"
213
- }
214
- ]
235
+ "size": {
236
+ "var": "state.completions"
237
+ }
215
238
  },
216
- {
217
- "!": [
218
- {
219
- "getKey": [
220
- {
221
- "var": "state.votes"
222
- },
223
- {
224
- "var": "event.agent"
225
- }
226
- ]
227
- }
228
- ]
229
- }
239
+ 2
230
240
  ]
231
241
  },
232
242
  "effect": {
@@ -235,26 +245,9 @@
235
245
  "var": "state"
236
246
  },
237
247
  {
238
- "delegations": {
239
- "setKey": [
240
- {
241
- "var": "state.delegations"
242
- },
243
- {
244
- "var": "event.agent"
245
- },
246
- {
247
- "delegateTo": {
248
- "var": "event.delegateTo"
249
- },
250
- "weight": {
251
- "var": "event.weight"
252
- },
253
- "delegatedAt": {
254
- "var": "$timestamp"
255
- }
256
- }
257
- ]
248
+ "status": "COMPLETED",
249
+ "completedAt": {
250
+ "var": "$timestamp"
258
251
  }
259
252
  }
260
253
  ]
@@ -263,22 +256,29 @@
263
256
  },
264
257
  {
265
258
  "from": "ACTIVE",
266
- "to": "PENDING",
267
- "eventName": "finalize_voting",
259
+ "to": "DISPUTED",
260
+ "eventName": "dispute",
268
261
  "guard": {
269
- "and": [
262
+ "or": [
270
263
  {
271
- ">=": [
264
+ "===": [
272
265
  {
273
- "var": "$timestamp"
266
+ "var": "event.agent"
274
267
  },
275
268
  {
276
- "var": "state.votingEndsAt"
269
+ "var": "state.proposer"
277
270
  }
278
271
  ]
279
272
  },
280
273
  {
281
- "var": "state.tally.passed"
274
+ "===": [
275
+ {
276
+ "var": "event.agent"
277
+ },
278
+ {
279
+ "var": "state.counterparty"
280
+ }
281
+ ]
282
282
  }
283
283
  ]
284
284
  },
@@ -288,19 +288,15 @@
288
288
  "var": "state"
289
289
  },
290
290
  {
291
- "status": "PENDING",
292
- "finalizedAt": {
291
+ "status": "DISPUTED",
292
+ "disputedAt": {
293
293
  "var": "$timestamp"
294
294
  },
295
- "vetoEndsAt": {
296
- "+": [
297
- {
298
- "var": "$timestamp"
299
- },
300
- {
301
- "var": "state.config.vetoPeriodMs"
302
- }
303
- ]
295
+ "disputeReason": {
296
+ "var": "event.reason"
297
+ },
298
+ "disputedBy": {
299
+ "var": "event.agent"
304
300
  }
305
301
  }
306
302
  ]
@@ -308,25 +304,31 @@
308
304
  "dependencies": []
309
305
  },
310
306
  {
311
- "from": "ACTIVE",
312
- "to": "DEFEATED",
313
- "eventName": "finalize_voting",
307
+ "from": "DISPUTED",
308
+ "to": "COMPLETED",
309
+ "eventName": "resolve",
314
310
  "guard": {
315
- "and": [
311
+ "or": [
316
312
  {
317
- ">=": [
318
- {
319
- "var": "$timestamp"
320
- },
321
- {
322
- "var": "state.votingEndsAt"
323
- }
324
- ]
313
+ "var": "event.judicialRuling"
325
314
  },
326
315
  {
327
- "!": [
316
+ "and": [
328
317
  {
329
- "var": "state.tally.passed"
318
+ "===": [
319
+ {
320
+ "var": "event.proposerApproves"
321
+ },
322
+ true
323
+ ]
324
+ },
325
+ {
326
+ "===": [
327
+ {
328
+ "var": "event.counterpartyApproves"
329
+ },
330
+ true
331
+ ]
330
332
  }
331
333
  ]
332
334
  }
@@ -338,41 +340,103 @@
338
340
  "var": "state"
339
341
  },
340
342
  {
341
- "status": "DEFEATED",
342
- "finalizedAt": {
343
+ "status": "COMPLETED",
344
+ "resolvedAt": {
343
345
  "var": "$timestamp"
344
346
  },
345
- "defeatReason": {
346
- "var": "state.tally.reason"
347
+ "resolution": {
348
+ "var": "event.resolution"
349
+ },
350
+ "rulingId": {
351
+ "var": "event.rulingId"
347
352
  }
348
353
  }
349
354
  ]
350
355
  },
351
356
  "dependencies": []
357
+ }
358
+ ]
359
+ };
360
+ exports.escrowDef = {
361
+ "metadata": {
362
+ "name": "Escrow",
363
+ "description": "Asset custody during multi-party transactions with conditional release",
364
+ "version": "1.0.0",
365
+ "crossReferences": {
366
+ "contractId": "Links to Contract SM that created this escrow",
367
+ "marketId": "Links to Market SM for market-based escrow",
368
+ "insuranceId": "Links to Insurance SM for protected escrow",
369
+ "arbitrationPoolId": "Links to ArbitrationPool for dispute resolution",
370
+ "treasuryId": "Links to Treasury for fee collection"
371
+ }
372
+ },
373
+ "states": {
374
+ "CREATED": {
375
+ "id": "CREATED",
376
+ "isFinal": false,
377
+ "metadata": null
378
+ },
379
+ "FUNDED": {
380
+ "id": "FUNDED",
381
+ "isFinal": false,
382
+ "metadata": null
352
383
  },
384
+ "ACTIVE": {
385
+ "id": "ACTIVE",
386
+ "isFinal": false,
387
+ "metadata": null
388
+ },
389
+ "RELEASING": {
390
+ "id": "RELEASING",
391
+ "isFinal": false,
392
+ "metadata": null
393
+ },
394
+ "DISPUTED": {
395
+ "id": "DISPUTED",
396
+ "isFinal": false,
397
+ "metadata": null
398
+ },
399
+ "RELEASED": {
400
+ "id": "RELEASED",
401
+ "isFinal": true,
402
+ "metadata": null
403
+ },
404
+ "REFUNDED": {
405
+ "id": "REFUNDED",
406
+ "isFinal": true,
407
+ "metadata": null
408
+ },
409
+ "SPLIT": {
410
+ "id": "SPLIT",
411
+ "isFinal": true,
412
+ "metadata": null
413
+ }
414
+ },
415
+ "initialState": "CREATED",
416
+ "transitions": [
353
417
  {
354
- "from": "PENDING",
355
- "to": "VETOED",
356
- "eventName": "veto",
418
+ "from": "CREATED",
419
+ "to": "FUNDED",
420
+ "eventName": "deposit",
357
421
  "guard": {
358
422
  "and": [
359
423
  {
360
- "<=": [
424
+ "===": [
361
425
  {
362
- "var": "$timestamp"
426
+ "var": "event.agent"
363
427
  },
364
428
  {
365
- "var": "state.vetoEndsAt"
429
+ "var": "state.depositor"
366
430
  }
367
431
  ]
368
432
  },
369
433
  {
370
- "in": [
434
+ ">=": [
371
435
  {
372
- "var": "event.agent"
436
+ "var": "event.amount"
373
437
  },
374
438
  {
375
- "var": "state.vetoers"
439
+ "var": "state.requiredAmount"
376
440
  }
377
441
  ]
378
442
  }
@@ -384,14 +448,10 @@
384
448
  "var": "state"
385
449
  },
386
450
  {
387
- "status": "VETOED",
388
- "vetoedBy": {
389
- "var": "event.agent"
390
- },
391
- "vetoReason": {
392
- "var": "event.reason"
451
+ "balance": {
452
+ "var": "event.amount"
393
453
  },
394
- "vetoedAt": {
454
+ "fundedAt": {
395
455
  "var": "$timestamp"
396
456
  }
397
457
  }
@@ -400,30 +460,23 @@
400
460
  "dependencies": []
401
461
  },
402
462
  {
403
- "from": "PENDING",
404
- "to": "EXECUTING",
405
- "eventName": "execute",
463
+ "from": "FUNDED",
464
+ "to": "ACTIVE",
465
+ "eventName": "activate",
406
466
  "guard": {
407
- "and": [
467
+ "or": [
408
468
  {
409
- ">=": [
469
+ "===": [
410
470
  {
411
- "var": "$timestamp"
471
+ "var": "event.agent"
412
472
  },
413
473
  {
414
- "var": "state.vetoEndsAt"
474
+ "var": "state.beneficiary"
415
475
  }
416
476
  ]
417
477
  },
418
478
  {
419
- "in": [
420
- {
421
- "var": "event.agent"
422
- },
423
- {
424
- "var": "state.executors"
425
- }
426
- ]
479
+ "var": "state.autoActivate"
427
480
  }
428
481
  ]
429
482
  },
@@ -433,11 +486,7 @@
433
486
  "var": "state"
434
487
  },
435
488
  {
436
- "status": "EXECUTING",
437
- "executedBy": {
438
- "var": "event.agent"
439
- },
440
- "executionStartedAt": {
489
+ "activatedAt": {
441
490
  "var": "$timestamp"
442
491
  }
443
492
  }
@@ -446,16 +495,16 @@
446
495
  "dependencies": []
447
496
  },
448
497
  {
449
- "from": "EXECUTING",
450
- "to": "EXECUTED",
451
- "eventName": "complete",
498
+ "from": "ACTIVE",
499
+ "to": "RELEASING",
500
+ "eventName": "request_release",
452
501
  "guard": {
453
- "in": [
502
+ "===": [
454
503
  {
455
504
  "var": "event.agent"
456
505
  },
457
506
  {
458
- "var": "state.executors"
507
+ "var": "state.beneficiary"
459
508
  }
460
509
  ]
461
510
  },
@@ -465,12 +514,29 @@
465
514
  "var": "state"
466
515
  },
467
516
  {
468
- "status": "EXECUTED",
469
- "completedAt": {
470
- "var": "$timestamp"
517
+ "releaseRequest": {
518
+ "requestedBy": {
519
+ "var": "event.agent"
520
+ },
521
+ "amount": {
522
+ "var": "event.amount"
523
+ },
524
+ "reason": {
525
+ "var": "event.reason"
526
+ },
527
+ "requestedAt": {
528
+ "var": "$timestamp"
529
+ }
471
530
  },
472
- "executionProof": {
473
- "var": "event.proof"
531
+ "releaseDeadline": {
532
+ "+": [
533
+ {
534
+ "var": "$timestamp"
535
+ },
536
+ {
537
+ "var": "state.releaseWindowMs"
538
+ }
539
+ ]
474
540
  }
475
541
  }
476
542
  ]
@@ -478,16 +544,30 @@
478
544
  "dependencies": []
479
545
  },
480
546
  {
481
- "from": "DRAFT",
482
- "to": "CANCELLED",
483
- "eventName": "cancel",
547
+ "from": "RELEASING",
548
+ "to": "RELEASED",
549
+ "eventName": "approve_release",
484
550
  "guard": {
485
- "===": [
551
+ "or": [
486
552
  {
487
- "var": "event.agent"
553
+ "===": [
554
+ {
555
+ "var": "event.agent"
556
+ },
557
+ {
558
+ "var": "state.depositor"
559
+ }
560
+ ]
488
561
  },
489
562
  {
490
- "var": "state.proposer"
563
+ ">=": [
564
+ {
565
+ "var": "$timestamp"
566
+ },
567
+ {
568
+ "var": "state.releaseDeadline"
569
+ }
570
+ ]
491
571
  }
492
572
  ]
493
573
  },
@@ -497,9 +577,11 @@
497
577
  "var": "state"
498
578
  },
499
579
  {
500
- "status": "CANCELLED",
501
- "cancelledAt": {
580
+ "releasedAt": {
502
581
  "var": "$timestamp"
582
+ },
583
+ "releasedTo": {
584
+ "var": "state.beneficiary"
503
585
  }
504
586
  }
505
587
  ]
@@ -507,28 +589,28 @@
507
589
  "dependencies": []
508
590
  },
509
591
  {
510
- "from": "ACTIVE",
511
- "to": "CANCELLED",
512
- "eventName": "cancel",
592
+ "from": "RELEASING",
593
+ "to": "DISPUTED",
594
+ "eventName": "dispute",
513
595
  "guard": {
514
- "or": [
596
+ "and": [
515
597
  {
516
598
  "===": [
517
599
  {
518
600
  "var": "event.agent"
519
601
  },
520
602
  {
521
- "var": "state.proposer"
603
+ "var": "state.depositor"
522
604
  }
523
605
  ]
524
606
  },
525
607
  {
526
- "in": [
608
+ "<": [
527
609
  {
528
- "var": "event.agent"
610
+ "var": "$timestamp"
529
611
  },
530
612
  {
531
- "var": "state.admins"
613
+ "var": "state.releaseDeadline"
532
614
  }
533
615
  ]
534
616
  }
@@ -540,34 +622,74 @@
540
622
  "var": "state"
541
623
  },
542
624
  {
543
- "status": "CANCELLED",
544
- "cancelledBy": {
545
- "var": "event.agent"
546
- },
547
- "cancelledAt": {
625
+ "disputedAt": {
548
626
  "var": "$timestamp"
549
627
  }
550
628
  }
551
629
  ]
552
630
  },
631
+ "spawns": {
632
+ "sm": "Judiciary",
633
+ "initialData": {
634
+ "caseType": "escrow_dispute",
635
+ "plaintiff": {
636
+ "var": "state.depositor"
637
+ },
638
+ "defendant": {
639
+ "var": "state.beneficiary"
640
+ },
641
+ "claim": {
642
+ "escrowId": {
643
+ "var": "fiberId"
644
+ },
645
+ "amount": {
646
+ "var": "state.balance"
647
+ }
648
+ }
649
+ }
650
+ },
651
+ "dependencies": []
652
+ },
653
+ {
654
+ "from": "DISPUTED",
655
+ "to": "SPLIT",
656
+ "eventName": "ruling",
657
+ "guard": {
658
+ "var": "event.judicialRuling"
659
+ },
660
+ "effect": {
661
+ "merge": [
662
+ {
663
+ "var": "state"
664
+ },
665
+ {
666
+ "splits": {
667
+ "var": "event.splits"
668
+ },
669
+ "rulingId": {
670
+ "var": "event.rulingId"
671
+ }
672
+ }
673
+ ]
674
+ },
553
675
  "dependencies": []
554
676
  },
555
677
  {
556
678
  "from": "ACTIVE",
557
- "to": "EXPIRED",
558
- "eventName": "expire",
679
+ "to": "REFUNDED",
680
+ "eventName": "refund",
559
681
  "guard": {
560
- ">": [
682
+ "or": [
561
683
  {
562
- "var": "$timestamp"
684
+ "var": "event.mutualConsent"
563
685
  },
564
686
  {
565
- "+": [
687
+ ">=": [
566
688
  {
567
- "var": "state.votingEndsAt"
689
+ "var": "$timestamp"
568
690
  },
569
691
  {
570
- "var": "state.config.gracePeriodMs"
692
+ "var": "state.expiresAt"
571
693
  }
572
694
  ]
573
695
  }
@@ -579,8 +701,7 @@
579
701
  "var": "state"
580
702
  },
581
703
  {
582
- "status": "EXPIRED",
583
- "expiredAt": {
704
+ "refundedAt": {
584
705
  "var": "$timestamp"
585
706
  }
586
707
  }
@@ -588,75 +709,5 @@
588
709
  },
589
710
  "dependencies": []
590
711
  }
591
- ],
592
- "presets": {
593
- "_comment": "Common governance configurations",
594
- "bilateral": {
595
- "description": "Two-party mutual consent (like a contract)",
596
- "config": {
597
- "votingMechanism": "simple",
598
- "quorumType": "absolute",
599
- "quorumValue": 2,
600
- "passingThreshold": 1,
601
- "allowDelegation": false,
602
- "openVoting": false
603
- }
604
- },
605
- "multisig": {
606
- "description": "N-of-M threshold signing",
607
- "config": {
608
- "votingMechanism": "simple",
609
- "quorumType": "absolute",
610
- "passingThreshold": 0.6,
611
- "vetoPeriodMs": 0,
612
- "allowDelegation": false
613
- }
614
- },
615
- "council": {
616
- "description": "Small elected/appointed body",
617
- "config": {
618
- "votingMechanism": "simple",
619
- "quorumType": "percentage",
620
- "quorumValue": 0.5,
621
- "passingThreshold": 0.5,
622
- "openVoting": false,
623
- "allowDelegation": true
624
- }
625
- },
626
- "liquid_democracy": {
627
- "description": "Delegatable voting power",
628
- "config": {
629
- "votingMechanism": "simple",
630
- "allowDelegation": true,
631
- "openVoting": true,
632
- "onePersonOneVote": true
633
- }
634
- },
635
- "conviction": {
636
- "description": "Time-weighted conviction voting",
637
- "config": {
638
- "votingMechanism": "conviction",
639
- "allowDelegation": true,
640
- "convictionHalfLifeMs": 604800000
641
- }
642
- },
643
- "quadratic": {
644
- "description": "Quadratic voting to reduce whale power",
645
- "config": {
646
- "votingMechanism": "quadratic",
647
- "onePersonOneVote": false
648
- }
649
- },
650
- "dictator": {
651
- "description": "Single admin with full control",
652
- "config": {
653
- "votingMechanism": "simple",
654
- "quorumType": "absolute",
655
- "quorumValue": 1,
656
- "passingThreshold": 1,
657
- "vetoPeriodMs": 0,
658
- "allowDelegation": false
659
- }
660
- }
661
- }
662
- }
712
+ ]
713
+ };