@ottochain/sdk 2.3.0 → 2.4.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 (209) hide show
  1. package/dist/cjs/apps/contracts/index.js +15 -8
  2. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +35 -40
  3. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +80 -37
  4. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +4 -4
  5. package/dist/cjs/apps/corporate/index.js +2 -2
  6. package/dist/cjs/apps/corporate/state-machines/corp-board.js +169 -59
  7. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +245 -47
  8. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +407 -99
  9. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +151 -37
  10. package/dist/cjs/apps/governance/index.js +14 -14
  11. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +58 -40
  12. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +46 -40
  13. package/dist/cjs/apps/governance/state-machines/dao-single.js +28 -11
  14. package/dist/cjs/apps/governance/state-machines/dao-token.js +67 -41
  15. package/dist/cjs/apps/governance/state-machines/governance-simple.js +93 -61
  16. package/dist/cjs/apps/governance/state-machines/governance-universal.js +2 -2
  17. package/dist/cjs/apps/identity/constants.js +55 -14
  18. package/dist/cjs/apps/identity/index.js +27 -11
  19. package/dist/cjs/apps/identity/state-machines/identity-agent.js +3 -3
  20. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +25 -22
  21. package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
  22. package/dist/cjs/apps/identity/state-machines/identity-universal.js +3 -3
  23. package/dist/cjs/apps/identity/state-machines/index.js +3 -1
  24. package/dist/cjs/apps/index.js +19 -8
  25. package/dist/cjs/apps/lending/assets.js +223 -0
  26. package/dist/cjs/apps/lending/credit-scoring.js +87 -0
  27. package/dist/cjs/apps/lending/eligibility.js +121 -0
  28. package/dist/cjs/apps/lending/index.js +91 -0
  29. package/dist/cjs/apps/lending/state-machines/index.js +9 -0
  30. package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +412 -0
  31. package/dist/cjs/apps/markets/index.js +21 -11
  32. package/dist/cjs/apps/markets/state-machines/market-auction.js +14 -13
  33. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +29 -24
  34. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +24 -26
  35. package/dist/cjs/apps/markets/state-machines/market-prediction.js +80 -53
  36. package/dist/cjs/apps/markets/state-machines/market-universal.js +5 -5
  37. package/dist/cjs/apps/oracles/index.js +2 -2
  38. package/dist/cjs/errors.js +3 -3
  39. package/dist/cjs/generated/google/protobuf/struct.js +4 -4
  40. package/dist/cjs/generated/index.js +11 -7
  41. package/dist/cjs/generated/openapi.js +6 -0
  42. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +50 -50
  43. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +19 -20
  44. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +13 -13
  45. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +4 -4
  46. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +124 -130
  47. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +107 -107
  48. package/dist/cjs/generated/ottochain/v1/common.js +4 -4
  49. package/dist/cjs/generated/ottochain/v1/fiber.js +4 -4
  50. package/dist/cjs/index.js +41 -7
  51. package/dist/cjs/openapi.js +2 -0
  52. package/dist/cjs/ottochain/drop-nulls.js +1 -2
  53. package/dist/cjs/ottochain/genesis-manifest.js +11 -11
  54. package/dist/cjs/ottochain/index.js +23 -13
  55. package/dist/cjs/ottochain/metagraph-client.js +65 -8
  56. package/dist/cjs/ottochain/snapshot.js +11 -12
  57. package/dist/cjs/ottochain/transaction.js +57 -14
  58. package/dist/cjs/ottochain/types.js +16 -2
  59. package/dist/cjs/privacy/index.js +14 -0
  60. package/dist/cjs/privacy/sealed-bid.js +210 -0
  61. package/dist/cjs/privacy/shield-app.js +131 -0
  62. package/dist/cjs/schema/effects.js +40 -0
  63. package/dist/cjs/schema/fiber-app.js +19 -13
  64. package/dist/cjs/schema/guard-lint.js +352 -0
  65. package/dist/cjs/schema/guards.js +246 -0
  66. package/dist/cjs/signing.js +80 -0
  67. package/dist/cjs/types.js +2 -3
  68. package/dist/cjs/validation.js +8 -8
  69. package/dist/cjs/verify.js +9 -4
  70. package/dist/cjs/zk/commit.js +53 -0
  71. package/dist/cjs/zk/guard.js +107 -0
  72. package/dist/cjs/zk/index.js +48 -0
  73. package/dist/cjs/zk/preimage.js +37 -0
  74. package/dist/cjs/zk/prover.js +87 -0
  75. package/dist/cjs/zk/registry.js +62 -0
  76. package/dist/cjs/zk/types.js +28 -0
  77. package/dist/cjs/zk/witness.js +19 -0
  78. package/dist/esm/apps/contracts/index.js +7 -3
  79. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +35 -40
  80. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +80 -37
  81. package/dist/esm/apps/contracts/state-machines/contract-universal.js +4 -4
  82. package/dist/esm/apps/corporate/state-machines/corp-board.js +169 -59
  83. package/dist/esm/apps/corporate/state-machines/corp-entity.js +245 -47
  84. package/dist/esm/apps/corporate/state-machines/corp-securities.js +407 -99
  85. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +151 -37
  86. package/dist/esm/apps/governance/state-machines/dao-multisig.js +58 -40
  87. package/dist/esm/apps/governance/state-machines/dao-reputation.js +46 -40
  88. package/dist/esm/apps/governance/state-machines/dao-single.js +28 -11
  89. package/dist/esm/apps/governance/state-machines/dao-token.js +67 -41
  90. package/dist/esm/apps/governance/state-machines/governance-simple.js +93 -61
  91. package/dist/esm/apps/governance/state-machines/governance-universal.js +2 -2
  92. package/dist/esm/apps/identity/constants.js +51 -12
  93. package/dist/esm/apps/identity/index.js +12 -7
  94. package/dist/esm/apps/identity/state-machines/identity-agent.js +3 -3
  95. package/dist/esm/apps/identity/state-machines/identity-oracle.js +25 -22
  96. package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
  97. package/dist/esm/apps/identity/state-machines/identity-universal.js +3 -3
  98. package/dist/esm/apps/identity/state-machines/index.js +1 -0
  99. package/dist/esm/apps/index.js +1 -0
  100. package/dist/esm/apps/lending/assets.js +207 -0
  101. package/dist/esm/apps/lending/credit-scoring.js +81 -0
  102. package/dist/esm/apps/lending/eligibility.js +115 -0
  103. package/dist/esm/apps/lending/index.js +69 -0
  104. package/dist/esm/apps/lending/state-machines/index.js +5 -0
  105. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +409 -0
  106. package/dist/esm/apps/markets/index.js +8 -4
  107. package/dist/esm/apps/markets/state-machines/market-auction.js +14 -13
  108. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +29 -24
  109. package/dist/esm/apps/markets/state-machines/market-group-buy.js +24 -26
  110. package/dist/esm/apps/markets/state-machines/market-prediction.js +80 -53
  111. package/dist/esm/apps/markets/state-machines/market-universal.js +5 -5
  112. package/dist/esm/generated/index.js +9 -5
  113. package/dist/esm/generated/openapi.js +5 -0
  114. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +46 -46
  115. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +114 -120
  116. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +100 -100
  117. package/dist/esm/index.js +21 -2
  118. package/dist/esm/openapi.js +1 -0
  119. package/dist/esm/ottochain/genesis-manifest.js +9 -9
  120. package/dist/esm/ottochain/index.js +2 -3
  121. package/dist/esm/ottochain/metagraph-client.js +65 -8
  122. package/dist/esm/ottochain/snapshot.js +4 -4
  123. package/dist/esm/ottochain/transaction.js +43 -3
  124. package/dist/esm/ottochain/types.js +15 -1
  125. package/dist/esm/privacy/index.js +6 -0
  126. package/dist/esm/privacy/sealed-bid.js +206 -0
  127. package/dist/esm/privacy/shield-app.js +127 -0
  128. package/dist/esm/schema/effects.js +35 -0
  129. package/dist/esm/schema/fiber-app.js +13 -6
  130. package/dist/esm/schema/guard-lint.js +346 -0
  131. package/dist/esm/schema/guards.js +229 -0
  132. package/dist/esm/signing.js +74 -0
  133. package/dist/esm/verify.js +8 -2
  134. package/dist/esm/zk/commit.js +44 -0
  135. package/dist/esm/zk/guard.js +99 -0
  136. package/dist/esm/zk/index.js +19 -0
  137. package/dist/esm/zk/preimage.js +30 -0
  138. package/dist/esm/zk/prover.js +82 -0
  139. package/dist/esm/zk/registry.js +55 -0
  140. package/dist/esm/zk/types.js +25 -0
  141. package/dist/esm/zk/witness.js +15 -0
  142. package/dist/types/apps/contracts/index.d.ts +69 -209
  143. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +20 -95
  144. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +46 -112
  145. package/dist/types/apps/corporate/index.d.ts +1040 -304
  146. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +188 -52
  147. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +267 -62
  148. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +355 -131
  149. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +225 -53
  150. package/dist/types/apps/governance/index.d.ts +296 -398
  151. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +77 -92
  152. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +42 -66
  153. package/dist/types/apps/governance/state-machines/dao-single.d.ts +25 -47
  154. package/dist/types/apps/governance/state-machines/dao-token.d.ts +60 -49
  155. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +87 -117
  156. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +2 -2
  157. package/dist/types/apps/identity/constants.d.ts +32 -4
  158. package/dist/types/apps/identity/index.d.ts +378 -94
  159. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +16 -87
  160. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
  161. package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
  162. package/dist/types/apps/index.d.ts +1 -0
  163. package/dist/types/apps/lending/assets.d.ts +258 -0
  164. package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
  165. package/dist/types/apps/lending/eligibility.d.ts +83 -0
  166. package/dist/types/apps/lending/index.d.ts +548 -0
  167. package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
  168. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +528 -0
  169. package/dist/types/apps/markets/index.d.ts +108 -203
  170. package/dist/types/apps/markets/state-machines/market-auction.d.ts +13 -37
  171. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +16 -34
  172. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +17 -43
  173. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +51 -72
  174. package/dist/types/apps/markets/state-machines/market-universal.d.ts +5 -5
  175. package/dist/types/generated/index.d.ts +5 -5
  176. package/dist/types/generated/openapi.d.ts +1257 -0
  177. package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
  178. package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
  179. package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
  180. package/dist/types/index.d.ts +6 -2
  181. package/dist/types/openapi.d.ts +22 -0
  182. package/dist/types/ottochain/genesis-manifest.d.ts +5 -5
  183. package/dist/types/ottochain/index.d.ts +5 -6
  184. package/dist/types/ottochain/metagraph-client.d.ts +49 -7
  185. package/dist/types/ottochain/snapshot.d.ts +6 -6
  186. package/dist/types/ottochain/transaction.d.ts +33 -1
  187. package/dist/types/ottochain/types.d.ts +335 -30
  188. package/dist/types/privacy/index.d.ts +6 -0
  189. package/dist/types/privacy/sealed-bid.d.ts +348 -0
  190. package/dist/types/privacy/shield-app.d.ts +48 -0
  191. package/dist/types/schema/effects.d.ts +34 -0
  192. package/dist/types/schema/fiber-app.d.ts +1 -2
  193. package/dist/types/schema/guard-lint.d.ts +111 -0
  194. package/dist/types/schema/guards.d.ts +134 -0
  195. package/dist/types/signing.d.ts +45 -0
  196. package/dist/types/validation.d.ts +22 -217
  197. package/dist/types/verify.d.ts +4 -0
  198. package/dist/types/zk/commit.d.ts +28 -0
  199. package/dist/types/zk/guard.d.ts +46 -0
  200. package/dist/types/zk/index.d.ts +19 -0
  201. package/dist/types/zk/preimage.d.ts +10 -0
  202. package/dist/types/zk/prover.d.ts +34 -0
  203. package/dist/types/zk/registry.d.ts +34 -0
  204. package/dist/types/zk/types.d.ts +33 -0
  205. package/dist/types/zk/witness.d.ts +40 -0
  206. package/package.json +27 -13
  207. package/dist/cjs/ottochain/normalize.js +0 -186
  208. package/dist/esm/ottochain/normalize.js +0 -179
  209. package/dist/types/ottochain/normalize.d.ts +0 -79
