@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,253 +2,246 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.contractEscrowDef = 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
  * Asset custody with conditional release, dispute resolution, and split payments.
7
8
  */
8
9
  exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
9
10
  metadata: {
10
- name: "ContractEscrow",
11
- app: "contracts",
12
- type: "escrow",
13
- version: "1.0.0",
14
- description: "Asset custody with conditional release, dispute resolution, and split payments",
11
+ name: 'ContractEscrow',
12
+ app: 'contracts',
13
+ type: 'escrow',
14
+ version: '1.0.0',
15
+ description: 'Asset custody with conditional release, dispute resolution, and split payments',
15
16
  crossReferences: {
16
17
  contractId: {
17
- machine: "contract-agreement",
18
- field: "contractId",
19
- description: "Links to Contract SM that created this escrow",
18
+ machine: 'contract-agreement',
19
+ field: 'contractId',
20
+ description: 'Links to Contract SM that created this escrow',
20
21
  },
21
22
  marketId: {
22
- machine: "market-universal",
23
- field: "marketId",
24
- description: "Links to Market SM for market-based escrow",
23
+ machine: 'market-universal',
24
+ field: 'marketId',
25
+ description: 'Links to Market SM for market-based escrow',
25
26
  },
26
27
  insuranceId: {
27
- machine: "insurance",
28
- field: "insuranceId",
29
- description: "Links to Insurance SM for protected escrow",
28
+ machine: 'insurance',
29
+ field: 'insuranceId',
30
+ description: 'Links to Insurance SM for protected escrow',
30
31
  },
31
32
  arbitrationPoolId: {
32
- machine: "arbitration-pool",
33
- field: "arbitrationPoolId",
34
- description: "Links to ArbitrationPool for dispute resolution",
33
+ machine: 'arbitration-pool',
34
+ field: 'arbitrationPoolId',
35
+ description: 'Links to ArbitrationPool for dispute resolution',
35
36
  },
36
37
  treasuryId: {
37
- machine: "treasury",
38
- field: "treasuryId",
39
- description: "Links to Treasury for fee collection",
38
+ machine: 'treasury',
39
+ field: 'treasuryId',
40
+ description: 'Links to Treasury for fee collection',
40
41
  },
41
42
  },
42
43
  },
43
44
  createSchema: {
44
- required: ["depositor", "beneficiary", "requiredAmount"],
45
+ required: ['depositor', 'beneficiary', 'requiredAmount', 'arbiter'],
45
46
  properties: {
46
47
  depositor: {
47
- type: "address",
48
- description: "DAG address of the depositor",
48
+ type: 'address',
49
+ description: 'DAG address of the depositor',
49
50
  },
50
51
  beneficiary: {
51
- type: "address",
52
- description: "DAG address of the beneficiary",
52
+ type: 'address',
53
+ description: 'DAG address of the beneficiary',
54
+ },
55
+ arbiter: {
56
+ type: 'address',
57
+ description: 'DAG address of the arbiter authorized to rule on a dispute',
58
+ immutable: true,
53
59
  },
54
60
  requiredAmount: {
55
- type: "number",
61
+ type: 'number',
56
62
  minimum: 0,
57
- description: "Required escrow amount",
63
+ description: 'Required escrow amount',
58
64
  },
59
65
  releaseWindowMs: {
60
- type: "integer",
61
- description: "Time window for dispute before auto-release",
66
+ type: 'integer',
67
+ description: 'Time window for dispute before auto-release',
62
68
  nullable: true,
63
69
  },
64
70
  expiresAt: {
65
- type: "integer",
66
- description: "Timestamp when escrow expires",
71
+ type: 'integer',
72
+ description: 'Timestamp when escrow expires',
67
73
  nullable: true,
68
74
  },
69
75
  autoActivate: {
70
- type: "boolean",
71
- description: "Whether to auto-activate on funding",
76
+ type: 'boolean',
77
+ description: 'Whether to auto-activate on funding',
72
78
  nullable: true,
73
79
  },
74
80
  },
75
81
  },
