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