@ottochain/sdk 2.3.0 → 2.5.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 (287) hide show
  1. package/dist/cjs/apps/compute/index.js +33 -0
  2. package/dist/cjs/apps/compute/state-machines/compute-rule110.js +164 -0
  3. package/dist/cjs/apps/compute/state-machines/index.js +9 -0
  4. package/dist/cjs/apps/contracts/index.js +16 -9
  5. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +134 -161
  6. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +192 -170
  7. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
  8. package/dist/cjs/apps/corporate/index.js +2 -2
  9. package/dist/cjs/apps/corporate/state-machines/corp-board.js +500 -456
  10. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +487 -361
  11. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +769 -576
  12. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +567 -557
  13. package/dist/cjs/apps/governance/index.js +21 -21
  14. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +188 -209
  15. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +181 -228
  16. package/dist/cjs/apps/governance/state-machines/dao-single.js +105 -88
  17. package/dist/cjs/apps/governance/state-machines/dao-token.js +199 -227
  18. package/dist/cjs/apps/governance/state-machines/governance-simple.js +231 -231
  19. package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
  20. package/dist/cjs/apps/identity/constants.js +55 -22
  21. package/dist/cjs/apps/identity/index.js +28 -12
  22. package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
  23. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +158 -173
  24. package/dist/cjs/apps/identity/state-machines/identity-registry.js +262 -0
  25. package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
  26. package/dist/cjs/apps/identity/state-machines/index.js +3 -1
  27. package/dist/cjs/apps/index.js +22 -8
  28. package/dist/cjs/apps/lending/assets.js +247 -0
  29. package/dist/cjs/apps/lending/credit-scoring.js +87 -0
  30. package/dist/cjs/apps/lending/eligibility.js +105 -0
  31. package/dist/cjs/apps/lending/index.js +91 -0
  32. package/dist/cjs/apps/lending/state-machines/index.js +9 -0
  33. package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +433 -0
  34. package/dist/cjs/apps/markets/index.js +22 -12
  35. package/dist/cjs/apps/markets/state-machines/market-auction.js +116 -134
  36. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +131 -141
  37. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +163 -184
  38. package/dist/cjs/apps/markets/state-machines/market-prediction.js +226 -233
  39. package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
  40. package/dist/cjs/apps/oracles/index.js +3 -3
  41. package/dist/cjs/apps/privacy/index.js +67 -0
  42. package/dist/cjs/apps/privacy/state-machines/index.js +17 -0
  43. package/dist/cjs/apps/privacy/state-machines/mixer-ddhRing.js +286 -0
  44. package/dist/cjs/apps/privacy/state-machines/note-pool.js +476 -0
  45. package/dist/cjs/apps/staked-pool/assets.js +103 -0
  46. package/dist/cjs/apps/staked-pool/base.js +498 -0
  47. package/dist/cjs/apps/staked-pool/consumer.js +55 -0
  48. package/dist/cjs/apps/staked-pool/index.js +83 -0
  49. package/dist/cjs/apps/staked-pool/state-machines/index.js +12 -0
  50. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-base.js +49 -0
  51. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-oracle.js +131 -0
  52. package/dist/cjs/errors.js +3 -3
  53. package/dist/cjs/generated/google/protobuf/struct.js +5 -5
  54. package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
  55. package/dist/cjs/generated/index.js +11 -7
  56. package/dist/cjs/generated/openapi.js +6 -0
  57. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +51 -51
  58. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +20 -21
  59. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +14 -14
  60. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +5 -5
  61. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +125 -131
  62. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +108 -108
  63. package/dist/cjs/generated/ottochain/v1/common.js +5 -5
  64. package/dist/cjs/generated/ottochain/v1/fiber.js +44 -6
  65. package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
  66. package/dist/cjs/generated/ottochain/v1/records.js +1 -1
  67. package/dist/cjs/index.js +58 -7
  68. package/dist/cjs/openapi.js +2 -0
  69. package/dist/cjs/ottochain/drop-nulls.js +1 -2
  70. package/dist/cjs/ottochain/genesis-manifest.js +17 -11
  71. package/dist/cjs/ottochain/index.js +23 -13
  72. package/dist/cjs/ottochain/metagraph-client.js +81 -16
  73. package/dist/cjs/ottochain/snapshot.js +13 -16
  74. package/dist/cjs/ottochain/transaction.js +67 -14
  75. package/dist/cjs/ottochain/types.js +16 -2
  76. package/dist/cjs/privacy/index.js +14 -0
  77. package/dist/cjs/privacy/sealed-bid.js +213 -0
  78. package/dist/cjs/privacy/shield-app.js +131 -0
  79. package/dist/cjs/schema/effects.js +156 -0
  80. package/dist/cjs/schema/fiber-app.js +150 -15
  81. package/dist/cjs/schema/guard-lint.js +343 -0
  82. package/dist/cjs/schema/guards.js +246 -0
  83. package/dist/cjs/signing.js +80 -0
  84. package/dist/cjs/templates/asset-policy.js +190 -0
  85. package/dist/cjs/templates/index.js +86 -0
  86. package/dist/cjs/templates/machine.js +130 -0
  87. package/dist/cjs/templates/migration.js +39 -0
  88. package/dist/cjs/templates/state-shape.js +38 -0
  89. package/dist/cjs/types.js +2 -3
  90. package/dist/cjs/validation.js +9 -11
  91. package/dist/cjs/verify.js +9 -4
  92. package/dist/cjs/zk/commit.js +53 -0
  93. package/dist/cjs/zk/guard.js +107 -0
  94. package/dist/cjs/zk/index.js +48 -0
  95. package/dist/cjs/zk/preimage.js +37 -0
  96. package/dist/cjs/zk/prover.js +87 -0
  97. package/dist/cjs/zk/registry.js +62 -0
  98. package/dist/cjs/zk/types.js +28 -0
  99. package/dist/cjs/zk/witness.js +19 -0
  100. package/dist/esm/apps/compute/index.js +29 -0
  101. package/dist/esm/apps/compute/state-machines/compute-rule110.js +161 -0
  102. package/dist/esm/apps/compute/state-machines/index.js +5 -0
  103. package/dist/esm/apps/contracts/index.js +9 -5
  104. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +135 -162
  105. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +193 -171
  106. package/dist/esm/apps/contracts/state-machines/contract-universal.js +47 -59
  107. package/dist/esm/apps/corporate/index.js +2 -2
  108. package/dist/esm/apps/corporate/state-machines/corp-board.js +501 -457
  109. package/dist/esm/apps/corporate/state-machines/corp-entity.js +488 -362
  110. package/dist/esm/apps/corporate/state-machines/corp-securities.js +770 -577
  111. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +568 -558
  112. package/dist/esm/apps/governance/index.js +10 -10
  113. package/dist/esm/apps/governance/state-machines/dao-multisig.js +189 -210
  114. package/dist/esm/apps/governance/state-machines/dao-reputation.js +182 -229
  115. package/dist/esm/apps/governance/state-machines/dao-single.js +106 -89
  116. package/dist/esm/apps/governance/state-machines/dao-token.js +200 -228
  117. package/dist/esm/apps/governance/state-machines/governance-simple.js +232 -232
  118. package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
  119. package/dist/esm/apps/identity/constants.js +52 -21
  120. package/dist/esm/apps/identity/index.js +14 -9
  121. package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
  122. package/dist/esm/apps/identity/state-machines/identity-oracle.js +159 -174
  123. package/dist/esm/apps/identity/state-machines/identity-registry.js +259 -0
  124. package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
  125. package/dist/esm/apps/identity/state-machines/index.js +1 -0
  126. package/dist/esm/apps/index.js +9 -5
  127. package/dist/esm/apps/lending/assets.js +231 -0
  128. package/dist/esm/apps/lending/credit-scoring.js +81 -0
  129. package/dist/esm/apps/lending/eligibility.js +99 -0
  130. package/dist/esm/apps/lending/index.js +69 -0
  131. package/dist/esm/apps/lending/state-machines/index.js +5 -0
  132. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +430 -0
  133. package/dist/esm/apps/markets/index.js +11 -7
  134. package/dist/esm/apps/markets/state-machines/market-auction.js +117 -135
  135. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +132 -142
  136. package/dist/esm/apps/markets/state-machines/market-group-buy.js +164 -185
  137. package/dist/esm/apps/markets/state-machines/market-prediction.js +227 -234
  138. package/dist/esm/apps/markets/state-machines/market-universal.js +66 -81
  139. package/dist/esm/apps/oracles/index.js +3 -3
  140. package/dist/esm/apps/privacy/index.js +56 -0
  141. package/dist/esm/apps/privacy/state-machines/index.js +6 -0
  142. package/dist/esm/apps/privacy/state-machines/mixer-ddhRing.js +282 -0
  143. package/dist/esm/apps/privacy/state-machines/note-pool.js +470 -0
  144. package/dist/esm/apps/staked-pool/assets.js +91 -0
  145. package/dist/esm/apps/staked-pool/base.js +493 -0
  146. package/dist/esm/apps/staked-pool/consumer.js +49 -0
  147. package/dist/esm/apps/staked-pool/index.js +60 -0
  148. package/dist/esm/apps/staked-pool/state-machines/index.js +6 -0
  149. package/dist/esm/apps/staked-pool/state-machines/staked-pool-base.js +46 -0
  150. package/dist/esm/apps/staked-pool/state-machines/staked-pool-oracle.js +127 -0
  151. package/dist/esm/generated/google/protobuf/struct.js +1 -1
  152. package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
  153. package/dist/esm/generated/index.js +9 -5
  154. package/dist/esm/generated/openapi.js +5 -0
  155. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +47 -47
  156. package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  157. package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
  158. package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +1 -1
  159. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +115 -121
  160. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +101 -101
  161. package/dist/esm/generated/ottochain/v1/common.js +1 -1
  162. package/dist/esm/generated/ottochain/v1/fiber.js +40 -2
  163. package/dist/esm/generated/ottochain/v1/messages.js +1 -1
  164. package/dist/esm/generated/ottochain/v1/records.js +1 -1
  165. package/dist/esm/index.js +28 -3
  166. package/dist/esm/openapi.js +1 -0
  167. package/dist/esm/ottochain/genesis-manifest.js +15 -9
  168. package/dist/esm/ottochain/index.js +2 -3
  169. package/dist/esm/ottochain/metagraph-client.js +81 -16
  170. package/dist/esm/ottochain/snapshot.js +6 -8
  171. package/dist/esm/ottochain/transaction.js +51 -3
  172. package/dist/esm/ottochain/types.js +15 -1
  173. package/dist/esm/privacy/index.js +6 -0
  174. package/dist/esm/privacy/sealed-bid.js +209 -0
  175. package/dist/esm/privacy/shield-app.js +127 -0
  176. package/dist/esm/schema/effects.js +145 -0
  177. package/dist/esm/schema/fiber-app.js +139 -8
  178. package/dist/esm/schema/guard-lint.js +337 -0
  179. package/dist/esm/schema/guards.js +228 -0
  180. package/dist/esm/signing.js +74 -0
  181. package/dist/esm/templates/asset-policy.js +182 -0
  182. package/dist/esm/templates/index.js +41 -0
  183. package/dist/esm/templates/machine.js +125 -0
  184. package/dist/esm/templates/migration.js +34 -0
  185. package/dist/esm/templates/state-shape.js +34 -0
  186. package/dist/esm/validation.js +1 -3
  187. package/dist/esm/verify.js +8 -2
  188. package/dist/esm/zk/commit.js +44 -0
  189. package/dist/esm/zk/guard.js +99 -0
  190. package/dist/esm/zk/index.js +19 -0
  191. package/dist/esm/zk/preimage.js +30 -0
  192. package/dist/esm/zk/prover.js +82 -0
  193. package/dist/esm/zk/registry.js +55 -0
  194. package/dist/esm/zk/types.js +25 -0
  195. package/dist/esm/zk/witness.js +15 -0
  196. package/dist/types/apps/compute/index.d.ts +176 -0
  197. package/dist/types/apps/compute/state-machines/compute-rule110.d.ts +157 -0
  198. package/dist/types/apps/compute/state-machines/index.d.ts +5 -0
  199. package/dist/types/apps/contracts/index.d.ts +81 -221
  200. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +23 -98
  201. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +49 -115
  202. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
  203. package/dist/types/apps/corporate/index.d.ts +1176 -440
  204. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +271 -135
  205. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +279 -74
  206. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +373 -149
  207. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +252 -80
  208. package/dist/types/apps/governance/index.d.ts +368 -470
  209. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -107
  210. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +61 -85
  211. package/dist/types/apps/governance/state-machines/dao-single.d.ts +25 -47
  212. package/dist/types/apps/governance/state-machines/dao-token.d.ts +79 -68
  213. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +95 -125
  214. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +6 -6
  215. package/dist/types/apps/identity/constants.d.ts +33 -5
  216. package/dist/types/apps/identity/index.d.ts +415 -131
  217. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
  218. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +27 -98
  219. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
  220. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
  221. package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
  222. package/dist/types/apps/index.d.ts +9 -5
  223. package/dist/types/apps/lending/assets.d.ts +258 -0
  224. package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
  225. package/dist/types/apps/lending/eligibility.d.ts +83 -0
  226. package/dist/types/apps/lending/index.d.ts +556 -0
  227. package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
  228. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +536 -0
  229. package/dist/types/apps/markets/index.d.ts +181 -276
  230. package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -49
  231. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +35 -53
  232. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +35 -61
  233. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +65 -86
  234. package/dist/types/apps/markets/state-machines/market-universal.d.ts +12 -12
  235. package/dist/types/apps/oracles/index.d.ts +1 -1
  236. package/dist/types/apps/privacy/index.d.ts +328 -0
  237. package/dist/types/apps/privacy/state-machines/index.d.ts +6 -0
  238. package/dist/types/apps/privacy/state-machines/mixer-ddhRing.d.ts +337 -0
  239. package/dist/types/apps/privacy/state-machines/note-pool.d.ts +196 -0
  240. package/dist/types/apps/staked-pool/assets.d.ts +53 -0
  241. package/dist/types/apps/staked-pool/base.d.ts +80 -0
  242. package/dist/types/apps/staked-pool/consumer.d.ts +29 -0
  243. package/dist/types/apps/staked-pool/index.d.ts +51 -0
  244. package/dist/types/apps/staked-pool/state-machines/index.d.ts +6 -0
  245. package/dist/types/apps/staked-pool/state-machines/staked-pool-base.d.ts +8 -0
  246. package/dist/types/apps/staked-pool/state-machines/staked-pool-oracle.d.ts +34 -0
  247. package/dist/types/generated/index.d.ts +5 -5
  248. package/dist/types/generated/openapi.d.ts +1270 -0
  249. package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
  250. package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
  251. package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
  252. package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
  253. package/dist/types/index.d.ts +7 -3
  254. package/dist/types/openapi.d.ts +24 -0
  255. package/dist/types/ottochain/genesis-manifest.d.ts +11 -5
  256. package/dist/types/ottochain/index.d.ts +5 -6
  257. package/dist/types/ottochain/metagraph-client.d.ts +49 -7
  258. package/dist/types/ottochain/snapshot.d.ts +6 -6
  259. package/dist/types/ottochain/transaction.d.ts +41 -1
  260. package/dist/types/ottochain/types.d.ts +336 -31
  261. package/dist/types/privacy/index.d.ts +6 -0
  262. package/dist/types/privacy/sealed-bid.d.ts +348 -0
  263. package/dist/types/privacy/shield-app.d.ts +48 -0
  264. package/dist/types/schema/effects.d.ts +141 -0
  265. package/dist/types/schema/fiber-app.d.ts +282 -2
  266. package/dist/types/schema/guard-lint.d.ts +111 -0
  267. package/dist/types/schema/guards.d.ts +146 -0
  268. package/dist/types/signing.d.ts +45 -0
  269. package/dist/types/templates/asset-policy.d.ts +119 -0
  270. package/dist/types/templates/index.d.ts +26 -0
  271. package/dist/types/templates/machine.d.ts +139 -0
  272. package/dist/types/templates/migration.d.ts +34 -0
  273. package/dist/types/templates/state-shape.d.ts +30 -0
  274. package/dist/types/validation.d.ts +22 -217
  275. package/dist/types/verify.d.ts +4 -0
  276. package/dist/types/zk/commit.d.ts +28 -0
  277. package/dist/types/zk/guard.d.ts +46 -0
  278. package/dist/types/zk/index.d.ts +19 -0
  279. package/dist/types/zk/preimage.d.ts +10 -0
  280. package/dist/types/zk/prover.d.ts +34 -0
  281. package/dist/types/zk/registry.d.ts +34 -0
  282. package/dist/types/zk/types.d.ts +33 -0
  283. package/dist/types/zk/witness.d.ts +40 -0
  284. package/package.json +47 -15
  285. package/dist/cjs/ottochain/normalize.js +0 -186
  286. package/dist/esm/ottochain/normalize.js +0 -179
  287. package/dist/types/ottochain/normalize.d.ts +0 -79
