@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.
Files changed (225) hide show
  1. package/dist/cjs/apps/compute/index.js +33 -0
  2. package/dist/cjs/apps/compute/state-machines/compute-rule110.js +164 -0
  3. package/dist/cjs/apps/compute/state-machines/index.js +9 -0
  4. package/dist/cjs/apps/contracts/index.js +1 -1
  5. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +126 -148
  6. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +153 -174
  7. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
  8. package/dist/cjs/apps/corporate/state-machines/corp-board.js +415 -481
  9. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +368 -440
  10. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +532 -647
  11. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +499 -603
  12. package/dist/cjs/apps/governance/index.js +7 -7
  13. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +170 -209
  14. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +161 -214
  15. package/dist/cjs/apps/governance/state-machines/dao-single.js +92 -92
  16. package/dist/cjs/apps/governance/state-machines/dao-token.js +169 -223
  17. package/dist/cjs/apps/governance/state-machines/governance-simple.js +185 -217
  18. package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
  19. package/dist/cjs/apps/identity/constants.js +16 -24
  20. package/dist/cjs/apps/identity/index.js +1 -1
  21. package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
  22. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +151 -169
  23. package/dist/cjs/apps/identity/state-machines/identity-registry.js +89 -115
  24. package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
  25. package/dist/cjs/apps/index.js +4 -1
  26. package/dist/cjs/apps/lending/assets.js +41 -17
  27. package/dist/cjs/apps/lending/credit-scoring.js +4 -4
  28. package/dist/cjs/apps/lending/eligibility.js +9 -25
  29. package/dist/cjs/apps/lending/index.js +1 -1
  30. package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +177 -156
  31. package/dist/cjs/apps/markets/index.js +1 -1
  32. package/dist/cjs/apps/markets/state-machines/market-auction.js +115 -134
  33. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +122 -137
  34. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +158 -177
  35. package/dist/cjs/apps/markets/state-machines/market-prediction.js +193 -227
  36. package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
  37. package/dist/cjs/apps/oracles/index.js +1 -1
  38. package/dist/cjs/apps/privacy/index.js +67 -0
  39. package/dist/cjs/apps/privacy/state-machines/index.js +17 -0
  40. package/dist/cjs/apps/privacy/state-machines/mixer-ddhRing.js +286 -0
  41. package/dist/cjs/apps/privacy/state-machines/note-pool.js +476 -0
  42. package/dist/cjs/apps/staked-pool/assets.js +103 -0
  43. package/dist/cjs/apps/staked-pool/base.js +498 -0
  44. package/dist/cjs/apps/staked-pool/consumer.js +55 -0
  45. package/dist/cjs/apps/staked-pool/index.js +83 -0
  46. package/dist/cjs/apps/staked-pool/state-machines/index.js +12 -0
  47. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-base.js +49 -0
  48. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-oracle.js +131 -0
  49. package/dist/cjs/generated/google/protobuf/struct.js +1 -1
  50. package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
  51. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +1 -1
  52. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  53. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +1 -1
  54. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +1 -1
  55. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +1 -1
  56. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +1 -1
  57. package/dist/cjs/generated/ottochain/v1/common.js +1 -1
  58. package/dist/cjs/generated/ottochain/v1/fiber.js +40 -2
  59. package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
  60. package/dist/cjs/generated/ottochain/v1/records.js +1 -1
  61. package/dist/cjs/index.js +20 -3
  62. package/dist/cjs/ottochain/genesis-manifest.js +6 -0
  63. package/dist/cjs/ottochain/metagraph-client.js +16 -8
  64. package/dist/cjs/ottochain/snapshot.js +2 -4
  65. package/dist/cjs/ottochain/transaction.js +10 -0
  66. package/dist/cjs/privacy/sealed-bid.js +85 -82
  67. package/dist/cjs/privacy/shield-app.js +32 -32
  68. package/dist/cjs/schema/effects.js +117 -1
  69. package/dist/cjs/schema/fiber-app.js +132 -3
  70. package/dist/cjs/schema/guard-lint.js +3 -12
  71. package/dist/cjs/schema/guards.js +38 -38
  72. package/dist/cjs/templates/asset-policy.js +190 -0
  73. package/dist/cjs/templates/index.js +86 -0
  74. package/dist/cjs/templates/machine.js +130 -0
  75. package/dist/cjs/templates/migration.js +39 -0
  76. package/dist/cjs/templates/state-shape.js +38 -0
  77. package/dist/cjs/validation.js +1 -3
  78. package/dist/esm/apps/compute/index.js +29 -0
  79. package/dist/esm/apps/compute/state-machines/compute-rule110.js +161 -0
  80. package/dist/esm/apps/compute/state-machines/index.js +5 -0
  81. package/dist/esm/apps/contracts/index.js +4 -4
  82. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +128 -150
  83. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +155 -176
  84. package/dist/esm/apps/contracts/state-machines/contract-universal.js +47 -59
  85. package/dist/esm/apps/corporate/index.js +2 -2
  86. package/dist/esm/apps/corporate/state-machines/corp-board.js +418 -484
  87. package/dist/esm/apps/corporate/state-machines/corp-entity.js +371 -443
  88. package/dist/esm/apps/corporate/state-machines/corp-securities.js +535 -650
  89. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +502 -606
  90. package/dist/esm/apps/governance/index.js +10 -10
  91. package/dist/esm/apps/governance/state-machines/dao-multisig.js +172 -211
  92. package/dist/esm/apps/governance/state-machines/dao-reputation.js +163 -216
  93. package/dist/esm/apps/governance/state-machines/dao-single.js +94 -94
  94. package/dist/esm/apps/governance/state-machines/dao-token.js +171 -225
  95. package/dist/esm/apps/governance/state-machines/governance-simple.js +187 -219
  96. package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
  97. package/dist/esm/apps/identity/constants.js +18 -26
  98. package/dist/esm/apps/identity/index.js +8 -8
  99. package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
  100. package/dist/esm/apps/identity/state-machines/identity-oracle.js +153 -171
  101. package/dist/esm/apps/identity/state-machines/identity-registry.js +91 -117
  102. package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
  103. package/dist/esm/apps/index.js +9 -6
  104. package/dist/esm/apps/lending/assets.js +41 -17
  105. package/dist/esm/apps/lending/credit-scoring.js +6 -6
  106. package/dist/esm/apps/lending/eligibility.js +10 -26
  107. package/dist/esm/apps/lending/index.js +5 -5
  108. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +178 -157
  109. package/dist/esm/apps/markets/index.js +5 -5
  110. package/dist/esm/apps/markets/state-machines/market-auction.js +117 -136
  111. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +124 -139
  112. package/dist/esm/apps/markets/state-machines/market-group-buy.js +160 -179
  113. package/dist/esm/apps/markets/state-machines/market-prediction.js +195 -229
  114. package/dist/esm/apps/markets/state-machines/market-universal.js +66 -81
  115. package/dist/esm/apps/oracles/index.js +3 -3
  116. package/dist/esm/apps/privacy/index.js +56 -0
  117. package/dist/esm/apps/privacy/state-machines/index.js +6 -0
  118. package/dist/esm/apps/privacy/state-machines/mixer-ddhRing.js +282 -0
  119. package/dist/esm/apps/privacy/state-machines/note-pool.js +470 -0
  120. package/dist/esm/apps/staked-pool/assets.js +91 -0
  121. package/dist/esm/apps/staked-pool/base.js +493 -0
  122. package/dist/esm/apps/staked-pool/consumer.js +49 -0
  123. package/dist/esm/apps/staked-pool/index.js +60 -0
  124. package/dist/esm/apps/staked-pool/state-machines/index.js +6 -0
  125. package/dist/esm/apps/staked-pool/state-machines/staked-pool-base.js +46 -0
  126. package/dist/esm/apps/staked-pool/state-machines/staked-pool-oracle.js +127 -0
  127. package/dist/esm/generated/google/protobuf/struct.js +1 -1
  128. package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
  129. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +1 -1
  130. package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  131. package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
  132. package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +1 -1
  133. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +1 -1
  134. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +1 -1
  135. package/dist/esm/generated/ottochain/v1/common.js +1 -1
  136. package/dist/esm/generated/ottochain/v1/fiber.js +40 -2
  137. package/dist/esm/generated/ottochain/v1/messages.js +1 -1
  138. package/dist/esm/generated/ottochain/v1/records.js +1 -1
  139. package/dist/esm/index.js +10 -4
  140. package/dist/esm/ottochain/genesis-manifest.js +6 -0
  141. package/dist/esm/ottochain/metagraph-client.js +16 -8
  142. package/dist/esm/ottochain/snapshot.js +2 -4
  143. package/dist/esm/ottochain/transaction.js +8 -0
  144. package/dist/esm/privacy/index.js +2 -2
  145. package/dist/esm/privacy/sealed-bid.js +87 -84
  146. package/dist/esm/privacy/shield-app.js +33 -33
  147. package/dist/esm/schema/effects.js +110 -0
  148. package/dist/esm/schema/fiber-app.js +127 -3
  149. package/dist/esm/schema/guard-lint.js +3 -12
  150. package/dist/esm/schema/guards.js +36 -37
  151. package/dist/esm/templates/asset-policy.js +182 -0
  152. package/dist/esm/templates/index.js +41 -0
  153. package/dist/esm/templates/machine.js +125 -0
  154. package/dist/esm/templates/migration.js +34 -0
  155. package/dist/esm/templates/state-shape.js +34 -0
  156. package/dist/esm/validation.js +1 -3
  157. package/dist/esm/zk/index.js +4 -4
  158. package/dist/types/apps/compute/index.d.ts +176 -0
  159. package/dist/types/apps/compute/state-machines/compute-rule110.d.ts +157 -0
  160. package/dist/types/apps/compute/state-machines/index.d.ts +5 -0
  161. package/dist/types/apps/contracts/index.d.ts +14 -14
  162. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +3 -3
  163. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +3 -3
  164. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
  165. package/dist/types/apps/corporate/index.d.ts +162 -162
  166. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +88 -88
  167. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +14 -14
  168. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +18 -18
  169. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +43 -43
  170. package/dist/types/apps/governance/index.d.ts +81 -81
  171. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +16 -16
  172. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +22 -22
  173. package/dist/types/apps/governance/state-machines/dao-token.d.ts +21 -21
  174. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +11 -11
  175. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +4 -4
  176. package/dist/types/apps/identity/constants.d.ts +2 -2
  177. package/dist/types/apps/identity/index.d.ts +70 -70
  178. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
  179. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +11 -11
  180. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +27 -27
  181. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
  182. package/dist/types/apps/index.d.ts +9 -6
  183. package/dist/types/apps/lending/assets.d.ts +2 -2
  184. package/dist/types/apps/lending/credit-scoring.d.ts +5 -5
  185. package/dist/types/apps/lending/eligibility.d.ts +2 -2
  186. package/dist/types/apps/lending/index.d.ts +20 -12
  187. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +15 -7
  188. package/dist/types/apps/markets/index.d.ts +76 -76
  189. package/dist/types/apps/markets/state-machines/market-auction.d.ts +12 -12
  190. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +19 -19
  191. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +18 -18
  192. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +15 -15
  193. package/dist/types/apps/markets/state-machines/market-universal.d.ts +7 -7
  194. package/dist/types/apps/oracles/index.d.ts +1 -1
  195. package/dist/types/apps/privacy/index.d.ts +328 -0
  196. package/dist/types/apps/privacy/state-machines/index.d.ts +6 -0
  197. package/dist/types/apps/privacy/state-machines/mixer-ddhRing.d.ts +337 -0
  198. package/dist/types/apps/privacy/state-machines/note-pool.d.ts +196 -0
  199. package/dist/types/apps/staked-pool/assets.d.ts +53 -0
  200. package/dist/types/apps/staked-pool/base.d.ts +80 -0
  201. package/dist/types/apps/staked-pool/consumer.d.ts +29 -0
  202. package/dist/types/apps/staked-pool/index.d.ts +51 -0
  203. package/dist/types/apps/staked-pool/state-machines/index.d.ts +6 -0
  204. package/dist/types/apps/staked-pool/state-machines/staked-pool-base.d.ts +8 -0
  205. package/dist/types/apps/staked-pool/state-machines/staked-pool-oracle.d.ts +34 -0
  206. package/dist/types/generated/openapi.d.ts +13 -0
  207. package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
  208. package/dist/types/index.d.ts +3 -3
  209. package/dist/types/openapi.d.ts +4 -2
  210. package/dist/types/ottochain/genesis-manifest.d.ts +6 -0
  211. package/dist/types/ottochain/transaction.d.ts +9 -1
  212. package/dist/types/ottochain/types.d.ts +1 -1
  213. package/dist/types/privacy/index.d.ts +2 -2
  214. package/dist/types/privacy/sealed-bid.d.ts +9 -9
  215. package/dist/types/privacy/shield-app.d.ts +1 -1
  216. package/dist/types/schema/effects.d.ts +107 -0
  217. package/dist/types/schema/fiber-app.d.ts +281 -0
  218. package/dist/types/schema/guards.d.ts +12 -0
  219. package/dist/types/templates/asset-policy.d.ts +119 -0
  220. package/dist/types/templates/index.d.ts +26 -0
  221. package/dist/types/templates/machine.d.ts +139 -0
  222. package/dist/types/templates/migration.d.ts +34 -0
  223. package/dist/types/templates/state-shape.d.ts +30 -0
  224. package/dist/types/zk/index.d.ts +4 -4
  225. package/package.json +31 -13
