@ottochain/sdk 1.7.0-beta.2 → 2.1.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 (113) hide show
  1. package/dist/cjs/apps/contracts/index.js +1 -1
  2. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +272 -0
  3. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +284 -0
  4. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +93 -0
  5. package/dist/cjs/apps/contracts/state-machines/index.js +177 -1
  6. package/dist/cjs/apps/corporate/state-machines/corp-board.js +1022 -0
  7. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +671 -0
  8. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +998 -0
  9. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +1102 -0
  10. package/dist/cjs/apps/corporate/state-machines/index.js +20 -4440
  11. package/dist/cjs/apps/governance/index.js +7 -7
  12. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +467 -0
  13. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +458 -0
  14. package/dist/cjs/apps/governance/state-machines/dao-single.js +199 -0
  15. package/dist/cjs/apps/governance/state-machines/dao-token.js +503 -0
  16. package/dist/cjs/apps/governance/state-machines/governance-simple.js +482 -0
  17. package/dist/cjs/apps/governance/state-machines/governance-universal.js +138 -0
  18. package/dist/cjs/apps/governance/state-machines/index.js +16 -2934
  19. package/dist/cjs/apps/identity/constants.js +20 -20
  20. package/dist/cjs/apps/identity/index.js +13 -21
  21. package/dist/cjs/apps/identity/state-machines/identity-agent.js +256 -0
  22. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +321 -0
  23. package/dist/cjs/apps/identity/state-machines/identity-universal.js +106 -0
  24. package/dist/cjs/apps/identity/state-machines/index.js +15 -784
  25. package/dist/cjs/apps/markets/index.js +1 -1
  26. package/dist/cjs/apps/markets/state-machines/index.js +14 -2298
  27. package/dist/cjs/apps/markets/state-machines/market-auction.js +283 -0
  28. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +312 -0
  29. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +407 -0
  30. package/dist/cjs/apps/markets/state-machines/market-prediction.js +485 -0
  31. package/dist/cjs/apps/markets/state-machines/market-universal.js +129 -0
  32. package/dist/cjs/apps/oracles/index.js +36 -0
  33. package/dist/cjs/generated/index.js +14 -7
  34. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +197 -198
  35. package/dist/cjs/schema/fiber-app.js +55 -0
  36. package/dist/cjs/schema/index.js +20 -0
  37. package/dist/esm/apps/contracts/index.js +3 -3
  38. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +269 -0
  39. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +281 -0
  40. package/dist/esm/apps/contracts/state-machines/contract-universal.js +90 -0
  41. package/dist/esm/apps/contracts/state-machines/index.js +177 -1
  42. package/dist/esm/apps/corporate/index.js +3 -3
  43. package/dist/esm/apps/corporate/state-machines/corp-board.js +1019 -0
  44. package/dist/esm/apps/corporate/state-machines/corp-entity.js +668 -0
  45. package/dist/esm/apps/corporate/state-machines/corp-securities.js +995 -0
  46. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +1099 -0
  47. package/dist/esm/apps/corporate/state-machines/index.js +15 -4439
  48. package/dist/esm/apps/governance/index.js +9 -9
  49. package/dist/esm/apps/governance/state-machines/dao-multisig.js +464 -0
  50. package/dist/esm/apps/governance/state-machines/dao-reputation.js +455 -0
  51. package/dist/esm/apps/governance/state-machines/dao-single.js +196 -0
  52. package/dist/esm/apps/governance/state-machines/dao-token.js +500 -0
  53. package/dist/esm/apps/governance/state-machines/governance-simple.js +479 -0
  54. package/dist/esm/apps/governance/state-machines/governance-universal.js +135 -0
  55. package/dist/esm/apps/governance/state-machines/index.js +9 -2933
  56. package/dist/esm/apps/identity/constants.js +21 -21
  57. package/dist/esm/apps/identity/index.js +13 -22
  58. package/dist/esm/apps/identity/state-machines/identity-agent.js +253 -0
  59. package/dist/esm/apps/identity/state-machines/identity-oracle.js +318 -0
  60. package/dist/esm/apps/identity/state-machines/identity-universal.js +103 -0
  61. package/dist/esm/apps/identity/state-machines/index.js +11 -783
  62. package/dist/esm/apps/index.js +5 -5
  63. package/dist/esm/apps/markets/index.js +3 -3
  64. package/dist/esm/apps/markets/state-machines/index.js +8 -2297
  65. package/dist/esm/apps/markets/state-machines/market-auction.js +280 -0
  66. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +309 -0
  67. package/dist/esm/apps/markets/state-machines/market-group-buy.js +404 -0
  68. package/dist/esm/apps/markets/state-machines/market-prediction.js +482 -0
  69. package/dist/esm/apps/markets/state-machines/market-universal.js +126 -0
  70. package/dist/esm/apps/oracles/index.js +21 -0
  71. package/dist/esm/generated/index.js +8 -3
  72. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +196 -197
  73. package/dist/esm/schema/fiber-app.js +47 -0
  74. package/dist/esm/schema/index.js +4 -0
  75. package/dist/types/apps/contracts/index.d.ts +151 -2
  76. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +462 -0
  77. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +511 -0
  78. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +147 -0
  79. package/dist/types/apps/contracts/state-machines/index.d.ts +149 -0
  80. package/dist/types/apps/corporate/index.d.ts +5263 -3825
  81. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +1479 -0
  82. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +970 -0
  83. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +1381 -0
  84. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +1631 -0
  85. package/dist/types/apps/corporate/state-machines/index.d.ts +5245 -3802
  86. package/dist/types/apps/governance/index.d.ts +875 -37
  87. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +644 -0
  88. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +610 -0
  89. package/dist/types/apps/governance/state-machines/dao-single.d.ts +276 -0
  90. package/dist/types/apps/governance/state-machines/dao-token.d.ts +601 -0
  91. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +652 -0
  92. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +181 -0
  93. package/dist/types/apps/governance/state-machines/index.d.ts +9 -2136
  94. package/dist/types/apps/identity/constants.d.ts +4 -7
  95. package/dist/types/apps/identity/index.d.ts +1082 -592
  96. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +401 -0
  97. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +550 -0
  98. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +151 -0
  99. package/dist/types/apps/identity/state-machines/index.d.ts +1069 -567
  100. package/dist/types/apps/index.d.ts +5 -5
  101. package/dist/types/apps/markets/index.d.ts +535 -7
  102. package/dist/types/apps/markets/state-machines/index.d.ts +8 -1678
  103. package/dist/types/apps/markets/state-machines/market-auction.d.ts +392 -0
  104. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +443 -0
  105. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +539 -0
  106. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +651 -0
  107. package/dist/types/apps/markets/state-machines/market-universal.d.ts +191 -0
  108. package/dist/types/apps/oracles/index.d.ts +18 -0
  109. package/dist/types/generated/index.d.ts +3 -1
  110. package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +43 -64
  111. package/dist/types/schema/fiber-app.d.ts +139 -0
  112. package/dist/types/schema/index.d.ts +4 -0
  113. package/package.json +1 -1
