@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,708 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import type { Transaction, TransactionArgument } from '@haneullabs/haneul/transactions';
4
+ import { coinWithBalance } from '@haneullabs/haneul/transactions';
5
+
6
+ import type { DeepBookConfig } from '../utils/config.js';
7
+
8
+ /**
9
+ * MarginManagerContract class for managing MarginManager operations.
10
+ */
11
+ export class MarginManagerContract {
12
+ #config: DeepBookConfig;
13
+
14
+ /**
15
+ * @param {DeepBookConfig} config Configuration for MarginManagerContract
16
+ */
17
+ constructor(config: DeepBookConfig) {
18
+ this.#config = config;
19
+ }
20
+
21
+ /**
22
+ * @description Create a new margin manager
23
+ * @param {string} poolKey The key to identify the pool
24
+ * @returns A function that takes a Transaction object
25
+ */
26
+ newMarginManager = (poolKey: string) => (tx: Transaction) => {
27
+ const pool = this.#config.getPool(poolKey);
28
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
29
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
30
+ tx.moveCall({
31
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::new`,
32
+ arguments: [
33
+ tx.object(pool.address),
34
+ tx.object(this.#config.REGISTRY_ID),
35
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
36
+ tx.object.clock(),
37
+ ],
38
+ typeArguments: [baseCoin.type, quoteCoin.type],
39
+ });
40
+ };
41
+
42
+ /**
43
+ * @description Create a new margin manager with an initializer
44
+ * @param {string} poolKey The key to identify the pool
45
+ * @returns A function that takes a Transaction object
46
+ */
47
+ newMarginManagerWithInitializer = (poolKey: string) => (tx: Transaction) => {
48
+ const pool = this.#config.getPool(poolKey);
49
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
50
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
51
+ const [manager, initializer] = tx.moveCall({
52
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::new_with_initializer`,
53
+ arguments: [
54
+ tx.object(pool.address),
55
+ tx.object(this.#config.REGISTRY_ID),
56
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
57
+ tx.object.clock(),
58
+ ],
59
+ typeArguments: [baseCoin.type, quoteCoin.type],
60
+ });
61
+ return { manager, initializer };
62
+ };
63
+
64
+ /**
65
+ * @description Share a margin manager
66
+ * @param {string} poolKey The key to identify the pool
67
+ * @param {TransactionArgument} manager The margin manager to share
68
+ * @param {TransactionArgument} initializer The initializer for the manager
69
+ * @returns A function that takes a Transaction object
70
+ */
71
+ shareMarginManager =
72
+ (poolKey: string, manager: TransactionArgument, initializer: TransactionArgument) =>
73
+ (tx: Transaction) => {
74
+ const pool = this.#config.getPool(poolKey);
75
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
76
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
77
+ tx.moveCall({
78
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::share`,
79
+ arguments: [manager, initializer],
80
+ typeArguments: [baseCoin.type, quoteCoin.type],
81
+ });
82
+ };
83
+
84
+ /**
85
+ * @description Deposit base into a margin manager
86
+ * @param {string} managerKey The key to identify the manager
87
+ * @param {number} amount The amount to deposit
88
+ * @returns A function that takes a Transaction object
89
+ */
90
+ depositBase = (managerKey: string, amount: number) => (tx: Transaction) => {
91
+ const manager = this.#config.getMarginManager(managerKey);
92
+ const pool = this.#config.getPool(manager.poolKey);
93
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
94
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
95
+ const coin = coinWithBalance({
96
+ type: baseCoin.type,
97
+ balance: amount * baseCoin.scalar,
98
+ });
99
+ tx.moveCall({
100
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::deposit`,
101
+ arguments: [
102
+ tx.object(manager.address),
103
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
104
+ tx.object(baseCoin.priceInfoObjectId!),
105
+ tx.object(quoteCoin.priceInfoObjectId!),
106
+ coin,
107
+ tx.object.clock(),
108
+ ],
109
+ typeArguments: [baseCoin.type, quoteCoin.type, baseCoin.type],
110
+ });
111
+ };
112
+
113
+ /**
114
+ * @description Deposit quote into a margin manager
115
+ * @param {string} managerKey The key to identify the manager
116
+ * @param {number} amount The amount to deposit
117
+ * @returns A function that takes a Transaction object
118
+ */
119
+ depositQuote = (managerKey: string, amount: number) => (tx: Transaction) => {
120
+ const manager = this.#config.getMarginManager(managerKey);
121
+ const pool = this.#config.getPool(manager.poolKey);
122
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
123
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
124
+ const coin = coinWithBalance({
125
+ type: quoteCoin.type,
126
+ balance: amount * quoteCoin.scalar,
127
+ });
128
+ tx.moveCall({
129
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::deposit`,
130
+ arguments: [
131
+ tx.object(manager.address),
132
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
133
+ tx.object(baseCoin.priceInfoObjectId!),
134
+ tx.object(quoteCoin.priceInfoObjectId!),
135
+ coin,
136
+ tx.object.clock(),
137
+ ],
138
+ typeArguments: [baseCoin.type, quoteCoin.type, quoteCoin.type],
139
+ });
140
+ };
141
+
142
+ /**
143
+ * @description Deposit deep into a margin manager
144
+ * @param {string} managerKey The key to identify the manager
145
+ * @param {number} amount The amount to deposit
146
+ * @returns A function that takes a Transaction object
147
+ */
148
+ depositDeep = (managerKey: string, amount: number) => (tx: Transaction) => {
149
+ const manager = this.#config.getMarginManager(managerKey);
150
+ const pool = this.#config.getPool(manager.poolKey);
151
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
152
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
153
+ const deepCoin = this.#config.getCoin('DEEP');
154
+ const coin = coinWithBalance({
155
+ type: deepCoin.type,
156
+ balance: amount * deepCoin.scalar,
157
+ });
158
+ tx.moveCall({
159
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::deposit`,
160
+ arguments: [
161
+ tx.object(manager.address),
162
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
163
+ tx.object(baseCoin.priceInfoObjectId!),
164
+ tx.object(quoteCoin.priceInfoObjectId!),
165
+ coin,
166
+ tx.object.clock(),
167
+ ],
168
+ typeArguments: [baseCoin.type, quoteCoin.type, deepCoin.type],
169
+ });
170
+ };
171
+
172
+ /**
173
+ * @description Withdraw base from a margin manager
174
+ * @param {string} managerKey The key to identify the manager
175
+ * @param {number} amount The amount to withdraw
176
+ * @returns A function that takes a Transaction object
177
+ */
178
+ withdrawBase = (managerKey: string, amount: number) => (tx: Transaction) => {
179
+ const manager = this.#config.getMarginManager(managerKey);
180
+ const pool = this.#config.getPool(manager.poolKey);
181
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
182
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
183
+ const baseMarginPool = this.#config.getMarginPool(pool.baseCoin);
184
+ const quoteMarginPool = this.#config.getMarginPool(pool.quoteCoin);
185
+ return tx.moveCall({
186
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::withdraw`,
187
+ arguments: [
188
+ tx.object(manager.address),
189
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
190
+ tx.object(baseMarginPool.address),
191
+ tx.object(quoteMarginPool.address),
192
+ tx.object(baseCoin.priceInfoObjectId!),
193
+ tx.object(quoteCoin.priceInfoObjectId!),
194
+ tx.object(pool.address),
195
+ tx.pure.u64(amount * baseCoin.scalar),
196
+ tx.object.clock(),
197
+ ],
198
+ typeArguments: [baseCoin.type, quoteCoin.type, baseCoin.type],
199
+ });
200
+ };
201
+
202
+ /**
203
+ * @description Withdraw quote from a margin manager
204
+ * @param {string} managerKey The key to identify the manager
205
+ * @param {number} amount The amount to withdraw
206
+ * @returns A function that takes a Transaction object
207
+ */
208
+ withdrawQuote = (managerKey: string, amount: number) => (tx: Transaction) => {
209
+ const manager = this.#config.getMarginManager(managerKey);
210
+ const pool = this.#config.getPool(manager.poolKey);
211
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
212
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
213
+ const baseMarginPool = this.#config.getMarginPool(pool.baseCoin);
214
+ const quoteMarginPool = this.#config.getMarginPool(pool.quoteCoin);
215
+ return tx.moveCall({
216
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::withdraw`,
217
+ arguments: [
218
+ tx.object(manager.address),
219
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
220
+ tx.object(baseMarginPool.address),
221
+ tx.object(quoteMarginPool.address),
222
+ tx.object(baseCoin.priceInfoObjectId!),
223
+ tx.object(quoteCoin.priceInfoObjectId!),
224
+ tx.object(pool.address),
225
+ tx.pure.u64(amount * quoteCoin.scalar),
226
+ tx.object.clock(),
227
+ ],
228
+ typeArguments: [baseCoin.type, quoteCoin.type, quoteCoin.type],
229
+ });
230
+ };
231
+
232
+ /**
233
+ * @description Withdraw deep from a margin manager
234
+ * @param {string} managerKey The key to identify the manager
235
+ * @param {number} amount The amount to withdraw
236
+ * @returns A function that takes a Transaction object
237
+ */
238
+ withdrawDeep = (managerKey: string, amount: number) => (tx: Transaction) => {
239
+ const manager = this.#config.getMarginManager(managerKey);
240
+ const pool = this.#config.getPool(manager.poolKey);
241
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
242
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
243
+ const deepCoin = this.#config.getCoin('DEEP');
244
+ const baseMarginPool = this.#config.getMarginPool(pool.baseCoin);
245
+ const quoteMarginPool = this.#config.getMarginPool(pool.quoteCoin);
246
+ return tx.moveCall({
247
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::withdraw`,
248
+ arguments: [
249
+ tx.object(manager.address),
250
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
251
+ tx.object(baseMarginPool.address),
252
+ tx.object(quoteMarginPool.address),
253
+ tx.object(baseCoin.priceInfoObjectId!),
254
+ tx.object(quoteCoin.priceInfoObjectId!),
255
+ tx.object(pool.address),
256
+ tx.pure.u64(amount * deepCoin.scalar),
257
+ tx.object.clock(),
258
+ ],
259
+ typeArguments: [baseCoin.type, quoteCoin.type, deepCoin.type],
260
+ });
261
+ };
262
+
263
+ /**
264
+ * @description Borrow base from a margin manager
265
+ * @param {string} managerKey The key to identify the manager
266
+ * @param {number} amount The amount to borrow
267
+ * @returns A function that takes a Transaction object
268
+ */
269
+ borrowBase = (managerKey: string, amount: number) => (tx: Transaction) => {
270
+ const manager = this.#config.getMarginManager(managerKey);
271
+ const pool = this.#config.getPool(manager.poolKey);
272
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
273
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
274
+ const baseMarginPool = this.#config.getMarginPool(pool.baseCoin);
275
+ return tx.moveCall({
276
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::borrow_base`,
277
+ arguments: [
278
+ tx.object(manager.address),
279
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
280
+ tx.object(baseMarginPool.address),
281
+ tx.object(baseCoin.priceInfoObjectId!),
282
+ tx.object(quoteCoin.priceInfoObjectId!),
283
+ tx.object(pool.address),
284
+ tx.pure.u64(amount * baseCoin.scalar),
285
+ tx.object.clock(),
286
+ ],
287
+ typeArguments: [baseCoin.type, quoteCoin.type],
288
+ });
289
+ };
290
+
291
+ /**
292
+ * @description Borrow quote from a margin manager
293
+ * @param {string} managerKey The key to identify the manager
294
+ * @param {number} amount The amount to borrow
295
+ * @returns A function that takes a Transaction object
296
+ */
297
+ borrowQuote = (managerKey: string, amount: number) => (tx: Transaction) => {
298
+ const manager = this.#config.getMarginManager(managerKey);
299
+ const pool = this.#config.getPool(manager.poolKey);
300
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
301
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
302
+ const quoteMarginPool = this.#config.getMarginPool(pool.quoteCoin);
303
+ return tx.moveCall({
304
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::borrow_quote`,
305
+ arguments: [
306
+ tx.object(manager.address),
307
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
308
+ tx.object(quoteMarginPool.address),
309
+ tx.object(baseCoin.priceInfoObjectId!),
310
+ tx.object(quoteCoin.priceInfoObjectId!),
311
+ tx.object(pool.address),
312
+ tx.pure.u64(amount * quoteCoin.scalar),
313
+ tx.object.clock(),
314
+ ],
315
+ typeArguments: [baseCoin.type, quoteCoin.type],
316
+ });
317
+ };
318
+
319
+ /**
320
+ * @description Repay base from a margin manager
321
+ * @param {string} managerKey The key to identify the manager
322
+ * @param {number} amount The amount to repay
323
+ * @returns A function that takes a Transaction object
324
+ */
325
+ repayBase = (managerKey: string, amount?: number) => (tx: Transaction) => {
326
+ const manager = this.#config.getMarginManager(managerKey);
327
+ const pool = this.#config.getPool(manager.poolKey);
328
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
329
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
330
+ const baseMarginPool = this.#config.getMarginPool(pool.baseCoin);
331
+ return tx.moveCall({
332
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::repay_base`,
333
+ arguments: [
334
+ tx.object(manager.address),
335
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
336
+ tx.object(baseMarginPool.address),
337
+ tx.object.option({
338
+ type: 'u64',
339
+ value: amount ? tx.pure.u64(amount * baseCoin.scalar) : null,
340
+ }),
341
+ tx.object.clock(),
342
+ ],
343
+ typeArguments: [baseCoin.type, quoteCoin.type],
344
+ });
345
+ };
346
+
347
+ /**
348
+ * @description Repay quote from a margin manager
349
+ * @param {string} managerKey The key to identify the manager
350
+ * @param {number} amount The amount to repay
351
+ * @returns A function that takes a Transaction object
352
+ */
353
+ repayQuote = (managerKey: string, amount?: number) => (tx: Transaction) => {
354
+ const manager = this.#config.getMarginManager(managerKey);
355
+ const pool = this.#config.getPool(manager.poolKey);
356
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
357
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
358
+ const quoteMarginPool = this.#config.getMarginPool(pool.quoteCoin);
359
+ return tx.moveCall({
360
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::repay_quote`,
361
+ arguments: [
362
+ tx.object(manager.address),
363
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
364
+ tx.object(quoteMarginPool.address),
365
+ tx.object.option({
366
+ type: 'u64',
367
+ value: amount ? tx.pure.u64(amount * quoteCoin.scalar) : null,
368
+ }),
369
+ tx.object.clock(),
370
+ ],
371
+ typeArguments: [baseCoin.type, quoteCoin.type],
372
+ });
373
+ };
374
+
375
+ /**
376
+ * @description Liquidate a margin manager
377
+ * @param {string} managerAddress The address of the manager to liquidate
378
+ * @param {string} poolKey The key to identify the pool
379
+ * @param {boolean} debtIsBase Whether the debt is in base
380
+ * @param {TransactionArgument} repayCoin The coin to repay
381
+ * @returns A function that takes a Transaction object
382
+ */
383
+ liquidate =
384
+ (
385
+ managerAddress: string,
386
+ poolKey: string,
387
+ debtIsBase: boolean,
388
+ repayCoin: TransactionArgument,
389
+ ) =>
390
+ (tx: Transaction) => {
391
+ const pool = this.#config.getPool(poolKey);
392
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
393
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
394
+ const baseMarginPool = this.#config.getMarginPool(pool.baseCoin);
395
+ const quoteMarginPool = this.#config.getMarginPool(pool.quoteCoin);
396
+ const marginPool = debtIsBase ? baseMarginPool : quoteMarginPool;
397
+ return tx.moveCall({
398
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::liquidate`,
399
+ arguments: [
400
+ tx.object(managerAddress),
401
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
402
+ tx.object(baseCoin.priceInfoObjectId!),
403
+ tx.object(quoteCoin.priceInfoObjectId!),
404
+ tx.object(marginPool.address),
405
+ tx.object(pool.address),
406
+ repayCoin,
407
+ tx.object.clock(),
408
+ ],
409
+ typeArguments: [baseCoin.type, quoteCoin.type],
410
+ });
411
+ };
412
+
413
+ /**
414
+ * @description Set the referral for a margin manager (DeepBookPoolReferral)
415
+ * @param {string} managerKey The key to identify the margin manager
416
+ * @param {string} referral The referral (DeepBookPoolReferral) to set
417
+ * @returns A function that takes a Transaction object
418
+ */
419
+ setMarginManagerReferral = (managerKey: string, referral: string) => (tx: Transaction) => {
420
+ const manager = this.#config.getMarginManager(managerKey);
421
+ const pool = this.#config.getPool(manager.poolKey);
422
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
423
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
424
+
425
+ tx.moveCall({
426
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::set_margin_manager_referral`,
427
+ arguments: [tx.object(manager.address), tx.object(referral)],
428
+ typeArguments: [baseCoin.type, quoteCoin.type],
429
+ });
430
+ };
431
+
432
+ /**
433
+ * @description Unset the referral for a margin manager
434
+ * @param {string} managerKey The key to identify the margin manager
435
+ * @param {string} poolKey The key of the pool to unset the referral for
436
+ * @returns A function that takes a Transaction object
437
+ */
438
+ unsetMarginManagerReferral = (managerKey: string, poolKey: string) => (tx: Transaction) => {
439
+ const manager = this.#config.getMarginManager(managerKey);
440
+ const pool = this.#config.getPool(poolKey);
441
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
442
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
443
+
444
+ tx.moveCall({
445
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::unset_margin_manager_referral`,
446
+ arguments: [tx.object(manager.address), tx.pure.id(pool.address)],
447
+ typeArguments: [baseCoin.type, quoteCoin.type],
448
+ });
449
+ };
450
+
451
+ // === Read-Only Functions ===
452
+
453
+ /**
454
+ * @description Get the owner address of a margin manager
455
+ * @param {string} poolKey The key to identify the pool
456
+ * @param {string} marginManagerId The ID of the margin manager
457
+ * @returns A function that takes a Transaction object
458
+ */
459
+ ownerByPoolKey = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
460
+ const pool = this.#config.getPool(poolKey);
461
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
462
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
463
+ return tx.moveCall({
464
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::owner`,
465
+ arguments: [tx.object(marginManagerId)],
466
+ typeArguments: [baseCoin.type, quoteCoin.type],
467
+ });
468
+ };
469
+
470
+ /**
471
+ * @description Get the DeepBook pool ID associated with a margin manager
472
+ * @param {string} poolKey The key to identify the pool
473
+ * @param {string} marginManagerId The ID of the margin manager
474
+ * @returns A function that takes a Transaction object
475
+ */
476
+ deepbookPool = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
477
+ const pool = this.#config.getPool(poolKey);
478
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
479
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
480
+ return tx.moveCall({
481
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::deepbook_pool`,
482
+ arguments: [tx.object(marginManagerId)],
483
+ typeArguments: [baseCoin.type, quoteCoin.type],
484
+ });
485
+ };
486
+
487
+ /**
488
+ * @description Get the margin pool ID (if any) associated with a margin manager
489
+ * @param {string} poolKey The key to identify the pool
490
+ * @param {string} marginManagerId The ID of the margin manager
491
+ * @returns A function that takes a Transaction object
492
+ */
493
+ marginPoolId = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
494
+ const pool = this.#config.getPool(poolKey);
495
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
496
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
497
+ return tx.moveCall({
498
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::margin_pool_id`,
499
+ arguments: [tx.object(marginManagerId)],
500
+ typeArguments: [baseCoin.type, quoteCoin.type],
501
+ });
502
+ };
503
+
504
+ /**
505
+ * @description Get borrowed shares for both base and quote assets
506
+ * @param {string} poolKey The key to identify the pool
507
+ * @param {string} marginManagerId The ID of the margin manager
508
+ * @returns A function that takes a Transaction object
509
+ */
510
+ borrowedShares = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
511
+ const pool = this.#config.getPool(poolKey);
512
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
513
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
514
+ return tx.moveCall({
515
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::borrowed_shares`,
516
+ arguments: [tx.object(marginManagerId)],
517
+ typeArguments: [baseCoin.type, quoteCoin.type],
518
+ });
519
+ };
520
+
521
+ /**
522
+ * @description Get borrowed base shares
523
+ * @param {string} poolKey The key to identify the pool
524
+ * @param {string} marginManagerId The ID of the margin manager
525
+ * @returns A function that takes a Transaction object
526
+ */
527
+ borrowedBaseShares = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
528
+ const pool = this.#config.getPool(poolKey);
529
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
530
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
531
+ return tx.moveCall({
532
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::borrowed_base_shares`,
533
+ arguments: [tx.object(marginManagerId)],
534
+ typeArguments: [baseCoin.type, quoteCoin.type],
535
+ });
536
+ };
537
+
538
+ /**
539
+ * @description Get borrowed quote shares
540
+ * @param {string} poolKey The key to identify the pool
541
+ * @param {string} marginManagerId The ID of the margin manager
542
+ * @returns A function that takes a Transaction object
543
+ */
544
+ borrowedQuoteShares = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
545
+ const pool = this.#config.getPool(poolKey);
546
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
547
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
548
+ return tx.moveCall({
549
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::borrowed_quote_shares`,
550
+ arguments: [tx.object(marginManagerId)],
551
+ typeArguments: [baseCoin.type, quoteCoin.type],
552
+ });
553
+ };
554
+
555
+ /**
556
+ * @description Check if margin manager has base asset debt
557
+ * @param {string} poolKey The key to identify the pool
558
+ * @param {string} marginManagerId The ID of the margin manager
559
+ * @returns A function that takes a Transaction object
560
+ */
561
+ hasBaseDebt = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
562
+ const pool = this.#config.getPool(poolKey);
563
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
564
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
565
+ return tx.moveCall({
566
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::has_base_debt`,
567
+ arguments: [tx.object(marginManagerId)],
568
+ typeArguments: [baseCoin.type, quoteCoin.type],
569
+ });
570
+ };
571
+
572
+ /**
573
+ * @description Get the balance manager ID for a margin manager
574
+ * @param {string} poolKey The key to identify the pool
575
+ * @param {string} marginManagerId The ID of the margin manager
576
+ * @returns A function that takes a Transaction object
577
+ */
578
+ balanceManager = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
579
+ const pool = this.#config.getPool(poolKey);
580
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
581
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
582
+ return tx.moveCall({
583
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::balance_manager`,
584
+ arguments: [tx.object(marginManagerId)],
585
+ typeArguments: [baseCoin.type, quoteCoin.type],
586
+ });
587
+ };
588
+
589
+ /**
590
+ * @description Calculate assets (base and quote) for a margin manager
591
+ * @param {string} poolKey The key to identify the pool
592
+ * @param {string} marginManagerId The ID of the margin manager
593
+ * @returns A function that takes a Transaction object
594
+ */
595
+ calculateAssets = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
596
+ const pool = this.#config.getPool(poolKey);
597
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
598
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
599
+ return tx.moveCall({
600
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::calculate_assets`,
601
+ arguments: [tx.object(marginManagerId), tx.object(pool.address)],
602
+ typeArguments: [baseCoin.type, quoteCoin.type],
603
+ });
604
+ };
605
+
606
+ /**
607
+ * @description Calculate debts (base and quote) for a margin manager
608
+ * @param {string} poolKey The key to identify the pool
609
+ * @param {string} coinKey The key to identify the debt coin (base or quote)
610
+ * @param {string} marginManagerId The ID of the margin manager
611
+ * @returns A function that takes a Transaction object
612
+ */
613
+ calculateDebts =
614
+ (poolKey: string, coinKey: string, marginManagerId: string) => (tx: Transaction) => {
615
+ const pool = this.#config.getPool(poolKey);
616
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
617
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
618
+ const debtCoin = this.#config.getCoin(coinKey);
619
+ const marginPool = this.#config.getMarginPool(coinKey);
620
+ return tx.moveCall({
621
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::calculate_debts`,
622
+ arguments: [tx.object(marginManagerId), tx.object(marginPool.address), tx.object.clock()],
623
+ typeArguments: [baseCoin.type, quoteCoin.type, debtCoin.type],
624
+ });
625
+ };
626
+
627
+ /**
628
+ * @description Get comprehensive state information for a margin manager
629
+ * @param {string} poolKey The key to identify the pool
630
+ * @param {string} marginManagerId The ID of the margin manager
631
+ * @returns A function that takes a Transaction object
632
+ * @returns Returns (manager_id, deepbook_pool_id, risk_ratio, base_asset, quote_asset,
633
+ * base_debt, quote_debt, base_pyth_price, base_pyth_decimals,
634
+ * quote_pyth_price, quote_pyth_decimals)
635
+ */
636
+ managerState = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
637
+ const pool = this.#config.getPool(poolKey);
638
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
639
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
640
+ const baseMarginPool = this.#config.getMarginPool(pool.baseCoin);
641
+ const quoteMarginPool = this.#config.getMarginPool(pool.quoteCoin);
642
+ return tx.moveCall({
643
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::manager_state`,
644
+ arguments: [
645
+ tx.object(marginManagerId),
646
+ tx.object(this.#config.MARGIN_REGISTRY_ID),
647
+ tx.object(baseCoin.priceInfoObjectId!),
648
+ tx.object(quoteCoin.priceInfoObjectId!),
649
+ tx.object(pool.address),
650
+ tx.object(baseMarginPool.address),
651
+ tx.object(quoteMarginPool.address),
652
+ tx.object.clock(),
653
+ ],
654
+ typeArguments: [baseCoin.type, quoteCoin.type],
655
+ });
656
+ };
657
+
658
+ /**
659
+ * @description Get the base asset balance of a margin manager
660
+ * @param {string} poolKey The key to identify the pool
661
+ * @param {string} marginManagerId The ID of the margin manager
662
+ * @returns A function that takes a Transaction object
663
+ */
664
+ baseBalance = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
665
+ const pool = this.#config.getPool(poolKey);
666
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
667
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
668
+ return tx.moveCall({
669
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::base_balance`,
670
+ arguments: [tx.object(marginManagerId)],
671
+ typeArguments: [baseCoin.type, quoteCoin.type],
672
+ });
673
+ };
674
+
675
+ /**
676
+ * @description Get the quote asset balance of a margin manager
677
+ * @param {string} poolKey The key to identify the pool
678
+ * @param {string} marginManagerId The ID of the margin manager
679
+ * @returns A function that takes a Transaction object
680
+ */
681
+ quoteBalance = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
682
+ const pool = this.#config.getPool(poolKey);
683
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
684
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
685
+ return tx.moveCall({
686
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::quote_balance`,
687
+ arguments: [tx.object(marginManagerId)],
688
+ typeArguments: [baseCoin.type, quoteCoin.type],
689
+ });
690
+ };
691
+
692
+ /**
693
+ * @description Get the DEEP token balance of a margin manager
694
+ * @param {string} poolKey The key to identify the pool
695
+ * @param {string} marginManagerId The ID of the margin manager
696
+ * @returns A function that takes a Transaction object
697
+ */
698
+ deepBalance = (poolKey: string, marginManagerId: string) => (tx: Transaction) => {
699
+ const pool = this.#config.getPool(poolKey);
700
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
701
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
702
+ return tx.moveCall({
703
+ target: `${this.#config.MARGIN_PACKAGE_ID}::margin_manager::deep_balance`,
704
+ arguments: [tx.object(marginManagerId)],
705
+ typeArguments: [baseCoin.type, quoteCoin.type],
706
+ });
707
+ };
708
+ }