@@ -10,618 +10,560 @@ const effects_js_1 = require("../../../schema/effects.js");
10
10
  */
11
11
  exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
12
12
  metadata: {
13
- name: "CorpSecurities",
14
- app: "corporate",
15
- type: "securities",
16
- version: "1.0.0",
17
- description: "Securities state machine tracking the lifecycle of equity from authorization through issuance, transfer, and retirement. Manages stock certificates, book entry positions, and restricted securities.",
13
+ name: 'CorpSecurities',
14
+ app: 'corporate',
15
+ type: 'securities',
16
+ version: '1.0.0',
17
+ description: 'Securities state machine tracking the lifecycle of equity from authorization through issuance, transfer, and retirement. Manages stock certificates, book entry positions, and restricted securities.',
18
18
  crossReferences: {
19
19
  entity: {
20
- machine: "corporate-entity",
21
- description: "Parent corporate entity with share class definitions",
22
- foreignKey: "entityId",
20
+ machine: 'corporate-entity',
21
+ description: 'Parent corporate entity with share class definitions',
22
+ foreignKey: 'entityId',
23
23
  },
24
24
  resolutions: {
25
- machine: "corporate-resolution",
26
- description: "Board resolutions authorizing securities actions",
27
- foreignKey: "entityId",
25
+ machine: 'corporate-resolution',
26
+ description: 'Board resolutions authorizing securities actions',
27
+ foreignKey: 'entityId',
28
28
  },
29
29
  shareholders: {
30
- machine: "corporate-shareholders",
31
- description: "Shareholder meetings for determining voting rights",
32
- foreignKey: "entityId",
30
+ machine: 'corporate-shareholders',
31
+ description: 'Shareholder meetings for determining voting rights',
32
+ foreignKey: 'entityId',
33
33
  },
34
34
  },
35
35
  },
36
36
  createSchema: {
37
37
  required: [
38
- "securityId",
39
- "entityId",
40
- "issuerAddress",
41
- "shareClass",
42
- "shareClassName",
43
- "shareCount",
44
- "parValue",
38
+ 'securityId',
39
+ 'entityId',
40
+ 'issuerAddress',
41
+ 'shareClass',
42
+ 'shareClassName',
43
+ 'shareCount',
44
+ 'parValue',
45
45
  ],
46
46
  properties: {
47
47
  securityId: {
48
- type: "string",
49
- description: "Unique identifier for this security lot/certificate",
48
+ type: 'string',
49
+ description: 'Unique identifier for this security lot/certificate',
50
50
  immutable: true,
51
51
  },
52
52
  entityId: {
53
- type: "string",
54
- description: "Reference to parent corporate-entity",
53
+ type: 'string',
54
+ description: 'Reference to parent corporate-entity',
55
55
  immutable: true,
56
56
  },
57
57
  issuerAddress: {
58
- type: "address",
59
- description: "State-pinned DAG address of the issuing authority (the corporation / transfer agent). Verified against proofs[].address to gate issuer-privileged transitions.",
58
+ type: 'address',
59
+ description: 'State-pinned DAG address of the issuing authority (the corporation / transfer agent). Verified against proofs[].address to gate issuer-privileged transitions.',
60
60
  immutable: true,
61
61
  },
62
62
  shareClass: {
63
- type: "string",
64
- description: "Share class ID from corporate-entity",
63
+ type: 'string',
64
+ description: 'Share class ID from corporate-entity',
65
65
  },
66
66
  shareClassName: {
67
- type: "string",
68
- description: "Human-readable class name",
67
+ type: 'string',
68
+ description: 'Human-readable class name',
69
69
  },
70
70
  shareCount: {
71
- type: "integer",
72
- description: "Number of shares in this lot",
71
+ type: 'integer',
72
+ description: 'Number of shares in this lot',
73
73
  },
74
74
  parValue: {
75
- type: "number",
76
- description: "Par value per share",
75
+ type: 'number',
76
+ description: 'Par value per share',
77
77
  },
78
78
  },
79
79
  },
80
80
  stateSchema: {
81
81
  properties: {
82
- securityId: { type: "string", immutable: true },
83
- entityId: { type: "string", immutable: true },
84
- issuerAddress: { type: "address", immutable: true },
85
- shareClass: { type: "string" },
86
- shareClassName: { type: "string" },
82
+ securityId: { type: 'string', immutable: true },
83
+ entityId: { type: 'string', immutable: true },
84
+ issuerAddress: { type: 'address', immutable: true },
85
+ shareClass: { type: 'string' },
86
+ shareClassName: { type: 'string' },
87
87
  certificateNumber: {
88
- type: "string",
88
+ type: 'string',
89
89
  nullable: true,
90
- description: "For certificated shares",
90
+ description: 'For certificated shares',
91
91
  },
92
92
  cusip: {
93
- type: "string",
93
+ type: 'string',
94
94
  nullable: true,
95
- description: "CUSIP number if assigned",
95
+ description: 'CUSIP number if assigned',
96
96
  },
97
- shareCount: { type: "integer" },
98
- parValue: { type: "number" },
97
+ shareCount: { type: 'integer' },
98
+ parValue: { type: 'number' },
99
99
  issuancePrice: {
100
- type: "number",
100
+ type: 'number',
101
101
  nullable: true,
102
- description: "Price per share at issuance",
102
+ description: 'Price per share at issuance',
103
103
  computed: true,
104
104
  },
105
105
  issuanceDate: {
106
- type: "string",
107
- format: "date",
106
+ type: 'string',
107
+ format: 'date',
108
108
  nullable: true,
109
109
  computed: true,
110
110
  },
111
111
  form: {
112
- type: "string",
113
- enum: ["CERTIFICATED", "BOOK_ENTRY", "DRS"],
114
- description: "Physical certificate, book entry, or Direct Registration System",
112
+ type: 'string',
113
+ enum: ['CERTIFICATED', 'BOOK_ENTRY', 'DRS'],
114
+ description: 'Physical certificate, book entry, or Direct Registration System',
115
115
  computed: true,
116
116
  },
117
- holder: { $ref: "#/definitions/Holder", nullable: true, computed: true },
118
- restrictions: { $ref: "#/definitions/Restrictions", computed: true },
117
+ holder: { $ref: '#/definitions/Holder', nullable: true, computed: true },
118
+ restrictions: { $ref: '#/definitions/Restrictions', computed: true },
119
119
  authorization: {
120
- $ref: "#/definitions/Authorization",
120
+ $ref: '#/definitions/Authorization',
121
121
  nullable: true,
122
122
  computed: true,
123
123
  },
124
124
  issuanceDetails: {
125
- $ref: "#/definitions/IssuanceDetails",
125
+ $ref: '#/definitions/IssuanceDetails',
126
126
  nullable: true,
127
127
  computed: true,
128
128
  },
129
129
  transferHistory: {
130
- type: "array",
131
- items: { $ref: "#/definitions/TransferRecord" },
130
+ type: 'array',
131
+ items: { $ref: '#/definitions/TransferRecord' },
132
132
  computed: true,
133
133
  },
134
134
  corporateActions: {
135
- type: "array",
136
- items: { $ref: "#/definitions/CorporateAction" },
135
+ type: 'array',
136
+ items: { $ref: '#/definitions/CorporateAction' },
137
137
  computed: true,
138
138
  },
139
139
  retirementDetails: {
140
- $ref: "#/definitions/RetirementDetails",
140
+ $ref: '#/definitions/RetirementDetails',
141
141
  nullable: true,
142
142
  computed: true,
143
143
  },
144
144
  status: {
145
- type: "string",
146
- enum: [
147
- "AUTHORIZED",
148
- "ISSUED",
149
- "TREASURY",
150
- "TRANSFERRED",
151
- "RETIRED",
152
- ],
145
+ type: 'string',
146
+ enum: ['AUTHORIZED', 'ISSUED', 'TREASURY', 'TRANSFERRED', 'RETIRED'],
153
147
  computed: true,
154
148
  },
155
- createdAt: { type: "timestamp", computed: true },
156
- updatedAt: { type: "timestamp", computed: true },
149
+ createdAt: { type: 'timestamp', computed: true },
150
+ updatedAt: { type: 'timestamp', computed: true },
157
151
  // Two-phase resolution gating (#24): each propose_<X> binds the executing resolution (and, for
158
152
  // issuance, the parent entity) fiber via _addDependency and records the pending action here; the
159
153
  // gated <X> then asserts the bound dependency state via depInState and clears the pending object.
160
154
  // The dropped object-form dependencies (which the chain silently never gated) are replaced this way.
161
- pendingIssue: { type: "object", nullable: true, computed: true },
162
- pendingRepurchase: { type: "object", nullable: true, computed: true },
163
- pendingReissue: { type: "object", nullable: true, computed: true },
164
- pendingRetire: { type: "object", nullable: true, computed: true },
165
- pendingDividend: { type: "object", nullable: true, computed: true },
155
+ pendingIssue: { type: 'object', nullable: true, computed: true },
156
+ pendingRepurchase: { type: 'object', nullable: true, computed: true },
157
+ pendingReissue: { type: 'object', nullable: true, computed: true },
158
+ pendingRetire: { type: 'object', nullable: true, computed: true },
159
+ pendingDividend: { type: 'object', nullable: true, computed: true },
166
160
  },
167
161
  },
