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