@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.
- package/dist/cjs/apps/compute/index.js +33 -0
- package/dist/cjs/apps/compute/state-machines/compute-rule110.js +164 -0
- package/dist/cjs/apps/compute/state-machines/index.js +9 -0
- package/dist/cjs/apps/contracts/index.js +16 -9
- package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +134 -161
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +192 -170
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
- package/dist/cjs/apps/corporate/index.js +2 -2
- package/dist/cjs/apps/corporate/state-machines/corp-board.js +500 -456
- package/dist/cjs/apps/corporate/state-machines/corp-entity.js +487 -361
- package/dist/cjs/apps/corporate/state-machines/corp-securities.js +769 -576
- package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +567 -557
- package/dist/cjs/apps/governance/index.js +21 -21
- package/dist/cjs/apps/governance/state-machines/dao-multisig.js +188 -209
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +181 -228
- package/dist/cjs/apps/governance/state-machines/dao-single.js +105 -88
- package/dist/cjs/apps/governance/state-machines/dao-token.js +199 -227
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +231 -231
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
- package/dist/cjs/apps/identity/constants.js +55 -22
- package/dist/cjs/apps/identity/index.js +28 -12
- package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +158 -173
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +262 -0
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
- package/dist/cjs/apps/identity/state-machines/index.js +3 -1
- package/dist/cjs/apps/index.js +22 -8
- package/dist/cjs/apps/lending/assets.js +247 -0
- package/dist/cjs/apps/lending/credit-scoring.js +87 -0
- package/dist/cjs/apps/lending/eligibility.js +105 -0
- package/dist/cjs/apps/lending/index.js +91 -0
- package/dist/cjs/apps/lending/state-machines/index.js +9 -0
- package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +433 -0
- package/dist/cjs/apps/markets/index.js +22 -12
- package/dist/cjs/apps/markets/state-machines/market-auction.js +116 -134
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +131 -141
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +163 -184
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +226 -233
- package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
- package/dist/cjs/apps/oracles/index.js +3 -3
- package/dist/cjs/apps/privacy/index.js +67 -0
- package/dist/cjs/apps/privacy/state-machines/index.js +17 -0
- package/dist/cjs/apps/privacy/state-machines/mixer-ddhRing.js +286 -0
- package/dist/cjs/apps/privacy/state-machines/note-pool.js +476 -0
- package/dist/cjs/apps/staked-pool/assets.js +103 -0
- package/dist/cjs/apps/staked-pool/base.js +498 -0
- package/dist/cjs/apps/staked-pool/consumer.js +55 -0
- package/dist/cjs/apps/staked-pool/index.js +83 -0
- package/dist/cjs/apps/staked-pool/state-machines/index.js +12 -0
- package/dist/cjs/apps/staked-pool/state-machines/staked-pool-base.js +49 -0
- package/dist/cjs/apps/staked-pool/state-machines/staked-pool-oracle.js +131 -0
- package/dist/cjs/errors.js +3 -3
- package/dist/cjs/generated/google/protobuf/struct.js +5 -5
- package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
- package/dist/cjs/generated/index.js +11 -7
- package/dist/cjs/generated/openapi.js +6 -0
- package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +51 -51
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +20 -21
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +14 -14
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +5 -5
- package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +125 -131
- package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +108 -108
- package/dist/cjs/generated/ottochain/v1/common.js +5 -5
- package/dist/cjs/generated/ottochain/v1/fiber.js +44 -6
- package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
- package/dist/cjs/generated/ottochain/v1/records.js +1 -1
- package/dist/cjs/index.js +58 -7
- package/dist/cjs/openapi.js +2 -0
- package/dist/cjs/ottochain/drop-nulls.js +1 -2
- package/dist/cjs/ottochain/genesis-manifest.js +17 -11
- package/dist/cjs/ottochain/index.js +23 -13
- package/dist/cjs/ottochain/metagraph-client.js +81 -16
- package/dist/cjs/ottochain/snapshot.js +13 -16
- package/dist/cjs/ottochain/transaction.js +67 -14
- package/dist/cjs/ottochain/types.js +16 -2
- package/dist/cjs/privacy/index.js +14 -0
- package/dist/cjs/privacy/sealed-bid.js +213 -0
- package/dist/cjs/privacy/shield-app.js +131 -0
- package/dist/cjs/schema/effects.js +156 -0
- package/dist/cjs/schema/fiber-app.js +150 -15
- package/dist/cjs/schema/guard-lint.js +343 -0
- package/dist/cjs/schema/guards.js +246 -0
- package/dist/cjs/signing.js +80 -0
- package/dist/cjs/templates/asset-policy.js +190 -0
- package/dist/cjs/templates/index.js +86 -0
- package/dist/cjs/templates/machine.js +130 -0
- package/dist/cjs/templates/migration.js +39 -0
- package/dist/cjs/templates/state-shape.js +38 -0
- package/dist/cjs/types.js +2 -3
- package/dist/cjs/validation.js +9 -11
- package/dist/cjs/verify.js +9 -4
- package/dist/cjs/zk/commit.js +53 -0
- package/dist/cjs/zk/guard.js +107 -0
- package/dist/cjs/zk/index.js +48 -0
- package/dist/cjs/zk/preimage.js +37 -0
- package/dist/cjs/zk/prover.js +87 -0
- package/dist/cjs/zk/registry.js +62 -0
- package/dist/cjs/zk/types.js +28 -0
- package/dist/cjs/zk/witness.js +19 -0
- package/dist/esm/apps/compute/index.js +29 -0
- package/dist/esm/apps/compute/state-machines/compute-rule110.js +161 -0
- package/dist/esm/apps/compute/state-machines/index.js +5 -0
- package/dist/esm/apps/contracts/index.js +9 -5
- package/dist/esm/apps/contracts/state-machines/contract-agreement.js +135 -162
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +193 -171
- package/dist/esm/apps/contracts/state-machines/contract-universal.js +47 -59
- package/dist/esm/apps/corporate/index.js +2 -2
- package/dist/esm/apps/corporate/state-machines/corp-board.js +501 -457
- package/dist/esm/apps/corporate/state-machines/corp-entity.js +488 -362
- package/dist/esm/apps/corporate/state-machines/corp-securities.js +770 -577
- package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +568 -558
- package/dist/esm/apps/governance/index.js +10 -10
- package/dist/esm/apps/governance/state-machines/dao-multisig.js +189 -210
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +182 -229
- package/dist/esm/apps/governance/state-machines/dao-single.js +106 -89
- package/dist/esm/apps/governance/state-machines/dao-token.js +200 -228
- package/dist/esm/apps/governance/state-machines/governance-simple.js +232 -232
- package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
- package/dist/esm/apps/identity/constants.js +52 -21
- package/dist/esm/apps/identity/index.js +14 -9
- package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +159 -174
- package/dist/esm/apps/identity/state-machines/identity-registry.js +259 -0
- package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
- package/dist/esm/apps/identity/state-machines/index.js +1 -0
- package/dist/esm/apps/index.js +9 -5
- package/dist/esm/apps/lending/assets.js +231 -0
- package/dist/esm/apps/lending/credit-scoring.js +81 -0
- package/dist/esm/apps/lending/eligibility.js +99 -0
- package/dist/esm/apps/lending/index.js +69 -0
- package/dist/esm/apps/lending/state-machines/index.js +5 -0
- package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +430 -0
- package/dist/esm/apps/markets/index.js +11 -7
- package/dist/esm/apps/markets/state-machines/market-auction.js +117 -135
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +132 -142
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +164 -185
- package/dist/esm/apps/markets/state-machines/market-prediction.js +227 -234
- package/dist/esm/apps/markets/state-machines/market-universal.js +66 -81
- package/dist/esm/apps/oracles/index.js +3 -3
- package/dist/esm/apps/privacy/index.js +56 -0
- package/dist/esm/apps/privacy/state-machines/index.js +6 -0
- package/dist/esm/apps/privacy/state-machines/mixer-ddhRing.js +282 -0
- package/dist/esm/apps/privacy/state-machines/note-pool.js +470 -0
- package/dist/esm/apps/staked-pool/assets.js +91 -0
- package/dist/esm/apps/staked-pool/base.js +493 -0
- package/dist/esm/apps/staked-pool/consumer.js +49 -0
- package/dist/esm/apps/staked-pool/index.js +60 -0
- package/dist/esm/apps/staked-pool/state-machines/index.js +6 -0
- package/dist/esm/apps/staked-pool/state-machines/staked-pool-base.js +46 -0
- package/dist/esm/apps/staked-pool/state-machines/staked-pool-oracle.js +127 -0
- package/dist/esm/generated/google/protobuf/struct.js +1 -1
- package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
- package/dist/esm/generated/index.js +9 -5
- package/dist/esm/generated/openapi.js +5 -0
- package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +47 -47
- package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
- package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
- package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +1 -1
- package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +115 -121
- package/dist/esm/generated/ottochain/apps/markets/v1/market.js +101 -101
- package/dist/esm/generated/ottochain/v1/common.js +1 -1
- package/dist/esm/generated/ottochain/v1/fiber.js +40 -2
- package/dist/esm/generated/ottochain/v1/messages.js +1 -1
- package/dist/esm/generated/ottochain/v1/records.js +1 -1
- package/dist/esm/index.js +28 -3
- package/dist/esm/openapi.js +1 -0
- package/dist/esm/ottochain/genesis-manifest.js +15 -9
- package/dist/esm/ottochain/index.js +2 -3
- package/dist/esm/ottochain/metagraph-client.js +81 -16
- package/dist/esm/ottochain/snapshot.js +6 -8
- package/dist/esm/ottochain/transaction.js +51 -3
- package/dist/esm/ottochain/types.js +15 -1
- package/dist/esm/privacy/index.js +6 -0
- package/dist/esm/privacy/sealed-bid.js +209 -0
- package/dist/esm/privacy/shield-app.js +127 -0
- package/dist/esm/schema/effects.js +145 -0
- package/dist/esm/schema/fiber-app.js +139 -8
- package/dist/esm/schema/guard-lint.js +337 -0
- package/dist/esm/schema/guards.js +228 -0
- package/dist/esm/signing.js +74 -0
- package/dist/esm/templates/asset-policy.js +182 -0
- package/dist/esm/templates/index.js +41 -0
- package/dist/esm/templates/machine.js +125 -0
- package/dist/esm/templates/migration.js +34 -0
- package/dist/esm/templates/state-shape.js +34 -0
- package/dist/esm/validation.js +1 -3
- package/dist/esm/verify.js +8 -2
- package/dist/esm/zk/commit.js +44 -0
- package/dist/esm/zk/guard.js +99 -0
- package/dist/esm/zk/index.js +19 -0
- package/dist/esm/zk/preimage.js +30 -0
- package/dist/esm/zk/prover.js +82 -0
- package/dist/esm/zk/registry.js +55 -0
- package/dist/esm/zk/types.js +25 -0
- package/dist/esm/zk/witness.js +15 -0
- package/dist/types/apps/compute/index.d.ts +176 -0
- package/dist/types/apps/compute/state-machines/compute-rule110.d.ts +157 -0
- package/dist/types/apps/compute/state-machines/index.d.ts +5 -0
- package/dist/types/apps/contracts/index.d.ts +81 -221
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +23 -98
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +49 -115
- package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
- package/dist/types/apps/corporate/index.d.ts +1176 -440
- package/dist/types/apps/corporate/state-machines/corp-board.d.ts +271 -135
- package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +279 -74
- package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +373 -149
- package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +252 -80
- package/dist/types/apps/governance/index.d.ts +368 -470
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -107
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +61 -85
- package/dist/types/apps/governance/state-machines/dao-single.d.ts +25 -47
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +79 -68
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +95 -125
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +6 -6
- package/dist/types/apps/identity/constants.d.ts +33 -5
- package/dist/types/apps/identity/index.d.ts +415 -131
- package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +27 -98
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
- package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
- package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
- package/dist/types/apps/index.d.ts +9 -5
- package/dist/types/apps/lending/assets.d.ts +258 -0
- package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
- package/dist/types/apps/lending/eligibility.d.ts +83 -0
- package/dist/types/apps/lending/index.d.ts +556 -0
- package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
- package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +536 -0
- package/dist/types/apps/markets/index.d.ts +181 -276
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -49
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +35 -53
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +35 -61
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +65 -86
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +12 -12
- package/dist/types/apps/oracles/index.d.ts +1 -1
- package/dist/types/apps/privacy/index.d.ts +328 -0
- package/dist/types/apps/privacy/state-machines/index.d.ts +6 -0
- package/dist/types/apps/privacy/state-machines/mixer-ddhRing.d.ts +337 -0
- package/dist/types/apps/privacy/state-machines/note-pool.d.ts +196 -0
- package/dist/types/apps/staked-pool/assets.d.ts +53 -0
- package/dist/types/apps/staked-pool/base.d.ts +80 -0
- package/dist/types/apps/staked-pool/consumer.d.ts +29 -0
- package/dist/types/apps/staked-pool/index.d.ts +51 -0
- package/dist/types/apps/staked-pool/state-machines/index.d.ts +6 -0
- package/dist/types/apps/staked-pool/state-machines/staked-pool-base.d.ts +8 -0
- package/dist/types/apps/staked-pool/state-machines/staked-pool-oracle.d.ts +34 -0
- package/dist/types/generated/index.d.ts +5 -5
- package/dist/types/generated/openapi.d.ts +1270 -0
- package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
- package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
- package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
- package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
- package/dist/types/index.d.ts +7 -3
- package/dist/types/openapi.d.ts +24 -0
- package/dist/types/ottochain/genesis-manifest.d.ts +11 -5
- package/dist/types/ottochain/index.d.ts +5 -6
- package/dist/types/ottochain/metagraph-client.d.ts +49 -7
- package/dist/types/ottochain/snapshot.d.ts +6 -6
- package/dist/types/ottochain/transaction.d.ts +41 -1
- package/dist/types/ottochain/types.d.ts +336 -31
- package/dist/types/privacy/index.d.ts +6 -0
- package/dist/types/privacy/sealed-bid.d.ts +348 -0
- package/dist/types/privacy/shield-app.d.ts +48 -0
- package/dist/types/schema/effects.d.ts +141 -0
- package/dist/types/schema/fiber-app.d.ts +282 -2
- package/dist/types/schema/guard-lint.d.ts +111 -0
- package/dist/types/schema/guards.d.ts +146 -0
- package/dist/types/signing.d.ts +45 -0
- package/dist/types/templates/asset-policy.d.ts +119 -0
- package/dist/types/templates/index.d.ts +26 -0
- package/dist/types/templates/machine.d.ts +139 -0
- package/dist/types/templates/migration.d.ts +34 -0
- package/dist/types/templates/state-shape.d.ts +30 -0
- package/dist/types/validation.d.ts +22 -217
- package/dist/types/verify.d.ts +4 -0
- package/dist/types/zk/commit.d.ts +28 -0
- package/dist/types/zk/guard.d.ts +46 -0
- package/dist/types/zk/index.d.ts +19 -0
- package/dist/types/zk/preimage.d.ts +10 -0
- package/dist/types/zk/prover.d.ts +34 -0
- package/dist/types/zk/registry.d.ts +34 -0
- package/dist/types/zk/types.d.ts +33 -0
- package/dist/types/zk/witness.d.ts +40 -0
- package/package.json +47 -15
- package/dist/cjs/ottochain/normalize.js +0 -186
- package/dist/esm/ottochain/normalize.js +0 -179
- package/dist/types/ottochain/normalize.d.ts +0 -79
|
@@ -2,552 +2,627 @@
|
|
|
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.
|
|
8
10
|
*/
|
|
9
11
|
exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
10
12
|
metadata: {
|
|
11
|
-
name:
|
|
12
|
-
app:
|
|
13
|
-
type:
|
|
14
|
-
version:
|
|
15
|
-
description:
|
|
13
|
+
name: 'CorpEntity',
|
|
14
|
+
app: 'corporate',
|
|
15
|
+
type: 'entity',
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
description: 'Master corporate record tracking the lifecycle of a business entity from incorporation through dissolution. Manages legal identity, share structure, and corporate status.',
|
|
16
18
|
crossReferences: {
|
|
17
19
|
board: {
|
|
18
|
-
machine:
|
|
19
|
-
description:
|
|
20
|
-
foreignKey:
|
|
20
|
+
machine: 'corporate-board',
|
|
21
|
+
description: 'Board of directors for this entity',
|
|
22
|
+
foreignKey: 'entityId',
|
|
21
23
|
},
|
|
22
24
|
officers: {
|
|
23
|
-
machine:
|
|
24
|
-
description:
|
|
25
|
-
foreignKey:
|
|
25
|
+
machine: 'corporate-officers',
|
|
26
|
+
description: 'Executive officers for this entity',
|
|
27
|
+
foreignKey: 'entityId',
|
|
26
28
|
},
|
|
27
29
|
bylaws: {
|
|
28
|
-
machine:
|
|
29
|
-
description:
|
|
30
|
-
foreignKey:
|
|
30
|
+
machine: 'corporate-bylaws',
|
|
31
|
+
description: 'Governing bylaws for this entity',
|
|
32
|
+
foreignKey: 'entityId',
|
|
31
33
|
},
|
|
32
34
|
shareholders: {
|
|
33
|
-
machine:
|
|
34
|
-
description:
|
|
35
|
-
foreignKey:
|
|
35
|
+
machine: 'corporate-shareholders',
|
|
36
|
+
description: 'Shareholder meeting instances',
|
|
37
|
+
foreignKey: 'entityId',
|
|
36
38
|
},
|
|
37
39
|
securities: {
|
|
38
|
-
machine:
|
|
39
|
-
description:
|
|
40
|
-
foreignKey:
|
|
40
|
+
machine: 'corporate-securities',
|
|
41
|
+
description: 'Stock issuance records',
|
|
42
|
+
foreignKey: 'entityId',
|
|
41
43
|
},
|
|
42
44
|
compliance: {
|
|
43
|
-
machine:
|
|
44
|
-
description:
|
|
45
|
-
foreignKey:
|
|
45
|
+
machine: 'corporate-compliance',
|
|
46
|
+
description: 'Regulatory compliance tracking',
|
|
47
|
+
foreignKey: 'entityId',
|
|
46
48
|
},
|
|
47
49
|
},
|
|
48
50
|
},
|
|
49
51
|
createSchema: {
|
|
50
|
-
required: [
|
|
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
|
-
type:
|
|
54
|
-
description:
|
|
64
|
+
type: 'string',
|
|
65
|
+
description: 'Unique identifier for this corporate entity',
|
|
66
|
+
immutable: true,
|
|
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.',
|
|
55
86
|
immutable: true,
|
|
56
87
|
},
|
|
57
88
|
legalName: {
|
|
58
|
-
type:
|
|
59
|
-
description:
|
|
89
|
+
type: 'string',
|
|
90
|
+
description: 'Full legal name of the corporation',
|
|
60
91
|
},
|
|
61
92
|
tradeName: {
|
|
62
|
-
type:
|
|
93
|
+
type: 'string',
|
|
63
94
|
nullable: true,
|
|
64
|
-
description:
|
|
95
|
+
description: 'DBA or trade name if different',
|
|
65
96
|
},
|
|
66
97
|
entityType: {
|
|
67
|
-
type:
|
|
68
|
-
enum: [
|
|
69
|
-
description:
|
|
98
|
+
type: 'string',
|
|
99
|
+
enum: ['C_CORP', 'S_CORP', 'B_CORP', 'LLC', 'LP', 'LLP'],
|
|
100
|
+
description: 'Legal entity type',
|
|
70
101
|
},
|
|
71
102
|
jurisdiction: {
|
|
72
|
-
type:
|
|
103
|
+
type: 'object',
|
|
73
104
|
properties: {
|
|
74
105
|
state: {
|
|
75
|
-
type:
|
|
76
|
-
description:
|
|
106
|
+
type: 'string',
|
|
107
|
+
description: 'State of incorporation (e.g., DE, NV, WY)',
|
|
77
108
|
},
|
|
78
|
-
country: { type:
|
|
109
|
+
country: { type: 'string', default: 'USA' },
|
|
79
110
|
foreignQualifications: {
|
|
80
|
-
type:
|
|
81
|
-
items: { type:
|
|
82
|
-
description:
|
|
111
|
+
type: 'array',
|
|
112
|
+
items: { type: 'string' },
|
|
113
|
+
description: 'States where foreign qualified to do business',
|
|
83
114
|
},
|
|
84
115
|
},
|
|
85
116
|
},
|
|
86
117
|
fiscalYearEnd: {
|
|
87
|
-
type:
|
|
88
|
-
description:
|
|
118
|
+
type: 'string',
|
|
119
|
+
description: 'Fiscal year end (MM-DD format)',
|
|
89
120
|
},
|
|
90
121
|
registeredAgent: {
|
|
91
|
-
type:
|
|
122
|
+
type: 'object',
|
|
92
123
|
properties: {
|
|
93
|
-
name: { type:
|
|
94
|
-
address: { type:
|
|
95
|
-
phone: { type:
|
|
96
|
-
email: { type:
|
|
97
|
-
effectiveDate: { type:
|
|
124
|
+
name: { type: 'string' },
|
|
125
|
+
address: { type: 'object' },
|
|
126
|
+
phone: { type: 'string' },
|
|
127
|
+
email: { type: 'string' },
|
|
128
|
+
effectiveDate: { type: 'string', format: 'date' },
|
|
98
129
|
},
|
|
99
130
|
},
|
|
100
131
|
principalOffice: {
|
|
101
|
-
type:
|
|
132
|
+
type: 'object',
|
|
102
133
|
properties: {
|
|
103
|
-
street: { type:
|
|
104
|
-
city: { type:
|
|
105
|
-
state: { type:
|
|
106
|
-
zip: { type:
|
|
107
|
-
country: { type:
|
|
134
|
+
street: { type: 'string' },
|
|
135
|
+
city: { type: 'string' },
|
|
136
|
+
state: { type: 'string' },
|
|
137
|
+
zip: { type: 'string' },
|
|
138
|
+
country: { type: 'string', default: 'USA' },
|
|
108
139
|
},
|
|
109
140
|
},
|
|
110
141
|
shareStructure: {
|
|
111
|
-
type:
|
|
142
|
+
type: 'object',
|
|
112
143
|
properties: {
|
|
113
144
|
classes: {
|
|
114
|
-
type:
|
|
115
|
-
items: { $ref:
|
|
145
|
+
type: 'array',
|
|
146
|
+
items: { $ref: '#/definitions/ShareClass' },
|
|
116
147
|
},
|
|
117
148
|
totalAuthorized: {
|
|
118
|
-
type:
|
|
119
|
-
description:
|
|
149
|
+
type: 'integer',
|
|
150
|
+
description: 'Sum of all authorized shares',
|
|
120
151
|
},
|
|
121
|
-
totalIssued: { type:
|
|
122
|
-
totalOutstanding: { type:
|
|
152
|
+
totalIssued: { type: 'integer' },
|
|
153
|
+
totalOutstanding: { type: 'integer' },
|
|
123
154
|
},
|
|
124
155
|
},
|
|
125
156
|
incorporators: {
|
|
126
|
-
type:
|
|
127
|
-
items: { $ref:
|
|
157
|
+
type: 'array',
|
|
158
|
+
items: { $ref: '#/definitions/Incorporator' },
|
|
128
159
|
},
|
|
129
160
|
ein: {
|
|
130
|
-
type:
|
|
161
|
+
type: 'string',
|
|
131
162
|
nullable: true,
|
|
132
|
-
description:
|
|
163
|
+
description: 'Federal EIN',
|
|
133
164
|
},
|
|
134
165
|
stateIds: {
|
|
135
|
-
type:
|
|
136
|
-
additionalProperties: { type:
|
|
137
|
-
description:
|
|
166
|
+
type: 'object',
|
|
167
|
+
additionalProperties: { type: 'string' },
|
|
168
|
+
description: 'State-specific entity IDs keyed by state code',
|
|
138
169
|
},
|
|
139
170
|
},
|
|
140
171
|
},
|
|
141
172
|
stateSchema: {
|
|
142
173
|
properties: {
|
|
143
|
-
entityId: { type:
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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 },
|
|
179
|
+
legalName: { type: 'string' },
|
|
180
|
+
tradeName: { type: 'string', nullable: true },
|
|
181
|
+
entityType: { type: 'string' },
|
|
182
|
+
jurisdiction: { type: 'object' },
|
|
183
|
+
formationDate: { type: 'string', format: 'date', computed: true },
|
|
184
|
+
fiscalYearEnd: { type: 'string' },
|
|
185
|
+
registeredAgent: { type: 'object' },
|
|
186
|
+
principalOffice: { type: 'object' },
|
|
187
|
+
shareStructure: { type: 'object' },
|
|
188
|
+
incorporators: { type: 'array' },
|
|
189
|
+
ein: { type: 'string', nullable: true },
|
|
190
|
+
stateIds: { type: 'object' },
|
|
156
191
|
status: {
|
|
157
|
-
type:
|
|
158
|
-
enum: [
|
|
192
|
+
type: 'string',
|
|
193
|
+
enum: ['INCORPORATING', 'ACTIVE', 'SUSPENDED', 'DISSOLVED'],
|
|
159
194
|
computed: true,
|
|
160
195
|
},
|
|
161
|
-
suspensionReason: { type:
|
|
196
|
+
suspensionReason: { type: 'string', nullable: true, computed: true },
|
|
162
197
|
suspensionDate: {
|
|
163
|
-
type:
|
|
164
|
-
format:
|
|
198
|
+
type: 'string',
|
|
199
|
+
format: 'date',
|
|
165
200
|
nullable: true,
|
|
166
201
|
computed: true,
|
|
167
202
|
},
|
|
168
203
|
dissolutionDate: {
|
|
169
|
-
type:
|
|
170
|
-
format:
|
|
204
|
+
type: 'string',
|
|
205
|
+
format: 'date',
|
|
171
206
|
nullable: true,
|
|
172
207
|
computed: true,
|
|
173
208
|
},
|
|
174
|
-
dissolutionReason: { type:
|
|
209
|
+
dissolutionReason: { type: 'string', nullable: true, computed: true },
|
|
175
210
|
charterAmendments: {
|
|
176
|
-
type:
|
|
177
|
-
items: { $ref:
|
|
211
|
+
type: 'array',
|
|
212
|
+
items: { $ref: '#/definitions/CharterAmendment' },
|
|
178
213
|
computed: true,
|
|
179
214
|
},
|
|
180
|
-
createdAt: { type:
|
|
181
|
-
updatedAt: { type:
|
|
215
|
+
createdAt: { type: 'timestamp', computed: true },
|
|
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: {
|
|
185
227
|
incorporate: {
|
|
186
|
-
description:
|
|
187
|
-
required: [
|
|
228
|
+
description: 'State approves articles of incorporation, corporation comes into existence',
|
|
229
|
+
required: ['approvalDate', 'stateFileNumber'],
|
|
188
230
|
properties: {
|
|
189
|
-
approvalDate: { type:
|
|
190
|
-
stateFileNumber: { type:
|
|
231
|
+
approvalDate: { type: 'string', format: 'date' },
|
|
232
|
+
stateFileNumber: { type: 'string' },
|
|
191
233
|
certificateOfIncorporation: {
|
|
192
|
-
type:
|
|
193
|
-
description:
|
|
234
|
+
type: 'string',
|
|
235
|
+
description: 'Document reference',
|
|
194
236
|
},
|
|
195
237
|
},
|
|
196
238
|
},
|
|
197
|
-
|
|
198
|
-
description:
|
|
199
|
-
required: [
|
|
200
|
-
"amendmentId",
|
|
201
|
-
"description",
|
|
202
|
-
"amendmentType",
|
|
203
|
-
"resolutionRef",
|
|
204
|
-
"effectiveDate",
|
|
205
|
-
"filedDate",
|
|
206
|
-
],
|
|
239
|
+
propose_amend_charter: {
|
|
240
|
+
description: 'Phase 1 of a charter amendment: bind the approving resolution fiber (#24 _addDependency) and record the pending amendment',
|
|
241
|
+
required: ['amendmentId', 'description', 'amendmentType', 'resolutionRef', 'effectiveDate', 'filedDate'],
|
|
207
242
|
properties: {
|
|
208
|
-
amendmentId: { type:
|
|
209
|
-
description: { type:
|
|
243
|
+
amendmentId: { type: 'string' },
|
|
244
|
+
description: { type: 'string' },
|
|
210
245
|
amendmentType: {
|
|
211
|
-
type:
|
|
212
|
-
enum: [
|
|
213
|
-
"NAME_CHANGE",
|
|
214
|
-
"SHARE_AUTHORIZATION",
|
|
215
|
-
"PURPOSE_CHANGE",
|
|
216
|
-
"OTHER",
|
|
217
|
-
],
|
|
246
|
+
type: 'string',
|
|
247
|
+
enum: ['NAME_CHANGE', 'SHARE_AUTHORIZATION', 'PURPOSE_CHANGE', 'OTHER'],
|
|
218
248
|
},
|
|
219
249
|
resolutionRef: {
|
|
220
|
-
type:
|
|
221
|
-
description:
|
|
250
|
+
type: 'string',
|
|
251
|
+
description: 'Reference to board/shareholder resolution',
|
|
222
252
|
},
|
|
223
|
-
effectiveDate: { type:
|
|
224
|
-
filedDate: { type:
|
|
253
|
+
effectiveDate: { type: 'string', format: 'date' },
|
|
254
|
+
filedDate: { type: 'string', format: 'date' },
|
|
225
255
|
newShareAuthorization: {
|
|
226
|
-
type:
|
|
256
|
+
type: 'object',
|
|
227
257
|
nullable: true,
|
|
228
|
-
description:
|
|
258
|
+
description: 'If increasing/changing authorized shares',
|
|
229
259
|
},
|
|
230
|
-
newLegalName: { type:
|
|
260
|
+
newLegalName: { type: 'string', nullable: true },
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
amend_charter: {
|
|
264
|
+
description: 'Phase 2 of a charter amendment: apply once the bound approving resolution is EXECUTED',
|
|
265
|
+
required: ['amendmentId', 'description', 'amendmentType', 'effectiveDate', 'filedDate'],
|
|
266
|
+
properties: {
|
|
267
|
+
amendmentId: { type: 'string' },
|
|
268
|
+
description: { type: 'string' },
|
|
269
|
+
amendmentType: {
|
|
270
|
+
type: 'string',
|
|
271
|
+
enum: ['NAME_CHANGE', 'SHARE_AUTHORIZATION', 'PURPOSE_CHANGE', 'OTHER'],
|
|
272
|
+
},
|
|
273
|
+
effectiveDate: { type: 'string', format: 'date' },
|
|
274
|
+
filedDate: { type: 'string', format: 'date' },
|
|
275
|
+
newShareAuthorization: {
|
|
276
|
+
type: 'object',
|
|
277
|
+
nullable: true,
|
|
278
|
+
description: 'If increasing/changing authorized shares',
|
|
279
|
+
},
|
|
280
|
+
newLegalName: { type: 'string', nullable: true },
|
|
231
281
|
},
|
|
232
282
|
},
|
|
233
283
|
update_share_class: {
|
|
234
|
-
description:
|
|
235
|
-
required: [
|
|
236
|
-
"classId",
|
|
237
|
-
"className",
|
|
238
|
-
"authorized",
|
|
239
|
-
"parValue",
|
|
240
|
-
"votingRights",
|
|
241
|
-
"charterAmendmentRef",
|
|
242
|
-
],
|
|
284
|
+
description: 'Update authorized shares for an existing class or add new class (requires charter amendment)',
|
|
285
|
+
required: ['classId', 'className', 'authorized', 'parValue', 'votingRights', 'charterAmendmentRef'],
|
|
243
286
|
properties: {
|
|
244
|
-
classId: { type:
|
|
245
|
-
className: { type:
|
|
246
|
-
authorized: { type:
|
|
247
|
-
parValue: { type:
|
|
248
|
-
votingRights: { type:
|
|
249
|
-
votesPerShare: { type:
|
|
250
|
-
liquidationPreference: { type:
|
|
251
|
-
dividendRate: { type:
|
|
252
|
-
convertible: { type:
|
|
253
|
-
charterAmendmentRef: { type:
|
|
287
|
+
classId: { type: 'string' },
|
|
288
|
+
className: { type: 'string' },
|
|
289
|
+
authorized: { type: 'integer' },
|
|
290
|
+
parValue: { type: 'number' },
|
|
291
|
+
votingRights: { type: 'boolean' },
|
|
292
|
+
votesPerShare: { type: 'number', default: 1 },
|
|
293
|
+
liquidationPreference: { type: 'number', nullable: true },
|
|
294
|
+
dividendRate: { type: 'number', nullable: true },
|
|
295
|
+
convertible: { type: 'boolean', default: false },
|
|
296
|
+
charterAmendmentRef: { type: 'string' },
|
|
254
297
|
},
|
|
255
298
|
},
|
|
256
299
|
update_registered_agent: {
|
|
257
|
-
description:
|
|
258
|
-
required: [
|
|
300
|
+
description: 'Change the registered agent on file with the state',
|
|
301
|
+
required: ['name', 'address', 'effectiveDate'],
|
|
259
302
|
properties: {
|
|
260
|
-
name: { type:
|
|
261
|
-
address: { type:
|
|
262
|
-
phone: { type:
|
|
263
|
-
email: { type:
|
|
264
|
-
effectiveDate: { type:
|
|
303
|
+
name: { type: 'string' },
|
|
304
|
+
address: { type: 'object' },
|
|
305
|
+
phone: { type: 'string' },
|
|
306
|
+
email: { type: 'string' },
|
|
307
|
+
effectiveDate: { type: 'string', format: 'date' },
|
|
265
308
|
filingConfirmation: {
|
|
266
|
-
type:
|
|
267
|
-
description:
|
|
309
|
+
type: 'string',
|
|
310
|
+
description: 'State filing confirmation number',
|
|
268
311
|
},
|
|
269
312
|
},
|
|
270
313
|
},
|
|
271
314
|
suspend: {
|
|
272
|
-
description:
|
|
273
|
-
required: [
|
|
315
|
+
description: 'State suspends corporate powers (typically for tax/filing noncompliance)',
|
|
316
|
+
required: ['reason', 'suspensionDate'],
|
|
274
317
|
properties: {
|
|
275
318
|
reason: {
|
|
276
|
-
type:
|
|
319
|
+
type: 'string',
|
|
277
320
|
enum: [
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
321
|
+
'FRANCHISE_TAX_DELINQUENT',
|
|
322
|
+
'ANNUAL_REPORT_MISSING',
|
|
323
|
+
'REGISTERED_AGENT_LAPSE',
|
|
324
|
+
'ADMINISTRATIVE',
|
|
325
|
+
'OTHER',
|
|
283
326
|
],
|
|
284
327
|
},
|
|
285
|
-
suspensionDate: { type:
|
|
328
|
+
suspensionDate: { type: 'string', format: 'date' },
|
|
286
329
|
stateNotice: {
|
|
287
|
-
type:
|
|
288
|
-
description:
|
|
330
|
+
type: 'string',
|
|
331
|
+
description: 'Reference to state notice',
|
|
289
332
|
},
|
|
290
|
-
cureDeadline: { type:
|
|
333
|
+
cureDeadline: { type: 'string', format: 'date', nullable: true },
|
|
291
334
|
},
|
|
292
335
|
},
|
|
293
336
|
reinstate: {
|
|
294
|
-
description:
|
|
295
|
-
required: [
|
|
296
|
-
"reinstatementDate",
|
|
297
|
-
"curativeActions",
|
|
298
|
-
"stateConfirmation",
|
|
299
|
-
],
|
|
337
|
+
description: 'Cure deficiencies and reinstate corporate powers',
|
|
338
|
+
required: ['reinstatementDate', 'curativeActions', 'stateConfirmation'],
|
|
300
339
|
properties: {
|
|
301
|
-
reinstatementDate: { type:
|
|
340
|
+
reinstatementDate: { type: 'string', format: 'date' },
|
|
302
341
|
curativeActions: {
|
|
303
|
-
type:
|
|
304
|
-
items: { type:
|
|
305
|
-
description:
|
|
342
|
+
type: 'array',
|
|
343
|
+
items: { type: 'string' },
|
|
344
|
+
description: 'List of actions taken to cure',
|
|
306
345
|
},
|
|
307
|
-
stateConfirmation: { type:
|
|
308
|
-
penaltiesPaid: { type:
|
|
346
|
+
stateConfirmation: { type: 'string' },
|
|
347
|
+
penaltiesPaid: { type: 'number', nullable: true },
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
propose_dissolve_voluntary: {
|
|
351
|
+
description: 'Phase 1 of voluntary dissolution: bind the executing board + shareholder resolution fibers (#24 _addDependency) and record the pending dissolution',
|
|
352
|
+
required: ['dissolutionDate', 'boardResolutionRef', 'shareholderResolutionRef'],
|
|
353
|
+
properties: {
|
|
354
|
+
dissolutionDate: { type: 'string', format: 'date' },
|
|
355
|
+
boardResolutionRef: { type: 'string' },
|
|
356
|
+
shareholderResolutionRef: { type: 'string' },
|
|
357
|
+
windingUpPlan: {
|
|
358
|
+
type: 'string',
|
|
359
|
+
description: 'Reference to winding up plan',
|
|
360
|
+
},
|
|
361
|
+
certificateOfDissolution: { type: 'string' },
|
|
309
362
|
},
|
|
310
363
|
},
|
|
311
364
|
dissolve_voluntary: {
|
|
312
|
-
description:
|
|
313
|
-
required: [
|
|
314
|
-
"dissolutionDate",
|
|
315
|
-
"boardResolutionRef",
|
|
316
|
-
"shareholderResolutionRef",
|
|
317
|
-
],
|
|
365
|
+
description: 'Phase 2 of voluntary dissolution: execute once both bound resolutions are EXECUTED',
|
|
366
|
+
required: ['dissolutionDate'],
|
|
318
367
|
properties: {
|
|
319
|
-
dissolutionDate: { type:
|
|
320
|
-
boardResolutionRef: { type: "string" },
|
|
321
|
-
shareholderResolutionRef: { type: "string" },
|
|
368
|
+
dissolutionDate: { type: 'string', format: 'date' },
|
|
322
369
|
windingUpPlan: {
|
|
323
|
-
type:
|
|
324
|
-
description:
|
|
370
|
+
type: 'string',
|
|
371
|
+
description: 'Reference to winding up plan',
|
|
325
372
|
},
|
|
326
|
-
certificateOfDissolution: { type:
|
|
373
|
+
certificateOfDissolution: { type: 'string' },
|
|
327
374
|
},
|
|
328
375
|
},
|
|
329
376
|
dissolve_administrative: {
|
|
330
|
-
description:
|
|
331
|
-
required: [
|
|
377
|
+
description: 'Administrative dissolution by state after prolonged suspension',
|
|
378
|
+
required: ['dissolutionDate', 'stateOrder', 'reason'],
|
|
332
379
|
properties: {
|
|
333
|
-
dissolutionDate: { type:
|
|
334
|
-
stateOrder: { type:
|
|
335
|
-
reason: { type:
|
|
380
|
+
dissolutionDate: { type: 'string', format: 'date' },
|
|
381
|
+
stateOrder: { type: 'string' },
|
|
382
|
+
reason: { type: 'string' },
|
|
336
383
|
},
|
|
337
384
|
},
|
|
338
385
|
},
|
|
339
386
|
definitions: {
|
|
340
387
|
ShareClass: {
|
|
341
|
-
type:
|
|
388
|
+
type: 'object',
|
|
342
389
|
properties: {
|
|
343
390
|
className: {
|
|
344
|
-
type:
|
|
345
|
-
description:
|
|
391
|
+
type: 'string',
|
|
392
|
+
description: 'e.g., Common, Series A Preferred',
|
|
346
393
|
},
|
|
347
|
-
classId: { type:
|
|
348
|
-
authorized: { type:
|
|
349
|
-
issued: { type:
|
|
350
|
-
outstanding: { type:
|
|
351
|
-
treasury: { type:
|
|
352
|
-
parValue: { type:
|
|
394
|
+
classId: { type: 'string' },
|
|
395
|
+
authorized: { type: 'integer', description: 'Total shares authorized' },
|
|
396
|
+
issued: { type: 'integer', description: 'Shares currently issued' },
|
|
397
|
+
outstanding: { type: 'integer', description: 'Issued minus treasury' },
|
|
398
|
+
treasury: { type: 'integer', description: 'Shares held by company' },
|
|
399
|
+
parValue: { type: 'number', description: 'Par value per share' },
|
|
353
400
|
votingRights: {
|
|
354
|
-
type:
|
|
355
|
-
description:
|
|
401
|
+
type: 'boolean',
|
|
402
|
+
description: 'Whether class has voting rights',
|
|
356
403
|
},
|
|
357
|
-
votesPerShare: { type:
|
|
404
|
+
votesPerShare: { type: 'number', default: 1 },
|
|
358
405
|
liquidationPreference: {
|
|
359
|
-
type:
|
|
406
|
+
type: 'number',
|
|
360
407
|
nullable: true,
|
|
361
|
-
description:
|
|
408
|
+
description: 'Liquidation preference multiple',
|
|
362
409
|
},
|
|
363
410
|
dividendRate: {
|
|
364
|
-
type:
|
|
411
|
+
type: 'number',
|
|
365
412
|
nullable: true,
|
|
366
|
-
description:
|
|
413
|
+
description: 'Annual dividend rate %',
|
|
367
414
|
},
|
|
368
|
-
convertible: { type:
|
|
369
|
-
conversionRatio: { type:
|
|
415
|
+
convertible: { type: 'boolean', default: false },
|
|
416
|
+
conversionRatio: { type: 'number', nullable: true },
|
|
370
417
|
antidilution: {
|
|
371
|
-
type:
|
|
372
|
-
enum: [
|
|
373
|
-
"NONE",
|
|
374
|
-
"BROAD_BASED",
|
|
375
|
-
"NARROW_BASED",
|
|
376
|
-
"FULL_RATCHET",
|
|
377
|
-
],
|
|
418
|
+
type: 'string',
|
|
419
|
+
enum: ['NONE', 'BROAD_BASED', 'NARROW_BASED', 'FULL_RATCHET'],
|
|
378
420
|
nullable: true,
|
|
379
421
|
},
|
|
380
422
|
},
|
|
381
423
|
},
|
|
382
424
|
Incorporator: {
|
|
383
|
-
type:
|
|
425
|
+
type: 'object',
|
|
384
426
|
properties: {
|
|
385
|
-
name: { type:
|
|
386
|
-
address: { type:
|
|
387
|
-
signatureDate: { type:
|
|
427
|
+
name: { type: 'string' },
|
|
428
|
+
address: { type: 'object' },
|
|
429
|
+
signatureDate: { type: 'string', format: 'date' },
|
|
388
430
|
},
|
|
389
431
|
},
|
|
390
432
|
CharterAmendment: {
|
|
391
|
-
type:
|
|
433
|
+
type: 'object',
|
|
392
434
|
properties: {
|
|
393
|
-
amendmentId: { type:
|
|
394
|
-
description: { type:
|
|
395
|
-
effectiveDate: { type:
|
|
435
|
+
amendmentId: { type: 'string' },
|
|
436
|
+
description: { type: 'string' },
|
|
437
|
+
effectiveDate: { type: 'string', format: 'date' },
|
|
396
438
|
resolutionRef: {
|
|
397
|
-
type:
|
|
398
|
-
description:
|
|
439
|
+
type: 'string',
|
|
440
|
+
description: 'Reference to approving resolution',
|
|
399
441
|
},
|
|
400
|
-
filedDate: { type:
|
|
442
|
+
filedDate: { type: 'string', format: 'date' },
|
|
401
443
|
},
|
|
402
444
|
},
|
|
403
445
|
},
|
|
404
446
|
states: {
|
|
405
447
|
INCORPORATING: {
|
|
406
|
-
id:
|
|
448
|
+
id: 'INCORPORATING',
|
|
407
449
|
isFinal: false,
|
|
408
|
-
description:
|
|
450
|
+
description: 'Initial state during formation process. Articles filed but not yet approved by state.',
|
|
409
451
|
},
|
|
410
452
|
ACTIVE: {
|
|
411
|
-
id:
|
|
453
|
+
id: 'ACTIVE',
|
|
412
454
|
isFinal: false,
|
|
413
|
-
description:
|
|
455
|
+
description: 'Corporation is in good standing and authorized to conduct business.',
|
|
414
456
|
},
|
|
415
457
|
SUSPENDED: {
|
|
416
|
-
id:
|
|
458
|
+
id: 'SUSPENDED',
|
|
417
459
|
isFinal: false,
|
|
418
|
-
description:
|
|
460
|
+
description: 'Corporate powers suspended due to compliance failure (tax, filings, etc). Can be reinstated.',
|
|
419
461
|
},
|
|
420
462
|
DISSOLVED: {
|
|
421
|
-
id:
|
|
463
|
+
id: 'DISSOLVED',
|
|
422
464
|
isFinal: true,
|
|
423
|
-
description:
|
|
465
|
+
description: 'Corporation has been legally dissolved. Terminal state.',
|
|
424
466
|
},
|
|
425
467
|
},
|
|
426
|
-
initialState:
|
|
468
|
+
initialState: 'INCORPORATING',
|
|
427
469
|
transitions: [
|
|
428
470
|
// INCORPORATING -> ACTIVE
|
|
429
471
|
{
|
|
430
|
-
from:
|
|
431
|
-
to:
|
|
432
|
-
eventName:
|
|
472
|
+
from: 'INCORPORATING',
|
|
473
|
+
to: 'ACTIVE',
|
|
474
|
+
eventName: 'incorporate',
|
|
433
475
|
guard: {
|
|
434
476
|
and: [
|
|
435
|
-
{
|
|
436
|
-
{
|
|
437
|
-
{
|
|
438
|
-
{
|
|
439
|
-
{
|
|
440
|
-
{
|
|
477
|
+
{ '!=': [{ var: 'state.legalName' }, null] },
|
|
478
|
+
{ '!=': [{ var: 'state.jurisdiction.state' }, null] },
|
|
479
|
+
{ '!=': [{ var: 'state.registeredAgent' }, null] },
|
|
480
|
+
{ '>': [{ length: [{ var: 'state.incorporators' }] }, 0] },
|
|
481
|
+
{ '>': [{ length: [{ var: 'state.shareStructure.classes' }] }, 0] },
|
|
482
|
+
{ '>': [{ var: 'state.shareStructure.totalAuthorized' }, 0] },
|
|
441
483
|
],
|
|
442
484
|
},
|
|
443
485
|
effect: {
|
|
444
486
|
merge: [
|
|
445
|
-
{ var:
|
|
487
|
+
{ var: 'state' },
|
|
488
|
+
{
|
|
489
|
+
status: 'ACTIVE',
|
|
490
|
+
formationDate: { var: 'event.approvalDate' },
|
|
491
|
+
updatedAt: { var: '$ordinal' },
|
|
492
|
+
},
|
|
446
493
|
{
|
|
447
|
-
|
|
448
|
-
formationDate: { var: "event.approvalDate" },
|
|
449
|
-
updatedAt: { var: "$timestamp" },
|
|
494
|
+
_emit: [{ name: 'CORPORATION_FORMED', data: { var: 'event' }, destination: 'external' }],
|
|
450
495
|
},
|
|
451
496
|
],
|
|
452
497
|
},
|
|
453
|
-
emits: ["CORPORATION_FORMED"],
|
|
454
498
|
},
|
|
455
|
-
// ACTIVE -> ACTIVE (
|
|
499
|
+
// ACTIVE -> ACTIVE (propose_amend_charter) — phase 1 (#24): bind the approving resolution fiber and
|
|
500
|
+
// record the pending amendment, so amend_charter can read the resolution's state next transition.
|
|
456
501
|
{
|
|
457
|
-
from:
|
|
458
|
-
to:
|
|
459
|
-
eventName:
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
{
|
|
463
|
-
machine: "corporate-resolution",
|
|
464
|
-
instanceRef: { var: "event.resolutionRef" },
|
|
465
|
-
requiredState: "EXECUTED",
|
|
466
|
-
},
|
|
467
|
-
],
|
|
502
|
+
from: 'ACTIVE',
|
|
503
|
+
to: 'ACTIVE',
|
|
504
|
+
eventName: 'propose_amend_charter',
|
|
505
|
+
// 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)
|
|
506
|
+
guard: (0, guards_js_1.signerIsParty)('state.charterAuthority'),
|
|
468
507
|
effect: {
|
|
469
508
|
merge: [
|
|
470
|
-
{ var:
|
|
509
|
+
{ var: 'state' },
|
|
510
|
+
{
|
|
511
|
+
pendingAmendCharter: {
|
|
512
|
+
amendmentId: { var: 'event.amendmentId' },
|
|
513
|
+
description: { var: 'event.description' },
|
|
514
|
+
effectiveDate: { var: 'event.effectiveDate' },
|
|
515
|
+
filedDate: { var: 'event.filedDate' },
|
|
516
|
+
newLegalName: { var: 'event.newLegalName' },
|
|
517
|
+
ref: { var: 'event.resolutionRef' },
|
|
518
|
+
proposedAt: { var: '$ordinal' },
|
|
519
|
+
},
|
|
520
|
+
},
|
|
521
|
+
// bind the resolution fiber so amend_charter can assert its state next transition
|
|
522
|
+
(0, effects_js_1.addDependency)({ var: 'event.resolutionRef' }),
|
|
523
|
+
],
|
|
524
|
+
},
|
|
525
|
+
dependencies: [],
|
|
526
|
+
},
|
|
527
|
+
// ACTIVE -> ACTIVE (amend_charter) — phase 2 (#24): apply once the bound approving resolution is
|
|
528
|
+
// EXECUTED. depInState replaces the dropped object-form dependency (which silently never gated).
|
|
529
|
+
{
|
|
530
|
+
from: 'ACTIVE',
|
|
531
|
+
to: 'ACTIVE',
|
|
532
|
+
eventName: 'amend_charter',
|
|
533
|
+
// 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)
|
|
534
|
+
guard: {
|
|
535
|
+
and: [
|
|
536
|
+
(0, guards_js_1.signerIsParty)('state.charterAuthority'),
|
|
537
|
+
// the proposal must target this amendment, and its bound resolution must be EXECUTED
|
|
538
|
+
{
|
|
539
|
+
'==': [{ var: 'state.pendingAmendCharter.amendmentId' }, { var: 'event.amendmentId' }],
|
|
540
|
+
},
|
|
541
|
+
(0, guards_js_1.depInState)('state.pendingAmendCharter.ref', 'EXECUTED'),
|
|
542
|
+
],
|
|
543
|
+
},
|
|
544
|
+
effect: {
|
|
545
|
+
merge: [
|
|
546
|
+
{ var: 'state' },
|
|
471
547
|
{
|
|
472
548
|
charterAmendments: {
|
|
473
|
-
|
|
474
|
-
{ var:
|
|
549
|
+
merge: [
|
|
550
|
+
{ var: 'state.charterAmendments' },
|
|
475
551
|
[
|
|
476
552
|
{
|
|
477
|
-
amendmentId: { var:
|
|
478
|
-
description: { var:
|
|
479
|
-
effectiveDate: { var:
|
|
480
|
-
resolutionRef: { var:
|
|
481
|
-
filedDate: { var:
|
|
553
|
+
amendmentId: { var: 'event.amendmentId' },
|
|
554
|
+
description: { var: 'event.description' },
|
|
555
|
+
effectiveDate: { var: 'event.effectiveDate' },
|
|
556
|
+
resolutionRef: { var: 'state.pendingAmendCharter.ref' },
|
|
557
|
+
filedDate: { var: 'event.filedDate' },
|
|
482
558
|
},
|
|
483
559
|
],
|
|
484
560
|
],
|
|
485
561
|
},
|
|
486
562
|
legalName: {
|
|
487
563
|
if: [
|
|
488
|
-
{
|
|
489
|
-
{ var:
|
|
490
|
-
{ var:
|
|
564
|
+
{ '!=': [{ var: 'event.newLegalName' }, null] },
|
|
565
|
+
{ var: 'event.newLegalName' },
|
|
566
|
+
{ var: 'state.legalName' },
|
|
491
567
|
],
|
|
492
568
|
},
|
|
493
|
-
updatedAt: { var:
|
|
569
|
+
updatedAt: { var: '$ordinal' },
|
|
570
|
+
// clear the consumed proposal
|
|
571
|
+
pendingAmendCharter: null,
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
_emit: [{ name: 'CHARTER_AMENDED', data: { var: 'event' }, destination: 'external' }],
|
|
494
575
|
},
|
|
495
576
|
],
|
|
496
577
|
},
|
|
497
|
-
|
|
578
|
+
dependencies: [],
|
|
498
579
|
},
|
|
499
580
|
// ACTIVE -> ACTIVE (update_share_class)
|
|
500
581
|
{
|
|
501
|
-
from:
|
|
502
|
-
to:
|
|
503
|
-
eventName:
|
|
582
|
+
from: 'ACTIVE',
|
|
583
|
+
to: 'ACTIVE',
|
|
584
|
+
eventName: 'update_share_class',
|
|
504
585
|
guard: {
|
|
505
586
|
some: [
|
|
506
|
-
{ var:
|
|
587
|
+
{ var: 'state.charterAmendments' },
|
|
507
588
|
{
|
|
508
|
-
|
|
509
|
-
{ var: ".amendmentId" },
|
|
510
|
-
{ var: "event.charterAmendmentRef" },
|
|
511
|
-
],
|
|
589
|
+
'==': [{ var: 'amendmentId' }, { var: 'event.charterAmendmentRef' }],
|
|
512
590
|
},
|
|
513
591
|
],
|
|
514
592
|
},
|
|
515
593
|
effect: {
|
|
516
594
|
merge: [
|
|
517
|
-
{ var:
|
|
595
|
+
{ var: 'state' },
|
|
518
596
|
{
|
|
519
597
|
shareStructure: {
|
|
520
598
|
merge: [
|
|
521
|
-
{ var:
|
|
599
|
+
{ var: 'state.shareStructure' },
|
|
522
600
|
{
|
|
523
601
|
classes: {
|
|
524
602
|
map: [
|
|
525
|
-
{ var:
|
|
603
|
+
{ var: 'state.shareStructure.classes' },
|
|
526
604
|
{
|
|
527
605
|
if: [
|
|
528
606
|
{
|
|
529
|
-
|
|
530
|
-
{ var: ".classId" },
|
|
531
|
-
{ var: "event.classId" },
|
|
532
|
-
],
|
|
607
|
+
'==': [{ var: 'classId' }, { var: 'event.classId' }],
|
|
533
608
|
},
|
|
534
609
|
{
|
|
535
|
-
classId: { var:
|
|
536
|
-
className: { var:
|
|
537
|
-
authorized: { var:
|
|
610
|
+
classId: { var: 'event.classId' },
|
|
611
|
+
className: { var: 'event.className' },
|
|
612
|
+
authorized: { var: 'event.authorized' },
|
|
538
613
|
issued: 0,
|
|
539
614
|
outstanding: 0,
|
|
540
615
|
treasury: 0,
|
|
541
|
-
parValue: { var:
|
|
542
|
-
votingRights: { var:
|
|
543
|
-
votesPerShare: { var:
|
|
616
|
+
parValue: { var: 'event.parValue' },
|
|
617
|
+
votingRights: { var: 'event.votingRights' },
|
|
618
|
+
votesPerShare: { var: 'event.votesPerShare' },
|
|
544
619
|
liquidationPreference: {
|
|
545
|
-
var:
|
|
620
|
+
var: 'event.liquidationPreference',
|
|
546
621
|
},
|
|
547
|
-
dividendRate: { var:
|
|
548
|
-
convertible: { var:
|
|
622
|
+
dividendRate: { var: 'event.dividendRate' },
|
|
623
|
+
convertible: { var: 'event.convertible' },
|
|
549
624
|
},
|
|
550
|
-
{ var:
|
|
625
|
+
{ var: '' },
|
|
551
626
|
],
|
|
552
627
|
},
|
|
553
628
|
],
|
|
@@ -561,111 +636,162 @@ exports.corpEntityDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
561
636
|
},
|
|
562
637
|
// ACTIVE -> ACTIVE (update_registered_agent)
|
|
563
638
|
{
|
|
564
|
-
from:
|
|
565
|
-
to:
|
|
566
|
-
eventName:
|
|
567
|
-
|
|
639
|
+
from: 'ACTIVE',
|
|
640
|
+
to: 'ACTIVE',
|
|
641
|
+
eventName: 'update_registered_agent',
|
|
642
|
+
// 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)
|
|
643
|
+
guard: (0, guards_js_1.signerIsParty)('state.boardAuthority'),
|
|
568
644
|
effect: {
|
|
569
645
|
merge: [
|
|
570
|
-
{ var:
|
|
646
|
+
{ var: 'state' },
|
|
571
647
|
{
|
|
572
648
|
registeredAgent: {
|
|
573
|
-
name: { var:
|
|
574
|
-
address: { var:
|
|
575
|
-
phone: { var:
|
|
576
|
-
email: { var:
|
|
577
|
-
effectiveDate: { var:
|
|
649
|
+
name: { var: 'event.name' },
|
|
650
|
+
address: { var: 'event.address' },
|
|
651
|
+
phone: { var: 'event.phone' },
|
|
652
|
+
email: { var: 'event.email' },
|
|
653
|
+
effectiveDate: { var: 'event.effectiveDate' },
|
|
578
654
|
},
|
|
579
655
|
},
|
|
656
|
+
{
|
|
657
|
+
_emit: [{ name: 'REGISTERED_AGENT_CHANGED', data: { var: 'event' }, destination: 'external' }],
|
|
658
|
+
},
|
|
580
659
|
],
|
|
581
660
|
},
|
|
582
|
-
emits: ["REGISTERED_AGENT_CHANGED"],
|
|
583
661
|
},
|
|
584
662
|
// ACTIVE -> SUSPENDED
|
|
585
663
|
{
|
|
586
|
-
from:
|
|
587
|
-
to:
|
|
588
|
-
eventName:
|
|
589
|
-
|
|
664
|
+
from: 'ACTIVE',
|
|
665
|
+
to: 'SUSPENDED',
|
|
666
|
+
eventName: 'suspend',
|
|
667
|
+
// 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)
|
|
668
|
+
guard: (0, guards_js_1.signerIsParty)('state.stateAuthority'),
|
|
590
669
|
effect: {
|
|
591
670
|
merge: [
|
|
592
|
-
{ var:
|
|
671
|
+
{ var: 'state' },
|
|
593
672
|
{
|
|
594
|
-
status:
|
|
595
|
-
suspensionReason: { var:
|
|
596
|
-
suspensionDate: { var:
|
|
673
|
+
status: 'SUSPENDED',
|
|
674
|
+
suspensionReason: { var: 'event.reason' },
|
|
675
|
+
suspensionDate: { var: 'event.suspensionDate' },
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
_emit: [{ name: 'CORPORATION_SUSPENDED', data: { var: 'event' }, destination: 'external' }],
|
|
597
679
|
},
|
|
598
680
|
],
|
|
599
681
|
},
|
|
600
|
-
emits: ["CORPORATION_SUSPENDED"],
|
|
601
682
|
},
|
|
602
683
|
// SUSPENDED -> ACTIVE
|
|
603
684
|
{
|
|
604
|
-
from:
|
|
605
|
-
to:
|
|
606
|
-
eventName:
|
|
607
|
-
|
|
685
|
+
from: 'SUSPENDED',
|
|
686
|
+
to: 'ACTIVE',
|
|
687
|
+
eventName: 'reinstate',
|
|
688
|
+
// 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)
|
|
689
|
+
guard: (0, guards_js_1.signerIsParty)('state.boardAuthority'),
|
|
608
690
|
effect: {
|
|
609
691
|
merge: [
|
|
610
|
-
{ var:
|
|
692
|
+
{ var: 'state' },
|
|
611
693
|
{
|
|
612
|
-
status:
|
|
694
|
+
status: 'ACTIVE',
|
|
613
695
|
suspensionReason: null,
|
|
614
696
|
suspensionDate: null,
|
|
615
697
|
},
|
|
698
|
+
{
|
|
699
|
+
_emit: [{ name: 'CORPORATION_REINSTATED', data: { var: 'event' }, destination: 'external' }],
|
|
700
|
+
},
|
|
616
701
|
],
|
|
617
702
|
},
|
|
618
|
-
emits: ["CORPORATION_REINSTATED"],
|
|
619
703
|
},
|
|
620
|
-
// ACTIVE ->
|
|
704
|
+
// ACTIVE -> ACTIVE (propose_dissolve_voluntary) — phase 1 (#24): bind BOTH executing resolution
|
|
705
|
+
// fibers (board + shareholder) and record the pending dissolution, so dissolve_voluntary can read
|
|
706
|
+
// both resolutions' states next transition.
|
|
621
707
|
{
|
|
622
|
-
from:
|
|
623
|
-
to:
|
|
624
|
-
eventName:
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
708
|
+
from: 'ACTIVE',
|
|
709
|
+
to: 'ACTIVE',
|
|
710
|
+
eventName: 'propose_dissolve_voluntary',
|
|
711
|
+
// 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)
|
|
712
|
+
guard: {
|
|
713
|
+
and: [(0, guards_js_1.signerIsParty)('state.boardAuthority'), (0, guards_js_1.signerIsParty)('state.shareholderAuthority')],
|
|
714
|
+
},
|
|
715
|
+
effect: {
|
|
716
|
+
merge: [
|
|
717
|
+
{ var: 'state' },
|
|
718
|
+
{
|
|
719
|
+
pendingDissolveVoluntary: {
|
|
720
|
+
dissolutionDate: { var: 'event.dissolutionDate' },
|
|
721
|
+
boardRef: { var: 'event.boardResolutionRef' },
|
|
722
|
+
shareholderRef: { var: 'event.shareholderResolutionRef' },
|
|
723
|
+
proposedAt: { var: '$ordinal' },
|
|
724
|
+
},
|
|
725
|
+
},
|
|
726
|
+
// bind both resolution fibers so dissolve_voluntary can assert their states next transition
|
|
727
|
+
{
|
|
728
|
+
_addDependency: [
|
|
729
|
+
{ fiberId: { var: 'event.boardResolutionRef' } },
|
|
730
|
+
{ fiberId: { var: 'event.shareholderResolutionRef' } },
|
|
731
|
+
],
|
|
732
|
+
},
|
|
733
|
+
],
|
|
734
|
+
},
|
|
735
|
+
dependencies: [],
|
|
736
|
+
},
|
|
737
|
+
// ACTIVE -> DISSOLVED (dissolve_voluntary) — phase 2 (#24): execute once BOTH bound resolutions are
|
|
738
|
+
// EXECUTED. depInState replaces the dropped object-form dependencies (which silently never gated).
|
|
739
|
+
{
|
|
740
|
+
from: 'ACTIVE',
|
|
741
|
+
to: 'DISSOLVED',
|
|
742
|
+
eventName: 'dissolve_voluntary',
|
|
743
|
+
// 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)
|
|
744
|
+
guard: {
|
|
745
|
+
and: [
|
|
746
|
+
(0, guards_js_1.signerIsParty)('state.boardAuthority'),
|
|
747
|
+
(0, guards_js_1.signerIsParty)('state.shareholderAuthority'),
|
|
748
|
+
// the proposal must target this dissolution, and its bound resolutions must both be EXECUTED
|
|
749
|
+
{
|
|
750
|
+
'==': [{ var: 'state.pendingDissolveVoluntary.dissolutionDate' }, { var: 'event.dissolutionDate' }],
|
|
751
|
+
},
|
|
752
|
+
(0, guards_js_1.depInState)('state.pendingDissolveVoluntary.boardRef', 'EXECUTED'),
|
|
753
|
+
(0, guards_js_1.depInState)('state.pendingDissolveVoluntary.shareholderRef', 'EXECUTED'),
|
|
754
|
+
],
|
|
755
|
+
},
|
|
638
756
|
effect: {
|
|
639
757
|
merge: [
|
|
640
|
-
{ var:
|
|
758
|
+
{ var: 'state' },
|
|
759
|
+
{
|
|
760
|
+
status: 'DISSOLVED',
|
|
761
|
+
dissolutionDate: { var: 'event.dissolutionDate' },
|
|
762
|
+
dissolutionReason: 'VOLUNTARY',
|
|
763
|
+
// clear the consumed proposal
|
|
764
|
+
pendingDissolveVoluntary: null,
|
|
765
|
+
},
|
|
641
766
|
{
|
|
642
|
-
|
|
643
|
-
dissolutionDate: { var: "event.dissolutionDate" },
|
|
644
|
-
dissolutionReason: "VOLUNTARY",
|
|
767
|
+
_emit: [{ name: 'CORPORATION_DISSOLVED', data: { var: 'event' }, destination: 'external' }],
|
|
645
768
|
},
|
|
646
769
|
],
|
|
647
770
|
},
|
|
648
|
-
|
|
771
|
+
dependencies: [],
|
|
649
772
|
},
|
|
650
773
|
// SUSPENDED -> DISSOLVED (administrative)
|
|
651
774
|
{
|
|
652
|
-
from:
|
|
653
|
-
to:
|
|
654
|
-
eventName:
|
|
655
|
-
|
|
775
|
+
from: 'SUSPENDED',
|
|
776
|
+
to: 'DISSOLVED',
|
|
777
|
+
eventName: 'dissolve_administrative',
|
|
778
|
+
// 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)
|
|
779
|
+
guard: (0, guards_js_1.signerIsParty)('state.stateAuthority'),
|
|
656
780
|
effect: {
|
|
657
781
|
merge: [
|
|
658
|
-
{ var:
|
|
782
|
+
{ var: 'state' },
|
|
659
783
|
{
|
|
660
|
-
status:
|
|
661
|
-
dissolutionDate: { var:
|
|
784
|
+
status: 'DISSOLVED',
|
|
785
|
+
dissolutionDate: { var: 'event.dissolutionDate' },
|
|
662
786
|
dissolutionReason: {
|
|
663
|
-
cat: [
|
|
787
|
+
cat: ['ADMINISTRATIVE: ', { var: 'event.reason' }],
|
|
664
788
|
},
|
|
665
789
|
},
|
|
790
|
+
{
|
|
791
|
+
_emit: [{ name: 'CORPORATION_DISSOLVED', data: { var: 'event' }, destination: 'external' }],
|
|
792
|
+
},
|
|
666
793
|
],
|
|
667
794
|
},
|
|
668
|
-
emits: ["CORPORATION_DISSOLVED"],
|
|
669
795
|
},
|
|
670
796
|
],
|
|
671
797
|
});
|