168
162
  eventSchemas: {
169
163
  authorize_shares: {
170
- description: "Record shares as authorized per charter/amendment",
164
+ description: 'Record shares as authorized per charter/amendment',
171
165
  required: [
172
- "securityId",
173
- "entityId",
174
- "shareClass",
175
- "shareClassName",
176
- "shareCount",
177
- "parValue",
178
- "authorizedDate",
166
+ 'securityId',
167
+ 'entityId',
168
+ 'shareClass',
169
+ 'shareClassName',
170
+ 'shareCount',
171
+ 'parValue',
172
+ 'authorizedDate',
179
173
  ],
180
174
  properties: {
181
- securityId: { type: "string" },
182
- entityId: { type: "string" },
183
- shareClass: { type: "string" },
184
- shareClassName: { type: "string" },
185
- shareCount: { type: "integer" },
186
- parValue: { type: "number" },
187
- authorizedDate: { type: "string", format: "date" },
188
- charterProvision: { type: "string" },
175
+ securityId: { type: 'string' },
176
+ entityId: { type: 'string' },
177
+ shareClass: { type: 'string' },
178
+ shareClassName: { type: 'string' },
179
+ shareCount: { type: 'integer' },
180
+ parValue: { type: 'number' },
181
+ authorizedDate: { type: 'string', format: 'date' },
182
+ charterProvision: { type: 'string' },
189
183
  },
190
184
  },
191
185
  propose_issue: {
192
- description: "Phase 1 of issuance (#24): bind the executing board resolution + parent entity fibers (_addDependency) and record the pending issuance",
193
- required: ["holderId", "boardResolutionRef"],
186
+ description: 'Phase 1 of issuance (#24): bind the executing board resolution + parent entity fibers (_addDependency) and record the pending issuance',
187
+ required: ['holderId', 'boardResolutionRef'],
194
188
  properties: {
195
- holderId: { type: "string" },
196
- boardResolutionRef: { type: "string" },
189
+ holderId: { type: 'string' },
190
+ boardResolutionRef: { type: 'string' },
197
191
  },
198
192
  },
199
193
  issue_shares: {
200
- description: "Issue shares to a holder",
201
- required: [
202
- "holderId",
203
- "holderType",
204
- "holderName",
205
- "issuanceDate",
206
- "form",
207
- "consideration",
208
- ],
194
+ description: 'Issue shares to a holder',
195
+ required: ['holderId', 'holderType', 'holderName', 'issuanceDate', 'form', 'consideration'],
209
196
  properties: {
210
- holderId: { type: "string" },
211
- holderType: { type: "string" },
212
- holderName: { type: "string" },
197
+ holderId: { type: 'string' },
198
+ holderType: { type: 'string' },
199
+ holderName: { type: 'string' },
213
200
  holderWallet: {
214
- type: "address",
215
- description: "DAG wallet address the holder controls; pinned so holder-initiated transfer/repurchase can be authorized via proofs[].address.",
201
+ type: 'address',
202
+ description: 'DAG wallet address the holder controls; pinned so holder-initiated transfer/repurchase can be authorized via proofs[].address.',
216
203
  },
217
- address: { type: "object" },
218
- issuanceDate: { type: "string", format: "date" },
219
- issuancePrice: { type: "number" },
204
+ address: { type: 'object' },
205
+ issuanceDate: { type: 'string', format: 'date' },
206
+ issuancePrice: { type: 'number' },
220
207
  form: {
221
- type: "string",
222
- enum: ["CERTIFICATED", "BOOK_ENTRY", "DRS"],
208
+ type: 'string',
209
+ enum: ['CERTIFICATED', 'BOOK_ENTRY', 'DRS'],
223
210
  },
224
- certificateNumber: { type: "string" },
225
- consideration: { type: "object" },
226
- isRestricted: { type: "boolean", default: false },
227
- restrictionType: { type: "array" },
228
- legends: { type: "array" },
229
- exemptionUsed: { type: "string" },
230
- accreditedInvestor: { type: "boolean" },
211
+ certificateNumber: { type: 'string' },
212
+ consideration: { type: 'object' },
213
+ isRestricted: { type: 'boolean', default: false },
214
+ restrictionType: { type: 'array' },
215
+ legends: { type: 'array' },
216
+ exemptionUsed: { type: 'string' },
217
+ accreditedInvestor: { type: 'boolean' },
231
218
  },
232
219
  },
233
220
  initiate_transfer: {
234
- description: "Begin transfer of shares to new holder",
235
- required: [
236
- "transferId",
237
- "toHolderId",
238
- "toHolderName",
239
- "toHolderType",
240
- "transferType",
241
- "transferDate",
242
- ],
221
+ description: 'Begin transfer of shares to new holder',
222
+ required: ['transferId', 'toHolderId', 'toHolderName', 'toHolderType', 'transferType', 'transferDate'],
243
223
  properties: {
244
- transferId: { type: "string" },
245
- toHolderId: { type: "string" },
246
- toHolderName: { type: "string" },
247
- toHolderType: { type: "string" },
248
- toAddress: { type: "object" },
249
- transferType: { type: "string" },
250
- pricePerShare: { type: "number" },
251
- transferDate: { type: "string", format: "date" },
224
+ transferId: { type: 'string' },
225
+ toHolderId: { type: 'string' },
226
+ toHolderName: { type: 'string' },
227
+ toHolderType: { type: 'string' },
228
+ toAddress: { type: 'object' },
229
+ transferType: { type: 'string' },
230
+ pricePerShare: { type: 'number' },
231
+ transferDate: { type: 'string', format: 'date' },
252
232
  },
253
233
  },
254
234
  complete_transfer: {
255
- description: "Complete the transfer, update holder",
256
- required: [
257
- "toHolderId",
258
- "toHolderName",
259
- "toHolderType",
260
- "completedDate",
261
- ],
235
+ description: 'Complete the transfer, update holder',
236
+ required: ['toHolderId', 'toHolderName', 'toHolderType', 'completedDate'],
262
237
  properties: {
263
- transferAgentConfirmation: { type: "string" },
264
- newCertificateNumber: { type: "string" },
265
- toHolderId: { type: "string" },
266
- toHolderName: { type: "string" },
267
- toHolderType: { type: "string" },
238
+ transferAgentConfirmation: { type: 'string' },
239
+ newCertificateNumber: { type: 'string' },
240
+ toHolderId: { type: 'string' },
241
+ toHolderName: { type: 'string' },
242
+ toHolderType: { type: 'string' },
268
243
  toHolderWallet: {
269
- type: "address",
270
- description: "DAG wallet address the new holder controls.",
244
+ type: 'address',
245
+ description: 'DAG wallet address the new holder controls.',
271
246
  },
272
- toAddress: { type: "object" },
273
- completedDate: { type: "string", format: "date" },
274
- costBasis: { type: "number" },
247
+ toAddress: { type: 'object' },
248
+ completedDate: { type: 'string', format: 'date' },
249
+ costBasis: { type: 'number' },
275
250
  },
276
251
  },
277
252
  propose_repurchase: {
278
- description: "Phase 1 of repurchase (#24): bind the executing board resolution fiber (_addDependency) and record the pending repurchase",
279
- required: ["repurchaseDate", "boardResolutionRef"],
253
+ description: 'Phase 1 of repurchase (#24): bind the executing board resolution fiber (_addDependency) and record the pending repurchase',
254
+ required: ['repurchaseDate', 'boardResolutionRef'],
280
255
  properties: {
281
- repurchaseDate: { type: "string", format: "date" },
282
- boardResolutionRef: { type: "string" },
256
+ repurchaseDate: { type: 'string', format: 'date' },
257
+ boardResolutionRef: { type: 'string' },
283
258
  },
284
259
  },
285
260
  repurchase: {
286
- description: "Company repurchases shares from holder",
287
- required: ["repurchaseDate", "pricePerShare"],
261
+ description: 'Company repurchases shares from holder',
262
+ required: ['repurchaseDate', 'pricePerShare'],
288
263
  properties: {
289
- repurchaseDate: { type: "string", format: "date" },
290
- pricePerShare: { type: "number" },
291
- repurchaseAgreementRef: { type: "string" },
264
+ repurchaseDate: { type: 'string', format: 'date' },
265
+ pricePerShare: { type: 'number' },
266
+ repurchaseAgreementRef: { type: 'string' },
292
267
  },
293
268
  },
294
269
  propose_reissue: {
295
- description: "Phase 1 of treasury reissue (#24): bind the executing board resolution fiber (_addDependency) and record the pending reissue",
296
- required: ["holderId", "boardResolutionRef"],
270
+ description: 'Phase 1 of treasury reissue (#24): bind the executing board resolution fiber (_addDependency) and record the pending reissue',
271
+ required: ['holderId', 'boardResolutionRef'],
297
272
  properties: {
298
- holderId: { type: "string" },
299
- boardResolutionRef: { type: "string" },
273
+ holderId: { type: 'string' },
274
+ boardResolutionRef: { type: 'string' },
300
275
  },
301
276
  },
302
277
  reissue_from_treasury: {
303
- description: "Reissue treasury shares to a new holder",
304
- required: [
305
- "holderId",
306
- "holderName",
307
- "holderType",
308
- "reissueDate",
309
- ],
278
+ description: 'Reissue treasury shares to a new holder',
279
+ required: ['holderId', 'holderName', 'holderType', 'reissueDate'],
310
280
  properties: {
311
- holderId: { type: "string" },
312
- holderName: { type: "string" },
313
- holderType: { type: "string" },
281
+ holderId: { type: 'string' },
282
+ holderName: { type: 'string' },
283
+ holderType: { type: 'string' },
314
284
  holderWallet: {
315
- type: "address",
316
- description: "DAG wallet address the reissued holder controls.",
285
+ type: 'address',
286
+ description: 'DAG wallet address the reissued holder controls.',
317
287
  },
318
- address: { type: "object" },
319
- reissueDate: { type: "string", format: "date" },
320
- issuancePrice: { type: "number" },
288
+ address: { type: 'object' },
289
+ reissueDate: { type: 'string', format: 'date' },
290
+ issuancePrice: { type: 'number' },
321
291
  },
322
292
  },
323
293
  propose_retire: {
324
- description: "Phase 1 of retirement (#24): bind the executing board resolution fiber (_addDependency) and record the pending retirement (from ISSUED or TREASURY)",
325
- required: ["retiredDate", "boardResolutionRef"],
294
+ description: 'Phase 1 of retirement (#24): bind the executing board resolution fiber (_addDependency) and record the pending retirement (from ISSUED or TREASURY)',
295
+ required: ['retiredDate', 'boardResolutionRef'],
326
296
  properties: {
327
- retiredDate: { type: "string", format: "date" },
328
- boardResolutionRef: { type: "string" },
297
+ retiredDate: { type: 'string', format: 'date' },
298
+ boardResolutionRef: { type: 'string' },
329
299
  },
330
300
  },
331
301
  retire: {
332
- description: "Retire shares (cancel them)",
333
- required: ["retiredDate", "retirementMethod"],
302
+ description: 'Retire shares (cancel them)',
303
+ required: ['retiredDate', 'retirementMethod'],
334
304
  properties: {
335
- retiredDate: { type: "string", format: "date" },
336
- retirementMethod: { type: "string" },
337
- repurchasePrice: { type: "number" },
305
+ retiredDate: { type: 'string', format: 'date' },
306
+ retirementMethod: { type: 'string' },
307
+ repurchasePrice: { type: 'number' },
338
308
  },
339
309
  },
340
310
  stock_split: {
341
- description: "Apply stock split to this lot",
342
- required: [
343
- "actionId",
344
- "splitRatio",
345
- "effectiveDate",
346
- "resolutionRef",
347
- "newShareCount",
348
- ],
311
+ description: 'Apply stock split to this lot',
312
+ required: ['actionId', 'splitRatio', 'effectiveDate', 'resolutionRef', 'newShareCount'],
349
313
  properties: {
350
- actionId: { type: "string" },
314
+ actionId: { type: 'string' },
351
315
  splitRatio: {
352
- type: "string",
316
+ type: 'string',
353
317
  description: "e.g., '2:1' for 2-for-1 split",
354
318
  },
355
- effectiveDate: { type: "string", format: "date" },
356
- resolutionRef: { type: "string" },
357
- newShareCount: { type: "integer" },
319
+ effectiveDate: { type: 'string', format: 'date' },
320
+ resolutionRef: { type: 'string' },
321
+ newShareCount: { type: 'integer' },
358
322
  },
359
323
  },
360
324
  propose_dividend: {
361
- description: "Phase 1 of dividend declaration (#24): bind the executing board resolution fiber (_addDependency) and record the pending declaration",
362
- required: ["actionId", "resolutionRef"],
325
+ description: 'Phase 1 of dividend declaration (#24): bind the executing board resolution fiber (_addDependency) and record the pending declaration',
326
+ required: ['actionId', 'resolutionRef'],
363
327
  properties: {
364
- actionId: { type: "string" },
365
- resolutionRef: { type: "string" },
328
+ actionId: { type: 'string' },
329
+ resolutionRef: { type: 'string' },
366
330
  },
367
331
  },
368
332
  declare_dividend: {
369
- description: "Record dividend declaration affecting this lot (for stock dividends)",
370
- required: [
371
- "actionId",
372
- "dividendType",
373
- "recordDate",
374
- "paymentDate",
375
- ],
333
+ description: 'Record dividend declaration affecting this lot (for stock dividends)',
334
+ required: ['actionId', 'dividendType', 'recordDate', 'paymentDate'],
376
335
  properties: {
377
- actionId: { type: "string" },
378
- dividendType: { type: "string", enum: ["CASH", "STOCK"] },
379
- recordDate: { type: "string", format: "date" },
380
- paymentDate: { type: "string", format: "date" },
381
- cashAmount: { type: "number" },
382
- stockShares: { type: "integer" },
336
+ actionId: { type: 'string' },
337
+ dividendType: { type: 'string', enum: ['CASH', 'STOCK'] },
338
+ recordDate: { type: 'string', format: 'date' },
339
+ paymentDate: { type: 'string', format: 'date' },
340
+ cashAmount: { type: 'number' },
341
+ stockShares: { type: 'integer' },
383
342
  },
384
343
  },
385
344
  remove_restriction: {
386
- description: "Remove or update restrictions on the shares",
387
- required: ["restrictionType", "removedDate"],
345
+ description: 'Remove or update restrictions on the shares',
346
+ required: ['restrictionType', 'removedDate'],
388
347
  properties: {
389
- restrictionType: { type: "string" },
390
- removedDate: { type: "string", format: "date" },
391
- reason: { type: "string" },
392
- legalOpinionRef: { type: "string" },
348
+ restrictionType: { type: 'string' },
349
+ removedDate: { type: 'string', format: 'date' },
350
+ reason: { type: 'string' },
351
+ legalOpinionRef: { type: 'string' },
393
352
  },
394
353
  },
395
354
  },
