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