@waterx/sdk 2.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 (245) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +204 -0
  3. package/dist/src/client.d.ts +109 -0
  4. package/dist/src/client.js +197 -0
  5. package/dist/src/config.d.ts +229 -0
  6. package/dist/src/config.js +107 -0
  7. package/dist/src/constants.d.ts +64 -0
  8. package/dist/src/constants.js +71 -0
  9. package/dist/src/fetch.d.ts +144 -0
  10. package/dist/src/fetch.js +419 -0
  11. package/dist/src/generated/bucket_v2_framework/account.d.ts +107 -0
  12. package/dist/src/generated/bucket_v2_framework/account.js +129 -0
  13. package/dist/src/generated/bucket_v2_framework/deps/std/type_name.d.ts +17 -0
  14. package/dist/src/generated/bucket_v2_framework/deps/std/type_name.js +19 -0
  15. package/dist/src/generated/bucket_v2_framework/deps/sui/balance.d.ts +12 -0
  16. package/dist/src/generated/bucket_v2_framework/deps/sui/balance.js +14 -0
  17. package/dist/src/generated/bucket_v2_framework/deps/sui/vec_map.d.ts +36 -0
  18. package/dist/src/generated/bucket_v2_framework/deps/sui/vec_map.js +27 -0
  19. package/dist/src/generated/bucket_v2_framework/deps/sui/vec_set.d.ts +16 -0
  20. package/dist/src/generated/bucket_v2_framework/deps/sui/vec_set.js +19 -0
  21. package/dist/src/generated/bucket_v2_framework/double.d.ts +384 -0
  22. package/dist/src/generated/bucket_v2_framework/double.js +466 -0
  23. package/dist/src/generated/bucket_v2_framework/float.d.ts +364 -0
  24. package/dist/src/generated/bucket_v2_framework/float.js +440 -0
  25. package/dist/src/generated/bucket_v2_framework/liability.d.ts +197 -0
  26. package/dist/src/generated/bucket_v2_framework/liability.js +205 -0
  27. package/dist/src/generated/bucket_v2_framework/linked_table.d.ts +384 -0
  28. package/dist/src/generated/bucket_v2_framework/linked_table.js +382 -0
  29. package/dist/src/generated/bucket_v2_framework/sheet.d.ts +424 -0
  30. package/dist/src/generated/bucket_v2_framework/sheet.js +344 -0
  31. package/dist/src/generated/native_custody/custody_vault.d.ts +572 -0
  32. package/dist/src/generated/native_custody/custody_vault.js +483 -0
  33. package/dist/src/generated/native_custody/deps/bucket_v2_framework/float.d.ts +8 -0
  34. package/dist/src/generated/native_custody/deps/bucket_v2_framework/float.js +10 -0
  35. package/dist/src/generated/native_custody/deps/bucket_v2_framework/liability.d.ts +11 -0
  36. package/dist/src/generated/native_custody/deps/bucket_v2_framework/liability.js +13 -0
  37. package/dist/src/generated/native_custody/deps/bucket_v2_framework/sheet.d.ts +49 -0
  38. package/dist/src/generated/native_custody/deps/bucket_v2_framework/sheet.js +18 -0
  39. package/dist/src/generated/native_custody/deps/std/type_name.d.ts +17 -0
  40. package/dist/src/generated/native_custody/deps/std/type_name.js +19 -0
  41. package/dist/src/generated/native_custody/deps/sui/balance.d.ts +12 -0
  42. package/dist/src/generated/native_custody/deps/sui/balance.js +14 -0
  43. package/dist/src/generated/native_custody/deps/sui/vec_map.d.ts +36 -0
  44. package/dist/src/generated/native_custody/deps/sui/vec_map.js +27 -0
  45. package/dist/src/generated/native_custody/deps/sui/vec_set.d.ts +16 -0
  46. package/dist/src/generated/native_custody/deps/sui/vec_set.js +19 -0
  47. package/dist/src/generated/native_custody/events.d.ts +36 -0
  48. package/dist/src/generated/native_custody/events.js +36 -0
  49. package/dist/src/generated/pyth_sponsor_rule/deps/sui/balance.d.ts +12 -0
  50. package/dist/src/generated/pyth_sponsor_rule/deps/sui/balance.js +14 -0
  51. package/dist/src/generated/pyth_sponsor_rule/pyth_sponsor_rule.d.ts +68 -0
  52. package/dist/src/generated/pyth_sponsor_rule/pyth_sponsor_rule.js +74 -0
  53. package/dist/src/generated/utils/index.d.ts +30 -0
  54. package/dist/src/generated/utils/index.js +157 -0
  55. package/dist/src/generated/waterx_account/account.d.ts +1818 -0
  56. package/dist/src/generated/waterx_account/account.js +1723 -0
  57. package/dist/src/generated/waterx_account/deps/bucket_v2_framework/liability.d.ts +11 -0
  58. package/dist/src/generated/waterx_account/deps/bucket_v2_framework/liability.js +13 -0
  59. package/dist/src/generated/waterx_account/deps/bucket_v2_framework/sheet.d.ts +49 -0
  60. package/dist/src/generated/waterx_account/deps/bucket_v2_framework/sheet.js +18 -0
  61. package/dist/src/generated/waterx_account/deps/std/type_name.d.ts +17 -0
  62. package/dist/src/generated/waterx_account/deps/std/type_name.js +19 -0
  63. package/dist/src/generated/waterx_account/deps/sui/balance.d.ts +12 -0
  64. package/dist/src/generated/waterx_account/deps/sui/balance.js +14 -0
  65. package/dist/src/generated/waterx_account/deps/sui/object_table.d.ts +17 -0
  66. package/dist/src/generated/waterx_account/deps/sui/object_table.js +19 -0
  67. package/dist/src/generated/waterx_account/deps/sui/table.d.ts +29 -0
  68. package/dist/src/generated/waterx_account/deps/sui/table.js +31 -0
  69. package/dist/src/generated/waterx_account/deps/sui/vec_map.d.ts +36 -0
  70. package/dist/src/generated/waterx_account/deps/sui/vec_map.js +27 -0
  71. package/dist/src/generated/waterx_account/deps/sui/vec_set.d.ts +16 -0
  72. package/dist/src/generated/waterx_account/deps/sui/vec_set.js +19 -0
  73. package/dist/src/generated/waterx_account/direct_rule.d.ts +77 -0
  74. package/dist/src/generated/waterx_account/direct_rule.js +78 -0
  75. package/dist/src/generated/waterx_account/events.d.ts +180 -0
  76. package/dist/src/generated/waterx_account/events.js +156 -0
  77. package/dist/src/generated/waterx_account/version.d.ts +10 -0
  78. package/dist/src/generated/waterx_account/version.js +8 -0
  79. package/dist/src/generated/waterx_credit/credit_registry.d.ts +708 -0
  80. package/dist/src/generated/waterx_credit/credit_registry.js +658 -0
  81. package/dist/src/generated/waterx_credit/deps/std/type_name.d.ts +17 -0
  82. package/dist/src/generated/waterx_credit/deps/std/type_name.js +19 -0
  83. package/dist/src/generated/waterx_credit/deps/sui/table.d.ts +29 -0
  84. package/dist/src/generated/waterx_credit/deps/sui/table.js +31 -0
  85. package/dist/src/generated/waterx_credit/deps/sui/vec_map.d.ts +36 -0
  86. package/dist/src/generated/waterx_credit/deps/sui/vec_map.js +27 -0
  87. package/dist/src/generated/waterx_credit/deps/sui/vec_set.d.ts +16 -0
  88. package/dist/src/generated/waterx_credit/deps/sui/vec_set.js +19 -0
  89. package/dist/src/generated/waterx_credit/limited_supply.d.ts +107 -0
  90. package/dist/src/generated/waterx_credit/limited_supply.js +131 -0
  91. package/dist/src/generated/waterx_oracle/aggregator.d.ts +211 -0
  92. package/dist/src/generated/waterx_oracle/aggregator.js +213 -0
  93. package/dist/src/generated/waterx_oracle/collector.d.ts +119 -0
  94. package/dist/src/generated/waterx_oracle/collector.js +105 -0
  95. package/dist/src/generated/waterx_oracle/deps/bucket_v2_framework/float.d.ts +8 -0
  96. package/dist/src/generated/waterx_oracle/deps/bucket_v2_framework/float.js +10 -0
  97. package/dist/src/generated/waterx_oracle/deps/std/type_name.d.ts +17 -0
  98. package/dist/src/generated/waterx_oracle/deps/std/type_name.js +19 -0
  99. package/dist/src/generated/waterx_oracle/deps/sui/vec_map.d.ts +36 -0
  100. package/dist/src/generated/waterx_oracle/deps/sui/vec_map.js +27 -0
  101. package/dist/src/generated/waterx_oracle/deps/sui/vec_set.d.ts +16 -0
  102. package/dist/src/generated/waterx_oracle/deps/sui/vec_set.js +19 -0
  103. package/dist/src/generated/waterx_oracle/oracle.d.ts +298 -0
  104. package/dist/src/generated/waterx_oracle/oracle.js +323 -0
  105. package/dist/src/generated/waterx_oracle/version.d.ts +10 -0
  106. package/dist/src/generated/waterx_oracle/version.js +8 -0
  107. package/dist/src/generated/waterx_perp/account_data.d.ts +269 -0
  108. package/dist/src/generated/waterx_perp/account_data.js +284 -0
  109. package/dist/src/generated/waterx_perp/admin.d.ts +19 -0
  110. package/dist/src/generated/waterx_perp/admin.js +22 -0
  111. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/double.d.ts +8 -0
  112. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/double.js +10 -0
  113. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/float.d.ts +8 -0
  114. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/float.js +10 -0
  115. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/liability.d.ts +11 -0
  116. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/liability.js +13 -0
  117. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/linked_table.d.ts +8 -0
  118. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/linked_table.js +18 -0
  119. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/sheet.d.ts +49 -0
  120. package/dist/src/generated/waterx_perp/deps/bucket_v2_framework/sheet.js +18 -0
  121. package/dist/src/generated/waterx_perp/deps/std/type_name.d.ts +17 -0
  122. package/dist/src/generated/waterx_perp/deps/std/type_name.js +19 -0
  123. package/dist/src/generated/waterx_perp/deps/sui/balance.d.ts +15 -0
  124. package/dist/src/generated/waterx_perp/deps/sui/balance.js +17 -0
  125. package/dist/src/generated/waterx_perp/deps/sui/coin.d.ts +14 -0
  126. package/dist/src/generated/waterx_perp/deps/sui/coin.js +15 -0
  127. package/dist/src/generated/waterx_perp/deps/sui/vec_map.d.ts +36 -0
  128. package/dist/src/generated/waterx_perp/deps/sui/vec_map.js +27 -0
  129. package/dist/src/generated/waterx_perp/deps/sui/vec_set.d.ts +16 -0
  130. package/dist/src/generated/waterx_perp/deps/sui/vec_set.js +19 -0
  131. package/dist/src/generated/waterx_perp/events.d.ts +1283 -0
  132. package/dist/src/generated/waterx_perp/events.js +1018 -0
  133. package/dist/src/generated/waterx_perp/global_config.d.ts +775 -0
  134. package/dist/src/generated/waterx_perp/global_config.js +836 -0
  135. package/dist/src/generated/waterx_perp/keyed_big_vector.d.ts +553 -0
  136. package/dist/src/generated/waterx_perp/keyed_big_vector.js +554 -0
  137. package/dist/src/generated/waterx_perp/lp_pool.d.ts +1648 -0
  138. package/dist/src/generated/waterx_perp/lp_pool.js +1521 -0
  139. package/dist/src/generated/waterx_perp/market_config.d.ts +715 -0
  140. package/dist/src/generated/waterx_perp/market_config.js +780 -0
  141. package/dist/src/generated/waterx_perp/math.d.ts +63 -0
  142. package/dist/src/generated/waterx_perp/math.js +64 -0
  143. package/dist/src/generated/waterx_perp/memo.d.ts +251 -0
  144. package/dist/src/generated/waterx_perp/memo.js +323 -0
  145. package/dist/src/generated/waterx_perp/order_book.d.ts +290 -0
  146. package/dist/src/generated/waterx_perp/order_book.js +329 -0
  147. package/dist/src/generated/waterx_perp/position.d.ts +1005 -0
  148. package/dist/src/generated/waterx_perp/position.js +1103 -0
  149. package/dist/src/generated/waterx_perp/request.d.ts +544 -0
  150. package/dist/src/generated/waterx_perp/request.js +541 -0
  151. package/dist/src/generated/waterx_perp/response.d.ts +247 -0
  152. package/dist/src/generated/waterx_perp/response.js +280 -0
  153. package/dist/src/generated/waterx_perp/trading.d.ts +2821 -0
  154. package/dist/src/generated/waterx_perp/trading.js +2372 -0
  155. package/dist/src/generated/waterx_perp/version.d.ts +10 -0
  156. package/dist/src/generated/waterx_perp/version.js +8 -0
  157. package/dist/src/generated/waterx_perp/witness.d.ts +18 -0
  158. package/dist/src/generated/waterx_perp/witness.js +21 -0
  159. package/dist/src/generated/waterx_perp_view/deps/std/type_name.d.ts +17 -0
  160. package/dist/src/generated/waterx_perp_view/deps/std/type_name.js +19 -0
  161. package/dist/src/generated/waterx_perp_view/view.d.ts +447 -0
  162. package/dist/src/generated/waterx_perp_view/view.js +414 -0
  163. package/dist/src/generated/waterx_pyth_rule/deps/sui/vec_map.d.ts +36 -0
  164. package/dist/src/generated/waterx_pyth_rule/deps/sui/vec_map.js +27 -0
  165. package/dist/src/generated/waterx_pyth_rule/pyth_rule.d.ts +90 -0
  166. package/dist/src/generated/waterx_pyth_rule/pyth_rule.js +72 -0
  167. package/dist/src/generated/waterx_referral/deps/sui/table.d.ts +29 -0
  168. package/dist/src/generated/waterx_referral/deps/sui/table.js +31 -0
  169. package/dist/src/generated/waterx_referral/deps/sui/vec_set.d.ts +16 -0
  170. package/dist/src/generated/waterx_referral/deps/sui/vec_set.js +19 -0
  171. package/dist/src/generated/waterx_referral/referral_table.d.ts +171 -0
  172. package/dist/src/generated/waterx_referral/referral_table.js +192 -0
  173. package/dist/src/generated/waterx_staking/deps/bucket_v2_framework/double.d.ts +8 -0
  174. package/dist/src/generated/waterx_staking/deps/bucket_v2_framework/double.js +10 -0
  175. package/dist/src/generated/waterx_staking/deps/sui/balance.d.ts +12 -0
  176. package/dist/src/generated/waterx_staking/deps/sui/balance.js +14 -0
  177. package/dist/src/generated/waterx_staking/deps/sui/table.d.ts +29 -0
  178. package/dist/src/generated/waterx_staking/deps/sui/table.js +31 -0
  179. package/dist/src/generated/waterx_staking/deps/sui/vec_set.d.ts +16 -0
  180. package/dist/src/generated/waterx_staking/deps/sui/vec_set.js +19 -0
  181. package/dist/src/generated/waterx_staking/waterx_staking.d.ts +746 -0
  182. package/dist/src/generated/waterx_staking/waterx_staking.js +731 -0
  183. package/dist/src/generated/waterx_staking/witness.d.ts +16 -0
  184. package/dist/src/generated/waterx_staking/witness.js +18 -0
  185. package/dist/src/generated/withdrawal_queue/deps/bucket_v2_framework/linked_table.d.ts +8 -0
  186. package/dist/src/generated/withdrawal_queue/deps/bucket_v2_framework/linked_table.js +18 -0
  187. package/dist/src/generated/withdrawal_queue/deps/std/type_name.d.ts +17 -0
  188. package/dist/src/generated/withdrawal_queue/deps/std/type_name.js +19 -0
  189. package/dist/src/generated/withdrawal_queue/deps/sui/balance.d.ts +12 -0
  190. package/dist/src/generated/withdrawal_queue/deps/sui/balance.js +14 -0
  191. package/dist/src/generated/withdrawal_queue/deps/sui/vec_set.d.ts +16 -0
  192. package/dist/src/generated/withdrawal_queue/deps/sui/vec_set.js +19 -0
  193. package/dist/src/generated/withdrawal_queue/withdrawal_queue.d.ts +483 -0
  194. package/dist/src/generated/withdrawal_queue/withdrawal_queue.js +480 -0
  195. package/dist/src/generated/wlp/wlp.d.ts +28 -0
  196. package/dist/src/generated/wlp/wlp.js +32 -0
  197. package/dist/src/generated/wormhole_bridge/deps/sui/table.d.ts +29 -0
  198. package/dist/src/generated/wormhole_bridge/deps/sui/table.js +31 -0
  199. package/dist/src/generated/wormhole_bridge/deps/sui/vec_map.d.ts +36 -0
  200. package/dist/src/generated/wormhole_bridge/deps/sui/vec_map.js +27 -0
  201. package/dist/src/generated/wormhole_bridge/deps/sui/vec_set.d.ts +16 -0
  202. package/dist/src/generated/wormhole_bridge/deps/sui/vec_set.js +19 -0
  203. package/dist/src/generated/wormhole_bridge/deps/wormhole_sdk/consumed_vaas.d.ts +12 -0
  204. package/dist/src/generated/wormhole_bridge/deps/wormhole_sdk/consumed_vaas.js +9 -0
  205. package/dist/src/generated/wormhole_bridge/deps/wormhole_sdk/emitter.d.ts +14 -0
  206. package/dist/src/generated/wormhole_bridge/deps/wormhole_sdk/emitter.js +16 -0
  207. package/dist/src/generated/wormhole_bridge/deps/wormhole_sdk/set.d.ts +16 -0
  208. package/dist/src/generated/wormhole_bridge/deps/wormhole_sdk/set.js +15 -0
  209. package/dist/src/generated/wormhole_bridge/events.d.ts +32 -0
  210. package/dist/src/generated/wormhole_bridge/events.js +28 -0
  211. package/dist/src/generated/wormhole_bridge/wormhole_bridge.d.ts +498 -0
  212. package/dist/src/generated/wormhole_bridge/wormhole_bridge.js +494 -0
  213. package/dist/src/index.d.ts +28 -0
  214. package/dist/src/index.js +34 -0
  215. package/dist/src/tx-builders.d.ts +242 -0
  216. package/dist/src/tx-builders.js +320 -0
  217. package/dist/src/user/account.d.ts +129 -0
  218. package/dist/src/user/account.js +166 -0
  219. package/dist/src/user/credit.d.ts +135 -0
  220. package/dist/src/user/credit.js +255 -0
  221. package/dist/src/user/custody.d.ts +71 -0
  222. package/dist/src/user/custody.js +112 -0
  223. package/dist/src/user/index.d.ts +8 -0
  224. package/dist/src/user/index.js +8 -0
  225. package/dist/src/user/order.d.ts +89 -0
  226. package/dist/src/user/order.js +134 -0
  227. package/dist/src/user/referral.d.ts +21 -0
  228. package/dist/src/user/referral.js +41 -0
  229. package/dist/src/user/staking.d.ts +54 -0
  230. package/dist/src/user/staking.js +109 -0
  231. package/dist/src/user/trading.d.ts +119 -0
  232. package/dist/src/user/trading.js +262 -0
  233. package/dist/src/user/wlp.d.ts +58 -0
  234. package/dist/src/user/wlp.js +99 -0
  235. package/dist/src/utils/account-request.d.ts +9 -0
  236. package/dist/src/utils/account-request.js +17 -0
  237. package/dist/src/utils/config.d.ts +11 -0
  238. package/dist/src/utils/config.js +15 -0
  239. package/dist/src/utils/math.d.ts +201 -0
  240. package/dist/src/utils/math.js +343 -0
  241. package/dist/src/utils/pyth.d.ts +89 -0
  242. package/dist/src/utils/pyth.js +316 -0
  243. package/dist/src/utils/wormhole.d.ts +86 -0
  244. package/dist/src/utils/wormhole.js +154 -0
  245. package/package.json +66 -0
