@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,26 @@
1
+ /**
2
+ * Markets Application
3
+ *
4
+ * Types and utilities for the Markets system on OttoChain.
5
+ * Supports prediction markets, auctions, crowdfunding, and group buys.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import {
10
+ * MarketState,
11
+ * MarketType,
12
+ * calculatePayout,
13
+ * DEFAULT_MARKET_CONFIG
14
+ * } from '@ottochain/sdk/apps/markets';
15
+ *
16
+ * // Calculate payout for a winning prediction
17
+ * const payout = calculatePayout({
18
+ * winningPool: 1000n,
19
+ * losingPool: 500n,
20
+ * userCommitment: 100n,
21
+ * });
22
+ * ```
23
+ *
24
+ * @packageDocumentation
25
+ */
26
+ export * from './types.js';
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * Markets Application
4
+ *
5
+ * Types and utilities for the Markets system on OttoChain.
6
+ * Supports prediction markets, auctions, crowdfunding, and group buys.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import {
11
+ * MarketState,
12
+ * MarketType,
13
+ * calculatePayout,
14
+ * DEFAULT_MARKET_CONFIG
15
+ * } from '@ottochain/sdk/apps/markets';
16
+ *
17
+ * // Calculate payout for a winning prediction
18
+ * const payout = calculatePayout({
19
+ * winningPool: 1000n,
20
+ * losingPool: 500n,
21
+ * userCommitment: 100n,
22
+ * });
23
+ * ```
24
+ *
25
+ * @packageDocumentation
26
+ */
27
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ var desc = Object.getOwnPropertyDescriptor(m, k);
30
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
31
+ desc = { enumerable: true, get: function() { return m[k]; } };
32
+ }
33
+ Object.defineProperty(o, k2, desc);
34
+ }) : (function(o, m, k, k2) {
35
+ if (k2 === undefined) k2 = k;
36
+ o[k2] = m[k];
37
+ }));
38
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
39
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ // Note: Once proto files are generated, uncomment these exports:
43
+ // export * from '../../generated/ottochain/apps/markets/v1/market_pb.js';
44
+ // export * from '../../generated/ottochain/apps/markets/v1/commitment_pb.js';
45
+ // Export convenience types, constants, and helpers
46
+ __exportStar(require("./types.js"), exports);
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Markets Application Types
3
+ *
4
+ * Constants, types, and utilities for the Markets application on OttoChain.
5
+ *
6
+ * Note: When proto files are generated, enums will move to generated types.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ /**
11
+ * Market lifecycle states
12
+ */
13
+ export declare enum MarketState {
14
+ UNSPECIFIED = 0,
15
+ /** Market is open for commitments */
16
+ OPEN = 1,
17
+ /** Commitment period has ended, awaiting resolution */
18
+ CLOSED = 2,
19
+ /** Oracle has resolved the outcome */
20
+ RESOLVED = 3,
21
+ /** Payouts distributed to winners */
22
+ SETTLED = 4,
23
+ /** Market cancelled, refunds issued */
24
+ CANCELLED = 5,
25
+ /** Market is disputed */
26
+ DISPUTED = 6
27
+ }
28
+ /**
29
+ * Types of markets supported
30
+ */
31
+ export declare enum MarketType {
32
+ UNSPECIFIED = 0,
33
+ /** Binary or multi-outcome prediction market */
34
+ PREDICTION = 1,
35
+ /** Ascending/descending price auction */
36
+ AUCTION = 2,
37
+ /** All-or-nothing crowdfunding */
38
+ CROWDFUND = 3,
39
+ /** Group buying with volume discounts */
40
+ GROUP_BUY = 4
41
+ }
42
+ /**
43
+ * Commitment direction (for prediction markets)
44
+ */
45
+ export declare enum CommitmentSide {
46
+ UNSPECIFIED = 0,
47
+ YES = 1,
48
+ NO = 2
49
+ }
50
+ /**
51
+ * Market configuration type
52
+ */
53
+ export interface MarketConfig {
54
+ /** Platform fee as percentage (0.01 = 1%) */
55
+ platformFeePercent: number;
56
+ /** Market creator fee as percentage */
57
+ creatorFeePercent: number;
58
+ /** Oracle fee as percentage */
59
+ oracleFeePercent: number;
60
+ /** Minimum quorum for market validity (in tokens) */
61
+ minQuorum: bigint;
62
+ /** Default resolution window in epochs */
63
+ resolutionWindowEpochs: number;
64
+ /** Dispute window after resolution in epochs */
65
+ disputeWindowEpochs: number;
66
+ /** Minimum commitment amount */
67
+ minCommitment: bigint;
68
+ /** Maximum slippage for AMM-style markets */
69
+ maxSlippagePercent: number;
70
+ }
71
+ /**
72
+ * Default market configuration
73
+ */
74
+ export declare const DEFAULT_MARKET_CONFIG: MarketConfig;
75
+ /**
76
+ * Type-specific market configurations
77
+ */
78
+ export declare const MARKET_TYPE_CONFIGS: Record<MarketType, Partial<MarketConfig>>;
79
+ /**
80
+ * Valid transitions for each market state
81
+ */
82
+ export declare const MARKET_TRANSITIONS: Record<MarketState, readonly string[]>;
83
+ /**
84
+ * Check if a market state is terminal
85
+ */
86
+ export declare function isTerminalMarketState(state: MarketState): boolean;
87
+ /**
88
+ * Calculate effective commitment after fees
89
+ *
90
+ * @param amount - Raw commitment amount
91
+ * @param config - Market configuration (uses defaults if not provided)
92
+ * @returns Net commitment amount after platform fees
93
+ */
94
+ export declare function calculateNetCommitment(amount: bigint, config?: Partial<MarketConfig>): bigint;
95
+ /**
96
+ * Calculate total fees for a commitment
97
+ *
98
+ * @param amount - Commitment amount
99
+ * @param marketType - Type of market for type-specific fees
100
+ * @returns Fee breakdown object
101
+ */
102
+ export declare function calculateFees(amount: bigint, marketType?: MarketType): {
103
+ platform: bigint;
104
+ creator: bigint;
105
+ oracle: bigint;
106
+ total: bigint;
107
+ };
108
+ /**
109
+ * Outcome shares for payout calculation
110
+ */
111
+ export interface OutcomeShares {
112
+ /** Total committed to winning outcome */
113
+ winningPool: bigint;
114
+ /** Total committed to losing outcome(s) */
115
+ losingPool: bigint;
116
+ /** Individual's commitment to winning outcome */
117
+ userCommitment: bigint;
118
+ }
119
+ /**
120
+ * Calculate payout for a winning commitment in a prediction market
121
+ *
122
+ * Winner receives: their original + proportional share of losing pool (minus fees)
123
+ *
124
+ * @param shares - Pool and commitment details
125
+ * @param marketType - Type of market for fee calculation
126
+ * @returns Payout amount
127
+ */
128
+ export declare function calculatePayout(shares: OutcomeShares, marketType?: MarketType): bigint;
129
+ /**
130
+ * Calculate refund for cancelled market
131
+ *
132
+ * @param commitment - Original commitment amount
133
+ * @param refundFeePercent - Optional fee retained on refund (default 0)
134
+ * @returns Refund amount
135
+ */
136
+ export declare function calculateRefund(commitment: bigint, refundFeePercent?: number): bigint;
137
+ /**
138
+ * Validate a commitment meets market requirements
139
+ */
140
+ export interface CommitmentValidation {
141
+ valid: boolean;
142
+ reason?: string;
143
+ }
144
+ /**
145
+ * Validate a commitment against market rules
146
+ */
147
+ export declare function validateCommitment(amount: bigint, marketState: MarketState, config?: Partial<MarketConfig>): CommitmentValidation;
148
+ /**
149
+ * Calculate crowdfund progress
150
+ */
151
+ export interface CrowdfundProgress {
152
+ /** Current total committed */
153
+ current: bigint;
154
+ /** Target goal */
155
+ goal: bigint;
156
+ /** Percentage complete (0-100) */
157
+ percentComplete: number;
158
+ /** Whether goal has been reached */
159
+ goalReached: boolean;
160
+ }
161
+ /**
162
+ * Calculate crowdfund campaign progress
163
+ */
164
+ export declare function calculateCrowdfundProgress(current: bigint, goal: bigint): CrowdfundProgress;
165
+ /**
166
+ * Tier definition for group buys
167
+ */
168
+ export interface GroupBuyTier {
169
+ /** Minimum participants for this tier */
170
+ minParticipants: number;
171
+ /** Discount percentage for this tier */
172
+ discountPercent: number;
173
+ }
174
+ /**
175
+ * Calculate applicable discount based on participant count
176
+ */
177
+ export declare function calculateGroupBuyDiscount(participantCount: number, tiers: GroupBuyTier[]): number;
178
+ /**
179
+ * Check if a value is a valid MarketState
180
+ */
181
+ export declare function isMarketState(value: unknown): value is MarketState;
182
+ /**
183
+ * Check if a value is a valid MarketType
184
+ */
185
+ export declare function isMarketType(value: unknown): value is MarketType;
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ /**
3
+ * Markets Application Types
4
+ *
5
+ * Constants, types, and utilities for the Markets application on OttoChain.
6
+ *
7
+ * Note: When proto files are generated, enums will move to generated types.
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.isMarketType = exports.isMarketState = exports.calculateGroupBuyDiscount = exports.calculateCrowdfundProgress = exports.validateCommitment = exports.calculateRefund = exports.calculatePayout = exports.calculateFees = exports.calculateNetCommitment = exports.isTerminalMarketState = exports.MARKET_TRANSITIONS = exports.MARKET_TYPE_CONFIGS = exports.DEFAULT_MARKET_CONFIG = exports.CommitmentSide = exports.MarketType = exports.MarketState = void 0;
13
+ // ---------------------------------------------------------------------------
14
+ // Enums (will be replaced by proto-generated versions)
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * Market lifecycle states
18
+ */
19
+ var MarketState;
20
+ (function (MarketState) {
21
+ MarketState[MarketState["UNSPECIFIED"] = 0] = "UNSPECIFIED";
22
+ /** Market is open for commitments */
23
+ MarketState[MarketState["OPEN"] = 1] = "OPEN";
24
+ /** Commitment period has ended, awaiting resolution */
25
+ MarketState[MarketState["CLOSED"] = 2] = "CLOSED";
26
+ /** Oracle has resolved the outcome */
27
+ MarketState[MarketState["RESOLVED"] = 3] = "RESOLVED";
28
+ /** Payouts distributed to winners */
29
+ MarketState[MarketState["SETTLED"] = 4] = "SETTLED";
30
+ /** Market cancelled, refunds issued */
31
+ MarketState[MarketState["CANCELLED"] = 5] = "CANCELLED";
32
+ /** Market is disputed */
33
+ MarketState[MarketState["DISPUTED"] = 6] = "DISPUTED";
34
+ })(MarketState || (exports.MarketState = MarketState = {}));
35
+ /**
36
+ * Types of markets supported
37
+ */
38
+ var MarketType;
39
+ (function (MarketType) {
40
+ MarketType[MarketType["UNSPECIFIED"] = 0] = "UNSPECIFIED";
41
+ /** Binary or multi-outcome prediction market */
42
+ MarketType[MarketType["PREDICTION"] = 1] = "PREDICTION";
43
+ /** Ascending/descending price auction */
44
+ MarketType[MarketType["AUCTION"] = 2] = "AUCTION";
45
+ /** All-or-nothing crowdfunding */
46
+ MarketType[MarketType["CROWDFUND"] = 3] = "CROWDFUND";
47
+ /** Group buying with volume discounts */
48
+ MarketType[MarketType["GROUP_BUY"] = 4] = "GROUP_BUY";
49
+ })(MarketType || (exports.MarketType = MarketType = {}));
50
+ /**
51
+ * Commitment direction (for prediction markets)
52
+ */
53
+ var CommitmentSide;
54
+ (function (CommitmentSide) {
55
+ CommitmentSide[CommitmentSide["UNSPECIFIED"] = 0] = "UNSPECIFIED";
56
+ CommitmentSide[CommitmentSide["YES"] = 1] = "YES";
57
+ CommitmentSide[CommitmentSide["NO"] = 2] = "NO";
58
+ })(CommitmentSide || (exports.CommitmentSide = CommitmentSide = {}));
59
+ /**
60
+ * Default market configuration
61
+ */
62
+ exports.DEFAULT_MARKET_CONFIG = {
63
+ platformFeePercent: 0.01,
64
+ creatorFeePercent: 0.02,
65
+ oracleFeePercent: 0.01,
66
+ minQuorum: 100n,
67
+ resolutionWindowEpochs: 24,
68
+ disputeWindowEpochs: 12,
69
+ minCommitment: 1n,
70
+ maxSlippagePercent: 0.05,
71
+ };
72
+ /**
73
+ * Type-specific market configurations
74
+ */
75
+ exports.MARKET_TYPE_CONFIGS = {
76
+ [MarketType.UNSPECIFIED]: {},
77
+ [MarketType.PREDICTION]: {
78
+ platformFeePercent: 0.02,
79
+ oracleFeePercent: 0.02,
80
+ },
81
+ [MarketType.AUCTION]: {
82
+ platformFeePercent: 0.025,
83
+ creatorFeePercent: 0,
84
+ oracleFeePercent: 0,
85
+ minQuorum: 1n,
86
+ },
87
+ [MarketType.CROWDFUND]: {
88
+ platformFeePercent: 0.03,
89
+ creatorFeePercent: 0,
90
+ oracleFeePercent: 0,
91
+ disputeWindowEpochs: 0,
92
+ },
93
+ [MarketType.GROUP_BUY]: {
94
+ platformFeePercent: 0.015,
95
+ creatorFeePercent: 0.01,
96
+ oracleFeePercent: 0,
97
+ },
98
+ };
99
+ // ---------------------------------------------------------------------------
100
+ // State Machine Transitions
101
+ // ---------------------------------------------------------------------------
102
+ /**
103
+ * Valid transitions for each market state
104
+ */
105
+ exports.MARKET_TRANSITIONS = {
106
+ [MarketState.UNSPECIFIED]: [],
107
+ [MarketState.OPEN]: ['close', 'cancel'],
108
+ [MarketState.CLOSED]: ['resolve', 'dispute', 'cancel'],
109
+ [MarketState.RESOLVED]: ['settle', 'dispute'],
110
+ [MarketState.SETTLED]: [], // Terminal state
111
+ [MarketState.CANCELLED]: [], // Terminal state
112
+ [MarketState.DISPUTED]: ['resolve_dispute', 'cancel'],
113
+ };
114
+ /**
115
+ * Check if a market state is terminal
116
+ */
117
+ function isTerminalMarketState(state) {
118
+ return [
119
+ MarketState.SETTLED,
120
+ MarketState.CANCELLED,
121
+ ].includes(state);
122
+ }
123
+ exports.isTerminalMarketState = isTerminalMarketState;
124
+ // ---------------------------------------------------------------------------
125
+ // Commitment Calculations
126
+ // ---------------------------------------------------------------------------
127
+ /**
128
+ * Calculate effective commitment after fees
129
+ *
130
+ * @param amount - Raw commitment amount
131
+ * @param config - Market configuration (uses defaults if not provided)
132
+ * @returns Net commitment amount after platform fees
133
+ */
134
+ function calculateNetCommitment(amount, config = {}) {
135
+ const feePercent = config.platformFeePercent ?? exports.DEFAULT_MARKET_CONFIG.platformFeePercent;
136
+ const feeAmount = (amount * BigInt(Math.floor(feePercent * 10000))) / 10000n;
137
+ return amount - feeAmount;
138
+ }
139
+ exports.calculateNetCommitment = calculateNetCommitment;
140
+ /**
141
+ * Calculate total fees for a commitment
142
+ *
143
+ * @param amount - Commitment amount
144
+ * @param marketType - Type of market for type-specific fees
145
+ * @returns Fee breakdown object
146
+ */
147
+ function calculateFees(amount, marketType = MarketType.PREDICTION) {
148
+ const typeConfig = { ...exports.DEFAULT_MARKET_CONFIG, ...exports.MARKET_TYPE_CONFIGS[marketType] };
149
+ const platform = (amount * BigInt(Math.floor(typeConfig.platformFeePercent * 10000))) / 10000n;
150
+ const creator = (amount * BigInt(Math.floor(typeConfig.creatorFeePercent * 10000))) / 10000n;
151
+ const oracle = (amount * BigInt(Math.floor(typeConfig.oracleFeePercent * 10000))) / 10000n;
152
+ return {
153
+ platform,
154
+ creator,
155
+ oracle,
156
+ total: platform + creator + oracle,
157
+ };
158
+ }
159
+ exports.calculateFees = calculateFees;
160
+ /**
161
+ * Calculate payout for a winning commitment in a prediction market
162
+ *
163
+ * Winner receives: their original + proportional share of losing pool (minus fees)
164
+ *
165
+ * @param shares - Pool and commitment details
166
+ * @param marketType - Type of market for fee calculation
167
+ * @returns Payout amount
168
+ */
169
+ function calculatePayout(shares, marketType = MarketType.PREDICTION) {
170
+ if (shares.winningPool === 0n)
171
+ return 0n;
172
+ const fees = calculateFees(shares.losingPool, marketType);
173
+ const distributablePool = shares.losingPool - fees.total;
174
+ // Proportional share of losing pool
175
+ const winnings = (distributablePool * shares.userCommitment) / shares.winningPool;
176
+ // Return original commitment + winnings
177
+ return shares.userCommitment + winnings;
178
+ }
179
+ exports.calculatePayout = calculatePayout;
180
+ /**
181
+ * Calculate refund for cancelled market
182
+ *
183
+ * @param commitment - Original commitment amount
184
+ * @param refundFeePercent - Optional fee retained on refund (default 0)
185
+ * @returns Refund amount
186
+ */
187
+ function calculateRefund(commitment, refundFeePercent = 0) {
188
+ const fee = (commitment * BigInt(Math.floor(refundFeePercent * 10000))) / 10000n;
189
+ return commitment - fee;
190
+ }
191
+ exports.calculateRefund = calculateRefund;
192
+ /**
193
+ * Validate a commitment against market rules
194
+ */
195
+ function validateCommitment(amount, marketState, config = {}) {
196
+ const minCommitment = config.minCommitment ?? exports.DEFAULT_MARKET_CONFIG.minCommitment;
197
+ if (marketState !== MarketState.OPEN) {
198
+ return { valid: false, reason: 'Market is not open for commitments' };
199
+ }
200
+ if (amount < minCommitment) {
201
+ return { valid: false, reason: `Commitment below minimum: ${minCommitment}` };
202
+ }
203
+ return { valid: true };
204
+ }
205
+ exports.validateCommitment = validateCommitment;
206
+ /**
207
+ * Calculate crowdfund campaign progress
208
+ */
209
+ function calculateCrowdfundProgress(current, goal) {
210
+ if (goal === 0n) {
211
+ return { current, goal, percentComplete: 0, goalReached: false };
212
+ }
213
+ const percentComplete = Number((current * 10000n) / goal) / 100;
214
+ return {
215
+ current,
216
+ goal,
217
+ percentComplete: Math.min(percentComplete, 100),
218
+ goalReached: current >= goal,
219
+ };
220
+ }
221
+ exports.calculateCrowdfundProgress = calculateCrowdfundProgress;
222
+ /**
223
+ * Calculate applicable discount based on participant count
224
+ */
225
+ function calculateGroupBuyDiscount(participantCount, tiers) {
226
+ // Sort tiers descending by minParticipants
227
+ const sortedTiers = [...tiers].sort((a, b) => b.minParticipants - a.minParticipants);
228
+ for (const tier of sortedTiers) {
229
+ if (participantCount >= tier.minParticipants) {
230
+ return tier.discountPercent;
231
+ }
232
+ }
233
+ return 0;
234
+ }
235
+ exports.calculateGroupBuyDiscount = calculateGroupBuyDiscount;
236
+ // ---------------------------------------------------------------------------
237
+ // Type Guards
238
+ // ---------------------------------------------------------------------------
239
+ /**
240
+ * Check if a value is a valid MarketState
241
+ */
242
+ function isMarketState(value) {
243
+ return typeof value === 'number' && value in MarketState;
244
+ }
245
+ exports.isMarketState = isMarketState;
246
+ /**
247
+ * Check if a value is a valid MarketType
248
+ */
249
+ function isMarketType(value) {
250
+ return typeof value === 'number' && value in MarketType;
251
+ }
252
+ exports.isMarketType = isMarketType;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Oracles Application
3
+ *
4
+ * Types and utilities for the Oracle system on OttoChain.
5
+ * Oracles provide truth resolution for markets, disputes, and attestations.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import {
10
+ * OracleState,
11
+ * SlashingReason,
12
+ * calculateReputation,
13
+ * calculateSlashAmount,
14
+ * DEFAULT_ORACLE_CONFIG
15
+ * } from '@ottochain/sdk/apps/oracles';
16
+ *
17
+ * // Calculate new reputation after successful resolution
18
+ * const newRep = calculateReputation(50, REPUTATION_DELTAS.successfulResolution);
19
+ *
20
+ * // Calculate slash for timeout
21
+ * const slashAmount = calculateSlashAmount(10000n, SlashingReason.TIMEOUT);
22
+ * ```
23
+ *
24
+ * @packageDocumentation
25
+ */
26
+ export * from './types.js';
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * Oracles Application
4
+ *
5
+ * Types and utilities for the Oracle system on OttoChain.
6
+ * Oracles provide truth resolution for markets, disputes, and attestations.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import {
11
+ * OracleState,
12
+ * SlashingReason,
13
+ * calculateReputation,
14
+ * calculateSlashAmount,
15
+ * DEFAULT_ORACLE_CONFIG
16
+ * } from '@ottochain/sdk/apps/oracles';
17
+ *
18
+ * // Calculate new reputation after successful resolution
19
+ * const newRep = calculateReputation(50, REPUTATION_DELTAS.successfulResolution);
20
+ *
21
+ * // Calculate slash for timeout
22
+ * const slashAmount = calculateSlashAmount(10000n, SlashingReason.TIMEOUT);
23
+ * ```
24
+ *
25
+ * @packageDocumentation
26
+ */
27
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ var desc = Object.getOwnPropertyDescriptor(m, k);
30
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
31
+ desc = { enumerable: true, get: function() { return m[k]; } };
32
+ }
33
+ Object.defineProperty(o, k2, desc);
34
+ }) : (function(o, m, k, k2) {
35
+ if (k2 === undefined) k2 = k;
36
+ o[k2] = m[k];
37
+ }));
38
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
39
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ // Note: Once proto files are generated, uncomment these exports:
43
+ // export * from '../../generated/ottochain/apps/oracles/v1/oracle_pb.js';
44
+ // export * from '../../generated/ottochain/apps/oracles/v1/resolution_pb.js';
45
+ // Export convenience types, constants, and helpers
46
+ __exportStar(require("./types.js"), exports);