@ottochain/sdk 2.2.5 → 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 (222) hide show
  1. package/dist/cjs/apps/contracts/index.js +15 -8
  2. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +89 -46
  3. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +152 -45
  4. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +40 -8
  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 +85 -43
  12. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +73 -43
  13. package/dist/cjs/apps/governance/state-machines/dao-single.js +55 -14
  14. package/dist/cjs/apps/governance/state-machines/dao-token.js +103 -45
  15. package/dist/cjs/apps/governance/state-machines/governance-simple.js +129 -65
  16. package/dist/cjs/apps/governance/state-machines/governance-universal.js +29 -5
  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 +57 -9
  20. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +70 -27
  21. package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
  22. package/dist/cjs/apps/identity/state-machines/identity-universal.js +30 -6
  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 +44 -19
  33. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +54 -29
  34. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +53 -31
  35. package/dist/cjs/apps/markets/state-machines/market-prediction.js +120 -61
  36. package/dist/cjs/apps/markets/state-machines/market-universal.js +50 -10
  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 +1722 -1
  49. package/dist/cjs/generated/ottochain/v1/fiber.js +355 -5
  50. package/dist/cjs/generated/ottochain/v1/messages.js +775 -3
  51. package/dist/cjs/generated/ottochain/v1/records.js +350 -3
  52. package/dist/cjs/index.js +45 -7
  53. package/dist/cjs/openapi.js +2 -0
  54. package/dist/cjs/ottochain/drop-nulls.js +1 -2
  55. package/dist/cjs/ottochain/genesis-manifest.js +193 -0
  56. package/dist/cjs/ottochain/index.js +27 -13
  57. package/dist/cjs/ottochain/metagraph-client.js +65 -8
  58. package/dist/cjs/ottochain/snapshot.js +11 -12
  59. package/dist/cjs/ottochain/transaction.js +57 -14
  60. package/dist/cjs/ottochain/types.js +19 -1
  61. package/dist/cjs/privacy/index.js +14 -0
  62. package/dist/cjs/privacy/sealed-bid.js +210 -0
  63. package/dist/cjs/privacy/shield-app.js +131 -0
  64. package/dist/cjs/schema/effects.js +40 -0
  65. package/dist/cjs/schema/fiber-app.js +19 -13
  66. package/dist/cjs/schema/guard-lint.js +352 -0
  67. package/dist/cjs/schema/guards.js +246 -0
  68. package/dist/cjs/signing.js +80 -0
  69. package/dist/cjs/types.js +2 -3
  70. package/dist/cjs/validation.js +8 -8
  71. package/dist/cjs/verify.js +9 -4
  72. package/dist/cjs/zk/commit.js +53 -0
  73. package/dist/cjs/zk/guard.js +107 -0
  74. package/dist/cjs/zk/index.js +48 -0
  75. package/dist/cjs/zk/preimage.js +37 -0
  76. package/dist/cjs/zk/prover.js +87 -0
  77. package/dist/cjs/zk/registry.js +62 -0
  78. package/dist/cjs/zk/types.js +28 -0
  79. package/dist/cjs/zk/witness.js +19 -0
  80. package/dist/esm/apps/contracts/index.js +7 -3
  81. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +89 -46
  82. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +152 -45
  83. package/dist/esm/apps/contracts/state-machines/contract-universal.js +40 -8
  84. package/dist/esm/apps/corporate/state-machines/corp-board.js +169 -59
  85. package/dist/esm/apps/corporate/state-machines/corp-entity.js +245 -47
  86. package/dist/esm/apps/corporate/state-machines/corp-securities.js +407 -99
  87. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +151 -37
  88. package/dist/esm/apps/governance/state-machines/dao-multisig.js +85 -43
  89. package/dist/esm/apps/governance/state-machines/dao-reputation.js +73 -43
  90. package/dist/esm/apps/governance/state-machines/dao-single.js +55 -14
  91. package/dist/esm/apps/governance/state-machines/dao-token.js +103 -45
  92. package/dist/esm/apps/governance/state-machines/governance-simple.js +129 -65
  93. package/dist/esm/apps/governance/state-machines/governance-universal.js +29 -5
  94. package/dist/esm/apps/identity/constants.js +51 -12
  95. package/dist/esm/apps/identity/index.js +12 -7
  96. package/dist/esm/apps/identity/state-machines/identity-agent.js +57 -9
  97. package/dist/esm/apps/identity/state-machines/identity-oracle.js +70 -27
  98. package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
  99. package/dist/esm/apps/identity/state-machines/identity-universal.js +30 -6
  100. package/dist/esm/apps/identity/state-machines/index.js +1 -0
  101. package/dist/esm/apps/index.js +1 -0
  102. package/dist/esm/apps/lending/assets.js +207 -0
  103. package/dist/esm/apps/lending/credit-scoring.js +81 -0
  104. package/dist/esm/apps/lending/eligibility.js +115 -0
  105. package/dist/esm/apps/lending/index.js +69 -0
  106. package/dist/esm/apps/lending/state-machines/index.js +5 -0
  107. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +409 -0
  108. package/dist/esm/apps/markets/index.js +8 -4
  109. package/dist/esm/apps/markets/state-machines/market-auction.js +44 -19
  110. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +54 -29
  111. package/dist/esm/apps/markets/state-machines/market-group-buy.js +53 -31
  112. package/dist/esm/apps/markets/state-machines/market-prediction.js +120 -61
  113. package/dist/esm/apps/markets/state-machines/market-universal.js +50 -10
  114. package/dist/esm/generated/index.js +9 -5
  115. package/dist/esm/generated/openapi.js +5 -0
  116. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +46 -46
  117. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +114 -120
  118. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +100 -100
  119. package/dist/esm/generated/ottochain/v1/common.js +1718 -0
  120. package/dist/esm/generated/ottochain/v1/fiber.js +351 -1
  121. package/dist/esm/generated/ottochain/v1/messages.js +774 -2
  122. package/dist/esm/generated/ottochain/v1/records.js +349 -2
  123. package/dist/esm/index.js +23 -2
  124. package/dist/esm/openapi.js +1 -0
  125. package/dist/esm/ottochain/genesis-manifest.js +189 -0
  126. package/dist/esm/ottochain/index.js +4 -3
  127. package/dist/esm/ottochain/metagraph-client.js +65 -8
  128. package/dist/esm/ottochain/snapshot.js +4 -4
  129. package/dist/esm/ottochain/transaction.js +43 -3
  130. package/dist/esm/ottochain/types.js +18 -0
  131. package/dist/esm/privacy/index.js +6 -0
  132. package/dist/esm/privacy/sealed-bid.js +206 -0
  133. package/dist/esm/privacy/shield-app.js +127 -0
  134. package/dist/esm/schema/effects.js +35 -0
  135. package/dist/esm/schema/fiber-app.js +13 -6
  136. package/dist/esm/schema/guard-lint.js +346 -0
  137. package/dist/esm/schema/guards.js +229 -0
  138. package/dist/esm/signing.js +74 -0
  139. package/dist/esm/verify.js +8 -2
  140. package/dist/esm/zk/commit.js +44 -0
  141. package/dist/esm/zk/guard.js +99 -0
  142. package/dist/esm/zk/index.js +19 -0
  143. package/dist/esm/zk/preimage.js +30 -0
  144. package/dist/esm/zk/prover.js +82 -0
  145. package/dist/esm/zk/registry.js +55 -0
  146. package/dist/esm/zk/types.js +25 -0
  147. package/dist/esm/zk/witness.js +15 -0
  148. package/dist/types/apps/contracts/index.d.ts +159 -227
  149. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +50 -101
  150. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +86 -120
  151. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +20 -4
  152. package/dist/types/apps/corporate/index.d.ts +1040 -304
  153. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +188 -52
  154. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +267 -62
  155. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +355 -131
  156. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +225 -53
  157. package/dist/types/apps/governance/index.d.ts +396 -417
  158. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -95
  159. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +57 -69
  160. package/dist/types/apps/governance/state-machines/dao-single.d.ts +40 -50
  161. package/dist/types/apps/governance/state-machines/dao-token.d.ts +80 -53
  162. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +107 -121
  163. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +17 -5
  164. package/dist/types/apps/identity/constants.d.ts +32 -4
  165. package/dist/types/apps/identity/index.d.ts +449 -100
  166. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +30 -0
  167. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +41 -87
  168. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
  169. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +15 -0
  170. package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
  171. package/dist/types/apps/index.d.ts +1 -0
  172. package/dist/types/apps/lending/assets.d.ts +258 -0
  173. package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
  174. package/dist/types/apps/lending/eligibility.d.ts +83 -0
  175. package/dist/types/apps/lending/index.d.ts +548 -0
  176. package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
  177. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +528 -0
  178. package/dist/types/apps/markets/index.d.ts +184 -204
  179. package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -37
  180. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +26 -34
  181. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +31 -43
  182. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +67 -72
  183. package/dist/types/apps/markets/state-machines/market-universal.d.ts +30 -10
  184. package/dist/types/generated/index.d.ts +5 -5
  185. package/dist/types/generated/openapi.d.ts +1257 -0
  186. package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
  187. package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
  188. package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
  189. package/dist/types/generated/ottochain/v1/common.d.ts +228 -0
  190. package/dist/types/generated/ottochain/v1/fiber.d.ts +32 -1
  191. package/dist/types/generated/ottochain/v1/messages.d.ts +84 -0
  192. package/dist/types/generated/ottochain/v1/records.d.ts +34 -0
  193. package/dist/types/index.d.ts +8 -2
  194. package/dist/types/openapi.d.ts +22 -0
  195. package/dist/types/ottochain/genesis-manifest.d.ts +130 -0
  196. package/dist/types/ottochain/index.d.ts +6 -5
  197. package/dist/types/ottochain/metagraph-client.d.ts +49 -7
  198. package/dist/types/ottochain/snapshot.d.ts +6 -6
  199. package/dist/types/ottochain/transaction.d.ts +33 -1
  200. package/dist/types/ottochain/types.d.ts +602 -11
  201. package/dist/types/privacy/index.d.ts +6 -0
  202. package/dist/types/privacy/sealed-bid.d.ts +348 -0
  203. package/dist/types/privacy/shield-app.d.ts +48 -0
  204. package/dist/types/schema/effects.d.ts +34 -0
  205. package/dist/types/schema/fiber-app.d.ts +41 -3
  206. package/dist/types/schema/guard-lint.d.ts +111 -0
  207. package/dist/types/schema/guards.d.ts +134 -0
  208. package/dist/types/signing.d.ts +45 -0
  209. package/dist/types/validation.d.ts +22 -217
  210. package/dist/types/verify.d.ts +4 -0
  211. package/dist/types/zk/commit.d.ts +28 -0
  212. package/dist/types/zk/guard.d.ts +46 -0
  213. package/dist/types/zk/index.d.ts +19 -0
  214. package/dist/types/zk/preimage.d.ts +10 -0
  215. package/dist/types/zk/prover.d.ts +34 -0
  216. package/dist/types/zk/registry.d.ts +34 -0
  217. package/dist/types/zk/types.d.ts +33 -0
  218. package/dist/types/zk/witness.d.ts +40 -0
  219. package/package.json +52 -35
  220. package/dist/cjs/ottochain/normalize.js +0 -186
  221. package/dist/esm/ottochain/normalize.js +0 -179
  222. package/dist/types/ottochain/normalize.d.ts +0 -79
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.corpEntityDef = void 0;
4
4
  const fiber_app_js_1 = require("../../../schema/fiber-app.js");
