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