@zofai/zo-sdk 0.1.92

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 (275) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/.gitattributes +4 -0
  3. package/.prettierrc.js +9 -0
  4. package/README.md +28 -0
  5. package/dist/abstract/BaseAPI.cjs +206 -0
  6. package/dist/abstract/BaseAPI.cjs.map +1 -0
  7. package/dist/abstract/BaseAPI.d.cts +172 -0
  8. package/dist/abstract/BaseAPI.d.cts.map +1 -0
  9. package/dist/abstract/BaseAPI.d.mts +172 -0
  10. package/dist/abstract/BaseAPI.d.mts.map +1 -0
  11. package/dist/abstract/BaseAPI.mjs +202 -0
  12. package/dist/abstract/BaseAPI.mjs.map +1 -0
  13. package/dist/abstract/BaseDataAPI.cjs +140 -0
  14. package/dist/abstract/BaseDataAPI.cjs.map +1 -0
  15. package/dist/abstract/BaseDataAPI.d.cts +89 -0
  16. package/dist/abstract/BaseDataAPI.d.cts.map +1 -0
  17. package/dist/abstract/BaseDataAPI.d.mts +89 -0
  18. package/dist/abstract/BaseDataAPI.d.mts.map +1 -0
  19. package/dist/abstract/BaseDataAPI.mjs +136 -0
  20. package/dist/abstract/BaseDataAPI.mjs.map +1 -0
  21. package/dist/abstract/index.cjs +12 -0
  22. package/dist/abstract/index.cjs.map +1 -0
  23. package/dist/abstract/index.d.cts +7 -0
  24. package/dist/abstract/index.d.cts.map +1 -0
  25. package/dist/abstract/index.d.mts +7 -0
  26. package/dist/abstract/index.d.mts.map +1 -0
  27. package/dist/abstract/index.mjs +7 -0
  28. package/dist/abstract/index.mjs.map +1 -0
  29. package/dist/api.cjs +779 -0
  30. package/dist/api.cjs.map +1 -0
  31. package/dist/api.d.cts +75 -0
  32. package/dist/api.d.cts.map +1 -0
  33. package/dist/api.d.mts +75 -0
  34. package/dist/api.d.mts.map +1 -0
  35. package/dist/api.mjs +775 -0
  36. package/dist/api.mjs.map +1 -0
  37. package/dist/bcs.cjs +42 -0
  38. package/dist/bcs.cjs.map +1 -0
  39. package/dist/bcs.d.cts +91 -0
  40. package/dist/bcs.d.cts.map +1 -0
  41. package/dist/bcs.d.mts +91 -0
  42. package/dist/bcs.d.mts.map +1 -0
  43. package/dist/bcs.mjs +39 -0
  44. package/dist/bcs.mjs.map +1 -0
  45. package/dist/consts/deployments-shared-mainnet.json +50 -0
  46. package/dist/consts/deployments-shared-testnet.json +45 -0
  47. package/dist/consts/deployments-slp-mainnet.json +600 -0
  48. package/dist/consts/deployments-slp-testnet.json +87 -0
  49. package/dist/consts/deployments-usdz-mainnet.json +494 -0
  50. package/dist/consts/deployments-usdz-testnet.json +98 -0
  51. package/dist/consts/deployments-zbtcvc-mainnet.json +180 -0
  52. package/dist/consts/deployments-zlp-mainnet.json +791 -0
  53. package/dist/consts/deployments-zlp-testnet.json +76 -0
  54. package/dist/consts/index.cjs +200 -0
  55. package/dist/consts/index.cjs.map +1 -0
  56. package/dist/consts/index.d.cts +157 -0
  57. package/dist/consts/index.d.cts.map +1 -0
  58. package/dist/consts/index.d.mts +157 -0
  59. package/dist/consts/index.d.mts.map +1 -0
  60. package/dist/consts/index.mjs +189 -0
  61. package/dist/consts/index.mjs.map +1 -0
  62. package/dist/consts/price_id_to_object_id.mainnet.json +56 -0
  63. package/dist/consts/price_id_to_object_id.testnet.json +17 -0
  64. package/dist/data.cjs +919 -0
  65. package/dist/data.cjs.map +1 -0
  66. package/dist/data.d.cts +235 -0
  67. package/dist/data.d.cts.map +1 -0
  68. package/dist/data.d.mts +235 -0
  69. package/dist/data.d.mts.map +1 -0
  70. package/dist/data.mjs +915 -0
  71. package/dist/data.mjs.map +1 -0
  72. package/dist/factory/SDKFactory.cjs +228 -0
  73. package/dist/factory/SDKFactory.cjs.map +1 -0
  74. package/dist/factory/SDKFactory.d.cts +84 -0
  75. package/dist/factory/SDKFactory.d.cts.map +1 -0
  76. package/dist/factory/SDKFactory.d.mts +84 -0
  77. package/dist/factory/SDKFactory.d.mts.map +1 -0
  78. package/dist/factory/SDKFactory.mjs +222 -0
  79. package/dist/factory/SDKFactory.mjs.map +1 -0
  80. package/dist/implementations/SLPAPI.cjs +1794 -0
  81. package/dist/implementations/SLPAPI.cjs.map +1 -0
  82. package/dist/implementations/SLPAPI.d.cts +183 -0
  83. package/dist/implementations/SLPAPI.d.cts.map +1 -0
  84. package/dist/implementations/SLPAPI.d.mts +183 -0
  85. package/dist/implementations/SLPAPI.d.mts.map +1 -0
  86. package/dist/implementations/SLPAPI.mjs +1790 -0
  87. package/dist/implementations/SLPAPI.mjs.map +1 -0
  88. package/dist/implementations/SLPDataAPI.cjs +1384 -0
  89. package/dist/implementations/SLPDataAPI.cjs.map +1 -0
  90. package/dist/implementations/SLPDataAPI.d.cts +158 -0
  91. package/dist/implementations/SLPDataAPI.d.cts.map +1 -0
  92. package/dist/implementations/SLPDataAPI.d.mts +158 -0
  93. package/dist/implementations/SLPDataAPI.d.mts.map +1 -0
  94. package/dist/implementations/SLPDataAPI.mjs +1380 -0
  95. package/dist/implementations/SLPDataAPI.mjs.map +1 -0
  96. package/dist/implementations/USDZAPI.cjs +1676 -0
  97. package/dist/implementations/USDZAPI.cjs.map +1 -0
  98. package/dist/implementations/USDZAPI.d.cts +180 -0
  99. package/dist/implementations/USDZAPI.d.cts.map +1 -0
  100. package/dist/implementations/USDZAPI.d.mts +180 -0
  101. package/dist/implementations/USDZAPI.d.mts.map +1 -0
  102. package/dist/implementations/USDZAPI.mjs +1672 -0
  103. package/dist/implementations/USDZAPI.mjs.map +1 -0
  104. package/dist/implementations/USDZDataAPI.cjs +1209 -0
  105. package/dist/implementations/USDZDataAPI.cjs.map +1 -0
  106. package/dist/implementations/USDZDataAPI.d.cts +191 -0
  107. package/dist/implementations/USDZDataAPI.d.cts.map +1 -0
  108. package/dist/implementations/USDZDataAPI.d.mts +191 -0
  109. package/dist/implementations/USDZDataAPI.d.mts.map +1 -0
  110. package/dist/implementations/USDZDataAPI.mjs +1205 -0
  111. package/dist/implementations/USDZDataAPI.mjs.map +1 -0
  112. package/dist/implementations/ZBTCVCAPI.cjs +906 -0
  113. package/dist/implementations/ZBTCVCAPI.cjs.map +1 -0
  114. package/dist/implementations/ZBTCVCAPI.d.cts +107 -0
  115. package/dist/implementations/ZBTCVCAPI.d.cts.map +1 -0
  116. package/dist/implementations/ZBTCVCAPI.d.mts +107 -0
  117. package/dist/implementations/ZBTCVCAPI.d.mts.map +1 -0
  118. package/dist/implementations/ZBTCVCAPI.mjs +902 -0
  119. package/dist/implementations/ZBTCVCAPI.mjs.map +1 -0
  120. package/dist/implementations/ZBTCVCDataAPI.cjs +829 -0
  121. package/dist/implementations/ZBTCVCDataAPI.cjs.map +1 -0
  122. package/dist/implementations/ZBTCVCDataAPI.d.cts +94 -0
  123. package/dist/implementations/ZBTCVCDataAPI.d.cts.map +1 -0
  124. package/dist/implementations/ZBTCVCDataAPI.d.mts +94 -0
  125. package/dist/implementations/ZBTCVCDataAPI.d.mts.map +1 -0
  126. package/dist/implementations/ZBTCVCDataAPI.mjs +825 -0
  127. package/dist/implementations/ZBTCVCDataAPI.mjs.map +1 -0
  128. package/dist/implementations/ZLPAPI.cjs +1948 -0
  129. package/dist/implementations/ZLPAPI.cjs.map +1 -0
  130. package/dist/implementations/ZLPAPI.d.cts +192 -0
  131. package/dist/implementations/ZLPAPI.d.cts.map +1 -0
  132. package/dist/implementations/ZLPAPI.d.mts +192 -0
  133. package/dist/implementations/ZLPAPI.d.mts.map +1 -0
  134. package/dist/implementations/ZLPAPI.mjs +1944 -0
  135. package/dist/implementations/ZLPAPI.mjs.map +1 -0
  136. package/dist/implementations/ZLPDataAPI.cjs +1267 -0
  137. package/dist/implementations/ZLPDataAPI.cjs.map +1 -0
  138. package/dist/implementations/ZLPDataAPI.d.cts +193 -0
  139. package/dist/implementations/ZLPDataAPI.d.cts.map +1 -0
  140. package/dist/implementations/ZLPDataAPI.d.mts +193 -0
  141. package/dist/implementations/ZLPDataAPI.d.mts.map +1 -0
  142. package/dist/implementations/ZLPDataAPI.mjs +1263 -0
  143. package/dist/implementations/ZLPDataAPI.mjs.map +1 -0
  144. package/dist/implementations/index.cjs +26 -0
  145. package/dist/implementations/index.cjs.map +1 -0
  146. package/dist/implementations/index.d.cts +13 -0
  147. package/dist/implementations/index.d.cts.map +1 -0
  148. package/dist/implementations/index.d.mts +13 -0
  149. package/dist/implementations/index.d.mts.map +1 -0
  150. package/dist/implementations/index.mjs +15 -0
  151. package/dist/implementations/index.mjs.map +1 -0
  152. package/dist/index.cjs +69 -0
  153. package/dist/index.cjs.map +1 -0
  154. package/dist/index.d.cts +51 -0
  155. package/dist/index.d.cts.map +1 -0
  156. package/dist/index.d.mts +51 -0
  157. package/dist/index.d.mts.map +1 -0
  158. package/dist/index.mjs +51 -0
  159. package/dist/index.mjs.map +1 -0
  160. package/dist/interfaces/base.cjs +7 -0
  161. package/dist/interfaces/base.cjs.map +1 -0
  162. package/dist/interfaces/base.d.cts +346 -0
  163. package/dist/interfaces/base.d.cts.map +1 -0
  164. package/dist/interfaces/base.d.mts +346 -0
  165. package/dist/interfaces/base.d.mts.map +1 -0
  166. package/dist/interfaces/base.mjs +6 -0
  167. package/dist/interfaces/base.mjs.map +1 -0
  168. package/dist/interfaces/index.cjs +31 -0
  169. package/dist/interfaces/index.cjs.map +1 -0
  170. package/dist/interfaces/index.d.cts +15 -0
  171. package/dist/interfaces/index.d.cts.map +1 -0
  172. package/dist/interfaces/index.d.mts +15 -0
  173. package/dist/interfaces/index.d.mts.map +1 -0
  174. package/dist/interfaces/index.mjs +15 -0
  175. package/dist/interfaces/index.mjs.map +1 -0
  176. package/dist/interfaces/slp.cjs +7 -0
  177. package/dist/interfaces/slp.cjs.map +1 -0
  178. package/dist/interfaces/slp.d.cts +179 -0
  179. package/dist/interfaces/slp.d.cts.map +1 -0
  180. package/dist/interfaces/slp.d.mts +179 -0
  181. package/dist/interfaces/slp.d.mts.map +1 -0
  182. package/dist/interfaces/slp.mjs +6 -0
  183. package/dist/interfaces/slp.mjs.map +1 -0
  184. package/dist/interfaces/usdz.cjs +7 -0
  185. package/dist/interfaces/usdz.cjs.map +1 -0
  186. package/dist/interfaces/usdz.d.cts +104 -0
  187. package/dist/interfaces/usdz.d.cts.map +1 -0
  188. package/dist/interfaces/usdz.d.mts +104 -0
  189. package/dist/interfaces/usdz.d.mts.map +1 -0
  190. package/dist/interfaces/usdz.mjs +6 -0
  191. package/dist/interfaces/usdz.mjs.map +1 -0
  192. package/dist/interfaces/zbtcvc.cjs +7 -0
  193. package/dist/interfaces/zbtcvc.cjs.map +1 -0
  194. package/dist/interfaces/zbtcvc.d.cts +64 -0
  195. package/dist/interfaces/zbtcvc.d.cts.map +1 -0
  196. package/dist/interfaces/zbtcvc.d.mts +64 -0
  197. package/dist/interfaces/zbtcvc.d.mts.map +1 -0
  198. package/dist/interfaces/zbtcvc.mjs +6 -0
  199. package/dist/interfaces/zbtcvc.mjs.map +1 -0
  200. package/dist/interfaces/zlp.cjs +7 -0
  201. package/dist/interfaces/zlp.cjs.map +1 -0
  202. package/dist/interfaces/zlp.d.cts +114 -0
  203. package/dist/interfaces/zlp.d.cts.map +1 -0
  204. package/dist/interfaces/zlp.d.mts +114 -0
  205. package/dist/interfaces/zlp.d.mts.map +1 -0
  206. package/dist/interfaces/zlp.mjs +6 -0
  207. package/dist/interfaces/zlp.mjs.map +1 -0
  208. package/dist/oracle.cjs +118 -0
  209. package/dist/oracle.cjs.map +1 -0
  210. package/dist/oracle.d.cts +25 -0
  211. package/dist/oracle.d.cts.map +1 -0
  212. package/dist/oracle.d.mts +25 -0
  213. package/dist/oracle.d.mts.map +1 -0
  214. package/dist/oracle.mjs +114 -0
  215. package/dist/oracle.mjs.map +1 -0
  216. package/dist/utils.cjs +129 -0
  217. package/dist/utils.cjs.map +1 -0
  218. package/dist/utils.d.cts +44 -0
  219. package/dist/utils.d.cts.map +1 -0
  220. package/dist/utils.d.mts +44 -0
  221. package/dist/utils.d.mts.map +1 -0
  222. package/dist/utils.mjs +115 -0
  223. package/dist/utils.mjs.map +1 -0
  224. package/docs/SUMMARY.md +10 -0
  225. package/docs/api-reference.md +32 -0
  226. package/docs/architecture.md +14 -0
  227. package/docs/common-operations.md +52 -0
  228. package/docs/error-handling.md +17 -0
  229. package/docs/getting-started.md +60 -0
  230. package/docs/introduction.md +15 -0
  231. package/docs/lp-specific-features.md +96 -0
  232. package/docs/type-safety.md +29 -0
  233. package/eslint.config.mjs +18 -0
  234. package/package.json +42 -0
  235. package/src/abstract/BaseAPI.ts +575 -0
  236. package/src/abstract/BaseDataAPI.ts +207 -0
  237. package/src/abstract/index.ts +7 -0
  238. package/src/api.ts +1100 -0
  239. package/src/bcs.ts +45 -0
  240. package/src/consts/deployments-shared-mainnet.json +50 -0
  241. package/src/consts/deployments-shared-testnet.json +45 -0
  242. package/src/consts/deployments-slp-mainnet.json +600 -0
  243. package/src/consts/deployments-slp-testnet.json +87 -0
  244. package/src/consts/deployments-usdz-mainnet.json +494 -0
  245. package/src/consts/deployments-usdz-testnet.json +98 -0
  246. package/src/consts/deployments-zbtcvc-mainnet.json +180 -0
  247. package/src/consts/deployments-zlp-mainnet.json +791 -0
  248. package/src/consts/deployments-zlp-testnet.json +76 -0
  249. package/src/consts/index.ts +345 -0
  250. package/src/consts/price_id_to_object_id.mainnet.json +56 -0
  251. package/src/consts/price_id_to_object_id.testnet.json +17 -0
  252. package/src/data.ts +1279 -0
  253. package/src/factory/SDKFactory.ts +340 -0
  254. package/src/implementations/SLPAPI.ts +2722 -0
  255. package/src/implementations/SLPDataAPI.ts +1839 -0
  256. package/src/implementations/USDZAPI.ts +2488 -0
  257. package/src/implementations/USDZDataAPI.ts +1548 -0
  258. package/src/implementations/ZBTCVCAPI.ts +1337 -0
  259. package/src/implementations/ZBTCVCDataAPI.ts +993 -0
  260. package/src/implementations/ZLPAPI.ts +2888 -0
  261. package/src/implementations/ZLPDataAPI.ts +1603 -0
  262. package/src/implementations/index.ts +16 -0
  263. package/src/index.ts +58 -0
  264. package/src/interfaces/base.ts +838 -0
  265. package/src/interfaces/index.ts +50 -0
  266. package/src/interfaces/slp.ts +268 -0
  267. package/src/interfaces/usdz.ts +181 -0
  268. package/src/interfaces/zbtcvc.ts +116 -0
  269. package/src/interfaces/zlp.ts +244 -0
  270. package/src/oracle.ts +153 -0
  271. package/src/utils.ts +168 -0
  272. package/tests/api.test.ts +219 -0
  273. package/tests/data.test.ts +156 -0
  274. package/tests/oracle.test.ts +33 -0
  275. package/tsconfig.json +22 -0