@@ -7,7 +7,7 @@
7
7
  * @example
8
8
  * ```typescript
9
9
  * import {
10
- * ContractState,
10
+ * State,
11
11
  * Contract,
12
12
  * getContractDefinition,
13
13
  * CONTRACTS_DEFINITIONS
@@ -20,10 +20,14 @@
20
20
  * @packageDocumentation
21
21
  */
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.getEscrowDefinition = exports.getContractDefinition = exports.CONTRACTS_DEFINITIONS = exports.contractEscrowDef = exports.contractAgreementDef = exports.contractUniversalDef = exports.contractStateToJSON = exports.contractStateFromJSON = exports.ContractDefinition = exports.DisputeContractRequest = exports.RejectContractRequest = exports.CompleteContractRequest = exports.AcceptContractRequest = exports.ProposeContractRequest = exports.Contract = exports.ContractState = void 0;
24
- // Re-export generated protobuf types (source of truth)
23
+ exports.CONTRACTS_DEFINITIONS = exports.contractEscrowDef = exports.contractAgreementDef = exports.contractUniversalDef = exports.contractStateToJSON = exports.contractStateFromJSON = exports.ContractState = exports.stateToJSON = exports.stateFromJSON = exports.ContractDefinition = exports.DisputeContractRequest = exports.RejectContractRequest = exports.CompleteContractRequest = exports.AcceptContractRequest = exports.ProposeContractRequest = exports.Contract = exports.State = void 0;
24
+ exports.getContractDefinition = getContractDefinition;
25
+ exports.getEscrowDefinition = getEscrowDefinition;
26
+ // Re-export generated protobuf types (source of truth).
27
+ // The nested lifecycle enum dropped its app prefix in the proto; under this
28
+ // app-scoped entrypoint it is unambiguously State.
25
29
  var contract_js_1 = require("../../generated/ottochain/apps/contracts/v1/contract.js");
26
- Object.defineProperty(exports, "ContractState", { enumerable: true, get: function () { return contract_js_1.ContractState; } });
30
+ Object.defineProperty(exports, "State", { enumerable: true, get: function () { return contract_js_1.State; } });
27
31
  Object.defineProperty(exports, "Contract", { enumerable: true, get: function () { return contract_js_1.Contract; } });
28
32
  Object.defineProperty(exports, "ProposeContractRequest", { enumerable: true, get: function () { return contract_js_1.ProposeContractRequest; } });
29
33
  Object.defineProperty(exports, "AcceptContractRequest", { enumerable: true, get: function () { return contract_js_1.AcceptContractRequest; } });
@@ -31,8 +35,13 @@ Object.defineProperty(exports, "CompleteContractRequest", { enumerable: true, ge
31
35
  Object.defineProperty(exports, "RejectContractRequest", { enumerable: true, get: function () { return contract_js_1.RejectContractRequest; } });
32
36
  Object.defineProperty(exports, "DisputeContractRequest", { enumerable: true, get: function () { return contract_js_1.DisputeContractRequest; } });
33
37
  Object.defineProperty(exports, "ContractDefinition", { enumerable: true, get: function () { return contract_js_1.ContractDefinition; } });
34
- Object.defineProperty(exports, "contractStateFromJSON", { enumerable: true, get: function () { return contract_js_1.contractStateFromJSON; } });
35
- Object.defineProperty(exports, "contractStateToJSON", { enumerable: true, get: function () { return contract_js_1.contractStateToJSON; } });
38
+ Object.defineProperty(exports, "stateFromJSON", { enumerable: true, get: function () { return contract_js_1.stateFromJSON; } });
39
+ Object.defineProperty(exports, "stateToJSON", { enumerable: true, get: function () { return contract_js_1.stateToJSON; } });
40
+ // Deprecated app-prefixed alias (renamed to State); kept for compat.
41
+ var contract_js_2 = require("../../generated/ottochain/apps/contracts/v1/contract.js");
42
+ Object.defineProperty(exports, "ContractState", { enumerable: true, get: function () { return contract_js_2.State; } });
43
+ Object.defineProperty(exports, "contractStateFromJSON", { enumerable: true, get: function () { return contract_js_2.stateFromJSON; } });
44
+ Object.defineProperty(exports, "contractStateToJSON", { enumerable: true, get: function () { return contract_js_2.stateToJSON; } });
36
45
  // ---------------------------------------------------------------------------
37
46
  // State Machine Definitions (generated from JSON at build time)
38
47
  // ---------------------------------------------------------------------------
@@ -53,9 +62,7 @@ exports.CONTRACTS_DEFINITIONS = {
53
62
  function getContractDefinition(type = "agreement") {
54
63
  return exports.CONTRACTS_DEFINITIONS[type];
55
64
  }
56
- exports.getContractDefinition = getContractDefinition;
57
65
  /** @deprecated Use getContractDefinition('escrow') */
58
66
  function getEscrowDefinition() {
59
67
  return index_js_1.contractEscrowDef;
60
68
  }
61
- exports.getEscrowDefinition = getEscrowDefinition;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.contractAgreementDef = 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
  * Two-party agreement with mutual completion attestation and dispute resolution.
7
8
  */
@@ -36,7 +37,7 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
36
37
  },
37
38
  },
38
39
  createSchema: {
39
- required: ["proposer", "counterparty"],
40
+ required: ["proposer", "counterparty", "arbitrator"],
40
41
  properties: {
41
42
  proposer: {
42
43
  type: "address",
@@ -48,6 +49,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
48
49
  description: "DAG address of the counterparty",
49
50
  immutable: true,
50
51
  },
52
+ arbitrator: {
53
+ type: "address",
54
+ description: "DAG address of the arbitrator authorized to resolve a dispute",
55
+ immutable: true,
56
+ },
51
57
  },
52
58
  },
53
59
  stateSchema: {
@@ -55,6 +61,7 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
55
61
  status: { type: "string" },
56
62
  proposer: { type: "address" },
57
63
  counterparty: { type: "address" },
64
+ arbitrator: { type: "address", immutable: true },
58
65
  completions: { type: "array" },
59
66
  acceptedAt: { type: "integer", nullable: true },
60
67
  rejectedAt: { type: "integer", nullable: true },
@@ -78,9 +85,6 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
78
85
  dispute: { properties: { reason: { type: "string" } } },
79
86
  resolve: {
80
87
  properties: {
81
- judicialRuling: { type: "boolean", nullable: true },
82
- proposerApproves: { type: "boolean", nullable: true },
83
- counterpartyApproves: { type: "boolean", nullable: true },
84
88
  resolution: { type: "string" },
85
89
  rulingId: { type: "string", nullable: true },
86
90
  },
@@ -148,11 +152,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
148
152
  from: "PROPOSED",
149
153
  to: "ACTIVE",
150
154
  eventName: "accept",
151
- guard: { "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
155
+ guard: (0, guards_js_1.signerIsParty)("state.counterparty"),
152
156
  effect: {
153
157
  merge: [
154
158
  { var: "state" },
155
- { status: "ACTIVE", acceptedAt: { var: "$timestamp" } },
159
+ { status: "ACTIVE", acceptedAt: { var: "$ordinal" } },
156
160
  ],
157
161
  },
158
162
  dependencies: [],
@@ -161,13 +165,13 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
161
165
  from: "PROPOSED",
162
166
  to: "REJECTED",
163
167
  eventName: "reject",
164
- guard: { "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
168
+ guard: (0, guards_js_1.signerIsParty)("state.counterparty"),
165
169
  effect: {
166
170
  merge: [
167
171
  { var: "state" },
168
172
  {
169
173
  status: "REJECTED",
170
- rejectedAt: { var: "$timestamp" },
174
+ rejectedAt: { var: "$ordinal" },
171
175
  rejectReason: { var: "event.reason" },
172
176
  },
173
177
  ],
@@ -178,11 +182,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
178
182
  from: "PROPOSED",
179
183
  to: "CANCELLED",
180
184
  eventName: "cancel",
181
- guard: { "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
185
+ guard: (0, guards_js_1.signerIsParty)("state.proposer"),
182
186
  effect: {
183
187
  merge: [
184
188
  { var: "state" },
185
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
189
+ { status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
186
190
  ],
187
191
  },
188
192
  dependencies: [],
@@ -193,14 +197,7 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
193
197
  eventName: "submit_completion",
194
198
  guard: {
195
199
  and: [
196
- {
197
- or: [
198
- { "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
199
- {
200
- "===": [{ var: "event.agent" }, { var: "state.counterparty" }],
201
- },
202
- ],
203
- },
200
+ (0, guards_js_1.signerIsAnyParty)(["state.proposer", "state.counterparty"]),
204
201
  {
205
202
  "!": [
206
203
  {
@@ -224,7 +221,7 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
224
221
  {
225
222
  agent: { var: "event.agent" },
226
223
  proof: { var: "event.proof" },
227
- submittedAt: { var: "$timestamp" },
224
+ submittedAt: { var: "$ordinal" },
228
225
  },
229
226
  ],
230
227
  ],
@@ -238,11 +235,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
238
235
  from: "ACTIVE",
239
236
  to: "COMPLETED",
240
237
  eventName: "finalize",
241
- guard: { ">=": [{ size: { var: "state.completions" } }, 2] },
238
+ guard: { ">=": [{ length: [{ var: "state.completions" }] }, 2] },
242
239
  effect: {
243
240
  merge: [
244
241
  { var: "state" },
245
- { status: "COMPLETED", completedAt: { var: "$timestamp" } },
242
+ { status: "COMPLETED", completedAt: { var: "$ordinal" } },
246
243
  ],
247
244
  },
248
245
  dependencies: [],
@@ -251,18 +248,13 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
251
248
  from: "ACTIVE",
252
249
  to: "DISPUTED",
253
250
  eventName: "dispute",
254
- guard: {
255
- or: [
256
- { "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
257
- { "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
258
- ],
259
- },
251
+ guard: (0, guards_js_1.signerIsAnyParty)(["state.proposer", "state.counterparty"]),
260
252
  effect: {
261
253
  merge: [
262
254
  { var: "state" },
263
255
  {
264
256
  status: "DISPUTED",
265
- disputedAt: { var: "$timestamp" },
257
+ disputedAt: { var: "$ordinal" },
266
258
  disputeReason: { var: "event.reason" },
267
259
  disputedBy: { var: "event.agent" },
268
260
  },
@@ -274,13 +266,14 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
274
266
  from: "DISPUTED",
275
267
  to: "COMPLETED",
276
268
  eventName: "resolve",
269
+ // 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)
277
270
  guard: {
278
271
  or: [
279
- { var: "event.judicialRuling" },
272
+ (0, guards_js_1.signerIsParty)("state.arbitrator"),
280
273
  {
281
274
  and: [
282
- { "===": [{ var: "event.proposerApproves" }, true] },
283
- { "===": [{ var: "event.counterpartyApproves" }, true] },
275
+ (0, guards_js_1.signerIsParty)("state.proposer"),
276
+ (0, guards_js_1.signerIsParty)("state.counterparty"),
284
277
  ],
285
278
  },
286
279
  ],
@@ -290,9 +283,16 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
290
283
  { var: "state" },
291
284
  {
292
285
  status: "COMPLETED",
293
- resolvedAt: { var: "$timestamp" },
286
+ resolvedAt: { var: "$ordinal" },
294
287
  resolution: { var: "event.resolution" },
295
- rulingId: { var: "event.rulingId" },
288
+ // rulingId is recorded only on the arbitrator-resolved path
289
+ rulingId: {
290
+ if: [
291
+ (0, guards_js_1.signerIsParty)("state.arbitrator"),
292
+ { var: "event.rulingId" },
293
+ null,
294
+ ],
295
+ },
296
296
  },
297
297
  ],
298
298
  },
@@ -302,16 +302,11 @@ exports.contractAgreementDef = (0, fiber_app_js_1.defineFiberApp)({
302
302
  from: "ACTIVE",
303
303
  to: "CANCELLED",
304
304
  eventName: "cancel",
305
- guard: {
306
- or: [
307
- { "===": [{ var: "event.agent" }, { var: "state.proposer" }] },
308
- { "===": [{ var: "event.agent" }, { var: "state.counterparty" }] },
309
- ],
310
- },
305
+ guard: (0, guards_js_1.signerIsAnyParty)(["state.proposer", "state.counterparty"]),
311
306
  effect: {
312
307
  merge: [
313
308
  { var: "state" },
314
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
309
+ { status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
315
310
  ],
316
311
  },
317
312
  dependencies: [],
@@ -2,6 +2,7 @@
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
  */
@@ -41,7 +42,7 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
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
48
  type: "address",
@@ -51,6 +52,11 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
51
52
  type: "address",
52
53
  description: "DAG address of the beneficiary",
53
54
  },
55
+ arbiter: {
56
+ type: "address",
57
+ description: "DAG address of the arbiter authorized to rule on a dispute",
58
+ immutable: true,
59
+ },
54
60
  requiredAmount: {
55
61
  type: "number",
56
62
  minimum: 0,
@@ -77,6 +83,7 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
77
83
  properties: {
78
84
  depositor: { type: "address" },
79
85
  beneficiary: { type: "address" },
86
+ arbiter: { type: "address", immutable: true },
80
87
  requiredAmount: { type: "number" },
81
88
  balance: { type: "number" },
82
89
  fundedAt: { type: "integer", nullable: true },
@@ -111,16 +118,11 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
111
118
  dispute: {},
112
119
  ruling: {
113
120
  properties: {
114
- judicialRuling: { type: "boolean" },
115
121
  splits: { type: "array" },
116
122
  rulingId: { type: "string" },
117
123
  },
118
124
  },
119
- refund: {
120
- properties: {
121
- mutualConsent: { type: "boolean", nullable: true },
122
- },
123
- },
125
+ refund: {},
124
126
  cancel: {},
125
127
  },
126
128
  states: {
@@ -205,14 +207,14 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
205
207
  eventName: "deposit",
206
208
  guard: {
207
209
  and: [
208
- { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
210
+ (0, guards_js_1.signerIsParty)("state.depositor"),
209
211
  { ">=": [{ var: "event.amount" }, { var: "state.requiredAmount" }] },
210
212
  ],
211
213
  },
212
214
  effect: {
213
215
  merge: [
214
216
  { var: "state" },
215
- { balance: { var: "event.amount" }, fundedAt: { var: "$timestamp" } },
217
+ { balance: { var: "event.amount" }, fundedAt: { var: "$ordinal" } },
216
218
  ],
217
219
  },
218
220
  dependencies: [],
@@ -223,12 +225,12 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
223
225
  eventName: "activate",
224
226
  guard: {
225
227
  or: [
226
- { "===": [{ var: "event.agent" }, { var: "state.beneficiary" }] },
228
+ (0, guards_js_1.signerIsParty)("state.beneficiary"),
227
229
  { var: "state.autoActivate" },
228
230
  ],
229
231
  },
230
232
  effect: {
231
- merge: [{ var: "state" }, { activatedAt: { var: "$timestamp" } }],
233
+ merge: [{ var: "state" }, { activatedAt: { var: "$ordinal" } }],
232
234
  },
233
235
  dependencies: [],
234
236
  },
@@ -236,7 +238,7 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
236
238
  from: "ACTIVE",
237
239
  to: "RELEASING",
238
240
  eventName: "request_release",
239
- guard: { "===": [{ var: "event.agent" }, { var: "state.beneficiary" }] },
241
+ guard: (0, guards_js_1.signerIsParty)("state.beneficiary"),
240
242
  effect: {
241
243
  merge: [
242
244
  { var: "state" },
@@ -245,10 +247,10 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
245
247
  requestedBy: { var: "event.agent" },
246
248
  amount: { var: "event.amount" },
247
249
  reason: { var: "event.reason" },
248
- requestedAt: { var: "$timestamp" },
250
+ requestedAt: { var: "$ordinal" },
249
251
  },
250
252
  releaseDeadline: {
251
- "+": [{ var: "$timestamp" }, { var: "state.releaseWindowMs" }],
253
+ "+": [{ var: "$ordinal" }, { var: "state.releaseWindowMs" }],
252
254
  },
253
255
  },
254
256
  ],
@@ -261,15 +263,15 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
261
263
  eventName: "approve_release",
262
264
  guard: {
263
265
  or: [
264
- { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
265
- { ">=": [{ var: "$timestamp" }, { var: "state.releaseDeadline" }] },
266
+ (0, guards_js_1.signerIsParty)("state.depositor"),
267
+ { ">=": [{ var: "$ordinal" }, { var: "state.releaseDeadline" }] },
266
268
  ],
267
269
  },
268
270
  effect: {
269
271
  merge: [
270
272
  { var: "state" },
271
273
  {
272
- releasedAt: { var: "$timestamp" },
274
+ releasedAt: { var: "$ordinal" },
273
275
  releasedTo: { var: "state.beneficiary" },
274
276
  },
275
277
  ],
@@ -282,24 +284,37 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
282
284
  eventName: "dispute",
283
285
  guard: {
284
286
  and: [
285
- { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
286
- { "<": [{ var: "$timestamp" }, { var: "state.releaseDeadline" }] },
287
+ (0, guards_js_1.signerIsParty)("state.depositor"),
288
+ { "<": [{ var: "$ordinal" }, { var: "state.releaseDeadline" }] },
287
289
  ],
288
290
  },
289
291
  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" },
292
+ merge: [
293
+ { var: "state" },
294
+ { disputedAt: { var: "$ordinal" } },
295
+ {
296
+ // A3 fix: transition-level `spawns` is dropped by the chain. No Judiciary state machine is
297
+ // defined to inline under `_spawn`, and escrow already resolves disputes via its own pinned
298
+ // `arbiter` (the `ruling` transition) — the spawned Judiciary was fire-and-forget (never read
299
+ // by escrow). So the dispute case is surfaced to the judiciary subsystem as an `_emit`
300
+ // notification instead of a child fiber.
301
+ _emit: [
302
+ {
303
+ name: "dispute_opened",
304
+ data: {
305
+ caseType: "escrow_dispute",
306
+ plaintiff: { var: "state.depositor" },
307
+ defendant: { var: "state.beneficiary" },
308
+ claim: {
309
+ escrowId: { var: "machineId" },
310
+ amount: { var: "state.balance" },
311
+ },
312
+ },
313
+ destination: "Judiciary",
314
+ },
315
+ ],
301
316
  },
302
- },
317
+ ],
303
318
  },
304
319
  dependencies: [],
305
320
  },
@@ -307,7 +322,29 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
307
322
  from: "DISPUTED",
308
323
  to: "SPLIT",
309
324
  eventName: "ruling",
310
- guard: { var: "event.judicialRuling" },
325
+ // 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
+ guard: {
327
+ and: [
328
+ (0, guards_js_1.signerIsParty)("state.arbiter"),
329
+ {
330
+ "===": [
331
+ {
332
+ reduce: [
333
+ { var: "event.splits" },
334
+ {
335
+ "+": [
336
+ { var: "accumulator" },
337
+ { var: "current.amount" },
338
+ ],
339
+ },
340
+ 0,
341
+ ],
342
+ },
343
+ { var: "state.balance" },
344
+ ],
345
+ },
346
+ ],
347
+ },
311
348
  effect: {
312
349
  merge: [
313
350
  { var: "state" },
@@ -323,14 +360,20 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
323
360
  from: "ACTIVE",
324
361
  to: "REFUNDED",
325
362
  eventName: "refund",
363
+ // 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
364
  guard: {
327
365
  or: [
328
- { var: "event.mutualConsent" },
329
- { ">=": [{ var: "$timestamp" }, { var: "state.expiresAt" }] },
366
+ {
367
+ and: [
368
+ (0, guards_js_1.signerIsParty)("state.depositor"),
369
+ (0, guards_js_1.signerIsParty)("state.beneficiary"),
370
+ ],
371
+ },
372
+ { ">=": [{ var: "$ordinal" }, { var: "state.expiresAt" }] },
330
373
  ],
331
374
  },
332
375
  effect: {
333
- merge: [{ var: "state" }, { refundedAt: { var: "$timestamp" } }],
376
+ merge: [{ var: "state" }, { refundedAt: { var: "$ordinal" } }],
334
377
  },
335
378
  dependencies: [],
336
379
  },
@@ -338,9 +381,9 @@ exports.contractEscrowDef = (0, fiber_app_js_1.defineFiberApp)({
338
381
  from: "CREATED",
339
382
  to: "REFUNDED",
340
383
  eventName: "cancel",
341
- guard: { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
384
+ guard: (0, guards_js_1.signerIsParty)("state.depositor"),
342
385
  effect: {
343
- merge: [{ var: "state" }, { refundedAt: { var: "$timestamp" } }],
386
+ merge: [{ var: "state" }, { refundedAt: { var: "$ordinal" } }],
344
387
  },
345
388
  dependencies: [],
346
389
  },
@@ -77,7 +77,7 @@ exports.contractUniversalDef = (0, fiber_app_js_1.defineFiberApp)({
77
77
  effect: {
78
78
  merge: [
79
79
  { var: "state" },
80
- { status: "ACTIVE", acceptedAt: { var: "$timestamp" } },
80
+ { status: "ACTIVE", acceptedAt: { var: "$ordinal" } },
81
81
  ],
82
82
  },
83
83
  dependencies: [],
@@ -90,7 +90,7 @@ exports.contractUniversalDef = (0, fiber_app_js_1.defineFiberApp)({
90
90
  effect: {
91
91
  merge: [
92
92
  { var: "state" },
93
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
93
+ { status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
94
94
  ],
95
95
  },
96
96
  dependencies: [],
@@ -103,7 +103,7 @@ exports.contractUniversalDef = (0, fiber_app_js_1.defineFiberApp)({
103
103
  effect: {
104
104
  merge: [
105
105
  { var: "state" },
106
- { status: "COMPLETED", completedAt: { var: "$timestamp" } },
106
+ { status: "COMPLETED", completedAt: { var: "$ordinal" } },
107
107
  ],
108
108
  },
109
109
  dependencies: [],
@@ -116,7 +116,7 @@ exports.contractUniversalDef = (0, fiber_app_js_1.defineFiberApp)({
116
116
  effect: {
117
117
  merge: [
118
118
  { var: "state" },
119
- { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
119
+ { status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
120
120
  ],
121
121
  },
122
122
  dependencies: [],
@@ -22,7 +22,8 @@
22
22
  */
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.corpBoardDef = exports.corpEntityDef = exports.resolutionStatusToJSON = exports.resolutionStatusFromJSON = exports.boardMeetingTypeToJSON = exports.boardMeetingTypeFromJSON = exports.officerStatusToJSON = exports.officerStatusFromJSON = exports.directorStatusToJSON = exports.directorStatusFromJSON = exports.entityStateToJSON = exports.entityStateFromJSON = exports.entityTypeToJSON = exports.entityTypeFromJSON = exports.ProposeResolutionRequest = exports.IssueSharesRequest = exports.AppointDirectorRequest = exports.CreateEntityRequest = exports.ComplianceRequirement = exports.FilingRecord = exports.CorporateCompliance = exports.SecurityTransfer = exports.SecurityIssuance = exports.CorporateSecurities = exports.ResolutionVote = exports.CorporateResolution = exports.ShareHolding = exports.Shareholder = exports.CorporateShareholders = exports.OfficerAction = exports.Officer = exports.CorporateOfficers = exports.MeetingAttendee = exports.BoardMeeting = exports.QuorumRules = exports.SeatInfo = exports.Director = exports.CorporateBoard = exports.ShareStructure = exports.Incorporator = exports.RegisteredAgent = exports.CorporateEntity = exports.ShareClass = exports.Jurisdiction = exports.ResolutionStatus = exports.BoardMeetingType = exports.OfficerStatus = exports.DirectorStatus = exports.EntityState = exports.EntityType = void 0;
25
- exports.getCorporateDefinition = exports.CORPORATE_DEFINITIONS = exports.corpSecuritiesDef = exports.corpShareholdersDef = void 0;
25
+ exports.CORPORATE_DEFINITIONS = exports.corpSecuritiesDef = exports.corpShareholdersDef = void 0;
26
+ exports.getCorporateDefinition = getCorporateDefinition;
26
27
  // Re-export generated protobuf types (source of truth)
27
28
  var corporate_js_1 = require("../../generated/ottochain/apps/corporate/v1/corporate.js");
28
29
  Object.defineProperty(exports, "EntityType", { enumerable: true, get: function () { return corporate_js_1.EntityType; } });
@@ -95,4 +96,3 @@ exports.CORPORATE_DEFINITIONS = {
95
96
  function getCorporateDefinition(type) {
96
97
  return exports.CORPORATE_DEFINITIONS[type];
97
98
  }
98
- exports.getCorporateDefinition = getCorporateDefinition;