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