@@ -0,0 +1,76 @@
1
+ {
2
+ "zo_core": {
3
+ "package": "0x161bbe52dfee04cc831a8d15bc60f631651a72cae06f5820d6e64377e678691b",
4
+ "upgraded_package": "0x161bbe52dfee04cc831a8d15bc60f631651a72cae06f5820d6e64377e678691b",
5
+ "upgrade_cap": "0xd0f8b6a095b986ab60f38ba5b4522b987bce35b9c980fabd7a02ad9db8635163",
6
+ "admin_cap": "0x608768d00e87d41c4aadbf65829f991fc285d13c97f367a8b5592bd74c198baa",
7
+ "market": "0x5bfc76285c5f4d40483f94742c43359bbc2230276d70d8be9f9c6047e0403fb8",
8
+ "zlp_metadata": "0xff699932e525d39bc9240f5350d2c0c90c9fbbfa0ca619418d4a9f1df99fa67a",
9
+ "rebase_fee_model": "0xe4c917c88c9d7d2573b79c939566af1d45416cb2fd6977a1d988e537cb6e2fba",
10
+ "referrals_parent": "0xe7615ed5a94412cb557a54b38c9a3c55cda180ea7d98ea112434359bdff5ff20",
11
+ "vaults_parent": "0xfd7ac02284ad040e2f173f9f53bbcd624b5680bf34aea45769e2ff15266419c4",
12
+ "symbols_parent": "0xe76dfe5daf47f96c2af452ef822131f9f8eaa3ec5d43ee20459f16b9026154b9",
13
+ "positions_parent": "0xba6421b65c392c370be1b2a3d72807ff88cf1487af03279ec2f47650100f922f",
14
+ "orders_parent": "0x2e2fa2798494f8aabe09885aa3315067a9d0672c521a06d8ca84257af317f0cf",
15
+ "vaults": {
16
+ "usdt": {
17
+ "weight": "1000000000000000000",
18
+ "reserving_fee_model": "0x73bf5fea2993d092ffef76ce500cc812765d965d2344d7ff3fafdf774096eac7"
19
+ }
20
+ },
21
+ "symbols": {
22
+ "long_btc": {
23
+ "supported_collaterals": ["usdt"],
24
+ "funding_fee_model": "0xbd3feed51e3c7c6c82d5b45352a5c2b5d929a7d606fcca641df9f6ed8e343d8f",
25
+ "position_config": "0x6c08e89e9505a1ea79eb9159073640fc586f2e34c8372f3831b0040485c12acb"
26
+ },
27
+ "short_btc": {
28
+ "supported_collaterals": ["usdt"],
29
+ "funding_fee_model": "0x1f636eee8ccf1e8b53ffbfad5168ac6329c4dbaf2e9779f9d74dd5f5333da467",
30
+ "position_config": "0x2daa87d7799b83cfcd5d09539156070f9e48999730cc0a062cc0573a9ea4d4e3"
31
+ }
32
+ }
33
+ },
34
+ "pyth_feeder": {
35
+ "package": "0xabf837e98c26087cba0883c0a7a28326b1fa3c5e1e2c5abdb486f9e8f594c837",
36
+ "state": "0x243759059f4c3111179da5878c12f68d612c21a8d54d85edc86164bb18be1c7c",
37
+ "wormhole": {
38
+ "package": "0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94",
39
+ "state": "0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790"
40
+ },
41
+ "feeder": {
42
+ "btc": "0x72431a238277695d3f31e4425225a4462674ee6cceeea9d66447b210755fffba",
43
+ "sui": "0x1ebb295c789cc42b3b2a1606482cd1c7124076a0f5676718501fda8c7fd075a0",
44
+ "eth": "0x4fde30cb8a5dc3cfee1c1c358fc66dc308408827efb217247c7ba54d76ccbee9",
45
+ "sol": "0x33fbce1cad5ca155f2f5051430b23a694bc6e5de6df43e0f8aefe29f4a84336d",
46
+ "usdt": "0x956fdcbf83a26c962319f7742f5728a0a7ce59c7f0cbe13c112b259e7ee953cd"
47
+ }
48
+ },
49
+ "coins": {
50
+ "sui": {
51
+ "decimals": 9,
52
+ "module": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
53
+ "metadata": "0x587c29de216efd4219573e08a1f6964d4fa7cb714518c2c8a0f29abfa264327d"
54
+ },
55
+ "btc": {
56
+ "decimals": 6,
57
+ "module": "0x997965ea613857d34f13511fbe27f94728ab079615cd083ed24aef70516ab2e4::btc::BTC",
58
+ "metadata": "0xca50f9e2bae829ee73dc5079d3882298070b7b36451ec35f9455947163b4854e"
59
+ },
60
+ "eth": {
61
+ "decimals": 9,
62
+ "module": "0x0d3dd3ff9950dfbe34c52dbb552c36b618a3263f20f84309c9dfef7e140b6301::eth::ETH",
63
+ "metadata": "0x009c984d2d0c3afac3a598fd1ce77bb93740e8948e9665c7a7fe24046e129313"
64
+ },
65
+ "sol": {
66
+ "decimals": 9,
67
+ "module": "0x7eb2d1737cf4901218956dbd798f461a2606792da2df87b3c670e364ced35ce7::sol::SOL",
68
+ "metadata": "0xf77d6b54b007e45ea17ad9fa41821649e9ee16a9b14d3aabc2bb07b7874a90e9"
69
+ },
70
+ "usdt": {
71
+ "decimals": 6,
72
+ "module": "0x8684c115c57c725a832abe63b5cfa7268b77126a8a7a52883f602e5513c9de2d::usdt::USDT",
73
+ "metadata": "0xac3fcd1e6d7bd32d33afb1a0864b05b0adefeaddb2933ead5d5df1af21b1b741"
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,345 @@
1
+ import { reverseKeyValue } from '../utils'
2
+ import sharedMainnetJson from './deployments-shared-mainnet.json'
3
+ import sharedTestnetJson from './deployments-shared-testnet.json'
4
+ import slpMainnetJson from './deployments-slp-mainnet.json'
5
+ import slpTestnetJson from './deployments-slp-testnet.json'
6
+ import usdzMainnetJson from './deployments-usdz-mainnet.json'
7
+ import usdzTestnetJson from './deployments-usdz-testnet.json'
8
+ import zbtcvcMainnetJson from './deployments-zbtcvc-mainnet.json'
9
+ import zlpMainnetJson from './deployments-zlp-mainnet.json'
10
+ import zlpTestnetJson from './deployments-zlp-testnet.json'
11
+ import PriceIdToObjectIdMainnet from './price_id_to_object_id.mainnet.json'
12
+ import PriceIdToObjectIdTestnet from './price_id_to_object_id.testnet.json'
13
+
14
+ interface IVault {
15
+ weight: string
16
+ reservingFeeModel: string
17
+ }
18
+
19
+ interface ISymbol {
20
+ supportedCollaterals: string[]
21
+ fundingFeeModel: string
22
+ positionConfig: string
23
+ }
24
+
25
+ interface ICoin {
26
+ decimals: number
27
+ module: string
28
+ metadata: string
29
+ treasury: string | null
30
+ }
31
+
32
+ interface IPrizePool {
33
+ id: string
34
+ display: string
35
+ }
36
+
37
+ type IVersionedContract = string
38
+
39
+ type IFeeder = Record<string, IVersionedContract>
40
+
41
+ export interface IConsts {
42
+ zoCore: {
43
+ package: string
44
+ upgradedPackage: string
45
+ upgradeCap: string
46
+ adminCap: string
47
+ market: IVersionedContract
48
+ zlpMetadata: IVersionedContract
49
+ usdzMetadata: IVersionedContract
50
+ zbtcvcMetadata: IVersionedContract
51
+ rebaseFeeModel: IVersionedContract
52
+ vaultsParent: string
53
+ symbolsParent: string
54
+ positionsParent: string
55
+ vaults: Record<string, IVault>
56
+ symbols: Record<string, ISymbol>
57
+ referralsParent: string
58
+ ordersParent: string
59
+ }
60
+ sudoCore: {
61
+ package: string
62
+ upgradedPackage: string
63
+ upgradeCap: string
64
+ adminCap: string
65
+ market: IVersionedContract
66
+ slpMetadata: IVersionedContract
67
+ rebaseFeeModel: IVersionedContract
68
+ vaultsParent: string
69
+ symbolsParent: string
70
+ positionsParent: string
71
+ vaults: Record<string, IVault>
72
+ symbols: Record<string, ISymbol>
73
+ referralsParent: string
74
+ ordersParent: string
75
+ }
76
+ zoStaking: {
77
+ package: string
78
+ upgradedPackage: string
79
+ upgradeCap: string
80
+ adminCap: string
81
+ aclControl: string
82
+ pools: Record<string, string>
83
+ pool: string
84
+ }
85
+ zoLootbox: {
86
+ package: string
87
+ upgradedPackage: string
88
+ upgradeCap: string
89
+ adminCap: string
90
+ lootboxTreasury: string
91
+ lootboxSettings: string
92
+ prizePoolParent: string
93
+ prizePools: Record<string, IPrizePool>
94
+ }
95
+ zoLootboxV2: {
96
+ package: string
97
+ upgradedPackage: string
98
+ upgradeCap: string
99
+ adminCap: string
100
+ lootboxTreasury: string
101
+ lootboxSettings: string
102
+ prizePoolParent: string
103
+ prizePools: Record<string, IPrizePool>
104
+ }
105
+ sudoStaking: {
106
+ package: string
107
+ upgradedPackage: string
108
+ upgradeCap: string
109
+ adminCap: string
110
+ pool: string
111
+ }
112
+ sudoNft: {
113
+ package: string
114
+ upgradedPackage: string
115
+ upgradeCap: string
116
+ adminCap: string
117
+ mintSettings: string
118
+ cardRegistry: string
119
+ displayCard: string
120
+ displayMintTicket: string
121
+ silverCardTracker: string
122
+ emeraldCardTracker: string
123
+ blackCardTracker: string
124
+ transferPolicy: string
125
+ transferPolicyCap: string
126
+ }
127
+ sudoLootbox: {
128
+ package: string
129
+ upgradedPackage: string
130
+ upgradeCap: string
131
+ adminCap: string
132
+ lootboxTreasury: string
133
+ lootboxSettings: string
134
+ prizePoolParent: string
135
+ prizePool: Record<string, IPrizePool>
136
+ }
137
+ pythFeeder: {
138
+ package: string
139
+ state: IVersionedContract
140
+ wormhole: {
141
+ package: string
142
+ state: IVersionedContract
143
+ }
144
+ feeder: IFeeder
145
+ }
146
+ coins: Record<string, ICoin>
147
+ }
148
+
149
+ function toCamelCase(str: string): string {
150
+ return str.replaceAll(/_([a-z])/g, (_: string, letter: string) => letter.toUpperCase())
151
+ }
152
+
153
+ function parse(obj: any): any {
154
+ if (typeof obj !== 'object' || obj === null) {
155
+ return obj
156
+ }
157
+
158
+ if (Array.isArray(obj)) {
159
+ return obj.map(element => parse(element))
160
+ }
161
+
162
+ const newObj: any = {}
163
+
164
+ // eslint-disable-next-line guard-for-in
165
+ for (const key in obj) {
166
+ const camelCaseKey = toCamelCase(key)
167
+ newObj[camelCaseKey] = parse(obj[key])
168
+ }
169
+
170
+ return newObj
171
+ }
172
+
173
+ export enum Network {
174
+ MAINNET = 'mainnet',
175
+ TESTNET = 'testnet',
176
+ DEVNET = 'devnet',
177
+ }
178
+
179
+ export enum LPToken {
180
+ ZLP = 'ZLP',
181
+ USDZ = 'USDZ',
182
+ SLP = 'SLP',
183
+ ZBTCVC = 'ZBTCVC',
184
+ }
185
+
186
+ function throwNetworkError(network: string): never {
187
+ throw new Error(`Unknown network: ${network}`)
188
+ }
189
+
190
+ export function getConsts(network: string, lpToken: LPToken = LPToken.ZLP): IConsts {
191
+ switch (network) {
192
+ case Network.MAINNET: {
193
+ switch (lpToken) {
194
+ case LPToken.ZLP: {
195
+ return parse(zlpMainnetJson)
196
+ }
197
+ case LPToken.SLP: {
198
+ return parse(slpMainnetJson)
199
+ }
200
+ case LPToken.USDZ: {
201
+ return parse(usdzMainnetJson)
202
+ }
203
+ case LPToken.ZBTCVC: {
204
+ return parse(zbtcvcMainnetJson)
205
+ }
206
+ default: {
207
+ throw new Error(`Unsupported LP token: ${lpToken}`)
208
+ }
209
+ }
210
+ }
211
+ case Network.TESTNET: {
212
+ switch (lpToken) {
213
+ case LPToken.ZLP: {
214
+ return parse(zlpTestnetJson)
215
+ }
216
+ case LPToken.SLP: {
217
+ return parse(slpTestnetJson)
218
+ }
219
+ case LPToken.USDZ: {
220
+ return parse(usdzTestnetJson)
221
+ }
222
+ case LPToken.ZBTCVC: {
223
+ throw new Error(`ZBTCVC testnet configuration not available`)
224
+ }
225
+ default: {
226
+ throw new Error(`Unsupported LP token: ${lpToken}`)
227
+ }
228
+ }
229
+ }
230
+ default: {
231
+ throwNetworkError(network)
232
+ }
233
+ }
234
+ }
235
+
236
+ export const ZBTCVC_TOKEN_DECIMALS = 8
237
+ export const ZLP_TOKEN_DECIMALS = 6
238
+ export const SLP_TOKEN_DECIMALS = 6
239
+ export const USDZ_TOKEN_DECIMALS = 6
240
+
241
+ export const SECONDS_PER_EIGHT_HOUR = 8 * 60 * 60
242
+
243
+ /**
244
+ * Get shared configuration (staking, lootbox, etc.) for a specific network
245
+ */
246
+ export function getSharedConfig(network: string): IConsts {
247
+ return network === Network.MAINNET
248
+ ? parse(sharedMainnetJson)
249
+ : network === Network.TESTNET
250
+ ? parse(sharedTestnetJson)
251
+ : throwNetworkError(network)
252
+ }
253
+
254
+ export function getPythFeederToPriceId(network: Network): Record<string, string> {
255
+ switch (network) {
256
+ case Network.TESTNET: {
257
+ return reverseKeyValue(PriceIdToObjectIdTestnet)
258
+ }
259
+ case Network.MAINNET: {
260
+ return reverseKeyValue(PriceIdToObjectIdMainnet)
261
+ }
262
+ default: {
263
+ return throwNetworkError(network)
264
+ }
265
+ }
266
+ }
267
+
268
+ export function getPriceIdToPythFeeder(network: Network): Record<string, string> {
269
+ let priceIdToFeeder: Record<string, string> = {}
270
+ switch (network) {
271
+ case Network.TESTNET: {
272
+ priceIdToFeeder = PriceIdToObjectIdTestnet
273
+ break
274
+ }
275
+ case Network.MAINNET: {
276
+ priceIdToFeeder = PriceIdToObjectIdMainnet
277
+ break
278
+ }
279
+ default: {
280
+ throw new Error(`Unknown network: ${network}`)
281
+ }
282
+ }
283
+ return priceIdToFeeder
284
+ }
285
+
286
+ export function getPythFeederToId(network: string): Record<string, string> {
287
+ const feederToId: Record<string, string> = {}
288
+
289
+ // Iterate through all LP tokens to collect feeder data
290
+ // Order matters here!
291
+ // Process ZLP only after SLP to ensure eth/nusdc stays in feederToId record, instead of suiEth/usdc,
292
+ // in order for eth price to show up in trading page. This is because:
293
+ // 1) eth/nusdc and suiEth/usdc have the same pyth feeder id.
294
+ // We are only keeping suiEth/usdc in the pythFeeder section of SLP deployment json
295
+ // because they are still part of SLP's vaults and they are needed for calculating SLP price.
296
+ // We can remove suiEth/usdc from pythFeeder section of SLP deployment json once they are no longer vaults for SLP
297
+ // 2) only SLP has both eth/nusdc and suiEth/usdc defined
298
+ // 3) ZLP only has eth/nusdc
299
+ // 4) USDZ does not have eth and only has nusdc
300
+ // By processing SLP first and then ZLP, we ensure that eth/nusdc will remain in the feederToId record
301
+ // TODO: If we want to support price id mapping to multiple tokens, we need to refactor this
302
+ const lpTokens = [LPToken.SLP, LPToken.ZLP, LPToken.USDZ]
303
+ const toBeDeprecatedFeeders = network === Network.MAINNET ? ['suiEth', 'usdc'] : []
304
+ const priorityFeeders = network === Network.MAINNET ? ['eth', 'nusdc'] : []
305
+
306
+ // Create sets to track which feeders we've encountered
307
+ const encounteredPriorityFeeders = new Set<string>()
308
+ const encounteredDeprecatedFeeders = new Set<string>()
309
+
310
+ for (const lpToken of lpTokens) {
311
+ const consts = getConsts(network, lpToken)
312
+ for (const key in consts.pythFeeder.feeder) {
313
+ if (Object.hasOwn(consts.pythFeeder.feeder, key)) {
314
+ const contract = consts.pythFeeder.feeder[key]
315
+ feederToId[contract] = key
316
+
317
+ // Track which feeders we've encountered
318
+ if (priorityFeeders.includes(key)) {
319
+ encounteredPriorityFeeders.add(key)
320
+ }
321
+ if (toBeDeprecatedFeeders.includes(key)) {
322
+ encounteredDeprecatedFeeders.add(key)
323
+ }
324
+ }
325
+ }
326
+ }
327
+
328
+ // Check if all priority feeders were encountered
329
+ const missingPriorityFeeders = priorityFeeders.filter(feeder => !encounteredPriorityFeeders.has(feeder))
330
+ if (missingPriorityFeeders.length > 0) {
331
+ throw new Error(`Critical error: Priority feeders missing from feederToId: ${missingPriorityFeeders.join(', ')}. Check feeder configurations.`)
332
+ }
333
+
334
+ // Check if all deprecated feeders were encountered
335
+ const missingDeprecatedFeeders = toBeDeprecatedFeeders.filter(feeder => !encounteredDeprecatedFeeders.has(feeder))
336
+ if (missingDeprecatedFeeders.length > 0) {
337
+ throw new Error(`Critical error: To be deprecated feeders missing from feederToId: ${missingDeprecatedFeeders.join(', ')}. Check feeder configurations.`)
338
+ }
339
+
340
+ return feederToId
341
+ }
342
+
343
+ export const ALLOW_TRADE_NO_TRADE = 0
344
+ export const ALLOW_TRADE_CAN_TRADE = 1
345
+ export const ALLOW_TRADE_MUST_TRADE = 2
@@ -0,0 +1,56 @@
1
+ {
2
+ "eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a": "0x5dec622733a204ca27f5a90d8c2fad453cc6665186fd5dff13a83d0b6c9027ab",
3
+ "2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b": "0x985e3db9f93f76ee8bace7c3dd5cc676a096accd5d9e09e9ae0fb6e492b14572",
4
+ "e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43": "0x9a62b4863bdeaabdc9500fce769cf7e72d5585eeb28a6d26e4cafadc13f76ab2",
5
+ "ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace": "0x9193fd47f9a0ab99b6e365a464c8a9ae30e6150fc37ed2a89c1586631f6fc4ab",
6
+ "ec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8": "0x93bfda25cb6b1653a9c769e8216014bd2c06997f3edb479566761fbf2abf6ac2",
7
+ "ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d": "0x9d0d275efbd37d8a8855f6f2c761fa5983293dd8ce202ee5196626de8fcd4469",
8
+ "dcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c": "0xd59a5f5173424ba725a7d033d86f2eadf2745f87a908bd27e1d27339eff598ce",
9
+ "23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744": "0x801dbc2f0053d34734814b2d6df491ce7807a725fe9a01ad74a07e9c51396c37",
10
+ "4279e31cc369bbcc2faf022b382b080e32a8e689ff20fbc530d2a603eb6cd98b": "0x1c047be615eaa5a87afa0e111b20a512dd6c0f4a1f0f691693cf852c1768f35d",
11
+ "d40472610abe56d36d065a0cf889fc8f1dd9f3b7f2a478231a5fc6df07ea5ce3": "0xa64a406662db4ecde675fde111033e80629397715afc7fff53064f41dabab42f",
12
+ "879551021853eec7a7dc827578e8e69da7e4fa8148339aa0d3d5296405be4b1a": "0xd0835474be8cfcc7be4e02fc1bcd85dbdf11a54d061edc302e611ca304f57b14",
13
+ "eba0732395fae9dec4bae12e52760b35fc1c5671e2da8b449c9af4efe5d54341": "0xeb7e669f74d976c0b99b6ef9801e3a77716a95f1a15754e0f1399ce3fb60973d",
14
+ "29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff": "0x8c7f3a322b94cc69db2a2ac575cbd94bf5766113324c3a3eceac91e3e88a51ed",
15
+ "e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef": "0x24c0247fb22457a719efac7f670cdc79be321b521460bd6bd2ccfa9f80713b14",
16
+ "e67d98cc1fbd94f569d5ba6c3c3c759eb3ffc5d2b28e64538a53ae13efad8fd1": "0xbc98681c15de1ca1b80a8e26500d43c77f7113368b024de1bf490afcb0387109",
17
+ "93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7": "0x29e37978cb1c9501bda5d7c105f24f0058bc1668637e307fbc290dba48cb918d",
18
+ "2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f": "0x9c6e77f0ecfc46aac395e21c52ccb96518f85acacae743c5b47f4ca5e29826c3",
19
+ "2a01deaec9e51a579277b34b122399984d0bbf57e2458a7e42fecd2829867a0d": "0xf28e4e40a96948a19805fe76a4da373a262daac47588bac78d73033bce7b5a38",
20
+ "273717b49430906f4b0c230e99aa1007f83758e3199edbc887c0d06c3e332494": "0x78394446b806dcd3b26011b1c7fcfab104f95b718299bc98ff730983105bf943",
21
+ "0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996": "0xb804ada6f77feb30a73fbed7fc53dc66ff25133dee0815109d4267e43b2e6bdd",
22
+ "2b9ab1e972a281585084148ba1389800799bd4be63b957507db1349314e47445": "0x4d1862d9ca2ad1f054f606220c22e0bcf37330d57bb82baa2063fd8193fc24ae",
23
+ "58cd29ef0e714c5affc44f269b2c1899a52da4169d7acc147b9da692e6953608": "0x330c38d9af008421306242945f9308dc80c0c6a3e30b289a079fbff5ceeb4696",
24
+ "8414cfadf82f6bed644d2e399c11df21ec0131aa574c56030b132113dbbf3a0a": "0xbfa0e395413d94a7c45a9b987431a313a6e9da2e1b892f1924f64a0aff21e59f",
25
+ "09f7c1d7dfbb7df2b8fe3d3d87ee94a2259d212da4f30c1f0540d066dfa44723": "0xfa3d517e6ae2647708313f811fe7f481f8254cd738073e3e23dfca3b578c21d2",
26
+ "eff7446475e218517566ea99e72a4abec2e1bd8498b43b7d8331e29dcb059389": "0xd2e6ed72dcd8922164e1aa833ff39077cf01cb55b41a37324e8baccf93b1be9d",
27
+ "17cd845b16e874485b2684f8b8d1517d744105dbb904eec30222717f4bc9ee0d": "0xd779885c5246357e24cbde7348f2d81f756d9650975c02d81346b15d8b557ebf",
28
+ "57ff7100a282e4af0c91154679c5dae2e5dcacb93fd467ea9cb7e58afdcfde27": "0xf3bc79117acc3636d57778d9d0f83a871df1b7a53eb61fe893ff108d9664ec8b",
29
+ "fdf28a46570252b25fd31cb257973f865afc5ca2f320439e45d95e0394bc7382": "0x3ef821a54dbdfe3f211b2ff7261dea0f0330c72fd292422ce586e21f43809a56",
30
+ "d9912df360b5b7f21a122f15bdd5e27f62ce5e72bd316c291f7c86620e07fb2a": "0x94ef89923e7beccd4a52043a9451a87c614684b847426fb5fd76faa8cb1e907f",
31
+ "bb5ff26e47a3a6cc7ec2fce1db996c2a145300edc5acaabe43bf9ff7c5dd5d32": "0xc6352e1ea55d7b5acc3ed690cc3cdf8007978071d7bfd6a189445018cfb366e0",
32
+ "03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5": "0x7c5b7837c44a69b469325463ac0673ac1aa8435ff44ddb4191c9ae380463647f",
33
+ "2b529621fa6e2c8429f623ba705572aa64175d7768365ef829df6a12c9f365f4": "0x06c6b9e6eb87da329189e713b7fb319cc7990cf5abf192862a443f939eedc43b",
34
+ "fa9e8d4591613476ad0961732475dc08969d248faca270cc6c47efe009ea3070": "0x23de8ef5ba1021dc6dfd49f7547543aa55f663bd49de9ed549f598f63808ebe4",
35
+ "a903b5a82cb572397e3d47595d2889cf80513f5b4cf7a36b513ae10cc8b1e338": "0x911f388e4ef67a674548b9ebc927efb80ebd6ed56932b6fdd4cf9ffd959ad471",
36
+ "d41369178d64f41d51ca95465c144a2c74d2fff30be69164835911943fa64c3e": "0x033a11423b915769b73532a9f527acc010fe99482b3fecb6d9ba54b076d24517",
37
+ "1fc9127232d059b415f7b11989d06aa11a3563619e5b7a8e44ae440f0b95e4e1": "0xf5f3aec1b43801feb149aabe436f93e437c414778278fc9e298d49d1c0b7c4f3",
38
+ "6120ffcf96395c70aa77e72dcb900bf9d40dccab228efca59a17b90ce423d5e8": "0x4c1d831576b60fec657e0c310943eff8c1f28197c552e57d1fefdc55edddb263",
39
+ "0b3eae8cb6e221e7388a435290e0f2211172563f94769077b7f4c4c6a11eea76": "0x1366f68b08a61380189dbb5cfca51c541309e7856bc2bbe5adbcdc966bab8734",
40
+ "31491744e2dbf6df7fcf4ac0820d18a609b49076d45066d3568424e62f686cd1": "0x83fef1bd1d597a0db1539c27a0baa06c3151268d09cbae0239ec9a1408d30932",
41
+ "bf3e5871be3f80ab7a4d1f1fd039145179fb58569e159aee1ccd472868ea5900": "0x0cd398ea0262b504a946b3d4acde457a21bee9d41a27083ebf6ec19f99272155",
42
+ "4244d07890e4610f46bbde67de8f43a4bf8b569eebe904f136b469f148503b7f": "0x1ccc57727035cc40a122cecd95f15240de4fb3f2acd5542c8f2109ebc47871a1",
43
+ "f2fb02c32b055c805e7238d628e5e9dadef274376114eb1f012337cabe93871e": "0xd5c5afce92e988bf0a0940d618443c36c31dd7f239a545982db3166e963c9aa4",
44
+ "765d2ba906dbc32ca17cc11f5310a89e9ee1f6420508c63861f2f8ba4ee34bb2": "0x5b36eb3c0935908082926c0c767a55b87a2a4eb3a45908785b41f9d5a11e4f7b",
45
+ "80367e9664197f37d89a07a804dffd2101c479c7c4e8490501bc9d9e1e7f9021": "0x69e2ce1dff0803a552ff65df4cf10a70bde51a6798643d74a388697527acd892",
46
+ "398e4bbc7cbf89d6648c21e08019d878967677753b3096799595c78f805a34e5": "0xd1264fcf49db849ce096a95d5265aa9b908d8827c0c8a8344ce7886cd78b4123",
47
+ "ef2c98c804ba503c6a707e38be4dfbb16683775f195b091252bf24693042fd52": "0xde0e6088e7292f50738ecbdebd4502415d4f8de4cfe001918e29b3f4faf15baa",
48
+ "a995d00bb36a63cef7fd2c287dc105fc8f3d93779f062f09551b0af3e81ec30b": "0xe3dfb7a7682ed51c9ba78e027ba92d2a27a59f4c574ebe03b543a544fc04fab7",
49
+ "19e09bb805456ada3979a7d1cbb4b6d63babc3a0f8e8a9509f68afa5c4c11cd5": "0xe1d36d749ce811cbcb09ad882e2b4f757c689bd0f651974b014fea4a1f0f1606",
50
+ "7c95b744797b88e94ddfc81e1f6833c18c78b9e086285b7bc778b4ef840f372e": "0xc7ec4210e9a996288460e1b894e8e7dce9a903ad01c254ddba499c65d3a8664e",
51
+ "9695e2b96ea7b3859da9ed25b7a46a920a776e2fdae19a7bcfdf2b219230452d": "0xff04e2faf29a52b188eac2be8becccfa56ec17b5f343c8fc907930067534c3c5",
52
+ "152244dc24665ca7dd3f257b8f442dc449b6346f48235b7b229268cb770dda2d": "0x0c9a22da553556cf33195c42aaefeb23c76e0fc24db785ff65e90e29756a5e82",
53
+ "5a48c03e9b9cb337801073ed9d166817473697efff0d138874e0f6a33d6d5aa6": "0x15f04f67742e9778cf04ab80830ab99d7c956068df3a2f17c0f0cd47a7a2fc5c",
54
+ "925ca92ff005ae943c158e3563f59698ce7e75c5a8c8dd43303a0a154887b3e6": "0x71e40a6e2af5a194e149a761ae11d43e987b9ecbee1834d65d61103721c72e02",
55
+ "8cead549d0e770dea8fdf5e018a85d59585265cf8bff16ba83962fc7996dbb7f": "0x9b2028bfc829127d2e5ead1691dc3002de9e9b8d8076b4915e5ecc7d9b99d63f"
56
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "1fc18861232290221461220bd4e2acd1dcdfbc89c84092c93c18bdc7756c1588": "0x956fdcbf83a26c962319f7742f5728a0a7ce59c7f0cbe13c112b259e7ee953cd",
3
+ "31775e1d6897129e8a84eeba975778fb50015b88039e9bc140bbd839694ac0ae": "0x17b358d730663caa888c8b621b9994a60af422cd83f32237c6b2a8b3230d71b9",
4
+ "3f545e3f4ec9fd8eb3b9d9d6071a1da361f6729fa1b93d1d1baca3379551d99e": "0xfe38289883c3afed692e5856f4896b3e094d4793e2ccf0a2715b890a718fa5c0",
5
+ "41f3625971ca2ed2263e78573fe5ce23e13d2558ed3f2e47ab0f84fb9e7ae722": "0x9c4dd4008297ffa5e480684b8100ec21cc934405ed9a25d4e4d7b6259aad9c81",
6
+ "50c67b3fd225db8912a424dd4baed60ffdde625ed2feaaf283724f9608fea266": "0x1ebb295c789cc42b3b2a1606482cd1c7124076a0f5676718501fda8c7fd075a0",
7
+ "6cdc09f443fe8ed53517b9760b0674d054e719de9b83cba1bbb02c2439448590": "0xfb459da0f174b1ff0870323175da8d25c8d6d1b9f542d9c0801370e0af15b228",
8
+ "8112fed370f3d9751e513f7696472eab61b7f4e2487fd9f46c93de00a338631c": "0xc067432fbb32f09dfa38ef5adaea01b2f34f350cf4620a4ee426ee1552c8fcfe",
9
+ "946292ad3f481f36f5e558726cf4974e2a7a34598bf15d2abe3619e7b6a8db91": "0x94905bdcaa656b0908aa8a3a42cf72b0e8e2e849f7d0a7e0e39bb9e1dc3c9cf6",
10
+ "99137a18354efa7fb6840889d059fdb04c46a6ce21be97ab60d9ad93e91ac758": "0x3d52fffa2cd9e54b39bb36d282bdda560b15b8b4fdf4766a3c58499ef172bafc",
11
+ "ca80ba6dc32e08d06f1aa886011eed1d77c77be9eb761cc10d72b7d0a2fd57a6": "0x4fde30cb8a5dc3cfee1c1c358fc66dc308408827efb217247c7ba54d76ccbee9",
12
+ "cb324dafd531712dd31c39969ae0246ee4c6ae167257bcf8ac27e28ca35e6a0c": "0xb0ba78106259b7ceefd288edc5f65b65f8b7bca0816e61dae5136616aac7d3da",
13
+ "d2c2c1f2bba8e0964f9589e060c2ee97f5e19057267ac3284caef3bd50bd2cb5": "0xe791d83be9ba9c271a6f956235381bb4c10208bd8aced8628cf1341b35f63fa0",
14
+ "eacabc6304d11fc10a757f63286ef44415d8e91b7a1a525ae94a7ec9398b73f3": "0xf96e3c4b7d74efbde9df5b669188421196e6164adf6fbaaa92903c42569807c8",
15
+ "f9c0172ba10dfa4d19088d94f5bf61d3b54d5bd7483a322a982e1373ee8ea31b": "0x72431a238277695d3f31e4425225a4462674ee6cceeea9d66447b210755fffba",
16
+ "fe650f0367d4a7ef9815a593ea15d36593f0643aaaf0149bb04be67ab851decd": "0x33fbce1cad5ca155f2f5051430b23a694bc6e5de6df43e0f8aefe29f4a84336d"
17
+ }