76
82
  stateSchema: {
77
83
  properties: {
78
- depositor: { type: "address" },
79
- beneficiary: { type: "address" },
80
- requiredAmount: { type: "number" },
81
- balance: { type: "number" },
82
- fundedAt: { type: "integer", nullable: true },
83
- activatedAt: { type: "integer", nullable: true },
84
- releaseRequest: { type: "object", nullable: true },
85
- releaseDeadline: { type: "integer", nullable: true },
86
- releasedAt: { type: "integer", nullable: true },
87
- releasedTo: { type: "address", nullable: true },
88
- disputedAt: { type: "integer", nullable: true },
89
- refundedAt: { type: "integer", nullable: true },
90
- splits: { type: "array", nullable: true },
91
- rulingId: { type: "string", nullable: true },
92
- releaseWindowMs: { type: "integer", nullable: true },
93
- expiresAt: { type: "integer", nullable: true },
94
- autoActivate: { type: "boolean", nullable: true },
84
+ depositor: { type: 'address' },
85
+ beneficiary: { type: 'address' },
86
+ arbiter: { type: 'address', immutable: true },
87
+ requiredAmount: { type: 'number' },
88
+ balance: { type: 'number' },
89
+ fundedAt: { type: 'integer', nullable: true },
90
+ activatedAt: { type: 'integer', nullable: true },
91
+ releaseRequest: { type: 'object', nullable: true },
92
+ releaseDeadline: { type: 'integer', nullable: true },
93
+ releasedAt: { type: 'integer', nullable: true },
94
+ releasedTo: { type: 'address', nullable: true },
95
+ disputedAt: { type: 'integer', nullable: true },
96
+ refundedAt: { type: 'integer', nullable: true },
97
+ splits: { type: 'array', nullable: true },
98
+ rulingId: { type: 'string', nullable: true },
99
+ releaseWindowMs: { type: 'integer', nullable: true },
100
+ expiresAt: { type: 'integer', nullable: true },
101
+ autoActivate: { type: 'boolean', nullable: true },
95
102
  },
96
103
  },
97
104
  eventSchemas: {
98
105
  deposit: {
99
106
  properties: {
100
- amount: { type: "number" },
107
+ amount: { type: 'number' },
101
108
  },
102
109
  },
103
110
  activate: {},
104
111
  request_release: {
105
112
  properties: {
106
- amount: { type: "number" },
107
- reason: { type: "string", nullable: true },
113
+ amount: { type: 'number' },
114
+ reason: { type: 'string', nullable: true },
108
115
  },
109
116
  },
110
117
  approve_release: {},
111
118
  dispute: {},
112
119
  ruling: {
113
120
  properties: {
114
- judicialRuling: { type: "boolean" },
115
- splits: { type: "array" },
116
- rulingId: { type: "string" },
117
- },
118
- },
119
- refund: {
120
- properties: {
121
- mutualConsent: { type: "boolean", nullable: true },
121
+ splits: { type: 'array' },
122
+ rulingId: { type: 'string' },
122
123
  },
123
124
  },
125
+ refund: {},
124
126
  cancel: {},
125
127
  },
