@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,357 +2,342 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.identityOracleDef = 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
  * Oracle identity with staking, attestations, reputation, and slashing mechanics.
7
8
  */
8
9
  exports.identityOracleDef = (0, fiber_app_js_1.defineFiberApp)({
9
10
  metadata: {
10
- name: "IdentityOracle",
11
- app: "identity",
12
- type: "oracle",
13
- version: "1.0.0",
14
- description: "Oracle identity with staking, attestations, reputation, and slashing mechanics",
11
+ name: 'IdentityOracle',
12
+ app: 'identity',
13
+ type: 'oracle',
14
+ version: '1.0.0',
15
+ description: 'Oracle identity with staking, attestations, reputation, and slashing mechanics',
15
16
  },
16
17
  createSchema: {
17
- required: ["owner", "stake", "domains"],
18
+ required: ['owner', 'stake', 'domains', 'slasher'],
18
19
  properties: {
19
20
  owner: {
20
- type: "address",
21
- description: "Oracle owner DAG address",
21
+ type: 'address',
22
+ description: 'Oracle owner DAG address',
23
+ immutable: true,
24
+ },
25
+ slasher: {
26
+ type: 'address',
27
+ description: "DAG address of the slasher authorized to penalize this oracle's stake",
22
28
  immutable: true,
23
29
  },
24
30
  stake: {
25
- type: "integer",
31
+ type: 'integer',
26
32
  minimum: 0,
27
- description: "Initial stake amount",
33
+ description: 'Initial stake amount',
28
34
  },
29
35
  domains: {
30
- type: "array",
31
- items: { type: "string" },
32
- description: "Oracle specialization domains",
36
+ type: 'array',
37
+ items: { type: 'string' },
38
+ description: 'Oracle specialization domains',
33
39
  },
34
40
  minStake: {
35
- type: "integer",
41
+ type: 'integer',
36
42
  default: 1000,
37
- description: "Minimum stake required",
43
+ description: 'Minimum stake required',
38
44
  },
39
45
  },
40
46
  },
41
47
  stateSchema: {
42
48
  properties: {
43
- owner: { type: "address", immutable: true },
44
- address: { type: "address", computed: true },
45
- stake: { type: "integer", computed: true },
46
- minStake: { type: "integer" },
47
- domains: { type: "array", items: { type: "string" } },
49
+ owner: { type: 'address', immutable: true },
50
+ slasher: { type: 'address', immutable: true },
51
+ address: { type: 'address', computed: true },
52
+ stake: { type: 'integer', computed: true },
53
+ minStake: { type: 'integer' },
54
+ domains: { type: 'array', items: { type: 'string' } },
48
55
  status: {
49
- type: "string",
50
- enum: [
51
- "UNREGISTERED",
52
- "REGISTERED",
53
- "ACTIVE",
54
- "SLASHED",
55
- "WITHDRAWN",
56
- ],
56
+ type: 'string',
57
+ enum: ['UNREGISTERED', 'REGISTERED', 'ACTIVE', 'SLASHED', 'WITHDRAWN'],
57
58
  computed: true,
58
59
  },
59
60
  reputation: {
60
- type: "object",
61
+ type: 'object',
61
62
  properties: {
62
- accuracy: { type: "integer" },
63
- totalResolutions: { type: "integer" },
64
- disputesWon: { type: "integer" },
65
- disputesLost: { type: "integer" },
63
+ accuracy: { type: 'integer' },
64
+ totalResolutions: { type: 'integer' },
65
+ disputesWon: { type: 'integer' },
66
+ disputesLost: { type: 'integer' },
66
67
  },
67
68
  computed: true,
68
69
  },
69
- slashingHistory: { type: "array", computed: true },
70
- registeredAt: { type: "timestamp", computed: true },
71
- activatedAt: { type: "timestamp", computed: true },
72
- slashedAt: { type: "timestamp", computed: true },
73
- withdrawnAt: { type: "timestamp", computed: true },
70
+ slashingHistory: { type: 'array', computed: true },
71
+ registeredAt: { type: 'timestamp', computed: true },
72
+ activatedAt: { type: 'timestamp', computed: true },
73
+ slashedAt: { type: 'timestamp', computed: true },
74
+ withdrawnAt: { type: 'timestamp', computed: true },
74
75
  },
75
76
  },
76
77
  eventSchemas: {
77
78
  register: {
78
- description: "Register as an oracle with initial stake",
79
- required: ["agent", "stake", "domains"],
79
+ description: 'Register as an oracle with initial stake',
80
+ required: ['agent', 'stake', 'domains'],
80
81
  properties: {
81
- agent: { type: "address" },
82
- stake: { type: "integer", minimum: 0 },
83
- domains: { type: "array", items: { type: "string" } },
82
+ agent: { type: 'address' },
83
+ stake: { type: 'integer', minimum: 0 },
84
+ domains: { type: 'array', items: { type: 'string' } },
84
85
  },
85
86
  },
86
87
  activate: {
87
- description: "Activate a registered oracle",
88
- required: ["agent"],
88
+ description: 'Activate a registered oracle',
89
+ required: ['agent'],
89
90
  properties: {
90
- agent: { type: "address" },
91
- adminOverride: { type: "boolean", default: false },
91
+ agent: { type: 'address' },
92
92
  },
93
93
  },
94
94
  add_stake: {
95
- description: "Add stake to an active oracle",
96
- required: ["agent", "amount"],
95
+ description: 'Add stake to an active oracle',
96
+ required: ['agent', 'amount'],
97
97
  properties: {
98
- agent: { type: "address" },
99
- amount: { type: "integer", minimum: 1 },
98
+ agent: { type: 'address' },
99
+ amount: { type: 'integer', minimum: 1 },
100
100
  },
101
101
  },
102
102
  record_resolution: {
103
- description: "Record a market resolution outcome",
104
- required: ["marketId", "correct"],
103
+ description: 'Record a market resolution outcome',
104
+ required: ['marketId', 'correct'],
105
105
  properties: {
106
- marketId: { type: "uuid" },
107
- correct: { type: "boolean" },
106
+ marketId: { type: 'uuid' },
107
+ correct: { type: 'boolean' },
108
108
  },
109
109
  },
110
110
  slash: {
111
- description: "Slash oracle stake for misconduct",
112
- required: ["reason", "amount"],
111
+ description: 'Slash oracle stake for misconduct',
112
+ required: ['reason', 'amount'],
113
113
  properties: {
114
- reason: { type: "string" },
115
- amount: { type: "integer", minimum: 1 },
116
- marketId: { type: "uuid" },
114
+ reason: { type: 'string' },
115
+ amount: { type: 'integer', minimum: 1 },
116
+ marketId: { type: 'uuid' },
117
117
  },
118
118
  },
119
119
  reactivate: {
120
- description: "Reactivate a slashed oracle",
121
- required: ["agent"],
120
+ description: 'Reactivate a slashed oracle',
121
+ required: ['agent'],
122
122
  properties: {
123
- agent: { type: "address" },
123
+ agent: { type: 'address' },
124
124
  },
125
125
  },
126
126
  withdraw: {
127
- description: "Withdraw oracle and reclaim stake",
128
- required: ["agent"],
127
+ description: 'Withdraw oracle and reclaim stake',
128
+ required: ['agent'],
129
129
  properties: {
130
- agent: { type: "address" },
130
+ agent: { type: 'address' },
131
131
  },
132
132
  },
133
133
  },
134
134
  states: {
135
135
  UNREGISTERED: {
136
- id: "UNREGISTERED",
136
+ id: 'UNREGISTERED',
137
137
  isFinal: false,
138
138
  metadata: {
139
- label: "Unregistered",
140
- description: "Oracle not yet registered; awaiting stake",
141
- category: "initial",
139
+ label: 'Unregistered',
140
+ description: 'Oracle not yet registered; awaiting stake',
141
+ category: 'initial',
142
142
  },
143
143
  },
144
144
  REGISTERED: {
145
- id: "REGISTERED",
145
+ id: 'REGISTERED',
146
146
  isFinal: false,
147
147
  metadata: {
148
- label: "Registered",
149
- description: "Oracle staked and registered but not yet active",
150
- category: "pending",
148
+ label: 'Registered',
149
+ description: 'Oracle staked and registered but not yet active',
150
+ category: 'pending',
151
151
  },
152
152
  },
153
153
  ACTIVE: {
154
- id: "ACTIVE",
154
+ id: 'ACTIVE',
155
155
  isFinal: false,
156
156
  metadata: {
157
- label: "Active",
158
- description: "Oracle is active and may submit resolutions",
159
- category: "active",
157
+ label: 'Active',
158
+ description: 'Oracle is active and may submit resolutions',
159
+ category: 'active',
160
160
  },
161
161
  },
162
162
  SLASHED: {
163
- id: "SLASHED",
163
+ id: 'SLASHED',
164
164
  isFinal: false,
165
165
  metadata: {
166
- label: "Slashed",
167
- description: "Oracle penalized for a lost dispute; stake reduced",
168
- category: "pending",
166
+ label: 'Slashed',
167
+ description: 'Oracle penalized for a lost dispute; stake reduced',
168
+ category: 'pending',
169
169
  },
170
170
  },
171
171
  WITHDRAWN: {
172
- id: "WITHDRAWN",
172
+ id: 'WITHDRAWN',
173
173
  isFinal: true,
174
174
  metadata: {
175
- label: "Withdrawn",
176
- description: "Oracle withdrawn and stake reclaimed (terminal)",
177
- category: "terminal",
175
+ label: 'Withdrawn',
176
+ description: 'Oracle withdrawn and stake reclaimed (terminal)',
177
+ category: 'terminal',
178
178
  },
179
179
  },
180
180
  },
181
- initialState: "UNREGISTERED",
181
+ initialState: 'UNREGISTERED',
182
182
  transitions: [
183
183
  {
184
- from: "UNREGISTERED",
185
- to: "REGISTERED",
186
- eventName: "register",
187
- guard: { ">=": [{ var: "event.stake" }, { var: "state.minStake" }] },
184
+ from: 'UNREGISTERED',
185
+ to: 'REGISTERED',
186
+ eventName: 'register',
187
+ guard: { '>=': [{ var: 'event.stake' }, { var: 'state.minStake' }] },
188
188
  effect: {
189
189
  merge: [
190
- { var: "state" },
190
+ { var: 'state' },
191
191
  {
192
- status: "REGISTERED",
193
- address: { var: "event.agent" },
194
- stake: { var: "event.stake" },
195
- registeredAt: { var: "$timestamp" },
192
+ status: 'REGISTERED',
193
+ address: { var: 'event.agent' },
194
+ stake: { var: 'event.stake' },
195
+ registeredAt: { var: '$ordinal' },
196
196
  reputation: {
197
197
  accuracy: 100,
198
198
  totalResolutions: 0,
199
199
  disputesWon: 0,
200
200
  disputesLost: 0,
201
201
  },
202
- domains: { var: "event.domains" },
202
+ domains: { var: 'event.domains' },
203
203
  slashingHistory: [],
204
204
  },
205
205
  ],
206
206
  },
207
207
  },
208
208
  {
209
- from: "REGISTERED",
210
- to: "ACTIVE",
211
- eventName: "activate",
212
- guard: {
213
- or: [
214
- { "===": [{ var: "event.agent" }, { var: "state.address" }] },
215
- { var: "event.adminOverride" },
216
- ],
217
- },
209
+ from: 'REGISTERED',
210
+ to: 'ACTIVE',
211
+ eventName: 'activate',
212
+ // 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)
213
+ guard: (0, guards_js_1.signerIsParty)('state.address'),
218
214
  effect: {
219
- merge: [
220
- { var: "state" },
221
- { status: "ACTIVE", activatedAt: { var: "$timestamp" } },
222
- ],
215
+ merge: [{ var: 'state' }, { status: 'ACTIVE', activatedAt: { var: '$ordinal' } }],
223
216
  },
224
217
  },
225
218
  {
226
- from: "ACTIVE",
227
- to: "ACTIVE",
228
- eventName: "add_stake",
219
+ from: 'ACTIVE',
220
+ to: 'ACTIVE',
221
+ eventName: 'add_stake',
229
222
  guard: {
230
- and: [
231
- { "===": [{ var: "event.agent" }, { var: "state.address" }] },
232
- { ">": [{ var: "event.amount" }, 0] },
233
- ],
223
+ and: [(0, guards_js_1.signerIsParty)('state.address'), { '>': [{ var: 'event.amount' }, 0] }],
234
224
  },
235
225
  effect: {
236
226
  merge: [
237
- { var: "state" },
227
+ { var: 'state' },
238
228
  {
239
- stake: { "+": [{ var: "state.stake" }, { var: "event.amount" }] },
240
- lastStakeAt: { var: "$timestamp" },
229
+ stake: { '+': [{ var: 'state.stake' }, { var: 'event.amount' }] },
230
+ lastStakeAt: { var: '$ordinal' },
241
231
  },
242
232
  ],
243
233
  },
244
234
  },
245
235
  {
246
- from: "ACTIVE",
247
- to: "ACTIVE",
248
- eventName: "record_resolution",
249
- guard: { var: "event.marketId" },
236
+ from: 'ACTIVE',
237
+ to: 'ACTIVE',
238
+ eventName: 'record_resolution',
239
+ guard: { var: 'event.marketId' },
250
240
  effect: {
251
241
  merge: [
252
- { var: "state" },
242
+ { var: 'state' },
253
243
  {
254
244
  reputation: {
255
245
  merge: [
256
- { var: "state.reputation" },
246
+ { var: 'state.reputation' },
257
247
  {
258
248
  totalResolutions: {
259
- "+": [{ var: "state.reputation.totalResolutions" }, 1],
249
+ '+': [{ var: 'state.reputation.totalResolutions' }, 1],
260
250
  },
261
251
  accuracy: {
262
252
  if: [
263
- { var: "event.correct" },
264
- { var: "state.reputation.accuracy" },
265
- { "-": [{ var: "state.reputation.accuracy" }, 5] },
253
+ { var: 'event.correct' },
254
+ { var: 'state.reputation.accuracy' },
255
+ { '-': [{ var: 'state.reputation.accuracy' }, 5] },
266
256
  ],
267
257
  },
268
258
  },
269
259
  ],
270
260
  },
271
- lastResolutionAt: { var: "$timestamp" },
261
+ lastResolutionAt: { var: '$ordinal' },
272
262
  },
273
263
  ],
274
264
  },
275
265
  },
276
266
  {
277
- from: "ACTIVE",
278
- to: "SLASHED",
279
- eventName: "slash",
267
+ from: 'ACTIVE',
268
+ to: 'SLASHED',
269
+ eventName: 'slash',
270
+ // 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)
280
271
  guard: {
281
272
  and: [
282
- { var: "event.reason" },
283
- { ">": [{ var: "event.amount" }, 0] },
284
- { "<=": [{ var: "event.amount" }, { var: "state.stake" }] },
273
+ (0, guards_js_1.signerIsParty)('state.slasher'),
274
+ { '>': [{ var: 'event.amount' }, 0] },
275
+ { '<=': [{ var: 'event.amount' }, { var: 'state.stake' }] },
285
276
  ],
286
277
  },
287
278
  effect: {
288
279
  merge: [
289
- { var: "state" },
280
+ { var: 'state' },
290
281
  {
291
- status: "SLASHED",
292
- stake: { "-": [{ var: "state.stake" }, { var: "event.amount" }] },
282
+ status: 'SLASHED',
283
+ stake: { '-': [{ var: 'state.stake' }, { var: 'event.amount' }] },
293
284
  slashingHistory: {
294
285
  cat: [
295
- { var: "state.slashingHistory" },
286
+ { var: 'state.slashingHistory' },
296
287
  [
297
288
  {
298
- reason: { var: "event.reason" },
299
- amount: { var: "event.amount" },
300
- marketId: { var: "event.marketId" },
301
- slashedAt: { var: "$timestamp" },
289
+ reason: { var: 'event.reason' },
290
+ amount: { var: 'event.amount' },
291
+ marketId: { var: 'event.marketId' },
292
+ slashedAt: { var: '$ordinal' },
302
293
  },
303
294
  ],
304
295
  ],
305
296
  },
306
- slashedAt: { var: "$timestamp" },
297
+ slashedAt: { var: '$ordinal' },
307
298
  },
308
299
  ],
309
300
  },
310
301
  },
311
302
  {
312
- from: "SLASHED",
313
- to: "ACTIVE",
314
- eventName: "reactivate",
303
+ from: 'SLASHED',
304
+ to: 'ACTIVE',
305
+ eventName: 'reactivate',
315
306
  guard: {
316
- and: [
317
- { "===": [{ var: "event.agent" }, { var: "state.address" }] },
318
- { ">=": [{ var: "state.stake" }, { var: "state.minStake" }] },
319
- ],
307
+ and: [(0, guards_js_1.signerIsParty)('state.address'), { '>=': [{ var: 'state.stake' }, { var: 'state.minStake' }] }],
320
308
  },
321
309
  effect: {
322
- merge: [
323
- { var: "state" },
324
- { status: "ACTIVE", reactivatedAt: { var: "$timestamp" } },
325
- ],
310
+ merge: [{ var: 'state' }, { status: 'ACTIVE', reactivatedAt: { var: '$ordinal' } }],
326
311
  },
327
312
  },
328
313
  {
329
- from: "ACTIVE",
330
- to: "WITHDRAWN",
331
- eventName: "withdraw",
332
- guard: { "===": [{ var: "event.agent" }, { var: "state.address" }] },
314
+ from: 'ACTIVE',
315
+ to: 'WITHDRAWN',
316
+ eventName: 'withdraw',
317
+ guard: (0, guards_js_1.signerIsParty)('state.address'),
333
318
  effect: {
334
319
  merge: [
335
- { var: "state" },
320
+ { var: 'state' },
336
321
  {
337
- status: "WITHDRAWN",
338
- withdrawnAt: { var: "$timestamp" },
339
- finalStake: { var: "state.stake" },
322
+ status: 'WITHDRAWN',
323
+ withdrawnAt: { var: '$ordinal' },
324
+ finalStake: { var: 'state.stake' },
340
325
  },
341
326
  ],
342
327
  },
343
328
  },
344
329
  {
345
- from: "SLASHED",
346
- to: "WITHDRAWN",
347
- eventName: "withdraw",
348
- guard: { "===": [{ var: "event.agent" }, { var: "state.address" }] },
330
+ from: 'SLASHED',
331
+ to: 'WITHDRAWN',
332
+ eventName: 'withdraw',
333
+ guard: (0, guards_js_1.signerIsParty)('state.address'),
349
334
  effect: {
350
335
  merge: [
351
- { var: "state" },
336
+ { var: 'state' },
352
337
  {
353
- status: "WITHDRAWN",
354
- withdrawnAt: { var: "$timestamp" },
355
- finalStake: { var: "state.stake" },
338
+ status: 'WITHDRAWN',
339
+ withdrawnAt: { var: '$ordinal' },
340
+ finalStake: { var: 'state.stake' },
356
341
  },
357
342
  ],
358
343
  },