396
355
  definitions: {
397
356
  Holder: {
398
- type: "object",
357
+ type: 'object',
399
358
  nullable: true,
400
359
  properties: {
401
- holderId: { type: "string" },
360
+ holderId: { type: 'string' },
402
361
  holderType: {
403
- type: "string",
404
- enum: ["INDIVIDUAL", "ENTITY", "TRUST", "TREASURY"],
362
+ type: 'string',
363
+ enum: ['INDIVIDUAL', 'ENTITY', 'TRUST', 'TREASURY'],
405
364
  },
406
- name: { type: "string" },
407
- taxId: { type: "string", nullable: true },
365
+ name: { type: 'string' },
366
+ taxId: { type: 'string', nullable: true },
408
367
  walletAddress: {
409
- type: "address",
368
+ type: 'address',
410
369
  nullable: true,
411
- description: "State-pinned DAG wallet address controlled by this holder; verified against proofs[].address to gate holder-initiated transfer/repurchase.",
370
+ description: 'State-pinned DAG wallet address controlled by this holder; verified against proofs[].address to gate holder-initiated transfer/repurchase.',
412
371
  },
413
- address: { type: "object", nullable: true },
414
- acquisitionDate: { type: "string", format: "date" },
372
+ address: { type: 'object', nullable: true },
373
+ acquisitionDate: { type: 'string', format: 'date' },
415
374
  acquisitionMethod: {
416
- type: "string",
375
+ type: 'string',
417
376
  enum: [
418
- "ORIGINAL_ISSUANCE",
419
- "PURCHASE",
420
- "GIFT",
421
- "INHERITANCE",
422
- "STOCK_SPLIT",
423
- "CONVERSION",
424
- "EXERCISE",
377
+ 'ORIGINAL_ISSUANCE',
378
+ 'PURCHASE',
379
+ 'GIFT',
380
+ 'INHERITANCE',
381
+ 'STOCK_SPLIT',
382
+ 'CONVERSION',
383
+ 'EXERCISE',
425
384
  ],
426
385
  },
427
- costBasis: { type: "number", nullable: true },
386
+ costBasis: { type: 'number', nullable: true },
428
387
  },
429
388
  },
430
389
  Restrictions: {
431
- type: "object",
390
+ type: 'object',
432
391
  properties: {
433
- isRestricted: { type: "boolean", default: false },
392
+ isRestricted: { type: 'boolean', default: false },
434
393
  restrictionType: {
435
- type: "array",
394
+ type: 'array',
436
395
  items: {
437
- type: "string",
396
+ type: 'string',
438
397
  enum: [
439
- "RULE_144",
440
- "SECTION_4(a)(2)",
441
- "REG_D",
442
- "REG_S",
443
- "LOCK_UP",
444
- "VESTING",
445
- "RIGHT_OF_FIRST_REFUSAL",
398
+ 'RULE_144',
399
+ 'SECTION_4(a)(2)',
400
+ 'REG_D',
401
+ 'REG_S',
402
+ 'LOCK_UP',
403
+ 'VESTING',
404
+ 'RIGHT_OF_FIRST_REFUSAL',
446
405
  ],
447
406
  },
448
407
  },
449
- restrictionEndDate: { type: "string", format: "date", nullable: true },
408
+ restrictionEndDate: { type: 'string', format: 'date', nullable: true },
450
409
  legends: {
451
- type: "array",
452
- items: { type: "string" },
453
- description: "Legend text on certificates",
410
+ type: 'array',
411
+ items: { type: 'string' },
412
+ description: 'Legend text on certificates',
454
413
  },
455
414
  vestingSchedule: {
456
- type: "object",
415
+ type: 'object',
457
416
  nullable: true,
458
417
  properties: {
459
- vestingStartDate: { type: "string", format: "date" },
460
- totalShares: { type: "integer" },
461
- vestedShares: { type: "integer" },
462
- vestingScheduleRef: { type: "string" },
418
+ vestingStartDate: { type: 'string', format: 'date' },
419
+ totalShares: { type: 'integer' },
420
+ vestedShares: { type: 'integer' },
421
+ vestingScheduleRef: { type: 'string' },
463
422
  },
464
423
  },
465
- lockUpExpiration: { type: "string", format: "date", nullable: true },
424
+ lockUpExpiration: { type: 'string', format: 'date', nullable: true },
466
425
  rofr: {
467
- type: "object",
426
+ type: 'object',
468
427
  nullable: true,
469
- description: "Right of First Refusal",
428
+ description: 'Right of First Refusal',
470
429
  properties: {
471
- holderIds: { type: "array", items: { type: "string" } },
472
- noticePeriodDays: { type: "integer" },
430
+ holderIds: { type: 'array', items: { type: 'string' } },
431
+ noticePeriodDays: { type: 'integer' },
473
432
  },
474
433
  },
475
434
  },
476
435
  },
477
436
  Authorization: {
478
- type: "object",
437
+ type: 'object',
479
438
  nullable: true,
480
- description: "For shares in AUTHORIZED state",
439
+ description: 'For shares in AUTHORIZED state',
481
440
  properties: {
482
- authorizedDate: { type: "string", format: "date" },
483
- charterProvision: { type: "string" },
484
- authorizedShares: { type: "integer" },
441
+ authorizedDate: { type: 'string', format: 'date' },
442
+ charterProvision: { type: 'string' },
443
+ authorizedShares: { type: 'integer' },
485
444
  },
486
445
  },
487
446
  IssuanceDetails: {
488
- type: "object",
447
+ type: 'object',
489
448
  nullable: true,
490
449
  properties: {
491
- boardResolutionRef: { type: "string" },
492
- issuanceAgreementRef: { type: "string" },
450
+ boardResolutionRef: { type: 'string' },
451
+ issuanceAgreementRef: { type: 'string' },
493
452
  consideration: {
494
- type: "object",
453
+ type: 'object',
495
454
  properties: {
496
455
  type: {
497
- type: "string",
498
- enum: [
499
- "CASH",
500
- "PROPERTY",
501
- "SERVICES",
502
- "DEBT_CONVERSION",
503
- "STOCK_CONVERSION",
504
- ],
456
+ type: 'string',
457
+ enum: ['CASH', 'PROPERTY', 'SERVICES', 'DEBT_CONVERSION', 'STOCK_CONVERSION'],
505
458
  },
506
- value: { type: "number" },
507
- description: { type: "string" },
459
+ value: { type: 'number' },
460
+ description: { type: 'string' },
508
461
  },
509
462
  },
510
- exemptionUsed: { type: "string", nullable: true },
511
- accreditedInvestor: { type: "boolean", nullable: true },
463
+ exemptionUsed: { type: 'string', nullable: true },
464
+ accreditedInvestor: { type: 'boolean', nullable: true },
512
465
  },
513
466
  },
514
467
  TransferRecord: {
515
- type: "object",
468
+ type: 'object',
516
469
  properties: {
517
- transferId: { type: "string" },
518
- transferDate: { type: "string", format: "date" },
519
- fromHolderId: { type: "string" },
520
- toHolderId: { type: "string" },
521
- shares: { type: "integer" },
470
+ transferId: { type: 'string' },
471
+ transferDate: { type: 'string', format: 'date' },
472
+ fromHolderId: { type: 'string' },
473
+ toHolderId: { type: 'string' },
474
+ shares: { type: 'integer' },
522
475
  transferType: {
523
- type: "string",
524
- enum: ["SALE", "GIFT", "INHERITANCE", "INTERNAL"],
476
+ type: 'string',
477
+ enum: ['SALE', 'GIFT', 'INHERITANCE', 'INTERNAL'],
525
478
  },
526
- pricePerShare: { type: "number", nullable: true },
527
- transferAgentConfirmation: { type: "string", nullable: true },
479
+ pricePerShare: { type: 'number', nullable: true },
480
+ transferAgentConfirmation: { type: 'string', nullable: true },
528
481
  },
529
482
  },
530
483
  CorporateAction: {
531
- type: "object",
532
- description: "Stock splits, dividends, etc. affecting this lot",
484
+ type: 'object',
485
+ description: 'Stock splits, dividends, etc. affecting this lot',
533
486
  properties: {
534
- actionId: { type: "string" },
487
+ actionId: { type: 'string' },
535
488
  actionType: {
536
- type: "string",
537
- enum: [
538
- "STOCK_SPLIT",
539
- "REVERSE_SPLIT",
540
- "STOCK_DIVIDEND",
541
- "CONVERSION",
542
- "RECLASSIFICATION",
543
- ],
489
+ type: 'string',
490
+ enum: ['STOCK_SPLIT', 'REVERSE_SPLIT', 'STOCK_DIVIDEND', 'CONVERSION', 'RECLASSIFICATION'],
544
491
  },
545
- actionDate: { type: "string", format: "date" },
492
+ actionDate: { type: 'string', format: 'date' },
546
493
  ratio: {
547
- type: "string",
494
+ type: 'string',
548
495
  nullable: true,
549
- description: "e.g., 2:1 for split",
496
+ description: 'e.g., 2:1 for split',
550
497
  },
551
- sharesBeforeAction: { type: "integer" },
552
- sharesAfterAction: { type: "integer" },
553
- resolutionRef: { type: "string" },
498
+ sharesBeforeAction: { type: 'integer' },
499
+ sharesAfterAction: { type: 'integer' },
500
+ resolutionRef: { type: 'string' },
554
501
  },
555
502
  },
556
503
  RetirementDetails: {
557
- type: "object",
504
+ type: 'object',
558
505
  nullable: true,
559
506
  properties: {
560
- retiredDate: { type: "string", format: "date" },
507
+ retiredDate: { type: 'string', format: 'date' },
561
508
  retirementMethod: {
562
- type: "string",
563
- enum: [
564
- "REPURCHASE",
565
- "REDEMPTION",
566
- "CANCELLATION",
567
- "CONVERSION",
568
- ],
509
+ type: 'string',
510
+ enum: ['REPURCHASE', 'REDEMPTION', 'CANCELLATION', 'CONVERSION'],
569
511
  },
570
- repurchasePrice: { type: "number", nullable: true },
571
- boardResolutionRef: { type: "string" },
512
+ repurchasePrice: { type: 'number', nullable: true },
513
+ boardResolutionRef: { type: 'string' },
572
514
  },
573
515
  },
574
516
  },
