@haneullabs/deepbook-v3 0.1.0 → 1.2.1

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 (612) hide show
  1. package/CHANGELOG.md +342 -81
  2. package/dist/client.d.mts +238 -0
  3. package/dist/client.d.mts.map +1 -0
  4. package/dist/client.mjs +397 -0
  5. package/dist/client.mjs.map +1 -0
  6. package/dist/contracts/deepbook/account.d.mts +37 -0
  7. package/dist/contracts/deepbook/account.d.mts.map +1 -0
  8. package/dist/contracts/deepbook/account.mjs +31 -0
  9. package/dist/contracts/deepbook/account.mjs.map +1 -0
  10. package/dist/contracts/deepbook/balances.d.mts +12 -0
  11. package/dist/contracts/deepbook/balances.d.mts.map +1 -0
  12. package/dist/contracts/deepbook/balances.mjs +24 -0
  13. package/dist/contracts/deepbook/balances.mjs.map +1 -0
  14. package/dist/contracts/deepbook/deep_price.d.mts +12 -0
  15. package/dist/contracts/deepbook/deep_price.d.mts.map +1 -0
  16. package/dist/contracts/deepbook/deep_price.mjs +49 -0
  17. package/dist/contracts/deepbook/deep_price.mjs.map +1 -0
  18. package/dist/contracts/deepbook/deps/haneul/vec_set.d.mts +21 -0
  19. package/dist/contracts/deepbook/deps/haneul/vec_set.d.mts.map +1 -0
  20. package/dist/contracts/deepbook/deps/haneul/vec_set.mjs +26 -0
  21. package/dist/contracts/deepbook/deps/haneul/vec_set.mjs.map +1 -0
  22. package/dist/contracts/deepbook/order.d.mts +23 -0
  23. package/dist/contracts/deepbook/order.d.mts.map +1 -0
  24. package/dist/contracts/deepbook/order.mjs +63 -0
  25. package/dist/contracts/deepbook/order.mjs.map +1 -0
  26. package/dist/contracts/pyth/data_source.mjs +20 -0
  27. package/dist/contracts/pyth/data_source.mjs.map +1 -0
  28. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs +21 -0
  29. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs.map +1 -0
  30. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +19 -0
  31. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -0
  32. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.mjs +16 -0
  33. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.mjs.map +1 -0
  34. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.mjs +16 -0
  35. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.mjs.map +1 -0
  36. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.mjs +16 -0
  37. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.mjs.map +1 -0
  38. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs +16 -0
  39. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs.map +1 -0
  40. package/dist/contracts/pyth/i64.mjs +19 -0
  41. package/dist/contracts/pyth/i64.mjs.map +1 -0
  42. package/dist/contracts/pyth/price.mjs +22 -0
  43. package/dist/contracts/pyth/price.mjs.map +1 -0
  44. package/dist/contracts/pyth/price_feed.mjs +21 -0
  45. package/dist/contracts/pyth/price_feed.mjs.map +1 -0
  46. package/dist/contracts/pyth/price_identifier.mjs +16 -0
  47. package/dist/contracts/pyth/price_identifier.mjs.map +1 -0
  48. package/dist/contracts/pyth/price_info.mjs +28 -0
  49. package/dist/contracts/pyth/price_info.mjs.map +1 -0
  50. package/dist/contracts/pyth/state.mjs +36 -0
  51. package/dist/contracts/pyth/state.mjs.map +1 -0
  52. package/dist/contracts/utils/index.d.mts +34 -0
  53. package/dist/contracts/utils/index.d.mts.map +1 -0
  54. package/dist/contracts/utils/index.mjs +35 -0
  55. package/dist/contracts/utils/index.mjs.map +1 -0
  56. package/dist/contracts/wormhole/bytes32.mjs +16 -0
  57. package/dist/contracts/wormhole/bytes32.mjs.map +1 -0
  58. package/dist/contracts/wormhole/consumed_vaas.mjs +16 -0
  59. package/dist/contracts/wormhole/consumed_vaas.mjs.map +1 -0
  60. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs +16 -0
  61. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs.map +1 -0
  62. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs +21 -0
  63. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs.map +1 -0
  64. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +19 -0
  65. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -0
  66. package/dist/contracts/wormhole/external_address.mjs +16 -0
  67. package/dist/contracts/wormhole/external_address.mjs.map +1 -0
  68. package/dist/contracts/wormhole/fee_collector.mjs +20 -0
  69. package/dist/contracts/wormhole/fee_collector.mjs.map +1 -0
  70. package/dist/contracts/wormhole/set.mjs +16 -0
  71. package/dist/contracts/wormhole/set.mjs.map +1 -0
  72. package/dist/contracts/wormhole/state.mjs +31 -0
  73. package/dist/contracts/wormhole/state.mjs.map +1 -0
  74. package/dist/index.d.mts +25 -0
  75. package/dist/index.mjs +26 -0
  76. package/dist/pyth/PriceServiceConnection.d.mts +26 -0
  77. package/dist/pyth/PriceServiceConnection.d.mts.map +1 -0
  78. package/dist/pyth/PriceServiceConnection.mjs +35 -0
  79. package/dist/pyth/PriceServiceConnection.mjs.map +1 -0
  80. package/dist/pyth/pyth-helpers.mjs +18 -0
  81. package/dist/pyth/pyth-helpers.mjs.map +1 -0
  82. package/dist/pyth/pyth.d.mts +69 -0
  83. package/dist/pyth/pyth.d.mts.map +1 -0
  84. package/dist/pyth/pyth.mjs +220 -0
  85. package/dist/pyth/pyth.mjs.map +1 -0
  86. package/dist/queries/accountQueries.mjs +104 -0
  87. package/dist/queries/accountQueries.mjs.map +1 -0
  88. package/dist/queries/balanceManagerQueries.mjs +113 -0
  89. package/dist/queries/balanceManagerQueries.mjs.map +1 -0
  90. package/dist/queries/context.mjs +15 -0
  91. package/dist/queries/context.mjs.map +1 -0
  92. package/dist/queries/marginManagerQueries.mjs +365 -0
  93. package/dist/queries/marginManagerQueries.mjs.map +1 -0
  94. package/dist/queries/marginPoolQueries.mjs +184 -0
  95. package/dist/queries/marginPoolQueries.mjs.map +1 -0
  96. package/dist/queries/orderQueries.mjs +165 -0
  97. package/dist/queries/orderQueries.mjs.map +1 -0
  98. package/dist/queries/poolQueries.mjs +234 -0
  99. package/dist/queries/poolQueries.mjs.map +1 -0
  100. package/dist/queries/priceFeedQueries.mjs +83 -0
  101. package/dist/queries/priceFeedQueries.mjs.map +1 -0
  102. package/dist/queries/quantityQueries.mjs +216 -0
  103. package/dist/queries/quantityQueries.mjs.map +1 -0
  104. package/dist/queries/referralQueries.mjs +96 -0
  105. package/dist/queries/referralQueries.mjs.map +1 -0
  106. package/dist/queries/registryQueries.mjs +162 -0
  107. package/dist/queries/registryQueries.mjs.map +1 -0
  108. package/dist/queries/tpslQueries.mjs +62 -0
  109. package/dist/queries/tpslQueries.mjs.map +1 -0
  110. package/dist/transactions/balanceManager.d.mts +174 -0
  111. package/dist/transactions/balanceManager.d.mts.map +1 -0
  112. package/dist/transactions/balanceManager.mjs +234 -0
  113. package/dist/transactions/balanceManager.mjs.map +1 -0
  114. package/dist/transactions/deepbook.d.mts +490 -0
  115. package/dist/transactions/deepbook.d.mts.map +1 -0
  116. package/dist/transactions/deepbook.mjs +979 -0
  117. package/dist/transactions/deepbook.mjs.map +1 -0
  118. package/dist/transactions/deepbookAdmin.d.mts +111 -0
  119. package/dist/transactions/deepbookAdmin.d.mts.map +1 -0
  120. package/dist/transactions/deepbookAdmin.mjs +222 -0
  121. package/dist/transactions/deepbookAdmin.mjs.map +1 -0
  122. package/dist/transactions/flashLoans.d.mts +61 -0
  123. package/dist/transactions/flashLoans.d.mts.map +1 -0
  124. package/dist/transactions/flashLoans.mjs +77 -0
  125. package/dist/transactions/flashLoans.mjs.map +1 -0
  126. package/dist/transactions/governance.d.mts +47 -0
  127. package/dist/transactions/governance.d.mts.map +1 -0
  128. package/dist/transactions/governance.mjs +91 -0
  129. package/dist/transactions/governance.mjs.map +1 -0
  130. package/dist/transactions/marginAdmin.d.mts +138 -0
  131. package/dist/transactions/marginAdmin.d.mts.map +1 -0
  132. package/dist/transactions/marginAdmin.mjs +250 -0
  133. package/dist/transactions/marginAdmin.mjs.map +1 -0
  134. package/dist/transactions/marginLiquidations.d.mts +67 -0
  135. package/dist/transactions/marginLiquidations.d.mts.map +1 -0
  136. package/dist/transactions/marginLiquidations.mjs +110 -0
  137. package/dist/transactions/marginLiquidations.mjs.map +1 -0
  138. package/dist/transactions/marginMaintainer.d.mts +86 -0
  139. package/dist/transactions/marginMaintainer.d.mts.map +1 -0
  140. package/dist/transactions/marginMaintainer.mjs +161 -0
  141. package/dist/transactions/marginMaintainer.mjs.map +1 -0
  142. package/dist/transactions/marginManager.d.mts +247 -0
  143. package/dist/transactions/marginManager.d.mts.map +1 -0
  144. package/dist/transactions/marginManager.mjs +548 -0
  145. package/dist/transactions/marginManager.mjs.map +1 -0
  146. package/dist/transactions/marginPool.d.mts +140 -0
  147. package/dist/transactions/marginPool.d.mts.map +1 -0
  148. package/dist/transactions/marginPool.mjs +207 -0
  149. package/dist/transactions/marginPool.mjs.map +1 -0
  150. package/dist/transactions/marginRegistry.d.mts +100 -0
  151. package/dist/transactions/marginRegistry.d.mts.map +1 -0
  152. package/dist/transactions/marginRegistry.mjs +128 -0
  153. package/dist/transactions/marginRegistry.mjs.map +1 -0
  154. package/dist/transactions/marginTPSL.d.mts +100 -0
  155. package/dist/transactions/marginTPSL.d.mts.map +1 -0
  156. package/dist/transactions/marginTPSL.mjs +173 -0
  157. package/dist/transactions/marginTPSL.mjs.map +1 -0
  158. package/dist/transactions/poolProxy.d.mts +123 -0
  159. package/dist/transactions/poolProxy.d.mts.map +1 -0
  160. package/dist/transactions/poolProxy.mjs +336 -0
  161. package/dist/transactions/poolProxy.mjs.map +1 -0
  162. package/dist/types/bcs.d.mts +5 -0
  163. package/dist/types/bcs.mjs +7 -0
  164. package/dist/types/index.d.mts +374 -0
  165. package/dist/types/index.d.mts.map +1 -0
  166. package/dist/types/index.mjs +18 -0
  167. package/dist/types/index.mjs.map +1 -0
  168. package/dist/utils/config.d.mts +90 -0
  169. package/dist/utils/config.d.mts.map +1 -0
  170. package/dist/utils/config.mjs +104 -0
  171. package/dist/utils/config.mjs.map +1 -0
  172. package/dist/utils/constants.d.mts +93 -0
  173. package/dist/utils/constants.d.mts.map +1 -0
  174. package/dist/utils/constants.mjs +408 -0
  175. package/dist/utils/constants.mjs.map +1 -0
  176. package/dist/utils/conversion.mjs +26 -0
  177. package/dist/utils/conversion.mjs.map +1 -0
  178. package/dist/utils/errors.d.mts +46 -0
  179. package/dist/utils/errors.d.mts.map +1 -0
  180. package/dist/utils/errors.mjs +59 -0
  181. package/dist/utils/errors.mjs.map +1 -0
  182. package/dist/{cjs/utils/validation.d.ts → utils/validation.d.mts} +11 -7
  183. package/dist/utils/validation.d.mts.map +1 -0
  184. package/dist/utils/validation.mjs +76 -0
  185. package/dist/utils/validation.mjs.map +1 -0
  186. package/package.json +30 -26
  187. package/src/client.ts +467 -2255
  188. package/src/contracts/deepbook/account.ts +15 -15
  189. package/src/contracts/deepbook/balance_manager.ts +343 -57
  190. package/src/contracts/deepbook/balances.ts +3 -2
  191. package/src/contracts/deepbook/big_vector.ts +6 -7
  192. package/src/contracts/deepbook/book.ts +3 -2
  193. package/src/contracts/deepbook/constants.ts +95 -3
  194. package/src/contracts/deepbook/deep_price.ts +7 -7
  195. package/src/contracts/deepbook/deps/{sui → haneul}/bag.ts +8 -8
  196. package/src/contracts/deepbook/deps/{sui → haneul}/balance.ts +4 -3
  197. package/src/contracts/deepbook/deps/{sui → haneul}/table.ts +6 -6
  198. package/src/contracts/deepbook/deps/{sui → haneul}/vec_map.ts +4 -4
  199. package/src/contracts/deepbook/deps/{sui → haneul}/vec_set.ts +4 -4
  200. package/src/contracts/deepbook/deps/{sui → haneul}/versioned.ts +4 -4
  201. package/src/contracts/deepbook/deps/std/type_name.ts +3 -2
  202. package/src/contracts/deepbook/ewma.ts +14 -3
  203. package/src/contracts/deepbook/fill.ts +21 -21
  204. package/src/contracts/deepbook/governance.ts +4 -3
  205. package/src/contracts/deepbook/history.ts +4 -3
  206. package/src/contracts/deepbook/math.ts +15 -15
  207. package/src/contracts/deepbook/order.ts +16 -16
  208. package/src/contracts/deepbook/order_info.ts +39 -27
  209. package/src/contracts/deepbook/order_query.ts +12 -12
  210. package/src/contracts/deepbook/pool.ts +883 -526
  211. package/src/contracts/deepbook/registry.ts +149 -38
  212. package/src/contracts/deepbook/state.ts +14 -3
  213. package/src/contracts/deepbook/trade_params.ts +3 -2
  214. package/src/contracts/deepbook/vault.ts +5 -4
  215. package/src/contracts/pyth/batch_price_attestation.ts +92 -0
  216. package/src/contracts/pyth/contract_upgrade.ts +54 -0
  217. package/src/contracts/pyth/data_source.ts +64 -0
  218. package/src/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.ts +15 -0
  219. package/src/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.ts +13 -0
  220. package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.ts +12 -0
  221. package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.ts +13 -0
  222. package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.ts +13 -0
  223. package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.ts +12 -0
  224. package/src/contracts/pyth/deserialize.ts +117 -0
  225. package/src/contracts/pyth/event.ts +20 -0
  226. package/src/contracts/pyth/governance.ts +113 -0
  227. package/src/contracts/pyth/governance_action.ts +130 -0
  228. package/src/contracts/pyth/governance_instruction.ts +98 -0
  229. package/src/contracts/pyth/hot_potato_vector.ts +70 -0
  230. package/src/contracts/pyth/i64.ts +94 -0
  231. package/src/contracts/pyth/merkle_tree.ts +41 -0
  232. package/src/contracts/pyth/migrate.ts +29 -0
  233. package/src/contracts/pyth/price.ts +102 -0
  234. package/src/contracts/pyth/price_feed.ts +101 -0
  235. package/src/contracts/pyth/price_identifier.ts +46 -0
  236. package/src/contracts/pyth/price_info.ts +220 -0
  237. package/src/contracts/pyth/price_status.ts +74 -0
  238. package/src/contracts/pyth/pyth.ts +236 -0
  239. package/src/contracts/pyth/set.ts +93 -0
  240. package/src/contracts/pyth/set_data_sources.ts +14 -0
  241. package/src/contracts/pyth/set_fee_recipient.ts +13 -0
  242. package/src/contracts/pyth/set_governance_data_source.ts +16 -0
  243. package/src/contracts/pyth/set_stale_price_threshold.ts +13 -0
  244. package/src/contracts/pyth/set_update_fee.ts +14 -0
  245. package/src/contracts/pyth/setup.ts +12 -0
  246. package/src/contracts/pyth/state.ts +227 -0
  247. package/src/contracts/pyth/version_control.ts +25 -0
  248. package/src/contracts/utils/index.ts +100 -50
  249. package/src/contracts/wormhole/bytes32.ts +12 -0
  250. package/src/contracts/wormhole/consumed_vaas.ts +13 -0
  251. package/src/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.ts +12 -0
  252. package/src/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.ts +15 -0
  253. package/src/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.ts +13 -0
  254. package/src/contracts/wormhole/external_address.ts +13 -0
  255. package/src/contracts/wormhole/fee_collector.ts +15 -0
  256. package/src/contracts/wormhole/set.ts +12 -0
  257. package/src/contracts/wormhole/state.ts +25 -0
  258. package/src/index.ts +44 -3
  259. package/src/pyth/pyth.ts +51 -50
  260. package/src/queries/accountQueries.ts +117 -0
  261. package/src/queries/balanceManagerQueries.ts +156 -0
  262. package/src/queries/context.ts +44 -0
  263. package/src/queries/index.ts +16 -0
  264. package/src/queries/marginManagerQueries.ts +575 -0
  265. package/src/queries/marginPoolQueries.ts +226 -0
  266. package/src/queries/orderQueries.ts +202 -0
  267. package/src/queries/poolQueries.ts +266 -0
  268. package/src/queries/priceFeedQueries.ts +141 -0
  269. package/src/queries/quantityQueries.ts +266 -0
  270. package/src/queries/referralQueries.ts +112 -0
  271. package/src/queries/registryQueries.ts +185 -0
  272. package/src/queries/tpslQueries.ts +88 -0
  273. package/src/transactions/balanceManager.ts +5 -4
  274. package/src/transactions/deepbook.ts +117 -84
  275. package/src/transactions/deepbookAdmin.ts +10 -9
  276. package/src/transactions/flashLoans.ts +5 -4
  277. package/src/transactions/governance.ts +5 -4
  278. package/src/transactions/marginAdmin.ts +12 -8
  279. package/src/transactions/marginLiquidations.ts +5 -4
  280. package/src/transactions/marginMaintainer.ts +28 -16
  281. package/src/transactions/marginManager.ts +78 -29
  282. package/src/transactions/marginPool.ts +7 -7
  283. package/src/transactions/marginTPSL.ts +16 -11
  284. package/src/transactions/poolProxy.ts +62 -11
  285. package/src/types/bcs.ts +1 -1
  286. package/src/types/index.ts +217 -53
  287. package/src/utils/config.ts +38 -17
  288. package/src/utils/constants.ts +73 -18
  289. package/src/utils/conversion.ts +33 -0
  290. package/src/utils/validation.ts +1 -1
  291. package/dist/cjs/client.d.ts +0 -861
  292. package/dist/cjs/client.js +0 -1982
  293. package/dist/cjs/client.js.map +0 -7
  294. package/dist/cjs/contracts/deepbook/account.d.ts +0 -105
  295. package/dist/cjs/contracts/deepbook/account.js +0 -163
  296. package/dist/cjs/contracts/deepbook/account.js.map +0 -7
  297. package/dist/cjs/contracts/deepbook/balance_manager.d.ts +0 -268
  298. package/dist/cjs/contracts/deepbook/balance_manager.js +0 -361
  299. package/dist/cjs/contracts/deepbook/balance_manager.js.map +0 -7
  300. package/dist/cjs/contracts/deepbook/balances.d.ts +0 -10
  301. package/dist/cjs/contracts/deepbook/balances.js +0 -35
  302. package/dist/cjs/contracts/deepbook/balances.js.map +0 -7
  303. package/dist/cjs/contracts/deepbook/big_vector.d.ts +0 -62
  304. package/dist/cjs/contracts/deepbook/big_vector.js +0 -80
  305. package/dist/cjs/contracts/deepbook/big_vector.js.map +0 -7
  306. package/dist/cjs/contracts/deepbook/book.d.ts +0 -34
  307. package/dist/cjs/contracts/deepbook/book.js +0 -50
  308. package/dist/cjs/contracts/deepbook/book.js.map +0 -7
  309. package/dist/cjs/contracts/deepbook/constants.d.ts +0 -176
  310. package/dist/cjs/contracts/deepbook/constants.js +0 -338
  311. package/dist/cjs/contracts/deepbook/constants.js.map +0 -7
  312. package/dist/cjs/contracts/deepbook/deep_price.d.ts +0 -60
  313. package/dist/cjs/contracts/deepbook/deep_price.js +0 -87
  314. package/dist/cjs/contracts/deepbook/deep_price.js.map +0 -7
  315. package/dist/cjs/contracts/deepbook/deps/std/type_name.d.ts +0 -14
  316. package/dist/cjs/contracts/deepbook/deps/std/type_name.js +0 -42
  317. package/dist/cjs/contracts/deepbook/deps/std/type_name.js.map +0 -7
  318. package/dist/cjs/contracts/deepbook/deps/sui/bag.d.ts +0 -33
  319. package/dist/cjs/contracts/deepbook/deps/sui/bag.js +0 -47
  320. package/dist/cjs/contracts/deepbook/deps/sui/bag.js.map +0 -7
  321. package/dist/cjs/contracts/deepbook/deps/sui/balance.d.ts +0 -9
  322. package/dist/cjs/contracts/deepbook/deps/sui/balance.js +0 -33
  323. package/dist/cjs/contracts/deepbook/deps/sui/balance.js.map +0 -7
  324. package/dist/cjs/contracts/deepbook/deps/sui/object.d.ts +0 -5
  325. package/dist/cjs/contracts/deepbook/deps/sui/object.js +0 -33
  326. package/dist/cjs/contracts/deepbook/deps/sui/object.js.map +0 -7
  327. package/dist/cjs/contracts/deepbook/deps/sui/table.d.ts +0 -28
  328. package/dist/cjs/contracts/deepbook/deps/sui/table.js +0 -47
  329. package/dist/cjs/contracts/deepbook/deps/sui/table.js.map +0 -7
  330. package/dist/cjs/contracts/deepbook/deps/sui/vec_map.d.ts +0 -27
  331. package/dist/cjs/contracts/deepbook/deps/sui/vec_map.js +0 -45
  332. package/dist/cjs/contracts/deepbook/deps/sui/vec_map.js.map +0 -7
  333. package/dist/cjs/contracts/deepbook/deps/sui/vec_set.d.ts +0 -15
  334. package/dist/cjs/contracts/deepbook/deps/sui/vec_set.js +0 -35
  335. package/dist/cjs/contracts/deepbook/deps/sui/vec_set.js.map +0 -7
  336. package/dist/cjs/contracts/deepbook/deps/sui/versioned.d.ts +0 -7
  337. package/dist/cjs/contracts/deepbook/deps/sui/versioned.js +0 -45
  338. package/dist/cjs/contracts/deepbook/deps/sui/versioned.js.map +0 -7
  339. package/dist/cjs/contracts/deepbook/ewma.d.ts +0 -17
  340. package/dist/cjs/contracts/deepbook/ewma.js +0 -39
  341. package/dist/cjs/contracts/deepbook/ewma.js.map +0 -7
  342. package/dist/cjs/contracts/deepbook/fill.d.ts +0 -153
  343. package/dist/cjs/contracts/deepbook/fill.js +0 -251
  344. package/dist/cjs/contracts/deepbook/fill.js.map +0 -7
  345. package/dist/cjs/contracts/deepbook/governance.d.ts +0 -63
  346. package/dist/cjs/contracts/deepbook/governance.js +0 -79
  347. package/dist/cjs/contracts/deepbook/governance.js.map +0 -7
  348. package/dist/cjs/contracts/deepbook/history.d.ts +0 -60
  349. package/dist/cjs/contracts/deepbook/history.js +0 -78
  350. package/dist/cjs/contracts/deepbook/history.js.map +0 -7
  351. package/dist/cjs/contracts/deepbook/math.d.ts +0 -94
  352. package/dist/cjs/contracts/deepbook/math.js +0 -132
  353. package/dist/cjs/contracts/deepbook/math.js.map +0 -7
  354. package/dist/cjs/contracts/deepbook/order.d.ts +0 -135
  355. package/dist/cjs/contracts/deepbook/order.js +0 -218
  356. package/dist/cjs/contracts/deepbook/order.js.map +0 -7
  357. package/dist/cjs/contracts/deepbook/order_info.d.ts +0 -296
  358. package/dist/cjs/contracts/deepbook/order_info.js +0 -386
  359. package/dist/cjs/contracts/deepbook/order_info.js.map +0 -7
  360. package/dist/cjs/contracts/deepbook/order_query.d.ts +0 -85
  361. package/dist/cjs/contracts/deepbook/order_query.js +0 -96
  362. package/dist/cjs/contracts/deepbook/order_query.js.map +0 -7
  363. package/dist/cjs/contracts/deepbook/pool.d.ts +0 -1218
  364. package/dist/cjs/contracts/deepbook/pool.js +0 -1236
  365. package/dist/cjs/contracts/deepbook/pool.js.map +0 -7
  366. package/dist/cjs/contracts/deepbook/registry.d.ts +0 -134
  367. package/dist/cjs/contracts/deepbook/registry.js +0 -182
  368. package/dist/cjs/contracts/deepbook/registry.js.map +0 -7
  369. package/dist/cjs/contracts/deepbook/state.d.ts +0 -117
  370. package/dist/cjs/contracts/deepbook/state.js +0 -104
  371. package/dist/cjs/contracts/deepbook/state.js.map +0 -7
  372. package/dist/cjs/contracts/deepbook/trade_params.d.ts +0 -7
  373. package/dist/cjs/contracts/deepbook/trade_params.js +0 -35
  374. package/dist/cjs/contracts/deepbook/trade_params.js.map +0 -7
  375. package/dist/cjs/contracts/deepbook/vault.d.ts +0 -30
  376. package/dist/cjs/contracts/deepbook/vault.js +0 -65
  377. package/dist/cjs/contracts/deepbook/vault.js.map +0 -7
  378. package/dist/cjs/contracts/utils/index.d.ts +0 -25
  379. package/dist/cjs/contracts/utils/index.js +0 -148
  380. package/dist/cjs/contracts/utils/index.js.map +0 -7
  381. package/dist/cjs/index.d.ts +0 -23
  382. package/dist/cjs/index.js +0 -81
  383. package/dist/cjs/index.js.map +0 -7
  384. package/dist/cjs/package.json +0 -4
  385. package/dist/cjs/pyth/PriceServiceConnection.d.ts +0 -26
  386. package/dist/cjs/pyth/PriceServiceConnection.js +0 -68
  387. package/dist/cjs/pyth/PriceServiceConnection.js.map +0 -7
  388. package/dist/cjs/pyth/pyth-helpers.d.ts +0 -7
  389. package/dist/cjs/pyth/pyth-helpers.js +0 -36
  390. package/dist/cjs/pyth/pyth-helpers.js.map +0 -7
  391. package/dist/cjs/pyth/pyth.d.ts +0 -65
  392. package/dist/cjs/pyth/pyth.js +0 -269
  393. package/dist/cjs/pyth/pyth.js.map +0 -7
  394. package/dist/cjs/transactions/balanceManager.d.ts +0 -168
  395. package/dist/cjs/transactions/balanceManager.js +0 -384
  396. package/dist/cjs/transactions/balanceManager.js.map +0 -7
  397. package/dist/cjs/transactions/deepbook.d.ts +0 -477
  398. package/dist/cjs/transactions/deepbook.js +0 -1335
  399. package/dist/cjs/transactions/deepbook.js.map +0 -7
  400. package/dist/cjs/transactions/deepbookAdmin.d.ts +0 -105
  401. package/dist/cjs/transactions/deepbookAdmin.js +0 -334
  402. package/dist/cjs/transactions/deepbookAdmin.js.map +0 -7
  403. package/dist/cjs/transactions/flashLoans.d.ts +0 -56
  404. package/dist/cjs/transactions/flashLoans.js +0 -124
  405. package/dist/cjs/transactions/flashLoans.js.map +0 -7
  406. package/dist/cjs/transactions/governance.d.ts +0 -42
  407. package/dist/cjs/transactions/governance.js +0 -135
  408. package/dist/cjs/transactions/governance.js.map +0 -7
  409. package/dist/cjs/transactions/marginAdmin.d.ts +0 -133
  410. package/dist/cjs/transactions/marginAdmin.js +0 -393
  411. package/dist/cjs/transactions/marginAdmin.js.map +0 -7
  412. package/dist/cjs/transactions/marginLiquidations.d.ts +0 -61
  413. package/dist/cjs/transactions/marginLiquidations.js +0 -173
  414. package/dist/cjs/transactions/marginLiquidations.js.map +0 -7
  415. package/dist/cjs/transactions/marginMaintainer.d.ts +0 -80
  416. package/dist/cjs/transactions/marginMaintainer.js +0 -251
  417. package/dist/cjs/transactions/marginMaintainer.js.map +0 -7
  418. package/dist/cjs/transactions/marginManager.d.ts +0 -236
  419. package/dist/cjs/transactions/marginManager.js +0 -688
  420. package/dist/cjs/transactions/marginManager.js.map +0 -7
  421. package/dist/cjs/transactions/marginPool.d.ts +0 -134
  422. package/dist/cjs/transactions/marginPool.js +0 -330
  423. package/dist/cjs/transactions/marginPool.js.map +0 -7
  424. package/dist/cjs/transactions/marginRegistry.d.ts +0 -94
  425. package/dist/cjs/transactions/marginRegistry.js +0 -221
  426. package/dist/cjs/transactions/marginRegistry.js.map +0 -7
  427. package/dist/cjs/transactions/marginTPSL.d.ts +0 -93
  428. package/dist/cjs/transactions/marginTPSL.js +0 -286
  429. package/dist/cjs/transactions/marginTPSL.js.map +0 -7
  430. package/dist/cjs/transactions/poolProxy.d.ts +0 -104
  431. package/dist/cjs/transactions/poolProxy.js +0 -435
  432. package/dist/cjs/transactions/poolProxy.js.map +0 -7
  433. package/dist/cjs/types/bcs.d.ts +0 -5
  434. package/dist/cjs/types/bcs.js +0 -33
  435. package/dist/cjs/types/bcs.js.map +0 -7
  436. package/dist/cjs/types/index.d.ts +0 -218
  437. package/dist/cjs/types/index.js +0 -38
  438. package/dist/cjs/types/index.js.map +0 -7
  439. package/dist/cjs/utils/config.d.ts +0 -65
  440. package/dist/cjs/utils/config.js +0 -144
  441. package/dist/cjs/utils/config.js.map +0 -7
  442. package/dist/cjs/utils/constants.d.ts +0 -76
  443. package/dist/cjs/utils/constants.js +0 -382
  444. package/dist/cjs/utils/constants.js.map +0 -7
  445. package/dist/cjs/utils/errors.d.ts +0 -42
  446. package/dist/cjs/utils/errors.js +0 -70
  447. package/dist/cjs/utils/errors.js.map +0 -7
  448. package/dist/cjs/utils/validation.js +0 -67
  449. package/dist/cjs/utils/validation.js.map +0 -7
  450. package/dist/esm/client.d.ts +0 -861
  451. package/dist/esm/client.js +0 -1967
  452. package/dist/esm/client.js.map +0 -7
  453. package/dist/esm/contracts/deepbook/account.d.ts +0 -105
  454. package/dist/esm/contracts/deepbook/account.js +0 -133
  455. package/dist/esm/contracts/deepbook/account.js.map +0 -7
  456. package/dist/esm/contracts/deepbook/balance_manager.d.ts +0 -268
  457. package/dist/esm/contracts/deepbook/balance_manager.js +0 -331
  458. package/dist/esm/contracts/deepbook/balance_manager.js.map +0 -7
  459. package/dist/esm/contracts/deepbook/balances.d.ts +0 -10
  460. package/dist/esm/contracts/deepbook/balances.js +0 -15
  461. package/dist/esm/contracts/deepbook/balances.js.map +0 -7
  462. package/dist/esm/contracts/deepbook/big_vector.d.ts +0 -62
  463. package/dist/esm/contracts/deepbook/big_vector.js +0 -50
  464. package/dist/esm/contracts/deepbook/big_vector.js.map +0 -7
  465. package/dist/esm/contracts/deepbook/book.d.ts +0 -34
  466. package/dist/esm/contracts/deepbook/book.js +0 -20
  467. package/dist/esm/contracts/deepbook/book.js.map +0 -7
  468. package/dist/esm/contracts/deepbook/constants.d.ts +0 -176
  469. package/dist/esm/contracts/deepbook/constants.js +0 -318
  470. package/dist/esm/contracts/deepbook/constants.js.map +0 -7
  471. package/dist/esm/contracts/deepbook/deep_price.d.ts +0 -60
  472. package/dist/esm/contracts/deepbook/deep_price.js +0 -67
  473. package/dist/esm/contracts/deepbook/deep_price.js.map +0 -7
  474. package/dist/esm/contracts/deepbook/deps/std/type_name.d.ts +0 -14
  475. package/dist/esm/contracts/deepbook/deps/std/type_name.js +0 -22
  476. package/dist/esm/contracts/deepbook/deps/std/type_name.js.map +0 -7
  477. package/dist/esm/contracts/deepbook/deps/sui/bag.d.ts +0 -33
  478. package/dist/esm/contracts/deepbook/deps/sui/bag.js +0 -17
  479. package/dist/esm/contracts/deepbook/deps/sui/bag.js.map +0 -7
  480. package/dist/esm/contracts/deepbook/deps/sui/balance.d.ts +0 -9
  481. package/dist/esm/contracts/deepbook/deps/sui/balance.js +0 -13
  482. package/dist/esm/contracts/deepbook/deps/sui/balance.js.map +0 -7
  483. package/dist/esm/contracts/deepbook/deps/sui/object.d.ts +0 -5
  484. package/dist/esm/contracts/deepbook/deps/sui/object.js +0 -13
  485. package/dist/esm/contracts/deepbook/deps/sui/object.js.map +0 -7
  486. package/dist/esm/contracts/deepbook/deps/sui/table.d.ts +0 -28
  487. package/dist/esm/contracts/deepbook/deps/sui/table.js +0 -17
  488. package/dist/esm/contracts/deepbook/deps/sui/table.js.map +0 -7
  489. package/dist/esm/contracts/deepbook/deps/sui/vec_map.d.ts +0 -27
  490. package/dist/esm/contracts/deepbook/deps/sui/vec_map.js +0 -25
  491. package/dist/esm/contracts/deepbook/deps/sui/vec_map.js.map +0 -7
  492. package/dist/esm/contracts/deepbook/deps/sui/vec_set.d.ts +0 -15
  493. package/dist/esm/contracts/deepbook/deps/sui/vec_set.js +0 -15
  494. package/dist/esm/contracts/deepbook/deps/sui/vec_set.js.map +0 -7
  495. package/dist/esm/contracts/deepbook/deps/sui/versioned.d.ts +0 -7
  496. package/dist/esm/contracts/deepbook/deps/sui/versioned.js +0 -15
  497. package/dist/esm/contracts/deepbook/deps/sui/versioned.js.map +0 -7
  498. package/dist/esm/contracts/deepbook/ewma.d.ts +0 -17
  499. package/dist/esm/contracts/deepbook/ewma.js +0 -19
  500. package/dist/esm/contracts/deepbook/ewma.js.map +0 -7
  501. package/dist/esm/contracts/deepbook/fill.d.ts +0 -153
  502. package/dist/esm/contracts/deepbook/fill.js +0 -221
  503. package/dist/esm/contracts/deepbook/fill.js.map +0 -7
  504. package/dist/esm/contracts/deepbook/governance.d.ts +0 -63
  505. package/dist/esm/contracts/deepbook/governance.js +0 -49
  506. package/dist/esm/contracts/deepbook/governance.js.map +0 -7
  507. package/dist/esm/contracts/deepbook/history.d.ts +0 -60
  508. package/dist/esm/contracts/deepbook/history.js +0 -48
  509. package/dist/esm/contracts/deepbook/history.js.map +0 -7
  510. package/dist/esm/contracts/deepbook/math.d.ts +0 -94
  511. package/dist/esm/contracts/deepbook/math.js +0 -112
  512. package/dist/esm/contracts/deepbook/math.js.map +0 -7
  513. package/dist/esm/contracts/deepbook/order.d.ts +0 -135
  514. package/dist/esm/contracts/deepbook/order.js +0 -188
  515. package/dist/esm/contracts/deepbook/order.js.map +0 -7
  516. package/dist/esm/contracts/deepbook/order_info.d.ts +0 -296
  517. package/dist/esm/contracts/deepbook/order_info.js +0 -356
  518. package/dist/esm/contracts/deepbook/order_info.js.map +0 -7
  519. package/dist/esm/contracts/deepbook/order_query.d.ts +0 -85
  520. package/dist/esm/contracts/deepbook/order_query.js +0 -66
  521. package/dist/esm/contracts/deepbook/order_query.js.map +0 -7
  522. package/dist/esm/contracts/deepbook/pool.d.ts +0 -1218
  523. package/dist/esm/contracts/deepbook/pool.js +0 -1206
  524. package/dist/esm/contracts/deepbook/pool.js.map +0 -7
  525. package/dist/esm/contracts/deepbook/registry.d.ts +0 -134
  526. package/dist/esm/contracts/deepbook/registry.js +0 -152
  527. package/dist/esm/contracts/deepbook/registry.js.map +0 -7
  528. package/dist/esm/contracts/deepbook/state.d.ts +0 -117
  529. package/dist/esm/contracts/deepbook/state.js +0 -74
  530. package/dist/esm/contracts/deepbook/state.js.map +0 -7
  531. package/dist/esm/contracts/deepbook/trade_params.d.ts +0 -7
  532. package/dist/esm/contracts/deepbook/trade_params.js +0 -15
  533. package/dist/esm/contracts/deepbook/trade_params.js.map +0 -7
  534. package/dist/esm/contracts/deepbook/vault.d.ts +0 -30
  535. package/dist/esm/contracts/deepbook/vault.js +0 -35
  536. package/dist/esm/contracts/deepbook/vault.js.map +0 -7
  537. package/dist/esm/contracts/utils/index.d.ts +0 -25
  538. package/dist/esm/contracts/utils/index.js +0 -128
  539. package/dist/esm/contracts/utils/index.js.map +0 -7
  540. package/dist/esm/index.d.ts +0 -23
  541. package/dist/esm/index.js +0 -81
  542. package/dist/esm/index.js.map +0 -7
  543. package/dist/esm/package.json +0 -4
  544. package/dist/esm/pyth/PriceServiceConnection.d.ts +0 -26
  545. package/dist/esm/pyth/PriceServiceConnection.js +0 -38
  546. package/dist/esm/pyth/PriceServiceConnection.js.map +0 -7
  547. package/dist/esm/pyth/pyth-helpers.d.ts +0 -7
  548. package/dist/esm/pyth/pyth-helpers.js +0 -16
  549. package/dist/esm/pyth/pyth-helpers.js.map +0 -7
  550. package/dist/esm/pyth/pyth.d.ts +0 -65
  551. package/dist/esm/pyth/pyth.js +0 -249
  552. package/dist/esm/pyth/pyth.js.map +0 -7
  553. package/dist/esm/transactions/balanceManager.d.ts +0 -168
  554. package/dist/esm/transactions/balanceManager.js +0 -364
  555. package/dist/esm/transactions/balanceManager.js.map +0 -7
  556. package/dist/esm/transactions/deepbook.d.ts +0 -477
  557. package/dist/esm/transactions/deepbook.js +0 -1321
  558. package/dist/esm/transactions/deepbook.js.map +0 -7
  559. package/dist/esm/transactions/deepbookAdmin.d.ts +0 -105
  560. package/dist/esm/transactions/deepbookAdmin.js +0 -314
  561. package/dist/esm/transactions/deepbookAdmin.js.map +0 -7
  562. package/dist/esm/transactions/flashLoans.d.ts +0 -56
  563. package/dist/esm/transactions/flashLoans.js +0 -104
  564. package/dist/esm/transactions/flashLoans.js.map +0 -7
  565. package/dist/esm/transactions/governance.d.ts +0 -42
  566. package/dist/esm/transactions/governance.js +0 -115
  567. package/dist/esm/transactions/governance.js.map +0 -7
  568. package/dist/esm/transactions/marginAdmin.d.ts +0 -133
  569. package/dist/esm/transactions/marginAdmin.js +0 -373
  570. package/dist/esm/transactions/marginAdmin.js.map +0 -7
  571. package/dist/esm/transactions/marginLiquidations.d.ts +0 -61
  572. package/dist/esm/transactions/marginLiquidations.js +0 -153
  573. package/dist/esm/transactions/marginLiquidations.js.map +0 -7
  574. package/dist/esm/transactions/marginMaintainer.d.ts +0 -80
  575. package/dist/esm/transactions/marginMaintainer.js +0 -231
  576. package/dist/esm/transactions/marginMaintainer.js.map +0 -7
  577. package/dist/esm/transactions/marginManager.d.ts +0 -236
  578. package/dist/esm/transactions/marginManager.js +0 -668
  579. package/dist/esm/transactions/marginManager.js.map +0 -7
  580. package/dist/esm/transactions/marginPool.d.ts +0 -134
  581. package/dist/esm/transactions/marginPool.js +0 -310
  582. package/dist/esm/transactions/marginPool.js.map +0 -7
  583. package/dist/esm/transactions/marginRegistry.d.ts +0 -94
  584. package/dist/esm/transactions/marginRegistry.js +0 -201
  585. package/dist/esm/transactions/marginRegistry.js.map +0 -7
  586. package/dist/esm/transactions/marginTPSL.d.ts +0 -93
  587. package/dist/esm/transactions/marginTPSL.js +0 -266
  588. package/dist/esm/transactions/marginTPSL.js.map +0 -7
  589. package/dist/esm/transactions/poolProxy.d.ts +0 -104
  590. package/dist/esm/transactions/poolProxy.js +0 -415
  591. package/dist/esm/transactions/poolProxy.js.map +0 -7
  592. package/dist/esm/types/bcs.d.ts +0 -5
  593. package/dist/esm/types/bcs.js +0 -13
  594. package/dist/esm/types/bcs.js.map +0 -7
  595. package/dist/esm/types/index.d.ts +0 -218
  596. package/dist/esm/types/index.js +0 -18
  597. package/dist/esm/types/index.js.map +0 -7
  598. package/dist/esm/utils/config.d.ts +0 -65
  599. package/dist/esm/utils/config.js +0 -135
  600. package/dist/esm/utils/config.js.map +0 -7
  601. package/dist/esm/utils/constants.d.ts +0 -76
  602. package/dist/esm/utils/constants.js +0 -362
  603. package/dist/esm/utils/constants.js.map +0 -7
  604. package/dist/esm/utils/errors.d.ts +0 -42
  605. package/dist/esm/utils/errors.js +0 -50
  606. package/dist/esm/utils/errors.js.map +0 -7
  607. package/dist/esm/utils/validation.d.ts +0 -50
  608. package/dist/esm/utils/validation.js +0 -47
  609. package/dist/esm/utils/validation.js.map +0 -7
  610. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  611. package/dist/tsconfig.tsbuildinfo +0 -1
  612. package/src/contracts/deepbook/deps/sui/object.ts +0 -14
