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