@waterx/sdk 3.0.1 → 3.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.
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/src/account/account-request.d.ts +9 -0
- package/dist/cjs/src/account/account-request.js +20 -0
- package/dist/cjs/src/account/account.d.ts +158 -0
- package/dist/cjs/src/account/account.js +238 -0
- package/dist/cjs/src/account/client.d.ts +42 -0
- package/dist/cjs/src/account/client.js +18 -0
- package/dist/cjs/src/account/config.d.ts +151 -0
- package/dist/cjs/src/account/config.js +9 -0
- package/dist/cjs/src/account/constants.d.ts +5 -0
- package/dist/cjs/src/account/constants.js +8 -0
- package/dist/cjs/src/account/fetch/referral.d.ts +15 -0
- package/dist/cjs/src/account/fetch/referral.js +56 -0
- package/dist/cjs/src/account/fetch/simulate.d.ts +34 -0
- package/dist/cjs/src/account/fetch/simulate.js +49 -0
- package/dist/cjs/src/account/funding/balance.d.ts +32 -0
- package/dist/cjs/src/account/funding/balance.js +100 -0
- package/dist/cjs/src/account/funding/consolidate.d.ts +46 -0
- package/dist/cjs/src/account/funding/consolidate.js +143 -0
- package/dist/cjs/src/account/funding/credit.d.ts +129 -0
- package/dist/cjs/src/account/funding/credit.js +252 -0
- package/dist/cjs/src/account/funding/custody.d.ts +57 -0
- package/dist/cjs/src/account/funding/custody.js +139 -0
- package/dist/cjs/src/account/funding/wormhole.d.ts +86 -0
- package/dist/cjs/src/account/funding/wormhole.js +166 -0
- package/dist/cjs/src/account/index.d.ts +29 -0
- package/dist/cjs/src/account/index.js +45 -0
- package/dist/cjs/src/account/referral.d.ts +21 -0
- package/dist/cjs/src/account/referral.js +78 -0
- package/dist/cjs/src/account/waterx-account.d.ts +31 -0
- package/dist/cjs/src/account/waterx-account.js +29 -0
- package/dist/cjs/src/base-client.d.ts +74 -0
- package/dist/cjs/src/base-client.js +101 -0
- package/dist/cjs/src/constants.d.ts +32 -0
- package/dist/cjs/src/constants.js +41 -0
- package/dist/cjs/src/generated/bucket_v2_framework/account.d.ts +107 -0
- package/dist/cjs/src/generated/bucket_v2_framework/account.js +141 -0
- package/dist/cjs/src/generated/bucket_v2_framework/deps/std/type_name.d.ts +17 -0
- package/dist/cjs/src/generated/bucket_v2_framework/deps/std/type_name.js +22 -0
- package/dist/cjs/src/generated/bucket_v2_framework/deps/sui/balance.d.ts +12 -0
- package/dist/cjs/src/generated/bucket_v2_framework/deps/sui/balance.js +17 -0
- package/dist/cjs/src/generated/bucket_v2_framework/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/bucket_v2_framework/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/bucket_v2_framework/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/bucket_v2_framework/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/bucket_v2_framework/double.d.ts +384 -0
- package/dist/cjs/src/generated/bucket_v2_framework/double.js +504 -0
- package/dist/cjs/src/generated/bucket_v2_framework/float.d.ts +364 -0
- package/dist/cjs/src/generated/bucket_v2_framework/float.js +476 -0
- package/dist/cjs/src/generated/bucket_v2_framework/liability.d.ts +171 -0
- package/dist/cjs/src/generated/bucket_v2_framework/liability.js +192 -0
- package/dist/cjs/src/generated/bucket_v2_framework/linked_table.d.ts +384 -0
- package/dist/cjs/src/generated/bucket_v2_framework/linked_table.js +405 -0
- package/dist/cjs/src/generated/bucket_v2_framework/sheet.d.ts +424 -0
- package/dist/cjs/src/generated/bucket_v2_framework/sheet.js +395 -0
- package/dist/cjs/src/generated/native_custody/custody_vault.d.ts +586 -0
- package/dist/cjs/src/generated/native_custody/custody_vault.js +555 -0
- package/dist/cjs/src/generated/native_custody/deps/bucket_v2_framework/float.d.ts +8 -0
- package/dist/cjs/src/generated/native_custody/deps/bucket_v2_framework/float.js +13 -0
- package/dist/cjs/src/generated/native_custody/deps/bucket_v2_framework/liability.d.ts +11 -0
- package/dist/cjs/src/generated/native_custody/deps/bucket_v2_framework/liability.js +16 -0
- package/dist/cjs/src/generated/native_custody/deps/bucket_v2_framework/sheet.d.ts +49 -0
- package/dist/cjs/src/generated/native_custody/deps/bucket_v2_framework/sheet.js +52 -0
- package/dist/cjs/src/generated/native_custody/deps/std/type_name.d.ts +17 -0
- package/dist/cjs/src/generated/native_custody/deps/std/type_name.js +22 -0
- package/dist/cjs/src/generated/native_custody/deps/sui/balance.d.ts +12 -0
- package/dist/cjs/src/generated/native_custody/deps/sui/balance.js +17 -0
- package/dist/cjs/src/generated/native_custody/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/native_custody/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/native_custody/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/native_custody/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/native_custody/events.d.ts +36 -0
- package/dist/cjs/src/generated/native_custody/events.js +71 -0
- package/dist/cjs/src/generated/pyth_sponsor_rule/deps/sui/balance.d.ts +12 -0
- package/dist/cjs/src/generated/pyth_sponsor_rule/deps/sui/balance.js +17 -0
- package/dist/cjs/src/generated/pyth_sponsor_rule/pyth_sponsor_rule.d.ts +68 -0
- package/dist/cjs/src/generated/pyth_sponsor_rule/pyth_sponsor_rule.js +113 -0
- package/dist/cjs/src/generated/utils/index.d.ts +30 -0
- package/dist/cjs/src/generated/utils/index.js +168 -0
- package/dist/cjs/src/generated/waterx_account/account.d.ts +1906 -0
- package/dist/cjs/src/generated/waterx_account/account.js +1929 -0
- package/dist/cjs/src/generated/waterx_account/deps/bucket_v2_framework/liability.d.ts +11 -0
- package/dist/cjs/src/generated/waterx_account/deps/bucket_v2_framework/liability.js +16 -0
- package/dist/cjs/src/generated/waterx_account/deps/bucket_v2_framework/sheet.d.ts +49 -0
- package/dist/cjs/src/generated/waterx_account/deps/bucket_v2_framework/sheet.js +52 -0
- package/dist/cjs/src/generated/waterx_account/deps/std/type_name.d.ts +17 -0
- package/dist/cjs/src/generated/waterx_account/deps/std/type_name.js +22 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/balance.d.ts +12 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/balance.js +17 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/object_table.d.ts +17 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/object_table.js +22 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/table.d.ts +29 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/table.js +34 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/waterx_account/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/waterx_account/direct_rule.d.ts +77 -0
- package/dist/cjs/src/generated/waterx_account/direct_rule.js +83 -0
- package/dist/cjs/src/generated/waterx_account/events.d.ts +190 -0
- package/dist/cjs/src/generated/waterx_account/events.js +173 -0
- package/dist/cjs/src/generated/waterx_account/version.d.ts +10 -0
- package/dist/cjs/src/generated/waterx_account/version.js +11 -0
- package/dist/cjs/src/generated/waterx_constant_rule/constant_rule.d.ts +68 -0
- package/dist/cjs/src/generated/waterx_constant_rule/constant_rule.js +97 -0
- package/dist/cjs/src/generated/waterx_constant_rule/deps/bucket_v2_framework/float.d.ts +8 -0
- package/dist/cjs/src/generated/waterx_constant_rule/deps/bucket_v2_framework/float.js +13 -0
- package/dist/cjs/src/generated/waterx_constant_rule/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/waterx_constant_rule/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/waterx_credit/credit_registry.d.ts +708 -0
- package/dist/cjs/src/generated/waterx_credit/credit_registry.js +728 -0
- package/dist/cjs/src/generated/waterx_credit/deps/std/type_name.d.ts +17 -0
- package/dist/cjs/src/generated/waterx_credit/deps/std/type_name.js +22 -0
- package/dist/cjs/src/generated/waterx_credit/deps/sui/table.d.ts +29 -0
- package/dist/cjs/src/generated/waterx_credit/deps/sui/table.js +34 -0
- package/dist/cjs/src/generated/waterx_credit/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/waterx_credit/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/waterx_credit/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/waterx_credit/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/waterx_credit/limited_supply.d.ts +107 -0
- package/dist/cjs/src/generated/waterx_credit/limited_supply.js +143 -0
- package/dist/cjs/src/generated/waterx_oracle/aggregator.d.ts +211 -0
- package/dist/cjs/src/generated/waterx_oracle/aggregator.js +258 -0
- package/dist/cjs/src/generated/waterx_oracle/collector.d.ts +119 -0
- package/dist/cjs/src/generated/waterx_oracle/collector.js +147 -0
- package/dist/cjs/src/generated/waterx_oracle/deps/bucket_v2_framework/float.d.ts +8 -0
- package/dist/cjs/src/generated/waterx_oracle/deps/bucket_v2_framework/float.js +13 -0
- package/dist/cjs/src/generated/waterx_oracle/deps/std/type_name.d.ts +17 -0
- package/dist/cjs/src/generated/waterx_oracle/deps/std/type_name.js +22 -0
- package/dist/cjs/src/generated/waterx_oracle/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/waterx_oracle/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/waterx_oracle/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/waterx_oracle/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/waterx_oracle/oracle.d.ts +304 -0
- package/dist/cjs/src/generated/waterx_oracle/oracle.js +381 -0
- package/dist/cjs/src/generated/waterx_oracle/version.d.ts +10 -0
- package/dist/cjs/src/generated/waterx_oracle/version.js +11 -0
- package/dist/cjs/src/generated/waterx_perp/account_data.d.ts +269 -0
- package/dist/cjs/src/generated/waterx_perp/account_data.js +340 -0
- package/dist/cjs/src/generated/waterx_perp/admin.d.ts +19 -0
- package/dist/cjs/src/generated/waterx_perp/admin.js +26 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/double.d.ts +8 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/double.js +13 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/float.d.ts +8 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/float.js +13 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/liability.d.ts +11 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/liability.js +16 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/linked_table.d.ts +8 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/linked_table.js +21 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/sheet.d.ts +49 -0
- package/dist/cjs/src/generated/waterx_perp/deps/bucket_v2_framework/sheet.js +52 -0
- package/dist/cjs/src/generated/waterx_perp/deps/std/type_name.d.ts +17 -0
- package/dist/cjs/src/generated/waterx_perp/deps/std/type_name.js +22 -0
- package/dist/cjs/src/generated/waterx_perp/deps/sui/balance.d.ts +15 -0
- package/dist/cjs/src/generated/waterx_perp/deps/sui/balance.js +20 -0
- package/dist/cjs/src/generated/waterx_perp/deps/sui/coin.d.ts +14 -0
- package/dist/cjs/src/generated/waterx_perp/deps/sui/coin.js +51 -0
- package/dist/cjs/src/generated/waterx_perp/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/waterx_perp/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/waterx_perp/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/waterx_perp/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/waterx_perp/events.d.ts +1283 -0
- package/dist/cjs/src/generated/waterx_perp/events.js +990 -0
- package/dist/cjs/src/generated/waterx_perp/global_config.d.ts +775 -0
- package/dist/cjs/src/generated/waterx_perp/global_config.js +918 -0
- package/dist/cjs/src/generated/waterx_perp/keyed_big_vector.d.ts +553 -0
- package/dist/cjs/src/generated/waterx_perp/keyed_big_vector.js +626 -0
- package/dist/cjs/src/generated/waterx_perp/lp_pool.d.ts +1648 -0
- package/dist/cjs/src/generated/waterx_perp/lp_pool.js +1630 -0
- package/dist/cjs/src/generated/waterx_perp/market_config.d.ts +733 -0
- package/dist/cjs/src/generated/waterx_perp/market_config.js +871 -0
- package/dist/cjs/src/generated/waterx_perp/math.d.ts +63 -0
- package/dist/cjs/src/generated/waterx_perp/math.js +70 -0
- package/dist/cjs/src/generated/waterx_perp/memo.d.ts +251 -0
- package/dist/cjs/src/generated/waterx_perp/memo.js +360 -0
- package/dist/cjs/src/generated/waterx_perp/order_book.d.ts +290 -0
- package/dist/cjs/src/generated/waterx_perp/order_book.js +388 -0
- package/dist/cjs/src/generated/waterx_perp/position.d.ts +1005 -0
- package/dist/cjs/src/generated/waterx_perp/position.js +1200 -0
- package/dist/cjs/src/generated/waterx_perp/request.d.ts +544 -0
- package/dist/cjs/src/generated/waterx_perp/request.js +609 -0
- package/dist/cjs/src/generated/waterx_perp/response.d.ts +247 -0
- package/dist/cjs/src/generated/waterx_perp/response.js +331 -0
- package/dist/cjs/src/generated/waterx_perp/trading.d.ts +2945 -0
- package/dist/cjs/src/generated/waterx_perp/trading.js +2616 -0
- package/dist/cjs/src/generated/waterx_perp/version.d.ts +10 -0
- package/dist/cjs/src/generated/waterx_perp/version.js +11 -0
- package/dist/cjs/src/generated/waterx_perp/witness.d.ts +18 -0
- package/dist/cjs/src/generated/waterx_perp/witness.js +25 -0
- package/dist/cjs/src/generated/waterx_perp_view/deps/std/type_name.d.ts +17 -0
- package/dist/cjs/src/generated/waterx_perp_view/deps/std/type_name.js +22 -0
- package/dist/cjs/src/generated/waterx_perp_view/view.d.ts +447 -0
- package/dist/cjs/src/generated/waterx_perp_view/view.js +459 -0
- package/dist/cjs/src/generated/waterx_prediction/account_data.d.ts +344 -0
- package/dist/cjs/src/generated/waterx_prediction/account_data.js +470 -0
- package/dist/cjs/src/generated/waterx_prediction/admin.d.ts +7 -0
- package/dist/cjs/src/generated/waterx_prediction/admin.js +12 -0
- package/dist/cjs/src/generated/waterx_prediction/deps/bucket_v2_framework/linked_table.d.ts +8 -0
- package/dist/cjs/src/generated/waterx_prediction/deps/bucket_v2_framework/linked_table.js +21 -0
- package/dist/cjs/src/generated/waterx_prediction/deps/sui/balance.d.ts +12 -0
- package/dist/cjs/src/generated/waterx_prediction/deps/sui/balance.js +17 -0
- package/dist/cjs/src/generated/waterx_prediction/deps/sui/table.d.ts +29 -0
- package/dist/cjs/src/generated/waterx_prediction/deps/sui/table.js +34 -0
- package/dist/cjs/src/generated/waterx_prediction/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/waterx_prediction/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/waterx_prediction/events.d.ts +288 -0
- package/dist/cjs/src/generated/waterx_prediction/events.js +254 -0
- package/dist/cjs/src/generated/waterx_prediction/global_config.d.ts +121 -0
- package/dist/cjs/src/generated/waterx_prediction/global_config.js +186 -0
- package/dist/cjs/src/generated/waterx_prediction/order.d.ts +233 -0
- package/dist/cjs/src/generated/waterx_prediction/order.js +339 -0
- package/dist/cjs/src/generated/waterx_prediction/outcome.d.ts +58 -0
- package/dist/cjs/src/generated/waterx_prediction/outcome.js +82 -0
- package/dist/cjs/src/generated/waterx_prediction/position.d.ts +175 -0
- package/dist/cjs/src/generated/waterx_prediction/position.js +232 -0
- package/dist/cjs/src/generated/waterx_prediction/version.d.ts +10 -0
- package/dist/cjs/src/generated/waterx_prediction/version.js +11 -0
- package/dist/cjs/src/generated/waterx_prediction/view.d.ts +418 -0
- package/dist/cjs/src/generated/waterx_prediction/view.js +492 -0
- package/dist/cjs/src/generated/waterx_prediction/waterx_prediction.d.ts +1858 -0
- package/dist/cjs/src/generated/waterx_prediction/waterx_prediction.js +1972 -0
- package/dist/cjs/src/generated/waterx_pyth_rule/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/waterx_pyth_rule/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/waterx_pyth_rule/pyth_rule.d.ts +192 -0
- package/dist/cjs/src/generated/waterx_pyth_rule/pyth_rule.js +214 -0
- package/dist/cjs/src/generated/waterx_referral/deps/sui/table.d.ts +29 -0
- package/dist/cjs/src/generated/waterx_referral/deps/sui/table.js +34 -0
- package/dist/cjs/src/generated/waterx_referral/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/waterx_referral/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/waterx_referral/referral_table.d.ts +171 -0
- package/dist/cjs/src/generated/waterx_referral/referral_table.js +239 -0
- package/dist/cjs/src/generated/waterx_staking/deps/bucket_v2_framework/double.d.ts +8 -0
- package/dist/cjs/src/generated/waterx_staking/deps/bucket_v2_framework/double.js +13 -0
- package/dist/cjs/src/generated/waterx_staking/deps/sui/balance.d.ts +12 -0
- package/dist/cjs/src/generated/waterx_staking/deps/sui/balance.js +17 -0
- package/dist/cjs/src/generated/waterx_staking/deps/sui/table.d.ts +29 -0
- package/dist/cjs/src/generated/waterx_staking/deps/sui/table.js +34 -0
- package/dist/cjs/src/generated/waterx_staking/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/waterx_staking/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/waterx_staking/waterx_staking.d.ts +746 -0
- package/dist/cjs/src/generated/waterx_staking/waterx_staking.js +797 -0
- package/dist/cjs/src/generated/waterx_staking/witness.d.ts +16 -0
- package/dist/cjs/src/generated/waterx_staking/witness.js +21 -0
- package/dist/cjs/src/generated/waterx_supra_rule/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/waterx_supra_rule/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/waterx_supra_rule/supra_rule.d.ts +158 -0
- package/dist/cjs/src/generated/waterx_supra_rule/supra_rule.js +189 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/bucket_v2_framework/float.d.ts +8 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/bucket_v2_framework/float.js +13 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/bucket_v2_framework/linked_table.d.ts +8 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/bucket_v2_framework/linked_table.js +21 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/std/type_name.d.ts +17 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/std/type_name.js +22 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/sui/balance.d.ts +12 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/sui/balance.js +17 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/withdrawal_queue/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/withdrawal_queue/withdrawal_queue.d.ts +923 -0
- package/dist/cjs/src/generated/withdrawal_queue/withdrawal_queue.js +965 -0
- package/dist/cjs/src/generated/wlp/wlp.d.ts +28 -0
- package/dist/cjs/src/generated/wlp/wlp.js +37 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/sui/table.d.ts +29 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/sui/table.js +34 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/sui/vec_map.d.ts +36 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/sui/vec_map.js +31 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/sui/vec_set.d.ts +16 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/sui/vec_set.js +22 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/wormhole_sdk/consumed_vaas.d.ts +12 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/wormhole_sdk/consumed_vaas.js +45 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/wormhole_sdk/emitter.d.ts +14 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/wormhole_sdk/emitter.js +19 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/wormhole_sdk/set.d.ts +16 -0
- package/dist/cjs/src/generated/wormhole_bridge/deps/wormhole_sdk/set.js +51 -0
- package/dist/cjs/src/generated/wormhole_bridge/events.d.ts +32 -0
- package/dist/cjs/src/generated/wormhole_bridge/events.js +31 -0
- package/dist/cjs/src/generated/wormhole_bridge/wormhole_bridge.d.ts +638 -0
- package/dist/cjs/src/generated/wormhole_bridge/wormhole_bridge.js +692 -0
- package/dist/cjs/src/oracle/aggregate.d.ts +74 -0
- package/dist/cjs/src/oracle/aggregate.js +118 -0
- package/dist/cjs/src/oracle/config.d.ts +99 -0
- package/dist/cjs/src/oracle/config.js +26 -0
- package/dist/cjs/src/oracle/host.d.ts +32 -0
- package/dist/cjs/src/oracle/host.js +11 -0
- package/dist/cjs/src/oracle/index.d.ts +16 -0
- package/dist/cjs/src/oracle/index.js +31 -0
- package/dist/cjs/src/oracle/pyth.d.ts +52 -0
- package/dist/cjs/src/oracle/pyth.js +227 -0
- package/dist/cjs/src/oracle/rules/constant-rule.d.ts +9 -0
- package/dist/cjs/src/oracle/rules/constant-rule.js +17 -0
- package/dist/cjs/src/oracle/rules/pyth-rule.d.ts +11 -0
- package/dist/cjs/src/oracle/rules/pyth-rule.js +23 -0
- package/dist/cjs/src/oracle/rules/sponsor.d.ts +28 -0
- package/dist/cjs/src/oracle/rules/sponsor.js +52 -0
- package/dist/cjs/src/oracle/rules/supra-rule.d.ts +11 -0
- package/dist/cjs/src/oracle/rules/supra-rule.js +25 -0
- package/dist/cjs/src/perp/client.d.ts +78 -0
- package/dist/cjs/src/perp/client.js +112 -0
- package/dist/cjs/src/perp/config-view.d.ts +102 -0
- package/dist/cjs/src/perp/config-view.js +178 -0
- package/dist/cjs/src/perp/config.d.ts +126 -0
- package/dist/cjs/src/perp/config.js +119 -0
- package/dist/cjs/src/perp/constants.d.ts +49 -0
- package/dist/cjs/src/perp/constants.js +79 -0
- package/dist/cjs/src/perp/fetch/account.d.ts +43 -0
- package/dist/cjs/src/perp/fetch/account.js +69 -0
- package/dist/cjs/src/perp/fetch/bridge.d.ts +90 -0
- package/dist/cjs/src/perp/fetch/bridge.js +131 -0
- package/dist/cjs/src/perp/fetch/custody.d.ts +32 -0
- package/dist/cjs/src/perp/fetch/custody.js +66 -0
- package/dist/cjs/src/perp/fetch/market.d.ts +30 -0
- package/dist/cjs/src/perp/fetch/market.js +75 -0
- package/dist/cjs/src/perp/fetch/positions.d.ts +70 -0
- package/dist/cjs/src/perp/fetch/positions.js +195 -0
- package/dist/cjs/src/perp/fetch/simulate.d.ts +12 -0
- package/dist/cjs/src/perp/fetch/simulate.js +21 -0
- package/dist/cjs/src/perp/fetch.d.ts +23 -0
- package/dist/cjs/src/perp/fetch.js +39 -0
- package/dist/cjs/src/perp/index.d.ts +29 -0
- package/dist/cjs/src/perp/index.js +183 -0
- package/dist/cjs/src/perp/tx-builders/common.d.ts +83 -0
- package/dist/cjs/src/perp/tx-builders/common.js +76 -0
- package/dist/cjs/src/perp/tx-builders/credit.d.ts +65 -0
- package/dist/cjs/src/perp/tx-builders/credit.js +67 -0
- package/dist/cjs/src/perp/tx-builders/rewards.d.ts +30 -0
- package/dist/cjs/src/perp/tx-builders/rewards.js +37 -0
- package/dist/cjs/src/perp/tx-builders/trading.d.ts +51 -0
- package/dist/cjs/src/perp/tx-builders/trading.js +71 -0
- package/dist/cjs/src/perp/tx-builders/wlp.d.ts +90 -0
- package/dist/cjs/src/perp/tx-builders/wlp.js +126 -0
- package/dist/cjs/src/perp/tx-builders.d.ts +23 -0
- package/dist/cjs/src/perp/tx-builders.js +45 -0
- package/dist/cjs/src/perp/user/index.d.ts +8 -0
- package/dist/cjs/src/perp/user/index.js +24 -0
- package/dist/cjs/src/perp/user/order.d.ts +89 -0
- package/dist/cjs/src/perp/user/order.js +175 -0
- package/dist/cjs/src/perp/user/staking.d.ts +54 -0
- package/dist/cjs/src/perp/user/staking.js +147 -0
- package/dist/cjs/src/perp/user/trading.d.ts +119 -0
- package/dist/cjs/src/perp/user/trading.js +310 -0
- package/dist/cjs/src/perp/user/wlp.d.ts +58 -0
- package/dist/cjs/src/perp/user/wlp.js +139 -0
- package/dist/cjs/src/prediction/account.d.ts +96 -0
- package/dist/cjs/src/prediction/account.js +212 -0
- package/dist/cjs/src/prediction/admin.d.ts +47 -0
- package/dist/cjs/src/prediction/admin.js +116 -0
- package/dist/cjs/src/prediction/bcs.d.ts +28 -0
- package/dist/cjs/src/prediction/bcs.js +189 -0
- package/dist/cjs/src/prediction/client.d.ts +56 -0
- package/dist/cjs/src/prediction/client.js +128 -0
- package/dist/cjs/src/prediction/config.d.ts +74 -0
- package/dist/cjs/src/prediction/config.js +86 -0
- package/dist/cjs/src/prediction/constants.d.ts +44 -0
- package/dist/cjs/src/prediction/constants.js +49 -0
- package/dist/cjs/src/prediction/fetch.d.ts +82 -0
- package/dist/cjs/src/prediction/fetch.js +294 -0
- package/dist/cjs/src/prediction/gift-link.d.ts +6 -0
- package/dist/cjs/src/prediction/gift-link.js +16 -0
- package/dist/cjs/src/prediction/gift.d.ts +242 -0
- package/dist/cjs/src/prediction/gift.js +490 -0
- package/dist/cjs/src/prediction/index.d.ts +29 -0
- package/dist/cjs/src/prediction/index.js +154 -0
- package/dist/cjs/src/prediction/prediction.d.ts +149 -0
- package/dist/cjs/src/prediction/prediction.js +410 -0
- package/dist/cjs/src/prediction/tx-builders.d.ts +44 -0
- package/dist/cjs/src/prediction/tx-builders.js +56 -0
- package/dist/cjs/src/prediction/types.d.ts +95 -0
- package/dist/cjs/src/prediction/types.js +2 -0
- package/dist/cjs/src/prediction/user/account.d.ts +2 -0
- package/dist/cjs/src/prediction/user/account.js +17 -0
- package/dist/cjs/src/prediction/user/admin.d.ts +6 -0
- package/dist/cjs/src/prediction/user/admin.js +19 -0
- package/dist/cjs/src/prediction/user/gift.d.ts +2 -0
- package/dist/cjs/src/prediction/user/gift.js +24 -0
- package/dist/cjs/src/prediction/user/index.d.ts +5 -0
- package/dist/cjs/src/prediction/user/index.js +60 -0
- package/dist/cjs/src/prediction/user/keeper.d.ts +2 -0
- package/dist/cjs/src/prediction/user/keeper.js +13 -0
- package/dist/cjs/src/prediction/user/order.d.ts +2 -0
- package/dist/cjs/src/prediction/user/order.js +6 -0
- package/dist/cjs/src/prediction/user/position.d.ts +2 -0
- package/dist/cjs/src/prediction/user/position.js +11 -0
- package/dist/cjs/src/prediction/utils/bcs.d.ts +6 -0
- package/dist/cjs/src/prediction/utils/bcs.js +29 -0
- package/dist/cjs/src/prediction/utils/index.d.ts +8 -0
- package/dist/cjs/src/prediction/utils/index.js +31 -0
- package/dist/cjs/src/prediction/utils.d.ts +30 -0
- package/dist/cjs/src/prediction/utils.js +200 -0
- package/dist/cjs/src/sdk.d.ts +22 -0
- package/dist/cjs/src/sdk.js +62 -0
- package/dist/cjs/src/unified-client.d.ts +402 -0
- package/dist/cjs/src/unified-client.js +218 -0
- package/dist/cjs/src/utils/config.d.ts +11 -0
- package/dist/cjs/src/utils/config.js +19 -0
- package/dist/cjs/src/utils/math.d.ts +287 -0
- package/dist/cjs/src/utils/math.js +469 -0
- package/dist/src/prediction/client.d.ts +11 -0
- package/dist/src/prediction/client.js +16 -0
- package/dist/src/prediction/gift.d.ts +19 -0
- package/dist/src/prediction/gift.js +26 -1
- package/package.json +119 -31
|
@@ -0,0 +1,2616 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**************************************************************
|
|
3
|
+
* THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
|
|
4
|
+
**************************************************************/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.MarketRegistry = exports.Market = void 0;
|
|
40
|
+
exports.actionOpenPosition = actionOpenPosition;
|
|
41
|
+
exports.actionClosePosition = actionClosePosition;
|
|
42
|
+
exports.actionPlaceOrder = actionPlaceOrder;
|
|
43
|
+
exports.actionCancelOrder = actionCancelOrder;
|
|
44
|
+
exports.actionDepositCollateral = actionDepositCollateral;
|
|
45
|
+
exports.actionWithdrawCollateral = actionWithdrawCollateral;
|
|
46
|
+
exports.actionLiquidate = actionLiquidate;
|
|
47
|
+
exports.actionIncreasePosition = actionIncreasePosition;
|
|
48
|
+
exports.actionDecreasePosition = actionDecreasePosition;
|
|
49
|
+
exports.actionUpdateOrder = actionUpdateOrder;
|
|
50
|
+
exports.actionCancelPreOrder = actionCancelPreOrder;
|
|
51
|
+
exports.actionAddPreOrder = actionAddPreOrder;
|
|
52
|
+
exports.createMarket = createMarket;
|
|
53
|
+
exports.updateMarketConfig = updateMarketConfig;
|
|
54
|
+
exports.updateMarketFundingConfig = updateMarketFundingConfig;
|
|
55
|
+
exports.pauseMarket = pauseMarket;
|
|
56
|
+
exports.unpauseMarket = unpauseMarket;
|
|
57
|
+
exports.addRequestRule = addRequestRule;
|
|
58
|
+
exports.removeRequestRule = removeRequestRule;
|
|
59
|
+
exports.registerMarketAum = registerMarketAum;
|
|
60
|
+
exports.refreshMarketAum = refreshMarketAum;
|
|
61
|
+
exports.assertProtocolPerm = assertProtocolPerm;
|
|
62
|
+
exports.closePositionRequest = closePositionRequest;
|
|
63
|
+
exports.increasePositionRequest = increasePositionRequest;
|
|
64
|
+
exports.decreasePositionRequest = decreasePositionRequest;
|
|
65
|
+
exports.placeOrderRequest = placeOrderRequest;
|
|
66
|
+
exports.validatePreOrders = validatePreOrders;
|
|
67
|
+
exports.validatePreOrderEntries = validatePreOrderEntries;
|
|
68
|
+
exports.assertPreOrderCount = assertPreOrderCount;
|
|
69
|
+
exports.cancelOrderRequest = cancelOrderRequest;
|
|
70
|
+
exports.updateOrderRequest = updateOrderRequest;
|
|
71
|
+
exports.cancelPreOrderRequest = cancelPreOrderRequest;
|
|
72
|
+
exports.addPreOrderRequest = addPreOrderRequest;
|
|
73
|
+
exports.depositCollateralRequest = depositCollateralRequest;
|
|
74
|
+
exports.withdrawCollateralRequest = withdrawCollateralRequest;
|
|
75
|
+
exports.liquidate = liquidate;
|
|
76
|
+
exports.batchLiquidate = batchLiquidate;
|
|
77
|
+
exports.execute = execute;
|
|
78
|
+
exports.executeOpenPosition = executeOpenPosition;
|
|
79
|
+
exports.executeIncreasePosition = executeIncreasePosition;
|
|
80
|
+
exports.executeClosePosition = executeClosePosition;
|
|
81
|
+
exports.executeDecreasePosition = executeDecreasePosition;
|
|
82
|
+
exports.executePlaceOrder = executePlaceOrder;
|
|
83
|
+
exports.executeCancelOrder = executeCancelOrder;
|
|
84
|
+
exports.executeUpdateOrder = executeUpdateOrder;
|
|
85
|
+
exports.executeCancelPreOrder = executeCancelPreOrder;
|
|
86
|
+
exports.executeAddPreOrder = executeAddPreOrder;
|
|
87
|
+
exports.executeDepositCollateral = executeDepositCollateral;
|
|
88
|
+
exports.executeWithdrawCollateral = executeWithdrawCollateral;
|
|
89
|
+
exports.executeLiquidate = executeLiquidate;
|
|
90
|
+
exports.matchOrders = matchOrders;
|
|
91
|
+
exports.updateFundingRate = updateFundingRate;
|
|
92
|
+
exports.settleFundingRate = settleFundingRate;
|
|
93
|
+
exports.openPositionByKeeper = openPositionByKeeper;
|
|
94
|
+
exports.closePositionByKeeper = closePositionByKeeper;
|
|
95
|
+
exports.resolveSize = resolveSize;
|
|
96
|
+
exports.resolveOrderSize = resolveOrderSize;
|
|
97
|
+
exports.checkOpenSlippage = checkOpenSlippage;
|
|
98
|
+
exports.assertOpenSlippage = assertOpenSlippage;
|
|
99
|
+
exports.assertCloseSlippage = assertCloseSlippage;
|
|
100
|
+
exports.calculateTotalTradingFee = calculateTotalTradingFee;
|
|
101
|
+
exports.emitLpEquity = emitLpEquity;
|
|
102
|
+
exports.distributeTradingFee = distributeTradingFee;
|
|
103
|
+
exports.calculateEffectiveCollateralAmount = calculateEffectiveCollateralAmount;
|
|
104
|
+
exports.calculateLossAdjustedEffectiveCollateralAmount = calculateLossAdjustedEffectiveCollateralAmount;
|
|
105
|
+
exports.settleLossToBalance = settleLossToBalance;
|
|
106
|
+
exports.settleLossToPosition = settleLossToPosition;
|
|
107
|
+
exports.settleFeesToBalance = settleFeesToBalance;
|
|
108
|
+
exports.settleFeesToPosition = settleFeesToPosition;
|
|
109
|
+
exports.settleFundingToBalance = settleFundingToBalance;
|
|
110
|
+
exports.settleFundingToPosition = settleFundingToPosition;
|
|
111
|
+
exports.calculateImpactFee = calculateImpactFee;
|
|
112
|
+
exports.impactFeeCostUsd = impactFeeCostUsd;
|
|
113
|
+
exports.calculatePositionLeverageBps = calculatePositionLeverageBps;
|
|
114
|
+
exports.hasMinPositionCollateralValue = hasMinPositionCollateralValue;
|
|
115
|
+
exports.assertMinPositionCollateralValue = assertMinPositionCollateralValue;
|
|
116
|
+
exports.proportionalAmount = proportionalAmount;
|
|
117
|
+
exports.debitCollateralAmount = debitCollateralAmount;
|
|
118
|
+
exports.creditCollateralAmount = creditCollateralAmount;
|
|
119
|
+
exports.calculateRemainingCollateralAfterPartialReduce = calculateRemainingCollateralAfterPartialReduce;
|
|
120
|
+
exports.canPositionGrow = canPositionGrow;
|
|
121
|
+
exports.validatePositionGrowth = validatePositionGrowth;
|
|
122
|
+
exports.weightedAveragePrice = weightedAveragePrice;
|
|
123
|
+
exports.normalizeTriggerPrice = normalizeTriggerPrice;
|
|
124
|
+
exports.hasPendingPreOrders = hasPendingPreOrders;
|
|
125
|
+
exports.pendingPreOrdersCount = pendingPreOrdersCount;
|
|
126
|
+
exports.reservePreOrders = reservePreOrders;
|
|
127
|
+
exports.dropPendingPreOrdersIfExists = dropPendingPreOrdersIfExists;
|
|
128
|
+
exports.activatePendingPreOrders = activatePendingPreOrders;
|
|
129
|
+
exports.assertPositionOwner = assertPositionOwner;
|
|
130
|
+
exports.assertPositionCollateralType = assertPositionCollateralType;
|
|
131
|
+
exports.borrowOwnedPosition = borrowOwnedPosition;
|
|
132
|
+
exports.borrowOwnedPositionMut = borrowOwnedPositionMut;
|
|
133
|
+
exports.takeOwnedPosition = takeOwnedPosition;
|
|
134
|
+
exports.findOrderTypeTag = findOrderTypeTag;
|
|
135
|
+
exports.findCancelOrderLocation = findCancelOrderLocation;
|
|
136
|
+
exports.findOrderLocationById = findOrderLocationById;
|
|
137
|
+
exports.findOrderPriceKeyInBook = findOrderPriceKeyInBook;
|
|
138
|
+
exports.levelContainsOrder = levelContainsOrder;
|
|
139
|
+
exports.hasOrderInBook = hasOrderInBook;
|
|
140
|
+
exports.takeLinkedOrderAtKey = takeLinkedOrderAtKey;
|
|
141
|
+
exports.cancelLinkedOrdersToBalance = cancelLinkedOrdersToBalance;
|
|
142
|
+
exports.borrowMutOrderBook = borrowMutOrderBook;
|
|
143
|
+
exports.takeOrderDirect = takeOrderDirect;
|
|
144
|
+
exports.returnToUser = returnToUser;
|
|
145
|
+
exports.marketId = marketId;
|
|
146
|
+
exports.borrowPosition = borrowPosition;
|
|
147
|
+
exports.hasPosition = hasPosition;
|
|
148
|
+
exports.borrowOrder = borrowOrder;
|
|
149
|
+
exports.borrowPositions = borrowPositions;
|
|
150
|
+
exports.borrowOrderBook = borrowOrderBook;
|
|
151
|
+
exports.borrowConfig = borrowConfig;
|
|
152
|
+
exports.marketSymbol = marketSymbol;
|
|
153
|
+
exports.createMarketRegistry = createMarketRegistry;
|
|
154
|
+
exports.registryAssertVersion = registryAssertVersion;
|
|
155
|
+
exports.registryAllowVersion = registryAllowVersion;
|
|
156
|
+
exports.registryDisallowVersion = registryDisallowVersion;
|
|
157
|
+
exports.addMarket = addMarket;
|
|
158
|
+
exports.removeMarket = removeMarket;
|
|
159
|
+
exports.hasMarket = hasMarket;
|
|
160
|
+
exports.listedTickers = listedTickers;
|
|
161
|
+
exports.borrowMarket = borrowMarket;
|
|
162
|
+
exports.borrowMarketMut = borrowMarketMut;
|
|
163
|
+
/**
|
|
164
|
+
* Core trading engine for WaterX Perp DEX.
|
|
165
|
+
*
|
|
166
|
+
* User-side path uses a hot-potato `TradingRequest<C_TOKEN>` (no abilities),
|
|
167
|
+
* consumed in the same PTB by `trading::execute`. `execute` does the work inline
|
|
168
|
+
* and returns droppable `TradingResponse` receipts — user payouts route through
|
|
169
|
+
* `wxa_account::put`, not back out as a `Coin<C_TOKEN>`.
|
|
170
|
+
*
|
|
171
|
+
* PTB flow:
|
|
172
|
+
*
|
|
173
|
+
* 1. let request = trading::place_order_request(...);
|
|
174
|
+
* 2. // External rules add witnesses: my_rule::check(&mut request, ...);
|
|
175
|
+
* 3. let responses = trading::execute(global_config, wxa_registry,
|
|
176
|
+
* market_registry, ticker, pool, request, oracle, clock, ctx);
|
|
177
|
+
*/
|
|
178
|
+
const index_ts_1 = require("../utils/index.js");
|
|
179
|
+
const bcs_1 = require("@mysten/sui/bcs");
|
|
180
|
+
const market_config = __importStar(require("./market_config.js"));
|
|
181
|
+
const keyed_big_vector = __importStar(require("./keyed_big_vector.js"));
|
|
182
|
+
const order_book = __importStar(require("./order_book.js"));
|
|
183
|
+
const vec_set = __importStar(require("./deps/sui/vec_set.js"));
|
|
184
|
+
const $moduleName = '@waterx/perp::trading';
|
|
185
|
+
exports.Market = new index_ts_1.MoveStruct({ name: `${$moduleName}::Market<phantom LP_TOKEN>`, fields: {
|
|
186
|
+
id: bcs_1.bcs.Address,
|
|
187
|
+
/** Per-market configuration and state. */
|
|
188
|
+
config: market_config.MarketConfig,
|
|
189
|
+
/** Positions indexed by position_id. */
|
|
190
|
+
positions: keyed_big_vector.KeyedBigVector,
|
|
191
|
+
/** Limit buy orders: price_key → vector<Order> */
|
|
192
|
+
limit_buys: order_book.OrderBook,
|
|
193
|
+
/** Limit sell orders: price_key → vector<Order> */
|
|
194
|
+
limit_sells: order_book.OrderBook,
|
|
195
|
+
/** Stop buy orders: price_key → vector<Order> */
|
|
196
|
+
stop_buys: order_book.OrderBook,
|
|
197
|
+
/** Stop sell orders: price_key → vector<Order> */
|
|
198
|
+
stop_sells: order_book.OrderBook,
|
|
199
|
+
/**
|
|
200
|
+
* Reserved TP / SL pre-orders, keyed by the **pre-order's own `order_id`** (not
|
|
201
|
+
* the main order's id). Each entry is a single fully-formed reduce-only `Order`
|
|
202
|
+
* with `linked_position_id = None`; on main fill `activate_pending_pre_orders`
|
|
203
|
+
* stamps in the new position id and moves the order onto the live book.
|
|
204
|
+
*/
|
|
205
|
+
pending_pre_orders: keyed_big_vector.KeyedBigVector,
|
|
206
|
+
/**
|
|
207
|
+
* Secondary index: `main_order_id → vector<pre_order_id>` listing the pre-orders
|
|
208
|
+
* reserved against each unfilled main. Used by activation / cancellation to
|
|
209
|
+
* enumerate the pre-orders that belong to a given main.
|
|
210
|
+
*/
|
|
211
|
+
pending_pre_order_index: keyed_big_vector.KeyedBigVector
|
|
212
|
+
} });
|
|
213
|
+
exports.MarketRegistry = new index_ts_1.MoveStruct({ name: `${$moduleName}::MarketRegistry<phantom LP_TOKEN>`, fields: {
|
|
214
|
+
id: bcs_1.bcs.Address,
|
|
215
|
+
/** Allowed protocol versions (admin-managed). */
|
|
216
|
+
allowed_versions: vec_set.VecSet(bcs_1.bcs.u16()),
|
|
217
|
+
/** Tickers of registered markets, mirrored from the DOF for cheap iteration. */
|
|
218
|
+
listed_tickers: bcs_1.bcs.vector(bcs_1.bcs.string())
|
|
219
|
+
} });
|
|
220
|
+
function actionOpenPosition(options = {}) {
|
|
221
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
222
|
+
return (tx) => tx.moveCall({
|
|
223
|
+
package: packageAddress,
|
|
224
|
+
module: 'trading',
|
|
225
|
+
function: 'action_open_position',
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
function actionClosePosition(options = {}) {
|
|
229
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
230
|
+
return (tx) => tx.moveCall({
|
|
231
|
+
package: packageAddress,
|
|
232
|
+
module: 'trading',
|
|
233
|
+
function: 'action_close_position',
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
function actionPlaceOrder(options = {}) {
|
|
237
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
238
|
+
return (tx) => tx.moveCall({
|
|
239
|
+
package: packageAddress,
|
|
240
|
+
module: 'trading',
|
|
241
|
+
function: 'action_place_order',
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
function actionCancelOrder(options = {}) {
|
|
245
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
246
|
+
return (tx) => tx.moveCall({
|
|
247
|
+
package: packageAddress,
|
|
248
|
+
module: 'trading',
|
|
249
|
+
function: 'action_cancel_order',
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
function actionDepositCollateral(options = {}) {
|
|
253
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
254
|
+
return (tx) => tx.moveCall({
|
|
255
|
+
package: packageAddress,
|
|
256
|
+
module: 'trading',
|
|
257
|
+
function: 'action_deposit_collateral',
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
function actionWithdrawCollateral(options = {}) {
|
|
261
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
262
|
+
return (tx) => tx.moveCall({
|
|
263
|
+
package: packageAddress,
|
|
264
|
+
module: 'trading',
|
|
265
|
+
function: 'action_withdraw_collateral',
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
function actionLiquidate(options = {}) {
|
|
269
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
270
|
+
return (tx) => tx.moveCall({
|
|
271
|
+
package: packageAddress,
|
|
272
|
+
module: 'trading',
|
|
273
|
+
function: 'action_liquidate',
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
function actionIncreasePosition(options = {}) {
|
|
277
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
278
|
+
return (tx) => tx.moveCall({
|
|
279
|
+
package: packageAddress,
|
|
280
|
+
module: 'trading',
|
|
281
|
+
function: 'action_increase_position',
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
function actionDecreasePosition(options = {}) {
|
|
285
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
286
|
+
return (tx) => tx.moveCall({
|
|
287
|
+
package: packageAddress,
|
|
288
|
+
module: 'trading',
|
|
289
|
+
function: 'action_decrease_position',
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
function actionUpdateOrder(options = {}) {
|
|
293
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
294
|
+
return (tx) => tx.moveCall({
|
|
295
|
+
package: packageAddress,
|
|
296
|
+
module: 'trading',
|
|
297
|
+
function: 'action_update_order',
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
function actionCancelPreOrder(options = {}) {
|
|
301
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
302
|
+
return (tx) => tx.moveCall({
|
|
303
|
+
package: packageAddress,
|
|
304
|
+
module: 'trading',
|
|
305
|
+
function: 'action_cancel_pre_order',
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
function actionAddPreOrder(options = {}) {
|
|
309
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
310
|
+
return (tx) => tx.moveCall({
|
|
311
|
+
package: packageAddress,
|
|
312
|
+
module: 'trading',
|
|
313
|
+
function: 'action_add_pre_order',
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Creates a trading market with full configuration. `trading_fee`,
|
|
318
|
+
* `maintenance_margin`, and `basic_funding_rate` are scaled Float values (1e9
|
|
319
|
+
* scale). For example, a 5 bps fee = `500_000`.
|
|
320
|
+
*/
|
|
321
|
+
function createMarket(options) {
|
|
322
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
323
|
+
const argumentsTypes = [
|
|
324
|
+
null,
|
|
325
|
+
'0x1::string::String',
|
|
326
|
+
'u64',
|
|
327
|
+
'u64',
|
|
328
|
+
'u128',
|
|
329
|
+
'u128',
|
|
330
|
+
'u128',
|
|
331
|
+
'u128',
|
|
332
|
+
'u64',
|
|
333
|
+
'u128',
|
|
334
|
+
'u64',
|
|
335
|
+
'0x2::clock::Clock'
|
|
336
|
+
];
|
|
337
|
+
const parameterNames = ["Cap", "symbol", "maxLeverageBps", "minCollValue", "tradingFee", "maintenanceMargin", "maxLongOi", "maxShortOi", "cooldownMs", "basicFundingRate", "fundingIntervalMs"];
|
|
338
|
+
return (tx) => tx.moveCall({
|
|
339
|
+
package: packageAddress,
|
|
340
|
+
module: 'trading',
|
|
341
|
+
function: 'create_market',
|
|
342
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
343
|
+
typeArguments: options.typeArguments
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Admin: forwards to `market_config::update_market_config` through the shared
|
|
348
|
+
* `Market`. Needed because `MarketConfig` is embedded inside `Market` and can't be
|
|
349
|
+
* borrowed mutably from a PTB directly. Funding parameters must be updated with
|
|
350
|
+
* `update_market_funding_config` so accrued funding is settled under the old
|
|
351
|
+
* parameters before the new parameters take effect.
|
|
352
|
+
*/
|
|
353
|
+
function updateMarketConfig(options) {
|
|
354
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
355
|
+
const argumentsTypes = [
|
|
356
|
+
null,
|
|
357
|
+
null,
|
|
358
|
+
'0x1::string::String',
|
|
359
|
+
'0x1::option::Option<u64>',
|
|
360
|
+
'0x1::option::Option<u64>',
|
|
361
|
+
'0x1::option::Option<u128>',
|
|
362
|
+
'0x1::option::Option<u128>',
|
|
363
|
+
'0x1::option::Option<u64>',
|
|
364
|
+
'0x1::option::Option<u64>',
|
|
365
|
+
'0x1::option::Option<u64>',
|
|
366
|
+
'0x1::option::Option<u128>',
|
|
367
|
+
'0x1::option::Option<u128>',
|
|
368
|
+
'0x1::option::Option<u128>',
|
|
369
|
+
'0x1::option::Option<u64>',
|
|
370
|
+
'0x1::option::Option<u128>',
|
|
371
|
+
'0x1::option::Option<u64>',
|
|
372
|
+
'0x1::option::Option<u128>',
|
|
373
|
+
'0x1::option::Option<u64>'
|
|
374
|
+
];
|
|
375
|
+
const parameterNames = ["marketRegistry", "cap", "ticker", "maxLeverageBps", "minCollValue", "tradingFee", "maxImpactFee", "allocatedLpExposureBps", "impactFeeCurvature", "impactFeeScale", "maintenanceMargin", "maxLongOi", "maxShortOi", "cooldownMs", "orderPriceTick", "maxPreOrders", "basicFundingRate", "fundingIntervalMs"];
|
|
376
|
+
return (tx) => tx.moveCall({
|
|
377
|
+
package: packageAddress,
|
|
378
|
+
module: 'trading',
|
|
379
|
+
function: 'update_market_config',
|
|
380
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
381
|
+
typeArguments: options.typeArguments
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Admin: settles accrued funding under the old funding parameters, then updates
|
|
386
|
+
* funding parameters for future intervals.
|
|
387
|
+
*/
|
|
388
|
+
function updateMarketFundingConfig(options) {
|
|
389
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
390
|
+
const argumentsTypes = [
|
|
391
|
+
null,
|
|
392
|
+
null,
|
|
393
|
+
null,
|
|
394
|
+
'0x1::string::String',
|
|
395
|
+
null,
|
|
396
|
+
null,
|
|
397
|
+
'0x1::option::Option<u128>',
|
|
398
|
+
'0x1::option::Option<u64>',
|
|
399
|
+
'0x2::clock::Clock'
|
|
400
|
+
];
|
|
401
|
+
const parameterNames = ["globalConfig", "cap", "marketRegistry", "ticker", "pool", "oracle", "basicFundingRate", "fundingIntervalMs"];
|
|
402
|
+
return (tx) => tx.moveCall({
|
|
403
|
+
package: packageAddress,
|
|
404
|
+
module: 'trading',
|
|
405
|
+
function: 'update_market_funding_config',
|
|
406
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
407
|
+
typeArguments: options.typeArguments
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
/** Admin: suspend the market (halts trading). */
|
|
411
|
+
function pauseMarket(options) {
|
|
412
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
413
|
+
const argumentsTypes = [
|
|
414
|
+
null,
|
|
415
|
+
null,
|
|
416
|
+
'0x1::string::String'
|
|
417
|
+
];
|
|
418
|
+
const parameterNames = ["marketRegistry", "cap", "ticker"];
|
|
419
|
+
return (tx) => tx.moveCall({
|
|
420
|
+
package: packageAddress,
|
|
421
|
+
module: 'trading',
|
|
422
|
+
function: 'pause_market',
|
|
423
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
424
|
+
typeArguments: options.typeArguments
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
/** Admin: resume the market. */
|
|
428
|
+
function unpauseMarket(options) {
|
|
429
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
430
|
+
const argumentsTypes = [
|
|
431
|
+
null,
|
|
432
|
+
null,
|
|
433
|
+
'0x1::string::String'
|
|
434
|
+
];
|
|
435
|
+
const parameterNames = ["marketRegistry", "cap", "ticker"];
|
|
436
|
+
return (tx) => tx.moveCall({
|
|
437
|
+
package: packageAddress,
|
|
438
|
+
module: 'trading',
|
|
439
|
+
function: 'unpause_market',
|
|
440
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
441
|
+
typeArguments: options.typeArguments
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
/** Admin: add witness type `W` to the request checklist. */
|
|
445
|
+
function addRequestRule(options) {
|
|
446
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
447
|
+
const argumentsTypes = [
|
|
448
|
+
null,
|
|
449
|
+
null,
|
|
450
|
+
'0x1::string::String'
|
|
451
|
+
];
|
|
452
|
+
const parameterNames = ["marketRegistry", "cap", "ticker"];
|
|
453
|
+
return (tx) => tx.moveCall({
|
|
454
|
+
package: packageAddress,
|
|
455
|
+
module: 'trading',
|
|
456
|
+
function: 'add_request_rule',
|
|
457
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
458
|
+
typeArguments: options.typeArguments
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
/** Admin: remove witness type `W` from the request checklist. */
|
|
462
|
+
function removeRequestRule(options) {
|
|
463
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
464
|
+
const argumentsTypes = [
|
|
465
|
+
null,
|
|
466
|
+
null,
|
|
467
|
+
'0x1::string::String'
|
|
468
|
+
];
|
|
469
|
+
const parameterNames = ["marketRegistry", "cap", "ticker"];
|
|
470
|
+
return (tx) => tx.moveCall({
|
|
471
|
+
package: packageAddress,
|
|
472
|
+
module: 'trading',
|
|
473
|
+
function: 'remove_request_rule',
|
|
474
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
475
|
+
typeArguments: options.typeArguments
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
/** Registers a market in the pool-level WLP AUM object. */
|
|
479
|
+
function registerMarketAum(options) {
|
|
480
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
481
|
+
const argumentsTypes = [
|
|
482
|
+
null,
|
|
483
|
+
null,
|
|
484
|
+
null,
|
|
485
|
+
'0x1::string::String',
|
|
486
|
+
null,
|
|
487
|
+
'0x2::clock::Clock'
|
|
488
|
+
];
|
|
489
|
+
const parameterNames = ["marketRegistry", "aum", "cap", "ticker", "oracle"];
|
|
490
|
+
return (tx) => tx.moveCall({
|
|
491
|
+
package: packageAddress,
|
|
492
|
+
module: 'trading',
|
|
493
|
+
function: 'register_market_aum',
|
|
494
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
495
|
+
typeArguments: options.typeArguments
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
/** Refreshes one registered market's contribution to pool-level WLP AUM. */
|
|
499
|
+
function refreshMarketAum(options) {
|
|
500
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
501
|
+
const argumentsTypes = [
|
|
502
|
+
null,
|
|
503
|
+
null,
|
|
504
|
+
'0x1::string::String',
|
|
505
|
+
null,
|
|
506
|
+
'0x2::clock::Clock'
|
|
507
|
+
];
|
|
508
|
+
const parameterNames = ["marketRegistry", "aum", "ticker", "oracle"];
|
|
509
|
+
return (tx) => tx.moveCall({
|
|
510
|
+
package: packageAddress,
|
|
511
|
+
module: 'trading',
|
|
512
|
+
function: 'refresh_market_aum',
|
|
513
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
514
|
+
typeArguments: options.typeArguments
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
/**
|
|
518
|
+
* Permission check on the wxa account for the trading entrypoints. Reads
|
|
519
|
+
* `effective_protocol_permissions<TradingRequest<C_TOKEN>>` so per-collateral
|
|
520
|
+
* granularity is preserved (`PERM_OPEN_POSITION` etc. are bits on that bitmap).
|
|
521
|
+
* Must be called _before_ any `wxa_account::take` so a failed auth doesn't leave
|
|
522
|
+
* the user drained.
|
|
523
|
+
*/
|
|
524
|
+
function assertProtocolPerm(options) {
|
|
525
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
526
|
+
const argumentsTypes = [
|
|
527
|
+
null,
|
|
528
|
+
'0x2::object::ID',
|
|
529
|
+
'address',
|
|
530
|
+
'u32',
|
|
531
|
+
'0x2::clock::Clock'
|
|
532
|
+
];
|
|
533
|
+
const parameterNames = ["wxaRegistry", "accountId", "sender", "permission"];
|
|
534
|
+
return (tx) => tx.moveCall({
|
|
535
|
+
package: packageAddress,
|
|
536
|
+
module: 'trading',
|
|
537
|
+
function: 'assert_protocol_perm',
|
|
538
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
539
|
+
typeArguments: options.typeArguments
|
|
540
|
+
});
|
|
541
|
+
}
|
|
542
|
+
/** Creates a request to close a position. */
|
|
543
|
+
function closePositionRequest(options) {
|
|
544
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
545
|
+
const argumentsTypes = [
|
|
546
|
+
null,
|
|
547
|
+
null,
|
|
548
|
+
null,
|
|
549
|
+
'0x1::string::String',
|
|
550
|
+
null,
|
|
551
|
+
'0x2::object::ID',
|
|
552
|
+
'u64',
|
|
553
|
+
'u64',
|
|
554
|
+
'0x2::clock::Clock'
|
|
555
|
+
];
|
|
556
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "positionId", "acceptablePrice"];
|
|
557
|
+
return (tx) => tx.moveCall({
|
|
558
|
+
package: packageAddress,
|
|
559
|
+
module: 'trading',
|
|
560
|
+
function: 'close_position_request',
|
|
561
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
562
|
+
typeArguments: options.typeArguments
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
/** Creates a request to increase an existing position at market. */
|
|
566
|
+
function increasePositionRequest(options) {
|
|
567
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
568
|
+
const argumentsTypes = [
|
|
569
|
+
null,
|
|
570
|
+
null,
|
|
571
|
+
null,
|
|
572
|
+
'0x1::string::String',
|
|
573
|
+
null,
|
|
574
|
+
'0x2::object::ID',
|
|
575
|
+
'0x1::option::Option<u64>',
|
|
576
|
+
'u64',
|
|
577
|
+
'u64',
|
|
578
|
+
'u128',
|
|
579
|
+
'u64',
|
|
580
|
+
'0x2::clock::Clock'
|
|
581
|
+
];
|
|
582
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "orderId", "positionId", "collateralAmount", "size", "acceptablePrice"];
|
|
583
|
+
return (tx) => tx.moveCall({
|
|
584
|
+
package: packageAddress,
|
|
585
|
+
module: 'trading',
|
|
586
|
+
function: 'increase_position_request',
|
|
587
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
588
|
+
typeArguments: options.typeArguments
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
/** Creates a request to partially reduce an existing position at market. */
|
|
592
|
+
function decreasePositionRequest(options) {
|
|
593
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
594
|
+
const argumentsTypes = [
|
|
595
|
+
null,
|
|
596
|
+
null,
|
|
597
|
+
null,
|
|
598
|
+
'0x1::string::String',
|
|
599
|
+
null,
|
|
600
|
+
'0x2::object::ID',
|
|
601
|
+
'u64',
|
|
602
|
+
'u128',
|
|
603
|
+
'u64',
|
|
604
|
+
'0x2::clock::Clock'
|
|
605
|
+
];
|
|
606
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "positionId", "size", "acceptablePrice"];
|
|
607
|
+
return (tx) => tx.moveCall({
|
|
608
|
+
package: packageAddress,
|
|
609
|
+
module: 'trading',
|
|
610
|
+
function: 'decrease_position_request',
|
|
611
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
612
|
+
typeArguments: options.typeArguments
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* Creates a request to place a limit, stop, or market order, optionally with TP/SL
|
|
617
|
+
* pre-orders reserved against the freshly opened position.
|
|
618
|
+
*
|
|
619
|
+
* `main: PlaceOrderArgument` describes the order that hits the book immediately.
|
|
620
|
+
* `pre_order: vector<PlaceOrderArgument>` (length 0..=2) describes reduce-only
|
|
621
|
+
* orders that will be promoted to real linked orders on the new position when the
|
|
622
|
+
* main fills via `match_orders`.
|
|
623
|
+
*
|
|
624
|
+
* `main.trigger_price = None` is the market form: the order is parked at tick 0 in
|
|
625
|
+
* the limit book and a keeper fills it via `match_orders` at the live oracle.
|
|
626
|
+
* `acceptable_price` is carried on the order and consulted at match time — if the
|
|
627
|
+
* oracle moves past it the order is cancelled and collateral refunded. Limit/stop
|
|
628
|
+
* orders ignore `acceptable_price`.
|
|
629
|
+
*
|
|
630
|
+
* Validation runs _before_ the wxa take so a malformed request never drains the
|
|
631
|
+
* user's balance.
|
|
632
|
+
*/
|
|
633
|
+
function placeOrderRequest(options) {
|
|
634
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
635
|
+
const argumentsTypes = [
|
|
636
|
+
null,
|
|
637
|
+
null,
|
|
638
|
+
null,
|
|
639
|
+
'0x1::string::String',
|
|
640
|
+
null,
|
|
641
|
+
'0x2::object::ID',
|
|
642
|
+
null,
|
|
643
|
+
'vector<null>',
|
|
644
|
+
'0x2::clock::Clock'
|
|
645
|
+
];
|
|
646
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "main", "preOrder"];
|
|
647
|
+
return (tx) => tx.moveCall({
|
|
648
|
+
package: packageAddress,
|
|
649
|
+
module: 'trading',
|
|
650
|
+
function: 'place_order_request',
|
|
651
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
652
|
+
typeArguments: options.typeArguments
|
|
653
|
+
});
|
|
654
|
+
}
|
|
655
|
+
/**
|
|
656
|
+
* Validates `(main, pre_order)` at place-order request creation. Combines the
|
|
657
|
+
* main-eligibility check (must be a fresh opening order), the count check against
|
|
658
|
+
* the market-level cap, and per-entry structural rules.
|
|
659
|
+
*/
|
|
660
|
+
function validatePreOrders(options) {
|
|
661
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
662
|
+
const argumentsTypes = [
|
|
663
|
+
null,
|
|
664
|
+
'vector<null>',
|
|
665
|
+
'u64'
|
|
666
|
+
];
|
|
667
|
+
const parameterNames = ["main", "preOrder", "maxPreOrders"];
|
|
668
|
+
return (tx) => tx.moveCall({
|
|
669
|
+
package: packageAddress,
|
|
670
|
+
module: 'trading',
|
|
671
|
+
function: 'validate_pre_orders',
|
|
672
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
673
|
+
});
|
|
674
|
+
}
|
|
675
|
+
/**
|
|
676
|
+
* Per-entry structural validation only: reduce-only, real trigger, no collateral,
|
|
677
|
+
* no pre-picked link target, opposite side of main, non-zero size. The total-count
|
|
678
|
+
* check is the caller's responsibility (`assert_pre_order_count`) so this can be
|
|
679
|
+
* reused from per-leg add / cancel paths.
|
|
680
|
+
*/
|
|
681
|
+
function validatePreOrderEntries(options) {
|
|
682
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
683
|
+
const argumentsTypes = [
|
|
684
|
+
'bool',
|
|
685
|
+
'vector<null>'
|
|
686
|
+
];
|
|
687
|
+
const parameterNames = ["mainIsLong", "preOrder"];
|
|
688
|
+
return (tx) => tx.moveCall({
|
|
689
|
+
package: packageAddress,
|
|
690
|
+
module: 'trading',
|
|
691
|
+
function: 'validate_pre_order_entries',
|
|
692
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
693
|
+
});
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* Caps the **total** pre-orders reserved against a single main at the
|
|
697
|
+
* market-config `max_pre_orders`. Aborts with `ETooManyPreOrders`.
|
|
698
|
+
*/
|
|
699
|
+
function assertPreOrderCount(options) {
|
|
700
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
701
|
+
const argumentsTypes = [
|
|
702
|
+
'u64',
|
|
703
|
+
'u64'
|
|
704
|
+
];
|
|
705
|
+
const parameterNames = ["newTotal", "maxPreOrders"];
|
|
706
|
+
return (tx) => tx.moveCall({
|
|
707
|
+
package: packageAddress,
|
|
708
|
+
module: 'trading',
|
|
709
|
+
function: 'assert_pre_order_count',
|
|
710
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
711
|
+
});
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Creates a request to cancel an order. `order_type_tag = 255` scans all 4 books
|
|
715
|
+
* for the matching `order_id`. `trigger_price` is the scaled `Float` value; `0`
|
|
716
|
+
* scans all trigger price buckets in the selected book(s).
|
|
717
|
+
*/
|
|
718
|
+
function cancelOrderRequest(options) {
|
|
719
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
720
|
+
const argumentsTypes = [
|
|
721
|
+
null,
|
|
722
|
+
null,
|
|
723
|
+
null,
|
|
724
|
+
'0x1::string::String',
|
|
725
|
+
null,
|
|
726
|
+
'0x2::object::ID',
|
|
727
|
+
'u64',
|
|
728
|
+
'u128',
|
|
729
|
+
'u8',
|
|
730
|
+
'0x2::clock::Clock'
|
|
731
|
+
];
|
|
732
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "orderId", "triggerPrice", "orderTypeTag"];
|
|
733
|
+
return (tx) => tx.moveCall({
|
|
734
|
+
package: packageAddress,
|
|
735
|
+
module: 'trading',
|
|
736
|
+
function: 'cancel_order_request',
|
|
737
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
738
|
+
typeArguments: options.typeArguments
|
|
739
|
+
});
|
|
740
|
+
}
|
|
741
|
+
/**
|
|
742
|
+
* Creates a request to update a live order's size and trigger price. The order
|
|
743
|
+
* keeps its direction, reduce-only flag, linked position, collateral, and
|
|
744
|
+
* limit/stop book. `order_type_tag = 255` and `current_trigger_price = 0` scan for
|
|
745
|
+
* the current order location.
|
|
746
|
+
*/
|
|
747
|
+
function updateOrderRequest(options) {
|
|
748
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
749
|
+
const argumentsTypes = [
|
|
750
|
+
null,
|
|
751
|
+
null,
|
|
752
|
+
null,
|
|
753
|
+
'0x1::string::String',
|
|
754
|
+
null,
|
|
755
|
+
'0x2::object::ID',
|
|
756
|
+
'u64',
|
|
757
|
+
'u128',
|
|
758
|
+
'u8',
|
|
759
|
+
'u128',
|
|
760
|
+
'u128',
|
|
761
|
+
'0x2::clock::Clock'
|
|
762
|
+
];
|
|
763
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "orderId", "currentTriggerPrice", "orderTypeTag", "newSize", "newTriggerPrice"];
|
|
764
|
+
return (tx) => tx.moveCall({
|
|
765
|
+
package: packageAddress,
|
|
766
|
+
module: 'trading',
|
|
767
|
+
function: 'update_order_request',
|
|
768
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
769
|
+
typeArguments: options.typeArguments
|
|
770
|
+
});
|
|
771
|
+
}
|
|
772
|
+
/**
|
|
773
|
+
* Cancels a single TP / SL pre-order reserved against an unfilled main.
|
|
774
|
+
* `pre_order_id` is the pre-order's own `order_id`, returned in the `OrderCreated`
|
|
775
|
+
* event when it activates (also enumerable from `pending_pre_order_index` keyed by
|
|
776
|
+
* `main_order_id`). The pair must be consistent — i.e. `pre_order_id` must appear
|
|
777
|
+
* in the index entry for `main_order_id`, otherwise the call aborts with
|
|
778
|
+
* `EOrderNotFound`. Pre-orders never hold collateral, so this only adjusts
|
|
779
|
+
* bookkeeping; no payout. Emits `PreOrderCancelled` with `pre_order_count = 1`.
|
|
780
|
+
*/
|
|
781
|
+
function cancelPreOrderRequest(options) {
|
|
782
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
783
|
+
const argumentsTypes = [
|
|
784
|
+
null,
|
|
785
|
+
null,
|
|
786
|
+
null,
|
|
787
|
+
'0x1::string::String',
|
|
788
|
+
null,
|
|
789
|
+
'0x2::object::ID',
|
|
790
|
+
'u64',
|
|
791
|
+
'u64',
|
|
792
|
+
'0x2::clock::Clock'
|
|
793
|
+
];
|
|
794
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "mainOrderId", "preOrderId"];
|
|
795
|
+
return (tx) => tx.moveCall({
|
|
796
|
+
package: packageAddress,
|
|
797
|
+
module: 'trading',
|
|
798
|
+
function: 'cancel_pre_order_request',
|
|
799
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
800
|
+
typeArguments: options.typeArguments
|
|
801
|
+
});
|
|
802
|
+
}
|
|
803
|
+
/**
|
|
804
|
+
* Adds one TP / SL pre-order to an unfilled main. The main must still be on the
|
|
805
|
+
* book, owned by `account_id`, of collateral type `C_TOKEN`, and a fresh opening
|
|
806
|
+
* order. The per-entry rules (`validate_pre_order_entries`) and the market-level
|
|
807
|
+
* total cap (`market.config.max_pre_orders()`) are enforced — existing reserved
|
|
808
|
+
*
|
|
809
|
+
* - 1 must stay within cap.
|
|
810
|
+
*/
|
|
811
|
+
function addPreOrderRequest(options) {
|
|
812
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
813
|
+
const argumentsTypes = [
|
|
814
|
+
null,
|
|
815
|
+
null,
|
|
816
|
+
null,
|
|
817
|
+
'0x1::string::String',
|
|
818
|
+
null,
|
|
819
|
+
'0x2::object::ID',
|
|
820
|
+
'u64',
|
|
821
|
+
null,
|
|
822
|
+
'0x2::clock::Clock'
|
|
823
|
+
];
|
|
824
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "mainOrderId", "preOrder"];
|
|
825
|
+
return (tx) => tx.moveCall({
|
|
826
|
+
package: packageAddress,
|
|
827
|
+
module: 'trading',
|
|
828
|
+
function: 'add_pre_order_request',
|
|
829
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
830
|
+
typeArguments: options.typeArguments
|
|
831
|
+
});
|
|
832
|
+
}
|
|
833
|
+
/** Creates a request to deposit collateral on a position. */
|
|
834
|
+
function depositCollateralRequest(options) {
|
|
835
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
836
|
+
const argumentsTypes = [
|
|
837
|
+
null,
|
|
838
|
+
null,
|
|
839
|
+
null,
|
|
840
|
+
'0x1::string::String',
|
|
841
|
+
null,
|
|
842
|
+
'0x2::object::ID',
|
|
843
|
+
'u64',
|
|
844
|
+
'u64',
|
|
845
|
+
'0x2::clock::Clock'
|
|
846
|
+
];
|
|
847
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "positionId", "collateralAmount"];
|
|
848
|
+
return (tx) => tx.moveCall({
|
|
849
|
+
package: packageAddress,
|
|
850
|
+
module: 'trading',
|
|
851
|
+
function: 'deposit_collateral_request',
|
|
852
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
853
|
+
typeArguments: options.typeArguments
|
|
854
|
+
});
|
|
855
|
+
}
|
|
856
|
+
/** Creates a request to withdraw collateral from a position. */
|
|
857
|
+
function withdrawCollateralRequest(options) {
|
|
858
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
859
|
+
const argumentsTypes = [
|
|
860
|
+
null,
|
|
861
|
+
null,
|
|
862
|
+
null,
|
|
863
|
+
'0x1::string::String',
|
|
864
|
+
null,
|
|
865
|
+
'0x2::object::ID',
|
|
866
|
+
'u64',
|
|
867
|
+
'u64',
|
|
868
|
+
'0x2::clock::Clock'
|
|
869
|
+
];
|
|
870
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "senderRequest", "accountId", "positionId", "amount"];
|
|
871
|
+
return (tx) => tx.moveCall({
|
|
872
|
+
package: packageAddress,
|
|
873
|
+
module: 'trading',
|
|
874
|
+
function: 'withdraw_collateral_request',
|
|
875
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
876
|
+
typeArguments: options.typeArguments
|
|
877
|
+
});
|
|
878
|
+
}
|
|
879
|
+
/**
|
|
880
|
+
* Creates a request to liquidate a position (keeper only). Reads
|
|
881
|
+
* account_object_address from the position directly. Keeper-only: liquidate an
|
|
882
|
+
* undercollateralized position. Single-call — no `TradingRequest` hot potato to
|
|
883
|
+
* manage. Returns a droppable receipt vector for PTB composition.
|
|
884
|
+
*/
|
|
885
|
+
function liquidate(options) {
|
|
886
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
887
|
+
const argumentsTypes = [
|
|
888
|
+
null,
|
|
889
|
+
null,
|
|
890
|
+
null,
|
|
891
|
+
'0x1::string::String',
|
|
892
|
+
null,
|
|
893
|
+
null,
|
|
894
|
+
'u64',
|
|
895
|
+
null,
|
|
896
|
+
'0x2::clock::Clock'
|
|
897
|
+
];
|
|
898
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "pool", "senderRequest", "positionId", "oracle"];
|
|
899
|
+
return (tx) => tx.moveCall({
|
|
900
|
+
package: packageAddress,
|
|
901
|
+
module: 'trading',
|
|
902
|
+
function: 'liquidate',
|
|
903
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
904
|
+
typeArguments: options.typeArguments
|
|
905
|
+
});
|
|
906
|
+
}
|
|
907
|
+
/**
|
|
908
|
+
* Keeper-only: scans a page of positions and liquidates every liquidatable one.
|
|
909
|
+
* Iterates positions by internal index `[page_index * page_size, ...)`. No-op if
|
|
910
|
+
* the page is out of range or no positions qualify. Returns droppable receipts for
|
|
911
|
+
* every liquidated position.
|
|
912
|
+
*/
|
|
913
|
+
function batchLiquidate(options) {
|
|
914
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
915
|
+
const argumentsTypes = [
|
|
916
|
+
null,
|
|
917
|
+
null,
|
|
918
|
+
null,
|
|
919
|
+
'0x1::string::String',
|
|
920
|
+
null,
|
|
921
|
+
null,
|
|
922
|
+
null,
|
|
923
|
+
'u64',
|
|
924
|
+
'u64',
|
|
925
|
+
'0x2::clock::Clock'
|
|
926
|
+
];
|
|
927
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "pool", "senderRequest", "oracle", "pageSize", "pageIndex"];
|
|
928
|
+
return (tx) => tx.moveCall({
|
|
929
|
+
package: packageAddress,
|
|
930
|
+
module: 'trading',
|
|
931
|
+
function: 'batch_liquidate',
|
|
932
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
933
|
+
typeArguments: options.typeArguments
|
|
934
|
+
});
|
|
935
|
+
}
|
|
936
|
+
/**
|
|
937
|
+
* Executes a trading request. All `*_request` creators return raw
|
|
938
|
+
* `TradingRequest<C>`; pass it straight to `execute` after attaching any witness
|
|
939
|
+
* rules (e.g. `pyth_rule::feed(&mut req, ...)`). Used by both user happy paths and
|
|
940
|
+
* keeper paths.
|
|
941
|
+
*/
|
|
942
|
+
function execute(options) {
|
|
943
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
944
|
+
const argumentsTypes = [
|
|
945
|
+
null,
|
|
946
|
+
null,
|
|
947
|
+
null,
|
|
948
|
+
'0x1::string::String',
|
|
949
|
+
null,
|
|
950
|
+
null,
|
|
951
|
+
null,
|
|
952
|
+
'0x2::clock::Clock'
|
|
953
|
+
];
|
|
954
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "pool", "req", "oracle"];
|
|
955
|
+
return (tx) => tx.moveCall({
|
|
956
|
+
package: packageAddress,
|
|
957
|
+
module: 'trading',
|
|
958
|
+
function: 'execute',
|
|
959
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
960
|
+
typeArguments: options.typeArguments
|
|
961
|
+
});
|
|
962
|
+
}
|
|
963
|
+
function executeOpenPosition(options) {
|
|
964
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
965
|
+
const argumentsTypes = [
|
|
966
|
+
null,
|
|
967
|
+
null,
|
|
968
|
+
null,
|
|
969
|
+
null,
|
|
970
|
+
null,
|
|
971
|
+
'0x2::object::ID',
|
|
972
|
+
'0x2::object::ID',
|
|
973
|
+
'u64',
|
|
974
|
+
'address',
|
|
975
|
+
'address',
|
|
976
|
+
null,
|
|
977
|
+
'bool',
|
|
978
|
+
null,
|
|
979
|
+
'u64',
|
|
980
|
+
'0x2::clock::Clock'
|
|
981
|
+
];
|
|
982
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "market", "pool", "oracle", "marketId", "accountId", "orderId", "accountObjectAddress", "sender", "collateral", "isLong", "size", "acceptablePrice"];
|
|
983
|
+
return (tx) => tx.moveCall({
|
|
984
|
+
package: packageAddress,
|
|
985
|
+
module: 'trading',
|
|
986
|
+
function: 'execute_open_position',
|
|
987
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
988
|
+
typeArguments: options.typeArguments
|
|
989
|
+
});
|
|
990
|
+
}
|
|
991
|
+
function executeIncreasePosition(options) {
|
|
992
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
993
|
+
const argumentsTypes = [
|
|
994
|
+
null,
|
|
995
|
+
null,
|
|
996
|
+
null,
|
|
997
|
+
null,
|
|
998
|
+
'0x2::object::ID',
|
|
999
|
+
'address',
|
|
1000
|
+
'u64',
|
|
1001
|
+
'u64',
|
|
1002
|
+
null,
|
|
1003
|
+
null,
|
|
1004
|
+
'u64',
|
|
1005
|
+
'0x2::clock::Clock'
|
|
1006
|
+
];
|
|
1007
|
+
const parameterNames = ["globalConfig", "market", "pool", "oracle", "marketId", "accountObjectAddress", "orderId", "positionId", "collateral", "size", "acceptablePrice"];
|
|
1008
|
+
return (tx) => tx.moveCall({
|
|
1009
|
+
package: packageAddress,
|
|
1010
|
+
module: 'trading',
|
|
1011
|
+
function: 'execute_increase_position',
|
|
1012
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1013
|
+
typeArguments: options.typeArguments
|
|
1014
|
+
});
|
|
1015
|
+
}
|
|
1016
|
+
function executeClosePosition(options) {
|
|
1017
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1018
|
+
const argumentsTypes = [
|
|
1019
|
+
null,
|
|
1020
|
+
null,
|
|
1021
|
+
null,
|
|
1022
|
+
null,
|
|
1023
|
+
null,
|
|
1024
|
+
'0x2::object::ID',
|
|
1025
|
+
'0x2::object::ID',
|
|
1026
|
+
'address',
|
|
1027
|
+
'u64',
|
|
1028
|
+
'u64',
|
|
1029
|
+
'u64',
|
|
1030
|
+
'0x2::clock::Clock'
|
|
1031
|
+
];
|
|
1032
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "market", "pool", "oracle", "marketId", "accountId", "accountObjId", "orderId", "positionId", "acceptablePrice"];
|
|
1033
|
+
return (tx) => tx.moveCall({
|
|
1034
|
+
package: packageAddress,
|
|
1035
|
+
module: 'trading',
|
|
1036
|
+
function: 'execute_close_position',
|
|
1037
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1038
|
+
typeArguments: options.typeArguments
|
|
1039
|
+
});
|
|
1040
|
+
}
|
|
1041
|
+
function executeDecreasePosition(options) {
|
|
1042
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1043
|
+
const argumentsTypes = [
|
|
1044
|
+
null,
|
|
1045
|
+
null,
|
|
1046
|
+
null,
|
|
1047
|
+
null,
|
|
1048
|
+
null,
|
|
1049
|
+
'0x2::object::ID',
|
|
1050
|
+
'0x2::object::ID',
|
|
1051
|
+
'address',
|
|
1052
|
+
'u64',
|
|
1053
|
+
'u64',
|
|
1054
|
+
null,
|
|
1055
|
+
'u64',
|
|
1056
|
+
'0x2::clock::Clock'
|
|
1057
|
+
];
|
|
1058
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "market", "pool", "oracle", "marketId", "accountId", "accountObjId", "orderId", "positionId", "requestedSize", "acceptablePrice"];
|
|
1059
|
+
return (tx) => tx.moveCall({
|
|
1060
|
+
package: packageAddress,
|
|
1061
|
+
module: 'trading',
|
|
1062
|
+
function: 'execute_decrease_position',
|
|
1063
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1064
|
+
typeArguments: options.typeArguments
|
|
1065
|
+
});
|
|
1066
|
+
}
|
|
1067
|
+
function executePlaceOrder(options) {
|
|
1068
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1069
|
+
const argumentsTypes = [
|
|
1070
|
+
null,
|
|
1071
|
+
null,
|
|
1072
|
+
null,
|
|
1073
|
+
null,
|
|
1074
|
+
null,
|
|
1075
|
+
'0x2::object::ID',
|
|
1076
|
+
'0x2::object::ID',
|
|
1077
|
+
'address',
|
|
1078
|
+
null,
|
|
1079
|
+
'bool',
|
|
1080
|
+
'bool',
|
|
1081
|
+
'bool',
|
|
1082
|
+
null,
|
|
1083
|
+
null,
|
|
1084
|
+
'u64',
|
|
1085
|
+
'0x1::option::Option<u64>',
|
|
1086
|
+
'vector<null>',
|
|
1087
|
+
'0x2::clock::Clock'
|
|
1088
|
+
];
|
|
1089
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "market", "pool", "oracle", "marketId", "accountId", "accountObjectAddress", "collateral", "isLong", "isStopOrder", "reduceOnly", "size", "triggerPrice", "acceptablePrice", "linkedPositionId", "preOrders"];
|
|
1090
|
+
return (tx) => tx.moveCall({
|
|
1091
|
+
package: packageAddress,
|
|
1092
|
+
module: 'trading',
|
|
1093
|
+
function: 'execute_place_order',
|
|
1094
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1095
|
+
typeArguments: options.typeArguments
|
|
1096
|
+
});
|
|
1097
|
+
}
|
|
1098
|
+
function executeCancelOrder(options) {
|
|
1099
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1100
|
+
const argumentsTypes = [
|
|
1101
|
+
null,
|
|
1102
|
+
null,
|
|
1103
|
+
null,
|
|
1104
|
+
'0x2::object::ID',
|
|
1105
|
+
'0x2::object::ID',
|
|
1106
|
+
'address',
|
|
1107
|
+
'u64',
|
|
1108
|
+
'u128',
|
|
1109
|
+
'u8'
|
|
1110
|
+
];
|
|
1111
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "market", "marketId", "accountId", "accountObjId", "orderId", "triggerPriceKey", "orderTypeTag"];
|
|
1112
|
+
return (tx) => tx.moveCall({
|
|
1113
|
+
package: packageAddress,
|
|
1114
|
+
module: 'trading',
|
|
1115
|
+
function: 'execute_cancel_order',
|
|
1116
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1117
|
+
typeArguments: options.typeArguments
|
|
1118
|
+
});
|
|
1119
|
+
}
|
|
1120
|
+
function executeUpdateOrder(options) {
|
|
1121
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1122
|
+
const argumentsTypes = [
|
|
1123
|
+
null,
|
|
1124
|
+
null,
|
|
1125
|
+
null,
|
|
1126
|
+
null,
|
|
1127
|
+
'0x2::object::ID',
|
|
1128
|
+
'address',
|
|
1129
|
+
'u64',
|
|
1130
|
+
'u128',
|
|
1131
|
+
'u8',
|
|
1132
|
+
null,
|
|
1133
|
+
null,
|
|
1134
|
+
'0x2::clock::Clock'
|
|
1135
|
+
];
|
|
1136
|
+
const parameterNames = ["globalConfig", "market", "pool", "oracle", "marketId", "accountObjectAddress", "orderId", "triggerPriceKey", "orderTypeTag", "newSize", "newTriggerPrice"];
|
|
1137
|
+
return (tx) => tx.moveCall({
|
|
1138
|
+
package: packageAddress,
|
|
1139
|
+
module: 'trading',
|
|
1140
|
+
function: 'execute_update_order',
|
|
1141
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1142
|
+
typeArguments: options.typeArguments
|
|
1143
|
+
});
|
|
1144
|
+
}
|
|
1145
|
+
/**
|
|
1146
|
+
* Cancels a single pre-order by id. Validates ownership / collateral type on the
|
|
1147
|
+
* reserved `Order`, then verifies `pre_order_id` actually belongs to
|
|
1148
|
+
* `main_order_id` via the index. Destroys the `Order` through
|
|
1149
|
+
* `position::remove_order<C_TOKEN>` and emits
|
|
1150
|
+
* `PreOrderCancelled { main_order_id, pre_order_count: 1 }`.
|
|
1151
|
+
*/
|
|
1152
|
+
function executeCancelPreOrder(options) {
|
|
1153
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1154
|
+
const argumentsTypes = [
|
|
1155
|
+
null,
|
|
1156
|
+
null,
|
|
1157
|
+
'0x2::object::ID',
|
|
1158
|
+
'address',
|
|
1159
|
+
'u64',
|
|
1160
|
+
'u64'
|
|
1161
|
+
];
|
|
1162
|
+
const parameterNames = ["globalConfig", "market", "marketId", "accountObjectAddress", "mainOrderId", "preOrderId"];
|
|
1163
|
+
return (tx) => tx.moveCall({
|
|
1164
|
+
package: packageAddress,
|
|
1165
|
+
module: 'trading',
|
|
1166
|
+
function: 'execute_cancel_pre_order',
|
|
1167
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1168
|
+
typeArguments: options.typeArguments
|
|
1169
|
+
});
|
|
1170
|
+
}
|
|
1171
|
+
/**
|
|
1172
|
+
* Appends a single pre-order to an existing or empty reservation for
|
|
1173
|
+
* `main_order_id`. Locates the main on a book, verifies eligibility, then
|
|
1174
|
+
* `assert_pre_order_count(existing + 1, cap)` and per-entry validation before
|
|
1175
|
+
* delegating to `reserve_pre_orders`.
|
|
1176
|
+
*/
|
|
1177
|
+
function executeAddPreOrder(options) {
|
|
1178
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1179
|
+
const argumentsTypes = [
|
|
1180
|
+
null,
|
|
1181
|
+
null,
|
|
1182
|
+
'0x2::object::ID',
|
|
1183
|
+
'address',
|
|
1184
|
+
'u64',
|
|
1185
|
+
'vector<null>',
|
|
1186
|
+
'0x2::clock::Clock'
|
|
1187
|
+
];
|
|
1188
|
+
const parameterNames = ["globalConfig", "market", "marketId", "accountObjectAddress", "mainOrderId", "newPreOrder"];
|
|
1189
|
+
return (tx) => tx.moveCall({
|
|
1190
|
+
package: packageAddress,
|
|
1191
|
+
module: 'trading',
|
|
1192
|
+
function: 'execute_add_pre_order',
|
|
1193
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1194
|
+
typeArguments: options.typeArguments
|
|
1195
|
+
});
|
|
1196
|
+
}
|
|
1197
|
+
function executeDepositCollateral(options) {
|
|
1198
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1199
|
+
const argumentsTypes = [
|
|
1200
|
+
null,
|
|
1201
|
+
null,
|
|
1202
|
+
null,
|
|
1203
|
+
null,
|
|
1204
|
+
'0x2::object::ID',
|
|
1205
|
+
'address',
|
|
1206
|
+
'u64',
|
|
1207
|
+
null,
|
|
1208
|
+
'0x2::clock::Clock'
|
|
1209
|
+
];
|
|
1210
|
+
const parameterNames = ["globalConfig", "market", "pool", "oracle", "marketId", "accountObjectAddress", "positionId", "collateral"];
|
|
1211
|
+
return (tx) => tx.moveCall({
|
|
1212
|
+
package: packageAddress,
|
|
1213
|
+
module: 'trading',
|
|
1214
|
+
function: 'execute_deposit_collateral',
|
|
1215
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1216
|
+
typeArguments: options.typeArguments
|
|
1217
|
+
});
|
|
1218
|
+
}
|
|
1219
|
+
/**
|
|
1220
|
+
* Returns `(returned_collateral_amount, position_collateral_amount)`: the first is
|
|
1221
|
+
* the amount actually credited back to the wxa account (read off the `Balance`
|
|
1222
|
+
* rather than echoing the requested `amount`, so the response field can't drift if
|
|
1223
|
+
* `pos.withdraw_collateral` ever gains clamping semantics); the second is the
|
|
1224
|
+
* post-action position collateral.
|
|
1225
|
+
*/
|
|
1226
|
+
function executeWithdrawCollateral(options) {
|
|
1227
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1228
|
+
const argumentsTypes = [
|
|
1229
|
+
null,
|
|
1230
|
+
null,
|
|
1231
|
+
null,
|
|
1232
|
+
null,
|
|
1233
|
+
null,
|
|
1234
|
+
'0x2::object::ID',
|
|
1235
|
+
'address',
|
|
1236
|
+
'u64',
|
|
1237
|
+
'u64',
|
|
1238
|
+
'0x2::clock::Clock'
|
|
1239
|
+
];
|
|
1240
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "market", "pool", "oracle", "marketId", "accountObjId", "positionId", "amount"];
|
|
1241
|
+
return (tx) => tx.moveCall({
|
|
1242
|
+
package: packageAddress,
|
|
1243
|
+
module: 'trading',
|
|
1244
|
+
function: 'execute_withdraw_collateral',
|
|
1245
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1246
|
+
typeArguments: options.typeArguments
|
|
1247
|
+
});
|
|
1248
|
+
}
|
|
1249
|
+
function executeLiquidate(options) {
|
|
1250
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1251
|
+
const argumentsTypes = [
|
|
1252
|
+
null,
|
|
1253
|
+
null,
|
|
1254
|
+
null,
|
|
1255
|
+
null,
|
|
1256
|
+
null,
|
|
1257
|
+
'0x2::object::ID',
|
|
1258
|
+
'0x2::object::ID',
|
|
1259
|
+
'address',
|
|
1260
|
+
'address',
|
|
1261
|
+
'u64',
|
|
1262
|
+
'0x2::clock::Clock'
|
|
1263
|
+
];
|
|
1264
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "market", "pool", "oracle", "marketId", "accountId", "accountObjectAddress", "sender", "positionId"];
|
|
1265
|
+
return (tx) => tx.moveCall({
|
|
1266
|
+
package: packageAddress,
|
|
1267
|
+
module: 'trading',
|
|
1268
|
+
function: 'execute_liquidate',
|
|
1269
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1270
|
+
typeArguments: options.typeArguments
|
|
1271
|
+
});
|
|
1272
|
+
}
|
|
1273
|
+
function matchOrders(options) {
|
|
1274
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1275
|
+
const argumentsTypes = [
|
|
1276
|
+
null,
|
|
1277
|
+
null,
|
|
1278
|
+
null,
|
|
1279
|
+
'0x1::string::String',
|
|
1280
|
+
null,
|
|
1281
|
+
null,
|
|
1282
|
+
null,
|
|
1283
|
+
'u8',
|
|
1284
|
+
'u128',
|
|
1285
|
+
'u64',
|
|
1286
|
+
'0x2::clock::Clock'
|
|
1287
|
+
];
|
|
1288
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "pool", "senderRequest", "oracle", "orderTypeTag", "triggerPrice", "maxFills"];
|
|
1289
|
+
return (tx) => tx.moveCall({
|
|
1290
|
+
package: packageAddress,
|
|
1291
|
+
module: 'trading',
|
|
1292
|
+
function: 'match_orders',
|
|
1293
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1294
|
+
typeArguments: options.typeArguments
|
|
1295
|
+
});
|
|
1296
|
+
}
|
|
1297
|
+
/** Keeper: updates funding rate for a market. */
|
|
1298
|
+
function updateFundingRate(options) {
|
|
1299
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1300
|
+
const argumentsTypes = [
|
|
1301
|
+
null,
|
|
1302
|
+
null,
|
|
1303
|
+
'0x1::string::String',
|
|
1304
|
+
null,
|
|
1305
|
+
null,
|
|
1306
|
+
null,
|
|
1307
|
+
'0x2::clock::Clock'
|
|
1308
|
+
];
|
|
1309
|
+
const parameterNames = ["globalConfig", "marketRegistry", "ticker", "pool", "oracle", "senderRequest"];
|
|
1310
|
+
return (tx) => tx.moveCall({
|
|
1311
|
+
package: packageAddress,
|
|
1312
|
+
module: 'trading',
|
|
1313
|
+
function: 'update_funding_rate',
|
|
1314
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1315
|
+
typeArguments: options.typeArguments
|
|
1316
|
+
});
|
|
1317
|
+
}
|
|
1318
|
+
function settleFundingRate(options) {
|
|
1319
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1320
|
+
const argumentsTypes = [
|
|
1321
|
+
null,
|
|
1322
|
+
null,
|
|
1323
|
+
null,
|
|
1324
|
+
null,
|
|
1325
|
+
'0x2::clock::Clock'
|
|
1326
|
+
];
|
|
1327
|
+
const parameterNames = ["globalConfig", "market", "pool", "oracle"];
|
|
1328
|
+
return (tx) => tx.moveCall({
|
|
1329
|
+
package: packageAddress,
|
|
1330
|
+
module: 'trading',
|
|
1331
|
+
function: 'settle_funding_rate',
|
|
1332
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1333
|
+
typeArguments: options.typeArguments
|
|
1334
|
+
});
|
|
1335
|
+
}
|
|
1336
|
+
/**
|
|
1337
|
+
* Keeper-only: open a new position for an account, funded by the keeper's own
|
|
1338
|
+
* `Coin<C_TOKEN>` (campaign / airdrop use case). The keeper bypasses
|
|
1339
|
+
* `min_coll_value` on this path — `increase_position` and `place_order` still
|
|
1340
|
+
* enforce it for all callers including keepers. Returns a droppable receipt vector
|
|
1341
|
+
* so the keeper or a composing protocol can reference the position in the same
|
|
1342
|
+
* PTB.
|
|
1343
|
+
*/
|
|
1344
|
+
function openPositionByKeeper(options) {
|
|
1345
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1346
|
+
const argumentsTypes = [
|
|
1347
|
+
null,
|
|
1348
|
+
null,
|
|
1349
|
+
null,
|
|
1350
|
+
'0x1::string::String',
|
|
1351
|
+
null,
|
|
1352
|
+
null,
|
|
1353
|
+
'address',
|
|
1354
|
+
null,
|
|
1355
|
+
'bool',
|
|
1356
|
+
'u128',
|
|
1357
|
+
'u64',
|
|
1358
|
+
null,
|
|
1359
|
+
'0x2::clock::Clock'
|
|
1360
|
+
];
|
|
1361
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "pool", "keeperRequest", "accountObjectAddress", "collateralCoin", "isLong", "size", "acceptablePrice", "oracle"];
|
|
1362
|
+
return (tx) => tx.moveCall({
|
|
1363
|
+
package: packageAddress,
|
|
1364
|
+
module: 'trading',
|
|
1365
|
+
function: 'open_position_by_keeper',
|
|
1366
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1367
|
+
typeArguments: options.typeArguments
|
|
1368
|
+
});
|
|
1369
|
+
}
|
|
1370
|
+
/**
|
|
1371
|
+
* Risk-manager-only: force-close a position (emergency use). Reads
|
|
1372
|
+
* `account_object_address` from the position directly, like `liquidate`. Returns a
|
|
1373
|
+
* droppable receipt vector for PTB composition.
|
|
1374
|
+
*/
|
|
1375
|
+
function closePositionByKeeper(options) {
|
|
1376
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1377
|
+
const argumentsTypes = [
|
|
1378
|
+
null,
|
|
1379
|
+
null,
|
|
1380
|
+
null,
|
|
1381
|
+
'0x1::string::String',
|
|
1382
|
+
null,
|
|
1383
|
+
null,
|
|
1384
|
+
'u64',
|
|
1385
|
+
'u64',
|
|
1386
|
+
null,
|
|
1387
|
+
'0x2::clock::Clock'
|
|
1388
|
+
];
|
|
1389
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "marketRegistry", "ticker", "pool", "keeperRequest", "positionId", "acceptablePrice", "oracle"];
|
|
1390
|
+
return (tx) => tx.moveCall({
|
|
1391
|
+
package: packageAddress,
|
|
1392
|
+
module: 'trading',
|
|
1393
|
+
function: 'close_position_by_keeper',
|
|
1394
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1395
|
+
typeArguments: options.typeArguments
|
|
1396
|
+
});
|
|
1397
|
+
}
|
|
1398
|
+
/**
|
|
1399
|
+
* Computes the scaled size (u128, 9 decimals) for a given collateral amount,
|
|
1400
|
+
* leverage, and actual collateral price. Compatible with non-dollar-pegged
|
|
1401
|
+
* collateral. Base ticker comes from `market.symbol()`, collateral ticker from
|
|
1402
|
+
* `pool.token_ticker<LP, C>()` — callers cannot mis-price by lying about either.
|
|
1403
|
+
*/
|
|
1404
|
+
function resolveSize(options) {
|
|
1405
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1406
|
+
const argumentsTypes = [
|
|
1407
|
+
null,
|
|
1408
|
+
null,
|
|
1409
|
+
null,
|
|
1410
|
+
'u64',
|
|
1411
|
+
'u64',
|
|
1412
|
+
'0x2::clock::Clock'
|
|
1413
|
+
];
|
|
1414
|
+
const parameterNames = ["market", "pool", "oracle", "collateralAmount", "leverageBps"];
|
|
1415
|
+
return (tx) => tx.moveCall({
|
|
1416
|
+
package: packageAddress,
|
|
1417
|
+
module: 'trading',
|
|
1418
|
+
function: 'resolve_size',
|
|
1419
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1420
|
+
typeArguments: options.typeArguments
|
|
1421
|
+
});
|
|
1422
|
+
}
|
|
1423
|
+
/**
|
|
1424
|
+
* Like `resolve_size` but uses a trigger price instead of the base oracle price.
|
|
1425
|
+
* Use this to compute the `size` parameter for `place_order_request`.
|
|
1426
|
+
* `trigger_price` is a scaled Float value (the same u128 you pass to
|
|
1427
|
+
* `place_order_request`).
|
|
1428
|
+
*/
|
|
1429
|
+
function resolveOrderSize(options) {
|
|
1430
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1431
|
+
const argumentsTypes = [
|
|
1432
|
+
null,
|
|
1433
|
+
null,
|
|
1434
|
+
'u128',
|
|
1435
|
+
'u64',
|
|
1436
|
+
'u64',
|
|
1437
|
+
'0x2::clock::Clock'
|
|
1438
|
+
];
|
|
1439
|
+
const parameterNames = ["pool", "oracle", "triggerPrice", "collateralAmount", "leverageBps"];
|
|
1440
|
+
return (tx) => tx.moveCall({
|
|
1441
|
+
package: packageAddress,
|
|
1442
|
+
module: 'trading',
|
|
1443
|
+
function: 'resolve_order_size',
|
|
1444
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1445
|
+
typeArguments: options.typeArguments
|
|
1446
|
+
});
|
|
1447
|
+
}
|
|
1448
|
+
function checkOpenSlippage(options) {
|
|
1449
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1450
|
+
const argumentsTypes = [
|
|
1451
|
+
'bool',
|
|
1452
|
+
null,
|
|
1453
|
+
'u64'
|
|
1454
|
+
];
|
|
1455
|
+
const parameterNames = ["isLong", "price", "acceptablePrice"];
|
|
1456
|
+
return (tx) => tx.moveCall({
|
|
1457
|
+
package: packageAddress,
|
|
1458
|
+
module: 'trading',
|
|
1459
|
+
function: 'check_open_slippage',
|
|
1460
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1461
|
+
});
|
|
1462
|
+
}
|
|
1463
|
+
function assertOpenSlippage(options) {
|
|
1464
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1465
|
+
const argumentsTypes = [
|
|
1466
|
+
'bool',
|
|
1467
|
+
null,
|
|
1468
|
+
'u64'
|
|
1469
|
+
];
|
|
1470
|
+
const parameterNames = ["isLong", "price", "acceptablePrice"];
|
|
1471
|
+
return (tx) => tx.moveCall({
|
|
1472
|
+
package: packageAddress,
|
|
1473
|
+
module: 'trading',
|
|
1474
|
+
function: 'assert_open_slippage',
|
|
1475
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1476
|
+
});
|
|
1477
|
+
}
|
|
1478
|
+
function assertCloseSlippage(options) {
|
|
1479
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1480
|
+
const argumentsTypes = [
|
|
1481
|
+
'bool',
|
|
1482
|
+
null,
|
|
1483
|
+
'u64'
|
|
1484
|
+
];
|
|
1485
|
+
const parameterNames = ["isLong", "price", "acceptablePrice"];
|
|
1486
|
+
return (tx) => tx.moveCall({
|
|
1487
|
+
package: packageAddress,
|
|
1488
|
+
module: 'trading',
|
|
1489
|
+
function: 'assert_close_slippage',
|
|
1490
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1491
|
+
});
|
|
1492
|
+
}
|
|
1493
|
+
function calculateTotalTradingFee(options) {
|
|
1494
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1495
|
+
const argumentsTypes = [
|
|
1496
|
+
null,
|
|
1497
|
+
null,
|
|
1498
|
+
null,
|
|
1499
|
+
'bool',
|
|
1500
|
+
null
|
|
1501
|
+
];
|
|
1502
|
+
const parameterNames = ["marketConfig", "pool", "executionPrice", "orderIsLong", "orderSize"];
|
|
1503
|
+
return (tx) => tx.moveCall({
|
|
1504
|
+
package: packageAddress,
|
|
1505
|
+
module: 'trading',
|
|
1506
|
+
function: 'calculate_total_trading_fee',
|
|
1507
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1508
|
+
typeArguments: options.typeArguments
|
|
1509
|
+
});
|
|
1510
|
+
}
|
|
1511
|
+
/**
|
|
1512
|
+
* Emits a `WlpEquityChanged` event for a settlement that moves `amount` of
|
|
1513
|
+
* `collateral_token` to/from the LP pool. No-op when `amount == 0`. Centralizes
|
|
1514
|
+
* the `market.symbol()` / `with_defining_ids<LP_TOKEN>()` lookups so call sites
|
|
1515
|
+
* stay short.
|
|
1516
|
+
*/
|
|
1517
|
+
function emitLpEquity(options) {
|
|
1518
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1519
|
+
const argumentsTypes = [
|
|
1520
|
+
null,
|
|
1521
|
+
null,
|
|
1522
|
+
'u64',
|
|
1523
|
+
'bool',
|
|
1524
|
+
'0x1::string::String'
|
|
1525
|
+
];
|
|
1526
|
+
const parameterNames = ["market", "collateralToken", "amount", "isProfit", "memo"];
|
|
1527
|
+
return (tx) => tx.moveCall({
|
|
1528
|
+
package: packageAddress,
|
|
1529
|
+
module: 'trading',
|
|
1530
|
+
function: 'emit_lp_equity',
|
|
1531
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1532
|
+
typeArguments: options.typeArguments
|
|
1533
|
+
});
|
|
1534
|
+
}
|
|
1535
|
+
/**
|
|
1536
|
+
* Splits an already-collected trading-fee balance into the protocol's cut (sent to
|
|
1537
|
+
* `GlobalVault.protocol_fee_balance`) and the LP pool's cut (joined into the pool,
|
|
1538
|
+
* emitted as a `WlpEquityChanged` "fee" event). Used by every closing/liquidation
|
|
1539
|
+
* path that realizes a fee.
|
|
1540
|
+
*/
|
|
1541
|
+
function distributeTradingFee(options) {
|
|
1542
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1543
|
+
const argumentsTypes = [
|
|
1544
|
+
null,
|
|
1545
|
+
null,
|
|
1546
|
+
null,
|
|
1547
|
+
null,
|
|
1548
|
+
'u64',
|
|
1549
|
+
'0x2::object::ID',
|
|
1550
|
+
null,
|
|
1551
|
+
null
|
|
1552
|
+
];
|
|
1553
|
+
const parameterNames = ["globalConfig", "pool", "market", "feeBalance", "protocolShareBps", "marketId", "collateralToken", "collateralPrice"];
|
|
1554
|
+
return (tx) => tx.moveCall({
|
|
1555
|
+
package: packageAddress,
|
|
1556
|
+
module: 'trading',
|
|
1557
|
+
function: 'distribute_trading_fee',
|
|
1558
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1559
|
+
typeArguments: options.typeArguments
|
|
1560
|
+
});
|
|
1561
|
+
}
|
|
1562
|
+
function calculateEffectiveCollateralAmount(options) {
|
|
1563
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1564
|
+
const argumentsTypes = [
|
|
1565
|
+
'u64',
|
|
1566
|
+
'u64',
|
|
1567
|
+
'bool',
|
|
1568
|
+
'u64',
|
|
1569
|
+
'u64',
|
|
1570
|
+
'u64'
|
|
1571
|
+
];
|
|
1572
|
+
const parameterNames = ["grossCollateralAmount", "borrowFee", "fundingSign", "fundingFee", "tradingFee", "projectedTradingFee"];
|
|
1573
|
+
return (tx) => tx.moveCall({
|
|
1574
|
+
package: packageAddress,
|
|
1575
|
+
module: 'trading',
|
|
1576
|
+
function: 'calculate_effective_collateral_amount',
|
|
1577
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1578
|
+
});
|
|
1579
|
+
}
|
|
1580
|
+
function calculateLossAdjustedEffectiveCollateralAmount(options) {
|
|
1581
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1582
|
+
const argumentsTypes = [
|
|
1583
|
+
null,
|
|
1584
|
+
null,
|
|
1585
|
+
null,
|
|
1586
|
+
'u64',
|
|
1587
|
+
'u64',
|
|
1588
|
+
'bool',
|
|
1589
|
+
'u64',
|
|
1590
|
+
'u64',
|
|
1591
|
+
'u64'
|
|
1592
|
+
];
|
|
1593
|
+
const parameterNames = ["position", "currentPrice", "collateralPrice", "grossCollateralAmount", "borrowFee", "fundingSign", "fundingFee", "tradingFee", "projectedTradingFee"];
|
|
1594
|
+
return (tx) => tx.moveCall({
|
|
1595
|
+
package: packageAddress,
|
|
1596
|
+
module: 'trading',
|
|
1597
|
+
function: 'calculate_loss_adjusted_effective_collateral_amount',
|
|
1598
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1599
|
+
});
|
|
1600
|
+
}
|
|
1601
|
+
function settleLossToBalance(options) {
|
|
1602
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1603
|
+
const argumentsTypes = [
|
|
1604
|
+
null,
|
|
1605
|
+
null,
|
|
1606
|
+
null,
|
|
1607
|
+
null,
|
|
1608
|
+
null,
|
|
1609
|
+
'u64',
|
|
1610
|
+
null,
|
|
1611
|
+
'u128'
|
|
1612
|
+
];
|
|
1613
|
+
const parameterNames = ["globalConfig", "pool", "market", "collateral", "collateralToken", "lossAmount", "collateralPrice", "deficit"];
|
|
1614
|
+
return (tx) => tx.moveCall({
|
|
1615
|
+
package: packageAddress,
|
|
1616
|
+
module: 'trading',
|
|
1617
|
+
function: 'settle_loss_to_balance',
|
|
1618
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1619
|
+
typeArguments: options.typeArguments
|
|
1620
|
+
});
|
|
1621
|
+
}
|
|
1622
|
+
function settleLossToPosition(options) {
|
|
1623
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1624
|
+
const argumentsTypes = [
|
|
1625
|
+
null,
|
|
1626
|
+
null,
|
|
1627
|
+
null,
|
|
1628
|
+
null,
|
|
1629
|
+
null,
|
|
1630
|
+
'u64',
|
|
1631
|
+
null,
|
|
1632
|
+
'u128'
|
|
1633
|
+
];
|
|
1634
|
+
const parameterNames = ["globalConfig", "pool", "market", "position", "collateralToken", "lossAmount", "collateralPrice", "deficit"];
|
|
1635
|
+
return (tx) => tx.moveCall({
|
|
1636
|
+
package: packageAddress,
|
|
1637
|
+
module: 'trading',
|
|
1638
|
+
function: 'settle_loss_to_position',
|
|
1639
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1640
|
+
typeArguments: options.typeArguments
|
|
1641
|
+
});
|
|
1642
|
+
}
|
|
1643
|
+
function settleFeesToBalance(options) {
|
|
1644
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1645
|
+
const argumentsTypes = [
|
|
1646
|
+
null,
|
|
1647
|
+
null,
|
|
1648
|
+
null,
|
|
1649
|
+
null,
|
|
1650
|
+
'u64',
|
|
1651
|
+
'0x2::object::ID',
|
|
1652
|
+
null,
|
|
1653
|
+
null,
|
|
1654
|
+
'u64',
|
|
1655
|
+
'u128'
|
|
1656
|
+
];
|
|
1657
|
+
const parameterNames = ["globalConfig", "pool", "market", "collateral", "protocolShareBps", "marketId", "collateralToken", "collateralPrice", "feeAmount", "deficit"];
|
|
1658
|
+
return (tx) => tx.moveCall({
|
|
1659
|
+
package: packageAddress,
|
|
1660
|
+
module: 'trading',
|
|
1661
|
+
function: 'settle_fees_to_balance',
|
|
1662
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1663
|
+
typeArguments: options.typeArguments
|
|
1664
|
+
});
|
|
1665
|
+
}
|
|
1666
|
+
function settleFeesToPosition(options) {
|
|
1667
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1668
|
+
const argumentsTypes = [
|
|
1669
|
+
null,
|
|
1670
|
+
null,
|
|
1671
|
+
null,
|
|
1672
|
+
null,
|
|
1673
|
+
'u64',
|
|
1674
|
+
'0x2::object::ID',
|
|
1675
|
+
null,
|
|
1676
|
+
null,
|
|
1677
|
+
'u64',
|
|
1678
|
+
'u128'
|
|
1679
|
+
];
|
|
1680
|
+
const parameterNames = ["globalConfig", "pool", "market", "position", "protocolShareBps", "marketId", "collateralToken", "collateralPrice", "feeAmount", "deficit"];
|
|
1681
|
+
return (tx) => tx.moveCall({
|
|
1682
|
+
package: packageAddress,
|
|
1683
|
+
module: 'trading',
|
|
1684
|
+
function: 'settle_fees_to_position',
|
|
1685
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1686
|
+
typeArguments: options.typeArguments
|
|
1687
|
+
});
|
|
1688
|
+
}
|
|
1689
|
+
function settleFundingToBalance(options) {
|
|
1690
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1691
|
+
const argumentsTypes = [
|
|
1692
|
+
null,
|
|
1693
|
+
null,
|
|
1694
|
+
null,
|
|
1695
|
+
'bool',
|
|
1696
|
+
'u64',
|
|
1697
|
+
null,
|
|
1698
|
+
'0x1::string::String',
|
|
1699
|
+
'u128'
|
|
1700
|
+
];
|
|
1701
|
+
const parameterNames = ["globalConfig", "pool", "collateral", "fundingSign", "fundingFee", "collateralPrice", "marketTicker", "deficit"];
|
|
1702
|
+
return (tx) => tx.moveCall({
|
|
1703
|
+
package: packageAddress,
|
|
1704
|
+
module: 'trading',
|
|
1705
|
+
function: 'settle_funding_to_balance',
|
|
1706
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1707
|
+
typeArguments: options.typeArguments
|
|
1708
|
+
});
|
|
1709
|
+
}
|
|
1710
|
+
function settleFundingToPosition(options) {
|
|
1711
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1712
|
+
const argumentsTypes = [
|
|
1713
|
+
null,
|
|
1714
|
+
null,
|
|
1715
|
+
null,
|
|
1716
|
+
'bool',
|
|
1717
|
+
'u64',
|
|
1718
|
+
null,
|
|
1719
|
+
'0x1::string::String',
|
|
1720
|
+
'u128'
|
|
1721
|
+
];
|
|
1722
|
+
const parameterNames = ["globalConfig", "pool", "position", "fundingSign", "fundingFee", "collateralPrice", "marketTicker", "deficit"];
|
|
1723
|
+
return (tx) => tx.moveCall({
|
|
1724
|
+
package: packageAddress,
|
|
1725
|
+
module: 'trading',
|
|
1726
|
+
function: 'settle_funding_to_position',
|
|
1727
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1728
|
+
typeArguments: options.typeArguments
|
|
1729
|
+
});
|
|
1730
|
+
}
|
|
1731
|
+
function calculateImpactFee(options) {
|
|
1732
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1733
|
+
const argumentsTypes = [
|
|
1734
|
+
null,
|
|
1735
|
+
null,
|
|
1736
|
+
null,
|
|
1737
|
+
'bool',
|
|
1738
|
+
null
|
|
1739
|
+
];
|
|
1740
|
+
const parameterNames = ["marketConfig", "pool", "executionPrice", "orderIsLong", "orderSize"];
|
|
1741
|
+
return (tx) => tx.moveCall({
|
|
1742
|
+
package: packageAddress,
|
|
1743
|
+
module: 'trading',
|
|
1744
|
+
function: 'calculate_impact_fee',
|
|
1745
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1746
|
+
typeArguments: options.typeArguments
|
|
1747
|
+
});
|
|
1748
|
+
}
|
|
1749
|
+
function impactFeeCostUsd(options) {
|
|
1750
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1751
|
+
const argumentsTypes = [
|
|
1752
|
+
null,
|
|
1753
|
+
null,
|
|
1754
|
+
null,
|
|
1755
|
+
'u64',
|
|
1756
|
+
'u64'
|
|
1757
|
+
];
|
|
1758
|
+
const parameterNames = ["maxImpactFee", "allocatedExposureUsd", "exposureUsd", "impactFeeCurvature", "impactFeeScale"];
|
|
1759
|
+
return (tx) => tx.moveCall({
|
|
1760
|
+
package: packageAddress,
|
|
1761
|
+
module: 'trading',
|
|
1762
|
+
function: 'impact_fee_cost_usd',
|
|
1763
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1764
|
+
});
|
|
1765
|
+
}
|
|
1766
|
+
function calculatePositionLeverageBps(options) {
|
|
1767
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1768
|
+
const argumentsTypes = [
|
|
1769
|
+
null,
|
|
1770
|
+
'u64',
|
|
1771
|
+
'u8',
|
|
1772
|
+
null,
|
|
1773
|
+
null
|
|
1774
|
+
];
|
|
1775
|
+
const parameterNames = ["totalSize", "totalCollateralAmount", "collateralDecimal", "executionPrice", "collateralPrice"];
|
|
1776
|
+
return (tx) => tx.moveCall({
|
|
1777
|
+
package: packageAddress,
|
|
1778
|
+
module: 'trading',
|
|
1779
|
+
function: 'calculate_position_leverage_bps',
|
|
1780
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1781
|
+
});
|
|
1782
|
+
}
|
|
1783
|
+
function hasMinPositionCollateralValue(options) {
|
|
1784
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1785
|
+
const argumentsTypes = [
|
|
1786
|
+
'u64',
|
|
1787
|
+
'u64',
|
|
1788
|
+
'u8',
|
|
1789
|
+
null
|
|
1790
|
+
];
|
|
1791
|
+
const parameterNames = ["minCollateralValue", "collateralAmount", "collateralDecimal", "collateralPrice"];
|
|
1792
|
+
return (tx) => tx.moveCall({
|
|
1793
|
+
package: packageAddress,
|
|
1794
|
+
module: 'trading',
|
|
1795
|
+
function: 'has_min_position_collateral_value',
|
|
1796
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1797
|
+
});
|
|
1798
|
+
}
|
|
1799
|
+
function assertMinPositionCollateralValue(options) {
|
|
1800
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1801
|
+
const argumentsTypes = [
|
|
1802
|
+
'u64',
|
|
1803
|
+
'u64',
|
|
1804
|
+
'u8',
|
|
1805
|
+
null
|
|
1806
|
+
];
|
|
1807
|
+
const parameterNames = ["minCollateralValue", "collateralAmount", "collateralDecimal", "collateralPrice"];
|
|
1808
|
+
return (tx) => tx.moveCall({
|
|
1809
|
+
package: packageAddress,
|
|
1810
|
+
module: 'trading',
|
|
1811
|
+
function: 'assert_min_position_collateral_value',
|
|
1812
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1813
|
+
});
|
|
1814
|
+
}
|
|
1815
|
+
function proportionalAmount(options) {
|
|
1816
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1817
|
+
const argumentsTypes = [
|
|
1818
|
+
'u64',
|
|
1819
|
+
null,
|
|
1820
|
+
null
|
|
1821
|
+
];
|
|
1822
|
+
const parameterNames = ["total", "partial", "base"];
|
|
1823
|
+
return (tx) => tx.moveCall({
|
|
1824
|
+
package: packageAddress,
|
|
1825
|
+
module: 'trading',
|
|
1826
|
+
function: 'proportional_amount',
|
|
1827
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1828
|
+
});
|
|
1829
|
+
}
|
|
1830
|
+
function debitCollateralAmount(options) {
|
|
1831
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1832
|
+
const argumentsTypes = [
|
|
1833
|
+
'u64',
|
|
1834
|
+
'u128',
|
|
1835
|
+
'u64'
|
|
1836
|
+
];
|
|
1837
|
+
const parameterNames = ["remaining", "deficit", "amount"];
|
|
1838
|
+
return (tx) => tx.moveCall({
|
|
1839
|
+
package: packageAddress,
|
|
1840
|
+
module: 'trading',
|
|
1841
|
+
function: 'debit_collateral_amount',
|
|
1842
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1843
|
+
});
|
|
1844
|
+
}
|
|
1845
|
+
function creditCollateralAmount(options) {
|
|
1846
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1847
|
+
const argumentsTypes = [
|
|
1848
|
+
'u64',
|
|
1849
|
+
'u128',
|
|
1850
|
+
'u64'
|
|
1851
|
+
];
|
|
1852
|
+
const parameterNames = ["remaining", "deficit", "amount"];
|
|
1853
|
+
return (tx) => tx.moveCall({
|
|
1854
|
+
package: packageAddress,
|
|
1855
|
+
module: 'trading',
|
|
1856
|
+
function: 'credit_collateral_amount',
|
|
1857
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1858
|
+
});
|
|
1859
|
+
}
|
|
1860
|
+
function calculateRemainingCollateralAfterPartialReduce(options) {
|
|
1861
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1862
|
+
const argumentsTypes = [
|
|
1863
|
+
null,
|
|
1864
|
+
null,
|
|
1865
|
+
'u64',
|
|
1866
|
+
null,
|
|
1867
|
+
null,
|
|
1868
|
+
'u64'
|
|
1869
|
+
];
|
|
1870
|
+
const parameterNames = ["position", "reduceSize", "closeFee", "currentPrice", "collateralPrice", "addedCollateralAmount"];
|
|
1871
|
+
return (tx) => tx.moveCall({
|
|
1872
|
+
package: packageAddress,
|
|
1873
|
+
module: 'trading',
|
|
1874
|
+
function: 'calculate_remaining_collateral_after_partial_reduce',
|
|
1875
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1876
|
+
});
|
|
1877
|
+
}
|
|
1878
|
+
/**
|
|
1879
|
+
* Non-aborting growth check used by keeper order matching. Invalid standalone
|
|
1880
|
+
* orders are rotated behind valid orders at the same trigger price.
|
|
1881
|
+
*/
|
|
1882
|
+
function canPositionGrow(options) {
|
|
1883
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1884
|
+
const argumentsTypes = [
|
|
1885
|
+
null,
|
|
1886
|
+
null,
|
|
1887
|
+
null,
|
|
1888
|
+
'bool',
|
|
1889
|
+
null,
|
|
1890
|
+
null,
|
|
1891
|
+
'u64',
|
|
1892
|
+
'u8',
|
|
1893
|
+
null,
|
|
1894
|
+
null,
|
|
1895
|
+
null
|
|
1896
|
+
];
|
|
1897
|
+
const parameterNames = ["globalConfig", "marketConfig", "pool", "isLong", "currentSize", "addedSize", "effectiveCollateralAmount", "collateralDecimal", "collateralToken", "executionPrice", "collateralPrice"];
|
|
1898
|
+
return (tx) => tx.moveCall({
|
|
1899
|
+
package: packageAddress,
|
|
1900
|
+
module: 'trading',
|
|
1901
|
+
function: 'can_position_grow',
|
|
1902
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1903
|
+
typeArguments: options.typeArguments
|
|
1904
|
+
});
|
|
1905
|
+
}
|
|
1906
|
+
function validatePositionGrowth(options) {
|
|
1907
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1908
|
+
const argumentsTypes = [
|
|
1909
|
+
null,
|
|
1910
|
+
null,
|
|
1911
|
+
null,
|
|
1912
|
+
'bool',
|
|
1913
|
+
null,
|
|
1914
|
+
null,
|
|
1915
|
+
'u64',
|
|
1916
|
+
'u8',
|
|
1917
|
+
null,
|
|
1918
|
+
null,
|
|
1919
|
+
null
|
|
1920
|
+
];
|
|
1921
|
+
const parameterNames = ["globalConfig", "marketConfig", "pool", "isLong", "currentSize", "addedSize", "effectiveCollateralAmount", "collateralDecimal", "collateralToken", "executionPrice", "collateralPrice"];
|
|
1922
|
+
return (tx) => tx.moveCall({
|
|
1923
|
+
package: packageAddress,
|
|
1924
|
+
module: 'trading',
|
|
1925
|
+
function: 'validate_position_growth',
|
|
1926
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1927
|
+
typeArguments: options.typeArguments
|
|
1928
|
+
});
|
|
1929
|
+
}
|
|
1930
|
+
function weightedAveragePrice(options) {
|
|
1931
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1932
|
+
const argumentsTypes = [
|
|
1933
|
+
null,
|
|
1934
|
+
null,
|
|
1935
|
+
null,
|
|
1936
|
+
null
|
|
1937
|
+
];
|
|
1938
|
+
const parameterNames = ["currentSize", "currentAveragePrice", "addSize", "fillPrice"];
|
|
1939
|
+
return (tx) => tx.moveCall({
|
|
1940
|
+
package: packageAddress,
|
|
1941
|
+
module: 'trading',
|
|
1942
|
+
function: 'weighted_average_price',
|
|
1943
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1944
|
+
});
|
|
1945
|
+
}
|
|
1946
|
+
function normalizeTriggerPrice(options) {
|
|
1947
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1948
|
+
const argumentsTypes = [
|
|
1949
|
+
null,
|
|
1950
|
+
null
|
|
1951
|
+
];
|
|
1952
|
+
const parameterNames = ["triggerPrice", "orderPriceTick"];
|
|
1953
|
+
return (tx) => tx.moveCall({
|
|
1954
|
+
package: packageAddress,
|
|
1955
|
+
module: 'trading',
|
|
1956
|
+
function: 'normalize_trigger_price',
|
|
1957
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1958
|
+
});
|
|
1959
|
+
}
|
|
1960
|
+
/** View: whether `main_order_id` has reserved pre-orders pending in `market`. */
|
|
1961
|
+
function hasPendingPreOrders(options) {
|
|
1962
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1963
|
+
const argumentsTypes = [
|
|
1964
|
+
null,
|
|
1965
|
+
'u64'
|
|
1966
|
+
];
|
|
1967
|
+
const parameterNames = ["market", "mainOrderId"];
|
|
1968
|
+
return (tx) => tx.moveCall({
|
|
1969
|
+
package: packageAddress,
|
|
1970
|
+
module: 'trading',
|
|
1971
|
+
function: 'has_pending_pre_orders',
|
|
1972
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1973
|
+
typeArguments: options.typeArguments
|
|
1974
|
+
});
|
|
1975
|
+
}
|
|
1976
|
+
/**
|
|
1977
|
+
* View: how many pre-orders are reserved against `main_order_id`. `0` if no entry
|
|
1978
|
+
* exists.
|
|
1979
|
+
*/
|
|
1980
|
+
function pendingPreOrdersCount(options) {
|
|
1981
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
1982
|
+
const argumentsTypes = [
|
|
1983
|
+
null,
|
|
1984
|
+
'u64'
|
|
1985
|
+
];
|
|
1986
|
+
const parameterNames = ["market", "mainOrderId"];
|
|
1987
|
+
return (tx) => tx.moveCall({
|
|
1988
|
+
package: packageAddress,
|
|
1989
|
+
module: 'trading',
|
|
1990
|
+
function: 'pending_pre_orders_count',
|
|
1991
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
1992
|
+
typeArguments: options.typeArguments
|
|
1993
|
+
});
|
|
1994
|
+
}
|
|
1995
|
+
/**
|
|
1996
|
+
* Mints fresh order ids for every `PlaceOrderArgument` in `pre_orders`, builds a
|
|
1997
|
+
* real `Order` per entry (reduce-only, zero-collateral,
|
|
1998
|
+
* `linked_position_id = None`), stashes each one in `pending_pre_orders` under its
|
|
1999
|
+
* own id, and records the id list in `pending_pre_order_index` under
|
|
2000
|
+
* `main_order_id` — appending to any existing entry so this helper also works for
|
|
2001
|
+
* the per-leg `add_pre_order` path. Emits one `PreOrderCreated` per reserved
|
|
2002
|
+
* pre-order. No-op when `pre_orders` is empty.
|
|
2003
|
+
*/
|
|
2004
|
+
function reservePreOrders(options) {
|
|
2005
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2006
|
+
const argumentsTypes = [
|
|
2007
|
+
null,
|
|
2008
|
+
null,
|
|
2009
|
+
'u64',
|
|
2010
|
+
'address',
|
|
2011
|
+
'0x2::object::ID',
|
|
2012
|
+
'u8',
|
|
2013
|
+
'vector<null>',
|
|
2014
|
+
'0x2::clock::Clock'
|
|
2015
|
+
];
|
|
2016
|
+
const parameterNames = ["globalConfig", "market", "mainOrderId", "accountObjectAddress", "marketId", "collateralDecimal", "preOrders"];
|
|
2017
|
+
return (tx) => tx.moveCall({
|
|
2018
|
+
package: packageAddress,
|
|
2019
|
+
module: 'trading',
|
|
2020
|
+
function: 'reserve_pre_orders',
|
|
2021
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2022
|
+
typeArguments: options.typeArguments
|
|
2023
|
+
});
|
|
2024
|
+
}
|
|
2025
|
+
/**
|
|
2026
|
+
* Drops every pre-order reserved against `main_order_id` (if any), destroying each
|
|
2027
|
+
* via `position::remove_order` (which splits the zero collateral back into the
|
|
2028
|
+
* vault and deletes the order UID) and emitting one `PreOrderCancelled` per
|
|
2029
|
+
* dropped pre-order.
|
|
2030
|
+
*/
|
|
2031
|
+
function dropPendingPreOrdersIfExists(options) {
|
|
2032
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2033
|
+
const argumentsTypes = [
|
|
2034
|
+
null,
|
|
2035
|
+
null,
|
|
2036
|
+
'0x2::object::ID',
|
|
2037
|
+
'address',
|
|
2038
|
+
'u64'
|
|
2039
|
+
];
|
|
2040
|
+
const parameterNames = ["globalConfig", "market", "marketId", "accountObjectAddress", "mainOrderId"];
|
|
2041
|
+
return (tx) => tx.moveCall({
|
|
2042
|
+
package: packageAddress,
|
|
2043
|
+
module: 'trading',
|
|
2044
|
+
function: 'drop_pending_pre_orders_if_exists',
|
|
2045
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2046
|
+
typeArguments: options.typeArguments
|
|
2047
|
+
});
|
|
2048
|
+
}
|
|
2049
|
+
/**
|
|
2050
|
+
* Promotes reserved pre-orders to real reduce-only linked orders on the freshly
|
|
2051
|
+
* opened position. Called from the standalone-fill branch of `match_orders` right
|
|
2052
|
+
* before the new position is pushed to the market. Each reserved `Order` was
|
|
2053
|
+
* created at place time with `linked_position_id = None`; here we stamp in the new
|
|
2054
|
+
* `position_id` and move the order onto the live book.
|
|
2055
|
+
*/
|
|
2056
|
+
function activatePendingPreOrders(options) {
|
|
2057
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2058
|
+
const argumentsTypes = [
|
|
2059
|
+
null,
|
|
2060
|
+
null,
|
|
2061
|
+
null,
|
|
2062
|
+
'u64',
|
|
2063
|
+
'u64',
|
|
2064
|
+
'address',
|
|
2065
|
+
'0x2::object::ID'
|
|
2066
|
+
];
|
|
2067
|
+
const parameterNames = ["wxaRegistry", "market", "pos", "positionId", "mainOrderId", "accountObjectAddress", "marketId"];
|
|
2068
|
+
return (tx) => tx.moveCall({
|
|
2069
|
+
package: packageAddress,
|
|
2070
|
+
module: 'trading',
|
|
2071
|
+
function: 'activate_pending_pre_orders',
|
|
2072
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2073
|
+
typeArguments: options.typeArguments
|
|
2074
|
+
});
|
|
2075
|
+
}
|
|
2076
|
+
function assertPositionOwner(options) {
|
|
2077
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2078
|
+
const argumentsTypes = [
|
|
2079
|
+
null,
|
|
2080
|
+
'address'
|
|
2081
|
+
];
|
|
2082
|
+
const parameterNames = ["position", "accountObjectAddress"];
|
|
2083
|
+
return (tx) => tx.moveCall({
|
|
2084
|
+
package: packageAddress,
|
|
2085
|
+
module: 'trading',
|
|
2086
|
+
function: 'assert_position_owner',
|
|
2087
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2088
|
+
});
|
|
2089
|
+
}
|
|
2090
|
+
function assertPositionCollateralType(options) {
|
|
2091
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2092
|
+
const argumentsTypes = [
|
|
2093
|
+
null
|
|
2094
|
+
];
|
|
2095
|
+
const parameterNames = ["position"];
|
|
2096
|
+
return (tx) => tx.moveCall({
|
|
2097
|
+
package: packageAddress,
|
|
2098
|
+
module: 'trading',
|
|
2099
|
+
function: 'assert_position_collateral_type',
|
|
2100
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2101
|
+
typeArguments: options.typeArguments
|
|
2102
|
+
});
|
|
2103
|
+
}
|
|
2104
|
+
function borrowOwnedPosition(options) {
|
|
2105
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2106
|
+
const argumentsTypes = [
|
|
2107
|
+
null,
|
|
2108
|
+
'u64',
|
|
2109
|
+
'address'
|
|
2110
|
+
];
|
|
2111
|
+
const parameterNames = ["market", "positionId", "accountObjectAddress"];
|
|
2112
|
+
return (tx) => tx.moveCall({
|
|
2113
|
+
package: packageAddress,
|
|
2114
|
+
module: 'trading',
|
|
2115
|
+
function: 'borrow_owned_position',
|
|
2116
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2117
|
+
typeArguments: options.typeArguments
|
|
2118
|
+
});
|
|
2119
|
+
}
|
|
2120
|
+
function borrowOwnedPositionMut(options) {
|
|
2121
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2122
|
+
const argumentsTypes = [
|
|
2123
|
+
null,
|
|
2124
|
+
'u64',
|
|
2125
|
+
'address'
|
|
2126
|
+
];
|
|
2127
|
+
const parameterNames = ["market", "positionId", "accountObjectAddress"];
|
|
2128
|
+
return (tx) => tx.moveCall({
|
|
2129
|
+
package: packageAddress,
|
|
2130
|
+
module: 'trading',
|
|
2131
|
+
function: 'borrow_owned_position_mut',
|
|
2132
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2133
|
+
typeArguments: options.typeArguments
|
|
2134
|
+
});
|
|
2135
|
+
}
|
|
2136
|
+
function takeOwnedPosition(options) {
|
|
2137
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2138
|
+
const argumentsTypes = [
|
|
2139
|
+
null,
|
|
2140
|
+
'u64',
|
|
2141
|
+
'address',
|
|
2142
|
+
'u64',
|
|
2143
|
+
'bool'
|
|
2144
|
+
];
|
|
2145
|
+
const parameterNames = ["market", "positionId", "accountObjectAddress", "now", "requireCooldown"];
|
|
2146
|
+
return (tx) => tx.moveCall({
|
|
2147
|
+
package: packageAddress,
|
|
2148
|
+
module: 'trading',
|
|
2149
|
+
function: 'take_owned_position',
|
|
2150
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2151
|
+
typeArguments: options.typeArguments
|
|
2152
|
+
});
|
|
2153
|
+
}
|
|
2154
|
+
function findOrderTypeTag(options) {
|
|
2155
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2156
|
+
const argumentsTypes = [
|
|
2157
|
+
null,
|
|
2158
|
+
'u128',
|
|
2159
|
+
'u64'
|
|
2160
|
+
];
|
|
2161
|
+
const parameterNames = ["market", "triggerPriceKey", "orderId"];
|
|
2162
|
+
return (tx) => tx.moveCall({
|
|
2163
|
+
package: packageAddress,
|
|
2164
|
+
module: 'trading',
|
|
2165
|
+
function: 'find_order_type_tag',
|
|
2166
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2167
|
+
typeArguments: options.typeArguments
|
|
2168
|
+
});
|
|
2169
|
+
}
|
|
2170
|
+
function findCancelOrderLocation(options) {
|
|
2171
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2172
|
+
const argumentsTypes = [
|
|
2173
|
+
null,
|
|
2174
|
+
'u8',
|
|
2175
|
+
'u128',
|
|
2176
|
+
'u64'
|
|
2177
|
+
];
|
|
2178
|
+
const parameterNames = ["market", "orderTypeTag", "triggerPrice", "orderId"];
|
|
2179
|
+
return (tx) => tx.moveCall({
|
|
2180
|
+
package: packageAddress,
|
|
2181
|
+
module: 'trading',
|
|
2182
|
+
function: 'find_cancel_order_location',
|
|
2183
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2184
|
+
typeArguments: options.typeArguments
|
|
2185
|
+
});
|
|
2186
|
+
}
|
|
2187
|
+
function findOrderLocationById(options) {
|
|
2188
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2189
|
+
const argumentsTypes = [
|
|
2190
|
+
null,
|
|
2191
|
+
'u8',
|
|
2192
|
+
'u64'
|
|
2193
|
+
];
|
|
2194
|
+
const parameterNames = ["market", "orderTypeTag", "orderId"];
|
|
2195
|
+
return (tx) => tx.moveCall({
|
|
2196
|
+
package: packageAddress,
|
|
2197
|
+
module: 'trading',
|
|
2198
|
+
function: 'find_order_location_by_id',
|
|
2199
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2200
|
+
typeArguments: options.typeArguments
|
|
2201
|
+
});
|
|
2202
|
+
}
|
|
2203
|
+
function findOrderPriceKeyInBook(options) {
|
|
2204
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2205
|
+
const argumentsTypes = [
|
|
2206
|
+
null,
|
|
2207
|
+
'u64'
|
|
2208
|
+
];
|
|
2209
|
+
const parameterNames = ["book", "orderId"];
|
|
2210
|
+
return (tx) => tx.moveCall({
|
|
2211
|
+
package: packageAddress,
|
|
2212
|
+
module: 'trading',
|
|
2213
|
+
function: 'find_order_price_key_in_book',
|
|
2214
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2215
|
+
});
|
|
2216
|
+
}
|
|
2217
|
+
function levelContainsOrder(options) {
|
|
2218
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2219
|
+
const argumentsTypes = [
|
|
2220
|
+
null,
|
|
2221
|
+
'u64'
|
|
2222
|
+
];
|
|
2223
|
+
const parameterNames = ["level", "orderId"];
|
|
2224
|
+
return (tx) => tx.moveCall({
|
|
2225
|
+
package: packageAddress,
|
|
2226
|
+
module: 'trading',
|
|
2227
|
+
function: 'level_contains_order',
|
|
2228
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2229
|
+
});
|
|
2230
|
+
}
|
|
2231
|
+
function hasOrderInBook(options) {
|
|
2232
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2233
|
+
const argumentsTypes = [
|
|
2234
|
+
null,
|
|
2235
|
+
'u128',
|
|
2236
|
+
'u64'
|
|
2237
|
+
];
|
|
2238
|
+
const parameterNames = ["book", "priceKey", "orderId"];
|
|
2239
|
+
return (tx) => tx.moveCall({
|
|
2240
|
+
package: packageAddress,
|
|
2241
|
+
module: 'trading',
|
|
2242
|
+
function: 'has_order_in_book',
|
|
2243
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2244
|
+
});
|
|
2245
|
+
}
|
|
2246
|
+
function takeLinkedOrderAtKey(options) {
|
|
2247
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2248
|
+
const argumentsTypes = [
|
|
2249
|
+
null,
|
|
2250
|
+
'u128',
|
|
2251
|
+
'u64'
|
|
2252
|
+
];
|
|
2253
|
+
const parameterNames = ["market", "triggerPriceKey", "orderId"];
|
|
2254
|
+
return (tx) => tx.moveCall({
|
|
2255
|
+
package: packageAddress,
|
|
2256
|
+
module: 'trading',
|
|
2257
|
+
function: 'take_linked_order_at_key',
|
|
2258
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2259
|
+
typeArguments: options.typeArguments
|
|
2260
|
+
});
|
|
2261
|
+
}
|
|
2262
|
+
function cancelLinkedOrdersToBalance(options) {
|
|
2263
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2264
|
+
const argumentsTypes = [
|
|
2265
|
+
null,
|
|
2266
|
+
null,
|
|
2267
|
+
null,
|
|
2268
|
+
'0x2::object::ID',
|
|
2269
|
+
'vector<u64>',
|
|
2270
|
+
'vector<u128>',
|
|
2271
|
+
'u8'
|
|
2272
|
+
];
|
|
2273
|
+
const parameterNames = ["globalConfig", "wxaRegistry", "market", "accountId", "linkedOrderIds", "linkedOrderPriceKeys", "memoCode"];
|
|
2274
|
+
return (tx) => tx.moveCall({
|
|
2275
|
+
package: packageAddress,
|
|
2276
|
+
module: 'trading',
|
|
2277
|
+
function: 'cancel_linked_orders_to_balance',
|
|
2278
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2279
|
+
typeArguments: options.typeArguments
|
|
2280
|
+
});
|
|
2281
|
+
}
|
|
2282
|
+
function borrowMutOrderBook(options) {
|
|
2283
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2284
|
+
const argumentsTypes = [
|
|
2285
|
+
null,
|
|
2286
|
+
'u8'
|
|
2287
|
+
];
|
|
2288
|
+
const parameterNames = ["market", "tag"];
|
|
2289
|
+
return (tx) => tx.moveCall({
|
|
2290
|
+
package: packageAddress,
|
|
2291
|
+
module: 'trading',
|
|
2292
|
+
function: 'borrow_mut_order_book',
|
|
2293
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2294
|
+
typeArguments: options.typeArguments
|
|
2295
|
+
});
|
|
2296
|
+
}
|
|
2297
|
+
function takeOrderDirect(options) {
|
|
2298
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2299
|
+
const argumentsTypes = [
|
|
2300
|
+
null,
|
|
2301
|
+
'u128',
|
|
2302
|
+
'u64',
|
|
2303
|
+
'address',
|
|
2304
|
+
'u8'
|
|
2305
|
+
];
|
|
2306
|
+
const parameterNames = ["market", "triggerPriceKey", "orderId", "user", "orderTypeTag"];
|
|
2307
|
+
return (tx) => tx.moveCall({
|
|
2308
|
+
package: packageAddress,
|
|
2309
|
+
module: 'trading',
|
|
2310
|
+
function: 'take_order_direct',
|
|
2311
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2312
|
+
typeArguments: options.typeArguments
|
|
2313
|
+
});
|
|
2314
|
+
}
|
|
2315
|
+
/**
|
|
2316
|
+
* Returns `balance` to the user's wxa stored balance under the `WaterXPerp`
|
|
2317
|
+
* witness. `account_obj_addr` is the wxa account's UID address (i.e.
|
|
2318
|
+
* `account_id.to_address()`), so `.to_id()` recovers the account_id. Zero balances
|
|
2319
|
+
* are silently destroyed (no event).
|
|
2320
|
+
*/
|
|
2321
|
+
function returnToUser(options) {
|
|
2322
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2323
|
+
const argumentsTypes = [
|
|
2324
|
+
null,
|
|
2325
|
+
null,
|
|
2326
|
+
'address'
|
|
2327
|
+
];
|
|
2328
|
+
const parameterNames = ["wxaRegistry", "balance", "accountObjAddr"];
|
|
2329
|
+
return (tx) => tx.moveCall({
|
|
2330
|
+
package: packageAddress,
|
|
2331
|
+
module: 'trading',
|
|
2332
|
+
function: 'return_to_user',
|
|
2333
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2334
|
+
typeArguments: options.typeArguments
|
|
2335
|
+
});
|
|
2336
|
+
}
|
|
2337
|
+
/** Returns the object ID of this Market (trading vault). */
|
|
2338
|
+
function marketId(options) {
|
|
2339
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2340
|
+
const argumentsTypes = [
|
|
2341
|
+
null
|
|
2342
|
+
];
|
|
2343
|
+
const parameterNames = ["market"];
|
|
2344
|
+
return (tx) => tx.moveCall({
|
|
2345
|
+
package: packageAddress,
|
|
2346
|
+
module: 'trading',
|
|
2347
|
+
function: 'market_id',
|
|
2348
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2349
|
+
typeArguments: options.typeArguments
|
|
2350
|
+
});
|
|
2351
|
+
}
|
|
2352
|
+
/** Borrows a position by ID. */
|
|
2353
|
+
function borrowPosition(options) {
|
|
2354
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2355
|
+
const argumentsTypes = [
|
|
2356
|
+
null,
|
|
2357
|
+
'u64'
|
|
2358
|
+
];
|
|
2359
|
+
const parameterNames = ["market", "positionId"];
|
|
2360
|
+
return (tx) => tx.moveCall({
|
|
2361
|
+
package: packageAddress,
|
|
2362
|
+
module: 'trading',
|
|
2363
|
+
function: 'borrow_position',
|
|
2364
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2365
|
+
typeArguments: options.typeArguments
|
|
2366
|
+
});
|
|
2367
|
+
}
|
|
2368
|
+
/** Checks if a position exists. */
|
|
2369
|
+
function hasPosition(options) {
|
|
2370
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2371
|
+
const argumentsTypes = [
|
|
2372
|
+
null,
|
|
2373
|
+
'u64'
|
|
2374
|
+
];
|
|
2375
|
+
const parameterNames = ["market", "positionId"];
|
|
2376
|
+
return (tx) => tx.moveCall({
|
|
2377
|
+
package: packageAddress,
|
|
2378
|
+
module: 'trading',
|
|
2379
|
+
function: 'has_position',
|
|
2380
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2381
|
+
typeArguments: options.typeArguments
|
|
2382
|
+
});
|
|
2383
|
+
}
|
|
2384
|
+
/** Borrows a single order by type, price key, and order id. */
|
|
2385
|
+
function borrowOrder(options) {
|
|
2386
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2387
|
+
const argumentsTypes = [
|
|
2388
|
+
null,
|
|
2389
|
+
'u8',
|
|
2390
|
+
'u128',
|
|
2391
|
+
'u64'
|
|
2392
|
+
];
|
|
2393
|
+
const parameterNames = ["market", "orderTypeTag", "triggerPriceKey", "orderId"];
|
|
2394
|
+
return (tx) => tx.moveCall({
|
|
2395
|
+
package: packageAddress,
|
|
2396
|
+
module: 'trading',
|
|
2397
|
+
function: 'borrow_order',
|
|
2398
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2399
|
+
typeArguments: options.typeArguments
|
|
2400
|
+
});
|
|
2401
|
+
}
|
|
2402
|
+
/** Borrows the positions KeyedBigVector (for paginated iteration). */
|
|
2403
|
+
function borrowPositions(options) {
|
|
2404
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2405
|
+
const argumentsTypes = [
|
|
2406
|
+
null
|
|
2407
|
+
];
|
|
2408
|
+
const parameterNames = ["market"];
|
|
2409
|
+
return (tx) => tx.moveCall({
|
|
2410
|
+
package: packageAddress,
|
|
2411
|
+
module: 'trading',
|
|
2412
|
+
function: 'borrow_positions',
|
|
2413
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2414
|
+
typeArguments: options.typeArguments
|
|
2415
|
+
});
|
|
2416
|
+
}
|
|
2417
|
+
/** Borrows an order book by type tag (0-3), read-only. */
|
|
2418
|
+
function borrowOrderBook(options) {
|
|
2419
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2420
|
+
const argumentsTypes = [
|
|
2421
|
+
null,
|
|
2422
|
+
'u8'
|
|
2423
|
+
];
|
|
2424
|
+
const parameterNames = ["market", "orderTypeTag"];
|
|
2425
|
+
return (tx) => tx.moveCall({
|
|
2426
|
+
package: packageAddress,
|
|
2427
|
+
module: 'trading',
|
|
2428
|
+
function: 'borrow_order_book',
|
|
2429
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2430
|
+
typeArguments: options.typeArguments
|
|
2431
|
+
});
|
|
2432
|
+
}
|
|
2433
|
+
/** Borrows the market config (for view.move). */
|
|
2434
|
+
function borrowConfig(options) {
|
|
2435
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2436
|
+
const argumentsTypes = [
|
|
2437
|
+
null
|
|
2438
|
+
];
|
|
2439
|
+
const parameterNames = ["market"];
|
|
2440
|
+
return (tx) => tx.moveCall({
|
|
2441
|
+
package: packageAddress,
|
|
2442
|
+
module: 'trading',
|
|
2443
|
+
function: 'borrow_config',
|
|
2444
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2445
|
+
typeArguments: options.typeArguments
|
|
2446
|
+
});
|
|
2447
|
+
}
|
|
2448
|
+
function marketSymbol(options) {
|
|
2449
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2450
|
+
const argumentsTypes = [
|
|
2451
|
+
null
|
|
2452
|
+
];
|
|
2453
|
+
const parameterNames = ["market"];
|
|
2454
|
+
return (tx) => tx.moveCall({
|
|
2455
|
+
package: packageAddress,
|
|
2456
|
+
module: 'trading',
|
|
2457
|
+
function: 'market_symbol',
|
|
2458
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2459
|
+
typeArguments: options.typeArguments
|
|
2460
|
+
});
|
|
2461
|
+
}
|
|
2462
|
+
/** Creates and shares a new `MarketRegistry`. Admin-gated. */
|
|
2463
|
+
function createMarketRegistry(options) {
|
|
2464
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2465
|
+
const argumentsTypes = [
|
|
2466
|
+
null
|
|
2467
|
+
];
|
|
2468
|
+
const parameterNames = ["Cap"];
|
|
2469
|
+
return (tx) => tx.moveCall({
|
|
2470
|
+
package: packageAddress,
|
|
2471
|
+
module: 'trading',
|
|
2472
|
+
function: 'create_market_registry',
|
|
2473
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2474
|
+
typeArguments: options.typeArguments
|
|
2475
|
+
});
|
|
2476
|
+
}
|
|
2477
|
+
function registryAssertVersion(options) {
|
|
2478
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2479
|
+
const argumentsTypes = [
|
|
2480
|
+
null
|
|
2481
|
+
];
|
|
2482
|
+
const parameterNames = ["registry"];
|
|
2483
|
+
return (tx) => tx.moveCall({
|
|
2484
|
+
package: packageAddress,
|
|
2485
|
+
module: 'trading',
|
|
2486
|
+
function: 'registry_assert_version',
|
|
2487
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2488
|
+
typeArguments: options.typeArguments
|
|
2489
|
+
});
|
|
2490
|
+
}
|
|
2491
|
+
function registryAllowVersion(options) {
|
|
2492
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2493
|
+
const argumentsTypes = [
|
|
2494
|
+
null,
|
|
2495
|
+
null,
|
|
2496
|
+
'u16'
|
|
2497
|
+
];
|
|
2498
|
+
const parameterNames = ["registry", "_", "v"];
|
|
2499
|
+
return (tx) => tx.moveCall({
|
|
2500
|
+
package: packageAddress,
|
|
2501
|
+
module: 'trading',
|
|
2502
|
+
function: 'registry_allow_version',
|
|
2503
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2504
|
+
typeArguments: options.typeArguments
|
|
2505
|
+
});
|
|
2506
|
+
}
|
|
2507
|
+
function registryDisallowVersion(options) {
|
|
2508
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2509
|
+
const argumentsTypes = [
|
|
2510
|
+
null,
|
|
2511
|
+
null,
|
|
2512
|
+
'u16'
|
|
2513
|
+
];
|
|
2514
|
+
const parameterNames = ["registry", "_", "v"];
|
|
2515
|
+
return (tx) => tx.moveCall({
|
|
2516
|
+
package: packageAddress,
|
|
2517
|
+
module: 'trading',
|
|
2518
|
+
function: 'registry_disallow_version',
|
|
2519
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2520
|
+
typeArguments: options.typeArguments
|
|
2521
|
+
});
|
|
2522
|
+
}
|
|
2523
|
+
/** Stores `market` in the registry under `ticker`. Aborts if already taken. */
|
|
2524
|
+
function addMarket(options) {
|
|
2525
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2526
|
+
const argumentsTypes = [
|
|
2527
|
+
null,
|
|
2528
|
+
null,
|
|
2529
|
+
'0x1::string::String',
|
|
2530
|
+
null
|
|
2531
|
+
];
|
|
2532
|
+
const parameterNames = ["registry", "Cap", "ticker", "market"];
|
|
2533
|
+
return (tx) => tx.moveCall({
|
|
2534
|
+
package: packageAddress,
|
|
2535
|
+
module: 'trading',
|
|
2536
|
+
function: 'add_market',
|
|
2537
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2538
|
+
typeArguments: options.typeArguments
|
|
2539
|
+
});
|
|
2540
|
+
}
|
|
2541
|
+
/** Removes a market from the registry and returns it. */
|
|
2542
|
+
function removeMarket(options) {
|
|
2543
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2544
|
+
const argumentsTypes = [
|
|
2545
|
+
null,
|
|
2546
|
+
null,
|
|
2547
|
+
'0x1::string::String'
|
|
2548
|
+
];
|
|
2549
|
+
const parameterNames = ["registry", "Cap", "ticker"];
|
|
2550
|
+
return (tx) => tx.moveCall({
|
|
2551
|
+
package: packageAddress,
|
|
2552
|
+
module: 'trading',
|
|
2553
|
+
function: 'remove_market',
|
|
2554
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2555
|
+
typeArguments: options.typeArguments
|
|
2556
|
+
});
|
|
2557
|
+
}
|
|
2558
|
+
function hasMarket(options) {
|
|
2559
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2560
|
+
const argumentsTypes = [
|
|
2561
|
+
null,
|
|
2562
|
+
'0x1::string::String'
|
|
2563
|
+
];
|
|
2564
|
+
const parameterNames = ["registry", "ticker"];
|
|
2565
|
+
return (tx) => tx.moveCall({
|
|
2566
|
+
package: packageAddress,
|
|
2567
|
+
module: 'trading',
|
|
2568
|
+
function: 'has_market',
|
|
2569
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2570
|
+
typeArguments: options.typeArguments
|
|
2571
|
+
});
|
|
2572
|
+
}
|
|
2573
|
+
function listedTickers(options) {
|
|
2574
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2575
|
+
const argumentsTypes = [
|
|
2576
|
+
null
|
|
2577
|
+
];
|
|
2578
|
+
const parameterNames = ["registry"];
|
|
2579
|
+
return (tx) => tx.moveCall({
|
|
2580
|
+
package: packageAddress,
|
|
2581
|
+
module: 'trading',
|
|
2582
|
+
function: 'listed_tickers',
|
|
2583
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2584
|
+
typeArguments: options.typeArguments
|
|
2585
|
+
});
|
|
2586
|
+
}
|
|
2587
|
+
function borrowMarket(options) {
|
|
2588
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2589
|
+
const argumentsTypes = [
|
|
2590
|
+
null,
|
|
2591
|
+
'0x1::string::String'
|
|
2592
|
+
];
|
|
2593
|
+
const parameterNames = ["registry", "ticker"];
|
|
2594
|
+
return (tx) => tx.moveCall({
|
|
2595
|
+
package: packageAddress,
|
|
2596
|
+
module: 'trading',
|
|
2597
|
+
function: 'borrow_market',
|
|
2598
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2599
|
+
typeArguments: options.typeArguments
|
|
2600
|
+
});
|
|
2601
|
+
}
|
|
2602
|
+
function borrowMarketMut(options) {
|
|
2603
|
+
const packageAddress = options.package ?? '@waterx/perp';
|
|
2604
|
+
const argumentsTypes = [
|
|
2605
|
+
null,
|
|
2606
|
+
'0x1::string::String'
|
|
2607
|
+
];
|
|
2608
|
+
const parameterNames = ["registry", "ticker"];
|
|
2609
|
+
return (tx) => tx.moveCall({
|
|
2610
|
+
package: packageAddress,
|
|
2611
|
+
module: 'trading',
|
|
2612
|
+
function: 'borrow_market_mut',
|
|
2613
|
+
arguments: (0, index_ts_1.normalizeMoveArguments)(options.arguments, argumentsTypes, parameterNames),
|
|
2614
|
+
typeArguments: options.typeArguments
|
|
2615
|
+
});
|
|
2616
|
+
}
|