@@ -0,0 +1,113 @@
1
+ import { bcs } from "@haneullabs/haneul/bcs";
2
+ import { Transaction } from "@haneullabs/haneul/transactions";
3
+ import { normalizeHaneulAddress } from "@haneullabs/haneul/utils";
4
+
5
+ //#region src/queries/balanceManagerQueries.ts
6
+ var BalanceManagerQueries = class {
7
+ #ctx;
8
+ constructor(ctx) {
9
+ this.#ctx = ctx;
10
+ }
11
+ async checkManagerBalance(managerKey, coinKey) {
12
+ const tx = new Transaction();
13
+ const coin = this.#ctx.config.getCoin(coinKey);
14
+ tx.add(this.#ctx.balanceManager.checkManagerBalance(managerKey, coinKey));
15
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
16
+ transaction: tx,
17
+ include: {
18
+ commandResults: true,
19
+ effects: true
20
+ }
21
+ })).commandResults[0].returnValues[0].bcs;
22
+ const parsed_balance = bcs.U64.parse(bytes);
23
+ const adjusted_balance = Number(parsed_balance) / coin.scalar;
24
+ return {
25
+ coinType: coin.type,
26
+ balance: Number(adjusted_balance.toFixed(9))
27
+ };
28
+ }
29
+ async checkManagerBalanceWithAddress(managerAddress, coinKey) {
30
+ const tx = new Transaction();
31
+ const coin = this.#ctx.config.getCoin(coinKey);
32
+ tx.moveCall({
33
+ target: `${this.#ctx.config.DEEPBOOK_PACKAGE_ID}::balance_manager::balance`,
34
+ arguments: [tx.object(managerAddress)],
35
+ typeArguments: [coin.type]
36
+ });
37
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
38
+ transaction: tx,
39
+ include: {
40
+ commandResults: true,
41
+ effects: true
42
+ }
43
+ })).commandResults[0].returnValues[0].bcs;
44
+ const parsed_balance = bcs.U64.parse(bytes);
45
+ const adjusted_balance = Number(parsed_balance) / coin.scalar;
46
+ return {
47
+ coinType: coin.type,
48
+ balance: Number(adjusted_balance.toFixed(9))
49
+ };
50
+ }
51
+ async checkManagerBalancesWithAddress(managerAddresses, coinKeys) {
52
+ if (managerAddresses.length === 0 || coinKeys.length === 0) return {};
53
+ const tx = new Transaction();
54
+ const coins = coinKeys.map((coinKey) => this.#ctx.config.getCoin(coinKey));
55
+ for (const managerAddress of managerAddresses) for (const coin of coins) tx.moveCall({
56
+ target: `${this.#ctx.config.DEEPBOOK_PACKAGE_ID}::balance_manager::balance`,
57
+ arguments: [tx.object(managerAddress)],
58
+ typeArguments: [coin.type]
59
+ });
60
+ const res = await this.#ctx.client.core.simulateTransaction({
61
+ transaction: tx,
62
+ include: {
63
+ commandResults: true,
64
+ effects: true
65
+ }
66
+ });
67
+ if (res.FailedTransaction) throw new Error(`Transaction failed: ${res.FailedTransaction.status.error?.message || "Unknown error"}`);
68
+ if (!res.commandResults) throw new Error("Failed to get manager balances: No command results");
69
+ const results = {};
70
+ for (let m = 0; m < managerAddresses.length; m++) {
71
+ const managerAddress = managerAddresses[m];
72
+ const managerBalances = {};
73
+ for (let c = 0; c < coins.length; c++) {
74
+ const coin = coins[c];
75
+ const commandResult = res.commandResults[m * coins.length + c];
76
+ if (!commandResult || !commandResult.returnValues) throw new Error(`Failed to get balance for ${coin.type}: No return values`);
77
+ const bytes = commandResult.returnValues[0].bcs;
78
+ const parsed_balance = bcs.U64.parse(bytes);
79
+ managerBalances[coin.type] = Number((Number(parsed_balance) / coin.scalar).toFixed(9));
80
+ }
81
+ results[managerAddress] = managerBalances;
82
+ }
83
+ return results;
84
+ }
85
+ async getBalanceManagerIds(owner) {
86
+ const tx = new Transaction();
87
+ tx.add(this.#ctx.deepBook.getBalanceManagerIds(owner));
88
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
89
+ transaction: tx,
90
+ include: {
91
+ commandResults: true,
92
+ effects: true
93
+ }
94
+ })).commandResults[0].returnValues[0].bcs;
95
+ return bcs.vector(bcs.Address).parse(bytes).map((id) => normalizeHaneulAddress(id));
96
+ }
97
+ async accountExists(poolKey, managerKey) {
98
+ const tx = new Transaction();
99
+ tx.add(this.#ctx.deepBook.accountExists(poolKey, managerKey));
100
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
101
+ transaction: tx,
102
+ include: {
103
+ commandResults: true,
104
+ effects: true
105
+ }
106
+ })).commandResults[0].returnValues[0].bcs;
107
+ return bcs.bool().parse(bytes);
108
+ }
109
+ };
110
+
111
+ //#endregion
112
+ export { BalanceManagerQueries };
113
+ //# sourceMappingURL=balanceManagerQueries.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balanceManagerQueries.mjs","names":["#ctx"],"sources":["../../src/queries/balanceManagerQueries.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/haneul/bcs';\nimport { Transaction } from '@haneullabs/haneul/transactions';\nimport { normalizeHaneulAddress } from '@haneullabs/haneul/utils';\n\nimport type { ManagerBalance } from '../types/index.js';\nimport type { QueryContext } from './context.js';\n\nexport class BalanceManagerQueries {\n\t#ctx: QueryContext;\n\n\tconstructor(ctx: QueryContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\tasync checkManagerBalance(managerKey: string, coinKey: string): Promise<ManagerBalance> {\n\t\tconst tx = new Transaction();\n\t\tconst coin = this.#ctx.config.getCoin(coinKey);\n\n\t\ttx.add(this.#ctx.balanceManager.checkManagerBalance(managerKey, coinKey));\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\tconst parsed_balance = bcs.U64.parse(bytes);\n\t\tconst balanceNumber = Number(parsed_balance);\n\t\tconst adjusted_balance = balanceNumber / coin.scalar;\n\n\t\treturn {\n\t\t\tcoinType: coin.type,\n\t\t\tbalance: Number(adjusted_balance.toFixed(9)),\n\t\t};\n\t}\n\n\tasync checkManagerBalanceWithAddress(\n\t\tmanagerAddress: string,\n\t\tcoinKey: string,\n\t): Promise<ManagerBalance> {\n\t\tconst tx = new Transaction();\n\t\tconst coin = this.#ctx.config.getCoin(coinKey);\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${this.#ctx.config.DEEPBOOK_PACKAGE_ID}::balance_manager::balance`,\n\t\t\targuments: [tx.object(managerAddress)],\n\t\t\ttypeArguments: [coin.type],\n\t\t});\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\tconst parsed_balance = bcs.U64.parse(bytes);\n\t\tconst balanceNumber = Number(parsed_balance);\n\t\tconst adjusted_balance = balanceNumber / coin.scalar;\n\n\t\treturn {\n\t\t\tcoinType: coin.type,\n\t\t\tbalance: Number(adjusted_balance.toFixed(9)),\n\t\t};\n\t}\n\n\tasync checkManagerBalancesWithAddress(\n\t\tmanagerAddresses: string[],\n\t\tcoinKeys: string[],\n\t): Promise<Record<string, Record<string, number>>> {\n\t\tif (managerAddresses.length === 0 || coinKeys.length === 0) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst tx = new Transaction();\n\t\tconst coins = coinKeys.map((coinKey) => this.#ctx.config.getCoin(coinKey));\n\n\t\tfor (const managerAddress of managerAddresses) {\n\t\t\tfor (const coin of coins) {\n\t\t\t\ttx.moveCall({\n\t\t\t\t\ttarget: `${this.#ctx.config.DEEPBOOK_PACKAGE_ID}::balance_manager::balance`,\n\t\t\t\t\targuments: [tx.object(managerAddress)],\n\t\t\t\t\ttypeArguments: [coin.type],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tif (res.FailedTransaction) {\n\t\t\tthrow new Error(\n\t\t\t\t`Transaction failed: ${res.FailedTransaction.status.error?.message || 'Unknown error'}`,\n\t\t\t);\n\t\t}\n\n\t\tif (!res.commandResults) {\n\t\t\tthrow new Error('Failed to get manager balances: No command results');\n\t\t}\n\n\t\tconst results: Record<string, Record<string, number>> = {};\n\n\t\tfor (let m = 0; m < managerAddresses.length; m++) {\n\t\t\tconst managerAddress = managerAddresses[m];\n\t\t\tconst managerBalances: Record<string, number> = {};\n\n\t\t\tfor (let c = 0; c < coins.length; c++) {\n\t\t\t\tconst coin = coins[c];\n\t\t\t\tconst commandResult = res.commandResults[m * coins.length + c];\n\n\t\t\t\tif (!commandResult || !commandResult.returnValues) {\n\t\t\t\t\tthrow new Error(`Failed to get balance for ${coin.type}: No return values`);\n\t\t\t\t}\n\n\t\t\t\tconst bytes = commandResult.returnValues[0].bcs;\n\t\t\t\tconst parsed_balance = bcs.U64.parse(bytes);\n\t\t\t\tmanagerBalances[coin.type] = Number((Number(parsed_balance) / coin.scalar).toFixed(9));\n\t\t\t}\n\n\t\t\tresults[managerAddress] = managerBalances;\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tasync getBalanceManagerIds(owner: string): Promise<string[]> {\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.deepBook.getBalanceManagerIds(owner));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\tconst vecOfAddresses = bcs.vector(bcs.Address).parse(bytes);\n\n\t\treturn vecOfAddresses.map((id: string) => normalizeHaneulAddress(id));\n\t}\n\n\tasync accountExists(poolKey: string, managerKey: string): Promise<boolean> {\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.deepBook.accountExists(poolKey, managerKey));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\treturn bcs.bool().parse(bytes);\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ //#region src/queries/context.ts
2
+ function formatTokenAmount(rawAmount, scalar, decimals) {
3
+ const scalarBigInt = BigInt(scalar);
4
+ const integerPart = rawAmount / scalarBigInt;
5
+ const fractionalPart = rawAmount % scalarBigInt;
6
+ if (fractionalPart === 0n) return integerPart.toString();
7
+ const scalarDigits = scalar.toString().length - 1;
8
+ const trimmed = fractionalPart.toString().padStart(scalarDigits, "0").slice(0, decimals).replace(/0+$/, "");
9
+ if (!trimmed) return integerPart.toString();
10
+ return `${integerPart}.${trimmed}`;
11
+ }
12
+
13
+ //#endregion
14
+ export { formatTokenAmount };
15
+ //# sourceMappingURL=context.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.mjs","names":[],"sources":["../../src/queries/context.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { DeepBookCompatibleClient } from '../client.js';\nimport type { BalanceManagerContract } from '../transactions/balanceManager.js';\nimport type { DeepBookContract } from '../transactions/deepbook.js';\nimport type { MarginManagerContract } from '../transactions/marginManager.js';\nimport type { MarginPoolContract } from '../transactions/marginPool.js';\nimport type { MarginRegistryContract } from '../transactions/marginRegistry.js';\nimport type { MarginTPSLContract } from '../transactions/marginTPSL.js';\nimport type { DeepBookConfig } from '../utils/config.js';\n\nexport interface QueryContext {\n\tclient: DeepBookCompatibleClient;\n\tconfig: DeepBookConfig;\n\taddress: string;\n\tbalanceManager: BalanceManagerContract;\n\tdeepBook: DeepBookContract;\n\tmarginManager: MarginManagerContract;\n\tmarginPool: MarginPoolContract;\n\tmarginRegistry: MarginRegistryContract;\n\tmarginTPSL: MarginTPSLContract;\n}\n\nexport function formatTokenAmount(rawAmount: bigint, scalar: number, decimals: number): string {\n\tconst scalarBigInt = BigInt(scalar);\n\tconst integerPart = rawAmount / scalarBigInt;\n\tconst fractionalPart = rawAmount % scalarBigInt;\n\n\tif (fractionalPart === 0n) {\n\t\treturn integerPart.toString();\n\t}\n\n\tconst scalarDigits = scalar.toString().length - 1;\n\tconst fractionalStr = fractionalPart.toString().padStart(scalarDigits, '0');\n\tconst truncated = fractionalStr.slice(0, decimals);\n\tconst trimmed = truncated.replace(/0+$/, '');\n\n\tif (!trimmed) {\n\t\treturn integerPart.toString();\n\t}\n\n\treturn `${integerPart}.${trimmed}`;\n}\n"],"mappings":";AAwBA,SAAgB,kBAAkB,WAAmB,QAAgB,UAA0B;CAC9F,MAAM,eAAe,OAAO,OAAO;CACnC,MAAM,cAAc,YAAY;CAChC,MAAM,iBAAiB,YAAY;AAEnC,KAAI,mBAAmB,GACtB,QAAO,YAAY,UAAU;CAG9B,MAAM,eAAe,OAAO,UAAU,CAAC,SAAS;CAGhD,MAAM,UAFgB,eAAe,UAAU,CAAC,SAAS,cAAc,IAAI,CAC3C,MAAM,GAAG,SAAS,CACxB,QAAQ,OAAO,GAAG;AAE5C,KAAI,CAAC,QACJ,QAAO,YAAY,UAAU;AAG9B,QAAO,GAAG,YAAY,GAAG"}
@@ -0,0 +1,365 @@
1
+ import { FLOAT_SCALAR } from "../utils/config.mjs";
2
+ import { formatTokenAmount } from "./context.mjs";
3
+ import { bcs } from "@haneullabs/haneul/bcs";
4
+ import { Transaction } from "@haneullabs/haneul/transactions";
5
+ import { normalizeHaneulAddress } from "@haneullabs/haneul/utils";
6
+
7
+ //#region src/queries/marginManagerQueries.ts
8
+ var MarginManagerQueries = class {
9
+ #ctx;
10
+ constructor(ctx) {
11
+ this.#ctx = ctx;
12
+ }
13
+ async getMarginManagerOwner(marginManagerKey) {
14
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
15
+ const tx = new Transaction();
16
+ tx.add(this.#ctx.marginManager.ownerByPoolKey(manager.poolKey, manager.address));
17
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
18
+ transaction: tx,
19
+ include: {
20
+ commandResults: true,
21
+ effects: true
22
+ }
23
+ })).commandResults[0].returnValues[0].bcs;
24
+ return normalizeHaneulAddress(bcs.Address.parse(bytes));
25
+ }
26
+ async getMarginManagerDeepbookPool(marginManagerKey) {
27
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
28
+ const tx = new Transaction();
29
+ tx.add(this.#ctx.marginManager.deepbookPool(manager.poolKey, manager.address));
30
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
31
+ transaction: tx,
32
+ include: {
33
+ commandResults: true,
34
+ effects: true
35
+ }
36
+ })).commandResults[0].returnValues[0].bcs;
37
+ return normalizeHaneulAddress(bcs.Address.parse(bytes));
38
+ }
39
+ async getMarginManagerMarginPoolId(marginManagerKey) {
40
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
41
+ const tx = new Transaction();
42
+ tx.add(this.#ctx.marginManager.marginPoolId(manager.poolKey, manager.address));
43
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
44
+ transaction: tx,
45
+ include: {
46
+ commandResults: true,
47
+ effects: true
48
+ }
49
+ })).commandResults[0].returnValues[0].bcs;
50
+ const option = bcs.option(bcs.Address).parse(bytes);
51
+ return option ? normalizeHaneulAddress(option) : null;
52
+ }
53
+ async getMarginManagerBorrowedShares(marginManagerKey) {
54
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
55
+ const tx = new Transaction();
56
+ tx.add(this.#ctx.marginManager.borrowedShares(manager.poolKey, manager.address));
57
+ const res = await this.#ctx.client.core.simulateTransaction({
58
+ transaction: tx,
59
+ include: {
60
+ commandResults: true,
61
+ effects: true
62
+ }
63
+ });
64
+ const baseBytes = res.commandResults[0].returnValues[0].bcs;
65
+ const quoteBytes = res.commandResults[0].returnValues[1].bcs;
66
+ return {
67
+ baseShares: bcs.U64.parse(baseBytes).toString(),
68
+ quoteShares: bcs.U64.parse(quoteBytes).toString()
69
+ };
70
+ }
71
+ async getMarginManagerBorrowedBaseShares(marginManagerKey) {
72
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
73
+ const tx = new Transaction();
74
+ tx.add(this.#ctx.marginManager.borrowedBaseShares(manager.poolKey, manager.address));
75
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
76
+ transaction: tx,
77
+ include: {
78
+ commandResults: true,
79
+ effects: true
80
+ }
81
+ })).commandResults[0].returnValues[0].bcs;
82
+ return bcs.U64.parse(bytes).toString();
83
+ }
84
+ async getMarginManagerBorrowedQuoteShares(marginManagerKey) {
85
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
86
+ const tx = new Transaction();
87
+ tx.add(this.#ctx.marginManager.borrowedQuoteShares(manager.poolKey, manager.address));
88
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
89
+ transaction: tx,
90
+ include: {
91
+ commandResults: true,
92
+ effects: true
93
+ }
94
+ })).commandResults[0].returnValues[0].bcs;
95
+ return bcs.U64.parse(bytes).toString();
96
+ }
97
+ async getMarginManagerHasBaseDebt(marginManagerKey) {
98
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
99
+ const tx = new Transaction();
100
+ tx.add(this.#ctx.marginManager.hasBaseDebt(manager.poolKey, manager.address));
101
+ const bytes = (await this.#ctx.client.core.simulateTransaction({
102
+ transaction: tx,
103
+ include: {
104
+ commandResults: true,
105
+ effects: true
106
+ }
107
+ })).commandResults[0].returnValues[0].bcs;
108
+ return bcs.bool().parse(bytes);
109
+ }
110
+ async getMarginManagerBalanceManagerId(marginManagerAddress) {
111
+ const res = await this.#ctx.client.core.getObject({
112
+ objectId: marginManagerAddress,
113
+ include: { content: true }
114
+ });
115
+ if (!res.object?.content) throw new Error(`Margin manager not found: ${marginManagerAddress}`);
116
+ return normalizeHaneulAddress(bcs.struct("MarginManagerBalanceManagerId", {
117
+ id: bcs.Address,
118
+ owner: bcs.Address,
119
+ deepbook_pool: bcs.Address,
120
+ margin_pool_id: bcs.option(bcs.Address),
121
+ balance_manager_id: bcs.Address
122
+ }).parse(res.object.content).balance_manager_id);
123
+ }
124
+ async getMarginManagerAssets(marginManagerKey, decimals = 6) {
125
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
126
+ const tx = new Transaction();
127
+ tx.add(this.#ctx.marginManager.calculateAssets(manager.poolKey, manager.address));
128
+ const res = await this.#ctx.client.core.simulateTransaction({
129
+ transaction: tx,
130
+ include: {
131
+ commandResults: true,
132
+ effects: true
133
+ }
134
+ });
135
+ const baseBytes = res.commandResults[0].returnValues[0].bcs;
136
+ const quoteBytes = res.commandResults[0].returnValues[1].bcs;
137
+ const pool = this.#ctx.config.getPool(manager.poolKey);
138
+ const baseCoin = this.#ctx.config.getCoin(pool.baseCoin);
139
+ const quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);
140
+ return {
141
+ baseAsset: formatTokenAmount(BigInt(bcs.U64.parse(baseBytes)), baseCoin.scalar, decimals),
142
+ quoteAsset: formatTokenAmount(BigInt(bcs.U64.parse(quoteBytes)), quoteCoin.scalar, decimals)
143
+ };
144
+ }
145
+ async getMarginManagerDebts(marginManagerKey, decimals = 6) {
146
+ const hasBaseDebt = await this.getMarginManagerHasBaseDebt(marginManagerKey);
147
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
148
+ const pool = this.#ctx.config.getPool(manager.poolKey);
149
+ const debtCoinKey = hasBaseDebt ? pool.baseCoin : pool.quoteCoin;
150
+ const tx = new Transaction();
151
+ tx.add(this.#ctx.marginManager.calculateDebts(manager.poolKey, debtCoinKey, manager.address));
152
+ const res = await this.#ctx.client.core.simulateTransaction({
153
+ transaction: tx,
154
+ include: {
155
+ commandResults: true,
156
+ effects: true
157
+ }
158
+ });
159
+ if (res.FailedTransaction) throw new Error(`Transaction failed: ${res.FailedTransaction.status.error?.message || "Unknown error"}`);
160
+ if (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) throw new Error(`Failed to get margin manager debts: Unknown error`);
161
+ const baseBytes = res.commandResults[0].returnValues[0].bcs;
162
+ const quoteBytes = res.commandResults[0].returnValues[1].bcs;
163
+ const debtCoin = this.#ctx.config.getCoin(debtCoinKey);
164
+ return {
165
+ baseDebt: formatTokenAmount(BigInt(bcs.U64.parse(baseBytes)), debtCoin.scalar, decimals),
166
+ quoteDebt: formatTokenAmount(BigInt(bcs.U64.parse(quoteBytes)), debtCoin.scalar, decimals)
167
+ };
168
+ }
169
+ async getMarginManagerState(marginManagerKey, decimals = 6) {
170
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
171
+ const tx = new Transaction();
172
+ tx.add(this.#ctx.marginManager.managerState(manager.poolKey, manager.address));
173
+ const res = await this.#ctx.client.core.simulateTransaction({
174
+ transaction: tx,
175
+ include: {
176
+ commandResults: true,
177
+ effects: true
178
+ }
179
+ });
180
+ if (res.FailedTransaction) throw new Error(`Transaction failed: ${res.FailedTransaction.status.error?.message || "Unknown error"}`);
181
+ if (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) throw new Error(`Failed to get margin manager state: Unknown error`);
182
+ const pool = this.#ctx.config.getPool(manager.poolKey);
183
+ const baseCoin = this.#ctx.config.getCoin(pool.baseCoin);
184
+ const quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);
185
+ const managerId = normalizeHaneulAddress(bcs.Address.parse(res.commandResults[0].returnValues[0].bcs));
186
+ const deepbookPoolId = normalizeHaneulAddress(bcs.Address.parse(res.commandResults[0].returnValues[1].bcs));
187
+ const riskRatio = Number(bcs.U64.parse(res.commandResults[0].returnValues[2].bcs)) / FLOAT_SCALAR;
188
+ const baseAsset = formatTokenAmount(BigInt(bcs.U64.parse(res.commandResults[0].returnValues[3].bcs)), baseCoin.scalar, decimals);
189
+ const quoteAsset = formatTokenAmount(BigInt(bcs.U64.parse(res.commandResults[0].returnValues[4].bcs)), quoteCoin.scalar, decimals);
190
+ const baseDebt = formatTokenAmount(BigInt(bcs.U64.parse(res.commandResults[0].returnValues[5].bcs)), baseCoin.scalar, decimals);
191
+ const quoteDebt = formatTokenAmount(BigInt(bcs.U64.parse(res.commandResults[0].returnValues[6].bcs)), quoteCoin.scalar, decimals);
192
+ const basePythPrice = bcs.U64.parse(res.commandResults[0].returnValues[7].bcs);
193
+ const basePythDecimals = Number(bcs.u8().parse(new Uint8Array(res.commandResults[0].returnValues[8].bcs)));
194
+ const quotePythPrice = bcs.U64.parse(res.commandResults[0].returnValues[9].bcs);
195
+ const quotePythDecimals = Number(bcs.u8().parse(new Uint8Array(res.commandResults[0].returnValues[10].bcs)));
196
+ const currentPrice = BigInt(bcs.U64.parse(res.commandResults[0].returnValues[11].bcs));
197
+ const lowestTriggerAbovePrice = BigInt(bcs.U64.parse(res.commandResults[0].returnValues[12].bcs));
198
+ const highestTriggerBelowPrice = BigInt(bcs.U64.parse(res.commandResults[0].returnValues[13].bcs));
199
+ return {
200
+ managerId,
201
+ deepbookPoolId,
202
+ riskRatio,
203
+ baseAsset,
204
+ quoteAsset,
205
+ baseDebt,
206
+ quoteDebt,
207
+ basePythPrice: basePythPrice.toString(),
208
+ basePythDecimals,
209
+ quotePythPrice: quotePythPrice.toString(),
210
+ quotePythDecimals,
211
+ currentPrice,
212
+ lowestTriggerAbovePrice,
213
+ highestTriggerBelowPrice
214
+ };
215
+ }
216
+ async getMarginManagerStates(marginManagers, decimals = 6) {
217
+ const entries = Object.entries(marginManagers);
218
+ if (entries.length === 0) return {};
219
+ const tx = new Transaction();
220
+ for (const [managerId, poolKey] of entries) tx.add(this.#ctx.marginManager.managerState(poolKey, managerId));
221
+ const res = await this.#ctx.client.core.simulateTransaction({
222
+ transaction: tx,
223
+ include: {
224
+ commandResults: true,
225
+ effects: true
226
+ }
227
+ });
228
+ if (res.FailedTransaction) throw new Error(`Transaction failed: ${res.FailedTransaction.status.error?.message || "Unknown error"}`);
229
+ if (!res.commandResults) throw new Error(`Failed to get margin manager states: Unknown error`);
230
+ const results = {};
231
+ for (let i = 0; i < entries.length; i++) {
232
+ const commandResult = res.commandResults[i];
233
+ if (!commandResult || !commandResult.returnValues) throw new Error(`Failed to get margin manager state for index ${i}: No return values`);
234
+ const [, poolKey] = entries[i];
235
+ const pool = this.#ctx.config.getPool(poolKey);
236
+ const baseCoin = this.#ctx.config.getCoin(pool.baseCoin);
237
+ const quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);
238
+ const managerId = normalizeHaneulAddress(bcs.Address.parse(commandResult.returnValues[0].bcs));
239
+ const deepbookPoolId = normalizeHaneulAddress(bcs.Address.parse(commandResult.returnValues[1].bcs));
240
+ const riskRatio = Number(bcs.U64.parse(commandResult.returnValues[2].bcs)) / FLOAT_SCALAR;
241
+ const baseAsset = formatTokenAmount(BigInt(bcs.U64.parse(commandResult.returnValues[3].bcs)), baseCoin.scalar, decimals);
242
+ const quoteAsset = formatTokenAmount(BigInt(bcs.U64.parse(commandResult.returnValues[4].bcs)), quoteCoin.scalar, decimals);
243
+ const baseDebt = formatTokenAmount(BigInt(bcs.U64.parse(commandResult.returnValues[5].bcs)), baseCoin.scalar, decimals);
244
+ const quoteDebt = formatTokenAmount(BigInt(bcs.U64.parse(commandResult.returnValues[6].bcs)), quoteCoin.scalar, decimals);
245
+ const basePythPrice = bcs.U64.parse(commandResult.returnValues[7].bcs);
246
+ const basePythDecimals = Number(bcs.u8().parse(new Uint8Array(commandResult.returnValues[8].bcs)));
247
+ const quotePythPrice = bcs.U64.parse(commandResult.returnValues[9].bcs);
248
+ const quotePythDecimals = Number(bcs.u8().parse(new Uint8Array(commandResult.returnValues[10].bcs)));
249
+ const currentPrice = BigInt(bcs.U64.parse(commandResult.returnValues[11].bcs));
250
+ const lowestTriggerAbovePrice = BigInt(bcs.U64.parse(commandResult.returnValues[12].bcs));
251
+ const highestTriggerBelowPrice = BigInt(bcs.U64.parse(commandResult.returnValues[13].bcs));
252
+ results[managerId] = {
253
+ managerId,
254
+ deepbookPoolId,
255
+ riskRatio,
256
+ baseAsset,
257
+ quoteAsset,
258
+ baseDebt,
259
+ quoteDebt,
260
+ basePythPrice: basePythPrice.toString(),
261
+ basePythDecimals,
262
+ quotePythPrice: quotePythPrice.toString(),
263
+ quotePythDecimals,
264
+ currentPrice,
265
+ lowestTriggerAbovePrice,
266
+ highestTriggerBelowPrice
267
+ };
268
+ }
269
+ return results;
270
+ }
271
+ async getMarginManagerBaseBalance(marginManagerKey, decimals = 9) {
272
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
273
+ const tx = new Transaction();
274
+ tx.add(this.#ctx.marginManager.baseBalance(manager.poolKey, manager.address));
275
+ const res = await this.#ctx.client.core.simulateTransaction({
276
+ transaction: tx,
277
+ include: {
278
+ commandResults: true,
279
+ effects: true
280
+ }
281
+ });
282
+ if (res.FailedTransaction) throw new Error(`Transaction failed: ${res.FailedTransaction.status.error?.message || "Unknown error"}`);
283
+ if (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) throw new Error(`Failed to get margin manager base balance: Unknown error`);
284
+ const bytes = res.commandResults[0].returnValues[0].bcs;
285
+ const pool = this.#ctx.config.getPool(manager.poolKey);
286
+ const baseCoin = this.#ctx.config.getCoin(pool.baseCoin);
287
+ return formatTokenAmount(BigInt(bcs.U64.parse(bytes)), baseCoin.scalar, decimals);
288
+ }
289
+ async getMarginManagerQuoteBalance(marginManagerKey, decimals = 9) {
290
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
291
+ const tx = new Transaction();
292
+ tx.add(this.#ctx.marginManager.quoteBalance(manager.poolKey, manager.address));
293
+ const res = await this.#ctx.client.core.simulateTransaction({
294
+ transaction: tx,
295
+ include: {
296
+ commandResults: true,
297
+ effects: true
298
+ }
299
+ });
300
+ if (res.FailedTransaction) throw new Error(`Transaction failed: ${res.FailedTransaction.status.error?.message || "Unknown error"}`);
301
+ if (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) throw new Error(`Failed to get margin manager quote balance: Unknown error`);
302
+ const bytes = res.commandResults[0].returnValues[0].bcs;
303
+ const pool = this.#ctx.config.getPool(manager.poolKey);
304
+ const quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);
305
+ return formatTokenAmount(BigInt(bcs.U64.parse(bytes)), quoteCoin.scalar, decimals);
306
+ }
307
+ async getMarginManagerDeepBalance(marginManagerKey, decimals = 6) {
308
+ const manager = this.#ctx.config.getMarginManager(marginManagerKey);
309
+ const tx = new Transaction();
310
+ tx.add(this.#ctx.marginManager.deepBalance(manager.poolKey, manager.address));
311
+ const res = await this.#ctx.client.core.simulateTransaction({
312
+ transaction: tx,
313
+ include: {
314
+ commandResults: true,
315
+ effects: true
316
+ }
317
+ });
318
+ if (res.FailedTransaction) throw new Error(`Transaction failed: ${res.FailedTransaction.status.error?.message || "Unknown error"}`);
319
+ if (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) throw new Error(`Failed to get margin manager DEEP balance: Unknown error`);
320
+ const bytes = res.commandResults[0].returnValues[0].bcs;
321
+ const deepCoin = this.#ctx.config.getCoin("DEEP");
322
+ return formatTokenAmount(BigInt(bcs.U64.parse(bytes)), deepCoin.scalar, decimals);
323
+ }
324
+ async getMarginManagerBalances(marginManagers, decimals = 9) {
325
+ const entries = Object.entries(marginManagers);
326
+ if (entries.length === 0) return {};
327
+ const tx = new Transaction();
328
+ for (const [managerId, poolKey] of entries) {
329
+ tx.add(this.#ctx.marginManager.baseBalance(poolKey, managerId));
330
+ tx.add(this.#ctx.marginManager.quoteBalance(poolKey, managerId));
331
+ tx.add(this.#ctx.marginManager.deepBalance(poolKey, managerId));
332
+ }
333
+ const res = await this.#ctx.client.core.simulateTransaction({
334
+ transaction: tx,
335
+ include: {
336
+ commandResults: true,
337
+ effects: true
338
+ }
339
+ });
340
+ if (res.FailedTransaction) throw new Error(`Transaction failed: ${res.FailedTransaction.status.error?.message || "Unknown error"}`);
341
+ if (!res.commandResults) throw new Error("Failed to get margin manager balances: No command results");
342
+ const results = {};
343
+ const deepCoin = this.#ctx.config.getCoin("DEEP");
344
+ for (let i = 0; i < entries.length; i++) {
345
+ const [managerId, poolKey] = entries[i];
346
+ const pool = this.#ctx.config.getPool(poolKey);
347
+ const baseCoin = this.#ctx.config.getCoin(pool.baseCoin);
348
+ const quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);
349
+ const baseResult = res.commandResults[i * 3];
350
+ const quoteResult = res.commandResults[i * 3 + 1];
351
+ const deepResult = res.commandResults[i * 3 + 2];
352
+ if (!baseResult?.returnValues || !quoteResult?.returnValues || !deepResult?.returnValues) throw new Error(`Failed to get balances for margin manager ${managerId}: No return values`);
353
+ results[managerId] = {
354
+ base: formatTokenAmount(BigInt(bcs.U64.parse(baseResult.returnValues[0].bcs)), baseCoin.scalar, decimals),
355
+ quote: formatTokenAmount(BigInt(bcs.U64.parse(quoteResult.returnValues[0].bcs)), quoteCoin.scalar, decimals),
356
+ deep: formatTokenAmount(BigInt(bcs.U64.parse(deepResult.returnValues[0].bcs)), deepCoin.scalar, decimals)
357
+ };
358
+ }
359
+ return results;
360
+ }
361
+ };
362
+
363
+ //#endregion
364
+ export { MarginManagerQueries };
365
+ //# sourceMappingURL=marginManagerQueries.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marginManagerQueries.mjs","names":["#ctx"],"sources":["../../src/queries/marginManagerQueries.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/haneul/bcs';\nimport { Transaction } from '@haneullabs/haneul/transactions';\nimport { normalizeHaneulAddress } from '@haneullabs/haneul/utils';\n\nimport type {\n\tBorrowedShares,\n\tMarginManagerAssets,\n\tMarginManagerBalancesResult,\n\tMarginManagerDebts,\n\tMarginManagerState,\n} from '../types/index.js';\nimport { FLOAT_SCALAR } from '../utils/config.js';\nimport { formatTokenAmount } from './context.js';\nimport type { QueryContext } from './context.js';\n\nexport class MarginManagerQueries {\n\t#ctx: QueryContext;\n\n\tconstructor(ctx: QueryContext) {\n\t\tthis.#ctx = ctx;\n\t}\n\n\tasync getMarginManagerOwner(marginManagerKey: string): Promise<string> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.ownerByPoolKey(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\treturn normalizeHaneulAddress(bcs.Address.parse(bytes));\n\t}\n\n\tasync getMarginManagerDeepbookPool(marginManagerKey: string): Promise<string> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.deepbookPool(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\treturn normalizeHaneulAddress(bcs.Address.parse(bytes));\n\t}\n\n\tasync getMarginManagerMarginPoolId(marginManagerKey: string): Promise<string | null> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.marginPoolId(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\tconst option = bcs.option(bcs.Address).parse(bytes);\n\t\treturn option ? normalizeHaneulAddress(option) : null;\n\t}\n\n\tasync getMarginManagerBorrowedShares(marginManagerKey: string): Promise<BorrowedShares> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.borrowedShares(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst baseBytes = res.commandResults![0].returnValues[0].bcs;\n\t\tconst quoteBytes = res.commandResults![0].returnValues[1].bcs;\n\t\tconst baseShares = bcs.U64.parse(baseBytes).toString();\n\t\tconst quoteShares = bcs.U64.parse(quoteBytes).toString();\n\n\t\treturn { baseShares, quoteShares };\n\t}\n\n\tasync getMarginManagerBorrowedBaseShares(marginManagerKey: string): Promise<string> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.borrowedBaseShares(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\treturn bcs.U64.parse(bytes).toString();\n\t}\n\n\tasync getMarginManagerBorrowedQuoteShares(marginManagerKey: string): Promise<string> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.borrowedQuoteShares(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\treturn bcs.U64.parse(bytes).toString();\n\t}\n\n\tasync getMarginManagerHasBaseDebt(marginManagerKey: string): Promise<boolean> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.hasBaseDebt(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst bytes = res.commandResults![0].returnValues[0].bcs;\n\t\treturn bcs.bool().parse(bytes);\n\t}\n\n\tasync getMarginManagerBalanceManagerId(marginManagerAddress: string): Promise<string> {\n\t\tconst res = await this.#ctx.client.core.getObject({\n\t\t\tobjectId: marginManagerAddress,\n\t\t\tinclude: { content: true },\n\t\t});\n\n\t\tif (!res.object?.content) {\n\t\t\tthrow new Error(`Margin manager not found: ${marginManagerAddress}`);\n\t\t}\n\n\t\tconst MarginManagerBalanceManagerId = bcs.struct('MarginManagerBalanceManagerId', {\n\t\t\tid: bcs.Address,\n\t\t\towner: bcs.Address,\n\t\t\tdeepbook_pool: bcs.Address,\n\t\t\tmargin_pool_id: bcs.option(bcs.Address),\n\t\t\tbalance_manager_id: bcs.Address,\n\t\t});\n\n\t\tconst parsed = MarginManagerBalanceManagerId.parse(res.object.content);\n\t\treturn normalizeHaneulAddress(parsed.balance_manager_id);\n\t}\n\n\tasync getMarginManagerAssets(\n\t\tmarginManagerKey: string,\n\t\tdecimals: number = 6,\n\t): Promise<MarginManagerAssets> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.calculateAssets(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tconst baseBytes = res.commandResults![0].returnValues[0].bcs;\n\t\tconst quoteBytes = res.commandResults![0].returnValues[1].bcs;\n\t\tconst pool = this.#ctx.config.getPool(manager.poolKey);\n\t\tconst baseCoin = this.#ctx.config.getCoin(pool.baseCoin);\n\t\tconst quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);\n\n\t\tconst baseAsset = formatTokenAmount(\n\t\t\tBigInt(bcs.U64.parse(baseBytes)),\n\t\t\tbaseCoin.scalar,\n\t\t\tdecimals,\n\t\t);\n\t\tconst quoteAsset = formatTokenAmount(\n\t\t\tBigInt(bcs.U64.parse(quoteBytes)),\n\t\t\tquoteCoin.scalar,\n\t\t\tdecimals,\n\t\t);\n\n\t\treturn { baseAsset, quoteAsset };\n\t}\n\n\tasync getMarginManagerDebts(\n\t\tmarginManagerKey: string,\n\t\tdecimals: number = 6,\n\t): Promise<MarginManagerDebts> {\n\t\tconst hasBaseDebt = await this.getMarginManagerHasBaseDebt(marginManagerKey);\n\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst pool = this.#ctx.config.getPool(manager.poolKey);\n\t\tconst debtCoinKey = hasBaseDebt ? pool.baseCoin : pool.quoteCoin;\n\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.calculateDebts(manager.poolKey, debtCoinKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tif (res.FailedTransaction) {\n\t\t\tthrow new Error(\n\t\t\t\t`Transaction failed: ${res.FailedTransaction.status.error?.message || 'Unknown error'}`,\n\t\t\t);\n\t\t}\n\n\t\tif (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) {\n\t\t\tthrow new Error(`Failed to get margin manager debts: ${'Unknown error'}`);\n\t\t}\n\n\t\tconst baseBytes = res.commandResults[0].returnValues[0].bcs;\n\t\tconst quoteBytes = res.commandResults[0].returnValues[1].bcs;\n\t\tconst debtCoin = this.#ctx.config.getCoin(debtCoinKey);\n\n\t\tconst baseDebt = formatTokenAmount(BigInt(bcs.U64.parse(baseBytes)), debtCoin.scalar, decimals);\n\t\tconst quoteDebt = formatTokenAmount(\n\t\t\tBigInt(bcs.U64.parse(quoteBytes)),\n\t\t\tdebtCoin.scalar,\n\t\t\tdecimals,\n\t\t);\n\n\t\treturn { baseDebt, quoteDebt };\n\t}\n\n\tasync getMarginManagerState(\n\t\tmarginManagerKey: string,\n\t\tdecimals: number = 6,\n\t): Promise<MarginManagerState> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.managerState(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tif (res.FailedTransaction) {\n\t\t\tthrow new Error(\n\t\t\t\t`Transaction failed: ${res.FailedTransaction.status.error?.message || 'Unknown error'}`,\n\t\t\t);\n\t\t}\n\n\t\tif (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) {\n\t\t\tthrow new Error(`Failed to get margin manager state: Unknown error`);\n\t\t}\n\n\t\tconst pool = this.#ctx.config.getPool(manager.poolKey);\n\t\tconst baseCoin = this.#ctx.config.getCoin(pool.baseCoin);\n\t\tconst quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);\n\n\t\tconst managerId = normalizeHaneulAddress(\n\t\t\tbcs.Address.parse(res.commandResults[0].returnValues[0].bcs),\n\t\t);\n\t\tconst deepbookPoolId = normalizeHaneulAddress(\n\t\t\tbcs.Address.parse(res.commandResults[0].returnValues[1].bcs),\n\t\t);\n\t\tconst riskRatio =\n\t\t\tNumber(bcs.U64.parse(res.commandResults[0].returnValues[2].bcs)) / FLOAT_SCALAR;\n\t\tconst baseAsset = formatTokenAmount(\n\t\t\tBigInt(bcs.U64.parse(res.commandResults[0].returnValues[3].bcs)),\n\t\t\tbaseCoin.scalar,\n\t\t\tdecimals,\n\t\t);\n\t\tconst quoteAsset = formatTokenAmount(\n\t\t\tBigInt(bcs.U64.parse(res.commandResults[0].returnValues[4].bcs)),\n\t\t\tquoteCoin.scalar,\n\t\t\tdecimals,\n\t\t);\n\t\tconst baseDebt = formatTokenAmount(\n\t\t\tBigInt(bcs.U64.parse(res.commandResults[0].returnValues[5].bcs)),\n\t\t\tbaseCoin.scalar,\n\t\t\tdecimals,\n\t\t);\n\t\tconst quoteDebt = formatTokenAmount(\n\t\t\tBigInt(bcs.U64.parse(res.commandResults[0].returnValues[6].bcs)),\n\t\t\tquoteCoin.scalar,\n\t\t\tdecimals,\n\t\t);\n\t\tconst basePythPrice = bcs.U64.parse(res.commandResults[0].returnValues[7].bcs);\n\t\tconst basePythDecimals = Number(\n\t\t\tbcs.u8().parse(new Uint8Array(res.commandResults[0].returnValues[8].bcs)),\n\t\t);\n\t\tconst quotePythPrice = bcs.U64.parse(res.commandResults[0].returnValues[9].bcs);\n\t\tconst quotePythDecimals = Number(\n\t\t\tbcs.u8().parse(new Uint8Array(res.commandResults[0].returnValues[10].bcs)),\n\t\t);\n\t\tconst currentPrice = BigInt(bcs.U64.parse(res.commandResults[0].returnValues[11].bcs));\n\t\tconst lowestTriggerAbovePrice = BigInt(\n\t\t\tbcs.U64.parse(res.commandResults[0].returnValues[12].bcs),\n\t\t);\n\t\tconst highestTriggerBelowPrice = BigInt(\n\t\t\tbcs.U64.parse(res.commandResults[0].returnValues[13].bcs),\n\t\t);\n\n\t\treturn {\n\t\t\tmanagerId,\n\t\t\tdeepbookPoolId,\n\t\t\triskRatio,\n\t\t\tbaseAsset,\n\t\t\tquoteAsset,\n\t\t\tbaseDebt,\n\t\t\tquoteDebt,\n\t\t\tbasePythPrice: basePythPrice.toString(),\n\t\t\tbasePythDecimals,\n\t\t\tquotePythPrice: quotePythPrice.toString(),\n\t\t\tquotePythDecimals,\n\t\t\tcurrentPrice,\n\t\t\tlowestTriggerAbovePrice,\n\t\t\thighestTriggerBelowPrice,\n\t\t};\n\t}\n\n\tasync getMarginManagerStates(\n\t\tmarginManagers: Record<string, string>,\n\t\tdecimals: number = 6,\n\t): Promise<Record<string, MarginManagerState>> {\n\t\tconst entries = Object.entries(marginManagers);\n\t\tif (entries.length === 0) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst tx = new Transaction();\n\n\t\tfor (const [managerId, poolKey] of entries) {\n\t\t\ttx.add(this.#ctx.marginManager.managerState(poolKey, managerId));\n\t\t}\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tif (res.FailedTransaction) {\n\t\t\tthrow new Error(\n\t\t\t\t`Transaction failed: ${res.FailedTransaction.status.error?.message || 'Unknown error'}`,\n\t\t\t);\n\t\t}\n\n\t\tif (!res.commandResults) {\n\t\t\tthrow new Error(`Failed to get margin manager states: Unknown error`);\n\t\t}\n\n\t\tconst results: Record<string, MarginManagerState> = {};\n\n\t\tfor (let i = 0; i < entries.length; i++) {\n\t\t\tconst commandResult = res.commandResults[i];\n\t\t\tif (!commandResult || !commandResult.returnValues) {\n\t\t\t\tthrow new Error(`Failed to get margin manager state for index ${i}: No return values`);\n\t\t\t}\n\n\t\t\tconst [, poolKey] = entries[i];\n\t\t\tconst pool = this.#ctx.config.getPool(poolKey);\n\t\t\tconst baseCoin = this.#ctx.config.getCoin(pool.baseCoin);\n\t\t\tconst quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);\n\n\t\t\tconst managerId = normalizeHaneulAddress(bcs.Address.parse(commandResult.returnValues[0].bcs));\n\t\t\tconst deepbookPoolId = normalizeHaneulAddress(\n\t\t\t\tbcs.Address.parse(commandResult.returnValues[1].bcs),\n\t\t\t);\n\t\t\tconst riskRatio = Number(bcs.U64.parse(commandResult.returnValues[2].bcs)) / FLOAT_SCALAR;\n\t\t\tconst baseAsset = formatTokenAmount(\n\t\t\t\tBigInt(bcs.U64.parse(commandResult.returnValues[3].bcs)),\n\t\t\t\tbaseCoin.scalar,\n\t\t\t\tdecimals,\n\t\t\t);\n\t\t\tconst quoteAsset = formatTokenAmount(\n\t\t\t\tBigInt(bcs.U64.parse(commandResult.returnValues[4].bcs)),\n\t\t\t\tquoteCoin.scalar,\n\t\t\t\tdecimals,\n\t\t\t);\n\t\t\tconst baseDebt = formatTokenAmount(\n\t\t\t\tBigInt(bcs.U64.parse(commandResult.returnValues[5].bcs)),\n\t\t\t\tbaseCoin.scalar,\n\t\t\t\tdecimals,\n\t\t\t);\n\t\t\tconst quoteDebt = formatTokenAmount(\n\t\t\t\tBigInt(bcs.U64.parse(commandResult.returnValues[6].bcs)),\n\t\t\t\tquoteCoin.scalar,\n\t\t\t\tdecimals,\n\t\t\t);\n\t\t\tconst basePythPrice = bcs.U64.parse(commandResult.returnValues[7].bcs);\n\t\t\tconst basePythDecimals = Number(\n\t\t\t\tbcs.u8().parse(new Uint8Array(commandResult.returnValues[8].bcs)),\n\t\t\t);\n\t\t\tconst quotePythPrice = bcs.U64.parse(commandResult.returnValues[9].bcs);\n\t\t\tconst quotePythDecimals = Number(\n\t\t\t\tbcs.u8().parse(new Uint8Array(commandResult.returnValues[10].bcs)),\n\t\t\t);\n\t\t\tconst currentPrice = BigInt(bcs.U64.parse(commandResult.returnValues[11].bcs));\n\t\t\tconst lowestTriggerAbovePrice = BigInt(bcs.U64.parse(commandResult.returnValues[12].bcs));\n\t\t\tconst highestTriggerBelowPrice = BigInt(bcs.U64.parse(commandResult.returnValues[13].bcs));\n\n\t\t\tresults[managerId] = {\n\t\t\t\tmanagerId,\n\t\t\t\tdeepbookPoolId,\n\t\t\t\triskRatio,\n\t\t\t\tbaseAsset,\n\t\t\t\tquoteAsset,\n\t\t\t\tbaseDebt,\n\t\t\t\tquoteDebt,\n\t\t\t\tbasePythPrice: basePythPrice.toString(),\n\t\t\t\tbasePythDecimals,\n\t\t\t\tquotePythPrice: quotePythPrice.toString(),\n\t\t\t\tquotePythDecimals,\n\t\t\t\tcurrentPrice,\n\t\t\t\tlowestTriggerAbovePrice,\n\t\t\t\thighestTriggerBelowPrice,\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tasync getMarginManagerBaseBalance(\n\t\tmarginManagerKey: string,\n\t\tdecimals: number = 9,\n\t): Promise<string> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.baseBalance(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tif (res.FailedTransaction) {\n\t\t\tthrow new Error(\n\t\t\t\t`Transaction failed: ${res.FailedTransaction.status.error?.message || 'Unknown error'}`,\n\t\t\t);\n\t\t}\n\n\t\tif (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) {\n\t\t\tthrow new Error(`Failed to get margin manager base balance: Unknown error`);\n\t\t}\n\n\t\tconst bytes = res.commandResults[0].returnValues[0].bcs;\n\t\tconst pool = this.#ctx.config.getPool(manager.poolKey);\n\t\tconst baseCoin = this.#ctx.config.getCoin(pool.baseCoin);\n\n\t\treturn formatTokenAmount(BigInt(bcs.U64.parse(bytes)), baseCoin.scalar, decimals);\n\t}\n\n\tasync getMarginManagerQuoteBalance(\n\t\tmarginManagerKey: string,\n\t\tdecimals: number = 9,\n\t): Promise<string> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.quoteBalance(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tif (res.FailedTransaction) {\n\t\t\tthrow new Error(\n\t\t\t\t`Transaction failed: ${res.FailedTransaction.status.error?.message || 'Unknown error'}`,\n\t\t\t);\n\t\t}\n\n\t\tif (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) {\n\t\t\tthrow new Error(`Failed to get margin manager quote balance: Unknown error`);\n\t\t}\n\n\t\tconst bytes = res.commandResults[0].returnValues[0].bcs;\n\t\tconst pool = this.#ctx.config.getPool(manager.poolKey);\n\t\tconst quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);\n\n\t\treturn formatTokenAmount(BigInt(bcs.U64.parse(bytes)), quoteCoin.scalar, decimals);\n\t}\n\n\tasync getMarginManagerDeepBalance(\n\t\tmarginManagerKey: string,\n\t\tdecimals: number = 6,\n\t): Promise<string> {\n\t\tconst manager = this.#ctx.config.getMarginManager(marginManagerKey);\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#ctx.marginManager.deepBalance(manager.poolKey, manager.address));\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tif (res.FailedTransaction) {\n\t\t\tthrow new Error(\n\t\t\t\t`Transaction failed: ${res.FailedTransaction.status.error?.message || 'Unknown error'}`,\n\t\t\t);\n\t\t}\n\n\t\tif (!res.commandResults || !res.commandResults[0] || !res.commandResults[0].returnValues) {\n\t\t\tthrow new Error(`Failed to get margin manager DEEP balance: Unknown error`);\n\t\t}\n\n\t\tconst bytes = res.commandResults[0].returnValues[0].bcs;\n\t\tconst deepCoin = this.#ctx.config.getCoin('DEEP');\n\n\t\treturn formatTokenAmount(BigInt(bcs.U64.parse(bytes)), deepCoin.scalar, decimals);\n\t}\n\n\tasync getMarginManagerBalances(\n\t\tmarginManagers: Record<string, string>,\n\t\tdecimals: number = 9,\n\t): Promise<Record<string, MarginManagerBalancesResult>> {\n\t\tconst entries = Object.entries(marginManagers);\n\t\tif (entries.length === 0) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst tx = new Transaction();\n\n\t\tfor (const [managerId, poolKey] of entries) {\n\t\t\ttx.add(this.#ctx.marginManager.baseBalance(poolKey, managerId));\n\t\t\ttx.add(this.#ctx.marginManager.quoteBalance(poolKey, managerId));\n\t\t\ttx.add(this.#ctx.marginManager.deepBalance(poolKey, managerId));\n\t\t}\n\n\t\tconst res = await this.#ctx.client.core.simulateTransaction({\n\t\t\ttransaction: tx,\n\t\t\tinclude: { commandResults: true, effects: true },\n\t\t});\n\n\t\tif (res.FailedTransaction) {\n\t\t\tthrow new Error(\n\t\t\t\t`Transaction failed: ${res.FailedTransaction.status.error?.message || 'Unknown error'}`,\n\t\t\t);\n\t\t}\n\n\t\tif (!res.commandResults) {\n\t\t\tthrow new Error('Failed to get margin manager balances: No command results');\n\t\t}\n\n\t\tconst results: Record<string, MarginManagerBalancesResult> = {};\n\t\tconst deepCoin = this.#ctx.config.getCoin('DEEP');\n\n\t\tfor (let i = 0; i < entries.length; i++) {\n\t\t\tconst [managerId, poolKey] = entries[i];\n\t\t\tconst pool = this.#ctx.config.getPool(poolKey);\n\t\t\tconst baseCoin = this.#ctx.config.getCoin(pool.baseCoin);\n\t\t\tconst quoteCoin = this.#ctx.config.getCoin(pool.quoteCoin);\n\n\t\t\tconst baseResult = res.commandResults[i * 3];\n\t\t\tconst quoteResult = res.commandResults[i * 3 + 1];\n\t\t\tconst deepResult = res.commandResults[i * 3 + 2];\n\n\t\t\tif (!baseResult?.returnValues || !quoteResult?.returnValues || !deepResult?.returnValues) {\n\t\t\t\tthrow new Error(`Failed to get balances for margin manager ${managerId}: No return values`);\n\t\t\t}\n\n\t\t\tresults[managerId] = {\n\t\t\t\tbase: formatTokenAmount(\n\t\t\t\t\tBigInt(bcs.U64.parse(baseResult.returnValues[0].bcs)),\n\t\t\t\t\tbaseCoin.scalar,\n\t\t\t\t\tdecimals,\n\t\t\t\t),\n\t\t\t\tquote: formatTokenAmount(\n\t\t\t\t\tBigInt(bcs.U64.parse(quoteResult.returnValues[0].bcs)),\n\t\t\t\t\tquoteCoin.scalar,\n\t\t\t\t\tdecimals,\n\t\t\t\t),\n\t\t\t\tdeep: formatTokenAmount(\n\t\t\t\t\tBigInt(bcs.U64.parse(deepResult.returnValues[0].bcs)),\n\t\t\t\t\tdeepCoin.scalar,\n\t\t\t\t\tdecimals,\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\treturn results;\n\t}\n}\n"],"mappings":"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"}