@haneullabs/deepbook-v3 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/CHANGELOG.md +984 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/client.d.ts +861 -0
  4. package/dist/cjs/client.js +1982 -0
  5. package/dist/cjs/client.js.map +7 -0
  6. package/dist/cjs/contracts/deepbook/account.d.ts +105 -0
  7. package/dist/cjs/contracts/deepbook/account.js +163 -0
  8. package/dist/cjs/contracts/deepbook/account.js.map +7 -0
  9. package/dist/cjs/contracts/deepbook/balance_manager.d.ts +268 -0
  10. package/dist/cjs/contracts/deepbook/balance_manager.js +361 -0
  11. package/dist/cjs/contracts/deepbook/balance_manager.js.map +7 -0
  12. package/dist/cjs/contracts/deepbook/balances.d.ts +10 -0
  13. package/dist/cjs/contracts/deepbook/balances.js +35 -0
  14. package/dist/cjs/contracts/deepbook/balances.js.map +7 -0
  15. package/dist/cjs/contracts/deepbook/big_vector.d.ts +62 -0
  16. package/dist/cjs/contracts/deepbook/big_vector.js +80 -0
  17. package/dist/cjs/contracts/deepbook/big_vector.js.map +7 -0
  18. package/dist/cjs/contracts/deepbook/book.d.ts +34 -0
  19. package/dist/cjs/contracts/deepbook/book.js +50 -0
  20. package/dist/cjs/contracts/deepbook/book.js.map +7 -0
  21. package/dist/cjs/contracts/deepbook/constants.d.ts +176 -0
  22. package/dist/cjs/contracts/deepbook/constants.js +338 -0
  23. package/dist/cjs/contracts/deepbook/constants.js.map +7 -0
  24. package/dist/cjs/contracts/deepbook/deep_price.d.ts +60 -0
  25. package/dist/cjs/contracts/deepbook/deep_price.js +87 -0
  26. package/dist/cjs/contracts/deepbook/deep_price.js.map +7 -0
  27. package/dist/cjs/contracts/deepbook/deps/std/type_name.d.ts +14 -0
  28. package/dist/cjs/contracts/deepbook/deps/std/type_name.js +42 -0
  29. package/dist/cjs/contracts/deepbook/deps/std/type_name.js.map +7 -0
  30. package/dist/cjs/contracts/deepbook/deps/sui/bag.d.ts +33 -0
  31. package/dist/cjs/contracts/deepbook/deps/sui/bag.js +47 -0
  32. package/dist/cjs/contracts/deepbook/deps/sui/bag.js.map +7 -0
  33. package/dist/cjs/contracts/deepbook/deps/sui/balance.d.ts +9 -0
  34. package/dist/cjs/contracts/deepbook/deps/sui/balance.js +33 -0
  35. package/dist/cjs/contracts/deepbook/deps/sui/balance.js.map +7 -0
  36. package/dist/cjs/contracts/deepbook/deps/sui/object.d.ts +5 -0
  37. package/dist/cjs/contracts/deepbook/deps/sui/object.js +33 -0
  38. package/dist/cjs/contracts/deepbook/deps/sui/object.js.map +7 -0
  39. package/dist/cjs/contracts/deepbook/deps/sui/table.d.ts +28 -0
  40. package/dist/cjs/contracts/deepbook/deps/sui/table.js +47 -0
  41. package/dist/cjs/contracts/deepbook/deps/sui/table.js.map +7 -0
  42. package/dist/cjs/contracts/deepbook/deps/sui/vec_map.d.ts +27 -0
  43. package/dist/cjs/contracts/deepbook/deps/sui/vec_map.js +45 -0
  44. package/dist/cjs/contracts/deepbook/deps/sui/vec_map.js.map +7 -0
  45. package/dist/cjs/contracts/deepbook/deps/sui/vec_set.d.ts +15 -0
  46. package/dist/cjs/contracts/deepbook/deps/sui/vec_set.js +35 -0
  47. package/dist/cjs/contracts/deepbook/deps/sui/vec_set.js.map +7 -0
  48. package/dist/cjs/contracts/deepbook/deps/sui/versioned.d.ts +7 -0
  49. package/dist/cjs/contracts/deepbook/deps/sui/versioned.js +45 -0
  50. package/dist/cjs/contracts/deepbook/deps/sui/versioned.js.map +7 -0
  51. package/dist/cjs/contracts/deepbook/ewma.d.ts +17 -0
  52. package/dist/cjs/contracts/deepbook/ewma.js +39 -0
  53. package/dist/cjs/contracts/deepbook/ewma.js.map +7 -0
  54. package/dist/cjs/contracts/deepbook/fill.d.ts +153 -0
  55. package/dist/cjs/contracts/deepbook/fill.js +251 -0
  56. package/dist/cjs/contracts/deepbook/fill.js.map +7 -0
  57. package/dist/cjs/contracts/deepbook/governance.d.ts +63 -0
  58. package/dist/cjs/contracts/deepbook/governance.js +79 -0
  59. package/dist/cjs/contracts/deepbook/governance.js.map +7 -0
  60. package/dist/cjs/contracts/deepbook/history.d.ts +60 -0
  61. package/dist/cjs/contracts/deepbook/history.js +78 -0
  62. package/dist/cjs/contracts/deepbook/history.js.map +7 -0
  63. package/dist/cjs/contracts/deepbook/math.d.ts +94 -0
  64. package/dist/cjs/contracts/deepbook/math.js +132 -0
  65. package/dist/cjs/contracts/deepbook/math.js.map +7 -0
  66. package/dist/cjs/contracts/deepbook/order.d.ts +135 -0
  67. package/dist/cjs/contracts/deepbook/order.js +218 -0
  68. package/dist/cjs/contracts/deepbook/order.js.map +7 -0
  69. package/dist/cjs/contracts/deepbook/order_info.d.ts +296 -0
  70. package/dist/cjs/contracts/deepbook/order_info.js +386 -0
  71. package/dist/cjs/contracts/deepbook/order_info.js.map +7 -0
  72. package/dist/cjs/contracts/deepbook/order_query.d.ts +85 -0
  73. package/dist/cjs/contracts/deepbook/order_query.js +96 -0
  74. package/dist/cjs/contracts/deepbook/order_query.js.map +7 -0
  75. package/dist/cjs/contracts/deepbook/pool.d.ts +1218 -0
  76. package/dist/cjs/contracts/deepbook/pool.js +1236 -0
  77. package/dist/cjs/contracts/deepbook/pool.js.map +7 -0
  78. package/dist/cjs/contracts/deepbook/registry.d.ts +134 -0
  79. package/dist/cjs/contracts/deepbook/registry.js +182 -0
  80. package/dist/cjs/contracts/deepbook/registry.js.map +7 -0
  81. package/dist/cjs/contracts/deepbook/state.d.ts +117 -0
  82. package/dist/cjs/contracts/deepbook/state.js +104 -0
  83. package/dist/cjs/contracts/deepbook/state.js.map +7 -0
  84. package/dist/cjs/contracts/deepbook/trade_params.d.ts +7 -0
  85. package/dist/cjs/contracts/deepbook/trade_params.js +35 -0
  86. package/dist/cjs/contracts/deepbook/trade_params.js.map +7 -0
  87. package/dist/cjs/contracts/deepbook/vault.d.ts +30 -0
  88. package/dist/cjs/contracts/deepbook/vault.js +65 -0
  89. package/dist/cjs/contracts/deepbook/vault.js.map +7 -0
  90. package/dist/cjs/contracts/utils/index.d.ts +25 -0
  91. package/dist/cjs/contracts/utils/index.js +148 -0
  92. package/dist/cjs/contracts/utils/index.js.map +7 -0
  93. package/dist/cjs/index.d.ts +23 -0
  94. package/dist/cjs/index.js +81 -0
  95. package/dist/cjs/index.js.map +7 -0
  96. package/dist/cjs/package.json +4 -0
  97. package/dist/cjs/pyth/PriceServiceConnection.d.ts +26 -0
  98. package/dist/cjs/pyth/PriceServiceConnection.js +68 -0
  99. package/dist/cjs/pyth/PriceServiceConnection.js.map +7 -0
  100. package/dist/cjs/pyth/pyth-helpers.d.ts +7 -0
  101. package/dist/cjs/pyth/pyth-helpers.js +36 -0
  102. package/dist/cjs/pyth/pyth-helpers.js.map +7 -0
  103. package/dist/cjs/pyth/pyth.d.ts +65 -0
  104. package/dist/cjs/pyth/pyth.js +269 -0
  105. package/dist/cjs/pyth/pyth.js.map +7 -0
  106. package/dist/cjs/transactions/balanceManager.d.ts +168 -0
  107. package/dist/cjs/transactions/balanceManager.js +384 -0
  108. package/dist/cjs/transactions/balanceManager.js.map +7 -0
  109. package/dist/cjs/transactions/deepbook.d.ts +477 -0
  110. package/dist/cjs/transactions/deepbook.js +1335 -0
  111. package/dist/cjs/transactions/deepbook.js.map +7 -0
  112. package/dist/cjs/transactions/deepbookAdmin.d.ts +105 -0
  113. package/dist/cjs/transactions/deepbookAdmin.js +334 -0
  114. package/dist/cjs/transactions/deepbookAdmin.js.map +7 -0
  115. package/dist/cjs/transactions/flashLoans.d.ts +56 -0
  116. package/dist/cjs/transactions/flashLoans.js +124 -0
  117. package/dist/cjs/transactions/flashLoans.js.map +7 -0
  118. package/dist/cjs/transactions/governance.d.ts +42 -0
  119. package/dist/cjs/transactions/governance.js +135 -0
  120. package/dist/cjs/transactions/governance.js.map +7 -0
  121. package/dist/cjs/transactions/marginAdmin.d.ts +133 -0
  122. package/dist/cjs/transactions/marginAdmin.js +393 -0
  123. package/dist/cjs/transactions/marginAdmin.js.map +7 -0
  124. package/dist/cjs/transactions/marginLiquidations.d.ts +61 -0
  125. package/dist/cjs/transactions/marginLiquidations.js +173 -0
  126. package/dist/cjs/transactions/marginLiquidations.js.map +7 -0
  127. package/dist/cjs/transactions/marginMaintainer.d.ts +80 -0
  128. package/dist/cjs/transactions/marginMaintainer.js +251 -0
  129. package/dist/cjs/transactions/marginMaintainer.js.map +7 -0
  130. package/dist/cjs/transactions/marginManager.d.ts +236 -0
  131. package/dist/cjs/transactions/marginManager.js +688 -0
  132. package/dist/cjs/transactions/marginManager.js.map +7 -0
  133. package/dist/cjs/transactions/marginPool.d.ts +134 -0
  134. package/dist/cjs/transactions/marginPool.js +330 -0
  135. package/dist/cjs/transactions/marginPool.js.map +7 -0
  136. package/dist/cjs/transactions/marginRegistry.d.ts +94 -0
  137. package/dist/cjs/transactions/marginRegistry.js +221 -0
  138. package/dist/cjs/transactions/marginRegistry.js.map +7 -0
  139. package/dist/cjs/transactions/marginTPSL.d.ts +93 -0
  140. package/dist/cjs/transactions/marginTPSL.js +286 -0
  141. package/dist/cjs/transactions/marginTPSL.js.map +7 -0
  142. package/dist/cjs/transactions/poolProxy.d.ts +104 -0
  143. package/dist/cjs/transactions/poolProxy.js +435 -0
  144. package/dist/cjs/transactions/poolProxy.js.map +7 -0
  145. package/dist/cjs/types/bcs.d.ts +5 -0
  146. package/dist/cjs/types/bcs.js +33 -0
  147. package/dist/cjs/types/bcs.js.map +7 -0
  148. package/dist/cjs/types/index.d.ts +218 -0
  149. package/dist/cjs/types/index.js +38 -0
  150. package/dist/cjs/types/index.js.map +7 -0
  151. package/dist/cjs/utils/config.d.ts +65 -0
  152. package/dist/cjs/utils/config.js +144 -0
  153. package/dist/cjs/utils/config.js.map +7 -0
  154. package/dist/cjs/utils/constants.d.ts +76 -0
  155. package/dist/cjs/utils/constants.js +382 -0
  156. package/dist/cjs/utils/constants.js.map +7 -0
  157. package/dist/cjs/utils/errors.d.ts +42 -0
  158. package/dist/cjs/utils/errors.js +70 -0
  159. package/dist/cjs/utils/errors.js.map +7 -0
  160. package/dist/cjs/utils/validation.d.ts +50 -0
  161. package/dist/cjs/utils/validation.js +67 -0
  162. package/dist/cjs/utils/validation.js.map +7 -0
  163. package/dist/esm/client.d.ts +861 -0
  164. package/dist/esm/client.js +1967 -0
  165. package/dist/esm/client.js.map +7 -0
  166. package/dist/esm/contracts/deepbook/account.d.ts +105 -0
  167. package/dist/esm/contracts/deepbook/account.js +133 -0
  168. package/dist/esm/contracts/deepbook/account.js.map +7 -0
  169. package/dist/esm/contracts/deepbook/balance_manager.d.ts +268 -0
  170. package/dist/esm/contracts/deepbook/balance_manager.js +331 -0
  171. package/dist/esm/contracts/deepbook/balance_manager.js.map +7 -0
  172. package/dist/esm/contracts/deepbook/balances.d.ts +10 -0
  173. package/dist/esm/contracts/deepbook/balances.js +15 -0
  174. package/dist/esm/contracts/deepbook/balances.js.map +7 -0
  175. package/dist/esm/contracts/deepbook/big_vector.d.ts +62 -0
  176. package/dist/esm/contracts/deepbook/big_vector.js +50 -0
  177. package/dist/esm/contracts/deepbook/big_vector.js.map +7 -0
  178. package/dist/esm/contracts/deepbook/book.d.ts +34 -0
  179. package/dist/esm/contracts/deepbook/book.js +20 -0
  180. package/dist/esm/contracts/deepbook/book.js.map +7 -0
  181. package/dist/esm/contracts/deepbook/constants.d.ts +176 -0
  182. package/dist/esm/contracts/deepbook/constants.js +318 -0
  183. package/dist/esm/contracts/deepbook/constants.js.map +7 -0
  184. package/dist/esm/contracts/deepbook/deep_price.d.ts +60 -0
  185. package/dist/esm/contracts/deepbook/deep_price.js +67 -0
  186. package/dist/esm/contracts/deepbook/deep_price.js.map +7 -0
  187. package/dist/esm/contracts/deepbook/deps/std/type_name.d.ts +14 -0
  188. package/dist/esm/contracts/deepbook/deps/std/type_name.js +22 -0
  189. package/dist/esm/contracts/deepbook/deps/std/type_name.js.map +7 -0
  190. package/dist/esm/contracts/deepbook/deps/sui/bag.d.ts +33 -0
  191. package/dist/esm/contracts/deepbook/deps/sui/bag.js +17 -0
  192. package/dist/esm/contracts/deepbook/deps/sui/bag.js.map +7 -0
  193. package/dist/esm/contracts/deepbook/deps/sui/balance.d.ts +9 -0
  194. package/dist/esm/contracts/deepbook/deps/sui/balance.js +13 -0
  195. package/dist/esm/contracts/deepbook/deps/sui/balance.js.map +7 -0
  196. package/dist/esm/contracts/deepbook/deps/sui/object.d.ts +5 -0
  197. package/dist/esm/contracts/deepbook/deps/sui/object.js +13 -0
  198. package/dist/esm/contracts/deepbook/deps/sui/object.js.map +7 -0
  199. package/dist/esm/contracts/deepbook/deps/sui/table.d.ts +28 -0
  200. package/dist/esm/contracts/deepbook/deps/sui/table.js +17 -0
  201. package/dist/esm/contracts/deepbook/deps/sui/table.js.map +7 -0
  202. package/dist/esm/contracts/deepbook/deps/sui/vec_map.d.ts +27 -0
  203. package/dist/esm/contracts/deepbook/deps/sui/vec_map.js +25 -0
  204. package/dist/esm/contracts/deepbook/deps/sui/vec_map.js.map +7 -0
  205. package/dist/esm/contracts/deepbook/deps/sui/vec_set.d.ts +15 -0
  206. package/dist/esm/contracts/deepbook/deps/sui/vec_set.js +15 -0
  207. package/dist/esm/contracts/deepbook/deps/sui/vec_set.js.map +7 -0
  208. package/dist/esm/contracts/deepbook/deps/sui/versioned.d.ts +7 -0
  209. package/dist/esm/contracts/deepbook/deps/sui/versioned.js +15 -0
  210. package/dist/esm/contracts/deepbook/deps/sui/versioned.js.map +7 -0
  211. package/dist/esm/contracts/deepbook/ewma.d.ts +17 -0
  212. package/dist/esm/contracts/deepbook/ewma.js +19 -0
  213. package/dist/esm/contracts/deepbook/ewma.js.map +7 -0
  214. package/dist/esm/contracts/deepbook/fill.d.ts +153 -0
  215. package/dist/esm/contracts/deepbook/fill.js +221 -0
  216. package/dist/esm/contracts/deepbook/fill.js.map +7 -0
  217. package/dist/esm/contracts/deepbook/governance.d.ts +63 -0
  218. package/dist/esm/contracts/deepbook/governance.js +49 -0
  219. package/dist/esm/contracts/deepbook/governance.js.map +7 -0
  220. package/dist/esm/contracts/deepbook/history.d.ts +60 -0
  221. package/dist/esm/contracts/deepbook/history.js +48 -0
  222. package/dist/esm/contracts/deepbook/history.js.map +7 -0
  223. package/dist/esm/contracts/deepbook/math.d.ts +94 -0
  224. package/dist/esm/contracts/deepbook/math.js +112 -0
  225. package/dist/esm/contracts/deepbook/math.js.map +7 -0
  226. package/dist/esm/contracts/deepbook/order.d.ts +135 -0
  227. package/dist/esm/contracts/deepbook/order.js +188 -0
  228. package/dist/esm/contracts/deepbook/order.js.map +7 -0
  229. package/dist/esm/contracts/deepbook/order_info.d.ts +296 -0
  230. package/dist/esm/contracts/deepbook/order_info.js +356 -0
  231. package/dist/esm/contracts/deepbook/order_info.js.map +7 -0
  232. package/dist/esm/contracts/deepbook/order_query.d.ts +85 -0
  233. package/dist/esm/contracts/deepbook/order_query.js +66 -0
  234. package/dist/esm/contracts/deepbook/order_query.js.map +7 -0
  235. package/dist/esm/contracts/deepbook/pool.d.ts +1218 -0
  236. package/dist/esm/contracts/deepbook/pool.js +1206 -0
  237. package/dist/esm/contracts/deepbook/pool.js.map +7 -0
  238. package/dist/esm/contracts/deepbook/registry.d.ts +134 -0
  239. package/dist/esm/contracts/deepbook/registry.js +152 -0
  240. package/dist/esm/contracts/deepbook/registry.js.map +7 -0
  241. package/dist/esm/contracts/deepbook/state.d.ts +117 -0
  242. package/dist/esm/contracts/deepbook/state.js +74 -0
  243. package/dist/esm/contracts/deepbook/state.js.map +7 -0
  244. package/dist/esm/contracts/deepbook/trade_params.d.ts +7 -0
  245. package/dist/esm/contracts/deepbook/trade_params.js +15 -0
  246. package/dist/esm/contracts/deepbook/trade_params.js.map +7 -0
  247. package/dist/esm/contracts/deepbook/vault.d.ts +30 -0
  248. package/dist/esm/contracts/deepbook/vault.js +35 -0
  249. package/dist/esm/contracts/deepbook/vault.js.map +7 -0
  250. package/dist/esm/contracts/utils/index.d.ts +25 -0
  251. package/dist/esm/contracts/utils/index.js +128 -0
  252. package/dist/esm/contracts/utils/index.js.map +7 -0
  253. package/dist/esm/index.d.ts +23 -0
  254. package/dist/esm/index.js +81 -0
  255. package/dist/esm/index.js.map +7 -0
  256. package/dist/esm/package.json +4 -0
  257. package/dist/esm/pyth/PriceServiceConnection.d.ts +26 -0
  258. package/dist/esm/pyth/PriceServiceConnection.js +38 -0
  259. package/dist/esm/pyth/PriceServiceConnection.js.map +7 -0
  260. package/dist/esm/pyth/pyth-helpers.d.ts +7 -0
  261. package/dist/esm/pyth/pyth-helpers.js +16 -0
  262. package/dist/esm/pyth/pyth-helpers.js.map +7 -0
  263. package/dist/esm/pyth/pyth.d.ts +65 -0
  264. package/dist/esm/pyth/pyth.js +249 -0
  265. package/dist/esm/pyth/pyth.js.map +7 -0
  266. package/dist/esm/transactions/balanceManager.d.ts +168 -0
  267. package/dist/esm/transactions/balanceManager.js +364 -0
  268. package/dist/esm/transactions/balanceManager.js.map +7 -0
  269. package/dist/esm/transactions/deepbook.d.ts +477 -0
  270. package/dist/esm/transactions/deepbook.js +1321 -0
  271. package/dist/esm/transactions/deepbook.js.map +7 -0
  272. package/dist/esm/transactions/deepbookAdmin.d.ts +105 -0
  273. package/dist/esm/transactions/deepbookAdmin.js +314 -0
  274. package/dist/esm/transactions/deepbookAdmin.js.map +7 -0
  275. package/dist/esm/transactions/flashLoans.d.ts +56 -0
  276. package/dist/esm/transactions/flashLoans.js +104 -0
  277. package/dist/esm/transactions/flashLoans.js.map +7 -0
  278. package/dist/esm/transactions/governance.d.ts +42 -0
  279. package/dist/esm/transactions/governance.js +115 -0
  280. package/dist/esm/transactions/governance.js.map +7 -0
  281. package/dist/esm/transactions/marginAdmin.d.ts +133 -0
  282. package/dist/esm/transactions/marginAdmin.js +373 -0
  283. package/dist/esm/transactions/marginAdmin.js.map +7 -0
  284. package/dist/esm/transactions/marginLiquidations.d.ts +61 -0
  285. package/dist/esm/transactions/marginLiquidations.js +153 -0
  286. package/dist/esm/transactions/marginLiquidations.js.map +7 -0
  287. package/dist/esm/transactions/marginMaintainer.d.ts +80 -0
  288. package/dist/esm/transactions/marginMaintainer.js +231 -0
  289. package/dist/esm/transactions/marginMaintainer.js.map +7 -0
  290. package/dist/esm/transactions/marginManager.d.ts +236 -0
  291. package/dist/esm/transactions/marginManager.js +668 -0
  292. package/dist/esm/transactions/marginManager.js.map +7 -0
  293. package/dist/esm/transactions/marginPool.d.ts +134 -0
  294. package/dist/esm/transactions/marginPool.js +310 -0
  295. package/dist/esm/transactions/marginPool.js.map +7 -0
  296. package/dist/esm/transactions/marginRegistry.d.ts +94 -0
  297. package/dist/esm/transactions/marginRegistry.js +201 -0
  298. package/dist/esm/transactions/marginRegistry.js.map +7 -0
  299. package/dist/esm/transactions/marginTPSL.d.ts +93 -0
  300. package/dist/esm/transactions/marginTPSL.js +266 -0
  301. package/dist/esm/transactions/marginTPSL.js.map +7 -0
  302. package/dist/esm/transactions/poolProxy.d.ts +104 -0
  303. package/dist/esm/transactions/poolProxy.js +415 -0
  304. package/dist/esm/transactions/poolProxy.js.map +7 -0
  305. package/dist/esm/types/bcs.d.ts +5 -0
  306. package/dist/esm/types/bcs.js +13 -0
  307. package/dist/esm/types/bcs.js.map +7 -0
  308. package/dist/esm/types/index.d.ts +218 -0
  309. package/dist/esm/types/index.js +18 -0
  310. package/dist/esm/types/index.js.map +7 -0
  311. package/dist/esm/utils/config.d.ts +65 -0
  312. package/dist/esm/utils/config.js +135 -0
  313. package/dist/esm/utils/config.js.map +7 -0
  314. package/dist/esm/utils/constants.d.ts +76 -0
  315. package/dist/esm/utils/constants.js +362 -0
  316. package/dist/esm/utils/constants.js.map +7 -0
  317. package/dist/esm/utils/errors.d.ts +42 -0
  318. package/dist/esm/utils/errors.js +50 -0
  319. package/dist/esm/utils/errors.js.map +7 -0
  320. package/dist/esm/utils/validation.d.ts +50 -0
  321. package/dist/esm/utils/validation.js +47 -0
  322. package/dist/esm/utils/validation.js.map +7 -0
  323. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  324. package/dist/tsconfig.tsbuildinfo +1 -0
  325. package/package.json +63 -0
  326. package/src/client.ts +2451 -0
  327. package/src/contracts/deepbook/account.ts +199 -0
  328. package/src/contracts/deepbook/balance_manager.ts +532 -0
  329. package/src/contracts/deepbook/balances.ts +19 -0
  330. package/src/contracts/deepbook/big_vector.ts +74 -0
  331. package/src/contracts/deepbook/book.ts +24 -0
  332. package/src/contracts/deepbook/constants.ts +458 -0
  333. package/src/contracts/deepbook/deep_price.ts +84 -0
  334. package/src/contracts/deepbook/deps/std/type_name.ts +23 -0
  335. package/src/contracts/deepbook/deps/sui/bag.ts +41 -0
  336. package/src/contracts/deepbook/deps/sui/balance.ts +18 -0
  337. package/src/contracts/deepbook/deps/sui/object.ts +14 -0
  338. package/src/contracts/deepbook/deps/sui/table.ts +36 -0
  339. package/src/contracts/deepbook/deps/sui/vec_map.ts +33 -0
  340. package/src/contracts/deepbook/deps/sui/vec_set.ts +22 -0
  341. package/src/contracts/deepbook/deps/sui/versioned.ts +13 -0
  342. package/src/contracts/deepbook/ewma.ts +26 -0
  343. package/src/contracts/deepbook/fill.ts +336 -0
  344. package/src/contracts/deepbook/governance.ts +52 -0
  345. package/src/contracts/deepbook/history.ts +51 -0
  346. package/src/contracts/deepbook/math.ts +210 -0
  347. package/src/contracts/deepbook/order.ts +269 -0
  348. package/src/contracts/deepbook/order_info.ts +513 -0
  349. package/src/contracts/deepbook/order_query.ts +115 -0
  350. package/src/contracts/deepbook/pool.ts +2269 -0
  351. package/src/contracts/deepbook/registry.ts +242 -0
  352. package/src/contracts/deepbook/state.ts +74 -0
  353. package/src/contracts/deepbook/trade_params.ts +16 -0
  354. package/src/contracts/deepbook/vault.ts +37 -0
  355. package/src/contracts/utils/index.ts +184 -0
  356. package/src/index.ts +95 -0
  357. package/src/pyth/PriceServiceConnection.ts +48 -0
  358. package/src/pyth/pyth-helpers.ts +23 -0
  359. package/src/pyth/pyth.ts +305 -0
  360. package/src/transactions/balanceManager.ts +399 -0
  361. package/src/transactions/deepbook.ts +1519 -0
  362. package/src/transactions/deepbookAdmin.ts +332 -0
  363. package/src/transactions/flashLoans.ts +123 -0
  364. package/src/transactions/governance.ts +123 -0
  365. package/src/transactions/marginAdmin.ts +396 -0
  366. package/src/transactions/marginLiquidations.ts +175 -0
  367. package/src/transactions/marginMaintainer.ts +280 -0
  368. package/src/transactions/marginManager.ts +708 -0
  369. package/src/transactions/marginPool.ts +339 -0
  370. package/src/transactions/marginRegistry.ts +212 -0
  371. package/src/transactions/marginTPSL.ts +296 -0
  372. package/src/transactions/poolProxy.ts +438 -0
  373. package/src/types/bcs.ts +8 -0
  374. package/src/types/index.ts +255 -0
  375. package/src/utils/config.ts +177 -0
  376. package/src/utils/constants.ts +374 -0
  377. package/src/utils/errors.ts +67 -0
  378. package/src/utils/validation.ts +91 -0