5
+ const guards_js_1 = require("../../../schema/guards.js");
6
+ const effects_js_1 = require("../../../schema/effects.js");
5
7
  /**
6
8
  * Master corporate record tracking the lifecycle of a business entity from incorporation through dissolution.
7
9
  * Manages legal identity, share structure, and corporate status.
@@ -47,13 +49,42 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
47
49
  },
48
50
  },
49
51
  createSchema: {
50
- required: ["entityId", "legalName", "entityType", "jurisdiction"],
52
+ required: [
53
+ "entityId",
54
+ "legalName",
55
+ "entityType",
56
+ "jurisdiction",
57
+ "charterAuthority",
58
+ "boardAuthority",
59
+ "shareholderAuthority",
60
+ "stateAuthority",
61
+ ],
51
62
  properties: {
52
63
  entityId: {
53
64
  type: "string",
54
65
  description: "Unique identifier for this corporate entity",
55
66
  immutable: true,
56
67
  },
68
+ charterAuthority: {
69
+ type: "address",
70
+ description: "State-pinned DAG address authorized to amend the charter (legal identity). Verified against proofs[].address.",
71
+ immutable: true,
72
+ },
73
+ boardAuthority: {
74
+ type: "address",
75
+ description: "State-pinned DAG address of the board authority (governs registered-agent changes, suspension/reinstatement, and the board half of voluntary dissolution). Verified against proofs[].address.",
76
+ immutable: true,
77
+ },
78
+ shareholderAuthority: {
79
+ type: "address",
80
+ description: "State-pinned DAG address of the shareholder authority (the shareholder half of voluntary dissolution). Verified against proofs[].address.",
81
+ immutable: true,
82
+ },
83
+ stateAuthority: {
84
+ type: "address",
85
+ description: "State-pinned DAG address of the chartering jurisdiction/registrar that may administratively dissolve a suspended entity. Verified against proofs[].address.",
86
+ immutable: true,
87
+ },
57
88
  legalName: {
58
89
  type: "string",
59
90
  description: "Full legal name of the corporation",
@@ -141,6 +172,10 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
141
172
  stateSchema: {
142
173
  properties: {
143
174
  entityId: { type: "string", immutable: true },
175
+ charterAuthority: { type: "address", immutable: true },
176
+ boardAuthority: { type: "address", immutable: true },
177
+ shareholderAuthority: { type: "address", immutable: true },
178
+ stateAuthority: { type: "address", immutable: true },
144
179
  legalName: { type: "string" },
145
180
  tradeName: { type: "string", nullable: true },
146
181
  entityType: { type: "string" },
@@ -179,6 +214,13 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
179
214
  },
180
215
  createdAt: { type: "timestamp", computed: true },
181
216
  updatedAt: { type: "timestamp", computed: true },
217
+ // Two-phase amendment (#24): propose_amend_charter binds the resolution fiber + records the
218
+ // pending amendment here; amend_charter asserts the bound resolution is EXECUTED, then clears this.
219
+ pendingAmendCharter: { type: "object", nullable: true, computed: true },
220
+ // Two-phase voluntary dissolution (#24): propose_dissolve_voluntary binds the board + shareholder
221
+ // resolution fibers + records the pending dissolution here; dissolve_voluntary asserts both bound
222
+ // resolutions are EXECUTED, then clears this.
223
+ pendingDissolveVoluntary: { type: "object", nullable: true, computed: true },
182
224
  },
183
225
  },
184
226
  eventSchemas: {
@@ -194,8 +236,8 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
194
236
  },
195
237
  },
196
238
  },
197
- amend_charter: {
198
- description: "Amend the certificate/articles of incorporation (requires shareholder approval for most amendments)",
239
+ propose_amend_charter: {
240
+ description: "Phase 1 of a charter amendment: bind the approving resolution fiber (#24 _addDependency) and record the pending amendment",
199
241
  required: [
200
242
  "amendmentId",
201
243
  "description",
@@ -230,6 +272,37 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
230
272
  newLegalName: { type: "string", nullable: true },
231
273
  },
232
274
  },
275
+ amend_charter: {
276
+ description: "Phase 2 of a charter amendment: apply once the bound approving resolution is EXECUTED",
277
+ required: [
278
+ "amendmentId",
279
+ "description",
280
+ "amendmentType",
281
+ "effectiveDate",
282
+ "filedDate",
283
+ ],
284
+ properties: {
285
+ amendmentId: { type: "string" },
286
+ description: { type: "string" },
287
+ amendmentType: {
288
+ type: "string",
289
+ enum: [
290
+ "NAME_CHANGE",
291
+ "SHARE_AUTHORIZATION",
292
+ "PURPOSE_CHANGE",
293
+ "OTHER",
294
+ ],
295
+ },
296
+ effectiveDate: { type: "string", format: "date" },
297
+ filedDate: { type: "string", format: "date" },
298
+ newShareAuthorization: {
299
+ type: "object",
300
+ nullable: true,
301
+ description: "If increasing/changing authorized shares",
302
+ },
303
+ newLegalName: { type: "string", nullable: true },
304
+ },
305
+ },
233
306
  update_share_class: {
234
307
  description: "Update authorized shares for an existing class or add new class (requires charter amendment)",
235
308
  required: [
@@ -308,8 +381,8 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
308
381
  penaltiesPaid: { type: "number", nullable: true },
309
382
  },
310
383
  },
311
- dissolve_voluntary: {
312
- description: "Voluntary dissolution approved by board and shareholders",
384
+ propose_dissolve_voluntary: {
385
+ description: "Phase 1 of voluntary dissolution: bind the executing board + shareholder resolution fibers (#24 _addDependency) and record the pending dissolution",
313
386
  required: [
314
387
  "dissolutionDate",
315
388
  "boardResolutionRef",
@@ -326,6 +399,18 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
326
399
  certificateOfDissolution: { type: "string" },
327
400
  },
328
401
  },
402
+ dissolve_voluntary: {
403
+ description: "Phase 2 of voluntary dissolution: execute once both bound resolutions are EXECUTED",
404
+ required: ["dissolutionDate"],
405
+ properties: {
406
+ dissolutionDate: { type: "string", format: "date" },
407
+ windingUpPlan: {
408
+ type: "string",
409
+ description: "Reference to winding up plan",
410
+ },
411
+ certificateOfDissolution: { type: "string" },
412
+ },
413
+ },
329
414
  dissolve_administrative: {
330
415
  description: "Administrative dissolution by state after prolonged suspension",
331
416
  required: ["dissolutionDate", "stateOrder", "reason"],
@@ -435,8 +520,8 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
435
520
  { "!=": [{ var: "state.legalName" }, null] },
436
521
  { "!=": [{ var: "state.jurisdiction.state" }, null] },
437
522
  { "!=": [{ var: "state.registeredAgent" }, null] },
438
- { ">": [{ var: "state.incorporators.length" }, 0] },
439
- { ">": [{ var: "state.shareStructure.classes.length" }, 0] },
523
+ { ">": [{ length: [{ var: "state.incorporators" }] }, 0] },
524
+ { ">": [{ length: [{ var: "state.shareStructure.classes" }] }, 0] },
440
525
  { ">": [{ var: "state.shareStructure.totalAuthorized" }, 0] },
441
526
  ],
442
527
  },
@@ -446,38 +531,77 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
446
531
  {
447
532
  status: "ACTIVE",
448
533
  formationDate: { var: "event.approvalDate" },
449
- updatedAt: { var: "$timestamp" },
534
+ updatedAt: { var: "$ordinal" },
535
+ },
536
+ {
537
+ _emit: [
538
+ { name: "CORPORATION_FORMED", data: { var: "event" }, destination: "external" },
539
+ ],
450
540
  },
451
541
  ],
452
542
  },
453
- emits: ["CORPORATION_FORMED"],
454
543
  },
455
- // ACTIVE -> ACTIVE (amend_charter)
544
+ // ACTIVE -> ACTIVE (propose_amend_charter) — phase 1 (#24): bind the approving resolution fiber and
545
+ // record the pending amendment, so amend_charter can read the resolution's state next transition.
546
+ {
547
+ from: "ACTIVE",
548
+ to: "ACTIVE",
549
+ eventName: "propose_amend_charter",
550
+ // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
551
+ guard: (0, guards_js_1.signerIsParty)("state.charterAuthority"),
552
+ effect: {
553
+ merge: [
554
+ { var: "state" },
555
+ {
556
+ pendingAmendCharter: {
557
+ amendmentId: { var: "event.amendmentId" },
558
+ description: { var: "event.description" },
559
+ effectiveDate: { var: "event.effectiveDate" },
560
+ filedDate: { var: "event.filedDate" },
561
+ newLegalName: { var: "event.newLegalName" },
562
+ ref: { var: "event.resolutionRef" },
563
+ proposedAt: { var: "$ordinal" },
564
+ },
565
+ },
566
+ // bind the resolution fiber so amend_charter can assert its state next transition
567
+ (0, effects_js_1.addDependency)({ var: "event.resolutionRef" }),
568
+ ],
569
+ },
570
+ dependencies: [],
571
+ },
572
+ // ACTIVE -> ACTIVE (amend_charter) — phase 2 (#24): apply once the bound approving resolution is
573
+ // EXECUTED. depInState replaces the dropped object-form dependency (which silently never gated).
456
574
  {
457
575
  from: "ACTIVE",
458
576
  to: "ACTIVE",
459
577
  eventName: "amend_charter",
460
- guard: { "!=": [{ var: "event.resolutionRef" }, null] },
461
- dependencies: [
462
- {
463
- machine: "corporate-resolution",
464
- instanceRef: { var: "event.resolutionRef" },
465
- requiredState: "EXECUTED",
466
- },
467
- ],
578
+ // authority gate an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
579
+ guard: {
580
+ and: [
581
+ (0, guards_js_1.signerIsParty)("state.charterAuthority"),
582
+ // the proposal must target this amendment, and its bound resolution must be EXECUTED
583
+ {
584
+ "==": [
585
+ { var: "state.pendingAmendCharter.amendmentId" },
586
+ { var: "event.amendmentId" },
587
+ ],
588
+ },
589
+ (0, guards_js_1.depInState)("state.pendingAmendCharter.ref", "EXECUTED"),
590
+ ],
591
+ },
468
592
  effect: {
469
593
  merge: [
470
594
  { var: "state" },
471
595
  {
472
596
  charterAmendments: {
473
- cat: [
597
+ merge: [
474
598
  { var: "state.charterAmendments" },
475
599
  [
476
600
  {
477
601
  amendmentId: { var: "event.amendmentId" },
478
602
  description: { var: "event.description" },
479
603
  effectiveDate: { var: "event.effectiveDate" },
480
- resolutionRef: { var: "event.resolutionRef" },
604
+ resolutionRef: { var: "state.pendingAmendCharter.ref" },
481
605
  filedDate: { var: "event.filedDate" },
482
606
  },
483
607
  ],
@@ -490,11 +614,18 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
490
614
  { var: "state.legalName" },
491
615
  ],
492
616
  },
493
- updatedAt: { var: "$timestamp" },
617
+ updatedAt: { var: "$ordinal" },
618
+ // clear the consumed proposal
619
+ pendingAmendCharter: null,
620
+ },
621
+ {
622
+ _emit: [
623
+ { name: "CHARTER_AMENDED", data: { var: "event" }, destination: "external" },
624
+ ],
494
625
  },
495
626
  ],
496
627
  },
497
- emits: ["CHARTER_AMENDED"],
628
+ dependencies: [],
498
629
  },
499
630
  // ACTIVE -> ACTIVE (update_share_class)
500
631
  {
@@ -506,7 +637,7 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
506
637
  { var: "state.charterAmendments" },
507
638
  {
508
639
  "==": [
509
- { var: ".amendmentId" },
640
+ { var: "amendmentId" },
510
641
  { var: "event.charterAmendmentRef" },
511
642
  ],
512
643
  },
@@ -527,7 +658,7 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
527
658
  if: [
528
659
  {
529
660
  "==": [
530
- { var: ".classId" },
661
+ { var: "classId" },
531
662
  { var: "event.classId" },
532
663
  ],
533
664
  },
@@ -564,7 +695,8 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
564
695
  from: "ACTIVE",
565
696
  to: "ACTIVE",
566
697
  eventName: "update_registered_agent",
567
- guard: { "==": [1, 1] },
698
+ // authority gate an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
699
+ guard: (0, guards_js_1.signerIsParty)("state.boardAuthority"),
568
700
  effect: {
569
701
  merge: [
570
702
  { var: "state" },
@@ -577,16 +709,21 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
577
709
  effectiveDate: { var: "event.effectiveDate" },
578
710
  },
579
711
  },
712
+ {
713
+ _emit: [
714
+ { name: "REGISTERED_AGENT_CHANGED", data: { var: "event" }, destination: "external" },
715
+ ],
716
+ },
580
717
  ],
581
718
  },
582
- emits: ["REGISTERED_AGENT_CHANGED"],
583
719
  },
584
720
  // ACTIVE -> SUSPENDED
585
721
  {
586
722
  from: "ACTIVE",
587
723
  to: "SUSPENDED",
588
724
  eventName: "suspend",
589
- guard: { "==": [1, 1] },
725
+ // authority gate state-initiated enforcement; an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
726
+ guard: (0, guards_js_1.signerIsParty)("state.stateAuthority"),
590
727
  effect: {
591
728
  merge: [
592
729
  { var: "state" },
@@ -595,16 +732,21 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
595
732
  suspensionReason: { var: "event.reason" },
596
733
  suspensionDate: { var: "event.suspensionDate" },
597
734
  },
735
+ {
736
+ _emit: [
737
+ { name: "CORPORATION_SUSPENDED", data: { var: "event" }, destination: "external" },
738
+ ],
739
+ },
598
740
  ],
599
741
  },
600
- emits: ["CORPORATION_SUSPENDED"],
601
742
  },
602
743
  // SUSPENDED -> ACTIVE
603
744
  {
604
745
  from: "SUSPENDED",
605
746
  to: "ACTIVE",
606
747
  eventName: "reinstate",
607
- guard: { "==": [1, 1] },
748
+ // authority gate an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
749
+ guard: (0, guards_js_1.signerIsParty)("state.boardAuthority"),
608
750
  effect: {
609
751
  merge: [
610
752
  { var: "state" },
@@ -613,28 +755,72 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
613
755
  suspensionReason: null,
614
756
  suspensionDate: null,
615
757
  },
758
+ {
759
+ _emit: [
760
+ { name: "CORPORATION_REINSTATED", data: { var: "event" }, destination: "external" },
761
+ ],
762
+ },
763
+ ],
764
+ },
765
+ },
766
+ // ACTIVE -> ACTIVE (propose_dissolve_voluntary) — phase 1 (#24): bind BOTH executing resolution
767
+ // fibers (board + shareholder) and record the pending dissolution, so dissolve_voluntary can read
768
+ // both resolutions' states next transition.
769
+ {
770
+ from: "ACTIVE",
771
+ to: "ACTIVE",
772
+ eventName: "propose_dissolve_voluntary",
773
+ // authority gate — both the board and shareholder authorities must sign; identity role attestations (BOARD_MEMBER/...) layer on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
774
+ guard: {
775
+ and: [
776
+ (0, guards_js_1.signerIsParty)("state.boardAuthority"),
777
+ (0, guards_js_1.signerIsParty)("state.shareholderAuthority"),
778
+ ],
779
+ },
780
+ effect: {
781
+ merge: [
782
+ { var: "state" },
783
+ {
784
+ pendingDissolveVoluntary: {
785
+ dissolutionDate: { var: "event.dissolutionDate" },
786
+ boardRef: { var: "event.boardResolutionRef" },
787
+ shareholderRef: { var: "event.shareholderResolutionRef" },
788
+ proposedAt: { var: "$ordinal" },
789
+ },
790
+ },
791
+ // bind both resolution fibers so dissolve_voluntary can assert their states next transition
792
+ {
793
+ _addDependency: [
794
+ { fiberId: { var: "event.boardResolutionRef" } },
795
+ { fiberId: { var: "event.shareholderResolutionRef" } },
796
+ ],
797
+ },
616
798
  ],
617
799
  },
618
- emits: ["CORPORATION_REINSTATED"],
800
+ dependencies: [],
619
801
  },
620
- // ACTIVE -> DISSOLVED (voluntary)
802
+ // ACTIVE -> DISSOLVED (dissolve_voluntary) — phase 2 (#24): execute once BOTH bound resolutions are
803
+ // EXECUTED. depInState replaces the dropped object-form dependencies (which silently never gated).
621
804
  {
622
805
  from: "ACTIVE",
623
806
  to: "DISSOLVED",
624
807
  eventName: "dissolve_voluntary",
625
- guard: { "==": [1, 1] },
626
- dependencies: [
627
- {
628
- machine: "corporate-resolution",
629
- instanceRef: { var: "event.boardResolutionRef" },
630
- requiredState: "EXECUTED",
631
- },
632
- {
633
- machine: "corporate-resolution",
634
- instanceRef: { var: "event.shareholderResolutionRef" },
635
- requiredState: "EXECUTED",
636
- },
637
- ],
808
+ // authority gate both the board and shareholder authorities must sign; identity role attestations (BOARD_MEMBER/...) layer on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
809
+ guard: {
810
+ and: [
811
+ (0, guards_js_1.signerIsParty)("state.boardAuthority"),
812
+ (0, guards_js_1.signerIsParty)("state.shareholderAuthority"),
813
+ // the proposal must target this dissolution, and its bound resolutions must both be EXECUTED
814
+ {
815
+ "==": [
816
+ { var: "state.pendingDissolveVoluntary.dissolutionDate" },
817
+ { var: "event.dissolutionDate" },
818
+ ],
819
+ },
820
+ (0, guards_js_1.depInState)("state.pendingDissolveVoluntary.boardRef", "EXECUTED"),
821
+ (0, guards_js_1.depInState)("state.pendingDissolveVoluntary.shareholderRef", "EXECUTED"),
822
+ ],
823
+ },
638
824
  effect: {
639
825
  merge: [
640
826
  { var: "state" },
@@ -642,17 +828,25 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
642
828
  status: "DISSOLVED",
643
829
  dissolutionDate: { var: "event.dissolutionDate" },
644
830
  dissolutionReason: "VOLUNTARY",
831
+ // clear the consumed proposal
832
+ pendingDissolveVoluntary: null,
833
+ },
834
+ {
835
+ _emit: [
836
+ { name: "CORPORATION_DISSOLVED", data: { var: "event" }, destination: "external" },
837
+ ],
645
838
  },
646
839
  ],
647
840
  },
648
- emits: ["CORPORATION_DISSOLVED"],
841
+ dependencies: [],
649
842
  },
650
843
  // SUSPENDED -> DISSOLVED (administrative)
651
844
  {
652
845
  from: "SUSPENDED",
653
846
  to: "DISSOLVED",
654
847
  eventName: "dissolve_administrative",
655
- guard: { "==": [1, 1] },
848
+ // authority gate state-initiated dissolution; an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
849
+ guard: (0, guards_js_1.signerIsParty)("state.stateAuthority"),
656
850
  effect: {
657
851
  merge: [
658
852
  { var: "state" },
@@ -663,9 +857,13 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
663
857
  cat: ["ADMINISTRATIVE: ", { var: "event.reason" }],
664
858
  },
665
859
  },
860
+ {
861
+ _emit: [
862
+ { name: "CORPORATION_DISSOLVED", data: { var: "event" }, destination: "external" },
863
+ ],
864
+ },
666
865
  ],
667
866
  },
668
- emits: ["CORPORATION_DISSOLVED"],
669
867
  },
670
868
  ],
671
869
  });