@ottochain/sdk 2.2.5 → 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 +89 -46
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +152 -45
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +40 -8
- 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 +85 -43
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +73 -43
- package/dist/cjs/apps/governance/state-machines/dao-single.js +55 -14
- package/dist/cjs/apps/governance/state-machines/dao-token.js +103 -45
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +129 -65
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +29 -5
- 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 +57 -9
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +70 -27
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +30 -6
- 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 +44 -19
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +54 -29
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +53 -31
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +120 -61
- package/dist/cjs/apps/markets/state-machines/market-universal.js +50 -10
- 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 +1722 -1
- package/dist/cjs/generated/ottochain/v1/fiber.js +355 -5
- package/dist/cjs/generated/ottochain/v1/messages.js +775 -3
- package/dist/cjs/generated/ottochain/v1/records.js +350 -3
- package/dist/cjs/index.js +45 -7
- package/dist/cjs/openapi.js +2 -0
- package/dist/cjs/ottochain/drop-nulls.js +1 -2
- package/dist/cjs/ottochain/genesis-manifest.js +193 -0
- package/dist/cjs/ottochain/index.js +27 -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 +19 -1
- 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 +89 -46
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +152 -45
- package/dist/esm/apps/contracts/state-machines/contract-universal.js +40 -8
- 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 +85 -43
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +73 -43
- package/dist/esm/apps/governance/state-machines/dao-single.js +55 -14
- package/dist/esm/apps/governance/state-machines/dao-token.js +103 -45
- package/dist/esm/apps/governance/state-machines/governance-simple.js +129 -65
- package/dist/esm/apps/governance/state-machines/governance-universal.js +29 -5
- 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 +57 -9
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +70 -27
- package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
- package/dist/esm/apps/identity/state-machines/identity-universal.js +30 -6
- 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 +44 -19
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +54 -29
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +53 -31
- package/dist/esm/apps/markets/state-machines/market-prediction.js +120 -61
- package/dist/esm/apps/markets/state-machines/market-universal.js +50 -10
- 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/generated/ottochain/v1/common.js +1718 -0
- package/dist/esm/generated/ottochain/v1/fiber.js +351 -1
- package/dist/esm/generated/ottochain/v1/messages.js +774 -2
- package/dist/esm/generated/ottochain/v1/records.js +349 -2
- package/dist/esm/index.js +23 -2
- package/dist/esm/openapi.js +1 -0
- package/dist/esm/ottochain/genesis-manifest.js +189 -0
- package/dist/esm/ottochain/index.js +4 -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 +18 -0
- 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 +159 -227
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +50 -101
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +86 -120
- package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +20 -4
- 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 +396 -417
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -95
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +57 -69
- package/dist/types/apps/governance/state-machines/dao-single.d.ts +40 -50
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +80 -53
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +107 -121
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +17 -5
- package/dist/types/apps/identity/constants.d.ts +32 -4
- package/dist/types/apps/identity/index.d.ts +449 -100
- package/dist/types/apps/identity/state-machines/identity-agent.d.ts +30 -0
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +41 -87
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
- package/dist/types/apps/identity/state-machines/identity-universal.d.ts +15 -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 +184 -204
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -37
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +26 -34
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +31 -43
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +67 -72
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +30 -10
- 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/generated/ottochain/v1/common.d.ts +228 -0
- package/dist/types/generated/ottochain/v1/fiber.d.ts +32 -1
- package/dist/types/generated/ottochain/v1/messages.d.ts +84 -0
- package/dist/types/generated/ottochain/v1/records.d.ts +34 -0
- package/dist/types/index.d.ts +8 -2
- package/dist/types/openapi.d.ts +22 -0
- package/dist/types/ottochain/genesis-manifest.d.ts +130 -0
- package/dist/types/ottochain/index.d.ts +6 -5
- 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 +602 -11
- 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 +41 -3
- 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 +52 -35
- package/dist/cjs/ottochain/normalize.js +0 -186
- package/dist/esm/ottochain/normalize.js +0 -179
- package/dist/types/ottochain/normalize.d.ts +0 -79
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.corpShareholdersDef = void 0;
|
|
4
4
|
const fiber_app_js_1 = require("../../../schema/fiber-app.js");
|
|
5
|
+
const guards_js_1 = require("../../../schema/guards.js");
|
|
6
|
+
const effects_js_1 = require("../../../schema/effects.js");
|
|
5
7
|
/**
|
|
6
8
|
* Shareholder meeting state machine managing annual/special meetings, record dates, proxy periods, voting, and certification of results.
|
|
7
9
|
* Supports multiple share classes and cumulative voting.
|
|
@@ -37,7 +39,7 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
37
39
|
},
|
|
38
40
|
},
|
|
39
41
|
createSchema: {
|
|
40
|
-
required: ["meetingId", "entityId"],
|
|
42
|
+
required: ["meetingId", "entityId", "registrar"],
|
|
41
43
|
properties: {
|
|
42
44
|
meetingId: {
|
|
43
45
|
type: "string",
|
|
@@ -49,6 +51,11 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
49
51
|
description: "Reference to parent corporate-entity",
|
|
50
52
|
immutable: true,
|
|
51
53
|
},
|
|
54
|
+
registrar: {
|
|
55
|
+
type: "address",
|
|
56
|
+
description: "State-pinned DAG address of the transfer agent / registrar authorized to register the eligible-shareholder roster of record. Verified against proofs[].address.",
|
|
57
|
+
immutable: true,
|
|
58
|
+
},
|
|
52
59
|
meetingType: {
|
|
53
60
|
type: "string",
|
|
54
61
|
enum: ["ANNUAL", "SPECIAL"],
|
|
@@ -76,6 +83,7 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
76
83
|
properties: {
|
|
77
84
|
meetingId: { type: "string", immutable: true },
|
|
78
85
|
entityId: { type: "string", immutable: true },
|
|
86
|
+
registrar: { type: "address", immutable: true },
|
|
79
87
|
meetingType: { type: "string" },
|
|
80
88
|
fiscalYear: { type: "integer" },
|
|
81
89
|
scheduledDate: { type: "string", format: "date-time" },
|
|
@@ -145,11 +153,14 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
145
153
|
},
|
|
146
154
|
createdAt: { type: "timestamp", computed: true },
|
|
147
155
|
updatedAt: { type: "timestamp", computed: true },
|
|
156
|
+
// Two-phase scheduling (#24): propose_schedule_annual binds the board-resolution fiber + records the
|
|
157
|
+
// pending meeting here; schedule_annual asserts the bound resolution is EXECUTED, then clears this.
|
|
158
|
+
pendingschedule_annual: { type: "object", nullable: true, computed: true },
|
|
148
159
|
},
|
|
149
160
|
},
|
|
150
161
|
eventSchemas: {
|
|
151
|
-
|
|
152
|
-
description: "
|
|
162
|
+
propose_schedule_annual: {
|
|
163
|
+
description: "Phase 1 of annual-meeting scheduling: bind the executing board-resolution fiber (#24 _addDependency) and record the pending meeting",
|
|
153
164
|
required: [
|
|
154
165
|
"meetingId",
|
|
155
166
|
"entityId",
|
|
@@ -166,6 +177,22 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
166
177
|
boardResolutionRef: { type: "string" },
|
|
167
178
|
},
|
|
168
179
|
},
|
|
180
|
+
schedule_annual: {
|
|
181
|
+
description: "Phase 2 of annual-meeting scheduling: execute once the bound board resolution is EXECUTED",
|
|
182
|
+
required: [
|
|
183
|
+
"meetingId",
|
|
184
|
+
"entityId",
|
|
185
|
+
"fiscalYear",
|
|
186
|
+
"scheduledDate",
|
|
187
|
+
],
|
|
188
|
+
properties: {
|
|
189
|
+
meetingId: { type: "string" },
|
|
190
|
+
entityId: { type: "string" },
|
|
191
|
+
fiscalYear: { type: "integer" },
|
|
192
|
+
scheduledDate: { type: "string", format: "date-time" },
|
|
193
|
+
location: { type: "object" },
|
|
194
|
+
},
|
|
195
|
+
},
|
|
169
196
|
schedule_special: {
|
|
170
197
|
description: "Schedule a special shareholder meeting",
|
|
171
198
|
required: [
|
|
@@ -211,6 +238,10 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
211
238
|
properties: {
|
|
212
239
|
shareholderId: { type: "string" },
|
|
213
240
|
name: { type: "string" },
|
|
241
|
+
address: {
|
|
242
|
+
type: "address",
|
|
243
|
+
description: "DAG wallet address of record for this shareholder; the only key a verified signer can vote under.",
|
|
244
|
+
},
|
|
214
245
|
shareholdings: { type: "array" },
|
|
215
246
|
},
|
|
216
247
|
},
|
|
@@ -372,6 +403,10 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
372
403
|
properties: {
|
|
373
404
|
shareholderId: { type: "string" },
|
|
374
405
|
name: { type: "string" },
|
|
406
|
+
address: {
|
|
407
|
+
type: "address",
|
|
408
|
+
description: "State-pinned DAG wallet address of record; cast_vote requires this address ∈ proofs[].address.",
|
|
409
|
+
},
|
|
375
410
|
shareholdings: {
|
|
376
411
|
type: "array",
|
|
377
412
|
items: {
|
|
@@ -605,19 +640,51 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
605
640
|
initialState: "SCHEDULED",
|
|
606
641
|
transitions: [
|
|
607
642
|
// Initial creation transitions (from: null means creation)
|
|
608
|
-
//
|
|
643
|
+
// SCHEDULED -> SCHEDULED (propose_schedule_annual) — phase 1 (#24): bind the executing board-resolution
|
|
644
|
+
// fiber and record the pending meeting, so the next transition can read the resolution's state.
|
|
609
645
|
{
|
|
610
646
|
from: "SCHEDULED",
|
|
611
647
|
to: "SCHEDULED",
|
|
612
|
-
eventName: "
|
|
648
|
+
eventName: "propose_schedule_annual",
|
|
613
649
|
guard: { "==": [1, 1] },
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
650
|
+
effect: {
|
|
651
|
+
merge: [
|
|
652
|
+
{ var: "state" },
|
|
653
|
+
{
|
|
654
|
+
pendingschedule_annual: {
|
|
655
|
+
meetingId: { var: "event.meetingId" },
|
|
656
|
+
entityId: { var: "event.entityId" },
|
|
657
|
+
fiscalYear: { var: "event.fiscalYear" },
|
|
658
|
+
scheduledDate: { var: "event.scheduledDate" },
|
|
659
|
+
location: { var: "event.location" },
|
|
660
|
+
ref: { var: "event.boardResolutionRef" },
|
|
661
|
+
proposedAt: { var: "$ordinal" },
|
|
662
|
+
},
|
|
663
|
+
},
|
|
664
|
+
// bind the resolution fiber so schedule_annual can assert its state next transition
|
|
665
|
+
(0, effects_js_1.addDependency)({ var: "event.boardResolutionRef" }),
|
|
666
|
+
],
|
|
667
|
+
},
|
|
668
|
+
dependencies: [],
|
|
669
|
+
},
|
|
670
|
+
// SCHEDULED -> SCHEDULED (schedule_annual) — phase 2 (#24): execute once the bound board resolution is
|
|
671
|
+
// EXECUTED. depInState replaces the dropped object-form dependency (which silently never gated).
|
|
672
|
+
{
|
|
673
|
+
from: "SCHEDULED",
|
|
674
|
+
to: "SCHEDULED",
|
|
675
|
+
eventName: "schedule_annual",
|
|
676
|
+
guard: {
|
|
677
|
+
and: [
|
|
678
|
+
// the proposal must target this meeting, and its bound resolution must be EXECUTED
|
|
679
|
+
{
|
|
680
|
+
"==": [
|
|
681
|
+
{ var: "state.pendingschedule_annual.meetingId" },
|
|
682
|
+
{ var: "event.meetingId" },
|
|
683
|
+
],
|
|
684
|
+
},
|
|
685
|
+
(0, guards_js_1.depInState)("state.pendingschedule_annual.ref", "EXECUTED"),
|
|
686
|
+
],
|
|
687
|
+
},
|
|
621
688
|
effect: {
|
|
622
689
|
merge: [
|
|
623
690
|
{ var: "state" },
|
|
@@ -630,12 +697,19 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
630
697
|
location: { var: "event.location" },
|
|
631
698
|
calledBy: {
|
|
632
699
|
type: "BOARD",
|
|
633
|
-
resolutionRef: { var: "
|
|
700
|
+
resolutionRef: { var: "state.pendingschedule_annual.ref" },
|
|
634
701
|
},
|
|
702
|
+
// clear the consumed proposal
|
|
703
|
+
pendingschedule_annual: null,
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
_emit: [
|
|
707
|
+
{ name: "SHAREHOLDER_MEETING_SCHEDULED", data: { var: "event" }, destination: "external" },
|
|
708
|
+
],
|
|
635
709
|
},
|
|
636
710
|
],
|
|
637
711
|
},
|
|
638
|
-
|
|
712
|
+
dependencies: [],
|
|
639
713
|
},
|
|
640
714
|
// schedule_special -> SCHEDULED
|
|
641
715
|
{
|
|
@@ -655,9 +729,13 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
655
729
|
type: { var: "event.calledByType" },
|
|
656
730
|
},
|
|
657
731
|
},
|
|
732
|
+
{
|
|
733
|
+
_emit: [
|
|
734
|
+
{ name: "SPECIAL_MEETING_SCHEDULED", data: { var: "event" }, destination: "external" },
|
|
735
|
+
],
|
|
736
|
+
},
|
|
658
737
|
],
|
|
659
738
|
},
|
|
660
|
-
emits: ["SPECIAL_MEETING_SCHEDULED"],
|
|
661
739
|
},
|
|
662
740
|
// SCHEDULED -> RECORD_DATE_SET
|
|
663
741
|
{
|
|
@@ -672,20 +750,25 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
672
750
|
status: "RECORD_DATE_SET",
|
|
673
751
|
recordDate: {
|
|
674
752
|
date: { var: "event.recordDate" },
|
|
675
|
-
setByBoardOn: { var: "$
|
|
753
|
+
setByBoardOn: { var: "$ordinal" },
|
|
676
754
|
resolutionRef: { var: "event.resolutionRef" },
|
|
677
755
|
},
|
|
678
756
|
},
|
|
757
|
+
{
|
|
758
|
+
_emit: [
|
|
759
|
+
{ name: "RECORD_DATE_SET", data: { var: "event" }, destination: "external" },
|
|
760
|
+
],
|
|
761
|
+
},
|
|
679
762
|
],
|
|
680
763
|
},
|
|
681
|
-
emits: ["RECORD_DATE_SET"],
|
|
682
764
|
},
|
|
683
765
|
// RECORD_DATE_SET -> RECORD_DATE_SET (register_eligible_shareholders)
|
|
684
766
|
{
|
|
685
767
|
from: "RECORD_DATE_SET",
|
|
686
768
|
to: "RECORD_DATE_SET",
|
|
687
769
|
eventName: "register_eligible_shareholders",
|
|
688
|
-
|
|
770
|
+
// authority gate — only the pinned registrar may set the roster of record; an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
|
|
771
|
+
guard: (0, guards_js_1.signerIsParty)("state.registrar"),
|
|
689
772
|
effect: {
|
|
690
773
|
merge: [
|
|
691
774
|
{ var: "state" },
|
|
@@ -733,9 +816,13 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
733
816
|
],
|
|
734
817
|
},
|
|
735
818
|
},
|
|
819
|
+
{
|
|
820
|
+
_emit: [
|
|
821
|
+
{ name: "PROXY_PERIOD_OPENED", data: { var: "event" }, destination: "external" },
|
|
822
|
+
],
|
|
823
|
+
},
|
|
736
824
|
],
|
|
737
825
|
},
|
|
738
|
-
emits: ["PROXY_PERIOD_OPENED"],
|
|
739
826
|
},
|
|
740
827
|
// add_agenda_item (can be from multiple states)
|
|
741
828
|
{
|
|
@@ -748,12 +835,12 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
748
835
|
{ var: "state" },
|
|
749
836
|
{
|
|
750
837
|
agenda: {
|
|
751
|
-
|
|
838
|
+
merge: [
|
|
752
839
|
{ var: "state.agenda" },
|
|
753
840
|
[
|
|
754
841
|
{
|
|
755
842
|
itemId: { var: "event.itemId" },
|
|
756
|
-
itemNumber: { "+": [{ var: "state.agenda
|
|
843
|
+
itemNumber: { "+": [{ length: [{ var: "state.agenda" }] }, 1] },
|
|
757
844
|
title: { var: "event.title" },
|
|
758
845
|
description: { var: "event.description" },
|
|
759
846
|
type: { var: "event.type" },
|
|
@@ -781,12 +868,12 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
781
868
|
{ var: "state" },
|
|
782
869
|
{
|
|
783
870
|
agenda: {
|
|
784
|
-
|
|
871
|
+
merge: [
|
|
785
872
|
{ var: "state.agenda" },
|
|
786
873
|
[
|
|
787
874
|
{
|
|
788
875
|
itemId: { var: "event.itemId" },
|
|
789
|
-
itemNumber: { "+": [{ var: "state.agenda
|
|
876
|
+
itemNumber: { "+": [{ length: [{ var: "state.agenda" }] }, 1] },
|
|
790
877
|
title: { var: "event.title" },
|
|
791
878
|
description: { var: "event.description" },
|
|
792
879
|
type: { var: "event.type" },
|
|
@@ -814,12 +901,12 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
814
901
|
{ var: "state" },
|
|
815
902
|
{
|
|
816
903
|
agenda: {
|
|
817
|
-
|
|
904
|
+
merge: [
|
|
818
905
|
{ var: "state.agenda" },
|
|
819
906
|
[
|
|
820
907
|
{
|
|
821
908
|
itemId: { var: "event.itemId" },
|
|
822
|
-
itemNumber: { "+": [{ var: "state.agenda
|
|
909
|
+
itemNumber: { "+": [{ length: [{ var: "state.agenda" }] }, 1] },
|
|
823
910
|
title: { var: "event.title" },
|
|
824
911
|
description: { var: "event.description" },
|
|
825
912
|
type: { var: "event.type" },
|
|
@@ -869,9 +956,13 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
869
956
|
],
|
|
870
957
|
},
|
|
871
958
|
},
|
|
959
|
+
{
|
|
960
|
+
_emit: [
|
|
961
|
+
{ name: "SHAREHOLDER_MEETING_OPENED", data: { var: "event" }, destination: "external" },
|
|
962
|
+
],
|
|
963
|
+
},
|
|
872
964
|
],
|
|
873
965
|
},
|
|
874
|
-
emits: ["SHAREHOLDER_MEETING_OPENED"],
|
|
875
966
|
},
|
|
876
967
|
// IN_SESSION -> VOTING
|
|
877
968
|
{
|
|
@@ -907,15 +998,26 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
907
998
|
from: "VOTING",
|
|
908
999
|
to: "VOTING",
|
|
909
1000
|
eventName: "cast_vote",
|
|
1001
|
+
// authority gate — the roster entry identified by event.shareholderId must carry an address that signed (address ∈ proofs[].address), so the recorded shareholderId is provably the matched entry's, not a forged one; an identity attestation layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
|
|
910
1002
|
guard: {
|
|
911
1003
|
and: [
|
|
912
1004
|
{
|
|
913
1005
|
some: [
|
|
914
1006
|
{ var: "state.eligibleVoters" },
|
|
915
1007
|
{
|
|
916
|
-
|
|
917
|
-
{
|
|
918
|
-
|
|
1008
|
+
and: [
|
|
1009
|
+
{
|
|
1010
|
+
"==": [
|
|
1011
|
+
{ var: "shareholderId" },
|
|
1012
|
+
{ var: "event.shareholderId" },
|
|
1013
|
+
],
|
|
1014
|
+
},
|
|
1015
|
+
{
|
|
1016
|
+
in: [
|
|
1017
|
+
{ var: "address" },
|
|
1018
|
+
{ map: [{ var: "proofs" }, { var: "address" }] },
|
|
1019
|
+
],
|
|
1020
|
+
},
|
|
919
1021
|
],
|
|
920
1022
|
},
|
|
921
1023
|
],
|
|
@@ -928,13 +1030,13 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
928
1030
|
and: [
|
|
929
1031
|
{
|
|
930
1032
|
"==": [
|
|
931
|
-
{ var: "
|
|
1033
|
+
{ var: "shareholderId" },
|
|
932
1034
|
{ var: "event.shareholderId" },
|
|
933
1035
|
],
|
|
934
1036
|
},
|
|
935
1037
|
{
|
|
936
1038
|
"==": [
|
|
937
|
-
{ var: "
|
|
1039
|
+
{ var: "agendaItemId" },
|
|
938
1040
|
{ var: "event.agendaItemId" },
|
|
939
1041
|
],
|
|
940
1042
|
},
|
|
@@ -950,7 +1052,7 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
950
1052
|
{ var: "state" },
|
|
951
1053
|
{
|
|
952
1054
|
votes: {
|
|
953
|
-
|
|
1055
|
+
merge: [
|
|
954
1056
|
{ var: "state.votes" },
|
|
955
1057
|
[
|
|
956
1058
|
{
|
|
@@ -967,7 +1069,7 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
967
1069
|
var: "event.cumulativeVoteAllocation",
|
|
968
1070
|
},
|
|
969
1071
|
viaProxy: { var: "event.viaProxy" },
|
|
970
|
-
timestamp: { var: "$
|
|
1072
|
+
timestamp: { var: "$ordinal" },
|
|
971
1073
|
},
|
|
972
1074
|
],
|
|
973
1075
|
],
|
|
@@ -979,7 +1081,7 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
979
1081
|
if: [
|
|
980
1082
|
{
|
|
981
1083
|
"==": [
|
|
982
|
-
{ var: "
|
|
1084
|
+
{ var: "shareholderId" },
|
|
983
1085
|
{ var: "event.shareholderId" },
|
|
984
1086
|
],
|
|
985
1087
|
},
|
|
@@ -1050,9 +1152,13 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
1050
1152
|
],
|
|
1051
1153
|
},
|
|
1052
1154
|
},
|
|
1155
|
+
{
|
|
1156
|
+
_emit: [
|
|
1157
|
+
{ name: "MEETING_RESULTS_CERTIFIED", data: { var: "event" }, destination: "external" },
|
|
1158
|
+
],
|
|
1159
|
+
},
|
|
1053
1160
|
],
|
|
1054
1161
|
},
|
|
1055
|
-
emits: ["MEETING_RESULTS_CERTIFIED"],
|
|
1056
1162
|
},
|
|
1057
1163
|
// IN_SESSION -> CLOSED (adjourn_without_action)
|
|
1058
1164
|
{
|
|
@@ -1072,9 +1178,13 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
1072
1178
|
],
|
|
1073
1179
|
},
|
|
1074
1180
|
},
|
|
1181
|
+
{
|
|
1182
|
+
_emit: [
|
|
1183
|
+
{ name: "MEETING_ADJOURNED", data: { var: "event" }, destination: "external" },
|
|
1184
|
+
],
|
|
1185
|
+
},
|
|
1075
1186
|
],
|
|
1076
1187
|
},
|
|
1077
|
-
emits: ["MEETING_ADJOURNED"],
|
|
1078
1188
|
},
|
|
1079
1189
|
// VOTING -> CLOSED (adjourn_without_action)
|
|
1080
1190
|
{
|
|
@@ -1094,9 +1204,13 @@ exports.corpShareholdersDef = (0, fiber_app_js_1.defineFiberApp)({
|
|
|
1094
1204
|
],
|
|
1095
1205
|
},
|
|
1096
1206
|
},
|
|
1207
|
+
{
|
|
1208
|
+
_emit: [
|
|
1209
|
+
{ name: "MEETING_ADJOURNED", data: { var: "event" }, destination: "external" },
|
|
1210
|
+
],
|
|
1211
|
+
},
|
|
1097
1212
|
],
|
|
1098
1213
|
},
|
|
1099
|
-
emits: ["MEETING_ADJOURNED"],
|
|
1100
1214
|
},
|
|
1101
1215
|
],
|
|
1102
1216
|
});
|
|
@@ -21,7 +21,20 @@
|
|
|
21
21
|
* @packageDocumentation
|
|
22
22
|
*/
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.
|
|
24
|
+
exports.GOVERNANCE_DEFINITIONS = exports.daoReputationDef = exports.daoTokenDef = exports.daoMultisigDef = exports.daoSingleDef = exports.govSimpleDef = exports.govUniversalDef = exports.voteChoiceToJSON = exports.voteChoiceFromJSON = exports.proposalStatusToJSON = exports.proposalStatusFromJSON = exports.dAOStatusToJSON = exports.dAOStatusFromJSON = exports.dAOTypeToJSON = exports.dAOTypeFromJSON = exports.ExecuteRequest = exports.VoteRequest = exports.ProposeRequest = exports.CreateDAORequest = exports.ThresholdHistoryEntry = exports.ThresholdVotes = exports.ThresholdDAO = exports.TokenProposalResult = exports.TokenDAO = exports.MultisigAction = exports.MultisigDAO = exports.OwnershipTransfer = exports.SingleOwnerAction = exports.SingleOwnerDAO = exports.VoteTally = exports.Vote = exports.Proposal = exports.DAOMetadata = exports.VoteChoice = exports.ProposalStatus = exports.DAOStatus = exports.DAOType = void 0;
|
|
25
|
+
exports.getGovernanceDefinition = getGovernanceDefinition;
|
|
26
|
+
exports.getDAODefinition = getDAODefinition;
|
|
27
|
+
exports.isThresholdMet = isThresholdMet;
|
|
28
|
+
exports.signaturesNeeded = signaturesNeeded;
|
|
29
|
+
exports.isSigner = isSigner;
|
|
30
|
+
exports.hasSigned = hasSigned;
|
|
31
|
+
exports.getVotingPower = getVotingPower;
|
|
32
|
+
exports.hasQuorum = hasQuorum;
|
|
33
|
+
exports.isPassing = isPassing;
|
|
34
|
+
exports.canPropose = canPropose;
|
|
35
|
+
exports.meetsThreshold = meetsThreshold;
|
|
36
|
+
exports.isMember = isMember;
|
|
37
|
+
exports.thresholdHasQuorum = thresholdHasQuorum;
|
|
25
38
|
// Re-export generated protobuf types (source of truth)
|
|
26
39
|
var governance_js_1 = require("../../generated/ottochain/apps/governance/v1/governance.js");
|
|
27
40
|
Object.defineProperty(exports, "DAOType", { enumerable: true, get: function () { return governance_js_1.DAOType; } });
|
|
@@ -80,7 +93,6 @@ exports.GOVERNANCE_DEFINITIONS = {
|
|
|
80
93
|
function getGovernanceDefinition(type) {
|
|
81
94
|
return exports.GOVERNANCE_DEFINITIONS[type];
|
|
82
95
|
}
|
|
83
|
-
exports.getGovernanceDefinition = getGovernanceDefinition;
|
|
84
96
|
/** @deprecated Use getGovernanceDefinition('daoSingle' | 'daoMultisig' | 'daoToken' | 'daoReputation') */
|
|
85
97
|
function getDAODefinition(daoType) {
|
|
86
98
|
const map = {
|
|
@@ -91,35 +103,30 @@ function getDAODefinition(daoType) {
|
|
|
91
103
|
};
|
|
92
104
|
return exports.GOVERNANCE_DEFINITIONS[map[daoType]];
|
|
93
105
|
}
|
|
94
|
-
exports.getDAODefinition = getDAODefinition;
|
|
95
106
|
/**
|
|
96
107
|
* Check if multisig has enough signatures to execute
|
|
97
108
|
*/
|
|
98
109
|
function isThresholdMet(state) {
|
|
99
110
|
return Object.keys(state.signatures).length >= state.threshold;
|
|
100
111
|
}
|
|
101
|
-
exports.isThresholdMet = isThresholdMet;
|
|
102
112
|
/**
|
|
103
113
|
* Get remaining signatures needed
|
|
104
114
|
*/
|
|
105
115
|
function signaturesNeeded(state) {
|
|
106
116
|
return Math.max(0, state.threshold - Object.keys(state.signatures).length);
|
|
107
117
|
}
|
|
108
|
-
exports.signaturesNeeded = signaturesNeeded;
|
|
109
118
|
/**
|
|
110
119
|
* Check if agent is a signer
|
|
111
120
|
*/
|
|
112
121
|
function isSigner(state, agent) {
|
|
113
122
|
return state.signers.includes(agent);
|
|
114
123
|
}
|
|
115
|
-
exports.isSigner = isSigner;
|
|
116
124
|
/**
|
|
117
125
|
* Check if agent has signed current proposal
|
|
118
126
|
*/
|
|
119
127
|
function hasSigned(state, agent) {
|
|
120
128
|
return agent in state.signatures;
|
|
121
129
|
}
|
|
122
|
-
exports.hasSigned = hasSigned;
|
|
123
130
|
/**
|
|
124
131
|
* Get effective voting power (includes delegation)
|
|
125
132
|
*/
|
|
@@ -133,7 +140,6 @@ function getVotingPower(state, agent) {
|
|
|
133
140
|
}
|
|
134
141
|
return power;
|
|
135
142
|
}
|
|
136
|
-
exports.getVotingPower = getVotingPower;
|
|
137
143
|
/**
|
|
138
144
|
* Check if proposal has quorum
|
|
139
145
|
*/
|
|
@@ -143,7 +149,6 @@ function hasQuorum(state) {
|
|
|
143
149
|
const totalVoted = state.votes.votesFor + state.votes.votesAgainst + state.votes.votesAbstain;
|
|
144
150
|
return totalVoted >= state.quorum;
|
|
145
151
|
}
|
|
146
|
-
exports.hasQuorum = hasQuorum;
|
|
147
152
|
/**
|
|
148
153
|
* Check if proposal is passing
|
|
149
154
|
*/
|
|
@@ -152,14 +157,12 @@ function isPassing(state) {
|
|
|
152
157
|
return false;
|
|
153
158
|
return state.votes.votesFor > state.votes.votesAgainst && hasQuorum(state);
|
|
154
159
|
}
|
|
155
|
-
exports.isPassing = isPassing;
|
|
156
160
|
/**
|
|
157
161
|
* Check if agent can propose
|
|
158
162
|
*/
|
|
159
163
|
function canPropose(state, agent) {
|
|
160
164
|
return (state.balances[agent] ?? 0) >= state.proposalThreshold;
|
|
161
165
|
}
|
|
162
|
-
exports.canPropose = canPropose;
|
|
163
166
|
/**
|
|
164
167
|
* Check if agent meets threshold for action
|
|
165
168
|
*/
|
|
@@ -173,14 +176,12 @@ function meetsThreshold(state, reputation, action) {
|
|
|
173
176
|
return reputation >= state.proposeThreshold;
|
|
174
177
|
}
|
|
175
178
|
}
|
|
176
|
-
exports.meetsThreshold = meetsThreshold;
|
|
177
179
|
/**
|
|
178
180
|
* Check if agent is a member
|
|
179
181
|
*/
|
|
180
182
|
function isMember(state, agent) {
|
|
181
183
|
return state.members.includes(agent);
|
|
182
184
|
}
|
|
183
|
-
exports.isMember = isMember;
|
|
184
185
|
/**
|
|
185
186
|
* Check if threshold proposal has quorum
|
|
186
187
|
*/
|
|
@@ -190,4 +191,3 @@ function thresholdHasQuorum(state) {
|
|
|
190
191
|
const totalVoted = state.votes.votesFor.length + state.votes.votesAgainst.length;
|
|
191
192
|
return totalVoted >= state.quorum;
|
|
192
193
|
}
|
|
193
|
-
exports.thresholdHasQuorum = thresholdHasQuorum;
|