@@ -2,198 +2,203 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.marketPredictionDef = void 0;
4
4
  const fiber_app_js_1 = require("../../../schema/fiber-app.js");
5
+ const guards_js_1 = require("../../../schema/guards.js");
5
6
  /**
6
7
  * Binary or multi-outcome prediction market with oracle resolution and position staking.
7
8
  */
8
9
  exports.marketPredictionDef = (0, fiber_app_js_1.defineFiberApp)({
9
10
  metadata: {
10
- name: "MarketPrediction",
11
- app: "markets",
12
- type: "prediction",
13
- version: "1.0.0",
14
- description: "Binary or multi-outcome prediction market with oracle resolution and position staking",
11
+ name: 'MarketPrediction',
12
+ app: 'markets',
13
+ type: 'prediction',
14
+ version: '1.0.0',
15
+ description: 'Binary or multi-outcome prediction market with oracle resolution and position staking',
15
16
  crossReferences: {
16
- oracleId: "Links to IdentityOracle that resolves the outcome",
17
+ oracleId: 'Links to IdentityOracle that resolves the outcome',
17
18
  creatorIdentityId: "Links to creator's IdentityAgent",
18
19
  },
19
20
  },
20
21
  createSchema: {
21
- required: ["creator", "outcomes", "oracles", "quorum"],
22
+ required: ['creator', 'outcomes', 'oracles', 'quorum', 'arbiter'],
22
23
  properties: {
23
24
  creator: {
24
- type: "address",
25
- description: "DAG address of the market creator",
25
+ type: 'address',
26
+ description: 'DAG address of the market creator',
27
+ immutable: true,
28
+ },
29
+ arbiter: {
30
+ type: 'address',
31
+ description: 'DAG address of the arbiter authorized to rule on a disputed resolution',
26
32
  immutable: true,
27
33
  },
28
34
  outcomes: {
29
- type: "array",
30
- description: "Valid outcome identifiers",
35
+ type: 'array',
36
+ description: 'Valid outcome identifiers',
31
37
  immutable: true,
32
38
  },
33
39
  oracles: {
34
- type: "array",
35
- description: "Authorized oracle addresses",
40
+ type: 'array',
41
+ description: 'Authorized oracle addresses',
36
42
  immutable: true,
37
43
  },
38
44
  quorum: {
39
- type: "number",
40
- description: "Minimum oracle submissions needed to resolve",
45
+ type: 'number',
46
+ description: 'Minimum oracle submissions needed to resolve',
41
47
  immutable: true,
42
48
  },
43
- deadline: { type: "timestamp", description: "Optional trading deadline" },
49
+ deadline: { type: 'timestamp', description: 'Optional trading deadline' },
44
50
  },
45
51
  },
46
52
  stateSchema: {
47
53
  properties: {
48
- status: { type: "string", computed: true },
49
- creator: { type: "address", immutable: true },
50
- outcomes: { type: "array", immutable: true },
51
- oracles: { type: "array", immutable: true },
52
- quorum: { type: "number", immutable: true },
53
- deadline: { type: "timestamp" },
54
- positions: { type: "object", computed: true },
55
- totalPool: { type: "number", computed: true },
56
- resolutions: { type: "array", computed: true },
57
- finalOutcome: { type: "string", computed: true },
58
- claims: { type: "array", computed: true },
54
+ status: { type: 'string', computed: true },
55
+ creator: { type: 'address', immutable: true },
56
+ arbiter: { type: 'address', immutable: true },
57
+ outcomes: { type: 'array', immutable: true },
58
+ oracles: { type: 'array', immutable: true },
59
+ quorum: { type: 'number', immutable: true },
60
+ deadline: { type: 'timestamp' },
61
+ positions: { type: 'object', computed: true },
62
+ totalPool: { type: 'number', computed: true },
63
+ resolutions: { type: 'array', computed: true },
64
+ finalOutcome: { type: 'string', computed: true },
65
+ claims: { type: 'array', computed: true },
59
66
  },
60
67
  },
61
68
  eventSchemas: {
62
- open: { description: "Open the market for trading" },
69
+ open: { description: 'Open the market for trading' },
63
70
  cancel: {
64
- description: "Cancel the market before opening",
65
- properties: { reason: { type: "string" } },
71
+ description: 'Cancel the market before opening',
72
+ properties: { reason: { type: 'string' } },
66
73
  },
67
74
  take_position: {
68
- description: "Take a position on an outcome",
69
- required: ["outcome", "amount"],
75
+ description: 'Take a position on an outcome',
76
+ required: ['outcome', 'amount'],
70
77
  properties: {
71
- outcome: { type: "string" },
72
- amount: { type: "number", minimum: 0 },
78
+ outcome: { type: 'string' },
79
+ amount: { type: 'number', minimum: 0 },
73
80
  },
74
81
  },
75
- close: { description: "Close trading" },
82
+ close: { description: 'Close trading' },
76
83
  submit_resolution: {
77
- description: "Submit oracle resolution",
78
- required: ["outcome", "proof"],
84
+ description: 'Submit oracle resolution',
85
+ required: ['outcome', 'proof'],
79
86
  properties: {
80
- outcome: { type: "string" },
81
- proof: { type: "string" },
87
+ outcome: { type: 'string' },
88
+ proof: { type: 'string' },
82
89
  },
83
90
  },
84
91
  finalize: {
85
- description: "Finalize market after quorum reached",
86
- properties: { outcome: { type: "string" } },
92
+ description: 'Finalize market after quorum reached',
87
93
  },
88
94
  dispute: {
89
- description: "Dispute the resolution",
90
- required: ["stake"],
95
+ description: 'Dispute the resolution',
96
+ required: ['stake'],
91
97
  properties: {
92
- stake: { type: "number", minimum: 0 },
93
- reason: { type: "string" },
98
+ stake: { type: 'number', minimum: 0 },
99
+ reason: { type: 'string' },
94
100
  },
95
101
  },
96
102
  ruling: {
97
- description: "Judicial ruling on dispute",
103
+ description: 'Judicial ruling on dispute',
98
104
  properties: {
99
- judicialRuling: { type: "boolean" },
100
- outcome: { type: "string" },
101
- rulingId: { type: "string" },
105
+ finalOutcome: { type: 'string' },
106
+ rulingId: { type: 'string' },
102
107
  },
103
108
  },
104
- invalidate: { description: "Invalidate market by oracle consensus" },
109
+ invalidate: { description: 'Invalidate market by oracle consensus' },
105
110
  claim: {
106
- description: "Claim payout after settlement",
107
- properties: { amount: { type: "number" } },
111
+ description: 'Claim payout after settlement',
112
+ properties: { amount: { type: 'number' } },
108
113
  },
109
114
  },
110
115
  states: {
111
116
  PROPOSED: {
112
- id: "PROPOSED",
117
+ id: 'PROPOSED',
113
118
  isFinal: false,
114
119
  metadata: {
115
- label: "Proposed",
116
- description: "Market created but not yet open for trading",
117
- category: "initial",
120
+ label: 'Proposed',
121
+ description: 'Market created but not yet open for trading',
122
+ category: 'initial',
118
123
  },
119
124
  },
120
125
  OPEN: {
121
- id: "OPEN",
126
+ id: 'OPEN',
122
127
  isFinal: false,
123
128
  metadata: {
124
- label: "Open",
125
- description: "Accepting positions on outcomes",
126
- category: "active",
129
+ label: 'Open',
130
+ description: 'Accepting positions on outcomes',
131
+ category: 'active',
127
132
  },
128
133
  },
129
134
  CLOSED: {
130
- id: "CLOSED",
135
+ id: 'CLOSED',
131
136
  isFinal: false,
132
137
  metadata: {
133
- label: "Closed",
134
- description: "No more positions, awaiting resolution",
135
- category: "pending",
138
+ label: 'Closed',
139
+ description: 'No more positions, awaiting resolution',
140
+ category: 'pending',
136
141
  },
137
142
  },
138
143
  RESOLVING: {
139
- id: "RESOLVING",
144
+ id: 'RESOLVING',
140
145
  isFinal: false,
141
146
  metadata: {
142
- label: "Resolving",
143
- description: "Oracle(s) submitting resolution",
144
- category: "pending",
147
+ label: 'Resolving',
148
+ description: 'Oracle(s) submitting resolution',
149
+ category: 'pending',
145
150
  },
146
151
  },
147
152
  DISPUTED: {
148
- id: "DISPUTED",
153
+ id: 'DISPUTED',
149
154
  isFinal: false,
150
155
  metadata: {
151
- label: "Disputed",
152
- description: "Resolution challenged, awaiting arbitration",
153
- category: "pending",
156
+ label: 'Disputed',
157
+ description: 'Resolution challenged, awaiting arbitration',
158
+ category: 'pending',
154
159
  },
155
160
  },
156
161
  SETTLED: {
157
- id: "SETTLED",
162
+ id: 'SETTLED',
158
163
  isFinal: true,
159
164
  metadata: {
160
- label: "Settled",
161
- description: "Outcome finalized, payouts available",
162
- category: "terminal",
165
+ label: 'Settled',
166
+ description: 'Outcome finalized, payouts available',
167
+ category: 'terminal',
163
168
  },
164
169
  },
165
170
  REFUNDED: {
166
- id: "REFUNDED",
171
+ id: 'REFUNDED',
167
172
  isFinal: true,
168
173
  metadata: {
169
- label: "Refunded",
170
- description: "Market invalidated, all positions refunded",
171
- category: "terminal",
174
+ label: 'Refunded',
175
+ description: 'Market invalidated, all positions refunded',
176
+ category: 'terminal',
172
177
  },
173
178
  },
174
179
  CANCELLED: {
175
- id: "CANCELLED",
180
+ id: 'CANCELLED',
176
181
  isFinal: true,
177
182
  metadata: {
178
- label: "Cancelled",
179
- description: "Market cancelled before opening",
180
- category: "terminal",
183
+ label: 'Cancelled',
184
+ description: 'Market cancelled before opening',
185
+ category: 'terminal',
181
186
  },
182
187
  },
183
188
  },
184
- initialState: "PROPOSED",
189
+ initialState: 'PROPOSED',
185
190
  transitions: [
186
191
  {
187
- from: "PROPOSED",
188
- to: "OPEN",
189
- eventName: "open",
190
- guard: { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
192
+ from: 'PROPOSED',
193
+ to: 'OPEN',
194
+ eventName: 'open',
195
+ guard: (0, guards_js_1.signerIsParty)('state.creator'),
191
196
  effect: {
192
197
  merge: [
193
- { var: "state" },
198
+ { var: 'state' },
194
199
  {
195
- status: "OPEN",
196
- openedAt: { var: "$timestamp" },
200
+ status: 'OPEN',
201
+ openedAt: { var: '$ordinal' },
197
202
  positions: {},
198
203
  totalPool: 0,
199
204
  },
@@ -202,58 +207,51 @@ exports.marketPredictionDef = (0, fiber_app_js_1.defineFiberApp)({
202
207
  dependencies: [],
203
208
  },
204
209
  {
205
- from: "PROPOSED",
206
- to: "CANCELLED",
207
- eventName: "cancel",
208
- guard: { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
210
+ from: 'PROPOSED',
211
+ to: 'CANCELLED',
212
+ eventName: 'cancel',
213
+ guard: (0, guards_js_1.signerIsParty)('state.creator'),
209
214
  effect: {
210
215
  merge: [
211
- { var: "state" },
216
+ { var: 'state' },
212
217
  {
213
- status: "CANCELLED",
214
- cancelledAt: { var: "$timestamp" },
215
- reason: { var: "event.reason" },
218
+ status: 'CANCELLED',
219
+ cancelledAt: { var: '$ordinal' },
220
+ reason: { var: 'event.reason' },
216
221
  },
217
222
  ],
218
223
  },
219
224
  dependencies: [],
220
225
  },
221
226
  {
222
- from: "OPEN",
223
- to: "OPEN",
224
- eventName: "take_position",
227
+ from: 'OPEN',
228
+ to: 'OPEN',
229
+ eventName: 'take_position',
225
230
  guard: {
226
231
  and: [
227
- { ">": [{ var: "event.amount" }, 0] },
228
- { in: [{ var: "event.outcome" }, { var: "state.outcomes" }] },
232
+ { '>': [{ var: 'event.amount' }, 0] },
233
+ { in: [{ var: 'event.outcome' }, { var: 'state.outcomes' }] },
229
234
  {
230
- or: [
231
- { "!": [{ var: "state.deadline" }] },
232
- { "<=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
233
- ],
235
+ or: [{ '!': [{ var: 'state.deadline' }] }, { '<=': [{ var: '$ordinal' }, { var: 'state.deadline' }] }],
234
236
  },
235
237
  ],
236
238
  },
237
239
  effect: {
238
240
  merge: [
239
- { var: "state" },
241
+ { var: 'state' },
240
242
  {
241
243
  positions: {
242
244
  merge: [
243
- { var: "state.positions" },
245
+ { var: 'state.positions' },
244
246
  {
245
247
  __computed: {
246
- cat: [
247
- { var: "event.agent" },
248
- "_",
249
- { var: "event.outcome" },
250
- ],
248
+ cat: [{ var: 'event.agent' }, '_', { var: 'event.outcome' }],
251
249
  },
252
250
  },
253
251
  ],
254
252
  },
255
253
  totalPool: {
256
- "+": [{ var: "state.totalPool" }, { var: "event.amount" }],
254
+ '+': [{ var: 'state.totalPool' }, { var: 'event.amount' }],
257
255
  },
258
256
  },
259
257
  ],
@@ -261,44 +259,38 @@ exports.marketPredictionDef = (0, fiber_app_js_1.defineFiberApp)({
261
259
  dependencies: [],
262
260
  },
263
261
  {
264
- from: "OPEN",
265
- to: "CLOSED",
266
- eventName: "close",
262
+ from: 'OPEN',
263
+ to: 'CLOSED',
264
+ eventName: 'close',
267
265
  guard: {
268
266
  or: [
269
- { "===": [{ var: "event.agent" }, { var: "state.creator" }] },
267
+ (0, guards_js_1.signerIsParty)('state.creator'),
270
268
  {
271
- and: [
272
- { var: "state.deadline" },
273
- { ">=": [{ var: "$timestamp" }, { var: "state.deadline" }] },
274
- ],
269
+ and: [{ var: 'state.deadline' }, { '>=': [{ var: '$ordinal' }, { var: 'state.deadline' }] }],
275
270
  },
276
271
  ],
277
272
  },
278
273
  effect: {
279
- merge: [
280
- { var: "state" },
281
- { status: "CLOSED", closedAt: { var: "$timestamp" } },
282
- ],
274
+ merge: [{ var: 'state' }, { status: 'CLOSED', closedAt: { var: '$ordinal' } }],
283
275
  },
284
276
  dependencies: [],
285
277
  },
286
278
  {
287
- from: "CLOSED",
288
- to: "RESOLVING",
289
- eventName: "submit_resolution",
290
- guard: { in: [{ var: "event.agent" }, { var: "state.oracles" }] },
279
+ from: 'CLOSED',
280
+ to: 'RESOLVING',
281
+ eventName: 'submit_resolution',
282
+ guard: (0, guards_js_1.signerInSet)('state.oracles'),
291
283
  effect: {
292
284
  merge: [
293
- { var: "state" },
285
+ { var: 'state' },
294
286
  {
295
- status: "RESOLVING",
287
+ status: 'RESOLVING',
296
288
  resolutions: [
297
289
  {
298
- oracle: { var: "event.agent" },
299
- outcome: { var: "event.outcome" },
300
- proof: { var: "event.proof" },
301
- submittedAt: { var: "$timestamp" },
290
+ oracle: { var: 'event.agent' },
291
+ outcome: { var: 'event.outcome' },
292
+ proof: { var: 'event.proof' },
293
+ submittedAt: { var: '$ordinal' },
302
294
  },
303
295
  ],
304
296
  },
@@ -307,19 +299,16 @@ exports.marketPredictionDef = (0, fiber_app_js_1.defineFiberApp)({
307
299
  dependencies: [],
308
300
  },
309
301
  {
310
- from: "RESOLVING",
311
- to: "RESOLVING",
312
- eventName: "submit_resolution",
302
+ from: 'RESOLVING',
303
+ to: 'RESOLVING',
304
+ eventName: 'submit_resolution',
313
305
  guard: {
314
306
  and: [
315
- { in: [{ var: "event.agent" }, { var: "state.oracles" }] },
307
+ (0, guards_js_1.signerInSet)('state.oracles'),
316
308
  {
317
- "!": [
309
+ '!': [
318
310
  {
319
- in: [
320
- { var: "event.agent" },
321
- { map: [{ var: "state.resolutions" }, { var: "oracle" }] },
322
- ],
311
+ in: [{ var: 'event.agent' }, { map: [{ var: 'state.resolutions' }, { var: 'oracle' }] }],
323
312
  },
324
313
  ],
325
314
  },
@@ -327,17 +316,17 @@ exports.marketPredictionDef = (0, fiber_app_js_1.defineFiberApp)({
327
316
  },
328
317
  effect: {
329
318
  merge: [
330
- { var: "state" },
319
+ { var: 'state' },
331
320
  {
332
321
  resolutions: {
333
322
  cat: [
334
- { var: "state.resolutions" },
323
+ { var: 'state.resolutions' },
335
324
  [
336
325
  {
337
- oracle: { var: "event.agent" },
338
- outcome: { var: "event.outcome" },
339
- proof: { var: "event.proof" },
340
- submittedAt: { var: "$timestamp" },
326
+ oracle: { var: 'event.agent' },
327
+ outcome: { var: 'event.outcome' },
328
+ proof: { var: 'event.proof' },
329
+ submittedAt: { var: '$ordinal' },
341
330
  },
342
331
  ],
343
332
  ],
@@ -348,19 +337,26 @@ exports.marketPredictionDef = (0, fiber_app_js_1.defineFiberApp)({
348
337
  dependencies: [],
349
338
  },
350
339
  {
351
- from: "RESOLVING",
352
- to: "SETTLED",
353
- eventName: "finalize",
340
+ from: 'RESOLVING',
341
+ to: 'SETTLED',
342
+ eventName: 'finalize',
343
+ // 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)
354
344
  guard: {
355
- ">=": [{ size: { var: "state.resolutions" } }, { var: "state.quorum" }],
345
+ and: [
346
+ (0, guards_js_1.signerInSet)('state.oracles'),
347
+ {
348
+ '>=': [{ count: { var: 'state.resolutions' } }, { var: 'state.quorum' }],
349
+ },
350
+ ],
356
351
  },
357
352
  effect: {
358
353
  merge: [
359
- { var: "state" },
354
+ { var: 'state' },
360
355
  {
361
- status: "SETTLED",
362
- settledAt: { var: "$timestamp" },
363
- finalOutcome: { var: "event.outcome" },
356
+ status: 'SETTLED',
357
+ settledAt: { var: '$ordinal' },
358
+ // finalOutcome derives from the quorum-agreed resolution, not a raw event field
359
+ finalOutcome: { var: 'state.resolutions.0.outcome' },
364
360
  claims: [],
365
361
  },
366
362
  ],
@@ -368,54 +364,56 @@ exports.marketPredictionDef = (0, fiber_app_js_1.defineFiberApp)({
368
364
  dependencies: [],
369
365
  },
370
366
  {
371
- from: "RESOLVING",
372
- to: "DISPUTED",
373
- eventName: "dispute",
367
+ from: 'RESOLVING',
368
+ to: 'DISPUTED',
369
+ eventName: 'dispute',
374
370
  guard: {
375
371
  and: [
376
372
  {
377
- ">": [
373
+ '>': [
378
374
  {
379
- size: {
380
- filter: [
381
- { var: "state.positions" },
382
- { "===": [{ var: "agent" }, { var: "event.agent" }] },
383
- ],
384
- },
375
+ length: [
376
+ {
377
+ filter: [{ var: 'state.positions' }, { '===': [{ var: 'agent' }, { var: 'event.agent' }] }],
378
+ },
379
+ ],
385
380
  },
386
381
  0,
387
382
  ],
388
383
  },
389
- { var: "event.stake" },
384
+ { var: 'event.stake' },
390
385
  ],
391
386
  },
392
387
  effect: {
393
388
  merge: [
394
- { var: "state" },
389
+ { var: 'state' },
395
390
  {
396
- status: "DISPUTED",
397
- disputedAt: { var: "$timestamp" },
398
- disputedBy: { var: "event.agent" },
399
- disputeStake: { var: "event.stake" },
400
- disputeReason: { var: "event.reason" },
391
+ status: 'DISPUTED',
392
+ disputedAt: { var: '$ordinal' },
393
+ disputedBy: { var: 'event.agent' },
394
+ disputeStake: { var: 'event.stake' },
395
+ disputeReason: { var: 'event.reason' },
401
396
  },
402
397
  ],
403
398
  },
404
399
  dependencies: [],
405
400
  },
406
401
  {
407
- from: "DISPUTED",
408
- to: "SETTLED",
409
- eventName: "ruling",
410
- guard: { var: "event.judicialRuling" },
402
+ from: 'DISPUTED',
403
+ to: 'SETTLED',
404
+ eventName: 'ruling',
405
+ // 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)
406
+ guard: {
407
+ and: [(0, guards_js_1.signerIsParty)('state.arbiter'), { in: [{ var: 'event.finalOutcome' }, { var: 'state.outcomes' }] }],
408
+ },
411
409
  effect: {
412
410
  merge: [
413
- { var: "state" },
411
+ { var: 'state' },
414
412
  {
415
- status: "SETTLED",
416
- settledAt: { var: "$timestamp" },
417
- finalOutcome: { var: "event.outcome" },
418
- rulingId: { var: "event.rulingId" },
413
+ status: 'SETTLED',
414
+ settledAt: { var: '$ordinal' },
415
+ finalOutcome: { var: 'event.finalOutcome' },
416
+ rulingId: { var: 'event.rulingId' },
419
417
  claims: [],
420
418
  },
421
419
  ],
@@ -423,70 +421,65 @@ exports.marketPredictionDef = (0, fiber_app_js_1.defineFiberApp)({
423
421
  dependencies: [],
424
422
  },
425
423
  {
426
- from: "RESOLVING",
427
- to: "REFUNDED",
428
- eventName: "invalidate",
424
+ from: 'RESOLVING',
425
+ to: 'REFUNDED',
426
+ eventName: 'invalidate',
429
427
  guard: {
430
- ">=": [
428
+ '>=': [
431
429
  {
432
- size: {
433
- filter: [
434
- { var: "state.resolutions" },
435
- { "===": [{ var: "outcome" }, "INVALID"] },
436
- ],
437
- },
430
+ length: [
431
+ {
432
+ filter: [{ var: 'state.resolutions' }, { '===': [{ var: 'outcome' }, 'INVALID'] }],
433
+ },
434
+ ],
438
435
  },
439
- { var: "state.quorum" },
436
+ { var: 'state.quorum' },
440
437
  ],
441
438
  },
442
439
  effect: {
443
440
  merge: [
444
- { var: "state" },
441
+ { var: 'state' },
445
442
  {
446
- status: "REFUNDED",
447
- refundedAt: { var: "$timestamp" },
448
- reason: "oracle_invalidation",
443
+ status: 'REFUNDED',
444
+ refundedAt: { var: '$ordinal' },
445
+ reason: 'oracle_invalidation',
449
446
  },
450
447
  ],
451
448
  },
452
449
  dependencies: [],
453
450
  },
454
451
  {
455
- from: "SETTLED",
456
- to: "SETTLED",
457
- eventName: "claim",
452
+ from: 'SETTLED',
453
+ to: 'SETTLED',
454
+ eventName: 'claim',
458
455
  guard: {
459
456
  and: [
460
457
  {
461
- ">": [
458
+ '>': [
462
459
  {
463
- size: {
464
- filter: [
465
- { var: "state.positions" },
466
- {
467
- and: [
468
- { "===": [{ var: "agent" }, { var: "event.agent" }] },
469
- {
470
- "===": [
471
- { var: "outcome" },
472
- { var: "state.finalOutcome" },
473
- ],
474
- },
475
- ],
476
- },
477
- ],
478
- },
460
+ length: [
461
+ {
462
+ filter: [
463
+ { var: 'state.positions' },
464
+ {
465
+ and: [
466
+ { '===': [{ var: 'agent' }, { var: 'event.agent' }] },
467
+ {
468
+ '===': [{ var: 'outcome' }, { var: 'state.finalOutcome' }],
469
+ },
470
+ ],
471
+ },
472
+ ],
473
+ },
474
+ ],
479
475
  },
480
476
  0,
481
477
  ],
482
478
  },
483
479
  {
484
- "!": [
480
+ '!': [
485
481
  {
486
- in: [
487
- { var: "event.agent" },
488
- { map: [{ var: "state.claims" }, { var: "agent" }] },
489
- ],
482
+ in: [{ var: 'event.agent' }, { map: [{ var: 'state.claims' }, { var: 'agent' }] }],
490
483
  },
491
484
  ],
492
485
  },
@@ -494,16 +487,16 @@ exports.marketPredictionDef = (0, fiber_app_js_1.defineFiberApp)({
494
487
  },
495
488
  effect: {
496
489
  merge: [
497
- { var: "state" },
490
+ { var: 'state' },
498
491
  {
499
492
  claims: {
500
493
  cat: [
501
- { var: "state.claims" },
494
+ { var: 'state.claims' },
502
495
  [
503
496
  {
504
- agent: { var: "event.agent" },
505
- amount: { var: "event.amount" },
506
- claimedAt: { var: "$timestamp" },
497
+ agent: { var: 'event.agent' },
498
+ amount: { var: 'event.amount' },
499
+ claimedAt: { var: '$ordinal' },
507
500
  },
508
501
  ],
509
502
  ],