@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,701 +2,723 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.corpShareholdersDef = 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
|
* Shareholder meeting state machine managing annual/special meetings, record dates, proxy periods, voting, and certification of results.
|
|
7
9
|
* Supports multiple share classes and cumulative voting.
|
|
8
10
|
*/
|
|
9
11
|
exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
10
12
|
metadata: {
|
|
11
|
-
name:
|
|
12
|
-
app:
|
|
13
|
-
type:
|
|
14
|
-
version:
|
|
15
|
-
description:
|
|
13
|
+
name: 'CorpShareholders',
|
|
14
|
+
app: 'corporate',
|
|
15
|
+
type: 'shareholders',
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
description: 'Shareholder meeting state machine managing annual/special meetings, record dates, proxy periods, voting, and certification of results. Supports multiple share classes and cumulative voting.',
|
|
16
18
|
crossReferences: {
|
|
17
19
|
entity: {
|
|
18
|
-
machine:
|
|
19
|
-
description:
|
|
20
|
-
foreignKey:
|
|
20
|
+
machine: 'corporate-entity',
|
|
21
|
+
description: 'Parent corporate entity',
|
|
22
|
+
foreignKey: 'entityId',
|
|
21
23
|
},
|
|
22
24
|
proxies: {
|
|
23
|
-
machine:
|
|
24
|
-
description:
|
|
25
|
-
foreignKey:
|
|
25
|
+
machine: 'corporate-proxy',
|
|
26
|
+
description: 'Proxy grants for this meeting',
|
|
27
|
+
foreignKey: 'meetingId',
|
|
26
28
|
},
|
|
27
29
|
resolutions: {
|
|
28
|
-
machine:
|
|
29
|
-
description:
|
|
30
|
-
foreignKey:
|
|
30
|
+
machine: 'corporate-resolution',
|
|
31
|
+
description: 'Resolutions resulting from meeting votes',
|
|
32
|
+
foreignKey: 'meetingId',
|
|
31
33
|
},
|
|
32
34
|
securities: {
|
|
33
|
-
machine:
|
|
34
|
-
description:
|
|
35
|
-
foreignKey:
|
|
35
|
+
machine: 'corporate-securities',
|
|
36
|
+
description: 'Share records for determining voting rights',
|
|
37
|
+
foreignKey: 'entityId',
|
|
36
38
|
},
|
|
37
39
|
},
|
|
38
40
|
},
|
|
39
41
|
createSchema: {
|
|
40
|
-
required: [
|
|
42
|
+
required: ['meetingId', 'entityId', 'registrar'],
|
|
41
43
|
properties: {
|
|
42
44
|
meetingId: {
|
|
43
|
-
type:
|
|
44
|
-
description:
|
|
45
|
+
type: 'string',
|
|
46
|
+
description: 'Unique identifier for this shareholder meeting',
|
|
45
47
|
immutable: true,
|
|
46
48
|
},
|
|
47
49
|
entityId: {
|
|
48
|
-
type:
|
|
49
|
-
description:
|
|
50
|
+
type: 'string',
|
|
51
|
+
description: 'Reference to parent corporate-entity',
|
|
52
|
+
immutable: true,
|
|
53
|
+
},
|
|
54
|
+
registrar: {
|
|
55
|
+
type: 'address',
|
|
56
|
+
description: 'State-pinned DAG address of the transfer agent / registrar authorized to register the eligible-shareholder roster of record. Verified against proofs[].address.',
|
|
50
57
|
immutable: true,
|
|
51
58
|
},
|
|
52
59
|
meetingType: {
|
|
53
|
-
type:
|
|
54
|
-
enum: [
|
|
55
|
-
description:
|
|
60
|
+
type: 'string',
|
|
61
|
+
enum: ['ANNUAL', 'SPECIAL'],
|
|
62
|
+
description: 'Annual meetings are required; special meetings called for specific purposes',
|
|
56
63
|
},
|
|
57
64
|
fiscalYear: {
|
|
58
|
-
type:
|
|
59
|
-
description:
|
|
65
|
+
type: 'integer',
|
|
66
|
+
description: 'Fiscal year for annual meetings',
|
|
60
67
|
},
|
|
61
68
|
scheduledDate: {
|
|
62
|
-
type:
|
|
63
|
-
format:
|
|
69
|
+
type: 'string',
|
|
70
|
+
format: 'date-time',
|
|
64
71
|
},
|
|
65
72
|
location: {
|
|
66
|
-
type:
|
|
73
|
+
type: 'object',
|
|
67
74
|
properties: {
|
|
68
|
-
physical: { type:
|
|
69
|
-
virtualUrl: { type:
|
|
70
|
-
isHybrid: { type:
|
|
75
|
+
physical: { type: 'string', nullable: true },
|
|
76
|
+
virtualUrl: { type: 'string', nullable: true },
|
|
77
|
+
isHybrid: { type: 'boolean', default: false },
|
|
71
78
|
},
|
|
72
79
|
},
|
|
73
80
|
},
|
|
74
81
|
},
|
|
75
82
|
stateSchema: {
|
|
76
83
|
properties: {
|
|
77
|
-
meetingId: { type:
|
|
78
|
-
entityId: { type:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
meetingId: { type: 'string', immutable: true },
|
|
85
|
+
entityId: { type: 'string', immutable: true },
|
|
86
|
+
registrar: { type: 'address', immutable: true },
|
|
87
|
+
meetingType: { type: 'string' },
|
|
88
|
+
fiscalYear: { type: 'integer' },
|
|
89
|
+
scheduledDate: { type: 'string', format: 'date-time' },
|
|
90
|
+
location: { type: 'object' },
|
|
91
|
+
calledBy: { $ref: '#/definitions/CalledBy', computed: true },
|
|
92
|
+
noticeInfo: { $ref: '#/definitions/NoticeInfo', computed: true },
|
|
85
93
|
recordDate: {
|
|
86
|
-
$ref:
|
|
94
|
+
$ref: '#/definitions/RecordDate',
|
|
87
95
|
nullable: true,
|
|
88
96
|
computed: true,
|
|
89
97
|
},
|
|
90
98
|
eligibleVoters: {
|
|
91
|
-
type:
|
|
92
|
-
items: { $ref:
|
|
99
|
+
type: 'array',
|
|
100
|
+
items: { $ref: '#/definitions/EligibleVoter' },
|
|
93
101
|
computed: true,
|
|
94
102
|
},
|
|
95
103
|
quorumRequirements: {
|
|
96
|
-
$ref:
|
|
104
|
+
$ref: '#/definitions/QuorumRequirements',
|
|
97
105
|
computed: true,
|
|
98
106
|
},
|
|
99
107
|
agenda: {
|
|
100
|
-
type:
|
|
101
|
-
items: { $ref:
|
|
108
|
+
type: 'array',
|
|
109
|
+
items: { $ref: '#/definitions/AgendaItem' },
|
|
102
110
|
computed: true,
|
|
103
111
|
},
|
|
104
112
|
proxyPeriod: {
|
|
105
|
-
$ref:
|
|
113
|
+
$ref: '#/definitions/ProxyPeriod',
|
|
106
114
|
nullable: true,
|
|
107
115
|
computed: true,
|
|
108
116
|
},
|
|
109
117
|
votes: {
|
|
110
|
-
type:
|
|
111
|
-
items: { $ref:
|
|
118
|
+
type: 'array',
|
|
119
|
+
items: { $ref: '#/definitions/Vote' },
|
|
112
120
|
computed: true,
|
|
113
121
|
},
|
|
114
122
|
voteTallies: {
|
|
115
|
-
type:
|
|
116
|
-
items: { $ref:
|
|
123
|
+
type: 'array',
|
|
124
|
+
items: { $ref: '#/definitions/VoteTally' },
|
|
117
125
|
computed: true,
|
|
118
126
|
},
|
|
119
127
|
inspectorOfElections: {
|
|
120
|
-
$ref:
|
|
128
|
+
$ref: '#/definitions/Inspector',
|
|
121
129
|
nullable: true,
|
|
122
130
|
computed: true,
|
|
123
131
|
},
|
|
124
132
|
sessionInfo: {
|
|
125
|
-
$ref:
|
|
133
|
+
$ref: '#/definitions/SessionInfo',
|
|
126
134
|
nullable: true,
|
|
127
135
|
computed: true,
|
|
128
136
|
},
|
|
129
137
|
certification: {
|
|
130
|
-
$ref:
|
|
138
|
+
$ref: '#/definitions/Certification',
|
|
131
139
|
nullable: true,
|
|
132
140
|
computed: true,
|
|
133
141
|
},
|
|
134
142
|
status: {
|
|
135
|
-
type:
|
|
136
|
-
enum: [
|
|
137
|
-
"SCHEDULED",
|
|
138
|
-
"RECORD_DATE_SET",
|
|
139
|
-
"PROXY_PERIOD",
|
|
140
|
-
"IN_SESSION",
|
|
141
|
-
"VOTING",
|
|
142
|
-
"CLOSED",
|
|
143
|
-
],
|
|
143
|
+
type: 'string',
|
|
144
|
+
enum: ['SCHEDULED', 'RECORD_DATE_SET', 'PROXY_PERIOD', 'IN_SESSION', 'VOTING', 'CLOSED'],
|
|
144
145
|
computed: true,
|
|
145
146
|
},
|
|
146
|
-
createdAt: { type:
|
|
147
|
-
updatedAt: { type:
|
|
147
|
+
createdAt: { type: 'timestamp', computed: true },
|
|
148
|
+
updatedAt: { type: 'timestamp', computed: true },
|
|
149
|
+
// Two-phase scheduling (#24): propose_schedule_annual binds the board-resolution fiber + records the
|
|
150
|
+
// pending meeting here; schedule_annual asserts the bound resolution is EXECUTED, then clears this.
|
|
151
|
+
pendingschedule_annual: { type: 'object', nullable: true, computed: true },
|
|
148
152
|
},
|
|
149
153
|
},
|
|
150
154
|
eventSchemas: {
|
|
155
|
+
propose_schedule_annual: {
|
|
156
|
+
description: 'Phase 1 of annual-meeting scheduling: bind the executing board-resolution fiber (#24 _addDependency) and record the pending meeting',
|
|
157
|
+
required: ['meetingId', 'entityId', 'fiscalYear', 'scheduledDate', 'boardResolutionRef'],
|
|
158
|
+
properties: {
|
|
159
|
+
meetingId: { type: 'string' },
|
|
160
|
+
entityId: { type: 'string' },
|
|
161
|
+
fiscalYear: { type: 'integer' },
|
|
162
|
+
scheduledDate: { type: 'string', format: 'date-time' },
|
|
163
|
+
location: { type: 'object' },
|
|
164
|
+
boardResolutionRef: { type: 'string' },
|
|
165
|
+
},
|
|
166
|
+
},
|
|
151
167
|
schedule_annual: {
|
|
152
|
-
description:
|
|
153
|
-
required: [
|
|
154
|
-
"meetingId",
|
|
155
|
-
"entityId",
|
|
156
|
-
"fiscalYear",
|
|
157
|
-
"scheduledDate",
|
|
158
|
-
"boardResolutionRef",
|
|
159
|
-
],
|
|
168
|
+
description: 'Phase 2 of annual-meeting scheduling: execute once the bound board resolution is EXECUTED',
|
|
169
|
+
required: ['meetingId', 'entityId', 'fiscalYear', 'scheduledDate'],
|
|
160
170
|
properties: {
|
|
161
|
-
meetingId: { type:
|
|
162
|
-
entityId: { type:
|
|
163
|
-
fiscalYear: { type:
|
|
164
|
-
scheduledDate: { type:
|
|
165
|
-
location: { type:
|
|
166
|
-
boardResolutionRef: { type: "string" },
|
|
171
|
+
meetingId: { type: 'string' },
|
|
172
|
+
entityId: { type: 'string' },
|
|
173
|
+
fiscalYear: { type: 'integer' },
|
|
174
|
+
scheduledDate: { type: 'string', format: 'date-time' },
|
|
175
|
+
location: { type: 'object' },
|
|
167
176
|
},
|
|
168
177
|
},
|
|
169
178
|
schedule_special: {
|
|
170
|
-
description:
|
|
171
|
-
required: [
|
|
172
|
-
"meetingId",
|
|
173
|
-
"entityId",
|
|
174
|
-
"scheduledDate",
|
|
175
|
-
"purpose",
|
|
176
|
-
"calledByType",
|
|
177
|
-
],
|
|
179
|
+
description: 'Schedule a special shareholder meeting',
|
|
180
|
+
required: ['meetingId', 'entityId', 'scheduledDate', 'purpose', 'calledByType'],
|
|
178
181
|
properties: {
|
|
179
|
-
meetingId: { type:
|
|
180
|
-
entityId: { type:
|
|
181
|
-
scheduledDate: { type:
|
|
182
|
-
location: { type:
|
|
182
|
+
meetingId: { type: 'string' },
|
|
183
|
+
entityId: { type: 'string' },
|
|
184
|
+
scheduledDate: { type: 'string', format: 'date-time' },
|
|
185
|
+
location: { type: 'object' },
|
|
183
186
|
purpose: {
|
|
184
|
-
type:
|
|
185
|
-
description:
|
|
187
|
+
type: 'string',
|
|
188
|
+
description: 'Specific purpose for special meeting',
|
|
186
189
|
},
|
|
187
190
|
calledByType: {
|
|
188
|
-
type:
|
|
189
|
-
enum: [
|
|
191
|
+
type: 'string',
|
|
192
|
+
enum: ['BOARD', 'SHAREHOLDERS', 'COURT'],
|
|
190
193
|
},
|
|
191
|
-
resolutionRef: { type:
|
|
192
|
-
petitionRef: { type:
|
|
194
|
+
resolutionRef: { type: 'string' },
|
|
195
|
+
petitionRef: { type: 'string' },
|
|
193
196
|
},
|
|
194
197
|
},
|
|
195
198
|
set_record_date: {
|
|
196
|
-
description:
|
|
197
|
-
required: [
|
|
199
|
+
description: 'Board sets the record date for determining eligible shareholders',
|
|
200
|
+
required: ['recordDate', 'resolutionRef'],
|
|
198
201
|
properties: {
|
|
199
|
-
recordDate: { type:
|
|
200
|
-
resolutionRef: { type:
|
|
202
|
+
recordDate: { type: 'string', format: 'date' },
|
|
203
|
+
resolutionRef: { type: 'string' },
|
|
201
204
|
},
|
|
202
205
|
},
|
|
203
206
|
register_eligible_shareholders: {
|
|
204
|
-
description:
|
|
205
|
-
required: [
|
|
207
|
+
description: 'Register shareholders of record as of record date',
|
|
208
|
+
required: ['shareholders', 'totalSharesOutstanding'],
|
|
206
209
|
properties: {
|
|
207
210
|
shareholders: {
|
|
208
|
-
type:
|
|
211
|
+
type: 'array',
|
|
209
212
|
items: {
|
|
210
|
-
type:
|
|
213
|
+
type: 'object',
|
|
211
214
|
properties: {
|
|
212
|
-
shareholderId: { type:
|
|
213
|
-
name: { type:
|
|
214
|
-
|
|
215
|
+
shareholderId: { type: 'string' },
|
|
216
|
+
name: { type: 'string' },
|
|
217
|
+
address: {
|
|
218
|
+
type: 'address',
|
|
219
|
+
description: 'DAG wallet address of record for this shareholder; the only key a verified signer can vote under.',
|
|
220
|
+
},
|
|
221
|
+
shareholdings: { type: 'array' },
|
|
215
222
|
},
|
|
216
223
|
},
|
|
217
224
|
},
|
|
218
|
-
totalSharesOutstanding: { type:
|
|
225
|
+
totalSharesOutstanding: { type: 'integer' },
|
|
219
226
|
},
|
|
220
227
|
},
|
|
221
228
|
open_proxy_period: {
|
|
222
|
-
description:
|
|
223
|
-
required: [
|
|
224
|
-
"startDate",
|
|
225
|
-
"proxyStatementRef",
|
|
226
|
-
"formOfProxyRef",
|
|
227
|
-
"agenda",
|
|
228
|
-
],
|
|
229
|
+
description: 'Distribute proxy materials and open proxy solicitation period',
|
|
230
|
+
required: ['startDate', 'proxyStatementRef', 'formOfProxyRef', 'agenda'],
|
|
229
231
|
properties: {
|
|
230
|
-
startDate: { type:
|
|
231
|
-
proxyStatementRef: { type:
|
|
232
|
-
formOfProxyRef: { type:
|
|
233
|
-
annualReportRef: { type:
|
|
234
|
-
agenda: { type:
|
|
232
|
+
startDate: { type: 'string', format: 'date' },
|
|
233
|
+
proxyStatementRef: { type: 'string' },
|
|
234
|
+
formOfProxyRef: { type: 'string' },
|
|
235
|
+
annualReportRef: { type: 'string' },
|
|
236
|
+
agenda: { type: 'array' },
|
|
235
237
|
},
|
|
236
238
|
},
|
|
237
239
|
add_agenda_item: {
|
|
238
|
-
description:
|
|
239
|
-
required: [
|
|
240
|
+
description: 'Add an item to the meeting agenda (e.g., shareholder proposal)',
|
|
241
|
+
required: ['itemId', 'title', 'type', 'voteRequired'],
|
|
240
242
|
properties: {
|
|
241
|
-
itemId: { type:
|
|
242
|
-
title: { type:
|
|
243
|
-
description: { type:
|
|
244
|
-
type: { type:
|
|
245
|
-
voteRequired: { type:
|
|
246
|
-
eligibleClasses: { type:
|
|
247
|
-
allowCumulativeVoting: { type:
|
|
243
|
+
itemId: { type: 'string' },
|
|
244
|
+
title: { type: 'string' },
|
|
245
|
+
description: { type: 'string' },
|
|
246
|
+
type: { type: 'string' },
|
|
247
|
+
voteRequired: { type: 'string' },
|
|
248
|
+
eligibleClasses: { type: 'array', items: { type: 'string' } },
|
|
249
|
+
allowCumulativeVoting: { type: 'boolean', default: false },
|
|
248
250
|
},
|
|
249
251
|
},
|
|
250
252
|
open_meeting: {
|
|
251
|
-
description:
|
|
252
|
-
required: [
|
|
253
|
-
"openedAt",
|
|
254
|
-
"chairPerson",
|
|
255
|
-
"secretaryPresent",
|
|
256
|
-
"initialQuorumCount",
|
|
257
|
-
],
|
|
253
|
+
description: 'Convene the shareholder meeting',
|
|
254
|
+
required: ['openedAt', 'chairPerson', 'secretaryPresent', 'initialQuorumCount'],
|
|
258
255
|
properties: {
|
|
259
|
-
openedAt: { type:
|
|
260
|
-
chairPerson: { type:
|
|
261
|
-
secretaryPresent: { type:
|
|
262
|
-
inspectorOfElections: { type:
|
|
263
|
-
initialQuorumCount: { type:
|
|
256
|
+
openedAt: { type: 'string', format: 'date-time' },
|
|
257
|
+
chairPerson: { type: 'string' },
|
|
258
|
+
secretaryPresent: { type: 'string' },
|
|
259
|
+
inspectorOfElections: { type: 'object' },
|
|
260
|
+
initialQuorumCount: { type: 'integer' },
|
|
264
261
|
},
|
|
265
262
|
},
|
|
266
263
|
open_polls: {
|
|
267
|
-
description:
|
|
268
|
-
required: [
|
|
264
|
+
description: 'Open polls for voting on agenda items',
|
|
265
|
+
required: ['pollsOpenedAt'],
|
|
269
266
|
properties: {
|
|
270
|
-
pollsOpenedAt: { type:
|
|
267
|
+
pollsOpenedAt: { type: 'string', format: 'date-time' },
|
|
271
268
|
},
|
|
272
269
|
},
|
|
273
270
|
cast_vote: {
|
|
274
|
-
description:
|
|
275
|
-
required: [
|
|
276
|
-
"voteId",
|
|
277
|
-
"agendaItemId",
|
|
278
|
-
"voterId",
|
|
279
|
-
"shareholderId",
|
|
280
|
-
"shareClass",
|
|
281
|
-
],
|
|
271
|
+
description: 'Record a vote from a shareholder or proxy holder',
|
|
272
|
+
required: ['voteId', 'agendaItemId', 'voterId', 'shareholderId', 'shareClass'],
|
|
282
273
|
properties: {
|
|
283
|
-
voteId: { type:
|
|
284
|
-
agendaItemId: { type:
|
|
285
|
-
voterId: { type:
|
|
286
|
-
shareholderId: { type:
|
|
287
|
-
shareClass: { type:
|
|
288
|
-
votesFor: { type:
|
|
289
|
-
votesAgainst: { type:
|
|
290
|
-
votesAbstain: { type:
|
|
291
|
-
votesWithhold: { type:
|
|
292
|
-
cumulativeVoteAllocation: { type:
|
|
293
|
-
viaProxy: { type:
|
|
274
|
+
voteId: { type: 'string' },
|
|
275
|
+
agendaItemId: { type: 'string' },
|
|
276
|
+
voterId: { type: 'string' },
|
|
277
|
+
shareholderId: { type: 'string' },
|
|
278
|
+
shareClass: { type: 'string' },
|
|
279
|
+
votesFor: { type: 'integer', default: 0 },
|
|
280
|
+
votesAgainst: { type: 'integer', default: 0 },
|
|
281
|
+
votesAbstain: { type: 'integer', default: 0 },
|
|
282
|
+
votesWithhold: { type: 'integer', default: 0 },
|
|
283
|
+
cumulativeVoteAllocation: { type: 'object', nullable: true },
|
|
284
|
+
viaProxy: { type: 'boolean', default: false },
|
|
294
285
|
},
|
|
295
286
|
},
|
|
296
287
|
close_polls: {
|
|
297
|
-
description:
|
|
298
|
-
required: [
|
|
288
|
+
description: 'Close polls and begin vote tabulation',
|
|
289
|
+
required: ['pollsClosedAt'],
|
|
299
290
|
properties: {
|
|
300
|
-
pollsClosedAt: { type:
|
|
291
|
+
pollsClosedAt: { type: 'string', format: 'date-time' },
|
|
301
292
|
},
|
|
302
293
|
},
|
|
303
294
|
certify_results: {
|
|
304
|
-
description:
|
|
305
|
-
required: [
|
|
295
|
+
description: 'Inspector of elections certifies vote results',
|
|
296
|
+
required: ['certifiedAt', 'certifiedBy', 'certificateRef'],
|
|
306
297
|
properties: {
|
|
307
|
-
certifiedAt: { type:
|
|
308
|
-
certifiedBy: { type:
|
|
309
|
-
certificateRef: { type:
|
|
298
|
+
certifiedAt: { type: 'string', format: 'date-time' },
|
|
299
|
+
certifiedBy: { type: 'string' },
|
|
300
|
+
certificateRef: { type: 'string' },
|
|
310
301
|
results: {
|
|
311
|
-
type:
|
|
302
|
+
type: 'array',
|
|
312
303
|
items: {
|
|
313
|
-
type:
|
|
304
|
+
type: 'object',
|
|
314
305
|
properties: {
|
|
315
|
-
agendaItemId: { type:
|
|
306
|
+
agendaItemId: { type: 'string' },
|
|
316
307
|
result: {
|
|
317
|
-
type:
|
|
318
|
-
enum: [
|
|
308
|
+
type: 'string',
|
|
309
|
+
enum: ['APPROVED', 'REJECTED'],
|
|
319
310
|
},
|
|
320
311
|
},
|
|
321
312
|
},
|
|
322
313
|
},
|
|
323
|
-
minutesRef: { type:
|
|
314
|
+
minutesRef: { type: 'string' },
|
|
324
315
|
},
|
|
325
316
|
},
|
|
326
317
|
adjourn_without_action: {
|
|
327
|
-
description:
|
|
328
|
-
required: [
|
|
318
|
+
description: 'Adjourn meeting without completing agenda (e.g., quorum lost)',
|
|
319
|
+
required: ['adjournedAt', 'reason'],
|
|
329
320
|
properties: {
|
|
330
|
-
adjournedAt: { type:
|
|
331
|
-
reason: { type:
|
|
332
|
-
adjournedTo: { type:
|
|
321
|
+
adjournedAt: { type: 'string', format: 'date-time' },
|
|
322
|
+
reason: { type: 'string' },
|
|
323
|
+
adjournedTo: { type: 'string', format: 'date-time', nullable: true },
|
|
333
324
|
},
|
|
334
325
|
},
|
|
335
326
|
},
|
|
336
327
|
definitions: {
|
|
337
328
|
CalledBy: {
|
|
338
|
-
type:
|
|
329
|
+
type: 'object',
|
|
339
330
|
properties: {
|
|
340
331
|
type: {
|
|
341
|
-
type:
|
|
342
|
-
enum: [
|
|
332
|
+
type: 'string',
|
|
333
|
+
enum: ['BOARD', 'SHAREHOLDERS', 'COURT'],
|
|
343
334
|
},
|
|
344
|
-
resolutionRef: { type:
|
|
345
|
-
shareholderPetitionRef: { type:
|
|
346
|
-
courtOrderRef: { type:
|
|
335
|
+
resolutionRef: { type: 'string', nullable: true },
|
|
336
|
+
shareholderPetitionRef: { type: 'string', nullable: true },
|
|
337
|
+
courtOrderRef: { type: 'string', nullable: true },
|
|
347
338
|
},
|
|
348
339
|
},
|
|
349
340
|
NoticeInfo: {
|
|
350
|
-
type:
|
|
341
|
+
type: 'object',
|
|
351
342
|
properties: {
|
|
352
|
-
noticeSentDate: { type:
|
|
343
|
+
noticeSentDate: { type: 'string', format: 'date' },
|
|
353
344
|
noticeMethod: {
|
|
354
|
-
type:
|
|
355
|
-
enum: [
|
|
345
|
+
type: 'string',
|
|
346
|
+
enum: ['MAIL', 'EMAIL', 'ELECTRONIC_ACCESS'],
|
|
356
347
|
},
|
|
357
|
-
minimumNoticeDays: { type:
|
|
358
|
-
maximumNoticeDays: { type:
|
|
348
|
+
minimumNoticeDays: { type: 'integer', default: 10 },
|
|
349
|
+
maximumNoticeDays: { type: 'integer', default: 60 },
|
|
359
350
|
},
|
|
360
351
|
},
|
|
361
352
|
RecordDate: {
|
|
362
|
-
type:
|
|
353
|
+
type: 'object',
|
|
363
354
|
nullable: true,
|
|
364
355
|
properties: {
|
|
365
|
-
date: { type:
|
|
366
|
-
setByBoardOn: { type:
|
|
367
|
-
resolutionRef: { type:
|
|
356
|
+
date: { type: 'string', format: 'date' },
|
|
357
|
+
setByBoardOn: { type: 'string', format: 'date' },
|
|
358
|
+
resolutionRef: { type: 'string' },
|
|
368
359
|
},
|
|
369
360
|
},
|
|
370
361
|
EligibleVoter: {
|
|
371
|
-
type:
|
|
362
|
+
type: 'object',
|
|
372
363
|
properties: {
|
|
373
|
-
shareholderId: { type:
|
|
374
|
-
name: { type:
|
|
364
|
+
shareholderId: { type: 'string' },
|
|
365
|
+
name: { type: 'string' },
|
|
366
|
+
address: {
|
|
367
|
+
type: 'address',
|
|
368
|
+
description: 'State-pinned DAG wallet address of record; cast_vote requires this address ∈ proofs[].address.',
|
|
369
|
+
},
|
|
375
370
|
shareholdings: {
|
|
376
|
-
type:
|
|
371
|
+
type: 'array',
|
|
377
372
|
items: {
|
|
378
|
-
type:
|
|
373
|
+
type: 'object',
|
|
379
374
|
properties: {
|
|
380
|
-
shareClass: { type:
|
|
381
|
-
shares: { type:
|
|
375
|
+
shareClass: { type: 'string' },
|
|
376
|
+
shares: { type: 'integer' },
|
|
382
377
|
votes: {
|
|
383
|
-
type:
|
|
384
|
-
description:
|
|
378
|
+
type: 'integer',
|
|
379
|
+
description: 'Votes this holding represents',
|
|
385
380
|
},
|
|
386
381
|
},
|
|
387
382
|
},
|
|
388
383
|
},
|
|
389
|
-
totalVotes: { type:
|
|
384
|
+
totalVotes: { type: 'integer' },
|
|
390
385
|
proxyGrantedTo: {
|
|
391
|
-
type:
|
|
386
|
+
type: 'string',
|
|
392
387
|
nullable: true,
|
|
393
|
-
description:
|
|
388
|
+
description: 'Proxy holder ID if proxied',
|
|
394
389
|
},
|
|
395
|
-
hasVoted: { type:
|
|
390
|
+
hasVoted: { type: 'boolean', default: false },
|
|
396
391
|
},
|
|
397
392
|
},
|
|
398
393
|
QuorumRequirements: {
|
|
399
|
-
type:
|
|
394
|
+
type: 'object',
|
|
400
395
|
properties: {
|
|
401
396
|
type: {
|
|
402
|
-
type:
|
|
403
|
-
enum: [
|
|
397
|
+
type: 'string',
|
|
398
|
+
enum: ['SHARES_REPRESENTED', 'SHARES_OUTSTANDING'],
|
|
404
399
|
},
|
|
405
400
|
threshold: {
|
|
406
|
-
type:
|
|
401
|
+
type: 'number',
|
|
407
402
|
default: 0.5,
|
|
408
|
-
description:
|
|
403
|
+
description: 'Fraction required for quorum',
|
|
409
404
|
},
|
|
410
|
-
sharesRequired: { type:
|
|
411
|
-
sharesRepresented: { type:
|
|
412
|
-
quorumMet: { type:
|
|
405
|
+
sharesRequired: { type: 'integer' },
|
|
406
|
+
sharesRepresented: { type: 'integer', default: 0 },
|
|
407
|
+
quorumMet: { type: 'boolean', default: false },
|
|
413
408
|
},
|
|
414
409
|
},
|
|
415
410
|
AgendaItem: {
|
|
416
|
-
type:
|
|
411
|
+
type: 'object',
|
|
417
412
|
properties: {
|
|
418
|
-
itemId: { type:
|
|
419
|
-
itemNumber: { type:
|
|
420
|
-
title: { type:
|
|
421
|
-
description: { type:
|
|
413
|
+
itemId: { type: 'string' },
|
|
414
|
+
itemNumber: { type: 'integer' },
|
|
415
|
+
title: { type: 'string' },
|
|
416
|
+
description: { type: 'string' },
|
|
422
417
|
type: {
|
|
423
|
-
type:
|
|
418
|
+
type: 'string',
|
|
424
419
|
enum: [
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
420
|
+
'DIRECTOR_ELECTION',
|
|
421
|
+
'AUDITOR_RATIFICATION',
|
|
422
|
+
'SAY_ON_PAY',
|
|
423
|
+
'CHARTER_AMENDMENT',
|
|
424
|
+
'MERGER',
|
|
425
|
+
'STOCK_PLAN',
|
|
426
|
+
'SHAREHOLDER_PROPOSAL',
|
|
427
|
+
'OTHER',
|
|
433
428
|
],
|
|
434
429
|
},
|
|
435
430
|
voteRequired: {
|
|
436
|
-
type:
|
|
437
|
-
enum: [
|
|
438
|
-
|
|
439
|
-
"MAJORITY_CAST",
|
|
440
|
-
"MAJORITY_OUTSTANDING",
|
|
441
|
-
"SUPERMAJORITY",
|
|
442
|
-
"UNANIMOUS",
|
|
443
|
-
],
|
|
444
|
-
description: "Vote threshold for approval",
|
|
431
|
+
type: 'string',
|
|
432
|
+
enum: ['PLURALITY', 'MAJORITY_CAST', 'MAJORITY_OUTSTANDING', 'SUPERMAJORITY', 'UNANIMOUS'],
|
|
433
|
+
description: 'Vote threshold for approval',
|
|
445
434
|
},
|
|
446
|
-
supermajorityThreshold: { type:
|
|
435
|
+
supermajorityThreshold: { type: 'number', nullable: true },
|
|
447
436
|
eligibleClasses: {
|
|
448
|
-
type:
|
|
449
|
-
items: { type:
|
|
450
|
-
description:
|
|
437
|
+
type: 'array',
|
|
438
|
+
items: { type: 'string' },
|
|
439
|
+
description: 'Share classes that can vote on this item',
|
|
451
440
|
},
|
|
452
441
|
allowCumulativeVoting: {
|
|
453
|
-
type:
|
|
442
|
+
type: 'boolean',
|
|
454
443
|
default: false,
|
|
455
|
-
description:
|
|
444
|
+
description: 'For director elections',
|
|
456
445
|
},
|
|
457
446
|
status: {
|
|
458
|
-
type:
|
|
459
|
-
enum: [
|
|
460
|
-
"PENDING",
|
|
461
|
-
"VOTING",
|
|
462
|
-
"CLOSED",
|
|
463
|
-
"APPROVED",
|
|
464
|
-
"REJECTED",
|
|
465
|
-
],
|
|
447
|
+
type: 'string',
|
|
448
|
+
enum: ['PENDING', 'VOTING', 'CLOSED', 'APPROVED', 'REJECTED'],
|
|
466
449
|
},
|
|
467
450
|
},
|
|
468
451
|
},
|
|
469
452
|
ProxyPeriod: {
|
|
470
|
-
type:
|
|
453
|
+
type: 'object',
|
|
471
454
|
nullable: true,
|
|
472
455
|
properties: {
|
|
473
|
-
startDate: { type:
|
|
456
|
+
startDate: { type: 'string', format: 'date' },
|
|
474
457
|
endDate: {
|
|
475
|
-
type:
|
|
476
|
-
format:
|
|
477
|
-
description:
|
|
458
|
+
type: 'string',
|
|
459
|
+
format: 'date-time',
|
|
460
|
+
description: 'Usually meeting start time',
|
|
478
461
|
},
|
|
479
462
|
proxyMaterials: {
|
|
480
|
-
type:
|
|
463
|
+
type: 'object',
|
|
481
464
|
properties: {
|
|
482
|
-
proxyStatementRef: { type:
|
|
483
|
-
formOfProxyRef: { type:
|
|
484
|
-
annualReportRef: { type:
|
|
465
|
+
proxyStatementRef: { type: 'string' },
|
|
466
|
+
formOfProxyRef: { type: 'string' },
|
|
467
|
+
annualReportRef: { type: 'string', nullable: true },
|
|
485
468
|
},
|
|
486
469
|
},
|
|
487
470
|
},
|
|
488
471
|
},
|
|
489
472
|
Vote: {
|
|
490
|
-
type:
|
|
473
|
+
type: 'object',
|
|
491
474
|
properties: {
|
|
492
|
-
voteId: { type:
|
|
493
|
-
agendaItemId: { type:
|
|
475
|
+
voteId: { type: 'string' },
|
|
476
|
+
agendaItemId: { type: 'string' },
|
|
494
477
|
voterId: {
|
|
495
|
-
type:
|
|
496
|
-
description:
|
|
478
|
+
type: 'string',
|
|
479
|
+
description: 'Shareholder or proxy holder ID',
|
|
497
480
|
},
|
|
498
|
-
shareholderId: { type:
|
|
499
|
-
shareClass: { type:
|
|
500
|
-
votesFor: { type:
|
|
501
|
-
votesAgainst: { type:
|
|
502
|
-
votesAbstain: { type:
|
|
481
|
+
shareholderId: { type: 'string', description: 'Beneficial owner' },
|
|
482
|
+
shareClass: { type: 'string' },
|
|
483
|
+
votesFor: { type: 'integer', default: 0 },
|
|
484
|
+
votesAgainst: { type: 'integer', default: 0 },
|
|
485
|
+
votesAbstain: { type: 'integer', default: 0 },
|
|
503
486
|
votesWithhold: {
|
|
504
|
-
type:
|
|
487
|
+
type: 'integer',
|
|
505
488
|
default: 0,
|
|
506
|
-
description:
|
|
489
|
+
description: 'For director elections',
|
|
507
490
|
},
|
|
508
491
|
cumulativeVoteAllocation: {
|
|
509
|
-
type:
|
|
510
|
-
additionalProperties: { type:
|
|
492
|
+
type: 'object',
|
|
493
|
+
additionalProperties: { type: 'integer' },
|
|
511
494
|
nullable: true,
|
|
512
|
-
description:
|
|
495
|
+
description: 'For cumulative voting: candidate ID -> votes allocated',
|
|
513
496
|
},
|
|
514
|
-
viaProxy: { type:
|
|
515
|
-
timestamp: { type:
|
|
497
|
+
viaProxy: { type: 'boolean', default: false },
|
|
498
|
+
timestamp: { type: 'string', format: 'date-time' },
|
|
516
499
|
},
|
|
517
500
|
},
|
|
518
501
|
VoteTally: {
|
|
519
|
-
type:
|
|
502
|
+
type: 'object',
|
|
520
503
|
properties: {
|
|
521
|
-
agendaItemId: { type:
|
|
522
|
-
forVotes: { type:
|
|
523
|
-
againstVotes: { type:
|
|
524
|
-
abstainVotes: { type:
|
|
525
|
-
withholdVotes: { type:
|
|
526
|
-
brokerNonVotes: { type:
|
|
504
|
+
agendaItemId: { type: 'string' },
|
|
505
|
+
forVotes: { type: 'integer', default: 0 },
|
|
506
|
+
againstVotes: { type: 'integer', default: 0 },
|
|
507
|
+
abstainVotes: { type: 'integer', default: 0 },
|
|
508
|
+
withholdVotes: { type: 'integer', default: 0 },
|
|
509
|
+
brokerNonVotes: { type: 'integer', default: 0 },
|
|
527
510
|
candidateVotes: {
|
|
528
|
-
type:
|
|
529
|
-
additionalProperties: { type:
|
|
511
|
+
type: 'object',
|
|
512
|
+
additionalProperties: { type: 'integer' },
|
|
530
513
|
nullable: true,
|
|
531
|
-
description:
|
|
514
|
+
description: 'For director elections: candidate ID -> total votes',
|
|
532
515
|
},
|
|
533
516
|
result: {
|
|
534
|
-
type:
|
|
535
|
-
enum: [
|
|
517
|
+
type: 'string',
|
|
518
|
+
enum: ['APPROVED', 'REJECTED', 'PENDING'],
|
|
536
519
|
},
|
|
537
|
-
certified: { type:
|
|
520
|
+
certified: { type: 'boolean', default: false },
|
|
538
521
|
},
|
|
539
522
|
},
|
|
540
523
|
Inspector: {
|
|
541
|
-
type:
|
|
524
|
+
type: 'object',
|
|
542
525
|
nullable: true,
|
|
543
526
|
properties: {
|
|
544
|
-
name: { type:
|
|
545
|
-
company: { type:
|
|
546
|
-
appointedBy: { type:
|
|
547
|
-
appointmentDate: { type:
|
|
527
|
+
name: { type: 'string' },
|
|
528
|
+
company: { type: 'string', nullable: true },
|
|
529
|
+
appointedBy: { type: 'string' },
|
|
530
|
+
appointmentDate: { type: 'string', format: 'date' },
|
|
548
531
|
},
|
|
549
532
|
},
|
|
550
533
|
SessionInfo: {
|
|
551
|
-
type:
|
|
534
|
+
type: 'object',
|
|
552
535
|
nullable: true,
|
|
553
536
|
properties: {
|
|
554
|
-
openedAt: { type:
|
|
555
|
-
chairPerson: { type:
|
|
556
|
-
secretaryPresent: { type:
|
|
557
|
-
pollsOpenedAt: { type:
|
|
558
|
-
pollsClosedAt: { type:
|
|
559
|
-
adjournedAt: { type:
|
|
560
|
-
minutesRef: { type:
|
|
537
|
+
openedAt: { type: 'string', format: 'date-time' },
|
|
538
|
+
chairPerson: { type: 'string' },
|
|
539
|
+
secretaryPresent: { type: 'string' },
|
|
540
|
+
pollsOpenedAt: { type: 'string', format: 'date-time', nullable: true },
|
|
541
|
+
pollsClosedAt: { type: 'string', format: 'date-time', nullable: true },
|
|
542
|
+
adjournedAt: { type: 'string', format: 'date-time', nullable: true },
|
|
543
|
+
minutesRef: { type: 'string', nullable: true },
|
|
561
544
|
},
|
|
562
545
|
},
|
|
563
546
|
Certification: {
|
|
564
|
-
type:
|
|
547
|
+
type: 'object',
|
|
565
548
|
nullable: true,
|
|
566
549
|
properties: {
|
|
567
|
-
certifiedAt: { type:
|
|
568
|
-
certifiedBy: { type:
|
|
569
|
-
certificateRef: { type:
|
|
550
|
+
certifiedAt: { type: 'string', format: 'date-time' },
|
|
551
|
+
certifiedBy: { type: 'string' },
|
|
552
|
+
certificateRef: { type: 'string' },
|
|
570
553
|
},
|
|
571
554
|
},
|
|
572
555
|
},
|
|
573
556
|
states: {
|
|
574
557
|
SCHEDULED: {
|
|
575
|
-
id:
|
|
558
|
+
id: 'SCHEDULED',
|
|
576
559
|
isFinal: false,
|
|
577
|
-
description:
|
|
560
|
+
description: 'Meeting has been scheduled but record date not yet set',
|
|
578
561
|
},
|
|
579
562
|
RECORD_DATE_SET: {
|
|
580
|
-
id:
|
|
563
|
+
id: 'RECORD_DATE_SET',
|
|
581
564
|
isFinal: false,
|
|
582
|
-
description:
|
|
565
|
+
description: 'Record date established; eligible shareholders determined',
|
|
583
566
|
},
|
|
584
567
|
PROXY_PERIOD: {
|
|
585
|
-
id:
|
|
568
|
+
id: 'PROXY_PERIOD',
|
|
586
569
|
isFinal: false,
|
|
587
|
-
description:
|
|
570
|
+
description: 'Proxy materials distributed; shareholders may submit proxies',
|
|
588
571
|
},
|
|
589
572
|
IN_SESSION: {
|
|
590
|
-
id:
|
|
573
|
+
id: 'IN_SESSION',
|
|
591
574
|
isFinal: false,
|
|
592
|
-
description:
|
|
575
|
+
description: 'Meeting is convened and in progress',
|
|
593
576
|
},
|
|
594
577
|
VOTING: {
|
|
595
|
-
id:
|
|
578
|
+
id: 'VOTING',
|
|
596
579
|
isFinal: false,
|
|
597
|
-
description:
|
|
580
|
+
description: 'Polls are open for voting on agenda items',
|
|
598
581
|
},
|
|
599
582
|
CLOSED: {
|
|
600
|
-
id:
|
|
583
|
+
id: 'CLOSED',
|
|
601
584
|
isFinal: true,
|
|
602
|
-
description:
|
|
585
|
+
description: 'Meeting concluded; results certified',
|
|
603
586
|
},
|
|
604
587
|
},
|
|
605
|
-
initialState:
|
|
588
|
+
initialState: 'SCHEDULED',
|
|
606
589
|
transitions: [
|
|
607
590
|
// Initial creation transitions (from: null means creation)
|
|
608
|
-
//
|
|
591
|
+
// SCHEDULED -> SCHEDULED (propose_schedule_annual) — phase 1 (#24): bind the executing board-resolution
|
|
592
|
+
// fiber and record the pending meeting, so the next transition can read the resolution's state.
|
|
609
593
|
{
|
|
610
|
-
from:
|
|
611
|
-
to:
|
|
612
|
-
eventName:
|
|
613
|
-
guard: {
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
594
|
+
from: 'SCHEDULED',
|
|
595
|
+
to: 'SCHEDULED',
|
|
596
|
+
eventName: 'propose_schedule_annual',
|
|
597
|
+
guard: { '==': [1, 1] },
|
|
598
|
+
effect: {
|
|
599
|
+
merge: [
|
|
600
|
+
{ var: 'state' },
|
|
601
|
+
{
|
|
602
|
+
pendingschedule_annual: {
|
|
603
|
+
meetingId: { var: 'event.meetingId' },
|
|
604
|
+
entityId: { var: 'event.entityId' },
|
|
605
|
+
fiscalYear: { var: 'event.fiscalYear' },
|
|
606
|
+
scheduledDate: { var: 'event.scheduledDate' },
|
|
607
|
+
location: { var: 'event.location' },
|
|
608
|
+
ref: { var: 'event.boardResolutionRef' },
|
|
609
|
+
proposedAt: { var: '$ordinal' },
|
|
610
|
+
},
|
|
611
|
+
},
|
|
612
|
+
// bind the resolution fiber so schedule_annual can assert its state next transition
|
|
613
|
+
(0, effects_js_1.addDependency)({ var: 'event.boardResolutionRef' }),
|
|
614
|
+
],
|
|
615
|
+
},
|
|
616
|
+
dependencies: [],
|
|
617
|
+
},
|
|
618
|
+
// SCHEDULED -> SCHEDULED (schedule_annual) — phase 2 (#24): execute once the bound board resolution is
|
|
619
|
+
// EXECUTED. depInState replaces the dropped object-form dependency (which silently never gated).
|
|
620
|
+
{
|
|
621
|
+
from: 'SCHEDULED',
|
|
622
|
+
to: 'SCHEDULED',
|
|
623
|
+
eventName: 'schedule_annual',
|
|
624
|
+
guard: {
|
|
625
|
+
and: [
|
|
626
|
+
// the proposal must target this meeting, and its bound resolution must be EXECUTED
|
|
627
|
+
{
|
|
628
|
+
'==': [{ var: 'state.pendingschedule_annual.meetingId' }, { var: 'event.meetingId' }],
|
|
629
|
+
},
|
|
630
|
+
(0, guards_js_1.depInState)('state.pendingschedule_annual.ref', 'EXECUTED'),
|
|
631
|
+
],
|
|
632
|
+
},
|
|
621
633
|
effect: {
|
|
622
634
|
merge: [
|
|
623
|
-
{ var:
|
|
635
|
+
{ var: 'state' },
|
|
624
636
|
{
|
|
625
|
-
meetingId: { var:
|
|
626
|
-
entityId: { var:
|
|
627
|
-
meetingType:
|
|
628
|
-
fiscalYear: { var:
|
|
629
|
-
scheduledDate: { var:
|
|
630
|
-
location: { var:
|
|
637
|
+
meetingId: { var: 'event.meetingId' },
|
|
638
|
+
entityId: { var: 'event.entityId' },
|
|
639
|
+
meetingType: 'ANNUAL',
|
|
640
|
+
fiscalYear: { var: 'event.fiscalYear' },
|
|
641
|
+
scheduledDate: { var: 'event.scheduledDate' },
|
|
642
|
+
location: { var: 'event.location' },
|
|
631
643
|
calledBy: {
|
|
632
|
-
type:
|
|
633
|
-
resolutionRef: { var:
|
|
644
|
+
type: 'BOARD',
|
|
645
|
+
resolutionRef: { var: 'state.pendingschedule_annual.ref' },
|
|
634
646
|
},
|
|
647
|
+
// clear the consumed proposal
|
|
648
|
+
pendingschedule_annual: null,
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
_emit: [{ name: 'SHAREHOLDER_MEETING_SCHEDULED', data: { var: 'event' }, destination: 'external' }],
|
|
635
652
|
},
|
|
636
653
|
],
|
|
637
654
|
},
|
|
638
|
-
|
|
655
|
+
dependencies: [],
|
|
639
656
|
},
|
|
640
657
|
// schedule_special -> SCHEDULED
|
|
641
658
|
{
|
|
642
|
-
from:
|
|
643
|
-
to:
|
|
644
|
-
eventName:
|
|
645
|
-
guard: {
|
|
659
|
+
from: 'SCHEDULED',
|
|
660
|
+
to: 'SCHEDULED',
|
|
661
|
+
eventName: 'schedule_special',
|
|
662
|
+
guard: { '==': [1, 1] },
|
|
646
663
|
effect: {
|
|
647
664
|
merge: [
|
|
648
|
-
{ var:
|
|
665
|
+
{ var: 'state' },
|
|
649
666
|
{
|
|
650
|
-
meetingId: { var:
|
|
651
|
-
entityId: { var:
|
|
652
|
-
meetingType:
|
|
653
|
-
scheduledDate: { var:
|
|
667
|
+
meetingId: { var: 'event.meetingId' },
|
|
668
|
+
entityId: { var: 'event.entityId' },
|
|
669
|
+
meetingType: 'SPECIAL',
|
|
670
|
+
scheduledDate: { var: 'event.scheduledDate' },
|
|
654
671
|
calledBy: {
|
|
655
|
-
type: { var:
|
|
672
|
+
type: { var: 'event.calledByType' },
|
|
656
673
|
},
|
|
657
674
|
},
|
|
675
|
+
{
|
|
676
|
+
_emit: [{ name: 'SPECIAL_MEETING_SCHEDULED', data: { var: 'event' }, destination: 'external' }],
|
|
677
|
+
},
|
|
658
678
|
],
|
|
659
679
|
},
|
|
660
|
-
emits: ["SPECIAL_MEETING_SCHEDULED"],
|
|
661
680
|
},
|
|
662
681
|
// SCHEDULED -> RECORD_DATE_SET
|
|
663
682
|
{
|
|
664
|
-
from:
|
|
665
|
-
to:
|
|
666
|
-
eventName:
|
|
667
|
-
guard: {
|
|
683
|
+
from: 'SCHEDULED',
|
|
684
|
+
to: 'RECORD_DATE_SET',
|
|
685
|
+
eventName: 'set_record_date',
|
|
686
|
+
guard: { '==': [1, 1] }, // validRecordDateTiming simplified
|
|
668
687
|
effect: {
|
|
669
688
|
merge: [
|
|
670
|
-
{ var:
|
|
689
|
+
{ var: 'state' },
|
|
671
690
|
{
|
|
672
|
-
status:
|
|
691
|
+
status: 'RECORD_DATE_SET',
|
|
673
692
|
recordDate: {
|
|
674
|
-
date: { var:
|
|
675
|
-
setByBoardOn: { var:
|
|
676
|
-
resolutionRef: { var:
|
|
693
|
+
date: { var: 'event.recordDate' },
|
|
694
|
+
setByBoardOn: { var: '$ordinal' },
|
|
695
|
+
resolutionRef: { var: 'event.resolutionRef' },
|
|
677
696
|
},
|
|
678
697
|
},
|
|
698
|
+
{
|
|
699
|
+
_emit: [{ name: 'RECORD_DATE_SET', data: { var: 'event' }, destination: 'external' }],
|
|
700
|
+
},
|
|
679
701
|
],
|
|
680
702
|
},
|
|
681
|
-
emits: ["RECORD_DATE_SET"],
|
|
682
703
|
},
|
|
683
704
|
// RECORD_DATE_SET -> RECORD_DATE_SET (register_eligible_shareholders)
|
|
684
705
|
{
|
|
685
|
-
from:
|
|
686
|
-
to:
|
|
687
|
-
eventName:
|
|
688
|
-
|
|
706
|
+
from: 'RECORD_DATE_SET',
|
|
707
|
+
to: 'RECORD_DATE_SET',
|
|
708
|
+
eventName: 'register_eligible_shareholders',
|
|
709
|
+
// authority gate — only the pinned registrar may set the roster of record; an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
|
|
710
|
+
guard: (0, guards_js_1.signerIsParty)('state.registrar'),
|
|
689
711
|
effect: {
|
|
690
712
|
merge: [
|
|
691
|
-
{ var:
|
|
713
|
+
{ var: 'state' },
|
|
692
714
|
{
|
|
693
|
-
eligibleVoters: { var:
|
|
715
|
+
eligibleVoters: { var: 'event.shareholders' },
|
|
694
716
|
quorumRequirements: {
|
|
695
717
|
merge: [
|
|
696
|
-
{ var:
|
|
718
|
+
{ var: 'state.quorumRequirements' },
|
|
697
719
|
{
|
|
698
720
|
sharesRequired: {
|
|
699
|
-
|
|
721
|
+
'*': [{ var: 'event.totalSharesOutstanding' }, 0.5],
|
|
700
722
|
},
|
|
701
723
|
},
|
|
702
724
|
],
|
|
@@ -707,62 +729,61 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
707
729
|
},
|
|
708
730
|
// RECORD_DATE_SET -> PROXY_PERIOD
|
|
709
731
|
{
|
|
710
|
-
from:
|
|
711
|
-
to:
|
|
712
|
-
eventName:
|
|
713
|
-
guard: {
|
|
732
|
+
from: 'RECORD_DATE_SET',
|
|
733
|
+
to: 'PROXY_PERIOD',
|
|
734
|
+
eventName: 'open_proxy_period',
|
|
735
|
+
guard: { '==': [1, 1] },
|
|
714
736
|
effect: {
|
|
715
737
|
merge: [
|
|
716
|
-
{ var:
|
|
738
|
+
{ var: 'state' },
|
|
717
739
|
{
|
|
718
|
-
status:
|
|
740
|
+
status: 'PROXY_PERIOD',
|
|
719
741
|
proxyPeriod: {
|
|
720
|
-
startDate: { var:
|
|
721
|
-
endDate: { var:
|
|
742
|
+
startDate: { var: 'event.startDate' },
|
|
743
|
+
endDate: { var: 'state.scheduledDate' },
|
|
722
744
|
proxyMaterials: {
|
|
723
|
-
proxyStatementRef: { var:
|
|
724
|
-
formOfProxyRef: { var:
|
|
725
|
-
annualReportRef: { var:
|
|
745
|
+
proxyStatementRef: { var: 'event.proxyStatementRef' },
|
|
746
|
+
formOfProxyRef: { var: 'event.formOfProxyRef' },
|
|
747
|
+
annualReportRef: { var: 'event.annualReportRef' },
|
|
726
748
|
},
|
|
727
749
|
},
|
|
728
|
-
agenda: { var:
|
|
750
|
+
agenda: { var: 'event.agenda' },
|
|
729
751
|
noticeInfo: {
|
|
730
|
-
merge: [
|
|
731
|
-
{ var: "state.noticeInfo" },
|
|
732
|
-
{ noticeSentDate: { var: "event.startDate" } },
|
|
733
|
-
],
|
|
752
|
+
merge: [{ var: 'state.noticeInfo' }, { noticeSentDate: { var: 'event.startDate' } }],
|
|
734
753
|
},
|
|
735
754
|
},
|
|
755
|
+
{
|
|
756
|
+
_emit: [{ name: 'PROXY_PERIOD_OPENED', data: { var: 'event' }, destination: 'external' }],
|
|
757
|
+
},
|
|
736
758
|
],
|
|
737
759
|
},
|
|
738
|
-
emits: ["PROXY_PERIOD_OPENED"],
|
|
739
760
|
},
|
|
740
761
|
// add_agenda_item (can be from multiple states)
|
|
741
762
|
{
|
|
742
|
-
from:
|
|
743
|
-
to:
|
|
744
|
-
eventName:
|
|
745
|
-
guard: {
|
|
763
|
+
from: 'SCHEDULED',
|
|
764
|
+
to: 'SCHEDULED',
|
|
765
|
+
eventName: 'add_agenda_item',
|
|
766
|
+
guard: { '==': [1, 1] },
|
|
746
767
|
effect: {
|
|
747
768
|
merge: [
|
|
748
|
-
{ var:
|
|
769
|
+
{ var: 'state' },
|
|
749
770
|
{
|
|
750
771
|
agenda: {
|
|
751
|
-
|
|
752
|
-
{ var:
|
|
772
|
+
merge: [
|
|
773
|
+
{ var: 'state.agenda' },
|
|
753
774
|
[
|
|
754
775
|
{
|
|
755
|
-
itemId: { var:
|
|
756
|
-
itemNumber: {
|
|
757
|
-
title: { var:
|
|
758
|
-
description: { var:
|
|
759
|
-
type: { var:
|
|
760
|
-
voteRequired: { var:
|
|
761
|
-
eligibleClasses: { var:
|
|
776
|
+
itemId: { var: 'event.itemId' },
|
|
777
|
+
itemNumber: { '+': [{ length: [{ var: 'state.agenda' }] }, 1] },
|
|
778
|
+
title: { var: 'event.title' },
|
|
779
|
+
description: { var: 'event.description' },
|
|
780
|
+
type: { var: 'event.type' },
|
|
781
|
+
voteRequired: { var: 'event.voteRequired' },
|
|
782
|
+
eligibleClasses: { var: 'event.eligibleClasses' },
|
|
762
783
|
allowCumulativeVoting: {
|
|
763
|
-
var:
|
|
784
|
+
var: 'event.allowCumulativeVoting',
|
|
764
785
|
},
|
|
765
|
-
status:
|
|
786
|
+
status: 'PENDING',
|
|
766
787
|
},
|
|
767
788
|
],
|
|
768
789
|
],
|
|
@@ -772,30 +793,30 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
772
793
|
},
|
|
773
794
|
},
|
|
774
795
|
{
|
|
775
|
-
from:
|
|
776
|
-
to:
|
|
777
|
-
eventName:
|
|
778
|
-
guard: {
|
|
796
|
+
from: 'RECORD_DATE_SET',
|
|
797
|
+
to: 'RECORD_DATE_SET',
|
|
798
|
+
eventName: 'add_agenda_item',
|
|
799
|
+
guard: { '==': [1, 1] },
|
|
779
800
|
effect: {
|
|
780
801
|
merge: [
|
|
781
|
-
{ var:
|
|
802
|
+
{ var: 'state' },
|
|
782
803
|
{
|
|
783
804
|
agenda: {
|
|
784
|
-
|
|
785
|
-
{ var:
|
|
805
|
+
merge: [
|
|
806
|
+
{ var: 'state.agenda' },
|
|
786
807
|
[
|
|
787
808
|
{
|
|
788
|
-
itemId: { var:
|
|
789
|
-
itemNumber: {
|
|
790
|
-
title: { var:
|
|
791
|
-
description: { var:
|
|
792
|
-
type: { var:
|
|
793
|
-
voteRequired: { var:
|
|
794
|
-
eligibleClasses: { var:
|
|
809
|
+
itemId: { var: 'event.itemId' },
|
|
810
|
+
itemNumber: { '+': [{ length: [{ var: 'state.agenda' }] }, 1] },
|
|
811
|
+
title: { var: 'event.title' },
|
|
812
|
+
description: { var: 'event.description' },
|
|
813
|
+
type: { var: 'event.type' },
|
|
814
|
+
voteRequired: { var: 'event.voteRequired' },
|
|
815
|
+
eligibleClasses: { var: 'event.eligibleClasses' },
|
|
795
816
|
allowCumulativeVoting: {
|
|
796
|
-
var:
|
|
817
|
+
var: 'event.allowCumulativeVoting',
|
|
797
818
|
},
|
|
798
|
-
status:
|
|
819
|
+
status: 'PENDING',
|
|
799
820
|
},
|
|
800
821
|
],
|
|
801
822
|
],
|
|
@@ -805,30 +826,30 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
805
826
|
},
|
|
806
827
|
},
|
|
807
828
|
{
|
|
808
|
-
from:
|
|
809
|
-
to:
|
|
810
|
-
eventName:
|
|
811
|
-
guard: {
|
|
829
|
+
from: 'PROXY_PERIOD',
|
|
830
|
+
to: 'PROXY_PERIOD',
|
|
831
|
+
eventName: 'add_agenda_item',
|
|
832
|
+
guard: { '==': [1, 1] },
|
|
812
833
|
effect: {
|
|
813
834
|
merge: [
|
|
814
|
-
{ var:
|
|
835
|
+
{ var: 'state' },
|
|
815
836
|
{
|
|
816
837
|
agenda: {
|
|
817
|
-
|
|
818
|
-
{ var:
|
|
838
|
+
merge: [
|
|
839
|
+
{ var: 'state.agenda' },
|
|
819
840
|
[
|
|
820
841
|
{
|
|
821
|
-
itemId: { var:
|
|
822
|
-
itemNumber: {
|
|
823
|
-
title: { var:
|
|
824
|
-
description: { var:
|
|
825
|
-
type: { var:
|
|
826
|
-
voteRequired: { var:
|
|
827
|
-
eligibleClasses: { var:
|
|
842
|
+
itemId: { var: 'event.itemId' },
|
|
843
|
+
itemNumber: { '+': [{ length: [{ var: 'state.agenda' }] }, 1] },
|
|
844
|
+
title: { var: 'event.title' },
|
|
845
|
+
description: { var: 'event.description' },
|
|
846
|
+
type: { var: 'event.type' },
|
|
847
|
+
voteRequired: { var: 'event.voteRequired' },
|
|
848
|
+
eligibleClasses: { var: 'event.eligibleClasses' },
|
|
828
849
|
allowCumulativeVoting: {
|
|
829
|
-
var:
|
|
850
|
+
var: 'event.allowCumulativeVoting',
|
|
830
851
|
},
|
|
831
|
-
status:
|
|
852
|
+
status: 'PENDING',
|
|
832
853
|
},
|
|
833
854
|
],
|
|
834
855
|
],
|
|
@@ -839,62 +860,58 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
839
860
|
},
|
|
840
861
|
// PROXY_PERIOD -> IN_SESSION
|
|
841
862
|
{
|
|
842
|
-
from:
|
|
843
|
-
to:
|
|
844
|
-
eventName:
|
|
863
|
+
from: 'PROXY_PERIOD',
|
|
864
|
+
to: 'IN_SESSION',
|
|
865
|
+
eventName: 'open_meeting',
|
|
845
866
|
guard: {
|
|
846
|
-
|
|
847
|
-
{ var: "event.initialQuorumCount" },
|
|
848
|
-
{ var: "state.quorumRequirements.sharesRequired" },
|
|
849
|
-
],
|
|
867
|
+
'>=': [{ var: 'event.initialQuorumCount' }, { var: 'state.quorumRequirements.sharesRequired' }],
|
|
850
868
|
},
|
|
851
869
|
effect: {
|
|
852
870
|
merge: [
|
|
853
|
-
{ var:
|
|
871
|
+
{ var: 'state' },
|
|
854
872
|
{
|
|
855
|
-
status:
|
|
873
|
+
status: 'IN_SESSION',
|
|
856
874
|
sessionInfo: {
|
|
857
|
-
openedAt: { var:
|
|
858
|
-
chairPerson: { var:
|
|
859
|
-
secretaryPresent: { var:
|
|
875
|
+
openedAt: { var: 'event.openedAt' },
|
|
876
|
+
chairPerson: { var: 'event.chairPerson' },
|
|
877
|
+
secretaryPresent: { var: 'event.secretaryPresent' },
|
|
860
878
|
},
|
|
861
|
-
inspectorOfElections: { var:
|
|
879
|
+
inspectorOfElections: { var: 'event.inspectorOfElections' },
|
|
862
880
|
quorumRequirements: {
|
|
863
881
|
merge: [
|
|
864
|
-
{ var:
|
|
882
|
+
{ var: 'state.quorumRequirements' },
|
|
865
883
|
{
|
|
866
|
-
sharesRepresented: { var:
|
|
884
|
+
sharesRepresented: { var: 'event.initialQuorumCount' },
|
|
867
885
|
quorumMet: true,
|
|
868
886
|
},
|
|
869
887
|
],
|
|
870
888
|
},
|
|
871
889
|
},
|
|
890
|
+
{
|
|
891
|
+
_emit: [{ name: 'SHAREHOLDER_MEETING_OPENED', data: { var: 'event' }, destination: 'external' }],
|
|
892
|
+
},
|
|
872
893
|
],
|
|
873
894
|
},
|
|
874
|
-
emits: ["SHAREHOLDER_MEETING_OPENED"],
|
|
875
895
|
},
|
|
876
896
|
// IN_SESSION -> VOTING
|
|
877
897
|
{
|
|
878
|
-
from:
|
|
879
|
-
to:
|
|
880
|
-
eventName:
|
|
881
|
-
guard: {
|
|
898
|
+
from: 'IN_SESSION',
|
|
899
|
+
to: 'VOTING',
|
|
900
|
+
eventName: 'open_polls',
|
|
901
|
+
guard: { '==': [1, 1] },
|
|
882
902
|
effect: {
|
|
883
903
|
merge: [
|
|
884
|
-
{ var:
|
|
904
|
+
{ var: 'state' },
|
|
885
905
|
{
|
|
886
|
-
status:
|
|
906
|
+
status: 'VOTING',
|
|
887
907
|
sessionInfo: {
|
|
888
|
-
merge: [
|
|
889
|
-
{ var: "state.sessionInfo" },
|
|
890
|
-
{ pollsOpenedAt: { var: "event.pollsOpenedAt" } },
|
|
891
|
-
],
|
|
908
|
+
merge: [{ var: 'state.sessionInfo' }, { pollsOpenedAt: { var: 'event.pollsOpenedAt' } }],
|
|
892
909
|
},
|
|
893
910
|
agenda: {
|
|
894
911
|
map: [
|
|
895
|
-
{ var:
|
|
912
|
+
{ var: 'state.agenda' },
|
|
896
913
|
{
|
|
897
|
-
merge: [{ var:
|
|
914
|
+
merge: [{ var: '' }, { status: 'VOTING' }],
|
|
898
915
|
},
|
|
899
916
|
],
|
|
900
917
|
},
|
|
@@ -904,39 +921,38 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
904
921
|
},
|
|
905
922
|
// VOTING -> VOTING (cast_vote)
|
|
906
923
|
{
|
|
907
|
-
from:
|
|
908
|
-
to:
|
|
909
|
-
eventName:
|
|
924
|
+
from: 'VOTING',
|
|
925
|
+
to: 'VOTING',
|
|
926
|
+
eventName: 'cast_vote',
|
|
927
|
+
// authority gate — the roster entry identified by event.shareholderId must carry an address that signed (address ∈ proofs[].address), so the recorded shareholderId is provably the matched entry's, not a forged one; an identity attestation layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
|
|
910
928
|
guard: {
|
|
911
929
|
and: [
|
|
912
930
|
{
|
|
913
931
|
some: [
|
|
914
|
-
{ var:
|
|
932
|
+
{ var: 'state.eligibleVoters' },
|
|
915
933
|
{
|
|
916
|
-
|
|
917
|
-
{
|
|
918
|
-
|
|
934
|
+
and: [
|
|
935
|
+
{
|
|
936
|
+
'==': [{ var: 'shareholderId' }, { var: 'event.shareholderId' }],
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
in: [{ var: 'address' }, { map: [{ var: 'proofs' }, { var: 'address' }] }],
|
|
940
|
+
},
|
|
919
941
|
],
|
|
920
942
|
},
|
|
921
943
|
],
|
|
922
944
|
},
|
|
923
945
|
{
|
|
924
|
-
|
|
946
|
+
'!': {
|
|
925
947
|
some: [
|
|
926
|
-
{ var:
|
|
948
|
+
{ var: 'state.votes' },
|
|
927
949
|
{
|
|
928
950
|
and: [
|
|
929
951
|
{
|
|
930
|
-
|
|
931
|
-
{ var: ".shareholderId" },
|
|
932
|
-
{ var: "event.shareholderId" },
|
|
933
|
-
],
|
|
952
|
+
'==': [{ var: 'shareholderId' }, { var: 'event.shareholderId' }],
|
|
934
953
|
},
|
|
935
954
|
{
|
|
936
|
-
|
|
937
|
-
{ var: ".agendaItemId" },
|
|
938
|
-
{ var: "event.agendaItemId" },
|
|
939
|
-
],
|
|
955
|
+
'==': [{ var: 'agendaItemId' }, { var: 'event.agendaItemId' }],
|
|
940
956
|
},
|
|
941
957
|
],
|
|
942
958
|
},
|
|
@@ -947,46 +963,43 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
947
963
|
},
|
|
948
964
|
effect: {
|
|
949
965
|
merge: [
|
|
950
|
-
{ var:
|
|
966
|
+
{ var: 'state' },
|
|
951
967
|
{
|
|
952
968
|
votes: {
|
|
953
|
-
|
|
954
|
-
{ var:
|
|
969
|
+
merge: [
|
|
970
|
+
{ var: 'state.votes' },
|
|
955
971
|
[
|
|
956
972
|
{
|
|
957
|
-
voteId: { var:
|
|
958
|
-
agendaItemId: { var:
|
|
959
|
-
voterId: { var:
|
|
960
|
-
shareholderId: { var:
|
|
961
|
-
shareClass: { var:
|
|
962
|
-
votesFor: { var:
|
|
963
|
-
votesAgainst: { var:
|
|
964
|
-
votesAbstain: { var:
|
|
965
|
-
votesWithhold: { var:
|
|
973
|
+
voteId: { var: 'event.voteId' },
|
|
974
|
+
agendaItemId: { var: 'event.agendaItemId' },
|
|
975
|
+
voterId: { var: 'event.voterId' },
|
|
976
|
+
shareholderId: { var: 'event.shareholderId' },
|
|
977
|
+
shareClass: { var: 'event.shareClass' },
|
|
978
|
+
votesFor: { var: 'event.votesFor' },
|
|
979
|
+
votesAgainst: { var: 'event.votesAgainst' },
|
|
980
|
+
votesAbstain: { var: 'event.votesAbstain' },
|
|
981
|
+
votesWithhold: { var: 'event.votesWithhold' },
|
|
966
982
|
cumulativeVoteAllocation: {
|
|
967
|
-
var:
|
|
983
|
+
var: 'event.cumulativeVoteAllocation',
|
|
968
984
|
},
|
|
969
|
-
viaProxy: { var:
|
|
970
|
-
timestamp: { var:
|
|
985
|
+
viaProxy: { var: 'event.viaProxy' },
|
|
986
|
+
timestamp: { var: '$ordinal' },
|
|
971
987
|
},
|
|
972
988
|
],
|
|
973
989
|
],
|
|
974
990
|
},
|
|
975
991
|
eligibleVoters: {
|
|
976
992
|
map: [
|
|
977
|
-
{ var:
|
|
993
|
+
{ var: 'state.eligibleVoters' },
|
|
978
994
|
{
|
|
979
995
|
if: [
|
|
980
996
|
{
|
|
981
|
-
|
|
982
|
-
{ var: ".shareholderId" },
|
|
983
|
-
{ var: "event.shareholderId" },
|
|
984
|
-
],
|
|
997
|
+
'==': [{ var: 'shareholderId' }, { var: 'event.shareholderId' }],
|
|
985
998
|
},
|
|
986
999
|
{
|
|
987
|
-
merge: [{ var:
|
|
1000
|
+
merge: [{ var: '' }, { hasVoted: true }],
|
|
988
1001
|
},
|
|
989
|
-
{ var:
|
|
1002
|
+
{ var: '' },
|
|
990
1003
|
],
|
|
991
1004
|
},
|
|
992
1005
|
],
|
|
@@ -997,26 +1010,23 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
997
1010
|
},
|
|
998
1011
|
// VOTING -> IN_SESSION (close_polls)
|
|
999
1012
|
{
|
|
1000
|
-
from:
|
|
1001
|
-
to:
|
|
1002
|
-
eventName:
|
|
1003
|
-
guard: {
|
|
1013
|
+
from: 'VOTING',
|
|
1014
|
+
to: 'IN_SESSION',
|
|
1015
|
+
eventName: 'close_polls',
|
|
1016
|
+
guard: { '==': [1, 1] },
|
|
1004
1017
|
effect: {
|
|
1005
1018
|
merge: [
|
|
1006
|
-
{ var:
|
|
1019
|
+
{ var: 'state' },
|
|
1007
1020
|
{
|
|
1008
|
-
status:
|
|
1021
|
+
status: 'IN_SESSION',
|
|
1009
1022
|
sessionInfo: {
|
|
1010
|
-
merge: [
|
|
1011
|
-
{ var: "state.sessionInfo" },
|
|
1012
|
-
{ pollsClosedAt: { var: "event.pollsClosedAt" } },
|
|
1013
|
-
],
|
|
1023
|
+
merge: [{ var: 'state.sessionInfo' }, { pollsClosedAt: { var: 'event.pollsClosedAt' } }],
|
|
1014
1024
|
},
|
|
1015
1025
|
agenda: {
|
|
1016
1026
|
map: [
|
|
1017
|
-
{ var:
|
|
1027
|
+
{ var: 'state.agenda' },
|
|
1018
1028
|
{
|
|
1019
|
-
merge: [{ var:
|
|
1029
|
+
merge: [{ var: '' }, { status: 'CLOSED' }],
|
|
1020
1030
|
},
|
|
1021
1031
|
],
|
|
1022
1032
|
},
|
|
@@ -1026,77 +1036,77 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
1026
1036
|
},
|
|
1027
1037
|
// IN_SESSION -> CLOSED (certify_results)
|
|
1028
1038
|
{
|
|
1029
|
-
from:
|
|
1030
|
-
to:
|
|
1031
|
-
eventName:
|
|
1032
|
-
guard: {
|
|
1039
|
+
from: 'IN_SESSION',
|
|
1040
|
+
to: 'CLOSED',
|
|
1041
|
+
eventName: 'certify_results',
|
|
1042
|
+
guard: { '==': [1, 1] },
|
|
1033
1043
|
effect: {
|
|
1034
1044
|
merge: [
|
|
1035
|
-
{ var:
|
|
1045
|
+
{ var: 'state' },
|
|
1036
1046
|
{
|
|
1037
|
-
status:
|
|
1047
|
+
status: 'CLOSED',
|
|
1038
1048
|
certification: {
|
|
1039
|
-
certifiedAt: { var:
|
|
1040
|
-
certifiedBy: { var:
|
|
1041
|
-
certificateRef: { var:
|
|
1049
|
+
certifiedAt: { var: 'event.certifiedAt' },
|
|
1050
|
+
certifiedBy: { var: 'event.certifiedBy' },
|
|
1051
|
+
certificateRef: { var: 'event.certificateRef' },
|
|
1042
1052
|
},
|
|
1043
1053
|
sessionInfo: {
|
|
1044
1054
|
merge: [
|
|
1045
|
-
{ var:
|
|
1055
|
+
{ var: 'state.sessionInfo' },
|
|
1046
1056
|
{
|
|
1047
|
-
adjournedAt: { var:
|
|
1048
|
-
minutesRef: { var:
|
|
1057
|
+
adjournedAt: { var: 'event.certifiedAt' },
|
|
1058
|
+
minutesRef: { var: 'event.minutesRef' },
|
|
1049
1059
|
},
|
|
1050
1060
|
],
|
|
1051
1061
|
},
|
|
1052
1062
|
},
|
|
1063
|
+
{
|
|
1064
|
+
_emit: [{ name: 'MEETING_RESULTS_CERTIFIED', data: { var: 'event' }, destination: 'external' }],
|
|
1065
|
+
},
|
|
1053
1066
|
],
|
|
1054
1067
|
},
|
|
1055
|
-
emits: ["MEETING_RESULTS_CERTIFIED"],
|
|
1056
1068
|
},
|
|
1057
1069
|
// IN_SESSION -> CLOSED (adjourn_without_action)
|
|
1058
1070
|
{
|
|
1059
|
-
from:
|
|
1060
|
-
to:
|
|
1061
|
-
eventName:
|
|
1062
|
-
guard: {
|
|
1071
|
+
from: 'IN_SESSION',
|
|
1072
|
+
to: 'CLOSED',
|
|
1073
|
+
eventName: 'adjourn_without_action',
|
|
1074
|
+
guard: { '==': [1, 1] },
|
|
1063
1075
|
effect: {
|
|
1064
1076
|
merge: [
|
|
1065
|
-
{ var:
|
|
1077
|
+
{ var: 'state' },
|
|
1066
1078
|
{
|
|
1067
|
-
status:
|
|
1079
|
+
status: 'CLOSED',
|
|
1068
1080
|
sessionInfo: {
|
|
1069
|
-
merge: [
|
|
1070
|
-
{ var: "state.sessionInfo" },
|
|
1071
|
-
{ adjournedAt: { var: "event.adjournedAt" } },
|
|
1072
|
-
],
|
|
1081
|
+
merge: [{ var: 'state.sessionInfo' }, { adjournedAt: { var: 'event.adjournedAt' } }],
|
|
1073
1082
|
},
|
|
1074
1083
|
},
|
|
1084
|
+
{
|
|
1085
|
+
_emit: [{ name: 'MEETING_ADJOURNED', data: { var: 'event' }, destination: 'external' }],
|
|
1086
|
+
},
|
|
1075
1087
|
],
|
|
1076
1088
|
},
|
|
1077
|
-
emits: ["MEETING_ADJOURNED"],
|
|
1078
1089
|
},
|
|
1079
1090
|
// VOTING -> CLOSED (adjourn_without_action)
|
|
1080
1091
|
{
|
|
1081
|
-
from:
|
|
1082
|
-
to:
|
|
1083
|
-
eventName:
|
|
1084
|
-
guard: {
|
|
1092
|
+
from: 'VOTING',
|
|
1093
|
+
to: 'CLOSED',
|
|
1094
|
+
eventName: 'adjourn_without_action',
|
|
1095
|
+
guard: { '==': [1, 1] },
|
|
1085
1096
|
effect: {
|
|
1086
1097
|
merge: [
|
|
1087
|
-
{ var:
|
|
1098
|
+
{ var: 'state' },
|
|
1088
1099
|
{
|
|
1089
|
-
status:
|
|
1100
|
+
status: 'CLOSED',
|
|
1090
1101
|
sessionInfo: {
|
|
1091
|
-
merge: [
|
|
1092
|
-
{ var: "state.sessionInfo" },
|
|
1093
|
-
{ adjournedAt: { var: "event.adjournedAt" } },
|
|
1094
|
-
],
|
|
1102
|
+
merge: [{ var: 'state.sessionInfo' }, { adjournedAt: { var: 'event.adjournedAt' } }],
|
|
1095
1103
|
},
|
|
1096
1104
|
},
|
|
1105
|
+
{
|
|
1106
|
+
_emit: [{ name: 'MEETING_ADJOURNED', data: { var: 'event' }, destination: 'external' }],
|
|
1107
|
+
},
|
|
1097
1108
|
],
|
|
1098
1109
|
},
|
|
1099
|
-
emits: ["MEETING_ADJOURNED"],
|
|
1100
1110
|
},
|
|
1101
1111
|
],
|
|
1102
1112
|
});
|