575
517
  states: {
576
518
  AUTHORIZED: {
577
- id: "AUTHORIZED",
519
+ id: 'AUTHORIZED',
578
520
  isFinal: false,
579
- description: "Shares authorized by charter but not yet issued",
521
+ description: 'Shares authorized by charter but not yet issued',
580
522
  },
581
523
  ISSUED: {
582
- id: "ISSUED",
524
+ id: 'ISSUED',
583
525
  isFinal: false,
584
- description: "Shares issued and held by a shareholder",
526
+ description: 'Shares issued and held by a shareholder',
585
527
  },
586
528
  TREASURY: {
587
- id: "TREASURY",
529
+ id: 'TREASURY',
588
530
  isFinal: false,
589
- description: "Shares repurchased and held by the company",
531
+ description: 'Shares repurchased and held by the company',
590
532
  },
591
533
  TRANSFERRED: {
592
- id: "TRANSFERRED",
534
+ id: 'TRANSFERRED',
593
535
  isFinal: false,
594
- description: "Transitional state during transfer between holders",
536
+ description: 'Transitional state during transfer between holders',
595
537
  },
596
538
  RETIRED: {
597
- id: "RETIRED",
539
+ id: 'RETIRED',
598
540
  isFinal: true,
599
- description: "Shares cancelled and returned to authorized but unissued",
541
+ description: 'Shares cancelled and returned to authorized but unissued',
600
542
  },
601
543
  },