126
128
  states: {
127
129
  CREATED: {
128
- id: "CREATED",
130
+ id: 'CREATED',
129
131
  isFinal: false,
130
132
  metadata: {
131
- label: "Created",
132
- description: "Escrow created; awaiting funding",
133
- category: "initial",
133
+ label: 'Created',
134
+ description: 'Escrow created; awaiting funding',
135
+ category: 'initial',
134
136
  },
135
137
  },
136
138
  FUNDED: {
137
- id: "FUNDED",
139
+ id: 'FUNDED',
138
140
  isFinal: false,
139
141
  metadata: {
140
- label: "Funded",
141
- description: "Funds deposited into escrow",
142
- category: "active",
142
+ label: 'Funded',
143
+ description: 'Funds deposited into escrow',
144
+ category: 'active',
143
145
  },
144
146
  },
145
147
  ACTIVE: {
146
- id: "ACTIVE",
148
+ id: 'ACTIVE',
147
149
  isFinal: false,
148
150
  metadata: {
149
- label: "Active",
150
- description: "Escrow in effect while work is performed",
151
- category: "active",
151
+ label: 'Active',
152
+ description: 'Escrow in effect while work is performed',
153
+ category: 'active',
152
154
  },
153
155
  },
154
156
  RELEASING: {
155
- id: "RELEASING",
157
+ id: 'RELEASING',
156
158
  isFinal: false,
157
159
  metadata: {
158
- label: "Releasing",
159
- description: "Release approved; payout in progress",
160
- category: "pending",
160
+ label: 'Releasing',
161
+ description: 'Release approved; payout in progress',
162
+ category: 'pending',
161
163
  },
162
164
  },
163
165
  DISPUTED: {
164
- id: "DISPUTED",
166
+ id: 'DISPUTED',
165
167
  isFinal: false,
166
168
  metadata: {
167
- label: "Disputed",
168
- description: "A party disputed the escrow; awaiting arbitration",
169
- category: "pending",
169
+ label: 'Disputed',
170
+ description: 'A party disputed the escrow; awaiting arbitration',
171
+ category: 'pending',
170
172
  },
171
173
  },
172
174
  RELEASED: {
173
- id: "RELEASED",
175
+ id: 'RELEASED',
174
176
  isFinal: true,
175
177
  metadata: {
176
- label: "Released",
177
- description: "Funds released to the beneficiary (terminal)",
178
- category: "terminal",
178
+ label: 'Released',
179
+ description: 'Funds released to the beneficiary (terminal)',
180
+ category: 'terminal',
179
181
  },
180
182
  },
181
183
  REFUNDED: {
182
- id: "REFUNDED",
184
+ id: 'REFUNDED',
183
185
  isFinal: true,
184
186
  metadata: {
185
- label: "Refunded",
186
- description: "Funds refunded to the depositor (terminal)",
187
- category: "terminal",
187
+ label: 'Refunded',
188
+ description: 'Funds refunded to the depositor (terminal)',
189
+ category: 'terminal',
188
190
  },
189
191
  },
190
192
  SPLIT: {
191
- id: "SPLIT",
193
+ id: 'SPLIT',
192
194
  isFinal: true,
193
195
  metadata: {
194
- label: "Split",
195
- description: "Funds split between parties per arbitration (terminal)",
196
- category: "terminal",
196
+ label: 'Split',
197
+ description: 'Funds split between parties per arbitration (terminal)',
198
+ category: 'terminal',
197
199
  },
198
200
  },
199
201
  },
