@ottochain/sdk 2.3.0 → 2.4.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/contracts/index.js +15 -8
- package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +35 -40
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +80 -37
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +4 -4
- package/dist/cjs/apps/corporate/index.js +2 -2
- package/dist/cjs/apps/corporate/state-machines/corp-board.js +169 -59
- package/dist/cjs/apps/corporate/state-machines/corp-entity.js +245 -47
- package/dist/cjs/apps/corporate/state-machines/corp-securities.js +407 -99
- package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +151 -37
- package/dist/cjs/apps/governance/index.js +14 -14
- package/dist/cjs/apps/governance/state-machines/dao-multisig.js +58 -40
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +46 -40
- package/dist/cjs/apps/governance/state-machines/dao-single.js +28 -11
- package/dist/cjs/apps/governance/state-machines/dao-token.js +67 -41
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +93 -61
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +2 -2
- package/dist/cjs/apps/identity/constants.js +55 -14
- package/dist/cjs/apps/identity/index.js +27 -11
- package/dist/cjs/apps/identity/state-machines/identity-agent.js +3 -3
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +25 -22
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +3 -3
- package/dist/cjs/apps/identity/state-machines/index.js +3 -1
- package/dist/cjs/apps/index.js +19 -8
- package/dist/cjs/apps/lending/assets.js +223 -0
- package/dist/cjs/apps/lending/credit-scoring.js +87 -0
- package/dist/cjs/apps/lending/eligibility.js +121 -0
- package/dist/cjs/apps/lending/index.js +91 -0
- package/dist/cjs/apps/lending/state-machines/index.js +9 -0
- package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +412 -0
- package/dist/cjs/apps/markets/index.js +21 -11
- package/dist/cjs/apps/markets/state-machines/market-auction.js +14 -13
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +29 -24
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +24 -26
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +80 -53
- package/dist/cjs/apps/markets/state-machines/market-universal.js +5 -5
- package/dist/cjs/apps/oracles/index.js +2 -2
- package/dist/cjs/errors.js +3 -3
- package/dist/cjs/generated/google/protobuf/struct.js +4 -4
- package/dist/cjs/generated/index.js +11 -7
- package/dist/cjs/generated/openapi.js +6 -0
- package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +50 -50
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +19 -20
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +13 -13
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +4 -4
- package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +124 -130
- package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +107 -107
- package/dist/cjs/generated/ottochain/v1/common.js +4 -4
- package/dist/cjs/generated/ottochain/v1/fiber.js +4 -4
- package/dist/cjs/index.js +41 -7
- package/dist/cjs/openapi.js +2 -0
- package/dist/cjs/ottochain/drop-nulls.js +1 -2
- package/dist/cjs/ottochain/genesis-manifest.js +11 -11
- package/dist/cjs/ottochain/index.js +23 -13
- package/dist/cjs/ottochain/metagraph-client.js +65 -8
- package/dist/cjs/ottochain/snapshot.js +11 -12
- package/dist/cjs/ottochain/transaction.js +57 -14
- package/dist/cjs/ottochain/types.js +16 -2
- package/dist/cjs/privacy/index.js +14 -0
- package/dist/cjs/privacy/sealed-bid.js +210 -0
- package/dist/cjs/privacy/shield-app.js +131 -0
- package/dist/cjs/schema/effects.js +40 -0
- package/dist/cjs/schema/fiber-app.js +19 -13
- package/dist/cjs/schema/guard-lint.js +352 -0
- package/dist/cjs/schema/guards.js +246 -0
- package/dist/cjs/signing.js +80 -0
- package/dist/cjs/types.js +2 -3
- package/dist/cjs/validation.js +8 -8
- package/dist/cjs/verify.js +9 -4
- package/dist/cjs/zk/commit.js +53 -0
- package/dist/cjs/zk/guard.js +107 -0
- package/dist/cjs/zk/index.js +48 -0
- package/dist/cjs/zk/preimage.js +37 -0
- package/dist/cjs/zk/prover.js +87 -0
- package/dist/cjs/zk/registry.js +62 -0
- package/dist/cjs/zk/types.js +28 -0
- package/dist/cjs/zk/witness.js +19 -0
- package/dist/esm/apps/contracts/index.js +7 -3
- package/dist/esm/apps/contracts/state-machines/contract-agreement.js +35 -40
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +80 -37
- package/dist/esm/apps/contracts/state-machines/contract-universal.js +4 -4
- package/dist/esm/apps/corporate/state-machines/corp-board.js +169 -59
- package/dist/esm/apps/corporate/state-machines/corp-entity.js +245 -47
- package/dist/esm/apps/corporate/state-machines/corp-securities.js +407 -99
- package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +151 -37
- package/dist/esm/apps/governance/state-machines/dao-multisig.js +58 -40
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +46 -40
- package/dist/esm/apps/governance/state-machines/dao-single.js +28 -11
- package/dist/esm/apps/governance/state-machines/dao-token.js +67 -41
- package/dist/esm/apps/governance/state-machines/governance-simple.js +93 -61
- package/dist/esm/apps/governance/state-machines/governance-universal.js +2 -2
- package/dist/esm/apps/identity/constants.js +51 -12
- package/dist/esm/apps/identity/index.js +12 -7
- package/dist/esm/apps/identity/state-machines/identity-agent.js +3 -3
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +25 -22
- package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
- package/dist/esm/apps/identity/state-machines/identity-universal.js +3 -3
- package/dist/esm/apps/identity/state-machines/index.js +1 -0
- package/dist/esm/apps/index.js +1 -0
- package/dist/esm/apps/lending/assets.js +207 -0
- package/dist/esm/apps/lending/credit-scoring.js +81 -0
- package/dist/esm/apps/lending/eligibility.js +115 -0
- package/dist/esm/apps/lending/index.js +69 -0
- package/dist/esm/apps/lending/state-machines/index.js +5 -0
- package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +409 -0
- package/dist/esm/apps/markets/index.js +8 -4
- package/dist/esm/apps/markets/state-machines/market-auction.js +14 -13
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +29 -24
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +24 -26
- package/dist/esm/apps/markets/state-machines/market-prediction.js +80 -53
- package/dist/esm/apps/markets/state-machines/market-universal.js +5 -5
- package/dist/esm/generated/index.js +9 -5
- package/dist/esm/generated/openapi.js +5 -0
- package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +46 -46
- package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +114 -120
- package/dist/esm/generated/ottochain/apps/markets/v1/market.js +100 -100
- package/dist/esm/index.js +21 -2
- package/dist/esm/openapi.js +1 -0
- package/dist/esm/ottochain/genesis-manifest.js +9 -9
- package/dist/esm/ottochain/index.js +2 -3
- package/dist/esm/ottochain/metagraph-client.js +65 -8
- package/dist/esm/ottochain/snapshot.js +4 -4
- package/dist/esm/ottochain/transaction.js +43 -3
- package/dist/esm/ottochain/types.js +15 -1
- package/dist/esm/privacy/index.js +6 -0
- package/dist/esm/privacy/sealed-bid.js +206 -0
- package/dist/esm/privacy/shield-app.js +127 -0
- package/dist/esm/schema/effects.js +35 -0
- package/dist/esm/schema/fiber-app.js +13 -6
- package/dist/esm/schema/guard-lint.js +346 -0
- package/dist/esm/schema/guards.js +229 -0
- package/dist/esm/signing.js +74 -0
- package/dist/esm/verify.js +8 -2
- package/dist/esm/zk/commit.js +44 -0
- package/dist/esm/zk/guard.js +99 -0
- package/dist/esm/zk/index.js +19 -0
- package/dist/esm/zk/preimage.js +30 -0
- package/dist/esm/zk/prover.js +82 -0
- package/dist/esm/zk/registry.js +55 -0
- package/dist/esm/zk/types.js +25 -0
- package/dist/esm/zk/witness.js +15 -0
- package/dist/types/apps/contracts/index.d.ts +69 -209
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +20 -95
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +46 -112
- package/dist/types/apps/corporate/index.d.ts +1040 -304
- package/dist/types/apps/corporate/state-machines/corp-board.d.ts +188 -52
- package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +267 -62
- package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +355 -131
- package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +225 -53
- package/dist/types/apps/governance/index.d.ts +296 -398
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +77 -92
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +42 -66
- package/dist/types/apps/governance/state-machines/dao-single.d.ts +25 -47
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +60 -49
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +87 -117
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +2 -2
- package/dist/types/apps/identity/constants.d.ts +32 -4
- package/dist/types/apps/identity/index.d.ts +378 -94
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +16 -87
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
- package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
- package/dist/types/apps/index.d.ts +1 -0
- package/dist/types/apps/lending/assets.d.ts +258 -0
- package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
- package/dist/types/apps/lending/eligibility.d.ts +83 -0
- package/dist/types/apps/lending/index.d.ts +548 -0
- package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
- package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +528 -0
- package/dist/types/apps/markets/index.d.ts +108 -203
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +13 -37
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +16 -34
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +17 -43
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +51 -72
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +5 -5
- package/dist/types/generated/index.d.ts +5 -5
- package/dist/types/generated/openapi.d.ts +1257 -0
- package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
- package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
- package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
- package/dist/types/index.d.ts +6 -2
- package/dist/types/openapi.d.ts +22 -0
- package/dist/types/ottochain/genesis-manifest.d.ts +5 -5
- package/dist/types/ottochain/index.d.ts +5 -6
- package/dist/types/ottochain/metagraph-client.d.ts +49 -7
- package/dist/types/ottochain/snapshot.d.ts +6 -6
- package/dist/types/ottochain/transaction.d.ts +33 -1
- package/dist/types/ottochain/types.d.ts +335 -30
- package/dist/types/privacy/index.d.ts +6 -0
- package/dist/types/privacy/sealed-bid.d.ts +348 -0
- package/dist/types/privacy/shield-app.d.ts +48 -0
- package/dist/types/schema/effects.d.ts +34 -0
- package/dist/types/schema/fiber-app.d.ts +1 -2
- package/dist/types/schema/guard-lint.d.ts +111 -0
- package/dist/types/schema/guards.d.ts +134 -0
- package/dist/types/signing.d.ts +45 -0
- package/dist/types/validation.d.ts +22 -217
- package/dist/types/verify.d.ts +4 -0
- package/dist/types/zk/commit.d.ts +28 -0
- package/dist/types/zk/guard.d.ts +46 -0
- package/dist/types/zk/index.d.ts +19 -0
- package/dist/types/zk/preimage.d.ts +10 -0
- package/dist/types/zk/prover.d.ts +34 -0
- package/dist/types/zk/registry.d.ts +34 -0
- package/dist/types/zk/types.d.ts +33 -0
- package/dist/types/zk/witness.d.ts +40 -0
- package/package.json +27 -13
- package/dist/cjs/ottochain/normalize.js +0 -186
- package/dist/esm/ottochain/normalize.js +0 -179
- package/dist/types/ottochain/normalize.d.ts +0 -79
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { defineFiberApp } from "../../../schema/fiber-app.js";
|
|
2
|
+
import { signerIsParty, depInState } from "../../../schema/guards.js";
|
|
3
|
+
import { addDependency } from "../../../schema/effects.js";
|
|
2
4
|
/**
|
|
3
5
|
* Shareholder meeting state machine managing annual/special meetings, record dates, proxy periods, voting, and certification of results.
|
|
4
6
|
* Supports multiple share classes and cumulative voting.
|
|
@@ -34,7 +36,7 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
34
36
|
},
|
|
35
37
|
},
|
|
36
38
|
createSchema: {
|
|
37
|
-
required: ["meetingId", "entityId"],
|
|
39
|
+
required: ["meetingId", "entityId", "registrar"],
|
|
38
40
|
properties: {
|
|
39
41
|
meetingId: {
|
|
40
42
|
type: "string",
|
|
@@ -46,6 +48,11 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
46
48
|
description: "Reference to parent corporate-entity",
|
|
47
49
|
immutable: true,
|
|
48
50
|
},
|
|
51
|
+
registrar: {
|
|
52
|
+
type: "address",
|
|
53
|
+
description: "State-pinned DAG address of the transfer agent / registrar authorized to register the eligible-shareholder roster of record. Verified against proofs[].address.",
|
|
54
|
+
immutable: true,
|
|
55
|
+
},
|
|
49
56
|
meetingType: {
|
|
50
57
|
type: "string",
|
|
51
58
|
enum: ["ANNUAL", "SPECIAL"],
|
|
@@ -73,6 +80,7 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
73
80
|
properties: {
|
|
74
81
|
meetingId: { type: "string", immutable: true },
|
|
75
82
|
entityId: { type: "string", immutable: true },
|
|
83
|
+
registrar: { type: "address", immutable: true },
|
|
76
84
|
meetingType: { type: "string" },
|
|
77
85
|
fiscalYear: { type: "integer" },
|
|
78
86
|
scheduledDate: { type: "string", format: "date-time" },
|
|
@@ -142,11 +150,14 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
142
150
|
},
|
|
143
151
|
createdAt: { type: "timestamp", computed: true },
|
|
144
152
|
updatedAt: { type: "timestamp", computed: true },
|
|
153
|
+
// Two-phase scheduling (#24): propose_schedule_annual binds the board-resolution fiber + records the
|
|
154
|
+
// pending meeting here; schedule_annual asserts the bound resolution is EXECUTED, then clears this.
|
|
155
|
+
pendingschedule_annual: { type: "object", nullable: true, computed: true },
|
|
145
156
|
},
|
|
146
157
|
},
|
|
147
158
|
eventSchemas: {
|
|
148
|
-
|
|
149
|
-
description: "
|
|
159
|
+
propose_schedule_annual: {
|
|
160
|
+
description: "Phase 1 of annual-meeting scheduling: bind the executing board-resolution fiber (#24 _addDependency) and record the pending meeting",
|
|
150
161
|
required: [
|
|
151
162
|
"meetingId",
|
|
152
163
|
"entityId",
|
|
@@ -163,6 +174,22 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
163
174
|
boardResolutionRef: { type: "string" },
|
|
164
175
|
},
|
|
165
176
|
},
|
|
177
|
+
schedule_annual: {
|
|
178
|
+
description: "Phase 2 of annual-meeting scheduling: execute once the bound board resolution is EXECUTED",
|
|
179
|
+
required: [
|
|
180
|
+
"meetingId",
|
|
181
|
+
"entityId",
|
|
182
|
+
"fiscalYear",
|
|
183
|
+
"scheduledDate",
|
|
184
|
+
],
|
|
185
|
+
properties: {
|
|
186
|
+
meetingId: { type: "string" },
|
|
187
|
+
entityId: { type: "string" },
|
|
188
|
+
fiscalYear: { type: "integer" },
|
|
189
|
+
scheduledDate: { type: "string", format: "date-time" },
|
|
190
|
+
location: { type: "object" },
|
|
191
|
+
},
|
|
192
|
+
},
|
|
166
193
|
schedule_special: {
|
|
167
194
|
description: "Schedule a special shareholder meeting",
|
|
168
195
|
required: [
|
|
@@ -208,6 +235,10 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
208
235
|
properties: {
|
|
209
236
|
shareholderId: { type: "string" },
|
|
210
237
|
name: { type: "string" },
|
|
238
|
+
address: {
|
|
239
|
+
type: "address",
|
|
240
|
+
description: "DAG wallet address of record for this shareholder; the only key a verified signer can vote under.",
|
|
241
|
+
},
|
|
211
242
|
shareholdings: { type: "array" },
|
|
212
243
|
},
|
|
213
244
|
},
|
|
@@ -369,6 +400,10 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
369
400
|
properties: {
|
|
370
401
|
shareholderId: { type: "string" },
|
|
371
402
|
name: { type: "string" },
|
|
403
|
+
address: {
|
|
404
|
+
type: "address",
|
|
405
|
+
description: "State-pinned DAG wallet address of record; cast_vote requires this address ∈ proofs[].address.",
|
|
406
|
+
},
|
|
372
407
|
shareholdings: {
|
|
373
408
|
type: "array",
|
|
374
409
|
items: {
|
|
@@ -602,19 +637,51 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
602
637
|
initialState: "SCHEDULED",
|
|
603
638
|
transitions: [
|
|
604
639
|
// Initial creation transitions (from: null means creation)
|
|
605
|
-
//
|
|
640
|
+
// SCHEDULED -> SCHEDULED (propose_schedule_annual) — phase 1 (#24): bind the executing board-resolution
|
|
641
|
+
// fiber and record the pending meeting, so the next transition can read the resolution's state.
|
|
606
642
|
{
|
|
607
643
|
from: "SCHEDULED",
|
|
608
644
|
to: "SCHEDULED",
|
|
609
|
-
eventName: "
|
|
645
|
+
eventName: "propose_schedule_annual",
|
|
610
646
|
guard: { "==": [1, 1] },
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
647
|
+
effect: {
|
|
648
|
+
merge: [
|
|
649
|
+
{ var: "state" },
|
|
650
|
+
{
|
|
651
|
+
pendingschedule_annual: {
|
|
652
|
+
meetingId: { var: "event.meetingId" },
|
|
653
|
+
entityId: { var: "event.entityId" },
|
|
654
|
+
fiscalYear: { var: "event.fiscalYear" },
|
|
655
|
+
scheduledDate: { var: "event.scheduledDate" },
|
|
656
|
+
location: { var: "event.location" },
|
|
657
|
+
ref: { var: "event.boardResolutionRef" },
|
|
658
|
+
proposedAt: { var: "$ordinal" },
|
|
659
|
+
},
|
|
660
|
+
},
|
|
661
|
+
// bind the resolution fiber so schedule_annual can assert its state next transition
|
|
662
|
+
addDependency({ var: "event.boardResolutionRef" }),
|
|
663
|
+
],
|
|
664
|
+
},
|
|
665
|
+
dependencies: [],
|
|
666
|
+
},
|
|
667
|
+
// SCHEDULED -> SCHEDULED (schedule_annual) — phase 2 (#24): execute once the bound board resolution is
|
|
668
|
+
// EXECUTED. depInState replaces the dropped object-form dependency (which silently never gated).
|
|
669
|
+
{
|
|
670
|
+
from: "SCHEDULED",
|
|
671
|
+
to: "SCHEDULED",
|
|
672
|
+
eventName: "schedule_annual",
|
|
673
|
+
guard: {
|
|
674
|
+
and: [
|
|
675
|
+
// the proposal must target this meeting, and its bound resolution must be EXECUTED
|
|
676
|
+
{
|
|
677
|
+
"==": [
|
|
678
|
+
{ var: "state.pendingschedule_annual.meetingId" },
|
|
679
|
+
{ var: "event.meetingId" },
|
|
680
|
+
],
|
|
681
|
+
},
|
|
682
|
+
depInState("state.pendingschedule_annual.ref", "EXECUTED"),
|
|
683
|
+
],
|
|
684
|
+
},
|
|
618
685
|
effect: {
|
|
619
686
|
merge: [
|
|
620
687
|
{ var: "state" },
|
|
@@ -627,12 +694,19 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
627
694
|
location: { var: "event.location" },
|
|
628
695
|
calledBy: {
|
|
629
696
|
type: "BOARD",
|
|
630
|
-
resolutionRef: { var: "
|
|
697
|
+
resolutionRef: { var: "state.pendingschedule_annual.ref" },
|
|
631
698
|
},
|
|
699
|
+
// clear the consumed proposal
|
|
700
|
+
pendingschedule_annual: null,
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
_emit: [
|
|
704
|
+
{ name: "SHAREHOLDER_MEETING_SCHEDULED", data: { var: "event" }, destination: "external" },
|
|
705
|
+
],
|
|
632
706
|
},
|
|
633
707
|
],
|
|
634
708
|
},
|
|
635
|
-
|
|
709
|
+
dependencies: [],
|
|
636
710
|
},
|
|
637
711
|
// schedule_special -> SCHEDULED
|
|
638
712
|
{
|
|
@@ -652,9 +726,13 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
652
726
|
type: { var: "event.calledByType" },
|
|
653
727
|
},
|
|
654
728
|
},
|
|
729
|
+
{
|
|
730
|
+
_emit: [
|
|
731
|
+
{ name: "SPECIAL_MEETING_SCHEDULED", data: { var: "event" }, destination: "external" },
|
|
732
|
+
],
|
|
733
|
+
},
|
|
655
734
|
],
|
|
656
735
|
},
|
|
657
|
-
emits: ["SPECIAL_MEETING_SCHEDULED"],
|
|
658
736
|
},
|
|
659
737
|
// SCHEDULED -> RECORD_DATE_SET
|
|
660
738
|
{
|
|
@@ -669,20 +747,25 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
669
747
|
status: "RECORD_DATE_SET",
|
|
670
748
|
recordDate: {
|
|
671
749
|
date: { var: "event.recordDate" },
|
|
672
|
-
setByBoardOn: { var: "$
|
|
750
|
+
setByBoardOn: { var: "$ordinal" },
|
|
673
751
|
resolutionRef: { var: "event.resolutionRef" },
|
|
674
752
|
},
|
|
675
753
|
},
|
|
754
|
+
{
|
|
755
|
+
_emit: [
|
|
756
|
+
{ name: "RECORD_DATE_SET", data: { var: "event" }, destination: "external" },
|
|
757
|
+
],
|
|
758
|
+
},
|
|
676
759
|
],
|
|
677
760
|
},
|
|
678
|
-
emits: ["RECORD_DATE_SET"],
|
|
679
761
|
},
|
|
680
762
|
// RECORD_DATE_SET -> RECORD_DATE_SET (register_eligible_shareholders)
|
|
681
763
|
{
|
|
682
764
|
from: "RECORD_DATE_SET",
|
|
683
765
|
to: "RECORD_DATE_SET",
|
|
684
766
|
eventName: "register_eligible_shareholders",
|
|
685
|
-
|
|
767
|
+
// 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("state.registrar"),
|
|
686
769
|
effect: {
|
|
687
770
|
merge: [
|
|
688
771
|
{ var: "state" },
|
|
@@ -730,9 +813,13 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
730
813
|
],
|
|
731
814
|
},
|
|
732
815
|
},
|
|
816
|
+
{
|
|
817
|
+
_emit: [
|
|
818
|
+
{ name: "PROXY_PERIOD_OPENED", data: { var: "event" }, destination: "external" },
|
|
819
|
+
],
|
|
820
|
+
},
|
|
733
821
|
],
|
|
734
822
|
},
|
|
735
|
-
emits: ["PROXY_PERIOD_OPENED"],
|
|
736
823
|
},
|
|
737
824
|
// add_agenda_item (can be from multiple states)
|
|
738
825
|
{
|
|
@@ -745,12 +832,12 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
745
832
|
{ var: "state" },
|
|
746
833
|
{
|
|
747
834
|
agenda: {
|
|
748
|
-
|
|
835
|
+
merge: [
|
|
749
836
|
{ var: "state.agenda" },
|
|
750
837
|
[
|
|
751
838
|
{
|
|
752
839
|
itemId: { var: "event.itemId" },
|
|
753
|
-
itemNumber: { "+": [{ var: "state.agenda
|
|
840
|
+
itemNumber: { "+": [{ length: [{ var: "state.agenda" }] }, 1] },
|
|
754
841
|
title: { var: "event.title" },
|
|
755
842
|
description: { var: "event.description" },
|
|
756
843
|
type: { var: "event.type" },
|
|
@@ -778,12 +865,12 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
778
865
|
{ var: "state" },
|
|
779
866
|
{
|
|
780
867
|
agenda: {
|
|
781
|
-
|
|
868
|
+
merge: [
|
|
782
869
|
{ var: "state.agenda" },
|
|
783
870
|
[
|
|
784
871
|
{
|
|
785
872
|
itemId: { var: "event.itemId" },
|
|
786
|
-
itemNumber: { "+": [{ var: "state.agenda
|
|
873
|
+
itemNumber: { "+": [{ length: [{ var: "state.agenda" }] }, 1] },
|
|
787
874
|
title: { var: "event.title" },
|
|
788
875
|
description: { var: "event.description" },
|
|
789
876
|
type: { var: "event.type" },
|
|
@@ -811,12 +898,12 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
811
898
|
{ var: "state" },
|
|
812
899
|
{
|
|
813
900
|
agenda: {
|
|
814
|
-
|
|
901
|
+
merge: [
|
|
815
902
|
{ var: "state.agenda" },
|
|
816
903
|
[
|
|
817
904
|
{
|
|
818
905
|
itemId: { var: "event.itemId" },
|
|
819
|
-
itemNumber: { "+": [{ var: "state.agenda
|
|
906
|
+
itemNumber: { "+": [{ length: [{ var: "state.agenda" }] }, 1] },
|
|
820
907
|
title: { var: "event.title" },
|
|
821
908
|
description: { var: "event.description" },
|
|
822
909
|
type: { var: "event.type" },
|
|
@@ -866,9 +953,13 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
866
953
|
],
|
|
867
954
|
},
|
|
868
955
|
},
|
|
956
|
+
{
|
|
957
|
+
_emit: [
|
|
958
|
+
{ name: "SHAREHOLDER_MEETING_OPENED", data: { var: "event" }, destination: "external" },
|
|
959
|
+
],
|
|
960
|
+
},
|
|
869
961
|
],
|
|
870
962
|
},
|
|
871
|
-
emits: ["SHAREHOLDER_MEETING_OPENED"],
|
|
872
963
|
},
|
|
873
964
|
// IN_SESSION -> VOTING
|
|
874
965
|
{
|
|
@@ -904,15 +995,26 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
904
995
|
from: "VOTING",
|
|
905
996
|
to: "VOTING",
|
|
906
997
|
eventName: "cast_vote",
|
|
998
|
+
// authority gate — the roster entry identified by event.shareholderId must carry an address that signed (address ∈ proofs[].address), so the recorded shareholderId is provably the matched entry's, not a forged one; an identity attestation layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
|
|
907
999
|
guard: {
|
|
908
1000
|
and: [
|
|
909
1001
|
{
|
|
910
1002
|
some: [
|
|
911
1003
|
{ var: "state.eligibleVoters" },
|
|
912
1004
|
{
|
|
913
|
-
|
|
914
|
-
{
|
|
915
|
-
|
|
1005
|
+
and: [
|
|
1006
|
+
{
|
|
1007
|
+
"==": [
|
|
1008
|
+
{ var: "shareholderId" },
|
|
1009
|
+
{ var: "event.shareholderId" },
|
|
1010
|
+
],
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
in: [
|
|
1014
|
+
{ var: "address" },
|
|
1015
|
+
{ map: [{ var: "proofs" }, { var: "address" }] },
|
|
1016
|
+
],
|
|
1017
|
+
},
|
|
916
1018
|
],
|
|
917
1019
|
},
|
|
918
1020
|
],
|
|
@@ -925,13 +1027,13 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
925
1027
|
and: [
|
|
926
1028
|
{
|
|
927
1029
|
"==": [
|
|
928
|
-
{ var: "
|
|
1030
|
+
{ var: "shareholderId" },
|
|
929
1031
|
{ var: "event.shareholderId" },
|
|
930
1032
|
],
|
|
931
1033
|
},
|
|
932
1034
|
{
|
|
933
1035
|
"==": [
|
|
934
|
-
{ var: "
|
|
1036
|
+
{ var: "agendaItemId" },
|
|
935
1037
|
{ var: "event.agendaItemId" },
|
|
936
1038
|
],
|
|
937
1039
|
},
|
|
@@ -947,7 +1049,7 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
947
1049
|
{ var: "state" },
|
|
948
1050
|
{
|
|
949
1051
|
votes: {
|
|
950
|
-
|
|
1052
|
+
merge: [
|
|
951
1053
|
{ var: "state.votes" },
|
|
952
1054
|
[
|
|
953
1055
|
{
|
|
@@ -964,7 +1066,7 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
964
1066
|
var: "event.cumulativeVoteAllocation",
|
|
965
1067
|
},
|
|
966
1068
|
viaProxy: { var: "event.viaProxy" },
|
|
967
|
-
timestamp: { var: "$
|
|
1069
|
+
timestamp: { var: "$ordinal" },
|
|
968
1070
|
},
|
|
969
1071
|
],
|
|
970
1072
|
],
|
|
@@ -976,7 +1078,7 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
976
1078
|
if: [
|
|
977
1079
|
{
|
|
978
1080
|
"==": [
|
|
979
|
-
{ var: "
|
|
1081
|
+
{ var: "shareholderId" },
|
|
980
1082
|
{ var: "event.shareholderId" },
|
|
981
1083
|
],
|
|
982
1084
|
},
|
|
@@ -1047,9 +1149,13 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
1047
1149
|
],
|
|
1048
1150
|
},
|
|
1049
1151
|
},
|
|
1152
|
+
{
|
|
1153
|
+
_emit: [
|
|
1154
|
+
{ name: "MEETING_RESULTS_CERTIFIED", data: { var: "event" }, destination: "external" },
|
|
1155
|
+
],
|
|
1156
|
+
},
|
|
1050
1157
|
],
|
|
1051
1158
|
},
|
|
1052
|
-
emits: ["MEETING_RESULTS_CERTIFIED"],
|
|
1053
1159
|
},
|
|
1054
1160
|
// IN_SESSION -> CLOSED (adjourn_without_action)
|
|
1055
1161
|
{
|
|
@@ -1069,9 +1175,13 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
1069
1175
|
],
|
|
1070
1176
|
},
|
|
1071
1177
|
},
|
|
1178
|
+
{
|
|
1179
|
+
_emit: [
|
|
1180
|
+
{ name: "MEETING_ADJOURNED", data: { var: "event" }, destination: "external" },
|
|
1181
|
+
],
|
|
1182
|
+
},
|
|
1072
1183
|
],
|
|
1073
1184
|
},
|
|
1074
|
-
emits: ["MEETING_ADJOURNED"],
|
|
1075
1185
|
},
|
|
1076
1186
|
// VOTING -> CLOSED (adjourn_without_action)
|
|
1077
1187
|
{
|
|
@@ -1091,9 +1201,13 @@ export const corpShareholdersDef = defineFiberApp({
|
|
|
1091
1201
|
],
|
|
1092
1202
|
},
|
|
1093
1203
|
},
|
|
1204
|
+
{
|
|
1205
|
+
_emit: [
|
|
1206
|
+
{ name: "MEETING_ADJOURNED", data: { var: "event" }, destination: "external" },
|
|
1207
|
+
],
|
|
1208
|
+
},
|
|
1094
1209
|
],
|
|
1095
1210
|
},
|
|
1096
|
-
emits: ["MEETING_ADJOURNED"],
|
|
1097
1211
|
},
|
|
1098
1212
|
],
|
|
1099
1213
|
});
|