@ottochain/sdk 2.3.0 → 2.4.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 (209) hide show
  1. package/dist/cjs/apps/contracts/index.js +15 -8
  2. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +35 -40
  3. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +80 -37
  4. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +4 -4
  5. package/dist/cjs/apps/corporate/index.js +2 -2
  6. package/dist/cjs/apps/corporate/state-machines/corp-board.js +169 -59
  7. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +245 -47
  8. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +407 -99
  9. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +151 -37
  10. package/dist/cjs/apps/governance/index.js +14 -14
  11. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +58 -40
  12. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +46 -40
  13. package/dist/cjs/apps/governance/state-machines/dao-single.js +28 -11
  14. package/dist/cjs/apps/governance/state-machines/dao-token.js +67 -41
  15. package/dist/cjs/apps/governance/state-machines/governance-simple.js +93 -61
  16. package/dist/cjs/apps/governance/state-machines/governance-universal.js +2 -2
  17. package/dist/cjs/apps/identity/constants.js +55 -14
  18. package/dist/cjs/apps/identity/index.js +27 -11
  19. package/dist/cjs/apps/identity/state-machines/identity-agent.js +3 -3
  20. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +25 -22
  21. package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
  22. package/dist/cjs/apps/identity/state-machines/identity-universal.js +3 -3
  23. package/dist/cjs/apps/identity/state-machines/index.js +3 -1
  24. package/dist/cjs/apps/index.js +19 -8
  25. package/dist/cjs/apps/lending/assets.js +223 -0
  26. package/dist/cjs/apps/lending/credit-scoring.js +87 -0
  27. package/dist/cjs/apps/lending/eligibility.js +121 -0
  28. package/dist/cjs/apps/lending/index.js +91 -0
  29. package/dist/cjs/apps/lending/state-machines/index.js +9 -0
  30. package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +412 -0
  31. package/dist/cjs/apps/markets/index.js +21 -11
  32. package/dist/cjs/apps/markets/state-machines/market-auction.js +14 -13
  33. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +29 -24
  34. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +24 -26
  35. package/dist/cjs/apps/markets/state-machines/market-prediction.js +80 -53
  36. package/dist/cjs/apps/markets/state-machines/market-universal.js +5 -5
  37. package/dist/cjs/apps/oracles/index.js +2 -2
  38. package/dist/cjs/errors.js +3 -3
  39. package/dist/cjs/generated/google/protobuf/struct.js +4 -4
  40. package/dist/cjs/generated/index.js +11 -7
  41. package/dist/cjs/generated/openapi.js +6 -0
  42. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +50 -50
  43. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +19 -20
  44. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +13 -13
  45. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +4 -4
  46. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +124 -130
  47. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +107 -107
  48. package/dist/cjs/generated/ottochain/v1/common.js +4 -4
  49. package/dist/cjs/generated/ottochain/v1/fiber.js +4 -4
  50. package/dist/cjs/index.js +41 -7
  51. package/dist/cjs/openapi.js +2 -0
  52. package/dist/cjs/ottochain/drop-nulls.js +1 -2
  53. package/dist/cjs/ottochain/genesis-manifest.js +11 -11
  54. package/dist/cjs/ottochain/index.js +23 -13
  55. package/dist/cjs/ottochain/metagraph-client.js +65 -8
  56. package/dist/cjs/ottochain/snapshot.js +11 -12
  57. package/dist/cjs/ottochain/transaction.js +57 -14
  58. package/dist/cjs/ottochain/types.js +16 -2
  59. package/dist/cjs/privacy/index.js +14 -0
  60. package/dist/cjs/privacy/sealed-bid.js +210 -0
  61. package/dist/cjs/privacy/shield-app.js +131 -0
  62. package/dist/cjs/schema/effects.js +40 -0
  63. package/dist/cjs/schema/fiber-app.js +19 -13
  64. package/dist/cjs/schema/guard-lint.js +352 -0
  65. package/dist/cjs/schema/guards.js +246 -0
  66. package/dist/cjs/signing.js +80 -0
  67. package/dist/cjs/types.js +2 -3
  68. package/dist/cjs/validation.js +8 -8
  69. package/dist/cjs/verify.js +9 -4
  70. package/dist/cjs/zk/commit.js +53 -0
  71. package/dist/cjs/zk/guard.js +107 -0
  72. package/dist/cjs/zk/index.js +48 -0
  73. package/dist/cjs/zk/preimage.js +37 -0
  74. package/dist/cjs/zk/prover.js +87 -0
  75. package/dist/cjs/zk/registry.js +62 -0
  76. package/dist/cjs/zk/types.js +28 -0
  77. package/dist/cjs/zk/witness.js +19 -0
  78. package/dist/esm/apps/contracts/index.js +7 -3
  79. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +35 -40
  80. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +80 -37
  81. package/dist/esm/apps/contracts/state-machines/contract-universal.js +4 -4
  82. package/dist/esm/apps/corporate/state-machines/corp-board.js +169 -59
  83. package/dist/esm/apps/corporate/state-machines/corp-entity.js +245 -47
  84. package/dist/esm/apps/corporate/state-machines/corp-securities.js +407 -99
  85. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +151 -37
  86. package/dist/esm/apps/governance/state-machines/dao-multisig.js +58 -40
  87. package/dist/esm/apps/governance/state-machines/dao-reputation.js +46 -40
  88. package/dist/esm/apps/governance/state-machines/dao-single.js +28 -11
  89. package/dist/esm/apps/governance/state-machines/dao-token.js +67 -41
  90. package/dist/esm/apps/governance/state-machines/governance-simple.js +93 -61
  91. package/dist/esm/apps/governance/state-machines/governance-universal.js +2 -2
  92. package/dist/esm/apps/identity/constants.js +51 -12
  93. package/dist/esm/apps/identity/index.js +12 -7
  94. package/dist/esm/apps/identity/state-machines/identity-agent.js +3 -3
  95. package/dist/esm/apps/identity/state-machines/identity-oracle.js +25 -22
  96. package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
  97. package/dist/esm/apps/identity/state-machines/identity-universal.js +3 -3
  98. package/dist/esm/apps/identity/state-machines/index.js +1 -0
  99. package/dist/esm/apps/index.js +1 -0
  100. package/dist/esm/apps/lending/assets.js +207 -0
  101. package/dist/esm/apps/lending/credit-scoring.js +81 -0
  102. package/dist/esm/apps/lending/eligibility.js +115 -0
  103. package/dist/esm/apps/lending/index.js +69 -0
  104. package/dist/esm/apps/lending/state-machines/index.js +5 -0
  105. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +409 -0
  106. package/dist/esm/apps/markets/index.js +8 -4
  107. package/dist/esm/apps/markets/state-machines/market-auction.js +14 -13
  108. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +29 -24
  109. package/dist/esm/apps/markets/state-machines/market-group-buy.js +24 -26
  110. package/dist/esm/apps/markets/state-machines/market-prediction.js +80 -53
  111. package/dist/esm/apps/markets/state-machines/market-universal.js +5 -5
  112. package/dist/esm/generated/index.js +9 -5
  113. package/dist/esm/generated/openapi.js +5 -0
  114. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +46 -46
  115. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +114 -120
  116. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +100 -100
  117. package/dist/esm/index.js +21 -2
  118. package/dist/esm/openapi.js +1 -0
  119. package/dist/esm/ottochain/genesis-manifest.js +9 -9
  120. package/dist/esm/ottochain/index.js +2 -3
  121. package/dist/esm/ottochain/metagraph-client.js +65 -8
  122. package/dist/esm/ottochain/snapshot.js +4 -4
  123. package/dist/esm/ottochain/transaction.js +43 -3
  124. package/dist/esm/ottochain/types.js +15 -1
  125. package/dist/esm/privacy/index.js +6 -0
  126. package/dist/esm/privacy/sealed-bid.js +206 -0
  127. package/dist/esm/privacy/shield-app.js +127 -0
  128. package/dist/esm/schema/effects.js +35 -0
  129. package/dist/esm/schema/fiber-app.js +13 -6
  130. package/dist/esm/schema/guard-lint.js +346 -0
  131. package/dist/esm/schema/guards.js +229 -0
  132. package/dist/esm/signing.js +74 -0
  133. package/dist/esm/verify.js +8 -2
  134. package/dist/esm/zk/commit.js +44 -0
  135. package/dist/esm/zk/guard.js +99 -0
  136. package/dist/esm/zk/index.js +19 -0
  137. package/dist/esm/zk/preimage.js +30 -0
  138. package/dist/esm/zk/prover.js +82 -0
  139. package/dist/esm/zk/registry.js +55 -0
  140. package/dist/esm/zk/types.js +25 -0
  141. package/dist/esm/zk/witness.js +15 -0
  142. package/dist/types/apps/contracts/index.d.ts +69 -209
  143. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +20 -95
  144. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +46 -112
  145. package/dist/types/apps/corporate/index.d.ts +1040 -304
  146. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +188 -52
  147. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +267 -62
  148. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +355 -131
  149. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +225 -53
  150. package/dist/types/apps/governance/index.d.ts +296 -398
  151. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +77 -92
  152. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +42 -66
  153. package/dist/types/apps/governance/state-machines/dao-single.d.ts +25 -47
  154. package/dist/types/apps/governance/state-machines/dao-token.d.ts +60 -49
  155. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +87 -117
  156. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +2 -2
  157. package/dist/types/apps/identity/constants.d.ts +32 -4
  158. package/dist/types/apps/identity/index.d.ts +378 -94
  159. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +16 -87
  160. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
  161. package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
  162. package/dist/types/apps/index.d.ts +1 -0
  163. package/dist/types/apps/lending/assets.d.ts +258 -0
  164. package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
  165. package/dist/types/apps/lending/eligibility.d.ts +83 -0
  166. package/dist/types/apps/lending/index.d.ts +548 -0
  167. package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
  168. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +528 -0
  169. package/dist/types/apps/markets/index.d.ts +108 -203
  170. package/dist/types/apps/markets/state-machines/market-auction.d.ts +13 -37
  171. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +16 -34
  172. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +17 -43
  173. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +51 -72
  174. package/dist/types/apps/markets/state-machines/market-universal.d.ts +5 -5
  175. package/dist/types/generated/index.d.ts +5 -5
  176. package/dist/types/generated/openapi.d.ts +1257 -0
  177. package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
  178. package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
  179. package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
  180. package/dist/types/index.d.ts +6 -2
  181. package/dist/types/openapi.d.ts +22 -0
  182. package/dist/types/ottochain/genesis-manifest.d.ts +5 -5
  183. package/dist/types/ottochain/index.d.ts +5 -6
  184. package/dist/types/ottochain/metagraph-client.d.ts +49 -7
  185. package/dist/types/ottochain/snapshot.d.ts +6 -6
  186. package/dist/types/ottochain/transaction.d.ts +33 -1
  187. package/dist/types/ottochain/types.d.ts +335 -30
  188. package/dist/types/privacy/index.d.ts +6 -0
  189. package/dist/types/privacy/sealed-bid.d.ts +348 -0
  190. package/dist/types/privacy/shield-app.d.ts +48 -0
  191. package/dist/types/schema/effects.d.ts +34 -0
  192. package/dist/types/schema/fiber-app.d.ts +1 -2
  193. package/dist/types/schema/guard-lint.d.ts +111 -0
  194. package/dist/types/schema/guards.d.ts +134 -0
  195. package/dist/types/signing.d.ts +45 -0
  196. package/dist/types/validation.d.ts +22 -217
  197. package/dist/types/verify.d.ts +4 -0
  198. package/dist/types/zk/commit.d.ts +28 -0
  199. package/dist/types/zk/guard.d.ts +46 -0
  200. package/dist/types/zk/index.d.ts +19 -0
  201. package/dist/types/zk/preimage.d.ts +10 -0
  202. package/dist/types/zk/prover.d.ts +34 -0
  203. package/dist/types/zk/registry.d.ts +34 -0
  204. package/dist/types/zk/types.d.ts +33 -0
  205. package/dist/types/zk/witness.d.ts +40 -0
  206. package/package.json +27 -13
  207. package/dist/cjs/ottochain/normalize.js +0 -186
  208. package/dist/esm/ottochain/normalize.js +0 -179
  209. package/dist/types/ottochain/normalize.d.ts +0 -79