@@ -0,0 +1,1521 @@
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+ /**
5
+ * WLP (WaterX Liquidity Pool) — counterparty to all traders. Manages liquidity
6
+ * pools, token pools, minting/burning WLP, and borrowing. Mint is instant; redeem
7
+ * is T+1.
8
+ */
9
+ import { MoveStruct, normalizeMoveArguments } from "../utils/index.js";
10
+ import { bcs } from '@mysten/sui/bcs';
11
+ import * as type_name from "./deps/std/type_name.js";
12
+ import * as float from "./deps/bucket_v2_framework/float.js";
13
+ import * as float_1 from "./deps/bucket_v2_framework/float.js";
14
+ import * as float_2 from "./deps/bucket_v2_framework/float.js";
15
+ import * as float_3 from "./deps/bucket_v2_framework/float.js";
16
+ import * as float_4 from "./deps/bucket_v2_framework/float.js";
17
+ import * as vec_set from "./deps/sui/vec_set.js";
18
+ import * as coin from "./deps/sui/coin.js";
19
+ import * as type_name_1 from "./deps/std/type_name.js";
20
+ import * as float_5 from "./deps/bucket_v2_framework/float.js";
21
+ import * as keyed_big_vector from "./keyed_big_vector.js";
22
+ import * as balance from "./deps/sui/balance.js";
23
+ import * as type_name_2 from "./deps/std/type_name.js";
24
+ import * as keyed_big_vector_1 from "./keyed_big_vector.js";
25
+ import * as float_6 from "./deps/bucket_v2_framework/float.js";
26
+ import * as float_7 from "./deps/bucket_v2_framework/float.js";
27
+ import * as float_8 from "./deps/bucket_v2_framework/float.js";
28
+ const $moduleName = '@waterx/perp::lp_pool';
29
+ export const TokenPoolInfo = new MoveStruct({ name: `${$moduleName}::TokenPoolInfo`, fields: {
30
+ /** Token type. */
31
+ token_type: type_name.TypeName,
32
+ /**
33
+ * Oracle ticker bound to this token type. Set at `add_token` time and immutable
34
+ * thereafter. Every per-token price lookup (`mint_wlp`, `settle_redeem`,
35
+ * `update_token_value`, perp collateral pricing) goes through this field — callers
36
+ * do _not_ supply a ticker string, eliminating the "lie about the asset I'm
37
+ * pricing" attack class.
38
+ */
39
+ ticker: bcs.string(),
40
+ /** Token decimal. */
41
+ token_decimal: bcs.u8(),
42
+ /** Target weight in bps (e.g., 5000 = 50%). */
43
+ target_weight_bps: bcs.u64(),
44
+ /** Mint fee in bps. */
45
+ mint_fee_bps: bcs.u64(),
46
+ /** Burn fee in bps. */
47
+ burn_fee_bps: bcs.u64(),
48
+ /** Max capacity. */
49
+ max_capacity: bcs.u64(),
50
+ /** Min deposit. */
51
+ min_deposit: bcs.u64(),
52
+ /** Per-interval borrow rate at utilization 0 (Float, 1e9 scale). */
53
+ basic_borrow_rate_0: float.Float,
54
+ /** Per-interval borrow rate at utilization threshold_0 (Float). */
55
+ basic_borrow_rate_1: float_1.Float,
56
+ /** Per-interval borrow rate at utilization threshold_1 (Float). */
57
+ basic_borrow_rate_2: float_2.Float,
58
+ utilization_threshold_0_bps: bcs.u64(),
59
+ utilization_threshold_1_bps: bcs.u64(),
60
+ borrow_interval_ms: bcs.u64(),
61
+ max_reserve_ratio_bps: bcs.u64(),
62
+ /** Liquidity amount in token units. */
63
+ liquidity_amount: bcs.u64(),
64
+ /** Value in USD. */
65
+ value_usd: float_3.Float,
66
+ /** Reserved amount for open positions. */
67
+ reserved_amount: bcs.u64(),
68
+ /** Last borrow rate update timestamp. */
69
+ last_borrow_timestamp: bcs.u64(),
70
+ /** Cumulative borrow rate as Float (1e9 scale). */
71
+ cumulative_borrow_rate: float_4.Float,
72
+ /** Last timestamp when this token price was refreshed via oracle. */
73
+ last_price_refresh_timestamp: bcs.u64()
74
+ } });
75
+ export const WlpPool = new MoveStruct({ name: `${$moduleName}::WlpPool<phantom LP_TOKEN>`, fields: {
76
+ id: bcs.Address,
77
+ /** Whether this pool is active. */
78
+ is_active: bcs.bool(),
79
+ /** Allowed protocol versions (admin-managed). */
80
+ allowed_versions: vec_set.VecSet(bcs.u16()),
81
+ /** LP token treasury cap. */
82
+ lp_treasury_cap: coin.TreasuryCap,
83
+ /** LP token decimal. */
84
+ lp_decimal: bcs.u8(),
85
+ /** Supported token types. */
86
+ token_types: bcs.vector(type_name_1.TypeName),
87
+ /** Token pool configs and states. */
88
+ token_pools: bcs.vector(TokenPoolInfo),
89
+ /** Total value locked in USD (Float). */
90
+ tvl_usd: float_5.Float,
91
+ /** Redeem requests. */
92
+ redeem_requests: keyed_big_vector.KeyedBigVector,
93
+ /** Next redeem request ID. */
94
+ next_redeem_id: bcs.u64()
95
+ } });
96
+ export const RedeemRequest = new MoveStruct({ name: `${$moduleName}::RedeemRequest<phantom LP_TOKEN>`, fields: {
97
+ /** Wxa account ID to repay into at settlement. */
98
+ recipient_account_id: bcs.Address,
99
+ /** LP balance held pending settlement. */
100
+ lp_balance: balance.Balance,
101
+ /** Requested token type to receive. */
102
+ token_type: type_name_2.TypeName,
103
+ /** Request timestamp. */
104
+ request_timestamp: bcs.u64()
105
+ } });
106
+ export const WlpAum = new MoveStruct({ name: `${$moduleName}::WlpAum<phantom LP_TOKEN>`, fields: {
107
+ id: bcs.Address,
108
+ /** WLP pool this AUM object prices. */
109
+ pool_id: bcs.Address,
110
+ /** Registered market PnL contributions keyed by market ID. */
111
+ market_contributions: keyed_big_vector_1.KeyedBigVector,
112
+ /** Sum of registered markets where traders are in profit. */
113
+ total_trader_profit_usd: float_6.Float,
114
+ /** Sum of registered markets where traders are in loss. */
115
+ total_trader_loss_usd: float_7.Float
116
+ } });
117
+ export const AumMarketContribution = new MoveStruct({ name: `${$moduleName}::AumMarketContribution`, fields: {
118
+ /** Whether the market's aggregate unrealized PnL is trader profit. */
119
+ is_trader_profit: bcs.bool(),
120
+ /** Absolute aggregate unrealized PnL in USD. */
121
+ pnl_usd: float_8.Float,
122
+ /** Timestamp of the oracle price used to refresh this contribution. */
123
+ last_refresh_timestamp: bcs.u64()
124
+ } });
125
+ /**
126
+ * Pre-take permission check for WLP actions. Uses `WaterXPerp` as the permission
127
+ * scope (shared witness across the perp's wxa surface). `PERM_MINT_WLP` and
128
+ * `PERM_REDEEM_WLP` are the relevant bits. Must run before any `wxa_account::take`
129
+ * so a failed auth doesn't drain.
130
+ */
131
+ export function assertWxaProtocolPerm(options) {
132
+ const packageAddress = options.package ?? '@waterx/perp';
133
+ const argumentsTypes = [
134
+ null,
135
+ '0x2::object::ID',
136
+ 'address',
137
+ 'u32',
138
+ '0x2::clock::Clock'
139
+ ];
140
+ const parameterNames = ["wxaRegistry", "accountId", "sender", "permission"];
141
+ return (tx) => tx.moveCall({
142
+ package: packageAddress,
143
+ module: 'lp_pool',
144
+ function: 'assert_wxa_protocol_perm',
145
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
146
+ });
147
+ }
148
+ /** Creates a new WLP pool (AdminCap-gated). */
149
+ export function createPool(options) {
150
+ const packageAddress = options.package ?? '@waterx/perp';
151
+ const argumentsTypes = [
152
+ null,
153
+ null,
154
+ 'u8'
155
+ ];
156
+ const parameterNames = ["Cap", "lpTreasuryCap", "lpDecimal"];
157
+ return (tx) => tx.moveCall({
158
+ package: packageAddress,
159
+ module: 'lp_pool',
160
+ function: 'create_pool',
161
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
162
+ typeArguments: options.typeArguments
163
+ });
164
+ }
165
+ /** Creates a pool-level AUM object used for multi-market WLP share pricing. */
166
+ export function createAum(options) {
167
+ const packageAddress = options.package ?? '@waterx/perp';
168
+ const argumentsTypes = [
169
+ null,
170
+ null
171
+ ];
172
+ const parameterNames = ["Cap", "pool"];
173
+ return (tx) => tx.moveCall({
174
+ package: packageAddress,
175
+ module: 'lp_pool',
176
+ function: 'create_aum',
177
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
178
+ typeArguments: options.typeArguments
179
+ });
180
+ }
181
+ export function assertVersion(options) {
182
+ const packageAddress = options.package ?? '@waterx/perp';
183
+ const argumentsTypes = [
184
+ null
185
+ ];
186
+ const parameterNames = ["wlpPool"];
187
+ return (tx) => tx.moveCall({
188
+ package: packageAddress,
189
+ module: 'lp_pool',
190
+ function: 'assert_version',
191
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
192
+ typeArguments: options.typeArguments
193
+ });
194
+ }
195
+ export function allowVersion(options) {
196
+ const packageAddress = options.package ?? '@waterx/perp';
197
+ const argumentsTypes = [
198
+ null,
199
+ null,
200
+ 'u16'
201
+ ];
202
+ const parameterNames = ["wlpPool", "_", "v"];
203
+ return (tx) => tx.moveCall({
204
+ package: packageAddress,
205
+ module: 'lp_pool',
206
+ function: 'allow_version',
207
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
208
+ typeArguments: options.typeArguments
209
+ });
210
+ }
211
+ export function disallowVersion(options) {
212
+ const packageAddress = options.package ?? '@waterx/perp';
213
+ const argumentsTypes = [
214
+ null,
215
+ null,
216
+ 'u16'
217
+ ];
218
+ const parameterNames = ["wlpPool", "_", "v"];
219
+ return (tx) => tx.moveCall({
220
+ package: packageAddress,
221
+ module: 'lp_pool',
222
+ function: 'disallow_version',
223
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
224
+ typeArguments: options.typeArguments
225
+ });
226
+ }
227
+ /**
228
+ * Adds a supported token to the pool. `basic_borrow_rate_0/1/2` are scaled Float
229
+ * values (1e9 scale).
230
+ */
231
+ export function addToken(options) {
232
+ const packageAddress = options.package ?? '@waterx/perp';
233
+ const argumentsTypes = [
234
+ null,
235
+ null,
236
+ '0x1::string::String',
237
+ 'u8',
238
+ 'u64',
239
+ 'u64',
240
+ 'u64',
241
+ 'u64',
242
+ 'u64',
243
+ 'u128',
244
+ 'u128',
245
+ 'u128',
246
+ 'u64',
247
+ 'u64',
248
+ 'u64',
249
+ 'u64',
250
+ '0x2::clock::Clock'
251
+ ];
252
+ const parameterNames = ["pool", "Cap", "ticker", "tokenDecimal", "targetWeightBps", "mintFeeBps", "burnFeeBps", "maxCapacity", "minDeposit", "basicBorrowRate_0", "basicBorrowRate_1", "basicBorrowRate_2", "utilizationThreshold_0Bps", "utilizationThreshold_1Bps", "borrowIntervalMs", "maxReserveRatioBps"];
253
+ return (tx) => tx.moveCall({
254
+ package: packageAddress,
255
+ module: 'lp_pool',
256
+ function: 'add_token',
257
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
258
+ typeArguments: options.typeArguments
259
+ });
260
+ }
261
+ /**
262
+ * Updates configuration for an existing token pool (AdminCap-gated). Does not
263
+ * modify state fields (liquidity, value, reserved, borrow state).
264
+ */
265
+ export function updateTokenPoolConfig(options) {
266
+ const packageAddress = options.package ?? '@waterx/perp';
267
+ const argumentsTypes = [
268
+ null,
269
+ null,
270
+ 'u64',
271
+ 'u64',
272
+ 'u64',
273
+ 'u64',
274
+ 'u64',
275
+ 'u128',
276
+ 'u128',
277
+ 'u128',
278
+ 'u64',
279
+ 'u64',
280
+ 'u64',
281
+ 'u64'
282
+ ];
283
+ const parameterNames = ["pool", "Cap", "targetWeightBps", "mintFeeBps", "burnFeeBps", "maxCapacity", "minDeposit", "basicBorrowRate_0", "basicBorrowRate_1", "basicBorrowRate_2", "utilizationThreshold_0Bps", "utilizationThreshold_1Bps", "borrowIntervalMs", "maxReserveRatioBps"];
284
+ return (tx) => tx.moveCall({
285
+ package: packageAddress,
286
+ module: 'lp_pool',
287
+ function: 'update_token_pool_config',
288
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
289
+ typeArguments: options.typeArguments
290
+ });
291
+ }
292
+ /**
293
+ * Mints WLP by taking `deposit_amount` of `TOKEN` from the caller's wxa stored
294
+ * balance, pricing against AUM-adjusted TVL, and putting the minted WLP back into
295
+ * the same wxa account. Returns the minted `lp_amount` (also emitted on
296
+ * `WlpMinted`).
297
+ */
298
+ export function mintWlp(options) {
299
+ const packageAddress = options.package ?? '@waterx/perp';
300
+ const argumentsTypes = [
301
+ null,
302
+ null,
303
+ null,
304
+ null,
305
+ null,
306
+ '0x2::object::ID',
307
+ 'u64',
308
+ 'u64',
309
+ null,
310
+ '0x2::clock::Clock'
311
+ ];
312
+ const parameterNames = ["pool", "globalConfig", "wxaRegistry", "aum", "senderRequest", "accountId", "depositAmount", "minLpAmount", "oracle"];
313
+ return (tx) => tx.moveCall({
314
+ package: packageAddress,
315
+ module: 'lp_pool',
316
+ function: 'mint_wlp',
317
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
318
+ typeArguments: options.typeArguments
319
+ });
320
+ }
321
+ /**
322
+ * Enqueues a WLP redeem (T+1 settlement) by taking `lp_amount` of `LP_TOKEN` from
323
+ * the caller's wxa stored balance into a pending `RedeemRequest`. Returns the
324
+ * `request_id`. Settlement (via `settle_redeem`) and cancellation (via
325
+ * `cancel_redeem`) repay the proceeds / WLP back into the same wxa account.
326
+ */
327
+ export function requestRedeem(options) {
328
+ const packageAddress = options.package ?? '@waterx/perp';
329
+ const argumentsTypes = [
330
+ null,
331
+ null,
332
+ null,
333
+ null,
334
+ '0x2::object::ID',
335
+ 'u64',
336
+ '0x2::clock::Clock'
337
+ ];
338
+ const parameterNames = ["pool", "globalConfig", "wxaRegistry", "senderRequest", "accountId", "lpAmount"];
339
+ return (tx) => tx.moveCall({
340
+ package: packageAddress,
341
+ module: 'lp_pool',
342
+ function: 'request_redeem',
343
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
344
+ typeArguments: options.typeArguments
345
+ });
346
+ }
347
+ export function mintWlpWithPricingTvl(options) {
348
+ const packageAddress = options.package ?? '@waterx/perp';
349
+ const argumentsTypes = [
350
+ null,
351
+ null,
352
+ null,
353
+ null,
354
+ '0x1::string::String',
355
+ null,
356
+ 'u64',
357
+ 'address',
358
+ '0x2::clock::Clock'
359
+ ];
360
+ const parameterNames = ["pool", "globalConfig", "deposit", "oracle", "ticker", "pricingTvlUsd", "minLpAmount", "accountId"];
361
+ return (tx) => tx.moveCall({
362
+ package: packageAddress,
363
+ module: 'lp_pool',
364
+ function: 'mint_wlp_with_pricing_tvl',
365
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
366
+ typeArguments: options.typeArguments
367
+ });
368
+ }
369
+ export function doRequestRedeem(options) {
370
+ const packageAddress = options.package ?? '@waterx/perp';
371
+ const argumentsTypes = [
372
+ null,
373
+ null,
374
+ '0x2::object::ID',
375
+ null,
376
+ 'u64',
377
+ '0x2::clock::Clock'
378
+ ];
379
+ const parameterNames = ["pool", "globalConfig", "recipientAccountId", "lpBalance", "expectedLpAmount"];
380
+ return (tx) => tx.moveCall({
381
+ package: packageAddress,
382
+ module: 'lp_pool',
383
+ function: 'do_request_redeem',
384
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
385
+ typeArguments: options.typeArguments
386
+ });
387
+ }
388
+ /**
389
+ * Cancels a pending WLP redeem request. Caller must hold `PERM_REDEEM_WLP` on the
390
+ * recipient wxa account (checked under the shared `WaterXPerp` permission scope).
391
+ * The escrowed WLP is put back into the recipient account.
392
+ */
393
+ export function cancelRedeem(options) {
394
+ const packageAddress = options.package ?? '@waterx/perp';
395
+ const argumentsTypes = [
396
+ null,
397
+ null,
398
+ null,
399
+ null,
400
+ 'u64',
401
+ '0x2::clock::Clock'
402
+ ];
403
+ const parameterNames = ["pool", "globalConfig", "wxaRegistry", "senderRequest", "requestId"];
404
+ return (tx) => tx.moveCall({
405
+ package: packageAddress,
406
+ module: 'lp_pool',
407
+ function: 'cancel_redeem',
408
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
409
+ typeArguments: options.typeArguments
410
+ });
411
+ }
412
+ /**
413
+ * Rejects a pending WLP redeem request as admin and repays the LP back to the
414
+ * original recipient's wxa account.
415
+ */
416
+ export function rejectRedeemByAdmin(options) {
417
+ const packageAddress = options.package ?? '@waterx/perp';
418
+ const argumentsTypes = [
419
+ null,
420
+ null,
421
+ null,
422
+ 'u64'
423
+ ];
424
+ const parameterNames = ["pool", "wxaRegistry", "Cap", "requestId"];
425
+ return (tx) => tx.moveCall({
426
+ package: packageAddress,
427
+ module: 'lp_pool',
428
+ function: 'reject_redeem_by_admin',
429
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
430
+ typeArguments: options.typeArguments
431
+ });
432
+ }
433
+ /**
434
+ * Rejects a pending WLP redeem request as redeem operator and repays the LP back
435
+ * to the original recipient's wxa account.
436
+ */
437
+ export function rejectRedeemByRedeemOperator(options) {
438
+ const packageAddress = options.package ?? '@waterx/perp';
439
+ const argumentsTypes = [
440
+ null,
441
+ null,
442
+ null,
443
+ null,
444
+ 'u64'
445
+ ];
446
+ const parameterNames = ["pool", "globalConfig", "wxaRegistry", "operatorRequest", "requestId"];
447
+ return (tx) => tx.moveCall({
448
+ package: packageAddress,
449
+ module: 'lp_pool',
450
+ function: 'reject_redeem_by_redeem_operator',
451
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
452
+ typeArguments: options.typeArguments
453
+ });
454
+ }
455
+ /**
456
+ * Settles a WLP redeem request using pool-level AUM pricing. The payout is repaid
457
+ * back into the recipient's wxa account as `Balance<TOKEN>` via
458
+ * `wxa_account::put<TOKEN, WaterXPerp>`.
459
+ */
460
+ export function settleRedeem(options) {
461
+ const packageAddress = options.package ?? '@waterx/perp';
462
+ const argumentsTypes = [
463
+ null,
464
+ null,
465
+ null,
466
+ null,
467
+ null,
468
+ 'u64',
469
+ null,
470
+ '0x2::clock::Clock'
471
+ ];
472
+ const parameterNames = ["pool", "globalConfig", "wxaRegistry", "operatorRequest", "aum", "requestId", "oracle"];
473
+ return (tx) => tx.moveCall({
474
+ package: packageAddress,
475
+ module: 'lp_pool',
476
+ function: 'settle_redeem',
477
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
478
+ typeArguments: options.typeArguments
479
+ });
480
+ }
481
+ export function settleRedeemWithPricingTvl(options) {
482
+ const packageAddress = options.package ?? '@waterx/perp';
483
+ const argumentsTypes = [
484
+ null,
485
+ null,
486
+ 'u64',
487
+ null,
488
+ '0x1::string::String',
489
+ null,
490
+ '0x2::clock::Clock'
491
+ ];
492
+ const parameterNames = ["pool", "globalConfig", "requestId", "oracle", "ticker", "pricingTvlUsd"];
493
+ return (tx) => tx.moveCall({
494
+ package: packageAddress,
495
+ module: 'lp_pool',
496
+ function: 'settle_redeem_with_pricing_tvl',
497
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
498
+ typeArguments: options.typeArguments
499
+ });
500
+ }
501
+ /** Updates borrow rates for all token pools. */
502
+ export function updateBorrowRates(options) {
503
+ const packageAddress = options.package ?? '@waterx/perp';
504
+ const argumentsTypes = [
505
+ null,
506
+ '0x2::clock::Clock'
507
+ ];
508
+ const parameterNames = ["pool"];
509
+ return (tx) => tx.moveCall({
510
+ package: packageAddress,
511
+ module: 'lp_pool',
512
+ function: 'update_borrow_rates',
513
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
514
+ typeArguments: options.typeArguments
515
+ });
516
+ }
517
+ export function updateTokenValue(options) {
518
+ const packageAddress = options.package ?? '@waterx/perp';
519
+ const argumentsTypes = [
520
+ null,
521
+ null,
522
+ '0x2::clock::Clock'
523
+ ];
524
+ const parameterNames = ["pool", "oracle"];
525
+ return (tx) => tx.moveCall({
526
+ package: packageAddress,
527
+ module: 'lp_pool',
528
+ function: 'update_token_value',
529
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
530
+ typeArguments: options.typeArguments
531
+ });
532
+ }
533
+ export function aumPoolId(options) {
534
+ const packageAddress = options.package ?? '@waterx/perp';
535
+ const argumentsTypes = [
536
+ null
537
+ ];
538
+ const parameterNames = ["aum"];
539
+ return (tx) => tx.moveCall({
540
+ package: packageAddress,
541
+ module: 'lp_pool',
542
+ function: 'aum_pool_id',
543
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
544
+ typeArguments: options.typeArguments
545
+ });
546
+ }
547
+ export function aumMarketCount(options) {
548
+ const packageAddress = options.package ?? '@waterx/perp';
549
+ const argumentsTypes = [
550
+ null
551
+ ];
552
+ const parameterNames = ["aum"];
553
+ return (tx) => tx.moveCall({
554
+ package: packageAddress,
555
+ module: 'lp_pool',
556
+ function: 'aum_market_count',
557
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
558
+ typeArguments: options.typeArguments
559
+ });
560
+ }
561
+ export function aumTotalTraderProfitUsd(options) {
562
+ const packageAddress = options.package ?? '@waterx/perp';
563
+ const argumentsTypes = [
564
+ null
565
+ ];
566
+ const parameterNames = ["aum"];
567
+ return (tx) => tx.moveCall({
568
+ package: packageAddress,
569
+ module: 'lp_pool',
570
+ function: 'aum_total_trader_profit_usd',
571
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
572
+ typeArguments: options.typeArguments
573
+ });
574
+ }
575
+ export function aumTotalTraderLossUsd(options) {
576
+ const packageAddress = options.package ?? '@waterx/perp';
577
+ const argumentsTypes = [
578
+ null
579
+ ];
580
+ const parameterNames = ["aum"];
581
+ return (tx) => tx.moveCall({
582
+ package: packageAddress,
583
+ module: 'lp_pool',
584
+ function: 'aum_total_trader_loss_usd',
585
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
586
+ typeArguments: options.typeArguments
587
+ });
588
+ }
589
+ export function aumMarketContribution(options) {
590
+ const packageAddress = options.package ?? '@waterx/perp';
591
+ const argumentsTypes = [
592
+ null,
593
+ '0x2::object::ID'
594
+ ];
595
+ const parameterNames = ["aum", "marketId"];
596
+ return (tx) => tx.moveCall({
597
+ package: packageAddress,
598
+ module: 'lp_pool',
599
+ function: 'aum_market_contribution',
600
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
601
+ typeArguments: options.typeArguments
602
+ });
603
+ }
604
+ export function aumMarketContributionByIndex(options) {
605
+ const packageAddress = options.package ?? '@waterx/perp';
606
+ const argumentsTypes = [
607
+ null,
608
+ 'u64'
609
+ ];
610
+ const parameterNames = ["aum", "index"];
611
+ return (tx) => tx.moveCall({
612
+ package: packageAddress,
613
+ module: 'lp_pool',
614
+ function: 'aum_market_contribution_by_index',
615
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
616
+ typeArguments: options.typeArguments
617
+ });
618
+ }
619
+ export function aumContributionIsTraderProfit(options) {
620
+ const packageAddress = options.package ?? '@waterx/perp';
621
+ const argumentsTypes = [
622
+ null
623
+ ];
624
+ const parameterNames = ["c"];
625
+ return (tx) => tx.moveCall({
626
+ package: packageAddress,
627
+ module: 'lp_pool',
628
+ function: 'aum_contribution_is_trader_profit',
629
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
630
+ });
631
+ }
632
+ export function aumContributionPnlUsd(options) {
633
+ const packageAddress = options.package ?? '@waterx/perp';
634
+ const argumentsTypes = [
635
+ null
636
+ ];
637
+ const parameterNames = ["c"];
638
+ return (tx) => tx.moveCall({
639
+ package: packageAddress,
640
+ module: 'lp_pool',
641
+ function: 'aum_contribution_pnl_usd',
642
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
643
+ });
644
+ }
645
+ export function aumContributionLastRefreshTimestamp(options) {
646
+ const packageAddress = options.package ?? '@waterx/perp';
647
+ const argumentsTypes = [
648
+ null
649
+ ];
650
+ const parameterNames = ["c"];
651
+ return (tx) => tx.moveCall({
652
+ package: packageAddress,
653
+ module: 'lp_pool',
654
+ function: 'aum_contribution_last_refresh_timestamp',
655
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
656
+ });
657
+ }
658
+ /** Registers a market contribution for this WLP AUM object. */
659
+ export function registerMarketAum(options) {
660
+ const packageAddress = options.package ?? '@waterx/perp';
661
+ const argumentsTypes = [
662
+ null,
663
+ null,
664
+ '0x2::object::ID',
665
+ 'bool',
666
+ null,
667
+ '0x2::clock::Clock'
668
+ ];
669
+ const parameterNames = ["aum", "Cap", "marketId", "isTraderProfit", "pnlUsd"];
670
+ return (tx) => tx.moveCall({
671
+ package: packageAddress,
672
+ module: 'lp_pool',
673
+ function: 'register_market_aum',
674
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
675
+ typeArguments: options.typeArguments
676
+ });
677
+ }
678
+ /** Refreshes an existing market's AUM contribution. */
679
+ export function refreshMarketAum(options) {
680
+ const packageAddress = options.package ?? '@waterx/perp';
681
+ const argumentsTypes = [
682
+ null,
683
+ '0x2::object::ID',
684
+ 'bool',
685
+ null,
686
+ '0x2::clock::Clock'
687
+ ];
688
+ const parameterNames = ["aum", "marketId", "isTraderProfit", "pnlUsd"];
689
+ return (tx) => tx.moveCall({
690
+ package: packageAddress,
691
+ module: 'lp_pool',
692
+ function: 'refresh_market_aum',
693
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
694
+ typeArguments: options.typeArguments
695
+ });
696
+ }
697
+ /** Returns WLP equity after applying all registered market unrealized PnL. */
698
+ export function aumEquityUsd(options) {
699
+ const packageAddress = options.package ?? '@waterx/perp';
700
+ const argumentsTypes = [
701
+ null,
702
+ null,
703
+ null,
704
+ '0x2::clock::Clock'
705
+ ];
706
+ const parameterNames = ["pool", "aum", "globalConfig"];
707
+ return (tx) => tx.moveCall({
708
+ package: packageAddress,
709
+ module: 'lp_pool',
710
+ function: 'aum_equity_usd',
711
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
712
+ typeArguments: options.typeArguments
713
+ });
714
+ }
715
+ /** Gets cumulative borrow rate for a token. */
716
+ export function cumulativeBorrowRate(options) {
717
+ const packageAddress = options.package ?? '@waterx/perp';
718
+ const argumentsTypes = [
719
+ null,
720
+ null
721
+ ];
722
+ const parameterNames = ["pool", "tokenType"];
723
+ return (tx) => tx.moveCall({
724
+ package: packageAddress,
725
+ module: 'lp_pool',
726
+ function: 'cumulative_borrow_rate',
727
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
728
+ typeArguments: options.typeArguments
729
+ });
730
+ }
731
+ /** Gets TVL in USD. */
732
+ export function tvlUsd(options) {
733
+ const packageAddress = options.package ?? '@waterx/perp';
734
+ const argumentsTypes = [
735
+ null
736
+ ];
737
+ const parameterNames = ["pool"];
738
+ return (tx) => tx.moveCall({
739
+ package: packageAddress,
740
+ module: 'lp_pool',
741
+ function: 'tvl_usd',
742
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
743
+ typeArguments: options.typeArguments
744
+ });
745
+ }
746
+ /** Checks if OI is within cap (reads from global_config.oi_cap_bps; 0 = no cap). */
747
+ export function checkOiCap(options) {
748
+ const packageAddress = options.package ?? '@waterx/perp';
749
+ const argumentsTypes = [
750
+ null,
751
+ null,
752
+ null
753
+ ];
754
+ const parameterNames = ["pool", "globalConfig", "totalOiUsd"];
755
+ return (tx) => tx.moveCall({
756
+ package: packageAddress,
757
+ module: 'lp_pool',
758
+ function: 'check_oi_cap',
759
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
760
+ typeArguments: options.typeArguments
761
+ });
762
+ }
763
+ /** Checks if reserve is within max ratio. */
764
+ export function checkReserveValid(options) {
765
+ const packageAddress = options.package ?? '@waterx/perp';
766
+ const argumentsTypes = [
767
+ null,
768
+ null,
769
+ 'u64'
770
+ ];
771
+ const parameterNames = ["pool", "tokenType", "additionalReserve"];
772
+ return (tx) => tx.moveCall({
773
+ package: packageAddress,
774
+ module: 'lp_pool',
775
+ function: 'check_reserve_valid',
776
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
777
+ typeArguments: options.typeArguments
778
+ });
779
+ }
780
+ /** Increases reserved amount. */
781
+ export function increaseReserve(options) {
782
+ const packageAddress = options.package ?? '@waterx/perp';
783
+ const argumentsTypes = [
784
+ null,
785
+ null,
786
+ 'u64'
787
+ ];
788
+ const parameterNames = ["pool", "tokenType", "amount"];
789
+ return (tx) => tx.moveCall({
790
+ package: packageAddress,
791
+ module: 'lp_pool',
792
+ function: 'increase_reserve',
793
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
794
+ typeArguments: options.typeArguments
795
+ });
796
+ }
797
+ /** Decreases reserved amount. */
798
+ export function decreaseReserve(options) {
799
+ const packageAddress = options.package ?? '@waterx/perp';
800
+ const argumentsTypes = [
801
+ null,
802
+ null,
803
+ 'u64'
804
+ ];
805
+ const parameterNames = ["pool", "tokenType", "amount"];
806
+ return (tx) => tx.moveCall({
807
+ package: packageAddress,
808
+ module: 'lp_pool',
809
+ function: 'decrease_reserve',
810
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
811
+ typeArguments: options.typeArguments
812
+ });
813
+ }
814
+ /** Puts collateral back into the pool (from fees/losses). */
815
+ export function putCollateral(options) {
816
+ const packageAddress = options.package ?? '@waterx/perp';
817
+ const argumentsTypes = [
818
+ null,
819
+ null,
820
+ null,
821
+ null
822
+ ];
823
+ const parameterNames = ["pool", "globalConfig", "collateral", "price"];
824
+ return (tx) => tx.moveCall({
825
+ package: packageAddress,
826
+ module: 'lp_pool',
827
+ function: 'put_collateral',
828
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
829
+ typeArguments: options.typeArguments
830
+ });
831
+ }
832
+ /** Requests collateral from the pool (for profit payout). */
833
+ export function requestCollateral(options) {
834
+ const packageAddress = options.package ?? '@waterx/perp';
835
+ const argumentsTypes = [
836
+ null,
837
+ null,
838
+ 'u64',
839
+ null
840
+ ];
841
+ const parameterNames = ["pool", "globalConfig", "amount", "price"];
842
+ return (tx) => tx.moveCall({
843
+ package: packageAddress,
844
+ module: 'lp_pool',
845
+ function: 'request_collateral',
846
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
847
+ typeArguments: options.typeArguments
848
+ });
849
+ }
850
+ /** Gets token pool info (copy). */
851
+ export function tokenPoolInfo(options) {
852
+ const packageAddress = options.package ?? '@waterx/perp';
853
+ const argumentsTypes = [
854
+ null,
855
+ null
856
+ ];
857
+ const parameterNames = ["pool", "tokenType"];
858
+ return (tx) => tx.moveCall({
859
+ package: packageAddress,
860
+ module: 'lp_pool',
861
+ function: 'token_pool_info',
862
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
863
+ typeArguments: options.typeArguments
864
+ });
865
+ }
866
+ /** Gets token decimal. */
867
+ export function tokenDecimal(options) {
868
+ const packageAddress = options.package ?? '@waterx/perp';
869
+ const argumentsTypes = [
870
+ null,
871
+ null
872
+ ];
873
+ const parameterNames = ["pool", "tokenType"];
874
+ return (tx) => tx.moveCall({
875
+ package: packageAddress,
876
+ module: 'lp_pool',
877
+ function: 'token_decimal',
878
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
879
+ typeArguments: options.typeArguments
880
+ });
881
+ }
882
+ /**
883
+ * Returns the oracle ticker bound to `TOKEN` at `add_token` time. This is the only
884
+ * source of truth for "what ticker do I price TOKEN at?" — perp + lp_pool
885
+ * callsites look it up here instead of accepting a free-form string from the
886
+ * caller. Aborts if TOKEN is not a supported token in this pool.
887
+ */
888
+ export function tokenTicker(options) {
889
+ const packageAddress = options.package ?? '@waterx/perp';
890
+ const argumentsTypes = [
891
+ null
892
+ ];
893
+ const parameterNames = ["pool"];
894
+ return (tx) => tx.moveCall({
895
+ package: packageAddress,
896
+ module: 'lp_pool',
897
+ function: 'token_ticker',
898
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
899
+ typeArguments: options.typeArguments
900
+ });
901
+ }
902
+ /** Suspend/resume pool. */
903
+ export function suspendPool(options) {
904
+ const packageAddress = options.package ?? '@waterx/perp';
905
+ const argumentsTypes = [
906
+ null,
907
+ null
908
+ ];
909
+ const parameterNames = ["pool", "Cap"];
910
+ return (tx) => tx.moveCall({
911
+ package: packageAddress,
912
+ module: 'lp_pool',
913
+ function: 'suspend_pool',
914
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
915
+ typeArguments: options.typeArguments
916
+ });
917
+ }
918
+ export function resumePool(options) {
919
+ const packageAddress = options.package ?? '@waterx/perp';
920
+ const argumentsTypes = [
921
+ null,
922
+ null
923
+ ];
924
+ const parameterNames = ["pool", "Cap"];
925
+ return (tx) => tx.moveCall({
926
+ package: packageAddress,
927
+ module: 'lp_pool',
928
+ function: 'resume_pool',
929
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
930
+ typeArguments: options.typeArguments
931
+ });
932
+ }
933
+ /** Whether the pool is active. */
934
+ export function isActive(options) {
935
+ const packageAddress = options.package ?? '@waterx/perp';
936
+ const argumentsTypes = [
937
+ null
938
+ ];
939
+ const parameterNames = ["pool"];
940
+ return (tx) => tx.moveCall({
941
+ package: packageAddress,
942
+ module: 'lp_pool',
943
+ function: 'is_active',
944
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
945
+ typeArguments: options.typeArguments
946
+ });
947
+ }
948
+ /** LP token decimal. */
949
+ export function lpDecimal(options) {
950
+ const packageAddress = options.package ?? '@waterx/perp';
951
+ const argumentsTypes = [
952
+ null
953
+ ];
954
+ const parameterNames = ["pool"];
955
+ return (tx) => tx.moveCall({
956
+ package: packageAddress,
957
+ module: 'lp_pool',
958
+ function: 'lp_decimal',
959
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
960
+ typeArguments: options.typeArguments
961
+ });
962
+ }
963
+ /** Total LP supply (derived from treasury cap). */
964
+ export function totalLpSupply(options) {
965
+ const packageAddress = options.package ?? '@waterx/perp';
966
+ const argumentsTypes = [
967
+ null
968
+ ];
969
+ const parameterNames = ["pool"];
970
+ return (tx) => tx.moveCall({
971
+ package: packageAddress,
972
+ module: 'lp_pool',
973
+ function: 'total_lp_supply',
974
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
975
+ typeArguments: options.typeArguments
976
+ });
977
+ }
978
+ export function borrowRedeemRequests(options) {
979
+ const packageAddress = options.package ?? '@waterx/perp';
980
+ const argumentsTypes = [
981
+ null
982
+ ];
983
+ const parameterNames = ["pool"];
984
+ return (tx) => tx.moveCall({
985
+ package: packageAddress,
986
+ module: 'lp_pool',
987
+ function: 'borrow_redeem_requests',
988
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
989
+ typeArguments: options.typeArguments
990
+ });
991
+ }
992
+ /** TVL in USD as Float. */
993
+ export function poolTvlUsd(options) {
994
+ const packageAddress = options.package ?? '@waterx/perp';
995
+ const argumentsTypes = [
996
+ null
997
+ ];
998
+ const parameterNames = ["pool"];
999
+ return (tx) => tx.moveCall({
1000
+ package: packageAddress,
1001
+ module: 'lp_pool',
1002
+ function: 'pool_tvl_usd',
1003
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1004
+ typeArguments: options.typeArguments
1005
+ });
1006
+ }
1007
+ /** Number of supported tokens. */
1008
+ export function tokenCount(options) {
1009
+ const packageAddress = options.package ?? '@waterx/perp';
1010
+ const argumentsTypes = [
1011
+ null
1012
+ ];
1013
+ const parameterNames = ["pool"];
1014
+ return (tx) => tx.moveCall({
1015
+ package: packageAddress,
1016
+ module: 'lp_pool',
1017
+ function: 'token_count',
1018
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1019
+ typeArguments: options.typeArguments
1020
+ });
1021
+ }
1022
+ /** Borrows a TokenPoolInfo by index. */
1023
+ export function borrowTokenPoolByIndex(options) {
1024
+ const packageAddress = options.package ?? '@waterx/perp';
1025
+ const argumentsTypes = [
1026
+ null,
1027
+ 'u64'
1028
+ ];
1029
+ const parameterNames = ["pool", "index"];
1030
+ return (tx) => tx.moveCall({
1031
+ package: packageAddress,
1032
+ module: 'lp_pool',
1033
+ function: 'borrow_token_pool_by_index',
1034
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1035
+ typeArguments: options.typeArguments
1036
+ });
1037
+ }
1038
+ /** TokenPoolInfo field accessors. */
1039
+ export function tpiTokenType(options) {
1040
+ const packageAddress = options.package ?? '@waterx/perp';
1041
+ const argumentsTypes = [
1042
+ null
1043
+ ];
1044
+ const parameterNames = ["tp"];
1045
+ return (tx) => tx.moveCall({
1046
+ package: packageAddress,
1047
+ module: 'lp_pool',
1048
+ function: 'tpi_token_type',
1049
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1050
+ });
1051
+ }
1052
+ export function tpiTicker(options) {
1053
+ const packageAddress = options.package ?? '@waterx/perp';
1054
+ const argumentsTypes = [
1055
+ null
1056
+ ];
1057
+ const parameterNames = ["tp"];
1058
+ return (tx) => tx.moveCall({
1059
+ package: packageAddress,
1060
+ module: 'lp_pool',
1061
+ function: 'tpi_ticker',
1062
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1063
+ });
1064
+ }
1065
+ export function tpiTokenDecimal(options) {
1066
+ const packageAddress = options.package ?? '@waterx/perp';
1067
+ const argumentsTypes = [
1068
+ null
1069
+ ];
1070
+ const parameterNames = ["tp"];
1071
+ return (tx) => tx.moveCall({
1072
+ package: packageAddress,
1073
+ module: 'lp_pool',
1074
+ function: 'tpi_token_decimal',
1075
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1076
+ });
1077
+ }
1078
+ export function tpiLiquidityAmount(options) {
1079
+ const packageAddress = options.package ?? '@waterx/perp';
1080
+ const argumentsTypes = [
1081
+ null
1082
+ ];
1083
+ const parameterNames = ["tp"];
1084
+ return (tx) => tx.moveCall({
1085
+ package: packageAddress,
1086
+ module: 'lp_pool',
1087
+ function: 'tpi_liquidity_amount',
1088
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1089
+ });
1090
+ }
1091
+ export function tpiReservedAmount(options) {
1092
+ const packageAddress = options.package ?? '@waterx/perp';
1093
+ const argumentsTypes = [
1094
+ null
1095
+ ];
1096
+ const parameterNames = ["tp"];
1097
+ return (tx) => tx.moveCall({
1098
+ package: packageAddress,
1099
+ module: 'lp_pool',
1100
+ function: 'tpi_reserved_amount',
1101
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1102
+ });
1103
+ }
1104
+ export function tpiValueUsd(options) {
1105
+ const packageAddress = options.package ?? '@waterx/perp';
1106
+ const argumentsTypes = [
1107
+ null
1108
+ ];
1109
+ const parameterNames = ["tp"];
1110
+ return (tx) => tx.moveCall({
1111
+ package: packageAddress,
1112
+ module: 'lp_pool',
1113
+ function: 'tpi_value_usd',
1114
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1115
+ });
1116
+ }
1117
+ export function tpiTargetWeightBps(options) {
1118
+ const packageAddress = options.package ?? '@waterx/perp';
1119
+ const argumentsTypes = [
1120
+ null
1121
+ ];
1122
+ const parameterNames = ["tp"];
1123
+ return (tx) => tx.moveCall({
1124
+ package: packageAddress,
1125
+ module: 'lp_pool',
1126
+ function: 'tpi_target_weight_bps',
1127
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1128
+ });
1129
+ }
1130
+ export function tpiMintFeeBps(options) {
1131
+ const packageAddress = options.package ?? '@waterx/perp';
1132
+ const argumentsTypes = [
1133
+ null
1134
+ ];
1135
+ const parameterNames = ["tp"];
1136
+ return (tx) => tx.moveCall({
1137
+ package: packageAddress,
1138
+ module: 'lp_pool',
1139
+ function: 'tpi_mint_fee_bps',
1140
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1141
+ });
1142
+ }
1143
+ export function tpiBurnFeeBps(options) {
1144
+ const packageAddress = options.package ?? '@waterx/perp';
1145
+ const argumentsTypes = [
1146
+ null
1147
+ ];
1148
+ const parameterNames = ["tp"];
1149
+ return (tx) => tx.moveCall({
1150
+ package: packageAddress,
1151
+ module: 'lp_pool',
1152
+ function: 'tpi_burn_fee_bps',
1153
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1154
+ });
1155
+ }
1156
+ export function tpiCumulativeBorrowRate(options) {
1157
+ const packageAddress = options.package ?? '@waterx/perp';
1158
+ const argumentsTypes = [
1159
+ null
1160
+ ];
1161
+ const parameterNames = ["tp"];
1162
+ return (tx) => tx.moveCall({
1163
+ package: packageAddress,
1164
+ module: 'lp_pool',
1165
+ function: 'tpi_cumulative_borrow_rate',
1166
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1167
+ });
1168
+ }
1169
+ export function tpiLastPriceRefreshTimestamp(options) {
1170
+ const packageAddress = options.package ?? '@waterx/perp';
1171
+ const argumentsTypes = [
1172
+ null
1173
+ ];
1174
+ const parameterNames = ["tp"];
1175
+ return (tx) => tx.moveCall({
1176
+ package: packageAddress,
1177
+ module: 'lp_pool',
1178
+ function: 'tpi_last_price_refresh_timestamp',
1179
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1180
+ });
1181
+ }
1182
+ export function redeemRecipientAccountId(options) {
1183
+ const packageAddress = options.package ?? '@waterx/perp';
1184
+ const argumentsTypes = [
1185
+ null
1186
+ ];
1187
+ const parameterNames = ["r"];
1188
+ return (tx) => tx.moveCall({
1189
+ package: packageAddress,
1190
+ module: 'lp_pool',
1191
+ function: 'redeem_recipient_account_id',
1192
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1193
+ typeArguments: options.typeArguments
1194
+ });
1195
+ }
1196
+ export function redeemLpAmount(options) {
1197
+ const packageAddress = options.package ?? '@waterx/perp';
1198
+ const argumentsTypes = [
1199
+ null
1200
+ ];
1201
+ const parameterNames = ["r"];
1202
+ return (tx) => tx.moveCall({
1203
+ package: packageAddress,
1204
+ module: 'lp_pool',
1205
+ function: 'redeem_lp_amount',
1206
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1207
+ typeArguments: options.typeArguments
1208
+ });
1209
+ }
1210
+ export function redeemTokenType(options) {
1211
+ const packageAddress = options.package ?? '@waterx/perp';
1212
+ const argumentsTypes = [
1213
+ null
1214
+ ];
1215
+ const parameterNames = ["r"];
1216
+ return (tx) => tx.moveCall({
1217
+ package: packageAddress,
1218
+ module: 'lp_pool',
1219
+ function: 'redeem_token_type',
1220
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1221
+ typeArguments: options.typeArguments
1222
+ });
1223
+ }
1224
+ export function redeemRequestTimestamp(options) {
1225
+ const packageAddress = options.package ?? '@waterx/perp';
1226
+ const argumentsTypes = [
1227
+ null
1228
+ ];
1229
+ const parameterNames = ["r"];
1230
+ return (tx) => tx.moveCall({
1231
+ package: packageAddress,
1232
+ module: 'lp_pool',
1233
+ function: 'redeem_request_timestamp',
1234
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1235
+ typeArguments: options.typeArguments
1236
+ });
1237
+ }
1238
+ export function findTokenPoolIndex(options) {
1239
+ const packageAddress = options.package ?? '@waterx/perp';
1240
+ const argumentsTypes = [
1241
+ null,
1242
+ null
1243
+ ];
1244
+ const parameterNames = ["pool", "tokenType"];
1245
+ return (tx) => tx.moveCall({
1246
+ package: packageAddress,
1247
+ module: 'lp_pool',
1248
+ function: 'find_token_pool_index',
1249
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1250
+ typeArguments: options.typeArguments
1251
+ });
1252
+ }
1253
+ export function borrowTokenPool(options) {
1254
+ const packageAddress = options.package ?? '@waterx/perp';
1255
+ const argumentsTypes = [
1256
+ null,
1257
+ null
1258
+ ];
1259
+ const parameterNames = ["pool", "tokenType"];
1260
+ return (tx) => tx.moveCall({
1261
+ package: packageAddress,
1262
+ module: 'lp_pool',
1263
+ function: 'borrow_token_pool',
1264
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1265
+ typeArguments: options.typeArguments
1266
+ });
1267
+ }
1268
+ export function borrowMutTokenPool(options) {
1269
+ const packageAddress = options.package ?? '@waterx/perp';
1270
+ const argumentsTypes = [
1271
+ null,
1272
+ null
1273
+ ];
1274
+ const parameterNames = ["pool", "tokenType"];
1275
+ return (tx) => tx.moveCall({
1276
+ package: packageAddress,
1277
+ module: 'lp_pool',
1278
+ function: 'borrow_mut_token_pool',
1279
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1280
+ typeArguments: options.typeArguments
1281
+ });
1282
+ }
1283
+ export function refreshTokenValueWithPrice(options) {
1284
+ const packageAddress = options.package ?? '@waterx/perp';
1285
+ const argumentsTypes = [
1286
+ null,
1287
+ null,
1288
+ 'u64'
1289
+ ];
1290
+ const parameterNames = ["pool", "price", "refreshTimestamp"];
1291
+ return (tx) => tx.moveCall({
1292
+ package: packageAddress,
1293
+ module: 'lp_pool',
1294
+ function: 'refresh_token_value_with_price',
1295
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1296
+ typeArguments: options.typeArguments
1297
+ });
1298
+ }
1299
+ export function addAumContribution(options) {
1300
+ const packageAddress = options.package ?? '@waterx/perp';
1301
+ const argumentsTypes = [
1302
+ null,
1303
+ null
1304
+ ];
1305
+ const parameterNames = ["aum", "contribution"];
1306
+ return (tx) => tx.moveCall({
1307
+ package: packageAddress,
1308
+ module: 'lp_pool',
1309
+ function: 'add_aum_contribution',
1310
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1311
+ typeArguments: options.typeArguments
1312
+ });
1313
+ }
1314
+ export function removeAumContribution(options) {
1315
+ const packageAddress = options.package ?? '@waterx/perp';
1316
+ const argumentsTypes = [
1317
+ null,
1318
+ null
1319
+ ];
1320
+ const parameterNames = ["aum", "contribution"];
1321
+ return (tx) => tx.moveCall({
1322
+ package: packageAddress,
1323
+ module: 'lp_pool',
1324
+ function: 'remove_aum_contribution',
1325
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1326
+ typeArguments: options.typeArguments
1327
+ });
1328
+ }
1329
+ export function assertAumFresh(options) {
1330
+ const packageAddress = options.package ?? '@waterx/perp';
1331
+ const argumentsTypes = [
1332
+ null,
1333
+ null,
1334
+ '0x2::clock::Clock'
1335
+ ];
1336
+ const parameterNames = ["aum", "globalConfig"];
1337
+ return (tx) => tx.moveCall({
1338
+ package: packageAddress,
1339
+ module: 'lp_pool',
1340
+ function: 'assert_aum_fresh',
1341
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1342
+ typeArguments: options.typeArguments
1343
+ });
1344
+ }
1345
+ export function assertPricesFresh(options) {
1346
+ const packageAddress = options.package ?? '@waterx/perp';
1347
+ const argumentsTypes = [
1348
+ null,
1349
+ null,
1350
+ '0x2::clock::Clock'
1351
+ ];
1352
+ const parameterNames = ["pool", "globalConfig"];
1353
+ return (tx) => tx.moveCall({
1354
+ package: packageAddress,
1355
+ module: 'lp_pool',
1356
+ function: 'assert_prices_fresh',
1357
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1358
+ typeArguments: options.typeArguments
1359
+ });
1360
+ }
1361
+ export function assertRedeemAllowed(options) {
1362
+ const packageAddress = options.package ?? '@waterx/perp';
1363
+ const argumentsTypes = [
1364
+ null
1365
+ ];
1366
+ const parameterNames = ["pool"];
1367
+ return (tx) => tx.moveCall({
1368
+ package: packageAddress,
1369
+ module: 'lp_pool',
1370
+ function: 'assert_redeem_allowed',
1371
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1372
+ typeArguments: options.typeArguments
1373
+ });
1374
+ }
1375
+ export function assertTokenRedeemAllowed(options) {
1376
+ const packageAddress = options.package ?? '@waterx/perp';
1377
+ const argumentsTypes = [
1378
+ null,
1379
+ null
1380
+ ];
1381
+ const parameterNames = ["pool", "tokenType"];
1382
+ return (tx) => tx.moveCall({
1383
+ package: packageAddress,
1384
+ module: 'lp_pool',
1385
+ function: 'assert_token_redeem_allowed',
1386
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1387
+ typeArguments: options.typeArguments
1388
+ });
1389
+ }
1390
+ export function calculateTotalWlpUtilizationBps(options) {
1391
+ const packageAddress = options.package ?? '@waterx/perp';
1392
+ const argumentsTypes = [
1393
+ null
1394
+ ];
1395
+ const parameterNames = ["pool"];
1396
+ return (tx) => tx.moveCall({
1397
+ package: packageAddress,
1398
+ module: 'lp_pool',
1399
+ function: 'calculate_total_wlp_utilization_bps',
1400
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1401
+ typeArguments: options.typeArguments
1402
+ });
1403
+ }
1404
+ export function takeRedeemRequest(options) {
1405
+ const packageAddress = options.package ?? '@waterx/perp';
1406
+ const argumentsTypes = [
1407
+ null,
1408
+ 'u64'
1409
+ ];
1410
+ const parameterNames = ["pool", "requestId"];
1411
+ return (tx) => tx.moveCall({
1412
+ package: packageAddress,
1413
+ module: 'lp_pool',
1414
+ function: 'take_redeem_request',
1415
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1416
+ typeArguments: options.typeArguments
1417
+ });
1418
+ }
1419
+ export function returnRejectedRedeemRequest(options) {
1420
+ const packageAddress = options.package ?? '@waterx/perp';
1421
+ const argumentsTypes = [
1422
+ null,
1423
+ null,
1424
+ 'address',
1425
+ 'u64'
1426
+ ];
1427
+ const parameterNames = ["wxaRegistry", "request", "operator", "requestId"];
1428
+ return (tx) => tx.moveCall({
1429
+ package: packageAddress,
1430
+ module: 'lp_pool',
1431
+ function: 'return_rejected_redeem_request',
1432
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1433
+ typeArguments: options.typeArguments
1434
+ });
1435
+ }
1436
+ /** Calculates dynamic fee based on weight deviation. */
1437
+ export function calculateDynamicFee(options) {
1438
+ const packageAddress = options.package ?? '@waterx/perp';
1439
+ const argumentsTypes = [
1440
+ null,
1441
+ null,
1442
+ null,
1443
+ 'u64',
1444
+ 'u64',
1445
+ 'bool'
1446
+ ];
1447
+ const parameterNames = ["tokenValueUsd", "tvlUsd", "operationValueUsd", "targetWeightBps", "baseFeeBps", "isDeposit"];
1448
+ return (tx) => tx.moveCall({
1449
+ package: packageAddress,
1450
+ module: 'lp_pool',
1451
+ function: 'calculate_dynamic_fee',
1452
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1453
+ });
1454
+ }
1455
+ export function assertValidBorrowConfig(options) {
1456
+ const packageAddress = options.package ?? '@waterx/perp';
1457
+ const argumentsTypes = [
1458
+ null,
1459
+ null,
1460
+ null,
1461
+ 'u64'
1462
+ ];
1463
+ const parameterNames = ["rate_0", "rate_1", "rate_2", "intervalMs"];
1464
+ return (tx) => tx.moveCall({
1465
+ package: packageAddress,
1466
+ module: 'lp_pool',
1467
+ function: 'assert_valid_borrow_config',
1468
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1469
+ });
1470
+ }
1471
+ export function assertValidMaxReserveRatio(options) {
1472
+ const packageAddress = options.package ?? '@waterx/perp';
1473
+ const argumentsTypes = [
1474
+ 'u64'
1475
+ ];
1476
+ const parameterNames = ["maxReserveRatioBps"];
1477
+ return (tx) => tx.moveCall({
1478
+ package: packageAddress,
1479
+ module: 'lp_pool',
1480
+ function: 'assert_valid_max_reserve_ratio',
1481
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1482
+ });
1483
+ }
1484
+ /** Calculates borrow rate using 3-slope utilization curve. */
1485
+ export function calculateBorrowRate(options) {
1486
+ const packageAddress = options.package ?? '@waterx/perp';
1487
+ const argumentsTypes = [
1488
+ 'u64',
1489
+ null,
1490
+ null,
1491
+ null,
1492
+ 'u64',
1493
+ 'u64'
1494
+ ];
1495
+ const parameterNames = ["utilizationBps", "rate_0", "rate_1", "rate_2", "threshold_0", "threshold_1"];
1496
+ return (tx) => tx.moveCall({
1497
+ package: packageAddress,
1498
+ module: 'lp_pool',
1499
+ function: 'calculate_borrow_rate',
1500
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1501
+ });
1502
+ }
1503
+ /**
1504
+ * Converts the instantaneous borrow rate into a cumulative index delta using the
1505
+ * configured interval as the time basis.
1506
+ */
1507
+ export function calculateBorrowRateAccrual(options) {
1508
+ const packageAddress = options.package ?? '@waterx/perp';
1509
+ const argumentsTypes = [
1510
+ null,
1511
+ 'u64',
1512
+ 'u64'
1513
+ ];
1514
+ const parameterNames = ["borrowRate", "elapsedMs", "intervalMs"];
1515
+ return (tx) => tx.moveCall({
1516
+ package: packageAddress,
1517
+ module: 'lp_pool',
1518
+ function: 'calculate_borrow_rate_accrual',
1519
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1520
+ });
1521
+ }