@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,407 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.marketGroupBuyDef = void 0;
4
+ const fiber_app_js_1 = require("../../../schema/fiber-app.js");
5
+ /**
6
+ * Collective purchasing with quantity thresholds and tiered pricing.
7
+ */
8
+ exports.marketGroupBuyDef = (0, fiber_app_js_1.defineFiberApp)({
9
+ metadata: {
10
+ name: "MarketGroupBuy",
11
+ app: "markets",
12
+ type: "groupBuy",
13
+ version: "1.0.0",
14
+ description: "Collective purchasing with quantity thresholds and tiered pricing",
15
+ crossReferences: {
16
+ vendorIdentityId: "Links to vendor's IdentityAgent",
17
+ escrowId: "Links to ContractEscrow for payment custody",
18
+ },
19
+ },
20
+ createSchema: {
21
+ required: ["organizer", "minQuantity", "deadline"],
22
+ properties: {
23
+ organizer: {
24
+ type: "address",
25
+ description: "DAG address of group buy organizer",
26
+ immutable: true,
27
+ },
28
+ minQuantity: {
29
+ type: "number",
30
+ minimum: 1,
31
+ description: "Minimum quantity to proceed",
32
+ immutable: true,
33
+ },
34
+ deadline: {
35
+ type: "timestamp",
36
+ description: "Order deadline",
37
+ immutable: true,
38
+ },
39
+ vendor: { type: "address", description: "DAG address of the vendor" },
40
+ maxPerBuyer: {
41
+ type: "number",
42
+ minimum: 1,
43
+ description: "Max quantity per buyer",
44
+ },
45
+ priceTiers: {
46
+ type: "array",
47
+ description: "Quantity-based pricing tiers",
48
+ },
49
+ },
50
+ },
51
+ stateSchema: {
52
+ properties: {
53
+ status: { type: "string", computed: true },
54
+ organizer: { type: "address", immutable: true },
55
+ vendor: { type: "address" },
56
+ minQuantity: { type: "number", immutable: true },
57
+ maxPerBuyer: { type: "number" },
58
+ deadline: { type: "timestamp", immutable: true },
59
+ priceTiers: { type: "array" },
60
+ orders: { type: "array", computed: true },
61
+ totalQuantity: { type: "number", computed: true },
62
+ currentTier: { type: "number", computed: true },
63
+ refundsClaimed: { type: "array", computed: true },
64
+ },
65
+ },
66
+ eventSchemas: {
67
+ open: { description: "Open the group buy for orders" },
68
+ cancel: { description: "Cancel the group buy" },
69
+ order: {
70
+ description: "Place an order",
71
+ required: ["quantity"],
72
+ properties: {
73
+ quantity: { type: "number", minimum: 1 },
74
+ shippingInfo: { type: "object" },
75
+ },
76
+ },
77
+ check_threshold: { description: "Check if minimum threshold reached" },
78
+ finalize: { description: "Finalize after deadline" },
79
+ fulfill: { description: "Mark group buy as fulfilled by vendor/organizer" },
80
+ claim_refund: { description: "Claim refund if threshold not met" },
81
+ },
82
+ states: {
83
+ PROPOSED: {
84
+ id: "PROPOSED",
85
+ isFinal: false,
86
+ metadata: { description: "Group buy created but not yet open" },
87
+ },
88
+ OPEN: {
89
+ id: "OPEN",
90
+ isFinal: false,
91
+ metadata: { description: "Accepting orders" },
92
+ },
93
+ THRESHOLD_MET: {
94
+ id: "THRESHOLD_MET",
95
+ isFinal: false,
96
+ metadata: {
97
+ description: "Minimum quantity reached, continuing for better tier",
98
+ },
99
+ },
100
+ PROCESSING: {
101
+ id: "PROCESSING",
102
+ isFinal: false,
103
+ metadata: {
104
+ description: "Order placed with vendor, awaiting fulfillment",
105
+ },
106
+ },
107
+ FULFILLED: {
108
+ id: "FULFILLED",
109
+ isFinal: true,
110
+ metadata: { description: "All items delivered to buyers" },
111
+ },
112
+ REFUNDED: {
113
+ id: "REFUNDED",
114
+ isFinal: true,
115
+ metadata: { description: "Threshold not met, all orders refunded" },
116
+ },
117
+ CANCELLED: {
118
+ id: "CANCELLED",
119
+ isFinal: true,
120
+ metadata: { description: "Group buy cancelled" },
121
+ },
122
+ },
123
+ initialState: "PROPOSED",
124
+ transitions: [
125
+ {
126
+ from: "PROPOSED",
127
+ to: "OPEN",
128
+ eventName: "open",
129
+ guard: { "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
130
+ effect: {
131
+ merge: [
132
+ { var: "state" },
133
+ {
134
+ status: "OPEN",
135
+ openedAt: { var: "$timestamp" },
136
+ orders: [],
137
+ totalQuantity: 0,
138
+ currentTier: 0,
139
+ },
140
+ ],
141
+ },
142
+ dependencies: [],
143
+ },
144
+ {
145
+ from: "PROPOSED",
146
+ to: "CANCELLED",
147
+ eventName: "cancel",
148
+ guard: { "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
149
+ effect: {
150
+ merge: [
151
+ { var: "state" },
152
+ { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
153
+ ],
154
+ },
155
+ dependencies: [],
156
+ },
157
+ {
158
+ from: "OPEN",
159
+ to: "OPEN",
160
+ eventName: "order",
161
+ guard: {
162
+ and: [
163
+ { ">": [{ var: "event.quantity" }, 0] },
164
+ {
165
+ or: [
166
+ { "!": [{ var: "state.maxPerBuyer" }] },
167
+ {
168
+ "<=": [{ var: "event.quantity" }, { var: "state.maxPerBuyer" }],
169
+ },
170
+ ],
171
+ },
172
+ { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
173
+ ],
174
+ },
175
+ effect: {
176
+ merge: [
177
+ { var: "state" },
178
+ {
179
+ orders: {
180
+ cat: [
181
+ { var: "state.orders" },
182
+ [
183
+ {
184
+ buyer: { var: "event.agent" },
185
+ quantity: { var: "event.quantity" },
186
+ shippingInfo: { var: "event.shippingInfo" },
187
+ orderedAt: { var: "$timestamp" },
188
+ },
189
+ ],
190
+ ],
191
+ },
192
+ totalQuantity: {
193
+ "+": [{ var: "state.totalQuantity" }, { var: "event.quantity" }],
194
+ },
195
+ },
196
+ ],
197
+ },
198
+ dependencies: [],
199
+ },
200
+ {
201
+ from: "OPEN",
202
+ to: "THRESHOLD_MET",
203
+ eventName: "check_threshold",
204
+ guard: {
205
+ ">=": [{ var: "state.totalQuantity" }, { var: "state.minQuantity" }],
206
+ },
207
+ effect: {
208
+ merge: [
209
+ { var: "state" },
210
+ {
211
+ status: "THRESHOLD_MET",
212
+ thresholdMetAt: { var: "$timestamp" },
213
+ currentTier: {
214
+ reduce: [
215
+ { var: "state.priceTiers" },
216
+ {
217
+ if: [
218
+ {
219
+ "<=": [
220
+ { var: "current.minQuantity" },
221
+ { var: "state.totalQuantity" },
222
+ ],
223
+ },
224
+ { var: "current.tier" },
225
+ { var: "accumulator" },
226
+ ],
227
+ },
228
+ 0,
229
+ ],
230
+ },
231
+ },
232
+ ],
233
+ },
234
+ dependencies: [],
235
+ },
236
+ {
237
+ from: "THRESHOLD_MET",
238
+ to: "THRESHOLD_MET",
239
+ eventName: "order",
240
+ guard: {
241
+ and: [
242
+ { ">": [{ var: "event.quantity" }, 0] },
243
+ { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
244
+ ],
245
+ },
246
+ effect: {
247
+ merge: [
248
+ { var: "state" },
249
+ {
250
+ orders: {
251
+ cat: [
252
+ { var: "state.orders" },
253
+ [
254
+ {
255
+ buyer: { var: "event.agent" },
256
+ quantity: { var: "event.quantity" },
257
+ shippingInfo: { var: "event.shippingInfo" },
258
+ orderedAt: { var: "$timestamp" },
259
+ },
260
+ ],
261
+ ],
262
+ },
263
+ totalQuantity: {
264
+ "+": [{ var: "state.totalQuantity" }, { var: "event.quantity" }],
265
+ },
266
+ currentTier: {
267
+ reduce: [
268
+ { var: "state.priceTiers" },
269
+ {
270
+ if: [
271
+ {
272
+ "<=": [
273
+ { var: "current.minQuantity" },
274
+ {
275
+ "+": [
276
+ { var: "state.totalQuantity" },
277
+ { var: "event.quantity" },
278
+ ],
279
+ },
280
+ ],
281
+ },
282
+ { var: "current.tier" },
283
+ { var: "accumulator" },
284
+ ],
285
+ },
286
+ { var: "state.currentTier" },
287
+ ],
288
+ },
289
+ },
290
+ ],
291
+ },
292
+ dependencies: [],
293
+ },
294
+ {
295
+ from: "THRESHOLD_MET",
296
+ to: "PROCESSING",
297
+ eventName: "finalize",
298
+ guard: { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
299
+ effect: {
300
+ merge: [
301
+ { var: "state" },
302
+ {
303
+ status: "PROCESSING",
304
+ finalizedAt: { var: "$timestamp" },
305
+ finalTier: { var: "state.currentTier" },
306
+ finalPricePerUnit: {
307
+ var: {
308
+ cat: [
309
+ "state.priceTiers.",
310
+ { var: "state.currentTier" },
311
+ ".pricePerUnit",
312
+ ],
313
+ },
314
+ },
315
+ },
316
+ ],
317
+ },
318
+ dependencies: [],
319
+ },
320
+ {
321
+ from: "PROCESSING",
322
+ to: "FULFILLED",
323
+ eventName: "fulfill",
324
+ guard: {
325
+ or: [
326
+ { "===": [{ var: "event.agent" }, { var: "state.vendor" }] },
327
+ { "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
328
+ ],
329
+ },
330
+ effect: {
331
+ merge: [
332
+ { var: "state" },
333
+ {
334
+ status: "FULFILLED",
335
+ fulfilledAt: { var: "$timestamp" },
336
+ trackingInfo: { var: "event.trackingInfo" },
337
+ },
338
+ ],
339
+ },
340
+ dependencies: [],
341
+ },
342
+ {
343
+ from: "OPEN",
344
+ to: "REFUNDED",
345
+ eventName: "finalize",
346
+ guard: {
347
+ and: [
348
+ {
349
+ "<": [{ var: "state.totalQuantity" }, { var: "state.minQuantity" }],
350
+ },
351
+ { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
352
+ ],
353
+ },
354
+ effect: {
355
+ merge: [
356
+ { var: "state" },
357
+ {
358
+ status: "REFUNDED",
359
+ refundedAt: { var: "$timestamp" },
360
+ reason: "threshold_not_met",
361
+ },
362
+ ],
363
+ },
364
+ dependencies: [],
365
+ },
366
+ {
367
+ from: "REFUNDED",
368
+ to: "REFUNDED",
369
+ eventName: "claim_refund",
370
+ guard: {
371
+ and: [
372
+ {
373
+ ">": [
374
+ {
375
+ size: {
376
+ filter: [
377
+ { var: "state.orders" },
378
+ { "===": [{ var: "buyer" }, { var: "event.agent" }] },
379
+ ],
380
+ },
381
+ },
382
+ 0,
383
+ ],
384
+ },
385
+ {
386
+ "!": [
387
+ {
388
+ in: [{ var: "event.agent" }, { var: "state.refundsClaimed" }],
389
+ },
390
+ ],
391
+ },
392
+ ],
393
+ },
394
+ effect: {
395
+ merge: [
396
+ { var: "state" },
397
+ {
398
+ refundsClaimed: {
399
+ cat: [{ var: "state.refundsClaimed" }, [{ var: "event.agent" }]],
400
+ },
401
+ },
402
+ ],
403
+ },
404
+ dependencies: [],
405
+ },
406
+ ],
407
+ });