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