@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,210 +1,198 @@
1
- import { defineFiberApp } from "../../../schema/fiber-app.js";
1
+ import { defineFiberApp } from '../../../schema/fiber-app.js';
2
+ import { signerIsParty, signerIsAnyParty } from '../../../schema/guards.js';
2
3
  /**
3
4
  * Two-party agreement with mutual completion attestation and dispute resolution.
4
5
  */
5
6
  export const contractAgreementDef = defineFiberApp({
6
7
  metadata: {
7
- name: "ContractAgreement",
8
- app: "contracts",
9
- type: "agreement",
10
- version: "1.0.0",
11
- description: "Two-party agreement with mutual completion attestation and dispute resolution",
8
+ name: 'ContractAgreement',
9
+ app: 'contracts',
10
+ type: 'agreement',
11
+ version: '1.0.0',
12
+ description: 'Two-party agreement with mutual completion attestation and dispute resolution',
12
13
  crossReferences: {
13
14
  proposerIdentityId: {
14
- machine: "identity-agent",
15
- field: "proposer",
15
+ machine: 'identity-agent',
16
+ field: 'proposer',
16
17
  description: "Links to proposer's AgentIdentity fiber",
17
18
  },
18
19
  counterpartyIdentityId: {
19
- machine: "identity-agent",
20
- field: "counterparty",
20
+ machine: 'identity-agent',
21
+ field: 'counterparty',
21
22
  description: "Links to counterparty's AgentIdentity fiber",
22
23
  },
23
24
  escrowId: {
24
- machine: "contract-escrow",
25
- field: "escrowId",
26
- description: "Links to Escrow if payment is escrowed",
25
+ machine: 'contract-escrow',
26
+ field: 'escrowId',
27
+ description: 'Links to Escrow if payment is escrowed',
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
  },
34
35
  },
35
36
  createSchema: {
36
- required: ["proposer", "counterparty"],
37
+ required: ['proposer', 'counterparty', 'arbitrator'],
37
38
  properties: {
38
39
  proposer: {
39
- type: "address",
40
- description: "DAG address of the proposer",
40
+ type: 'address',
41
+ description: 'DAG address of the proposer',
41
42
  immutable: true,
42
43
  },
43
44
  counterparty: {
44
- type: "address",
45
- description: "DAG address of the counterparty",
45
+ type: 'address',
46
+ description: 'DAG address of the counterparty',
47
+ immutable: true,
48
+ },
49
+ arbitrator: {
50
+ type: 'address',
51
+ description: 'DAG address of the arbitrator authorized to resolve a dispute',
46
52
  immutable: true,
47
53
  },
48
54
  },
49
55
  },
50
56
  stateSchema: {
51
57
  properties: {
52
- status: { type: "string" },
53
- proposer: { type: "address" },
54
- counterparty: { type: "address" },
55
- completions: { type: "array" },
56
- acceptedAt: { type: "integer", nullable: true },
57
- rejectedAt: { type: "integer", nullable: true },
58
- rejectReason: { type: "string", nullable: true },
59
- cancelledAt: { type: "integer", nullable: true },
60
- completedAt: { type: "integer", nullable: true },
61
- disputedAt: { type: "integer", nullable: true },
62
- disputeReason: { type: "string", nullable: true },
63
- disputedBy: { type: "address", nullable: true },
64
- resolvedAt: { type: "integer", nullable: true },
65
- resolution: { type: "string", nullable: true },
66
- rulingId: { type: "string", nullable: true },
58
+ status: { type: 'string' },
59
+ proposer: { type: 'address' },
60
+ counterparty: { type: 'address' },
61
+ arbitrator: { type: 'address', immutable: true },
62
+ completions: { type: 'array' },
63
+ acceptedAt: { type: 'integer', nullable: true },
64
+ rejectedAt: { type: 'integer', nullable: true },
65
+ rejectReason: { type: 'string', nullable: true },
66
+ cancelledAt: { type: 'integer', nullable: true },
67
+ completedAt: { type: 'integer', nullable: true },
68
+ disputedAt: { type: 'integer', nullable: true },
69
+ disputeReason: { type: 'string', nullable: true },
70
+ disputedBy: { type: 'address', nullable: true },
71
+ resolvedAt: { type: 'integer', nullable: true },
72
+ resolution: { type: 'string', nullable: true },
73
+ rulingId: { type: 'string', nullable: true },
67
74
  },
68
75
  },
69
76
  eventSchemas: {
70
77
  accept: {},
71
- reject: { properties: { reason: { type: "string" } } },
78
+ reject: { properties: { reason: { type: 'string' } } },
72
79
  cancel: {},
73
- submit_completion: { properties: { proof: { type: "string" } } },
80
+ submit_completion: { properties: { proof: { type: 'string' } } },
74
81
  finalize: {},
75
- dispute: { properties: { reason: { type: "string" } } },
82
+ dispute: { properties: { reason: { type: 'string' } } },
76
83
  resolve: {
77
84
  properties: {
78
- judicialRuling: { type: "boolean", nullable: true },
79
- proposerApproves: { type: "boolean", nullable: true },
80
- counterpartyApproves: { type: "boolean", nullable: true },
81
- resolution: { type: "string" },
82
- rulingId: { type: "string", nullable: true },
85
+ resolution: { type: 'string' },
86
+ rulingId: { type: 'string', nullable: true },
83
87
  },
84
88
  },
85
89
  },
86
90
  states: {
87
91
  PROPOSED: {
88
- id: "PROPOSED",
92
+ id: 'PROPOSED',
89
93
  isFinal: false,
90
94
  metadata: {
91
- label: "Proposed",
92
- description: "Agreement proposed; awaiting the counterparty",
93
- category: "initial",
95
+ label: 'Proposed',
96
+ description: 'Agreement proposed; awaiting the counterparty',
97
+ category: 'initial',
94
98
  },
95
99
  },
96
100
  ACTIVE: {
97
- id: "ACTIVE",
101
+ id: 'ACTIVE',
98
102
  isFinal: false,
99
103
  metadata: {
100
- label: "Active",
101
- description: "Agreement accepted and in effect",
102
- category: "active",
104
+ label: 'Active',
105
+ description: 'Agreement accepted and in effect',
106
+ category: 'active',
103
107
  },
104
108
  },
105
109
  COMPLETED: {
106
- id: "COMPLETED",
110
+ id: 'COMPLETED',
107
111
  isFinal: true,
108
112
  metadata: {
109
- label: "Completed",
110
- description: "Agreement completed and attested (terminal)",
111
- category: "terminal",
113
+ label: 'Completed',
114
+ description: 'Agreement completed and attested (terminal)',
115
+ category: 'terminal',
112
116
  },
113
117
  },
114
118
  DISPUTED: {
115
- id: "DISPUTED",
119
+ id: 'DISPUTED',
116
120
  isFinal: false,
117
121
  metadata: {
118
- label: "Disputed",
119
- description: "A party has raised a dispute; awaiting resolution",
120
- category: "pending",
122
+ label: 'Disputed',
123
+ description: 'A party has raised a dispute; awaiting resolution',
124
+ category: 'pending',
121
125
  },
122
126
  },
123
127
  REJECTED: {
124
- id: "REJECTED",
128
+ id: 'REJECTED',
125
129
  isFinal: true,
126
130
  metadata: {
127
- label: "Rejected",
128
- description: "Proposal rejected by the counterparty (terminal)",
129
- category: "terminal",
131
+ label: 'Rejected',
132
+ description: 'Proposal rejected by the counterparty (terminal)',
133
+ category: 'terminal',
130
134
  },
131
135
  },
132
136
  CANCELLED: {
133
- id: "CANCELLED",
137
+ id: 'CANCELLED',
134
138
  isFinal: true,
135
139
  metadata: {
136
- label: "Cancelled",
137
- description: "Agreement cancelled before completion (terminal)",
138
- category: "terminal",
140
+ label: 'Cancelled',
141
+ description: 'Agreement cancelled before completion (terminal)',
142
+ category: 'terminal',
139
143
  },
140
144
  },
141
145
  },
142
- initialState: "PROPOSED",
146
+ initialState: 'PROPOSED',
143
147
  transitions: [
144
148
  {
145
- from: "PROPOSED",
146
- to: "ACTIVE",
147
- eventName: "accept",
148
- guard: { "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
149
+ from: 'PROPOSED',
150
+ to: 'ACTIVE',
151
+ eventName: 'accept',
152
+ guard: signerIsParty('state.counterparty'),
149
153
  effect: {
150
- merge: [
151
- { var: "state" },
152
- { status: "ACTIVE", acceptedAt: { var: "$timestamp" } },
153
- ],
154
+ merge: [{ var: 'state' }, { status: 'ACTIVE', acceptedAt: { var: '$ordinal' } }],
154
155
  },
155
156
  dependencies: [],
156
157
  },
157
158
  {
158
- from: "PROPOSED",
159
- to: "REJECTED",
160
- eventName: "reject",
161
- guard: { "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
159
+ from: 'PROPOSED',
160
+ to: 'REJECTED',
161
+ eventName: 'reject',
162
+ guard: signerIsParty('state.counterparty'),
162
163
  effect: {
163
164
  merge: [
164
- { var: "state" },
165
+ { var: 'state' },
165
166
  {
166
- status: "REJECTED",
167
- rejectedAt: { var: "$timestamp" },
168
- rejectReason: { var: "event.reason" },
167
+ status: 'REJECTED',
168
+ rejectedAt: { var: '$ordinal' },
169
+ rejectReason: { var: 'event.reason' },
169
170
  },
170
171
  ],
171
172
  },
172
173
  dependencies: [],
173
174
  },
174
175
  {
175
- from: "PROPOSED",
176
- to: "CANCELLED",
177
- eventName: "cancel",
178
- guard: { "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
176
+ from: 'PROPOSED',
177
+ to: 'CANCELLED',
178
+ eventName: 'cancel',
179
+ guard: signerIsParty('state.proposer'),
179
180
  effect: {
180
- merge: [
181
- { var: "state" },
182
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
183
- ],
181
+ merge: [{ var: 'state' }, { status: 'CANCELLED', cancelledAt: { var: '$ordinal' } }],
184
182
  },
185
183
  dependencies: [],
186
184
  },
187
185
  {
188
- from: "ACTIVE",
189
- to: "ACTIVE",
190
- eventName: "submit_completion",
186
+ from: 'ACTIVE',
187
+ to: 'ACTIVE',
188
+ eventName: 'submit_completion',
191
189
  guard: {
192
190
  and: [
191
+ signerIsAnyParty(['state.proposer', 'state.counterparty']),
193
192
  {
194
- or: [
195
- { "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
193
+ '!': [
196
194
  {
197
- "===": [{ var: "event.agent" }, { var: "state.counterparty" }],
198
- },
199
- ],
200
- },
201
- {
202
- "!": [
203
- {
204
- in: [
205
- { var: "event.agent" },
206
- { map: [{ var: "state.completions" }, { var: "agent" }] },
207
- ],
195
+ in: [{ var: 'event.agent' }, { map: [{ var: 'state.completions' }, { var: 'agent' }] }],
208
196
  },
209
197
  ],
210
198
  },
@@ -212,16 +200,16 @@ export const contractAgreementDef = defineFiberApp({
212
200
  },
213
201
  effect: {
214
202
  merge: [
215
- { var: "state" },
203
+ { var: 'state' },
216
204
  {
217
205
  completions: {
218
206
  cat: [
219
- { var: "state.completions" },
207
+ { var: 'state.completions' },
220
208
  [
221
209
  {
222
- agent: { var: "event.agent" },
223
- proof: { var: "event.proof" },
224
- submittedAt: { var: "$timestamp" },
210
+ agent: { var: 'event.agent' },
211
+ proof: { var: 'event.proof' },
212
+ submittedAt: { var: '$ordinal' },
225
213
  },
226
214
  ],
227
215
  ],
@@ -232,84 +220,69 @@ export const contractAgreementDef = defineFiberApp({
232
220
  dependencies: [],
233
221
  },
234
222
  {
235
- from: "ACTIVE",
236
- to: "COMPLETED",
237
- eventName: "finalize",
238
- guard: { ">=": [{ size: { var: "state.completions" } }, 2] },
223
+ from: 'ACTIVE',
224
+ to: 'COMPLETED',
225
+ eventName: 'finalize',
226
+ guard: { '>=': [{ length: [{ var: 'state.completions' }] }, 2] },
239
227
  effect: {
240
- merge: [
241
- { var: "state" },
242
- { status: "COMPLETED", completedAt: { var: "$timestamp" } },
243
- ],
228
+ merge: [{ var: 'state' }, { status: 'COMPLETED', completedAt: { var: '$ordinal' } }],
244
229
  },
245
230
  dependencies: [],
246
231
  },
247
232
  {
248
- from: "ACTIVE",
249
- to: "DISPUTED",
250
- eventName: "dispute",
251
- guard: {
252
- or: [
253
- { "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
254
- { "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
255
- ],
256
- },
233
+ from: 'ACTIVE',
234
+ to: 'DISPUTED',
235
+ eventName: 'dispute',
236
+ guard: signerIsAnyParty(['state.proposer', 'state.counterparty']),
257
237
  effect: {
258
238
  merge: [
259
- { var: "state" },
239
+ { var: 'state' },
260
240
  {
261
- status: "DISPUTED",
262
- disputedAt: { var: "$timestamp" },
263
- disputeReason: { var: "event.reason" },
264
- disputedBy: { var: "event.agent" },
241
+ status: 'DISPUTED',
242
+ disputedAt: { var: '$ordinal' },
243
+ disputeReason: { var: 'event.reason' },
244
+ disputedBy: { var: 'event.agent' },
265
245
  },
266
246
  ],
267
247
  },
268
248
  dependencies: [],
269
249
  },
270
250
  {
271
- from: "DISPUTED",
272
- to: "COMPLETED",
273
- eventName: "resolve",
251
+ from: 'DISPUTED',
252
+ to: 'COMPLETED',
253
+ eventName: 'resolve',
254
+ // 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)
274
255
  guard: {
275
256
  or: [
276
- { var: "event.judicialRuling" },
257
+ signerIsParty('state.arbitrator'),
277
258
  {
278
- and: [
279
- { "===": [{ var: "event.proposerApproves" }, true] },
280
- { "===": [{ var: "event.counterpartyApproves" }, true] },
281
- ],
259
+ and: [signerIsParty('state.proposer'), signerIsParty('state.counterparty')],
282
260
  },
283
261
  ],
284
262
  },
285
263
  effect: {
286
264
  merge: [
287
- { var: "state" },
265
+ { var: 'state' },
288
266
  {
289
- status: "COMPLETED",
290
- resolvedAt: { var: "$timestamp" },
291
- resolution: { var: "event.resolution" },
292
- rulingId: { var: "event.rulingId" },
267
+ status: 'COMPLETED',
268
+ resolvedAt: { var: '$ordinal' },
269
+ resolution: { var: 'event.resolution' },
270
+ // rulingId is recorded only on the arbitrator-resolved path
271
+ rulingId: {
272
+ if: [signerIsParty('state.arbitrator'), { var: 'event.rulingId' }, null],
273
+ },
293
274
  },
294
275
  ],
295
276
  },
296
277
  dependencies: [],
297
278
  },
298
279
  {
299
- from: "ACTIVE",
300
- to: "CANCELLED",
301
- eventName: "cancel",
302
- guard: {
303
- or: [
304
- { "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
305
- { "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
306
- ],
307
- },
280
+ from: 'ACTIVE',
281
+ to: 'CANCELLED',
282
+ eventName: 'cancel',
283
+ guard: signerIsAnyParty(['state.proposer', 'state.counterparty']),
308
284
  effect: {
309
- merge: [
310
- { var: "state" },
311
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
312
- ],
285
+ merge: [{ var: 'state' }, { status: 'CANCELLED', cancelledAt: { var: '$ordinal' } }],
313
286
  },
314
287
  dependencies: [],
315
288
  },