@@ -0,0 +1,500 @@
1
+ import { defineFiberApp } from "../../../schema/fiber-app.js";
2
+ /**
3
+ * Token-weighted voting. Voting power proportional to token holdings.
4
+ */
5
+ export const daoTokenDef = defineFiberApp({
6
+ metadata: {
7
+ name: "TokenDAO",
8
+ app: "governance",
9
+ type: "daoToken",
10
+ version: "1.0.0",
11
+ description: "Token-weighted voting. Voting power proportional to token holdings.",
12
+ category: "governance/dao",
13
+ crossReferences: {
14
+ Identity: "voter verification",
15
+ Token: "balance snapshots",
16
+ Contract: "action execution",
17
+ Treasury: "fund management",
18
+ },
19
+ },
20
+ createSchema: {
21
+ required: [
22
+ "balances",
23
+ "proposalThreshold",
24
+ "quorum",
25
+ "votingPeriodMs",
26
+ "timelockMs",
27
+ ],
28
+ properties: {
29
+ balances: {
30
+ type: "object",
31
+ description: "Initial token balances by address",
32
+ },
33
+ proposalThreshold: {
34
+ type: "number",
35
+ description: "Min token balance to submit a proposal",
36
+ },
37
+ quorum: {
38
+ type: "number",
39
+ description: "Min total votes (weighted) to pass",
40
+ },
41
+ votingPeriodMs: {
42
+ type: "number",
43
+ description: "Voting window in milliseconds",
44
+ },
45
+ timelockMs: {
46
+ type: "number",
47
+ description: "Time-lock delay before execution",
48
+ },
49
+ },
50
+ },
51
+ stateSchema: {
52
+ properties: {
53
+ balances: { type: "object" },
54
+ delegations: { type: "object", computed: true },
55
+ proposalThreshold: { type: "number" },
56
+ quorum: { type: "number" },
57
+ votingPeriodMs: { type: "number" },
58
+ timelockMs: { type: "number" },
59
+ proposal: { type: "object" },
60
+ votes: { type: "object", computed: true },
61
+ executedProposals: { type: "array", computed: true },
62
+ rejectedProposals: { type: "array", computed: true },
63
+ cancelledProposals: { type: "array", computed: true },
64
+ },
65
+ },
66
+ eventSchemas: {
67
+ propose: {
68
+ description: "Submit a proposal (requires >= proposalThreshold tokens)",
69
+ required: [
70
+ "proposalId",
71
+ "title",
72
+ "description",
73
+ "actionType",
74
+ "payload",
75
+ ],
76
+ properties: {
77
+ agent: { type: "address" },
78
+ proposalId: { type: "string" },
79
+ title: { type: "string" },
80
+ description: { type: "string" },
81
+ actionType: { type: "string" },
82
+ payload: { type: "object" },
83
+ snapshotBlock: { type: "string" },
84
+ },
85
+ },
86
+ vote: {
87
+ description: "Cast a token-weighted vote (must hold tokens, no double-vote, within window)",
88
+ required: ["vote"],
89
+ properties: {
90
+ agent: { type: "address" },
91
+ vote: { type: "string", description: '"for" | "against" | "abstain"' },
92
+ },
93
+ },
94
+ queue: {
95
+ description: "Queue passing proposal into timelock (voting ended, for > against, quorum met)",
96
+ properties: {},
97
+ },
98
+ execute: {
99
+ description: "Execute queued proposal after timelock expires",
100
+ properties: {},
101
+ },
102
+ reject: {
103
+ description: "Formally reject a failed proposal (voting ended, failed conditions)",
104
+ properties: {},
105
+ },
106
+ cancel: {
107
+ description: "Cancel a queued proposal (proposer only)",
108
+ properties: {
109
+ agent: { type: "address" },
110
+ },
111
+ },
112
+ delegate: {
113
+ description: "Delegate voting power to another address",
114
+ required: ["delegateTo"],
115
+ properties: {
116
+ agent: { type: "address" },
117
+ delegateTo: { type: "address" },
118
+ },
119
+ },
120
+ undelegate: {
121
+ description: "Revoke delegation",
122
+ properties: {
123
+ agent: { type: "address" },
124
+ },
125
+ },
126
+ },
127
+ states: {
128
+ ACTIVE: { id: "ACTIVE", isFinal: false, metadata: null },
129
+ VOTING: { id: "VOTING", isFinal: false, metadata: null },
130
+ QUEUED: { id: "QUEUED", isFinal: false, metadata: null },
131
+ DISSOLVED: { id: "DISSOLVED", isFinal: true, metadata: null },
132
+ },
133
+ initialState: "ACTIVE",
134
+ transitions: [
135
+ // ACTIVE → VOTING: propose (enough tokens)
136
+ {
137
+ from: "ACTIVE",
138
+ to: "VOTING",
139
+ eventName: "propose",
140
+ guard: {
141
+ ">=": [
142
+ { getKey: [{ var: "state.balances" }, { var: "event.agent" }] },
143
+ { var: "state.proposalThreshold" },
144
+ ],
145
+ },
146
+ effect: {
147
+ merge: [
148
+ { var: "state" },
149
+ {
150
+ proposal: {
151
+ id: { var: "event.proposalId" },
152
+ title: { var: "event.title" },
153
+ description: { var: "event.description" },
154
+ actionType: { var: "event.actionType" },
155
+ payload: { var: "event.payload" },
156
+ proposer: { var: "event.agent" },
157
+ proposedAt: { var: "$timestamp" },
158
+ votingEndsAt: {
159
+ "+": [{ var: "$timestamp" }, { var: "state.votingPeriodMs" }],
160
+ },
161
+ snapshotBlock: { var: "event.snapshotBlock" },
162
+ },
163
+ votes: { for: 0, against: 0, abstain: 0, voters: {} },
164
+ },
165
+ ],
166
+ },
167
+ dependencies: [],
168
+ },
169
+ // VOTING → VOTING: vote (token holder, no double-vote, within window)
170
+ {
171
+ from: "VOTING",
172
+ to: "VOTING",
173
+ eventName: "vote",
174
+ guard: {
175
+ and: [
176
+ {
177
+ ">": [
178
+ { getKey: [{ var: "state.balances" }, { var: "event.agent" }] },
179
+ 0,
180
+ ],
181
+ },
182
+ {
183
+ "!": [
184
+ {
185
+ getKey: [{ var: "state.votes.voters" }, { var: "event.agent" }],
186
+ },
187
+ ],
188
+ },
189
+ {
190
+ "<=": [
191
+ { var: "$timestamp" },
192
+ { var: "state.proposal.votingEndsAt" },
193
+ ],
194
+ },
195
+ ],
196
+ },
197
+ effect: {
198
+ merge: [
199
+ { var: "state" },
200
+ {
201
+ votes: {
202
+ merge: [
203
+ { var: "state.votes" },
204
+ {
205
+ if: [
206
+ { "===": [{ var: "event.vote" }, "for"] },
207
+ {
208
+ for: {
209
+ "+": [
210
+ { var: "state.votes.for" },
211
+ {
212
+ getKey: [
213
+ { var: "state.balances" },
214
+ { var: "event.agent" },
215
+ ],
216
+ },
217
+ ],
218
+ },
219
+ },
220
+ { "===": [{ var: "event.vote" }, "against"] },
221
+ {
222
+ against: {
223
+ "+": [
224
+ { var: "state.votes.against" },
225
+ {
226
+ getKey: [
227
+ { var: "state.balances" },
228
+ { var: "event.agent" },
229
+ ],
230
+ },
231
+ ],
232
+ },
233
+ },
234
+ {
235
+ abstain: {
236
+ "+": [
237
+ { var: "state.votes.abstain" },
238
+ {
239
+ getKey: [
240
+ { var: "state.balances" },
241
+ { var: "event.agent" },
242
+ ],
243
+ },
244
+ ],
245
+ },
246
+ },
247
+ ],
248
+ },
249
+ {
250
+ voters: {
251
+ setKey: [
252
+ { var: "state.votes.voters" },
253
+ { var: "event.agent" },
254
+ {
255
+ vote: { var: "event.vote" },
256
+ weight: {
257
+ getKey: [
258
+ { var: "state.balances" },
259
+ { var: "event.agent" },
260
+ ],
261
+ },
262
+ votedAt: { var: "$timestamp" },
263
+ },
264
+ ],
265
+ },
266
+ },
267
+ ],
268
+ },
269
+ },
270
+ ],
271
+ },
272
+ dependencies: [],
273
+ },
274
+ // VOTING → QUEUED: queue (voting ended, for > against, quorum met)
275
+ {
276
+ from: "VOTING",
277
+ to: "QUEUED",
278
+ eventName: "queue",
279
+ guard: {
280
+ and: [
281
+ {
282
+ ">": [
283
+ { var: "$timestamp" },
284
+ { var: "state.proposal.votingEndsAt" },
285
+ ],
286
+ },
287
+ { ">": [{ var: "state.votes.for" }, { var: "state.votes.against" }] },
288
+ {
289
+ ">=": [
290
+ {
291
+ "+": [
292
+ { var: "state.votes.for" },
293
+ { var: "state.votes.against" },
294
+ { var: "state.votes.abstain" },
295
+ ],
296
+ },
297
+ { var: "state.quorum" },
298
+ ],
299
+ },
300
+ ],
301
+ },
302
+ effect: {
303
+ merge: [
304
+ { var: "state" },
305
+ {
306
+ proposal: {
307
+ merge: [
308
+ { var: "state.proposal" },
309
+ {
310
+ queuedAt: { var: "$timestamp" },
311
+ executableAt: {
312
+ "+": [{ var: "$timestamp" }, { var: "state.timelockMs" }],
313
+ },
314
+ },
315
+ ],
316
+ },
317
+ },
318
+ ],
319
+ },
320
+ dependencies: [],
321
+ },
322
+ // QUEUED → ACTIVE: execute (timelock expired)
323
+ {
324
+ from: "QUEUED",
325
+ to: "ACTIVE",
326
+ eventName: "execute",
327
+ guard: {
328
+ ">=": [{ var: "$timestamp" }, { var: "state.proposal.executableAt" }],
329
+ },
330
+ effect: {
331
+ merge: [
332
+ { var: "state" },
333
+ {
334
+ executedProposals: {
335
+ cat: [
336
+ { var: "state.executedProposals" },
337
+ [
338
+ {
339
+ merge: [
340
+ { var: "state.proposal" },
341
+ {
342
+ votes: { var: "state.votes" },
343
+ executedAt: { var: "$timestamp" },
344
+ },
345
+ ],
346
+ },
347
+ ],
348
+ ],
349
+ },
350
+ proposal: null,
351
+ votes: null,
352
+ },
353
+ ],
354
+ },
355
+ emits: [{ event: "proposal_executed", to: "external" }],
356
+ dependencies: [],
357
+ },
358
+ // VOTING → ACTIVE: reject (voting ended, failed quorum or for <= against)
359
+ {
360
+ from: "VOTING",
361
+ to: "ACTIVE",
362
+ eventName: "reject",
363
+ guard: {
364
+ and: [
365
+ {
366
+ ">": [
367
+ { var: "$timestamp" },
368
+ { var: "state.proposal.votingEndsAt" },
369
+ ],
370
+ },
371
+ {
372
+ or: [
373
+ {
374
+ "<=": [
375
+ { var: "state.votes.for" },
376
+ { var: "state.votes.against" },
377
+ ],
378
+ },
379
+ {
380
+ "<": [
381
+ {
382
+ "+": [
383
+ { var: "state.votes.for" },
384
+ { var: "state.votes.against" },
385
+ { var: "state.votes.abstain" },
386
+ ],
387
+ },
388
+ { var: "state.quorum" },
389
+ ],
390
+ },
391
+ ],
392
+ },
393
+ ],
394
+ },
395
+ effect: {
396
+ merge: [
397
+ { var: "state" },
398
+ {
399
+ rejectedProposals: {
400
+ cat: [
401
+ { var: "state.rejectedProposals" },
402
+ [
403
+ {
404
+ merge: [
405
+ { var: "state.proposal" },
406
+ {
407
+ votes: { var: "state.votes" },
408
+ rejectedAt: { var: "$timestamp" },
409
+ },
410
+ ],
411
+ },
412
+ ],
413
+ ],
414
+ },
415
+ proposal: null,
416
+ votes: null,
417
+ },
418
+ ],
419
+ },
420
+ dependencies: [],
421
+ },
422
+ // QUEUED → ACTIVE: cancel (proposer only)
423
+ {
424
+ from: "QUEUED",
425
+ to: "ACTIVE",
426
+ eventName: "cancel",
427
+ guard: {
428
+ "===": [{ var: "event.agent" }, { var: "state.proposal.proposer" }],
429
+ },
430
+ effect: {
431
+ merge: [
432
+ { var: "state" },
433
+ {
434
+ cancelledProposals: {
435
+ cat: [
436
+ { var: "state.cancelledProposals" },
437
+ [
438
+ {
439
+ merge: [
440
+ { var: "state.proposal" },
441
+ { cancelledAt: { var: "$timestamp" } },
442
+ ],
443
+ },
444
+ ],
445
+ ],
446
+ },
447
+ proposal: null,
448
+ votes: null,
449
+ },
450
+ ],
451
+ },
452
+ dependencies: [],
453
+ },
454
+ // ACTIVE → ACTIVE: delegate
455
+ {
456
+ from: "ACTIVE",
457
+ to: "ACTIVE",
458
+ eventName: "delegate",
459
+ guard: {
460
+ ">": [
461
+ { getKey: [{ var: "state.balances" }, { var: "event.agent" }] },
462
+ 0,
463
+ ],
464
+ },
465
+ effect: {
466
+ merge: [
467
+ { var: "state" },
468
+ {
469
+ delegations: {
470
+ setKey: [
471
+ { var: "state.delegations" },
472
+ { var: "event.agent" },
473
+ { var: "event.delegateTo" },
474
+ ],
475
+ },
476
+ },
477
+ ],
478
+ },
479
+ dependencies: [],
480
+ },
481
+ // ACTIVE → ACTIVE: undelegate
482
+ {
483
+ from: "ACTIVE",
484
+ to: "ACTIVE",
485
+ eventName: "undelegate",
486
+ guard: { getKey: [{ var: "state.delegations" }, { var: "event.agent" }] },
487
+ effect: {
488
+ merge: [
489
+ { var: "state" },
490
+ {
491
+ delegations: {
492
+ deleteKey: [{ var: "state.delegations" }, { var: "event.agent" }],
493
+ },
494
+ },
495
+ ],
496
+ },
497
+ dependencies: [],
498
+ },
499
+ ],
500
+ });