602
- initialState: "AUTHORIZED",
544
+ initialState: 'AUTHORIZED',
603
545
  transitions: [
604
546
  // Initial authorization (creation)
605
547
  {
606
- from: "AUTHORIZED",
607
- to: "AUTHORIZED",
608
- eventName: "authorize_shares",
548
+ from: 'AUTHORIZED',
549
+ to: 'AUTHORIZED',
550
+ eventName: 'authorize_shares',
609
551
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
610
- guard: (0, guards_js_1.signerIsParty)("state.issuerAddress"),
552
+ guard: (0, guards_js_1.signerIsParty)('state.issuerAddress'),
611
553
  effect: {
612
554
  merge: [
613
- { var: "state" },
555
+ { var: 'state' },
614
556
  {
615
- securityId: { var: "event.securityId" },
616
- entityId: { var: "event.entityId" },
617
- shareClass: { var: "event.shareClass" },
618
- shareClassName: { var: "event.shareClassName" },
619
- shareCount: { var: "event.shareCount" },
620
- parValue: { var: "event.parValue" },
557
+ securityId: { var: 'event.securityId' },
558
+ entityId: { var: 'event.entityId' },
559
+ shareClass: { var: 'event.shareClass' },
560
+ shareClassName: { var: 'event.shareClassName' },
561
+ shareCount: { var: 'event.shareCount' },
562
+ parValue: { var: 'event.parValue' },
621
563
  authorization: {
622
- authorizedDate: { var: "event.authorizedDate" },
623
- charterProvision: { var: "event.charterProvision" },
624
- authorizedShares: { var: "event.shareCount" },
564
+ authorizedDate: { var: 'event.authorizedDate' },
565
+ charterProvision: { var: 'event.charterProvision' },
566
+ authorizedShares: { var: 'event.shareCount' },
625
567
  },
626
568
  transferHistory: [],
627
569
  corporateActions: [],
@@ -632,25 +574,25 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
632
574
  // AUTHORIZED -> AUTHORIZED (propose_issue) — phase 1 (#24): bind the executing resolution + parent
633
575
  // entity fibers and record the pending issuance, so issue_shares can read their state next transition.
634
576
  {
635
- from: "AUTHORIZED",
636
- to: "AUTHORIZED",
637
- eventName: "propose_issue",
577
+ from: 'AUTHORIZED',
578
+ to: 'AUTHORIZED',
579
+ eventName: 'propose_issue',
638
580
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
639
- guard: (0, guards_js_1.signerIsParty)("state.issuerAddress"),
581
+ guard: (0, guards_js_1.signerIsParty)('state.issuerAddress'),
640
582
  effect: {
641
583
  merge: [
642
- { var: "state" },
584
+ { var: 'state' },
643
585
  {
644
586
  pendingIssue: {
645
- holderId: { var: "event.holderId" },
646
- ref: { var: "event.boardResolutionRef" },
647
- proposedAt: { var: "$ordinal" },
587
+ holderId: { var: 'event.holderId' },
588
+ ref: { var: 'event.boardResolutionRef' },
589
+ proposedAt: { var: '$ordinal' },
648
590
  },
649
591
  },
650
592
  // bind the resolution fiber so issue_shares can assert its state next transition
651
- (0, effects_js_1.addDependency)({ var: "event.boardResolutionRef" }),
593
+ (0, effects_js_1.addDependency)({ var: 'event.boardResolutionRef' }),
652
594
  // bind the parent entity fiber so issue_shares can assert it is ACTIVE
653
- (0, effects_js_1.addDependency)({ var: "state.entityId" }),
595
+ (0, effects_js_1.addDependency)({ var: 'state.entityId' }),
654
596
  ],
655
597
  },
656
598
  dependencies: [],
@@ -658,66 +600,58 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
658
600
  // AUTHORIZED -> ISSUED — phase 2 (#24): issue once the bound resolution is EXECUTED and the parent
659
601
  // entity is ACTIVE. depInState replaces the dropped object-form dependencies (which never gated).
660
602
  {
661
- from: "AUTHORIZED",
662
- to: "ISSUED",
663
- eventName: "issue_shares",
603
+ from: 'AUTHORIZED',
604
+ to: 'ISSUED',
605
+ eventName: 'issue_shares',
664
606
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
665
607
  guard: {
666
608
  and: [
667
- (0, guards_js_1.signerIsParty)("state.issuerAddress"),
609
+ (0, guards_js_1.signerIsParty)('state.issuerAddress'),
668
610
  // the proposal must target this holder, and its bound resolution must be EXECUTED
669
611
  {
670
- "==": [
671
- { var: "state.pendingIssue.holderId" },
672
- { var: "event.holderId" },
673
- ],
612
+ '==': [{ var: 'state.pendingIssue.holderId' }, { var: 'event.holderId' }],
674
613
  },
675
- (0, guards_js_1.depInState)("state.pendingIssue.ref", "EXECUTED"),
676
- (0, guards_js_1.depInState)("state.entityId", "ACTIVE"),
614
+ (0, guards_js_1.depInState)('state.pendingIssue.ref', 'EXECUTED'),
615
+ (0, guards_js_1.depInState)('state.entityId', 'ACTIVE'),
677
616
  ],
678
617
  },
679
618
  effect: {
680
619
  merge: [
681
- { var: "state" },
620
+ { var: 'state' },
682
621
  {
683
- status: "ISSUED",
684
- form: { var: "event.form" },
685
- certificateNumber: { var: "event.certificateNumber" },
686
- issuanceDate: { var: "event.issuanceDate" },
687
- issuancePrice: { var: "event.issuancePrice" },
622
+ status: 'ISSUED',
623
+ form: { var: 'event.form' },
624
+ certificateNumber: { var: 'event.certificateNumber' },
625
+ issuanceDate: { var: 'event.issuanceDate' },
626
+ issuancePrice: { var: 'event.issuancePrice' },
688
627
  holder: {
689
- holderId: { var: "event.holderId" },
690
- holderType: { var: "event.holderType" },
691
- name: { var: "event.holderName" },
692
- walletAddress: { var: "event.holderWallet" },
693
- address: { var: "event.address" },
694
- acquisitionDate: { var: "event.issuanceDate" },
695
- acquisitionMethod: "ORIGINAL_ISSUANCE",
628
+ holderId: { var: 'event.holderId' },
629
+ holderType: { var: 'event.holderType' },
630
+ name: { var: 'event.holderName' },
631
+ walletAddress: { var: 'event.holderWallet' },
632
+ address: { var: 'event.address' },
633
+ acquisitionDate: { var: 'event.issuanceDate' },
634
+ acquisitionMethod: 'ORIGINAL_ISSUANCE',
696
635
  costBasis: {
697
- "*": [
698
- { var: "event.issuancePrice" },
699
- { var: "state.shareCount" },
700
- ],
636
+ '*': [{ var: 'event.issuancePrice' }, { var: 'state.shareCount' }],
701
637
  },
702
638
  },
703
639
  restrictions: {
704
- isRestricted: { var: "event.isRestricted" },
705
- restrictionType: { var: "event.restrictionType" },
706
- legends: { var: "event.legends" },
640
+ isRestricted: { var: 'event.isRestricted' },
641
+ restrictionType: { var: 'event.restrictionType' },
642
+ legends: { var: 'event.legends' },
707
643
  },
708
644
  issuanceDetails: {
709
- boardResolutionRef: { var: "state.pendingIssue.ref" },
710
- consideration: { var: "event.consideration" },
711
- exemptionUsed: { var: "event.exemptionUsed" },
712
- accreditedInvestor: { var: "event.accreditedInvestor" },
645
+ boardResolutionRef: { var: 'state.pendingIssue.ref' },
646
+ consideration: { var: 'event.consideration' },
647
+ exemptionUsed: { var: 'event.exemptionUsed' },
648
+ accreditedInvestor: { var: 'event.accreditedInvestor' },
713
649
  },
714
650
  // clear the consumed proposal
715
651
  pendingIssue: null,
716
652
  },
717
653
  {
718
- _emit: [
719
- { name: "SHARES_ISSUED", data: { var: "event" }, destination: "external" },
720
- ],
654
+ _emit: [{ name: 'SHARES_ISSUED', data: { var: 'event' }, destination: 'external' }],
721
655
  },
722
656
  ],
723
657
  },
@@ -725,94 +659,87 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
725
659
  },
726
660
  // ISSUED -> TRANSFERRED
727
661
  {
728
- from: "ISSUED",
729
- to: "TRANSFERRED",
730
- eventName: "initiate_transfer",
662
+ from: 'ISSUED',
663
+ to: 'TRANSFERRED',
664
+ eventName: 'initiate_transfer',
731
665
  guard: {
732
666
  and: [
733
667
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
734
- (0, guards_js_1.signerIsParty)("state.holder.walletAddress"),
668
+ (0, guards_js_1.signerIsParty)('state.holder.walletAddress'),
735
669
  {
736
670
  or: [
737
- { "==": [{ var: "state.restrictions.isRestricted" }, false] },
671
+ { '==': [{ var: 'state.restrictions.isRestricted' }, false] },
738
672
  {
739
- "==": [{ var: "state.restrictions.restrictionEndDate" }, null],
673
+ '==': [{ var: 'state.restrictions.restrictionEndDate' }, null],
740
674
  },
741
675
  {
742
- ">=": [
743
- { var: "$ordinal" },
744
- { var: "state.restrictions.restrictionEndDate" },
745
- ],
676
+ '>=': [{ var: '$ordinal' }, { var: 'state.restrictions.restrictionEndDate' }],
746
677
  },
747
678
  ],
748
679
  },
749
- { "==": [{ var: "state.restrictions.rofr" }, null] },
680
+ { '==': [{ var: 'state.restrictions.rofr' }, null] },
750
681
  ],
751
682
  },
752
683
  effect: {
753
684
  merge: [
754
- { var: "state" },
685
+ { var: 'state' },
755
686
  {
756
- status: "TRANSFERRED",
687
+ status: 'TRANSFERRED',
757
688
  transferHistory: {
758
689
  merge: [
759
- { var: "state.transferHistory" },
690
+ { var: 'state.transferHistory' },
760
691
  [
761
692
  {
762
- transferId: { var: "event.transferId" },
763
- transferDate: { var: "event.transferDate" },
764
- fromHolderId: { var: "state.holder.holderId" },
765
- toHolderId: { var: "event.toHolderId" },
766
- shares: { var: "state.shareCount" },
767
- transferType: { var: "event.transferType" },
768
- pricePerShare: { var: "event.pricePerShare" },
693
+ transferId: { var: 'event.transferId' },
694
+ transferDate: { var: 'event.transferDate' },
695
+ fromHolderId: { var: 'state.holder.holderId' },
696
+ toHolderId: { var: 'event.toHolderId' },
697
+ shares: { var: 'state.shareCount' },
698
+ transferType: { var: 'event.transferType' },
699
+ pricePerShare: { var: 'event.pricePerShare' },
769
700
  },
770
701
  ],
771
702
  ],
772
703
  },
773
704
  },
774
705
  {
775
- _emit: [
776
- { name: "TRANSFER_INITIATED", data: { var: "event" }, destination: "external" },
777
- ],
706
+ _emit: [{ name: 'TRANSFER_INITIATED', data: { var: 'event' }, destination: 'external' }],
778
707
  },
779
708
  ],
780
709
  },
781
710
  },
782
711
  // TRANSFERRED -> ISSUED
783
712
  {
784
- from: "TRANSFERRED",
785
- to: "ISSUED",
786
- eventName: "complete_transfer",
713
+ from: 'TRANSFERRED',
714
+ to: 'ISSUED',
715
+ eventName: 'complete_transfer',
787
716
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
788
- guard: (0, guards_js_1.signerIsParty)("state.issuerAddress"),
717
+ guard: (0, guards_js_1.signerIsParty)('state.issuerAddress'),
789
718
  effect: {
790
719
  merge: [
791
- { var: "state" },
720
+ { var: 'state' },
792
721
  {
793
- status: "ISSUED",
722
+ status: 'ISSUED',
794
723
  holder: {
795
- holderId: { var: "event.toHolderId" },
796
- holderType: { var: "event.toHolderType" },
797
- name: { var: "event.toHolderName" },
798
- walletAddress: { var: "event.toHolderWallet" },
799
- address: { var: "event.toAddress" },
800
- acquisitionDate: { var: "event.completedDate" },
801
- acquisitionMethod: "PURCHASE",
802
- costBasis: { var: "event.costBasis" },
724
+ holderId: { var: 'event.toHolderId' },
725
+ holderType: { var: 'event.toHolderType' },
726
+ name: { var: 'event.toHolderName' },
727
+ walletAddress: { var: 'event.toHolderWallet' },
728
+ address: { var: 'event.toAddress' },
729
+ acquisitionDate: { var: 'event.completedDate' },
730
+ acquisitionMethod: 'PURCHASE',
731
+ costBasis: { var: 'event.costBasis' },
803
732
  },
804
733
  certificateNumber: {
805
734
  if: [
806
- { "!=": [{ var: "event.newCertificateNumber" }, null] },
807
- { var: "event.newCertificateNumber" },
808
- { var: "state.certificateNumber" },
735
+ { '!=': [{ var: 'event.newCertificateNumber' }, null] },
736
+ { var: 'event.newCertificateNumber' },
737
+ { var: 'state.certificateNumber' },
809
738
  ],
810
739
  },
811
740
  },
812
741
  {
813
- _emit: [
814
- { name: "TRANSFER_COMPLETED", data: { var: "event" }, destination: "external" },
815
- ],
742
+ _emit: [{ name: 'TRANSFER_COMPLETED', data: { var: 'event' }, destination: 'external' }],
816
743
  },
817
744
  ],
818
745
  },
@@ -820,89 +747,81 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
820
747
  // ISSUED -> ISSUED (propose_repurchase) — phase 1 (#24): bind the executing resolution fiber and
821
748
  // record the pending repurchase, so repurchase can read the resolution's state next transition.
822
749
  {
823
- from: "ISSUED",
824
- to: "ISSUED",
825
- eventName: "propose_repurchase",
750
+ from: 'ISSUED',
751
+ to: 'ISSUED',
752
+ eventName: 'propose_repurchase',
826
753
  // authority gate — the selling holder must sign; an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
827
- guard: (0, guards_js_1.signerIsParty)("state.holder.walletAddress"),
754
+ guard: (0, guards_js_1.signerIsParty)('state.holder.walletAddress'),
828
755
  effect: {
829
756
  merge: [
830
- { var: "state" },
757
+ { var: 'state' },
831
758
  {
832
759
  pendingRepurchase: {
833
- repurchaseDate: { var: "event.repurchaseDate" },
834
- ref: { var: "event.boardResolutionRef" },
835
- proposedAt: { var: "$ordinal" },
760
+ repurchaseDate: { var: 'event.repurchaseDate' },
761
+ ref: { var: 'event.boardResolutionRef' },
762
+ proposedAt: { var: '$ordinal' },
836
763
  },
837
764
  },
838
765
  // bind the resolution fiber so repurchase can assert its state next transition
839
- (0, effects_js_1.addDependency)({ var: "event.boardResolutionRef" }),
766
+ (0, effects_js_1.addDependency)({ var: 'event.boardResolutionRef' }),
840
767
  ],
841
768
  },
842
769
  dependencies: [],
843
770
  },
844
771
  // ISSUED -> TREASURY — phase 2 (#24): repurchase once the bound resolution is EXECUTED.
845
772
  {
846
- from: "ISSUED",
847
- to: "TREASURY",
848
- eventName: "repurchase",
773
+ from: 'ISSUED',
774
+ to: 'TREASURY',
775
+ eventName: 'repurchase',
849
776
  // authority gate — the selling holder must sign; an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
850
777
  guard: {
851
778
  and: [
852
- (0, guards_js_1.signerIsParty)("state.holder.walletAddress"),
779
+ (0, guards_js_1.signerIsParty)('state.holder.walletAddress'),
853
780
  // the proposal must match this repurchase, and its bound resolution must be EXECUTED
854
781
  {
855
- "==": [
856
- { var: "state.pendingRepurchase.repurchaseDate" },
857
- { var: "event.repurchaseDate" },
858
- ],
782
+ '==': [{ var: 'state.pendingRepurchase.repurchaseDate' }, { var: 'event.repurchaseDate' }],
859
783
  },
860
- (0, guards_js_1.depInState)("state.pendingRepurchase.ref", "EXECUTED"),
784
+ (0, guards_js_1.depInState)('state.pendingRepurchase.ref', 'EXECUTED'),
861
785
  ],
862
786
  },
863
787
  effect: {
864
788
  merge: [
865
- { var: "state" },
789
+ { var: 'state' },
866
790
  {
867
- status: "TREASURY",
791
+ status: 'TREASURY',
868
792
  transferHistory: {
869
793
  merge: [
870
- { var: "state.transferHistory" },
794
+ { var: 'state.transferHistory' },
871
795
  [
872
796
  {
873
797
  transferId: {
874
- cat: ["REPURCHASE-", { var: "event.repurchaseDate" }],
798
+ cat: ['REPURCHASE-', { var: 'event.repurchaseDate' }],
875
799
  },
876
- transferDate: { var: "event.repurchaseDate" },
877
- fromHolderId: { var: "state.holder.holderId" },
878
- toHolderId: "TREASURY",
879
- shares: { var: "state.shareCount" },
880
- transferType: "INTERNAL",
881
- pricePerShare: { var: "event.pricePerShare" },
800
+ transferDate: { var: 'event.repurchaseDate' },
801
+ fromHolderId: { var: 'state.holder.holderId' },
802
+ toHolderId: 'TREASURY',
803
+ shares: { var: 'state.shareCount' },
804
+ transferType: 'INTERNAL',
805
+ pricePerShare: { var: 'event.pricePerShare' },
882
806
  },
883
807
  ],
884
808
  ],
885
809
  },
886
810
  holder: {
887
- holderId: "TREASURY",
888
- holderType: "TREASURY",
889
- name: "Treasury Stock",
890
- acquisitionDate: { var: "event.repurchaseDate" },
891
- acquisitionMethod: "PURCHASE",
811
+ holderId: 'TREASURY',
812
+ holderType: 'TREASURY',
813
+ name: 'Treasury Stock',
814
+ acquisitionDate: { var: 'event.repurchaseDate' },
815
+ acquisitionMethod: 'PURCHASE',
892
816
  costBasis: {
893
- "*": [
894
- { var: "event.pricePerShare" },
895
- { var: "state.shareCount" },
896
- ],
817
+ '*': [{ var: 'event.pricePerShare' }, { var: 'state.shareCount' }],
897
818
  },
898
819
  },
899
820
  // clear the consumed proposal
900
821
  pendingRepurchase: null,
901
822
  },
902
823
  {
903
- _emit: [
904
- { name: "SHARES_REPURCHASED", data: { var: "event" }, destination: "external" },
905
- ],
824
+ _emit: [{ name: 'SHARES_REPURCHASED', data: { var: 'event' }, destination: 'external' }],
906
825
  },
907
826
  ],
908
827
  },
@@ -911,73 +830,65 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
911
830
  // TREASURY -> TREASURY (propose_reissue) — phase 1 (#24): bind the executing resolution fiber and
912
831
  // record the pending reissue, so reissue_from_treasury can read the resolution's state next transition.
913
832
  {
914
- from: "TREASURY",
915
- to: "TREASURY",
916
- eventName: "propose_reissue",
833
+ from: 'TREASURY',
834
+ to: 'TREASURY',
835
+ eventName: 'propose_reissue',
917
836
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
918
- guard: (0, guards_js_1.signerIsParty)("state.issuerAddress"),
837
+ guard: (0, guards_js_1.signerIsParty)('state.issuerAddress'),
919
838
  effect: {
920
839
  merge: [
921
- { var: "state" },
840
+ { var: 'state' },
922
841
  {
923
842
  pendingReissue: {
924
- holderId: { var: "event.holderId" },
925
- ref: { var: "event.boardResolutionRef" },
926
- proposedAt: { var: "$ordinal" },
843
+ holderId: { var: 'event.holderId' },
844
+ ref: { var: 'event.boardResolutionRef' },
845
+ proposedAt: { var: '$ordinal' },
927
846
  },
928
847
  },
929
848
  // bind the resolution fiber so reissue_from_treasury can assert its state next transition
930
- (0, effects_js_1.addDependency)({ var: "event.boardResolutionRef" }),
849
+ (0, effects_js_1.addDependency)({ var: 'event.boardResolutionRef' }),
931
850
  ],
932
851
  },
933
852
  dependencies: [],
934
853
  },
935
854
  // TREASURY -> ISSUED — phase 2 (#24): reissue once the bound resolution is EXECUTED.
936
855
  {
937
- from: "TREASURY",
938
- to: "ISSUED",
939
- eventName: "reissue_from_treasury",
856
+ from: 'TREASURY',
857
+ to: 'ISSUED',
858
+ eventName: 'reissue_from_treasury',
940
859
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
941
860
  guard: {
942
861
  and: [
943
- (0, guards_js_1.signerIsParty)("state.issuerAddress"),
862
+ (0, guards_js_1.signerIsParty)('state.issuerAddress'),
944
863
  // the proposal must target this holder, and its bound resolution must be EXECUTED
945
864
  {
946
- "==": [
947
- { var: "state.pendingReissue.holderId" },
948
- { var: "event.holderId" },
949
- ],
865
+ '==': [{ var: 'state.pendingReissue.holderId' }, { var: 'event.holderId' }],
950
866
  },
951
- (0, guards_js_1.depInState)("state.pendingReissue.ref", "EXECUTED"),
867
+ (0, guards_js_1.depInState)('state.pendingReissue.ref', 'EXECUTED'),
952
868
  ],
953
869
  },
954
870
  effect: {
955
871
  merge: [
956
- { var: "state" },
872
+ { var: 'state' },
957
873
  {
958
- status: "ISSUED",
874
+ status: 'ISSUED',
959
875
  holder: {
960
- holderId: { var: "event.holderId" },
961
- holderType: { var: "event.holderType" },
962
- name: { var: "event.holderName" },
963
- walletAddress: { var: "event.holderWallet" },
964
- address: { var: "event.address" },
965
- acquisitionDate: { var: "event.reissueDate" },
966
- acquisitionMethod: "PURCHASE",
876
+ holderId: { var: 'event.holderId' },
877
+ holderType: { var: 'event.holderType' },
878
+ name: { var: 'event.holderName' },
879
+ walletAddress: { var: 'event.holderWallet' },
880
+ address: { var: 'event.address' },
881
+ acquisitionDate: { var: 'event.reissueDate' },
882
+ acquisitionMethod: 'PURCHASE',
967
883
  costBasis: {
968
- "*": [
969
- { var: "event.issuancePrice" },
970
- { var: "state.shareCount" },
971
- ],
884
+ '*': [{ var: 'event.issuancePrice' }, { var: 'state.shareCount' }],
972
885
  },
973
886
  },
974
887
  // clear the consumed proposal
975
888
  pendingReissue: null,
976
889
  },
977
890
  {
978
- _emit: [
979
- { name: "TREASURY_SHARES_REISSUED", data: { var: "event" }, destination: "external" },
980
- ],
891
+ _emit: [{ name: 'TREASURY_SHARES_REISSUED', data: { var: 'event' }, destination: 'external' }],
981
892
  },
982
893
  ],
983
894
  },
@@ -986,23 +897,23 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
986
897
  // ISSUED -> ISSUED (propose_retire) — phase 1 (#24): bind the executing resolution fiber and record
987
898
  // the pending retirement, so the retire transition can read the resolution's state next transition.
988
899
  {
989
- from: "ISSUED",
990
- to: "ISSUED",
991
- eventName: "propose_retire",
900
+ from: 'ISSUED',
901
+ to: 'ISSUED',
902
+ eventName: 'propose_retire',
992
903
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
993
- guard: (0, guards_js_1.signerIsParty)("state.issuerAddress"),
904
+ guard: (0, guards_js_1.signerIsParty)('state.issuerAddress'),
994
905
  effect: {
995
906
  merge: [
996
- { var: "state" },
907
+ { var: 'state' },
997
908
  {
998
909
  pendingRetire: {
999
- retiredDate: { var: "event.retiredDate" },
1000
- ref: { var: "event.boardResolutionRef" },
1001
- proposedAt: { var: "$ordinal" },
910
+ retiredDate: { var: 'event.retiredDate' },
911
+ ref: { var: 'event.boardResolutionRef' },
912
+ proposedAt: { var: '$ordinal' },
1002
913
  },
1003
914
  },
1004
915
  // bind the resolution fiber so retire can assert its state next transition
1005
- (0, effects_js_1.addDependency)({ var: "event.boardResolutionRef" }),
916
+ (0, effects_js_1.addDependency)({ var: 'event.boardResolutionRef' }),
1006
917
  ],
1007
918
  },
1008
919
  dependencies: [],
@@ -1010,65 +921,60 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
1010
921
  // TREASURY -> TREASURY (propose_retire) — phase 1 (#24): the treasury-side counterpart, binding the
1011
922
  // executing resolution fiber and recording the pending retirement before retire executes.
1012
923
  {
1013
- from: "TREASURY",
1014
- to: "TREASURY",
1015
- eventName: "propose_retire",
924
+ from: 'TREASURY',
925
+ to: 'TREASURY',
926
+ eventName: 'propose_retire',
1016
927
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
1017
- guard: (0, guards_js_1.signerIsParty)("state.issuerAddress"),
928
+ guard: (0, guards_js_1.signerIsParty)('state.issuerAddress'),
1018
929
  effect: {
1019
930
  merge: [
1020
- { var: "state" },
931
+ { var: 'state' },
1021
932
  {
1022
933
  pendingRetire: {
1023
- retiredDate: { var: "event.retiredDate" },
1024
- ref: { var: "event.boardResolutionRef" },
1025
- proposedAt: { var: "$ordinal" },
934
+ retiredDate: { var: 'event.retiredDate' },
935
+ ref: { var: 'event.boardResolutionRef' },
936
+ proposedAt: { var: '$ordinal' },
1026
937
  },
1027
938
  },
1028
939
  // bind the resolution fiber so retire can assert its state next transition
1029
- (0, effects_js_1.addDependency)({ var: "event.boardResolutionRef" }),
940
+ (0, effects_js_1.addDependency)({ var: 'event.boardResolutionRef' }),
1030
941
  ],
1031
942
  },
1032
943
  dependencies: [],
1033
944
  },
1034
945
  // ISSUED -> RETIRED — phase 2 (#24): retire once the bound resolution is EXECUTED.
1035
946
  {
1036
- from: "ISSUED",
1037
- to: "RETIRED",
1038
- eventName: "retire",
947
+ from: 'ISSUED',
948
+ to: 'RETIRED',
949
+ eventName: 'retire',
1039
950
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
1040
951
  guard: {
1041
952
  and: [
1042
- (0, guards_js_1.signerIsParty)("state.issuerAddress"),
953
+ (0, guards_js_1.signerIsParty)('state.issuerAddress'),
1043
954
  // the proposal must match this retirement, and its bound resolution must be EXECUTED
1044
955
  {
1045
- "==": [
1046
- { var: "state.pendingRetire.retiredDate" },
1047
- { var: "event.retiredDate" },
1048
- ],
956
+ '==': [{ var: 'state.pendingRetire.retiredDate' }, { var: 'event.retiredDate' }],
1049
957
  },
1050
- (0, guards_js_1.depInState)("state.pendingRetire.ref", "EXECUTED"),
958
+ (0, guards_js_1.depInState)('state.pendingRetire.ref', 'EXECUTED'),
1051
959
  ],
1052
960
  },
1053
961
  effect: {
1054
962
  merge: [
1055
- { var: "state" },
963
+ { var: 'state' },
1056
964
  {
1057
- status: "RETIRED",
965
+ status: 'RETIRED',
1058
966
  retirementDetails: {
1059
- retiredDate: { var: "event.retiredDate" },
1060
- retirementMethod: { var: "event.retirementMethod" },
1061
- repurchasePrice: { var: "event.repurchasePrice" },
1062
- boardResolutionRef: { var: "state.pendingRetire.ref" },
967
+ retiredDate: { var: 'event.retiredDate' },
968
+ retirementMethod: { var: 'event.retirementMethod' },
969
+ repurchasePrice: { var: 'event.repurchasePrice' },
970
+ boardResolutionRef: { var: 'state.pendingRetire.ref' },
1063
971
  },
1064
972
  holder: null,
1065
973
  // clear the consumed proposal
1066
974
  pendingRetire: null,
1067
975
  },
1068
976
  {
1069
- _emit: [
1070
- { name: "SHARES_RETIRED", data: { var: "event" }, destination: "external" },
1071
- ],
977
+ _emit: [{ name: 'SHARES_RETIRED', data: { var: 'event' }, destination: 'external' }],
1072
978
  },
1073
979
  ],
1074
980
  },
@@ -1076,42 +982,37 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
1076
982
  },
1077
983
  // TREASURY -> RETIRED — phase 2 (#24): retire once the bound resolution is EXECUTED.
1078
984
  {
1079
- from: "TREASURY",
1080
- to: "RETIRED",
1081
- eventName: "retire",
985
+ from: 'TREASURY',
986
+ to: 'RETIRED',
987
+ eventName: 'retire',
1082
988
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
1083
989
  guard: {
1084
990
  and: [
1085
- (0, guards_js_1.signerIsParty)("state.issuerAddress"),
991
+ (0, guards_js_1.signerIsParty)('state.issuerAddress'),
1086
992
  // the proposal must match this retirement, and its bound resolution must be EXECUTED
1087
993
  {
1088
- "==": [
1089
- { var: "state.pendingRetire.retiredDate" },
1090
- { var: "event.retiredDate" },
1091
- ],
994
+ '==': [{ var: 'state.pendingRetire.retiredDate' }, { var: 'event.retiredDate' }],
1092
995
  },
1093
- (0, guards_js_1.depInState)("state.pendingRetire.ref", "EXECUTED"),
996
+ (0, guards_js_1.depInState)('state.pendingRetire.ref', 'EXECUTED'),
1094
997
  ],
1095
998
  },
1096
999
  effect: {
1097
1000
  merge: [
1098
- { var: "state" },
1001
+ { var: 'state' },
1099
1002
  {
1100
- status: "RETIRED",
1003
+ status: 'RETIRED',
1101
1004
  retirementDetails: {
1102
- retiredDate: { var: "event.retiredDate" },
1103
- retirementMethod: { var: "event.retirementMethod" },
1104
- repurchasePrice: { var: "event.repurchasePrice" },
1105
- boardResolutionRef: { var: "state.pendingRetire.ref" },
1005
+ retiredDate: { var: 'event.retiredDate' },
1006
+ retirementMethod: { var: 'event.retirementMethod' },
1007
+ repurchasePrice: { var: 'event.repurchasePrice' },
1008
+ boardResolutionRef: { var: 'state.pendingRetire.ref' },
1106
1009
  },
1107
1010
  holder: null,
1108
1011
  // clear the consumed proposal
1109
1012
  pendingRetire: null,
1110
1013
  },
1111
1014
  {
1112
- _emit: [
1113
- { name: "SHARES_RETIRED", data: { var: "event" }, destination: "external" },
1114
- ],
1015
+ _emit: [{ name: 'SHARES_RETIRED', data: { var: 'event' }, destination: 'external' }],
1115
1016
  },
1116
1017
  ],
1117
1018
  },
@@ -1119,37 +1020,35 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
1119
1020
  },
1120
1021
  // ISSUED -> ISSUED (stock_split)
1121
1022
  {
1122
- from: "ISSUED",
1123
- to: "ISSUED",
1124
- eventName: "stock_split",
1023
+ from: 'ISSUED',
1024
+ to: 'ISSUED',
1025
+ eventName: 'stock_split',
1125
1026
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
1126
- guard: (0, guards_js_1.signerIsParty)("state.issuerAddress"),
1027
+ guard: (0, guards_js_1.signerIsParty)('state.issuerAddress'),
1127
1028
  effect: {
1128
1029
  merge: [
1129
- { var: "state" },
1030
+ { var: 'state' },
1130
1031
  {
1131
1032
  corporateActions: {
1132
1033
  merge: [
1133
- { var: "state.corporateActions" },
1034
+ { var: 'state.corporateActions' },
1134
1035
  [
1135
1036
  {
1136
- actionId: { var: "event.actionId" },
1137
- actionType: "STOCK_SPLIT",
1138
- actionDate: { var: "event.effectiveDate" },
1139
- ratio: { var: "event.splitRatio" },
1140
- sharesBeforeAction: { var: "state.shareCount" },
1141
- sharesAfterAction: { var: "event.newShareCount" },
1142
- resolutionRef: { var: "event.resolutionRef" },
1037
+ actionId: { var: 'event.actionId' },
1038
+ actionType: 'STOCK_SPLIT',
1039
+ actionDate: { var: 'event.effectiveDate' },
1040
+ ratio: { var: 'event.splitRatio' },
1041
+ sharesBeforeAction: { var: 'state.shareCount' },
1042
+ sharesAfterAction: { var: 'event.newShareCount' },
1043
+ resolutionRef: { var: 'event.resolutionRef' },
1143
1044
  },
1144
1045
  ],
1145
1046
  ],
1146
1047
  },
1147
- shareCount: { var: "event.newShareCount" },
1048
+ shareCount: { var: 'event.newShareCount' },
1148
1049
  },
1149
1050
  {
1150
- _emit: [
1151
- { name: "STOCK_SPLIT_APPLIED", data: { var: "event" }, destination: "external" },
1152
- ],
1051
+ _emit: [{ name: 'STOCK_SPLIT_APPLIED', data: { var: 'event' }, destination: 'external' }],
1153
1052
  },
1154
1053
  ],
1155
1054
  },
@@ -1157,23 +1056,23 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
1157
1056
  // ISSUED -> ISSUED (propose_dividend) — phase 1 (#24): bind the executing resolution fiber and record
1158
1057
  // the pending declaration, so declare_dividend can read the resolution's state next transition.
1159
1058
  {
1160
- from: "ISSUED",
1161
- to: "ISSUED",
1162
- eventName: "propose_dividend",
1059
+ from: 'ISSUED',
1060
+ to: 'ISSUED',
1061
+ eventName: 'propose_dividend',
1163
1062
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
1164
- guard: (0, guards_js_1.signerIsParty)("state.issuerAddress"),
1063
+ guard: (0, guards_js_1.signerIsParty)('state.issuerAddress'),
1165
1064
  effect: {
1166
1065
  merge: [
1167
- { var: "state" },
1066
+ { var: 'state' },
1168
1067
  {
1169
1068
  pendingDividend: {
1170
- actionId: { var: "event.actionId" },
1171
- ref: { var: "event.resolutionRef" },
1172
- proposedAt: { var: "$ordinal" },
1069
+ actionId: { var: 'event.actionId' },
1070
+ ref: { var: 'event.resolutionRef' },
1071
+ proposedAt: { var: '$ordinal' },
1173
1072
  },
1174
1073
  },
1175
1074
  // bind the resolution fiber so declare_dividend can assert its state next transition
1176
- (0, effects_js_1.addDependency)({ var: "event.resolutionRef" }),
1075
+ (0, effects_js_1.addDependency)({ var: 'event.resolutionRef' }),
1177
1076
  ],
1178
1077
  },
1179
1078
  dependencies: [],
@@ -1181,55 +1080,46 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
1181
1080
  // ISSUED -> ISSUED (declare_dividend) — phase 2 (#24): stock dividend handling once the bound
1182
1081
  // resolution is EXECUTED.
1183
1082
  {
1184
- from: "ISSUED",
1185
- to: "ISSUED",
1186
- eventName: "declare_dividend",
1083
+ from: 'ISSUED',
1084
+ to: 'ISSUED',
1085
+ eventName: 'declare_dividend',
1187
1086
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
1188
1087
  guard: {
1189
1088
  and: [
1190
- (0, guards_js_1.signerIsParty)("state.issuerAddress"),
1089
+ (0, guards_js_1.signerIsParty)('state.issuerAddress'),
1191
1090
  // the proposal must target this action, and its bound resolution must be EXECUTED
1192
1091
  {
1193
- "==": [
1194
- { var: "state.pendingDividend.actionId" },
1195
- { var: "event.actionId" },
1196
- ],
1092
+ '==': [{ var: 'state.pendingDividend.actionId' }, { var: 'event.actionId' }],
1197
1093
  },
1198
- (0, guards_js_1.depInState)("state.pendingDividend.ref", "EXECUTED"),
1094
+ (0, guards_js_1.depInState)('state.pendingDividend.ref', 'EXECUTED'),
1199
1095
  ],
1200
1096
  },
1201
1097
  effect: {
1202
1098
  if: [
1203
- { "==": [{ var: "event.dividendType" }, "STOCK"] },
1099
+ { '==': [{ var: 'event.dividendType' }, 'STOCK'] },
1204
1100
  {
1205
1101
  merge: [
1206
- { var: "state" },
1102
+ { var: 'state' },
1207
1103
  {
1208
1104
  corporateActions: {
1209
1105
  merge: [
1210
- { var: "state.corporateActions" },
1106
+ { var: 'state.corporateActions' },
1211
1107
  [
1212
1108
  {
1213
- actionId: { var: "event.actionId" },
1214
- actionType: "STOCK_DIVIDEND",
1215
- actionDate: { var: "event.paymentDate" },
1216
- sharesBeforeAction: { var: "state.shareCount" },
1109
+ actionId: { var: 'event.actionId' },
1110
+ actionType: 'STOCK_DIVIDEND',
1111
+ actionDate: { var: 'event.paymentDate' },
1112
+ sharesBeforeAction: { var: 'state.shareCount' },
1217
1113
  sharesAfterAction: {
1218
- "+": [
1219
- { var: "state.shareCount" },
1220
- { var: "event.stockShares" },
1221
- ],
1114
+ '+': [{ var: 'state.shareCount' }, { var: 'event.stockShares' }],
1222
1115
  },
1223
- resolutionRef: { var: "state.pendingDividend.ref" },
1116
+ resolutionRef: { var: 'state.pendingDividend.ref' },
1224
1117
  },
1225
1118
  ],
1226
1119
  ],
1227
1120
  },
1228
1121
  shareCount: {
1229
- "+": [
1230
- { var: "state.shareCount" },
1231
- { var: "event.stockShares" },
1232
- ],
1122
+ '+': [{ var: 'state.shareCount' }, { var: 'event.stockShares' }],
1233
1123
  },
1234
1124
  // clear the consumed proposal
1235
1125
  pendingDividend: null,
@@ -1238,7 +1128,7 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
1238
1128
  },
1239
1129
  {
1240
1130
  merge: [
1241
- { var: "state" },
1131
+ { var: 'state' },
1242
1132
  // cash dividend: no share change, but still clear the consumed proposal
1243
1133
  { pendingDividend: null },
1244
1134
  ],
@@ -1249,41 +1139,38 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
1249
1139
  },
1250
1140
  // ISSUED -> ISSUED (remove_restriction)
1251
1141
  {
1252
- from: "ISSUED",
1253
- to: "ISSUED",
1254
- eventName: "remove_restriction",
1142
+ from: 'ISSUED',
1143
+ to: 'ISSUED',
1144
+ eventName: 'remove_restriction',
1255
1145
  // authority gate — an identity role attestation (ISSUER/BOARD_MEMBER/...) layers on additively when the identity registry lands (docs/design/app-hardening-identity-integration.md §4.2)
1256
- guard: (0, guards_js_1.signerIsParty)("state.issuerAddress"),
1146
+ guard: (0, guards_js_1.signerIsParty)('state.issuerAddress'),
1257
1147
  effect: {
1258
1148
  merge: [
1259
- { var: "state" },
1149
+ { var: 'state' },
1260
1150
  {
1261
1151
  restrictions: {
1262
1152
  merge: [
1263
- { var: "state.restrictions" },
1153
+ { var: 'state.restrictions' },
1264
1154
  {
1265
1155
  restrictionType: {
1266
1156
  filter: [
1267
- { var: "state.restrictions.restrictionType" },
1268
- { "!=": [{ var: "" }, { var: "event.restrictionType" }] },
1157
+ { var: 'state.restrictions.restrictionType' },
1158
+ { '!=': [{ var: '' }, { var: 'event.restrictionType' }] },
1269
1159
  ],
1270
1160
  },
1271
1161
  isRestricted: {
1272
- ">": [
1162
+ '>': [
1273
1163
  {
1274
1164
  reduce: [
1275
1165
  {
1276
1166
  filter: [
1277
- { var: "state.restrictions.restrictionType" },
1167
+ { var: 'state.restrictions.restrictionType' },
1278
1168
  {
1279
- "!=": [
1280
- { var: "" },
1281
- { var: "event.restrictionType" },
1282
- ],
1169
+ '!=': [{ var: '' }, { var: 'event.restrictionType' }],
1283
1170
  },
1284
1171
  ],
1285
1172
  },
1286
- { "+": [{ var: "accumulator" }, 1] },
1173
+ { '+': [{ var: 'accumulator' }, 1] },
1287
1174
  0,
1288
1175
  ],
1289
1176
  },
@@ -1295,9 +1182,7 @@ exports.corpSecuritiesDef = (0, fiber_app_js_1.defineFiberApp)({
1295
1182
  },
1296
1183
  },
1297
1184
  {
1298
- _emit: [
1299
- { name: "RESTRICTION_REMOVED", data: { var: "event" }, destination: "external" },
1300
- ],
1185
+ _emit: [{ name: 'RESTRICTION_REMOVED', data: { var: 'event' }, destination: 'external' }],
1301
1186
  },
1302
1187
  ],
1303
1188
  },