200
- initialState: "CREATED",
202
+ initialState: 'CREATED',
201
203
  transitions: [
202
204
  {
203
- from: "CREATED",
204
- to: "FUNDED",
205
- eventName: "deposit",
205
+ from: 'CREATED',
206
+ to: 'FUNDED',
207
+ eventName: 'deposit',
206
208
  guard: {
207
- and: [
208
- { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
209
- { ">=": [{ var: "event.amount" }, { var: "state.requiredAmount" }] },
210
- ],
209
+ and: [(0, guards_js_1.signerIsParty)('state.depositor'), { '>=': [{ var: 'event.amount' }, { var: 'state.requiredAmount' }] }],
211
210
  },
212
211
  effect: {
213
- merge: [
214
- { var: "state" },
215
- { balance: { var: "event.amount" }, fundedAt: { var: "$timestamp" } },
216
- ],
212
+ merge: [{ var: 'state' }, { balance: { var: 'event.amount' }, fundedAt: { var: '$ordinal' } }],
217
213
  },
218
214
  dependencies: [],
219
215
  },
220
216
  {
221
- from: "FUNDED",
222
- to: "ACTIVE",
223
- eventName: "activate",
217
+ from: 'FUNDED',
218
+ to: 'ACTIVE',
219
+ eventName: 'activate',
224
220
  guard: {
225
- or: [
226
- { "===": [{ var: "event.agent" }, { var: "state.beneficiary" }] },
227
- { var: "state.autoActivate" },
228
- ],
221
+ or: [(0, guards_js_1.signerIsParty)('state.beneficiary'), { var: 'state.autoActivate' }],
229
222
  },
230
223
  effect: {
231
- merge: [{ var: "state" }, { activatedAt: { var: "$timestamp" } }],
224
+ merge: [{ var: 'state' }, { activatedAt: { var: '$ordinal' } }],
232
225
  },
233
226
  dependencies: [],
234
227
  },
235
228
  {
236
- from: "ACTIVE",
237
- to: "RELEASING",
238
- eventName: "request_release",
239
- guard: { "===": [{ var: "event.agent" }, { var: "state.beneficiary" }] },
229
+ from: 'ACTIVE',
230
+ to: 'RELEASING',
231
+ eventName: 'request_release',
232
+ guard: (0, guards_js_1.signerIsParty)('state.beneficiary'),
240
233
  effect: {
241
234
  merge: [
242
- { var: "state" },
235
+ { var: 'state' },
243
236
  {
244
237
  releaseRequest: {
245
- requestedBy: { var: "event.agent" },
246
- amount: { var: "event.amount" },
247
- reason: { var: "event.reason" },
248
- requestedAt: { var: "$timestamp" },
238
+ requestedBy: { var: 'event.agent' },
239
+ amount: { var: 'event.amount' },
240
+ reason: { var: 'event.reason' },
241
+ requestedAt: { var: '$ordinal' },
249
242
  },
250
243
  releaseDeadline: {
251
- "+": [{ var: "$timestamp" }, { var: "state.releaseWindowMs" }],
244
+ '+': [{ var: '$ordinal' }, { var: 'state.releaseWindowMs' }],
252
245
  },
253
246
  },
254
247
  ],
@@ -256,91 +249,120 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
256
249
  dependencies: [],
257
250
  },
258
251
  {
259
- from: "RELEASING",
260
- to: "RELEASED",
261
- eventName: "approve_release",
252
+ from: 'RELEASING',
253
+ to: 'RELEASED',
254
+ eventName: 'approve_release',
262
255
  guard: {
263
- or: [
264
- { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
265
- { ">=": [{ var: "$timestamp" }, { var: "state.releaseDeadline" }] },
266
- ],
256
+ or: [(0, guards_js_1.signerIsParty)('state.depositor'), { '>=': [{ var: '$ordinal' }, { var: 'state.releaseDeadline' }] }],
267
257
  },
268
258
  effect: {
269
259
  merge: [
270
- { var: "state" },
260
+ { var: 'state' },
271
261
  {
272
- releasedAt: { var: "$timestamp" },
273
- releasedTo: { var: "state.beneficiary" },
262
+ releasedAt: { var: '$ordinal' },
263
+ releasedTo: { var: 'state.beneficiary' },
274
264
  },
275
265
  ],
276
266
  },
277
267
  dependencies: [],
278
268
  },
279
269
  {
280
- from: "RELEASING",
281
- to: "DISPUTED",
282
- eventName: "dispute",
270
+ from: 'RELEASING',
271
+ to: 'DISPUTED',
272
+ eventName: 'dispute',
283
273
  guard: {
284
- and: [
285
- { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
286
- { "<": [{ var: "$timestamp" }, { var: "state.releaseDeadline" }] },
287
- ],
274
+ and: [(0, guards_js_1.signerIsParty)('state.depositor'), { '<': [{ var: '$ordinal' }, { var: 'state.releaseDeadline' }] }],
288
275
  },
289
276
  effect: {
290
- merge: [{ var: "state" }, { disputedAt: { var: "$timestamp" } }],
291
- },
292
- spawns: {
293
- sm: "Judiciary",
294
- initialData: {
295
- caseType: "escrow_dispute",
296
- plaintiff: { var: "state.depositor" },
297
- defendant: { var: "state.beneficiary" },
298
- claim: {
299
- escrowId: { var: "fiberId" },
300
- amount: { var: "state.balance" },
277
+ merge: [
278
+ { var: 'state' },
279
+ { disputedAt: { var: '$ordinal' } },
280
+ {
281
+ // A3 fix: transition-level `spawns` is dropped by the chain. No Judiciary state machine is
282
+ // defined to inline under `_spawn`, and escrow already resolves disputes via its own pinned
283
+ // `arbiter` (the `ruling` transition) — the spawned Judiciary was fire-and-forget (never read
284
+ // by escrow). So the dispute case is surfaced to the judiciary subsystem as an `_emit`
285
+ // notification instead of a child fiber.
286
+ _emit: [
287
+ {
288
+ name: 'dispute_opened',
289
+ data: {
290
+ caseType: 'escrow_dispute',
291
+ plaintiff: { var: 'state.depositor' },
292
+ defendant: { var: 'state.beneficiary' },
293
+ claim: {
294
+ escrowId: { var: 'machineId' },
295
+ amount: { var: 'state.balance' },
296
+ },
297
+ },
298
+ destination: 'Judiciary',
299
+ },
300
+ ],
301
301
  },
302
- },
302
+ ],
303
303
  },
304
304
  dependencies: [],
305
305
  },
306
306
  {
307
- from: "DISPUTED",
308
- to: "SPLIT",
309
- eventName: "ruling",
310
- guard: { var: "event.judicialRuling" },
307
+ from: 'DISPUTED',
308
+ to: 'SPLIT',
309
+ eventName: 'ruling',
310
+ // 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)
311
+ guard: {
312
+ and: [
313
+ (0, guards_js_1.signerIsParty)('state.arbiter'),
314
+ {
315
+ '===': [
316
+ {
317
+ reduce: [
318
+ { var: 'event.splits' },
319
+ {
320
+ '+': [{ var: 'accumulator' }, { var: 'current.amount' }],
321
+ },
322
+ 0,
323
+ ],
324
+ },
325
+ { var: 'state.balance' },
326
+ ],
327
+ },
328
+ ],
329
+ },
311
330
  effect: {
312
331
  merge: [
313
- { var: "state" },
332
+ { var: 'state' },
314
333
  {
315
- splits: { var: "event.splits" },
316
- rulingId: { var: "event.rulingId" },
334
+ splits: { var: 'event.splits' },
335
+ rulingId: { var: 'event.rulingId' },
317
336
  },
318
337
  ],
319
338
  },
320
339
  dependencies: [],
321
340
  },
322
341
  {
323
- from: "ACTIVE",
324
- to: "REFUNDED",
325
- eventName: "refund",
342
+ from: 'ACTIVE',
343
+ to: 'REFUNDED',
344
+ eventName: 'refund',
345
+ // 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)
326
346
  guard: {
327
347
  or: [
328
- { var: "event.mutualConsent" },
329
- { ">=": [{ var: "$timestamp" }, { var: "state.expiresAt" }] },
348
+ {
349
+ and: [(0, guards_js_1.signerIsParty)('state.depositor'), (0, guards_js_1.signerIsParty)('state.beneficiary')],
350
+ },
351
+ { '>=': [{ var: '$ordinal' }, { var: 'state.expiresAt' }] },
330
352
  ],
331
353
  },
332
354
  effect: {
333
- merge: [{ var: "state" }, { refundedAt: { var: "$timestamp" } }],
355
+ merge: [{ var: 'state' }, { refundedAt: { var: '$ordinal' } }],
334
356
  },
335
357
  dependencies: [],
336
358
  },
337
359
  {
338
- from: "CREATED",
339
- to: "REFUNDED",
340
- eventName: "cancel",
341
- guard: { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
360
+ from: 'CREATED',
361
+ to: 'REFUNDED',
362
+ eventName: 'cancel',
363
+ guard: (0, guards_js_1.signerIsParty)('state.depositor'),
342
364
  effect: {
343
- merge: [{ var: "state" }, { refundedAt: { var: "$timestamp" } }],
365
+ merge: [{ var: 'state' }, { refundedAt: { var: '$ordinal' } }],
344
366
  },
345
367
  dependencies: [],
346
368
  },