@ottochain/sdk 2.0.0 → 2.2.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 +95 -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 +86 -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 +172 -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,482 @@
1
+ import { defineFiberApp } from "../../../schema/fiber-app.js";
2
+ /**
3
+ * Binary or multi-outcome prediction market with oracle resolution and position staking.
4
+ */
5
+ export const marketPredictionDef = defineFiberApp({
6
+ metadata: {
7
+ name: "MarketPrediction",
8
+ app: "markets",
9
+ type: "prediction",
10
+ version: "1.0.0",
11
+ description: "Binary or multi-outcome prediction market with oracle resolution and position staking",
12
+ crossReferences: {
13
+ oracleId: "Links to IdentityOracle that resolves the outcome",
14
+ creatorIdentityId: "Links to creator's IdentityAgent",
15
+ },
16
+ },
17
+ createSchema: {
18
+ required: ["creator", "outcomes", "oracles", "quorum"],
19
+ properties: {
20
+ creator: {
21
+ type: "address",
22
+ description: "DAG address of the market creator",
23
+ immutable: true,
24
+ },
25
+ outcomes: {
26
+ type: "array",
27
+ description: "Valid outcome identifiers",
28
+ immutable: true,
29
+ },
30
+ oracles: {
31
+ type: "array",
32
+ description: "Authorized oracle addresses",
33
+ immutable: true,
34
+ },
35
+ quorum: {
36
+ type: "number",
37
+ description: "Minimum oracle submissions needed to resolve",
38
+ immutable: true,
39
+ },
40
+ deadline: { type: "timestamp", description: "Optional trading deadline" },
41
+ },
42
+ },
43
+ stateSchema: {
44
+ properties: {
45
+ status: { type: "string", computed: true },
46
+ creator: { type: "address", immutable: true },
47
+ outcomes: { type: "array", immutable: true },
48
+ oracles: { type: "array", immutable: true },
49
+ quorum: { type: "number", immutable: true },
50
+ deadline: { type: "timestamp" },
51
+ positions: { type: "object", computed: true },
52
+ totalPool: { type: "number", computed: true },
53
+ resolutions: { type: "array", computed: true },
54
+ finalOutcome: { type: "string", computed: true },
55
+ claims: { type: "array", computed: true },
56
+ },
57
+ },
58
+ eventSchemas: {
59
+ open: { description: "Open the market for trading" },
60
+ cancel: {
61
+ description: "Cancel the market before opening",
62
+ properties: { reason: { type: "string" } },
63
+ },
64
+ take_position: {
65
+ description: "Take a position on an outcome",
66
+ required: ["outcome", "amount"],
67
+ properties: {
68
+ outcome: { type: "string" },
69
+ amount: { type: "number", minimum: 0 },
70
+ },
71
+ },
72
+ close: { description: "Close trading" },
73
+ submit_resolution: {
74
+ description: "Submit oracle resolution",
75
+ required: ["outcome", "proof"],
76
+ properties: {
77
+ outcome: { type: "string" },
78
+ proof: { type: "string" },
79
+ },
80
+ },
81
+ finalize: {
82
+ description: "Finalize market after quorum reached",
83
+ properties: { outcome: { type: "string" } },
84
+ },
85
+ dispute: {
86
+ description: "Dispute the resolution",
87
+ required: ["stake"],
88
+ properties: {
89
+ stake: { type: "number", minimum: 0 },
90
+ reason: { type: "string" },
91
+ },
92
+ },
93
+ ruling: {
94
+ description: "Judicial ruling on dispute",
95
+ properties: {
96
+ judicialRuling: { type: "boolean" },
97
+ outcome: { type: "string" },
98
+ rulingId: { type: "string" },
99
+ },
100
+ },
101
+ invalidate: { description: "Invalidate market by oracle consensus" },
102
+ claim: {
103
+ description: "Claim payout after settlement",
104
+ properties: { amount: { type: "number" } },
105
+ },
106
+ },
107
+ states: {
108
+ PROPOSED: {
109
+ id: "PROPOSED",
110
+ isFinal: false,
111
+ metadata: { description: "Market created but not yet open for trading" },
112
+ },
113
+ OPEN: {
114
+ id: "OPEN",
115
+ isFinal: false,
116
+ metadata: { description: "Accepting positions on outcomes" },
117
+ },
118
+ CLOSED: {
119
+ id: "CLOSED",
120
+ isFinal: false,
121
+ metadata: { description: "No more positions, awaiting resolution" },
122
+ },
123
+ RESOLVING: {
124
+ id: "RESOLVING",
125
+ isFinal: false,
126
+ metadata: { description: "Oracle(s) submitting resolution" },
127
+ },
128
+ DISPUTED: {
129
+ id: "DISPUTED",
130
+ isFinal: false,
131
+ metadata: { description: "Resolution challenged, awaiting arbitration" },
132
+ },
133
+ SETTLED: {
134
+ id: "SETTLED",
135
+ isFinal: true,
136
+ metadata: { description: "Outcome finalized, payouts available" },
137
+ },
138
+ REFUNDED: {
139
+ id: "REFUNDED",
140
+ isFinal: true,
141
+ metadata: { description: "Market invalidated, all positions refunded" },
142
+ },
143
+ CANCELLED: {
144
+ id: "CANCELLED",
145
+ isFinal: true,
146
+ metadata: { description: "Market cancelled before opening" },
147
+ },
148
+ },
149
+ initialState: "PROPOSED",
150
+ transitions: [
151
+ {
152
+ from: "PROPOSED",
153
+ to: "OPEN",
154
+ eventName: "open",
155
+ guard: { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
156
+ effect: {
157
+ merge: [
158
+ { var: "state" },
159
+ {
160
+ status: "OPEN",
161
+ openedAt: { var: "$timestamp" },
162
+ positions: {},
163
+ totalPool: 0,
164
+ },
165
+ ],
166
+ },
167
+ dependencies: [],
168
+ },
169
+ {
170
+ from: "PROPOSED",
171
+ to: "CANCELLED",
172
+ eventName: "cancel",
173
+ guard: { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
174
+ effect: {
175
+ merge: [
176
+ { var: "state" },
177
+ {
178
+ status: "CANCELLED",
179
+ cancelledAt: { var: "$timestamp" },
180
+ reason: { var: "event.reason" },
181
+ },
182
+ ],
183
+ },
184
+ dependencies: [],
185
+ },
186
+ {
187
+ from: "OPEN",
188
+ to: "OPEN",
189
+ eventName: "take_position",
190
+ guard: {
191
+ and: [
192
+ { ">": [{ var: "event.amount" }, 0] },
193
+ { in: [{ var: "event.outcome" }, { var: "state.outcomes" }] },
194
+ {
195
+ or: [
196
+ { "!": [{ var: "state.deadline" }] },
197
+ { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
198
+ ],
199
+ },
200
+ ],
201
+ },
202
+ effect: {
203
+ merge: [
204
+ { var: "state" },
205
+ {
206
+ positions: {
207
+ merge: [
208
+ { var: "state.positions" },
209
+ {
210
+ __computed: {
211
+ cat: [
212
+ { var: "event.agent" },
213
+ "_",
214
+ { var: "event.outcome" },
215
+ ],
216
+ },
217
+ },
218
+ ],
219
+ },
220
+ totalPool: {
221
+ "+": [{ var: "state.totalPool" }, { var: "event.amount" }],
222
+ },
223
+ },
224
+ ],
225
+ },
226
+ dependencies: [],
227
+ },
228
+ {
229
+ from: "OPEN",
230
+ to: "CLOSED",
231
+ eventName: "close",
232
+ guard: {
233
+ or: [
234
+ { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
235
+ {
236
+ and: [
237
+ { var: "state.deadline" },
238
+ { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
239
+ ],
240
+ },
241
+ ],
242
+ },
243
+ effect: {
244
+ merge: [
245
+ { var: "state" },
246
+ { status: "CLOSED", closedAt: { var: "$timestamp" } },
247
+ ],
248
+ },
249
+ dependencies: [],
250
+ },
251
+ {
252
+ from: "CLOSED",
253
+ to: "RESOLVING",
254
+ eventName: "submit_resolution",
255
+ guard: { in: [{ var: "event.agent" }, { var: "state.oracles" }] },
256
+ effect: {
257
+ merge: [
258
+ { var: "state" },
259
+ {
260
+ status: "RESOLVING",
261
+ resolutions: [
262
+ {
263
+ oracle: { var: "event.agent" },
264
+ outcome: { var: "event.outcome" },
265
+ proof: { var: "event.proof" },
266
+ submittedAt: { var: "$timestamp" },
267
+ },
268
+ ],
269
+ },
270
+ ],
271
+ },
272
+ dependencies: [],
273
+ },
274
+ {
275
+ from: "RESOLVING",
276
+ to: "RESOLVING",
277
+ eventName: "submit_resolution",
278
+ guard: {
279
+ and: [
280
+ { in: [{ var: "event.agent" }, { var: "state.oracles" }] },
281
+ {
282
+ "!": [
283
+ {
284
+ in: [
285
+ { var: "event.agent" },
286
+ { map: [{ var: "state.resolutions" }, { var: "oracle" }] },
287
+ ],
288
+ },
289
+ ],
290
+ },
291
+ ],
292
+ },
293
+ effect: {
294
+ merge: [
295
+ { var: "state" },
296
+ {
297
+ resolutions: {
298
+ cat: [
299
+ { var: "state.resolutions" },
300
+ [
301
+ {
302
+ oracle: { var: "event.agent" },
303
+ outcome: { var: "event.outcome" },
304
+ proof: { var: "event.proof" },
305
+ submittedAt: { var: "$timestamp" },
306
+ },
307
+ ],
308
+ ],
309
+ },
310
+ },
311
+ ],
312
+ },
313
+ dependencies: [],
314
+ },
315
+ {
316
+ from: "RESOLVING",
317
+ to: "SETTLED",
318
+ eventName: "finalize",
319
+ guard: {
320
+ ">=": [{ size: { var: "state.resolutions" } }, { var: "state.quorum" }],
321
+ },
322
+ effect: {
323
+ merge: [
324
+ { var: "state" },
325
+ {
326
+ status: "SETTLED",
327
+ settledAt: { var: "$timestamp" },
328
+ finalOutcome: { var: "event.outcome" },
329
+ claims: [],
330
+ },
331
+ ],
332
+ },
333
+ dependencies: [],
334
+ },
335
+ {
336
+ from: "RESOLVING",
337
+ to: "DISPUTED",
338
+ eventName: "dispute",
339
+ guard: {
340
+ and: [
341
+ {
342
+ ">": [
343
+ {
344
+ size: {
345
+ filter: [
346
+ { var: "state.positions" },
347
+ { "===": [{ var: "agent" }, { var: "event.agent" }] },
348
+ ],
349
+ },
350
+ },
351
+ 0,
352
+ ],
353
+ },
354
+ { var: "event.stake" },
355
+ ],
356
+ },
357
+ effect: {
358
+ merge: [
359
+ { var: "state" },
360
+ {
361
+ status: "DISPUTED",
362
+ disputedAt: { var: "$timestamp" },
363
+ disputedBy: { var: "event.agent" },
364
+ disputeStake: { var: "event.stake" },
365
+ disputeReason: { var: "event.reason" },
366
+ },
367
+ ],
368
+ },
369
+ dependencies: [],
370
+ },
371
+ {
372
+ from: "DISPUTED",
373
+ to: "SETTLED",
374
+ eventName: "ruling",
375
+ guard: { var: "event.judicialRuling" },
376
+ effect: {
377
+ merge: [
378
+ { var: "state" },
379
+ {
380
+ status: "SETTLED",
381
+ settledAt: { var: "$timestamp" },
382
+ finalOutcome: { var: "event.outcome" },
383
+ rulingId: { var: "event.rulingId" },
384
+ claims: [],
385
+ },
386
+ ],
387
+ },
388
+ dependencies: [],
389
+ },
390
+ {
391
+ from: "RESOLVING",
392
+ to: "REFUNDED",
393
+ eventName: "invalidate",
394
+ guard: {
395
+ ">=": [
396
+ {
397
+ size: {
398
+ filter: [
399
+ { var: "state.resolutions" },
400
+ { "===": [{ var: "outcome" }, "INVALID"] },
401
+ ],
402
+ },
403
+ },
404
+ { var: "state.quorum" },
405
+ ],
406
+ },
407
+ effect: {
408
+ merge: [
409
+ { var: "state" },
410
+ {
411
+ status: "REFUNDED",
412
+ refundedAt: { var: "$timestamp" },
413
+ reason: "oracle_invalidation",
414
+ },
415
+ ],
416
+ },
417
+ dependencies: [],
418
+ },
419
+ {
420
+ from: "SETTLED",
421
+ to: "SETTLED",
422
+ eventName: "claim",
423
+ guard: {
424
+ and: [
425
+ {
426
+ ">": [
427
+ {
428
+ size: {
429
+ filter: [
430
+ { var: "state.positions" },
431
+ {
432
+ and: [
433
+ { "===": [{ var: "agent" }, { var: "event.agent" }] },
434
+ {
435
+ "===": [
436
+ { var: "outcome" },
437
+ { var: "state.finalOutcome" },
438
+ ],
439
+ },
440
+ ],
441
+ },
442
+ ],
443
+ },
444
+ },
445
+ 0,
446
+ ],
447
+ },
448
+ {
449
+ "!": [
450
+ {
451
+ in: [
452
+ { var: "event.agent" },
453
+ { map: [{ var: "state.claims" }, { var: "agent" }] },
454
+ ],
455
+ },
456
+ ],
457
+ },
458
+ ],
459
+ },
460
+ effect: {
461
+ merge: [
462
+ { var: "state" },
463
+ {
464
+ claims: {
465
+ cat: [
466
+ { var: "state.claims" },
467
+ [
468
+ {
469
+ agent: { var: "event.agent" },
470
+ amount: { var: "event.amount" },
471
+ claimedAt: { var: "$timestamp" },
472
+ },
473
+ ],
474
+ ],
475
+ },
476
+ },
477
+ ],
478
+ },
479
+ dependencies: [],
480
+ },
481
+ ],
482
+ });
@@ -0,0 +1,126 @@
1
+ import { defineFiberApp } from "../../../schema/fiber-app.js";
2
+ /**
3
+ * Minimal market state machine - extend for custom use cases.
4
+ */
5
+ export const marketUniversalDef = defineFiberApp({
6
+ metadata: {
7
+ name: "MarketUniversal",
8
+ app: "markets",
9
+ type: "universal",
10
+ version: "1.0.0",
11
+ description: "Minimal market state machine - extend for custom use cases",
12
+ },
13
+ createSchema: {
14
+ properties: {},
15
+ },
16
+ stateSchema: {
17
+ properties: {
18
+ status: { type: "string" },
19
+ totalCommitted: { type: "number", computed: true },
20
+ },
21
+ },
22
+ eventSchemas: {
23
+ open: { description: "Open the market for participation" },
24
+ cancel: { description: "Cancel the market" },
25
+ commit: {
26
+ description: "Commit funds to the market",
27
+ properties: {
28
+ amount: { type: "number", minimum: 0 },
29
+ },
30
+ },
31
+ close: { description: "Close the market to new commits" },
32
+ settle: { description: "Settle the market" },
33
+ },
34
+ states: {
35
+ PROPOSED: { id: "PROPOSED", isFinal: false, metadata: null },
36
+ OPEN: { id: "OPEN", isFinal: false, metadata: null },
37
+ CLOSED: { id: "CLOSED", isFinal: false, metadata: null },
38
+ SETTLED: { id: "SETTLED", isFinal: true, metadata: null },
39
+ CANCELLED: { id: "CANCELLED", isFinal: true, metadata: null },
40
+ },
41
+ initialState: "PROPOSED",
42
+ transitions: [
43
+ {
44
+ from: "PROPOSED",
45
+ to: "OPEN",
46
+ eventName: "open",
47
+ guard: { "==": [1, 1] },
48
+ effect: {
49
+ merge: [
50
+ { var: "state" },
51
+ { status: "OPEN", openedAt: { var: "$timestamp" } },
52
+ ],
53
+ },
54
+ dependencies: [],
55
+ },
56
+ {
57
+ from: "PROPOSED",
58
+ to: "CANCELLED",
59
+ eventName: "cancel",
60
+ guard: { "==": [1, 1] },
61
+ effect: {
62
+ merge: [
63
+ { var: "state" },
64
+ { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
65
+ ],
66
+ },
67
+ dependencies: [],
68
+ },
69
+ {
70
+ from: "OPEN",
71
+ to: "OPEN",
72
+ eventName: "commit",
73
+ guard: { ">": [{ var: "event.amount" }, 0] },
74
+ effect: {
75
+ merge: [
76
+ { var: "state" },
77
+ {
78
+ totalCommitted: {
79
+ "+": [{ var: "state.totalCommitted" }, { var: "event.amount" }],
80
+ },
81
+ },
82
+ ],
83
+ },
84
+ dependencies: [],
85
+ },
86
+ {
87
+ from: "OPEN",
88
+ to: "CLOSED",
89
+ eventName: "close",
90
+ guard: { "==": [1, 1] },
91
+ effect: {
92
+ merge: [
93
+ { var: "state" },
94
+ { status: "CLOSED", closedAt: { var: "$timestamp" } },
95
+ ],
96
+ },
97
+ dependencies: [],
98
+ },
99
+ {
100
+ from: "CLOSED",
101
+ to: "SETTLED",
102
+ eventName: "settle",
103
+ guard: { "==": [1, 1] },
104
+ effect: {
105
+ merge: [
106
+ { var: "state" },
107
+ { status: "SETTLED", settledAt: { var: "$timestamp" } },
108
+ ],
109
+ },
110
+ dependencies: [],
111
+ },
112
+ {
113
+ from: "CLOSED",
114
+ to: "CANCELLED",
115
+ eventName: "cancel",
116
+ guard: { "==": [1, 1] },
117
+ effect: {
118
+ merge: [
119
+ { var: "state" },
120
+ { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
121
+ ],
122
+ },
123
+ dependencies: [],
124
+ },
125
+ ],
126
+ });
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Oracle Application — Backward Compatibility Shim
3
+ *
4
+ * ⚠️ DEPRECATED: Oracle types have been unified into the Identity app.
5
+ * Import from `@ottochain/sdk/apps/identity` instead.
6
+ *
7
+ * @deprecated Use `@ottochain/sdk/apps/identity`
8
+ * @packageDocumentation
9
+ */
10
+ export { IdentityState as OracleState, Reputation as OracleReputation, PenaltyEvent as SlashingEvent, Identity as Oracle, RegisterIdentityRequest as RegisterOracleRequest, ActivateIdentityRequest as ActivateOracleRequest, AddStakeRequest, WithdrawIdentityRequest as WithdrawOracleRequest, IdentityDefinition as OracleDefinition, identityStateFromJSON as oracleStateFromJSON, identityStateToJSON as oracleStateToJSON, } from "../identity/index.js";
11
+ import { getIdentityDefinition } from "../identity/index.js";
12
+ /** @deprecated Use `getIdentityDefinition('oracle')` from `@ottochain/sdk/apps/identity` */
13
+ export function getOracleDefinition(_type) {
14
+ return getIdentityDefinition("oracle");
15
+ }
16
+ /** @deprecated Use `DEFAULT_REPUTATION_CONFIG` from `@ottochain/sdk/apps/identity` */
17
+ export const DEFAULT_ORACLE_CONFIG = {
18
+ minStake: 100,
19
+ baseReputation: 10,
20
+ reputationDecay: 0.95,
21
+ };
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.2
3
+ // protoc-gen-ts_proto v2.11.5
4
4
  // protoc unknown
5
5
  // source: google/protobuf/struct.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.2
3
+ // protoc-gen-ts_proto v2.11.5
4
4
  // protoc unknown
5
5
  // source: google/protobuf/timestamp.proto
6
6
  /* eslint-disable */
@@ -21,15 +21,19 @@
21
21
  export { FiberStatus, AccessControlPolicy, PublicAccess, WhitelistAccess, FiberOwnedAccess, StateMachineDefinition, EmittedEvent, EventReceipt, ScriptInvocation, FiberLogEntry, } from './ottochain/v1/fiber.js';
22
22
  export { CreateStateMachine, TransitionStateMachine, ArchiveStateMachine, CreateScript, InvokeScript, OttochainMessage, } from './ottochain/v1/messages.js';
23
23
  export { StateMachineFiberRecord, ScriptFiberRecord, FiberCommit, OnChainState, CalculatedState, } from './ottochain/v1/records.js';
24
- // App: Identity
25
- export { AgentState, Platform, PlatformLink, AgentIdentity, AgentIdentityDefinition, } from './ottochain/apps/identity/v1/agent.js';
24
+ // App: Identity (unified in v2.1)
25
+ export { IdentityType, IdentityState, Platform, PlatformLink, Reputation, PenaltyEvent, Identity, RegisterIdentityRequest, ActivateIdentityRequest, LinkPlatformRequest, ChallengeIdentityRequest, AddStakeRequest, WithdrawIdentityRequest, IdentityDefinition, } from './ottochain/apps/identity/v1/identity.js';
26
+ // Legacy aliases for backward compatibility
27
+ export { IdentityState as AgentState } from './ottochain/apps/identity/v1/identity.js';
28
+ export { IdentityState as OracleState } from './ottochain/apps/identity/v1/identity.js';
26
29
  export { AttestationType, ReputationDelta, Attestation, VouchRequest, ChallengeRequest, ReputationConfig, } from './ottochain/apps/identity/v1/attestation.js';
27
30
  // App: Contracts
28
31
  export { ContractState, Contract, ProposeContractRequest, AcceptContractRequest, CompleteContractRequest, RejectContractRequest, DisputeContractRequest, ContractDefinition, } from './ottochain/apps/contracts/v1/contract.js';
29
32
  // App: Markets
30
33
  export { MarketType, MarketState, Commitment, Resolution, Market, CreateMarketRequest, CommitToMarketRequest, SubmitResolutionRequest, CancelMarketRequest, MarketDefinition, } from './ottochain/apps/markets/v1/market.js';
31
- // App: Oracles
32
- export { OracleState, OracleReputation, SlashingEvent, Oracle, RegisterOracleRequest, ActivateOracleRequest, AddStakeRequest, WithdrawStakeRequest, SlashOracleRequest, WithdrawOracleRequest, OracleDefinition, } from './ottochain/apps/oracles/v1/oracle.js';
34
+ // App: Oracles - REMOVED in v2.1 (absorbed into identity)
35
+ // OracleState is now an alias for IdentityState (see above)
36
+ // Oracle-specific messages moved to identity.proto
33
37
  // App: Governance
34
38
  export { DAOType, DAOStatus, ProposalStatus, VoteChoice, DAOMetadata, Proposal, Vote, VoteTally, SingleOwnerDAO, SingleOwnerAction, OwnershipTransfer, MultisigDAO, MultisigAction, TokenDAO, TokenProposalResult, ThresholdDAO, ThresholdVotes, ThresholdHistoryEntry, CreateDAORequest, ProposeRequest, VoteRequest, ExecuteRequest, } from './ottochain/apps/governance/v1/governance.js';
35
39
  // App: Corporate
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.2
3
+ // protoc-gen-ts_proto v2.11.5
4
4
  // protoc unknown
5
5
  // source: ottochain/apps/contracts/v1/contract.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.2
3
+ // protoc-gen-ts_proto v2.11.5
4
4
  // protoc unknown
5
5
  // source: ottochain/apps/corporate/v1/corporate.proto
6
6
  /* eslint-disable */