@@ -0,0 +1,396 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import type { Transaction } from '@haneullabs/haneul/transactions';
5
+
6
+ import type { DeepBookConfig } from '../utils/config.js';
7
+ import type { TransactionArgument } from '@haneullabs/haneul/transactions';
8
+ import type { PoolConfigParams } from '../types/index.js';
9
+ import { FLOAT_SCALAR } from '../utils/config.js';
10
+ import { hexToBytes } from '@noble/hashes/utils';
11
+
12
+ /**
13
+ * MarginAdminContract class for managing admin actions.
14
+ */
15
+ export class MarginAdminContract {
16
+ #config: DeepBookConfig;
17
+
18
+ /**
19
+ * @param {DeepBookConfig} config Configuration for MarginAdminContract
20
+ */
21
+ constructor(config: DeepBookConfig) {
22
+ this.#config = config;
23
+ }
24
+
25
+ /**
26
+ * @returns The admin capability required for admin operations
27
+ * @throws Error if the admin capability is not set
28
+ */
29
+ #marginAdminCap() {
30
+ const marginAdminCap = this.#config.marginAdminCap;
31
+ if (!marginAdminCap) {
32
+ throw new Error('MARGIN_ADMIN_CAP environment variable not set');
33
+ }
34
+ return marginAdminCap;
35
+ }
36
+
37
+ /**
38
+ * @description Mint a maintainer cap
39
+ * @returns A function that takes a Transaction object
40
+ */
41
+ mintMaintainerCap = () => (tx: Transaction) => {
42
+ return tx.moveCall({
43
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::mint_maintainer_cap`,
44
+ arguments: [
45
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
46
+ tx.object(this.#marginAdminCap()),
47
+ tx.object.clock(),
48
+ ],
49
+ });
50
+ };
51
+
52
+ /**
53
+ * @description Revoke a maintainer cap
54
+ * @returns A function that takes a Transaction object
55
+ */
56
+ revokeMaintainerCap = (maintainerCapId: string) => (tx: Transaction) => {
57
+ tx.moveCall({
58
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::revoke_maintainer_cap`,
59
+ arguments: [
60
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
61
+ tx.object(this.#marginAdminCap()),
62
+ tx.object(maintainerCapId),
63
+ tx.object.clock(),
64
+ ],
65
+ });
66
+ };
67
+
68
+ /**
69
+ * @description Register a deepbook pool
70
+ * @param {string} poolKey The key of the pool to be registered
71
+ * @param {TransactionArgument} poolConfig The configuration of the pool
72
+ * @returns A function that takes a Transaction object
73
+ */
74
+ registerDeepbookPool =
75
+ (poolKey: string, poolConfig: TransactionArgument) => (tx: Transaction) => {
76
+ const pool = this.#config.getPool(poolKey);
77
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
78
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
79
+ tx.moveCall({
80
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::register_deepbook_pool`,
81
+ arguments: [
82
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
83
+ tx.object(this.#marginAdminCap()),
84
+ tx.object(pool.address),
85
+ poolConfig,
86
+ tx.object.clock(),
87
+ ],
88
+ typeArguments: [baseCoin.type, quoteCoin.type],
89
+ });
90
+ };
91
+
92
+ /**
93
+ * @description Enable a deepbook pool for margin trading
94
+ * @param {string} poolKey The key of the pool to be enabled
95
+ * @returns A function that takes a Transaction object
96
+ */
97
+ enableDeepbookPool = (poolKey: string) => (tx: Transaction) => {
98
+ const pool = this.#config.getPool(poolKey);
99
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
100
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
101
+ tx.moveCall({
102
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::enable_deepbook_pool`,
103
+ arguments: [
104
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
105
+ tx.object(this.#marginAdminCap()),
106
+ tx.object(pool.address),
107
+ tx.object.clock(),
108
+ ],
109
+ typeArguments: [baseCoin.type, quoteCoin.type],
110
+ });
111
+ };
112
+
113
+ /**
114
+ * @description Disable a deepbook pool from margin trading
115
+ * @param {string} poolKey The key of the pool to be disabled
116
+ * @returns A function that takes a Transaction object
117
+ */
118
+ disableDeepbookPool = (poolKey: string) => (tx: Transaction) => {
119
+ const pool = this.#config.getPool(poolKey);
120
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
121
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
122
+ tx.moveCall({
123
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::disable_deepbook_pool`,
124
+ arguments: [
125
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
126
+ tx.object(this.#marginAdminCap()),
127
+ tx.object(pool.address),
128
+ tx.object.clock(),
129
+ ],
130
+ typeArguments: [baseCoin.type, quoteCoin.type],
131
+ });
132
+ };
133
+
134
+ /**
135
+ * @description Update the risk parameters for a margin
136
+ * @param {string} poolKey The key of the pool to be updated
137
+ * @param {TransactionArgument} poolConfig The configuration of the pool
138
+ * @returns A function that takes a Transaction object
139
+ */
140
+ updateRiskParams = (poolKey: string, poolConfig: TransactionArgument) => (tx: Transaction) => {
141
+ const pool = this.#config.getPool(poolKey);
142
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
143
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
144
+ tx.moveCall({
145
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::update_risk_params`,
146
+ arguments: [
147
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
148
+ tx.object(this.#marginAdminCap()),
149
+ tx.object(pool.address),
150
+ poolConfig,
151
+ tx.object.clock(),
152
+ ],
153
+ typeArguments: [baseCoin.type, quoteCoin.type],
154
+ });
155
+ };
156
+
157
+ /**
158
+ * @description Add the PythConfig to the margin registry
159
+ * @param {Transaction} tx The transaction object
160
+ * @param {TransactionArgument} config The config to be added
161
+ * @returns A function that takes a Transaction object
162
+ */
163
+ addConfig = (config: TransactionArgument) => (tx: Transaction) => {
164
+ tx.moveCall({
165
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::add_config`,
166
+ arguments: [
167
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
168
+ tx.object(this.#marginAdminCap()),
169
+ config,
170
+ ],
171
+ typeArguments: [`${this.#config.MARGIN_PACKAGE_ID}::oracle::PythConfig`],
172
+ });
173
+ };
174
+
175
+ /**
176
+ * @description Remove the PythConfig from the margin registry
177
+ * @param {Transaction} tx The transaction object
178
+ * @returns A function that takes a Transaction object
179
+ */
180
+ removeConfig = () => (tx: Transaction) => {
181
+ tx.moveCall({
182
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::remove_config`,
183
+ arguments: [tx.object(this.#config.MARGIN_REGISTRY_ID), tx.object(this.#marginAdminCap())],
184
+ typeArguments: [`${this.#config.MARGIN_PACKAGE_ID}::oracle::PythConfig`],
185
+ });
186
+ };
187
+
188
+ /**
189
+ * @description Enable a specific version
190
+ * @param {number} version The version to be enabled
191
+ * @returns A function that takes a Transaction object
192
+ */
193
+ enableVersion = (version: number) => (tx: Transaction) => {
194
+ tx.moveCall({
195
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::enable_version`,
196
+ arguments: [
197
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
198
+ tx.pure.u64(version),
199
+ tx.object(this.#marginAdminCap()),
200
+ ],
201
+ });
202
+ };
203
+
204
+ /**
205
+ * @description Disable a specific version
206
+ * @param {number} version The version to be disabled
207
+ * @returns A function that takes a Transaction object
208
+ */
209
+ disableVersion = (version: number) => (tx: Transaction) => {
210
+ tx.moveCall({
211
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::disable_version`,
212
+ arguments: [
213
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
214
+ tx.pure.u64(version),
215
+ tx.object(this.#marginAdminCap()),
216
+ ],
217
+ });
218
+ };
219
+
220
+ /**
221
+ * @description Create a new pool config
222
+ * @param {string} poolKey The key to identify the pool
223
+ * @param {PoolConfigParams} poolConfigParams The parameters for the pool config
224
+ * @returns A function that takes a Transaction object
225
+ */
226
+ newPoolConfig = (poolKey: string, poolConfigParams: PoolConfigParams) => (tx: Transaction) => {
227
+ const pool = this.#config.getPool(poolKey);
228
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
229
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
230
+ const {
231
+ minWithdrawRiskRatio,
232
+ minBorrowRiskRatio,
233
+ liquidationRiskRatio,
234
+ targetLiquidationRiskRatio,
235
+ userLiquidationReward,
236
+ poolLiquidationReward,
237
+ } = poolConfigParams;
238
+ return tx.moveCall({
239
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::new_pool_config`,
240
+ arguments: [
241
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
242
+ tx.pure.u64(minWithdrawRiskRatio * FLOAT_SCALAR),
243
+ tx.pure.u64(minBorrowRiskRatio * FLOAT_SCALAR),
244
+ tx.pure.u64(liquidationRiskRatio * FLOAT_SCALAR),
245
+ tx.pure.u64(targetLiquidationRiskRatio * FLOAT_SCALAR),
246
+ tx.pure.u64(userLiquidationReward * FLOAT_SCALAR),
247
+ tx.pure.u64(poolLiquidationReward * FLOAT_SCALAR),
248
+ ],
249
+ typeArguments: [baseCoin.type, quoteCoin.type],
250
+ });
251
+ };
252
+
253
+ /**
254
+ * @description Create a new pool config with leverage
255
+ * @param {string} poolKey The key to identify the pool
256
+ * @param {number} leverage The leverage for the pool
257
+ * @returns A function that takes a Transaction object
258
+ */
259
+ newPoolConfigWithLeverage = (poolKey: string, leverage: number) => (tx: Transaction) => {
260
+ const pool = this.#config.getPool(poolKey);
261
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
262
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
263
+ tx.moveCall({
264
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::new_pool_config_with_leverage`,
265
+ arguments: [tx.object(this.#config.MARGIN_REGISTRY_ID), tx.pure.u64(leverage * FLOAT_SCALAR)],
266
+ typeArguments: [baseCoin.type, quoteCoin.type],
267
+ });
268
+ };
269
+
270
+ /**
271
+ * @description Create a new coin type data
272
+ * @param {string} coinKey The key to identify the coin
273
+ * @param {number} maxConfBps The maximum confidence interval in basis points
274
+ * @param {number} maxEwmaDifferenceBps The maximum EWMA difference in basis points
275
+ * @returns A function that takes a Transaction object
276
+ */
277
+ newCoinTypeData =
278
+ (coinKey: string, maxConfBps: number, maxEwmaDifferenceBps: number) => (tx: Transaction) => {
279
+ const coin = this.#config.getCoin(coinKey);
280
+ if (!coin.feed) {
281
+ throw new Error('Coin feed not found');
282
+ }
283
+ const priceFeedInput = new Uint8Array(
284
+ hexToBytes(coin['feed']!.startsWith('0x') ? coin.feed!.slice(2) : coin['feed']),
285
+ );
286
+ return tx.moveCall({
287
+ target: `${this.#config.MARGIN_PACKAGE_ID}::oracle::new_coin_type_data_from_currency`,
288
+ arguments: [
289
+ tx.object(coin.currencyId!),
290
+ tx.pure.vector('u8', priceFeedInput),
291
+ tx.pure.u64(maxConfBps),
292
+ tx.pure.u64(maxEwmaDifferenceBps),
293
+ ],
294
+ typeArguments: [coin.type],
295
+ });
296
+ };
297
+
298
+ /**
299
+ * @description Create a new Pyth config
300
+ * @param {Array<{coinKey: string, maxConfBps: number, maxEwmaDifferenceBps: number}>} coinSetups The coins with their oracle config to be added to the Pyth config
301
+ * @param {number} maxAgeSeconds The max age in seconds for the Pyth config
302
+ * @returns A function that takes a Transaction object
303
+ */
304
+ newPythConfig =
305
+ (
306
+ coinSetups: Array<{ coinKey: string; maxConfBps: number; maxEwmaDifferenceBps: number }>,
307
+ maxAgeSeconds: number,
308
+ ) =>
309
+ (tx: Transaction) => {
310
+ const coinTypeDataList = [];
311
+ for (const setup of coinSetups) {
312
+ coinTypeDataList.push(
313
+ this.newCoinTypeData(setup.coinKey, setup.maxConfBps, setup.maxEwmaDifferenceBps)(tx),
314
+ );
315
+ }
316
+ return tx.moveCall({
317
+ target: `${this.#config.MARGIN_PACKAGE_ID}::oracle::new_pyth_config`,
318
+ arguments: [
319
+ tx.makeMoveVec({
320
+ elements: coinTypeDataList,
321
+ type: `${this.#config.MARGIN_PACKAGE_ID}::oracle::CoinTypeData`,
322
+ }),
323
+ tx.pure.u64(maxAgeSeconds),
324
+ ],
325
+ });
326
+ };
327
+
328
+ /**
329
+ * @description Mint a pause cap
330
+ * @returns A function that takes a Transaction object
331
+ */
332
+ mintPauseCap = () => (tx: Transaction) => {
333
+ return tx.moveCall({
334
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::mint_pause_cap`,
335
+ arguments: [
336
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
337
+ tx.object(this.#marginAdminCap()),
338
+ tx.object.clock(),
339
+ ],
340
+ });
341
+ };
342
+
343
+ /**
344
+ * @description Revoke a pause cap
345
+ * @param {string} pauseCapId The ID of the pause cap to revoke
346
+ * @returns A function that takes a Transaction object
347
+ */
348
+ revokePauseCap = (pauseCapId: string) => (tx: Transaction) => {
349
+ tx.moveCall({
350
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::revoke_pause_cap`,
351
+ arguments: [
352
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
353
+ tx.object(this.#marginAdminCap()),
354
+ tx.object.clock(),
355
+ tx.pure.id(pauseCapId),
356
+ ],
357
+ });
358
+ };
359
+
360
+ /**
361
+ * @description Disable a version using pause cap
362
+ * @param {number} version The version to disable
363
+ * @param {string} pauseCapId The ID of the pause cap
364
+ * @returns A function that takes a Transaction object
365
+ */
366
+ disableVersionPauseCap = (version: number, pauseCapId: string) => (tx: Transaction) => {
367
+ tx.moveCall({
368
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::disable_version_pause_cap`,
369
+ arguments: [
370
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
371
+ tx.pure.u64(version),
372
+ tx.object(pauseCapId),
373
+ ],
374
+ });
375
+ };
376
+
377
+ /**
378
+ * @description Withdraw the default referral fees (admin only)
379
+ * The default referral at 0x0 doesn't have a SupplyReferral object
380
+ * @param {string} coinKey The key to identify the margin pool
381
+ * @returns A function that takes a Transaction object and returns a Coin<Asset>
382
+ */
383
+ adminWithdrawDefaultReferralFees = (coinKey: string) => (tx: Transaction) => {
384
+ const coin = this.#config.getCoin(coinKey);
385
+ const marginPool = this.#config.getMarginPool(coinKey);
386
+ return tx.moveCall({
387
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_pool::admin_withdraw_default_referral_fees`,
388
+ arguments: [
389
+ tx.object(marginPool.address),
390
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
391
+ tx.object(this.#marginAdminCap()),
392
+ ],
393
+ typeArguments: [coin.type],
394
+ });
395
+ };
396
+ }
@@ -0,0 +1,175 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import type { Transaction } from '@haneullabs/haneul/transactions';
4
+ import { coinWithBalance } from '@haneullabs/haneul/transactions';
5
+
6
+ import type { DeepBookConfig } from '../utils/config.js';
7
+
8
+ /**
9
+ * MarginLiquidationsContract class for managing LiquidationVault operations.
10
+ */
11
+ export class MarginLiquidationsContract {
12
+ #config: DeepBookConfig;
13
+
14
+ /**
15
+ * @param {DeepBookConfig} config Configuration for MarginLiquidationsContract
16
+ */
17
+ constructor(config: DeepBookConfig) {
18
+ this.#config = config;
19
+ }
20
+
21
+ /**
22
+ * @description Create a new liquidation vault
23
+ * @param {string} liquidationAdminCap The liquidation admin cap object ID
24
+ * @returns A function that takes a Transaction object
25
+ */
26
+ createLiquidationVault = (liquidationAdminCap: string) => (tx: Transaction) => {
27
+ tx.moveCall({
28
+ target: `${this.#config.LIQUIDATION_PACKAGE_ID}::liquidation_vault::create_liquidation_vault`,
29
+ arguments: [tx.object(liquidationAdminCap)],
30
+ });
31
+ };
32
+
33
+ /**
34
+ * @description Deposit coins into a liquidation vault
35
+ * @param {string} vaultId The liquidation vault object ID
36
+ * @param {string} liquidationAdminCap The liquidation admin cap object ID
37
+ * @param {string} coinKey The key to identify the coin type
38
+ * @param {number} amount The amount to deposit
39
+ * @returns A function that takes a Transaction object
40
+ */
41
+ deposit =
42
+ (vaultId: string, liquidationAdminCap: string, coinKey: string, amount: number) =>
43
+ (tx: Transaction) => {
44
+ const coin = this.#config.getCoin(coinKey);
45
+ const depositCoin = coinWithBalance({
46
+ type: coin.type,
47
+ balance: amount * coin.scalar,
48
+ });
49
+ tx.moveCall({
50
+ target: `${this.#config.LIQUIDATION_PACKAGE_ID}::liquidation_vault::deposit`,
51
+ arguments: [tx.object(vaultId), tx.object(liquidationAdminCap), depositCoin],
52
+ typeArguments: [coin.type],
53
+ });
54
+ };
55
+
56
+ /**
57
+ * @description Withdraw coins from a liquidation vault
58
+ * @param {string} vaultId The liquidation vault object ID
59
+ * @param {string} liquidationAdminCap The liquidation admin cap object ID
60
+ * @param {string} coinKey The key to identify the coin type
61
+ * @param {number} amount The amount to withdraw
62
+ * @returns A function that takes a Transaction object and returns the withdrawn coin
63
+ */
64
+ withdraw =
65
+ (vaultId: string, liquidationAdminCap: string, coinKey: string, amount: number) =>
66
+ (tx: Transaction) => {
67
+ const coin = this.#config.getCoin(coinKey);
68
+ return tx.moveCall({
69
+ target: `${this.#config.LIQUIDATION_PACKAGE_ID}::liquidation_vault::withdraw`,
70
+ arguments: [
71
+ tx.object(vaultId),
72
+ tx.object(liquidationAdminCap),
73
+ tx.pure.u64(amount * coin.scalar),
74
+ ],
75
+ typeArguments: [coin.type],
76
+ });
77
+ };
78
+
79
+ /**
80
+ * @description Liquidate a margin manager by repaying base debt
81
+ * @param {string} vaultId The liquidation vault object ID
82
+ * @param {string} managerAddress The margin manager address to liquidate
83
+ * @param {string} poolKey The key to identify the pool
84
+ * @param {number} [repayAmount] The amount to repay (in base asset units), or undefined for full liquidation
85
+ * @returns A function that takes a Transaction object
86
+ */
87
+ liquidateBase =
88
+ (vaultId: string, managerAddress: string, poolKey: string, repayAmount?: number) =>
89
+ (tx: Transaction) => {
90
+ const pool = this.#config.getPool(poolKey);
91
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
92
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
93
+ const baseMarginPool = this.#config.getMarginPool(pool.baseCoin);
94
+ const quoteMarginPool = this.#config.getMarginPool(pool.quoteCoin);
95
+
96
+ const repayAmountArg =
97
+ repayAmount !== undefined
98
+ ? tx.pure.option('u64', BigInt(Math.floor(repayAmount * baseCoin.scalar)))
99
+ : tx.pure.option('u64', null);
100
+
101
+ tx.moveCall({
102
+ target: `${this.#config.LIQUIDATION_PACKAGE_ID}::liquidation_vault::liquidate_base`,
103
+ arguments: [
104
+ tx.object(vaultId),
105
+ tx.object(managerAddress),
106
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
107
+ tx.object(baseCoin.priceInfoObjectId!),
108
+ tx.object(quoteCoin.priceInfoObjectId!),
109
+ tx.object(baseMarginPool.address),
110
+ tx.object(quoteMarginPool.address),
111
+ tx.object(pool.address),
112
+ repayAmountArg,
113
+ tx.object.clock(),
114
+ ],
115
+ typeArguments: [baseCoin.type, quoteCoin.type],
116
+ });
117
+ };
118
+
119
+ /**
120
+ * @description Liquidate a margin manager by repaying quote debt
121
+ * @param {string} vaultId The liquidation vault object ID
122
+ * @param {string} managerAddress The margin manager address to liquidate
123
+ * @param {string} poolKey The key to identify the pool
124
+ * @param {number} [repayAmount] The amount to repay (in quote asset units), or undefined for full liquidation
125
+ * @returns A function that takes a Transaction object
126
+ */
127
+ liquidateQuote =
128
+ (vaultId: string, managerAddress: string, poolKey: string, repayAmount?: number) =>
129
+ (tx: Transaction) => {
130
+ const pool = this.#config.getPool(poolKey);
131
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
132
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
133
+ const baseMarginPool = this.#config.getMarginPool(pool.baseCoin);
134
+ const quoteMarginPool = this.#config.getMarginPool(pool.quoteCoin);
135
+
136
+ const repayAmountArg =
137
+ repayAmount !== undefined
138
+ ? tx.pure.option('u64', BigInt(Math.floor(repayAmount * quoteCoin.scalar)))
139
+ : tx.pure.option('u64', null);
140
+
141
+ tx.moveCall({
142
+ target: `${this.#config.LIQUIDATION_PACKAGE_ID}::liquidation_vault::liquidate_quote`,
143
+ arguments: [
144
+ tx.object(vaultId),
145
+ tx.object(managerAddress),
146
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
147
+ tx.object(baseCoin.priceInfoObjectId!),
148
+ tx.object(quoteCoin.priceInfoObjectId!),
149
+ tx.object(baseMarginPool.address),
150
+ tx.object(quoteMarginPool.address),
151
+ tx.object(pool.address),
152
+ repayAmountArg,
153
+ tx.object.clock(),
154
+ ],
155
+ typeArguments: [baseCoin.type, quoteCoin.type],
156
+ });
157
+ };
158
+
159
+ // === Read-Only Functions ===
160
+
161
+ /**
162
+ * @description Get the balance of a specific coin type in the liquidation vault
163
+ * @param {string} vaultId The liquidation vault object ID
164
+ * @param {string} coinKey The key to identify the coin type
165
+ * @returns A function that takes a Transaction object
166
+ */
167
+ balance = (vaultId: string, coinKey: string) => (tx: Transaction) => {
168
+ const coin = this.#config.getCoin(coinKey);
169
+ return tx.moveCall({
170
+ target: `${this.#config.LIQUIDATION_PACKAGE_ID}::liquidation_vault::balance`,
171
+ arguments: [tx.object(vaultId)],
172
+ typeArguments: [coin.type],
173
+ });
174
+ };
175
+ }