@@ -1,4 +1,5 @@
1
1
  import { defineFiberApp } from "../../../schema/fiber-app.js";
2
+ import { signerIsParty, signerIsNotParty } from "../../../schema/guards.js";
2
3
  /**
3
4
  * All-or-nothing crowdfunding with threshold, deadline, and stretch goals.
4
5
  */
@@ -127,13 +128,13 @@ export const marketCrowdfundDef = defineFiberApp({
127
128
  from: "PROPOSED",
128
129
  to: "OPEN",
129
130
  eventName: "launch",
130
- guard: { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
131
+ guard: signerIsParty("state.creator"),
131
132
  effect: {
132
133
  merge: [
133
134
  { var: "state" },
134
135
  {
135
136
  status: "OPEN",
136
- launchedAt: { var: "$timestamp" },
137
+ launchedAt: { var: "$ordinal" },
137
138
  pledges: [],
138
139
  totalPledged: 0,
139
140
  backerCount: 0,
@@ -146,11 +147,11 @@ export const marketCrowdfundDef = defineFiberApp({
146
147
  from: "PROPOSED",
147
148
  to: "CANCELLED",
148
149
  eventName: "cancel",
149
- guard: { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
150
+ guard: signerIsParty("state.creator"),
150
151
  effect: {
151
152
  merge: [
152
153
  { var: "state" },
153
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
154
+ { status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
154
155
  ],
155
156
  },
156
157
  dependencies: [],
@@ -162,14 +163,14 @@ export const marketCrowdfundDef = defineFiberApp({
162
163
  guard: {
163
164
  and: [
164
165
  { ">": [{ var: "event.amount" }, 0] },
165
- { "!==": [{ var: "event.agent" }, { var: "state.creator" }] },
166
+ signerIsNotParty("state.creator"),
166
167
  {
167
168
  or: [
168
169
  { "!": [{ var: "state.minPledge" }] },
169
170
  { ">=": [{ var: "event.amount" }, { var: "state.minPledge" }] },
170
171
  ],
171
172
  },
172
- { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
173
+ { "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
173
174
  ],
174
175
  },
175
176
  effect: {
@@ -184,7 +185,7 @@ export const marketCrowdfundDef = defineFiberApp({
184
185
  backer: { var: "event.agent" },
185
186
  amount: { var: "event.amount" },
186
187
  rewardTier: { var: "event.rewardTier" },
187
- pledgedAt: { var: "$timestamp" },
188
+ pledgedAt: { var: "$ordinal" },
188
189
  },
189
190
  ],
190
191
  ],
@@ -205,16 +206,18 @@ export const marketCrowdfundDef = defineFiberApp({
205
206
  guard: {
206
207
  and: [
207
208
  { ">": [{ var: "event.additionalAmount" }, 0] },
208
- { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
209
+ { "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
209
210
  {
210
211
  ">": [
211
212
  {
212
- size: {
213
- filter: [
214
- { var: "state.pledges" },
215
- { "===": [{ var: "backer" }, { var: "event.agent" }] },
216
- ],
217
- },
213
+ length: [
214
+ {
215
+ filter: [
216
+ { var: "state.pledges" },
217
+ { "===": [{ var: "backer" }, { var: "event.agent" }] },
218
+ ],
219
+ },
220
+ ],
218
221
  },
219
222
  0,
220
223
  ],
@@ -243,7 +246,7 @@ export const marketCrowdfundDef = defineFiberApp({
243
246
  guard: {
244
247
  and: [
245
248
  { ">=": [{ var: "state.totalPledged" }, { var: "state.threshold" }] },
246
- { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
249
+ { ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
247
250
  ],
248
251
  },
249
252
  effect: {
@@ -251,7 +254,7 @@ export const marketCrowdfundDef = defineFiberApp({
251
254
  { var: "state" },
252
255
  {
253
256
  status: "FUNDED",
254
- fundedAt: { var: "$timestamp" },
257
+ fundedAt: { var: "$ordinal" },
255
258
  stretchGoalsReached: {
256
259
  filter: [
257
260
  { var: "state.stretchGoals" },
@@ -270,7 +273,7 @@ export const marketCrowdfundDef = defineFiberApp({
270
273
  guard: {
271
274
  and: [
272
275
  { "<": [{ var: "state.totalPledged" }, { var: "state.threshold" }] },
273
- { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
276
+ { ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
274
277
  ],
275
278
  },
276
279
  effect: {
@@ -278,7 +281,7 @@ export const marketCrowdfundDef = defineFiberApp({
278
281
  { var: "state" },
279
282
  {
280
283
  status: "REFUNDED",
281
- refundedAt: { var: "$timestamp" },
284
+ refundedAt: { var: "$ordinal" },
282
285
  reason: "threshold_not_met",
283
286
  },
284
287
  ],
@@ -294,12 +297,14 @@ export const marketCrowdfundDef = defineFiberApp({
294
297
  {
295
298
  ">": [
296
299
  {
297
- size: {
298
- filter: [
299
- { var: "state.pledges" },
300
- { "===": [{ var: "backer" }, { var: "event.agent" }] },
301
- ],
302
- },
300
+ length: [
301
+ {
302
+ filter: [
303
+ { var: "state.pledges" },
304
+ { "===": [{ var: "backer" }, { var: "event.agent" }] },
305
+ ],
306
+ },
307
+ ],
303
308
  },
304
309
  0,
305
310
  ],
@@ -1,4 +1,5 @@
1
1
  import { defineFiberApp } from "../../../schema/fiber-app.js";
2
+ import { signerIsParty, signerIsAnyParty } from "../../../schema/guards.js";
2
3
  /**
3
4
  * Collective purchasing with quantity thresholds and tiered pricing.
4
5
  */
@@ -147,13 +148,13 @@ export const marketGroupBuyDef = defineFiberApp({
147
148
  from: "PROPOSED",
148
149
  to: "OPEN",
149
150
  eventName: "open",
150
- guard: { "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
151
+ guard: signerIsParty("state.organizer"),
151
152
  effect: {
152
153
  merge: [
153
154
  { var: "state" },
154
155
  {
155
156
  status: "OPEN",
156
- openedAt: { var: "$timestamp" },
157
+ openedAt: { var: "$ordinal" },
157
158
  orders: [],
158
159
  totalQuantity: 0,
159
160
  currentTier: 0,
@@ -166,11 +167,11 @@ export const marketGroupBuyDef = defineFiberApp({
166
167
  from: "PROPOSED",
167
168
  to: "CANCELLED",
168
169
  eventName: "cancel",
169
- guard: { "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
170
+ guard: signerIsParty("state.organizer"),
170
171
  effect: {
171
172
  merge: [
172
173
  { var: "state" },
173
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
174
+ { status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
174
175
  ],
175
176
  },
176
177
  dependencies: [],
@@ -190,7 +191,7 @@ export const marketGroupBuyDef = defineFiberApp({
190
191
  },
191
192
  ],
192
193
  },
193
- { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
194
+ { "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
194
195
  ],
195
196
  },
196
197
  effect: {
@@ -205,7 +206,7 @@ export const marketGroupBuyDef = defineFiberApp({
205
206
  buyer: { var: "event.agent" },
206
207
  quantity: { var: "event.quantity" },
207
208
  shippingInfo: { var: "event.shippingInfo" },
208
- orderedAt: { var: "$timestamp" },
209
+ orderedAt: { var: "$ordinal" },
209
210
  },
210
211
  ],
211
212
  ],
@@ -230,7 +231,7 @@ export const marketGroupBuyDef = defineFiberApp({
230
231
  { var: "state" },
231
232
  {
232
233
  status: "THRESHOLD_MET",
233
- thresholdMetAt: { var: "$timestamp" },
234
+ thresholdMetAt: { var: "$ordinal" },
234
235
  currentTier: {
235
236
  reduce: [
236
237
  { var: "state.priceTiers" },
@@ -261,7 +262,7 @@ export const marketGroupBuyDef = defineFiberApp({
261
262
  guard: {
262
263
  and: [
263
264
  { ">": [{ var: "event.quantity" }, 0] },
264
- { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
265
+ { "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
265
266
  ],
266
267
  },
267
268
  effect: {
@@ -276,7 +277,7 @@ export const marketGroupBuyDef = defineFiberApp({
276
277
  buyer: { var: "event.agent" },
277
278
  quantity: { var: "event.quantity" },
278
279
  shippingInfo: { var: "event.shippingInfo" },
279
- orderedAt: { var: "$timestamp" },
280
+ orderedAt: { var: "$ordinal" },
280
281
  },
281
282
  ],
282
283
  ],
@@ -316,13 +317,13 @@ export const marketGroupBuyDef = defineFiberApp({
316
317
  from: "THRESHOLD_MET",
317
318
  to: "PROCESSING",
318
319
  eventName: "finalize",
319
- guard: { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
320
+ guard: { ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
320
321
  effect: {
321
322
  merge: [
322
323
  { var: "state" },
323
324
  {
324
325
  status: "PROCESSING",
325
- finalizedAt: { var: "$timestamp" },
326
+ finalizedAt: { var: "$ordinal" },
326
327
  finalTier: { var: "state.currentTier" },
327
328
  finalPricePerUnit: {
328
329
  var: {
@@ -342,18 +343,13 @@ export const marketGroupBuyDef = defineFiberApp({
342
343
  from: "PROCESSING",
343
344
  to: "FULFILLED",
344
345
  eventName: "fulfill",
345
- guard: {
346
- or: [
347
- { "===": [{ var: "event.agent" }, { var: "state.vendor" }] },
348
- { "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
349
- ],
350
- },
346
+ guard: signerIsAnyParty(["state.vendor", "state.organizer"]),
351
347
  effect: {
352
348
  merge: [
353
349
  { var: "state" },
354
350
  {
355
351
  status: "FULFILLED",
356
- fulfilledAt: { var: "$timestamp" },
352
+ fulfilledAt: { var: "$ordinal" },
357
353
  trackingInfo: { var: "event.trackingInfo" },
358
354
  },
359
355
  ],
@@ -369,7 +365,7 @@ export const marketGroupBuyDef = defineFiberApp({
369
365
  {
370
366
  "<": [{ var: "state.totalQuantity" }, { var: "state.minQuantity" }],
371
367
  },
372
- { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
368
+ { ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
373
369
  ],
374
370
  },
375
371
  effect: {
@@ -377,7 +373,7 @@ export const marketGroupBuyDef = defineFiberApp({
377
373
  { var: "state" },
378
374
  {
379
375
  status: "REFUNDED",
380
- refundedAt: { var: "$timestamp" },
376
+ refundedAt: { var: "$ordinal" },
381
377
  reason: "threshold_not_met",
382
378
  },
383
379
  ],
@@ -393,12 +389,14 @@ export const marketGroupBuyDef = defineFiberApp({
393
389
  {
394
390
  ">": [
395
391
  {
396
- size: {
397
- filter: [
398
- { var: "state.orders" },
399
- { "===": [{ var: "buyer" }, { var: "event.agent" }] },
400
- ],
401
- },
392
+ length: [
393
+ {
394
+ filter: [
395
+ { var: "state.orders" },
396
+ { "===": [{ var: "buyer" }, { var: "event.agent" }] },
397
+ ],
398
+ },
399
+ ],
402
400
  },
403
401
  0,
404
402
  ],
@@ -1,4 +1,5 @@
1
1
  import { defineFiberApp } from "../../../schema/fiber-app.js";
2
+ import { signerIsParty, signerInSet } from "../../../schema/guards.js";
2
3
  /**
3
4
  * Binary or multi-outcome prediction market with oracle resolution and position staking.
4
5
  */
@@ -15,13 +16,18 @@ export const marketPredictionDef = defineFiberApp({
15
16
  },
16
17
  },
17
18
  createSchema: {
18
- required: ["creator", "outcomes", "oracles", "quorum"],
19
+ required: ["creator", "outcomes", "oracles", "quorum", "arbiter"],
19
20
  properties: {
20
21
  creator: {
21
22
  type: "address",
22
23
  description: "DAG address of the market creator",
23
24
  immutable: true,
24
25
  },
26
+ arbiter: {
27
+ type: "address",
28
+ description: "DAG address of the arbiter authorized to rule on a disputed resolution",
29
+ immutable: true,
30
+ },
25
31
  outcomes: {
26
32
  type: "array",
27
33
  description: "Valid outcome identifiers",
@@ -44,6 +50,7 @@ export const marketPredictionDef = defineFiberApp({
44
50
  properties: {
45
51
  status: { type: "string", computed: true },
46
52
  creator: { type: "address", immutable: true },
53
+ arbiter: { type: "address", immutable: true },
47
54
  outcomes: { type: "array", immutable: true },
48
55
  oracles: { type: "array", immutable: true },
49
56
  quorum: { type: "number", immutable: true },
@@ -80,7 +87,6 @@ export const marketPredictionDef = defineFiberApp({
80
87
  },
81
88
  finalize: {
82
89
  description: "Finalize market after quorum reached",
83
- properties: { outcome: { type: "string" } },
84
90
  },
85
91
  dispute: {
86
92
  description: "Dispute the resolution",
@@ -93,8 +99,7 @@ export const marketPredictionDef = defineFiberApp({
93
99
  ruling: {
94
100
  description: "Judicial ruling on dispute",
95
101
  properties: {
96
- judicialRuling: { type: "boolean" },
97
- outcome: { type: "string" },
102
+ finalOutcome: { type: "string" },
98
103
  rulingId: { type: "string" },
99
104
  },
100
105
  },
@@ -184,13 +189,13 @@ export const marketPredictionDef = defineFiberApp({
184
189
  from: "PROPOSED",
185
190
  to: "OPEN",
186
191
  eventName: "open",
187
- guard: { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
192
+ guard: signerIsParty("state.creator"),
188
193
  effect: {
189
194
  merge: [
190
195
  { var: "state" },
191
196
  {
192
197
  status: "OPEN",
193
- openedAt: { var: "$timestamp" },
198
+ openedAt: { var: "$ordinal" },
194
199
  positions: {},
195
200
  totalPool: 0,
196
201
  },
@@ -202,13 +207,13 @@ export const marketPredictionDef = defineFiberApp({
202
207
  from: "PROPOSED",
203
208
  to: "CANCELLED",
204
209
  eventName: "cancel",
205
- guard: { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
210
+ guard: signerIsParty("state.creator"),
206
211
  effect: {
207
212
  merge: [
208
213
  { var: "state" },
209
214
  {
210
215
  status: "CANCELLED",
211
- cancelledAt: { var: "$timestamp" },
216
+ cancelledAt: { var: "$ordinal" },
212
217
  reason: { var: "event.reason" },
213
218
  },
214
219
  ],
@@ -226,7 +231,7 @@ export const marketPredictionDef = defineFiberApp({
226
231
  {
227
232
  or: [
228
233
  { "!": [{ var: "state.deadline" }] },
229
- { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
234
+ { "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
230
235
  ],
231
236
  },
232
237
  ],
@@ -263,11 +268,11 @@ export const marketPredictionDef = defineFiberApp({
263
268
  eventName: "close",
264
269
  guard: {
265
270
  or: [
266
- { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
271
+ signerIsParty("state.creator"),
267
272
  {
268
273
  and: [
269
274
  { var: "state.deadline" },
270
- { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
275
+ { ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
271
276
  ],
272
277
  },
273
278
  ],
@@ -275,7 +280,7 @@ export const marketPredictionDef = defineFiberApp({
275
280
  effect: {
276
281
  merge: [
277
282
  { var: "state" },
278
- { status: "CLOSED", closedAt: { var: "$timestamp" } },
283
+ { status: "CLOSED", closedAt: { var: "$ordinal" } },
279
284
  ],
280
285
  },
281
286
  dependencies: [],
@@ -284,7 +289,7 @@ export const marketPredictionDef = defineFiberApp({
284
289
  from: "CLOSED",
285
290
  to: "RESOLVING",
286
291
  eventName: "submit_resolution",
287
- guard: { in: [{ var: "event.agent" }, { var: "state.oracles" }] },
292
+ guard: signerInSet("state.oracles"),
288
293
  effect: {
289
294
  merge: [
290
295
  { var: "state" },
@@ -295,7 +300,7 @@ export const marketPredictionDef = defineFiberApp({
295
300
  oracle: { var: "event.agent" },
296
301
  outcome: { var: "event.outcome" },
297
302
  proof: { var: "event.proof" },
298
- submittedAt: { var: "$timestamp" },
303
+ submittedAt: { var: "$ordinal" },
299
304
  },
300
305
  ],
301
306
  },
@@ -309,7 +314,7 @@ export const marketPredictionDef = defineFiberApp({
309
314
  eventName: "submit_resolution",
310
315
  guard: {
311
316
  and: [
312
- { in: [{ var: "event.agent" }, { var: "state.oracles" }] },
317
+ signerInSet("state.oracles"),
313
318
  {
314
319
  "!": [
315
320
  {
@@ -334,7 +339,7 @@ export const marketPredictionDef = defineFiberApp({
334
339
  oracle: { var: "event.agent" },
335
340
  outcome: { var: "event.outcome" },
336
341
  proof: { var: "event.proof" },
337
- submittedAt: { var: "$timestamp" },
342
+ submittedAt: { var: "$ordinal" },
338
343
  },
339
344
  ],
340
345
  ],
@@ -348,16 +353,26 @@ export const marketPredictionDef = defineFiberApp({
348
353
  from: "RESOLVING",
349
354
  to: "SETTLED",
350
355
  eventName: "finalize",
356
+ // authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
351
357
  guard: {
352
- ">=": [{ size: { var: "state.resolutions" } }, { var: "state.quorum" }],
358
+ and: [
359
+ signerInSet("state.oracles"),
360
+ {
361
+ ">=": [
362
+ { count: { var: "state.resolutions" } },
363
+ { var: "state.quorum" },
364
+ ],
365
+ },
366
+ ],
353
367
  },
354
368
  effect: {
355
369
  merge: [
356
370
  { var: "state" },
357
371
  {
358
372
  status: "SETTLED",
359
- settledAt: { var: "$timestamp" },
360
- finalOutcome: { var: "event.outcome" },
373
+ settledAt: { var: "$ordinal" },
374
+ // finalOutcome derives from the quorum-agreed resolution, not a raw event field
375
+ finalOutcome: { var: "state.resolutions.0.outcome" },
361
376
  claims: [],
362
377
  },
363
378
  ],
@@ -373,12 +388,14 @@ export const marketPredictionDef = defineFiberApp({
373
388
  {
374
389
  ">": [
375
390
  {
376
- size: {
377
- filter: [
378
- { var: "state.positions" },
379
- { "===": [{ var: "agent" }, { var: "event.agent" }] },
380
- ],
381
- },
391
+ length: [
392
+ {
393
+ filter: [
394
+ { var: "state.positions" },
395
+ { "===": [{ var: "agent" }, { var: "event.agent" }] },
396
+ ],
397
+ },
398
+ ],
382
399
  },
383
400
  0,
384
401
  ],
@@ -391,7 +408,7 @@ export const marketPredictionDef = defineFiberApp({
391
408
  { var: "state" },
392
409
  {
393
410
  status: "DISPUTED",
394
- disputedAt: { var: "$timestamp" },
411
+ disputedAt: { var: "$ordinal" },
395
412
  disputedBy: { var: "event.agent" },
396
413
  disputeStake: { var: "event.stake" },
397
414
  disputeReason: { var: "event.reason" },
@@ -404,14 +421,20 @@ export const marketPredictionDef = defineFiberApp({
404
421
  from: "DISPUTED",
405
422
  to: "SETTLED",
406
423
  eventName: "ruling",
407
- guard: { var: "event.judicialRuling" },
424
+ // authority gate — an ARBITER/SLASHER attestation check layers on additively when the identity registry lands (see docs/design/app-hardening-identity-integration.md §4.2)
425
+ guard: {
426
+ and: [
427
+ signerIsParty("state.arbiter"),
428
+ { in: [{ var: "event.finalOutcome" }, { var: "state.outcomes" }] },
429
+ ],
430
+ },
408
431
  effect: {
409
432
  merge: [
410
433
  { var: "state" },
411
434
  {
412
435
  status: "SETTLED",
413
- settledAt: { var: "$timestamp" },
414
- finalOutcome: { var: "event.outcome" },
436
+ settledAt: { var: "$ordinal" },
437
+ finalOutcome: { var: "event.finalOutcome" },
415
438
  rulingId: { var: "event.rulingId" },
416
439
  claims: [],
417
440
  },
@@ -426,12 +449,14 @@ export const marketPredictionDef = defineFiberApp({
426
449
  guard: {
427
450
  ">=": [
428
451
  {
429
- size: {
430
- filter: [
431
- { var: "state.resolutions" },
432
- { "===": [{ var: "outcome" }, "INVALID"] },
433
- ],
434
- },
452
+ length: [
453
+ {
454
+ filter: [
455
+ { var: "state.resolutions" },
456
+ { "===": [{ var: "outcome" }, "INVALID"] },
457
+ ],
458
+ },
459
+ ],
435
460
  },
436
461
  { var: "state.quorum" },
437
462
  ],
@@ -441,7 +466,7 @@ export const marketPredictionDef = defineFiberApp({
441
466
  { var: "state" },
442
467
  {
443
468
  status: "REFUNDED",
444
- refundedAt: { var: "$timestamp" },
469
+ refundedAt: { var: "$ordinal" },
445
470
  reason: "oracle_invalidation",
446
471
  },
447
472
  ],
@@ -457,22 +482,24 @@ export const marketPredictionDef = defineFiberApp({
457
482
  {
458
483
  ">": [
459
484
  {
460
- size: {
461
- filter: [
462
- { var: "state.positions" },
463
- {
464
- and: [
465
- { "===": [{ var: "agent" }, { var: "event.agent" }] },
466
- {
467
- "===": [
468
- { var: "outcome" },
469
- { var: "state.finalOutcome" },
470
- ],
471
- },
472
- ],
473
- },
474
- ],
475
- },
485
+ length: [
486
+ {
487
+ filter: [
488
+ { var: "state.positions" },
489
+ {
490
+ and: [
491
+ { "===": [{ var: "agent" }, { var: "event.agent" }] },
492
+ {
493
+ "===": [
494
+ { var: "outcome" },
495
+ { var: "state.finalOutcome" },
496
+ ],
497
+ },
498
+ ],
499
+ },
500
+ ],
501
+ },
502
+ ],
476
503
  },
477
504
  0,
478
505
  ],
@@ -500,7 +527,7 @@ export const marketPredictionDef = defineFiberApp({
500
527
  {
501
528
  agent: { var: "event.agent" },
502
529
  amount: { var: "event.amount" },
503
- claimedAt: { var: "$timestamp" },
530
+ claimedAt: { var: "$ordinal" },
504
531
  },
505
532
  ],
506
533
  ],
@@ -88,7 +88,7 @@ export const marketUniversalDef = defineFiberApp({
88
88
  effect: {
89
89
  merge: [
90
90
  { var: "state" },
91
- { status: "OPEN", openedAt: { var: "$timestamp" } },
91
+ { status: "OPEN", openedAt: { var: "$ordinal" } },
92
92
  ],
93
93
  },
94
94
  dependencies: [],
@@ -101,7 +101,7 @@ export const marketUniversalDef = defineFiberApp({
101
101
  effect: {
102
102
  merge: [
103
103
  { var: "state" },
104
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
104
+ { status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
105
105
  ],
106
106
  },
107
107
  dependencies: [],
@@ -131,7 +131,7 @@ export const marketUniversalDef = defineFiberApp({
131
131
  effect: {
132
132
  merge: [
133
133
  { var: "state" },
134
- { status: "CLOSED", closedAt: { var: "$timestamp" } },
134
+ { status: "CLOSED", closedAt: { var: "$ordinal" } },
135
135
  ],
136
136
  },
137
137
  dependencies: [],
@@ -144,7 +144,7 @@ export const marketUniversalDef = defineFiberApp({
144
144
  effect: {
145
145
  merge: [
146
146
  { var: "state" },
147
- { status: "SETTLED", settledAt: { var: "$timestamp" } },
147
+ { status: "SETTLED", settledAt: { var: "$ordinal" } },
148
148
  ],
149
149
  },
150
150
  dependencies: [],
@@ -157,7 +157,7 @@ export const marketUniversalDef = defineFiberApp({
157
157
  effect: {
158
158
  merge: [
159
159
  { var: "state" },
160
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
160
+ { status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
161
161
  ],
162
162
  },
163
163
  dependencies: [],