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