@haneullabs/deepbook-v3 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +984 -0
- package/README.md +1 -0
- package/dist/cjs/client.d.ts +861 -0
- package/dist/cjs/client.js +1982 -0
- package/dist/cjs/client.js.map +7 -0
- package/dist/cjs/contracts/deepbook/account.d.ts +105 -0
- package/dist/cjs/contracts/deepbook/account.js +163 -0
- package/dist/cjs/contracts/deepbook/account.js.map +7 -0
- package/dist/cjs/contracts/deepbook/balance_manager.d.ts +268 -0
- package/dist/cjs/contracts/deepbook/balance_manager.js +361 -0
- package/dist/cjs/contracts/deepbook/balance_manager.js.map +7 -0
- package/dist/cjs/contracts/deepbook/balances.d.ts +10 -0
- package/dist/cjs/contracts/deepbook/balances.js +35 -0
- package/dist/cjs/contracts/deepbook/balances.js.map +7 -0
- package/dist/cjs/contracts/deepbook/big_vector.d.ts +62 -0
- package/dist/cjs/contracts/deepbook/big_vector.js +80 -0
- package/dist/cjs/contracts/deepbook/big_vector.js.map +7 -0
- package/dist/cjs/contracts/deepbook/book.d.ts +34 -0
- package/dist/cjs/contracts/deepbook/book.js +50 -0
- package/dist/cjs/contracts/deepbook/book.js.map +7 -0
- package/dist/cjs/contracts/deepbook/constants.d.ts +176 -0
- package/dist/cjs/contracts/deepbook/constants.js +338 -0
- package/dist/cjs/contracts/deepbook/constants.js.map +7 -0
- package/dist/cjs/contracts/deepbook/deep_price.d.ts +60 -0
- package/dist/cjs/contracts/deepbook/deep_price.js +87 -0
- package/dist/cjs/contracts/deepbook/deep_price.js.map +7 -0
- package/dist/cjs/contracts/deepbook/deps/std/type_name.d.ts +14 -0
- package/dist/cjs/contracts/deepbook/deps/std/type_name.js +42 -0
- package/dist/cjs/contracts/deepbook/deps/std/type_name.js.map +7 -0
- package/dist/cjs/contracts/deepbook/deps/sui/bag.d.ts +33 -0
- package/dist/cjs/contracts/deepbook/deps/sui/bag.js +47 -0
- package/dist/cjs/contracts/deepbook/deps/sui/bag.js.map +7 -0
- package/dist/cjs/contracts/deepbook/deps/sui/balance.d.ts +9 -0
- package/dist/cjs/contracts/deepbook/deps/sui/balance.js +33 -0
- package/dist/cjs/contracts/deepbook/deps/sui/balance.js.map +7 -0
- package/dist/cjs/contracts/deepbook/deps/sui/object.d.ts +5 -0
- package/dist/cjs/contracts/deepbook/deps/sui/object.js +33 -0
- package/dist/cjs/contracts/deepbook/deps/sui/object.js.map +7 -0
- package/dist/cjs/contracts/deepbook/deps/sui/table.d.ts +28 -0
- package/dist/cjs/contracts/deepbook/deps/sui/table.js +47 -0
- package/dist/cjs/contracts/deepbook/deps/sui/table.js.map +7 -0
- package/dist/cjs/contracts/deepbook/deps/sui/vec_map.d.ts +27 -0
- package/dist/cjs/contracts/deepbook/deps/sui/vec_map.js +45 -0
- package/dist/cjs/contracts/deepbook/deps/sui/vec_map.js.map +7 -0
- package/dist/cjs/contracts/deepbook/deps/sui/vec_set.d.ts +15 -0
- package/dist/cjs/contracts/deepbook/deps/sui/vec_set.js +35 -0
- package/dist/cjs/contracts/deepbook/deps/sui/vec_set.js.map +7 -0
- package/dist/cjs/contracts/deepbook/deps/sui/versioned.d.ts +7 -0
- package/dist/cjs/contracts/deepbook/deps/sui/versioned.js +45 -0
- package/dist/cjs/contracts/deepbook/deps/sui/versioned.js.map +7 -0
- package/dist/cjs/contracts/deepbook/ewma.d.ts +17 -0
- package/dist/cjs/contracts/deepbook/ewma.js +39 -0
- package/dist/cjs/contracts/deepbook/ewma.js.map +7 -0
- package/dist/cjs/contracts/deepbook/fill.d.ts +153 -0
- package/dist/cjs/contracts/deepbook/fill.js +251 -0
- package/dist/cjs/contracts/deepbook/fill.js.map +7 -0
- package/dist/cjs/contracts/deepbook/governance.d.ts +63 -0
- package/dist/cjs/contracts/deepbook/governance.js +79 -0
- package/dist/cjs/contracts/deepbook/governance.js.map +7 -0
- package/dist/cjs/contracts/deepbook/history.d.ts +60 -0
- package/dist/cjs/contracts/deepbook/history.js +78 -0
- package/dist/cjs/contracts/deepbook/history.js.map +7 -0
- package/dist/cjs/contracts/deepbook/math.d.ts +94 -0
- package/dist/cjs/contracts/deepbook/math.js +132 -0
- package/dist/cjs/contracts/deepbook/math.js.map +7 -0
- package/dist/cjs/contracts/deepbook/order.d.ts +135 -0
- package/dist/cjs/contracts/deepbook/order.js +218 -0
- package/dist/cjs/contracts/deepbook/order.js.map +7 -0
- package/dist/cjs/contracts/deepbook/order_info.d.ts +296 -0
- package/dist/cjs/contracts/deepbook/order_info.js +386 -0
- package/dist/cjs/contracts/deepbook/order_info.js.map +7 -0
- package/dist/cjs/contracts/deepbook/order_query.d.ts +85 -0
- package/dist/cjs/contracts/deepbook/order_query.js +96 -0
- package/dist/cjs/contracts/deepbook/order_query.js.map +7 -0
- package/dist/cjs/contracts/deepbook/pool.d.ts +1218 -0
- package/dist/cjs/contracts/deepbook/pool.js +1236 -0
- package/dist/cjs/contracts/deepbook/pool.js.map +7 -0
- package/dist/cjs/contracts/deepbook/registry.d.ts +134 -0
- package/dist/cjs/contracts/deepbook/registry.js +182 -0
- package/dist/cjs/contracts/deepbook/registry.js.map +7 -0
- package/dist/cjs/contracts/deepbook/state.d.ts +117 -0
- package/dist/cjs/contracts/deepbook/state.js +104 -0
- package/dist/cjs/contracts/deepbook/state.js.map +7 -0
- package/dist/cjs/contracts/deepbook/trade_params.d.ts +7 -0
- package/dist/cjs/contracts/deepbook/trade_params.js +35 -0
- package/dist/cjs/contracts/deepbook/trade_params.js.map +7 -0
- package/dist/cjs/contracts/deepbook/vault.d.ts +30 -0
- package/dist/cjs/contracts/deepbook/vault.js +65 -0
- package/dist/cjs/contracts/deepbook/vault.js.map +7 -0
- package/dist/cjs/contracts/utils/index.d.ts +25 -0
- package/dist/cjs/contracts/utils/index.js +148 -0
- package/dist/cjs/contracts/utils/index.js.map +7 -0
- package/dist/cjs/index.d.ts +23 -0
- package/dist/cjs/index.js +81 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/package.json +4 -0
- package/dist/cjs/pyth/PriceServiceConnection.d.ts +26 -0
- package/dist/cjs/pyth/PriceServiceConnection.js +68 -0
- package/dist/cjs/pyth/PriceServiceConnection.js.map +7 -0
- package/dist/cjs/pyth/pyth-helpers.d.ts +7 -0
- package/dist/cjs/pyth/pyth-helpers.js +36 -0
- package/dist/cjs/pyth/pyth-helpers.js.map +7 -0
- package/dist/cjs/pyth/pyth.d.ts +65 -0
- package/dist/cjs/pyth/pyth.js +269 -0
- package/dist/cjs/pyth/pyth.js.map +7 -0
- package/dist/cjs/transactions/balanceManager.d.ts +168 -0
- package/dist/cjs/transactions/balanceManager.js +384 -0
- package/dist/cjs/transactions/balanceManager.js.map +7 -0
- package/dist/cjs/transactions/deepbook.d.ts +477 -0
- package/dist/cjs/transactions/deepbook.js +1335 -0
- package/dist/cjs/transactions/deepbook.js.map +7 -0
- package/dist/cjs/transactions/deepbookAdmin.d.ts +105 -0
- package/dist/cjs/transactions/deepbookAdmin.js +334 -0
- package/dist/cjs/transactions/deepbookAdmin.js.map +7 -0
- package/dist/cjs/transactions/flashLoans.d.ts +56 -0
- package/dist/cjs/transactions/flashLoans.js +124 -0
- package/dist/cjs/transactions/flashLoans.js.map +7 -0
- package/dist/cjs/transactions/governance.d.ts +42 -0
- package/dist/cjs/transactions/governance.js +135 -0
- package/dist/cjs/transactions/governance.js.map +7 -0
- package/dist/cjs/transactions/marginAdmin.d.ts +133 -0
- package/dist/cjs/transactions/marginAdmin.js +393 -0
- package/dist/cjs/transactions/marginAdmin.js.map +7 -0
- package/dist/cjs/transactions/marginLiquidations.d.ts +61 -0
- package/dist/cjs/transactions/marginLiquidations.js +173 -0
- package/dist/cjs/transactions/marginLiquidations.js.map +7 -0
- package/dist/cjs/transactions/marginMaintainer.d.ts +80 -0
- package/dist/cjs/transactions/marginMaintainer.js +251 -0
- package/dist/cjs/transactions/marginMaintainer.js.map +7 -0
- package/dist/cjs/transactions/marginManager.d.ts +236 -0
- package/dist/cjs/transactions/marginManager.js +688 -0
- package/dist/cjs/transactions/marginManager.js.map +7 -0
- package/dist/cjs/transactions/marginPool.d.ts +134 -0
- package/dist/cjs/transactions/marginPool.js +330 -0
- package/dist/cjs/transactions/marginPool.js.map +7 -0
- package/dist/cjs/transactions/marginRegistry.d.ts +94 -0
- package/dist/cjs/transactions/marginRegistry.js +221 -0
- package/dist/cjs/transactions/marginRegistry.js.map +7 -0
- package/dist/cjs/transactions/marginTPSL.d.ts +93 -0
- package/dist/cjs/transactions/marginTPSL.js +286 -0
- package/dist/cjs/transactions/marginTPSL.js.map +7 -0
- package/dist/cjs/transactions/poolProxy.d.ts +104 -0
- package/dist/cjs/transactions/poolProxy.js +435 -0
- package/dist/cjs/transactions/poolProxy.js.map +7 -0
- package/dist/cjs/types/bcs.d.ts +5 -0
- package/dist/cjs/types/bcs.js +33 -0
- package/dist/cjs/types/bcs.js.map +7 -0
- package/dist/cjs/types/index.d.ts +218 -0
- package/dist/cjs/types/index.js +38 -0
- package/dist/cjs/types/index.js.map +7 -0
- package/dist/cjs/utils/config.d.ts +65 -0
- package/dist/cjs/utils/config.js +144 -0
- package/dist/cjs/utils/config.js.map +7 -0
- package/dist/cjs/utils/constants.d.ts +76 -0
- package/dist/cjs/utils/constants.js +382 -0
- package/dist/cjs/utils/constants.js.map +7 -0
- package/dist/cjs/utils/errors.d.ts +42 -0
- package/dist/cjs/utils/errors.js +70 -0
- package/dist/cjs/utils/errors.js.map +7 -0
- package/dist/cjs/utils/validation.d.ts +50 -0
- package/dist/cjs/utils/validation.js +67 -0
- package/dist/cjs/utils/validation.js.map +7 -0
- package/dist/esm/client.d.ts +861 -0
- package/dist/esm/client.js +1967 -0
- package/dist/esm/client.js.map +7 -0
- package/dist/esm/contracts/deepbook/account.d.ts +105 -0
- package/dist/esm/contracts/deepbook/account.js +133 -0
- package/dist/esm/contracts/deepbook/account.js.map +7 -0
- package/dist/esm/contracts/deepbook/balance_manager.d.ts +268 -0
- package/dist/esm/contracts/deepbook/balance_manager.js +331 -0
- package/dist/esm/contracts/deepbook/balance_manager.js.map +7 -0
- package/dist/esm/contracts/deepbook/balances.d.ts +10 -0
- package/dist/esm/contracts/deepbook/balances.js +15 -0
- package/dist/esm/contracts/deepbook/balances.js.map +7 -0
- package/dist/esm/contracts/deepbook/big_vector.d.ts +62 -0
- package/dist/esm/contracts/deepbook/big_vector.js +50 -0
- package/dist/esm/contracts/deepbook/big_vector.js.map +7 -0
- package/dist/esm/contracts/deepbook/book.d.ts +34 -0
- package/dist/esm/contracts/deepbook/book.js +20 -0
- package/dist/esm/contracts/deepbook/book.js.map +7 -0
- package/dist/esm/contracts/deepbook/constants.d.ts +176 -0
- package/dist/esm/contracts/deepbook/constants.js +318 -0
- package/dist/esm/contracts/deepbook/constants.js.map +7 -0
- package/dist/esm/contracts/deepbook/deep_price.d.ts +60 -0
- package/dist/esm/contracts/deepbook/deep_price.js +67 -0
- package/dist/esm/contracts/deepbook/deep_price.js.map +7 -0
- package/dist/esm/contracts/deepbook/deps/std/type_name.d.ts +14 -0
- package/dist/esm/contracts/deepbook/deps/std/type_name.js +22 -0
- package/dist/esm/contracts/deepbook/deps/std/type_name.js.map +7 -0
- package/dist/esm/contracts/deepbook/deps/sui/bag.d.ts +33 -0
- package/dist/esm/contracts/deepbook/deps/sui/bag.js +17 -0
- package/dist/esm/contracts/deepbook/deps/sui/bag.js.map +7 -0
- package/dist/esm/contracts/deepbook/deps/sui/balance.d.ts +9 -0
- package/dist/esm/contracts/deepbook/deps/sui/balance.js +13 -0
- package/dist/esm/contracts/deepbook/deps/sui/balance.js.map +7 -0
- package/dist/esm/contracts/deepbook/deps/sui/object.d.ts +5 -0
- package/dist/esm/contracts/deepbook/deps/sui/object.js +13 -0
- package/dist/esm/contracts/deepbook/deps/sui/object.js.map +7 -0
- package/dist/esm/contracts/deepbook/deps/sui/table.d.ts +28 -0
- package/dist/esm/contracts/deepbook/deps/sui/table.js +17 -0
- package/dist/esm/contracts/deepbook/deps/sui/table.js.map +7 -0
- package/dist/esm/contracts/deepbook/deps/sui/vec_map.d.ts +27 -0
- package/dist/esm/contracts/deepbook/deps/sui/vec_map.js +25 -0
- package/dist/esm/contracts/deepbook/deps/sui/vec_map.js.map +7 -0
- package/dist/esm/contracts/deepbook/deps/sui/vec_set.d.ts +15 -0
- package/dist/esm/contracts/deepbook/deps/sui/vec_set.js +15 -0
- package/dist/esm/contracts/deepbook/deps/sui/vec_set.js.map +7 -0
- package/dist/esm/contracts/deepbook/deps/sui/versioned.d.ts +7 -0
- package/dist/esm/contracts/deepbook/deps/sui/versioned.js +15 -0
- package/dist/esm/contracts/deepbook/deps/sui/versioned.js.map +7 -0
- package/dist/esm/contracts/deepbook/ewma.d.ts +17 -0
- package/dist/esm/contracts/deepbook/ewma.js +19 -0
- package/dist/esm/contracts/deepbook/ewma.js.map +7 -0
- package/dist/esm/contracts/deepbook/fill.d.ts +153 -0
- package/dist/esm/contracts/deepbook/fill.js +221 -0
- package/dist/esm/contracts/deepbook/fill.js.map +7 -0
- package/dist/esm/contracts/deepbook/governance.d.ts +63 -0
- package/dist/esm/contracts/deepbook/governance.js +49 -0
- package/dist/esm/contracts/deepbook/governance.js.map +7 -0
- package/dist/esm/contracts/deepbook/history.d.ts +60 -0
- package/dist/esm/contracts/deepbook/history.js +48 -0
- package/dist/esm/contracts/deepbook/history.js.map +7 -0
- package/dist/esm/contracts/deepbook/math.d.ts +94 -0
- package/dist/esm/contracts/deepbook/math.js +112 -0
- package/dist/esm/contracts/deepbook/math.js.map +7 -0
- package/dist/esm/contracts/deepbook/order.d.ts +135 -0
- package/dist/esm/contracts/deepbook/order.js +188 -0
- package/dist/esm/contracts/deepbook/order.js.map +7 -0
- package/dist/esm/contracts/deepbook/order_info.d.ts +296 -0
- package/dist/esm/contracts/deepbook/order_info.js +356 -0
- package/dist/esm/contracts/deepbook/order_info.js.map +7 -0
- package/dist/esm/contracts/deepbook/order_query.d.ts +85 -0
- package/dist/esm/contracts/deepbook/order_query.js +66 -0
- package/dist/esm/contracts/deepbook/order_query.js.map +7 -0
- package/dist/esm/contracts/deepbook/pool.d.ts +1218 -0
- package/dist/esm/contracts/deepbook/pool.js +1206 -0
- package/dist/esm/contracts/deepbook/pool.js.map +7 -0
- package/dist/esm/contracts/deepbook/registry.d.ts +134 -0
- package/dist/esm/contracts/deepbook/registry.js +152 -0
- package/dist/esm/contracts/deepbook/registry.js.map +7 -0
- package/dist/esm/contracts/deepbook/state.d.ts +117 -0
- package/dist/esm/contracts/deepbook/state.js +74 -0
- package/dist/esm/contracts/deepbook/state.js.map +7 -0
- package/dist/esm/contracts/deepbook/trade_params.d.ts +7 -0
- package/dist/esm/contracts/deepbook/trade_params.js +15 -0
- package/dist/esm/contracts/deepbook/trade_params.js.map +7 -0
- package/dist/esm/contracts/deepbook/vault.d.ts +30 -0
- package/dist/esm/contracts/deepbook/vault.js +35 -0
- package/dist/esm/contracts/deepbook/vault.js.map +7 -0
- package/dist/esm/contracts/utils/index.d.ts +25 -0
- package/dist/esm/contracts/utils/index.js +128 -0
- package/dist/esm/contracts/utils/index.js.map +7 -0
- package/dist/esm/index.d.ts +23 -0
- package/dist/esm/index.js +81 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/pyth/PriceServiceConnection.d.ts +26 -0
- package/dist/esm/pyth/PriceServiceConnection.js +38 -0
- package/dist/esm/pyth/PriceServiceConnection.js.map +7 -0
- package/dist/esm/pyth/pyth-helpers.d.ts +7 -0
- package/dist/esm/pyth/pyth-helpers.js +16 -0
- package/dist/esm/pyth/pyth-helpers.js.map +7 -0
- package/dist/esm/pyth/pyth.d.ts +65 -0
- package/dist/esm/pyth/pyth.js +249 -0
- package/dist/esm/pyth/pyth.js.map +7 -0
- package/dist/esm/transactions/balanceManager.d.ts +168 -0
- package/dist/esm/transactions/balanceManager.js +364 -0
- package/dist/esm/transactions/balanceManager.js.map +7 -0
- package/dist/esm/transactions/deepbook.d.ts +477 -0
- package/dist/esm/transactions/deepbook.js +1321 -0
- package/dist/esm/transactions/deepbook.js.map +7 -0
- package/dist/esm/transactions/deepbookAdmin.d.ts +105 -0
- package/dist/esm/transactions/deepbookAdmin.js +314 -0
- package/dist/esm/transactions/deepbookAdmin.js.map +7 -0
- package/dist/esm/transactions/flashLoans.d.ts +56 -0
- package/dist/esm/transactions/flashLoans.js +104 -0
- package/dist/esm/transactions/flashLoans.js.map +7 -0
- package/dist/esm/transactions/governance.d.ts +42 -0
- package/dist/esm/transactions/governance.js +115 -0
- package/dist/esm/transactions/governance.js.map +7 -0
- package/dist/esm/transactions/marginAdmin.d.ts +133 -0
- package/dist/esm/transactions/marginAdmin.js +373 -0
- package/dist/esm/transactions/marginAdmin.js.map +7 -0
- package/dist/esm/transactions/marginLiquidations.d.ts +61 -0
- package/dist/esm/transactions/marginLiquidations.js +153 -0
- package/dist/esm/transactions/marginLiquidations.js.map +7 -0
- package/dist/esm/transactions/marginMaintainer.d.ts +80 -0
- package/dist/esm/transactions/marginMaintainer.js +231 -0
- package/dist/esm/transactions/marginMaintainer.js.map +7 -0
- package/dist/esm/transactions/marginManager.d.ts +236 -0
- package/dist/esm/transactions/marginManager.js +668 -0
- package/dist/esm/transactions/marginManager.js.map +7 -0
- package/dist/esm/transactions/marginPool.d.ts +134 -0
- package/dist/esm/transactions/marginPool.js +310 -0
- package/dist/esm/transactions/marginPool.js.map +7 -0
- package/dist/esm/transactions/marginRegistry.d.ts +94 -0
- package/dist/esm/transactions/marginRegistry.js +201 -0
- package/dist/esm/transactions/marginRegistry.js.map +7 -0
- package/dist/esm/transactions/marginTPSL.d.ts +93 -0
- package/dist/esm/transactions/marginTPSL.js +266 -0
- package/dist/esm/transactions/marginTPSL.js.map +7 -0
- package/dist/esm/transactions/poolProxy.d.ts +104 -0
- package/dist/esm/transactions/poolProxy.js +415 -0
- package/dist/esm/transactions/poolProxy.js.map +7 -0
- package/dist/esm/types/bcs.d.ts +5 -0
- package/dist/esm/types/bcs.js +13 -0
- package/dist/esm/types/bcs.js.map +7 -0
- package/dist/esm/types/index.d.ts +218 -0
- package/dist/esm/types/index.js +18 -0
- package/dist/esm/types/index.js.map +7 -0
- package/dist/esm/utils/config.d.ts +65 -0
- package/dist/esm/utils/config.js +135 -0
- package/dist/esm/utils/config.js.map +7 -0
- package/dist/esm/utils/constants.d.ts +76 -0
- package/dist/esm/utils/constants.js +362 -0
- package/dist/esm/utils/constants.js.map +7 -0
- package/dist/esm/utils/errors.d.ts +42 -0
- package/dist/esm/utils/errors.js +50 -0
- package/dist/esm/utils/errors.js.map +7 -0
- package/dist/esm/utils/validation.d.ts +50 -0
- package/dist/esm/utils/validation.js +47 -0
- package/dist/esm/utils/validation.js.map +7 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +63 -0
- package/src/client.ts +2451 -0
- package/src/contracts/deepbook/account.ts +199 -0
- package/src/contracts/deepbook/balance_manager.ts +532 -0
- package/src/contracts/deepbook/balances.ts +19 -0
- package/src/contracts/deepbook/big_vector.ts +74 -0
- package/src/contracts/deepbook/book.ts +24 -0
- package/src/contracts/deepbook/constants.ts +458 -0
- package/src/contracts/deepbook/deep_price.ts +84 -0
- package/src/contracts/deepbook/deps/std/type_name.ts +23 -0
- package/src/contracts/deepbook/deps/sui/bag.ts +41 -0
- package/src/contracts/deepbook/deps/sui/balance.ts +18 -0
- package/src/contracts/deepbook/deps/sui/object.ts +14 -0
- package/src/contracts/deepbook/deps/sui/table.ts +36 -0
- package/src/contracts/deepbook/deps/sui/vec_map.ts +33 -0
- package/src/contracts/deepbook/deps/sui/vec_set.ts +22 -0
- package/src/contracts/deepbook/deps/sui/versioned.ts +13 -0
- package/src/contracts/deepbook/ewma.ts +26 -0
- package/src/contracts/deepbook/fill.ts +336 -0
- package/src/contracts/deepbook/governance.ts +52 -0
- package/src/contracts/deepbook/history.ts +51 -0
- package/src/contracts/deepbook/math.ts +210 -0
- package/src/contracts/deepbook/order.ts +269 -0
- package/src/contracts/deepbook/order_info.ts +513 -0
- package/src/contracts/deepbook/order_query.ts +115 -0
- package/src/contracts/deepbook/pool.ts +2269 -0
- package/src/contracts/deepbook/registry.ts +242 -0
- package/src/contracts/deepbook/state.ts +74 -0
- package/src/contracts/deepbook/trade_params.ts +16 -0
- package/src/contracts/deepbook/vault.ts +37 -0
- package/src/contracts/utils/index.ts +184 -0
- package/src/index.ts +95 -0
- package/src/pyth/PriceServiceConnection.ts +48 -0
- package/src/pyth/pyth-helpers.ts +23 -0
- package/src/pyth/pyth.ts +305 -0
- package/src/transactions/balanceManager.ts +399 -0
- package/src/transactions/deepbook.ts +1519 -0
- package/src/transactions/deepbookAdmin.ts +332 -0
- package/src/transactions/flashLoans.ts +123 -0
- package/src/transactions/governance.ts +123 -0
- package/src/transactions/marginAdmin.ts +396 -0
- package/src/transactions/marginLiquidations.ts +175 -0
- package/src/transactions/marginMaintainer.ts +280 -0
- package/src/transactions/marginManager.ts +708 -0
- package/src/transactions/marginPool.ts +339 -0
- package/src/transactions/marginRegistry.ts +212 -0
- package/src/transactions/marginTPSL.ts +296 -0
- package/src/transactions/poolProxy.ts +438 -0
- package/src/types/bcs.ts +8 -0
- package/src/types/index.ts +255 -0
- package/src/utils/config.ts +177 -0
- package/src/utils/constants.ts +374 -0
- package/src/utils/errors.ts +67 -0
- package/src/utils/validation.ts +91 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
// Copyright (c) Mysten Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/** Registry holds all created pools. */
|
|
5
|
+
|
|
6
|
+
import { MoveStruct, normalizeMoveArguments } from '../utils/index.js';
|
|
7
|
+
import type { RawTransactionArgument } from '../utils/index.js';
|
|
8
|
+
import { bcs } from '@haneullabs/haneul/bcs';
|
|
9
|
+
import type { Transaction } from '@haneullabs/haneul/transactions';
|
|
10
|
+
import * as object from './deps/sui/object.js';
|
|
11
|
+
import * as versioned from './deps/sui/versioned.js';
|
|
12
|
+
import * as vec_set from './deps/sui/vec_set.js';
|
|
13
|
+
import * as bag from './deps/sui/bag.js';
|
|
14
|
+
import * as type_name from './deps/std/type_name.js';
|
|
15
|
+
const $moduleName = '@deepbook/core::registry';
|
|
16
|
+
export const REGISTRY = new MoveStruct({
|
|
17
|
+
name: `${$moduleName}::REGISTRY`,
|
|
18
|
+
fields: {
|
|
19
|
+
dummy_field: bcs.bool(),
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
export const DeepbookAdminCap = new MoveStruct({
|
|
23
|
+
name: `${$moduleName}::DeepbookAdminCap`,
|
|
24
|
+
fields: {
|
|
25
|
+
id: object.UID,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
export const Registry = new MoveStruct({
|
|
29
|
+
name: `${$moduleName}::Registry`,
|
|
30
|
+
fields: {
|
|
31
|
+
id: object.UID,
|
|
32
|
+
inner: versioned.Versioned,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
export const RegistryInner = new MoveStruct({
|
|
36
|
+
name: `${$moduleName}::RegistryInner`,
|
|
37
|
+
fields: {
|
|
38
|
+
allowed_versions: vec_set.VecSet(bcs.u64()),
|
|
39
|
+
pools: bag.Bag,
|
|
40
|
+
treasury_address: bcs.Address,
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
export const PoolKey = new MoveStruct({
|
|
44
|
+
name: `${$moduleName}::PoolKey`,
|
|
45
|
+
fields: {
|
|
46
|
+
base: type_name.TypeName,
|
|
47
|
+
quote: type_name.TypeName,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
export const StableCoinKey = new MoveStruct({
|
|
51
|
+
name: `${$moduleName}::StableCoinKey`,
|
|
52
|
+
fields: {
|
|
53
|
+
dummy_field: bcs.bool(),
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
export interface SetTreasuryAddressArguments {
|
|
57
|
+
self: RawTransactionArgument<string>;
|
|
58
|
+
treasuryAddress: RawTransactionArgument<string>;
|
|
59
|
+
Cap: RawTransactionArgument<string>;
|
|
60
|
+
}
|
|
61
|
+
export interface SetTreasuryAddressOptions {
|
|
62
|
+
package?: string;
|
|
63
|
+
arguments:
|
|
64
|
+
| SetTreasuryAddressArguments
|
|
65
|
+
| [
|
|
66
|
+
self: RawTransactionArgument<string>,
|
|
67
|
+
treasuryAddress: RawTransactionArgument<string>,
|
|
68
|
+
Cap: RawTransactionArgument<string>,
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Sets the treasury address where the pool creation fees are sent By default, the
|
|
73
|
+
* treasury address is the publisher of the deepbook package
|
|
74
|
+
*/
|
|
75
|
+
export function setTreasuryAddress(options: SetTreasuryAddressOptions) {
|
|
76
|
+
const packageAddress = options.package ?? '@deepbook/core';
|
|
77
|
+
const argumentsTypes = [
|
|
78
|
+
`${packageAddress}::registry::Registry`,
|
|
79
|
+
'address',
|
|
80
|
+
`${packageAddress}::registry::DeepbookAdminCap`,
|
|
81
|
+
] satisfies string[];
|
|
82
|
+
const parameterNames = ['self', 'treasuryAddress', 'Cap'];
|
|
83
|
+
return (tx: Transaction) =>
|
|
84
|
+
tx.moveCall({
|
|
85
|
+
package: packageAddress,
|
|
86
|
+
module: 'registry',
|
|
87
|
+
function: 'set_treasury_address',
|
|
88
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
export interface EnableVersionArguments {
|
|
92
|
+
self: RawTransactionArgument<string>;
|
|
93
|
+
version: RawTransactionArgument<number | bigint>;
|
|
94
|
+
Cap: RawTransactionArgument<string>;
|
|
95
|
+
}
|
|
96
|
+
export interface EnableVersionOptions {
|
|
97
|
+
package?: string;
|
|
98
|
+
arguments:
|
|
99
|
+
| EnableVersionArguments
|
|
100
|
+
| [
|
|
101
|
+
self: RawTransactionArgument<string>,
|
|
102
|
+
version: RawTransactionArgument<number | bigint>,
|
|
103
|
+
Cap: RawTransactionArgument<string>,
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Enables a package version Only Admin can enable a package version This function
|
|
108
|
+
* does not have version restrictions
|
|
109
|
+
*/
|
|
110
|
+
export function enableVersion(options: EnableVersionOptions) {
|
|
111
|
+
const packageAddress = options.package ?? '@deepbook/core';
|
|
112
|
+
const argumentsTypes = [
|
|
113
|
+
`${packageAddress}::registry::Registry`,
|
|
114
|
+
'u64',
|
|
115
|
+
`${packageAddress}::registry::DeepbookAdminCap`,
|
|
116
|
+
] satisfies string[];
|
|
117
|
+
const parameterNames = ['self', 'version', 'Cap'];
|
|
118
|
+
return (tx: Transaction) =>
|
|
119
|
+
tx.moveCall({
|
|
120
|
+
package: packageAddress,
|
|
121
|
+
module: 'registry',
|
|
122
|
+
function: 'enable_version',
|
|
123
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
export interface DisableVersionArguments {
|
|
127
|
+
self: RawTransactionArgument<string>;
|
|
128
|
+
version: RawTransactionArgument<number | bigint>;
|
|
129
|
+
Cap: RawTransactionArgument<string>;
|
|
130
|
+
}
|
|
131
|
+
export interface DisableVersionOptions {
|
|
132
|
+
package?: string;
|
|
133
|
+
arguments:
|
|
134
|
+
| DisableVersionArguments
|
|
135
|
+
| [
|
|
136
|
+
self: RawTransactionArgument<string>,
|
|
137
|
+
version: RawTransactionArgument<number | bigint>,
|
|
138
|
+
Cap: RawTransactionArgument<string>,
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Disables a package version Only Admin can disable a package version This
|
|
143
|
+
* function does not have version restrictions
|
|
144
|
+
*/
|
|
145
|
+
export function disableVersion(options: DisableVersionOptions) {
|
|
146
|
+
const packageAddress = options.package ?? '@deepbook/core';
|
|
147
|
+
const argumentsTypes = [
|
|
148
|
+
`${packageAddress}::registry::Registry`,
|
|
149
|
+
'u64',
|
|
150
|
+
`${packageAddress}::registry::DeepbookAdminCap`,
|
|
151
|
+
] satisfies string[];
|
|
152
|
+
const parameterNames = ['self', 'version', 'Cap'];
|
|
153
|
+
return (tx: Transaction) =>
|
|
154
|
+
tx.moveCall({
|
|
155
|
+
package: packageAddress,
|
|
156
|
+
module: 'registry',
|
|
157
|
+
function: 'disable_version',
|
|
158
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
export interface AddStablecoinArguments {
|
|
162
|
+
self: RawTransactionArgument<string>;
|
|
163
|
+
Cap: RawTransactionArgument<string>;
|
|
164
|
+
}
|
|
165
|
+
export interface AddStablecoinOptions {
|
|
166
|
+
package?: string;
|
|
167
|
+
arguments:
|
|
168
|
+
| AddStablecoinArguments
|
|
169
|
+
| [self: RawTransactionArgument<string>, Cap: RawTransactionArgument<string>];
|
|
170
|
+
typeArguments: [string];
|
|
171
|
+
}
|
|
172
|
+
/** Adds a stablecoin to the whitelist Only Admin can add stablecoin */
|
|
173
|
+
export function addStablecoin(options: AddStablecoinOptions) {
|
|
174
|
+
const packageAddress = options.package ?? '@deepbook/core';
|
|
175
|
+
const argumentsTypes = [
|
|
176
|
+
`${packageAddress}::registry::Registry`,
|
|
177
|
+
`${packageAddress}::registry::DeepbookAdminCap`,
|
|
178
|
+
] satisfies string[];
|
|
179
|
+
const parameterNames = ['self', 'Cap'];
|
|
180
|
+
return (tx: Transaction) =>
|
|
181
|
+
tx.moveCall({
|
|
182
|
+
package: packageAddress,
|
|
183
|
+
module: 'registry',
|
|
184
|
+
function: 'add_stablecoin',
|
|
185
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
186
|
+
typeArguments: options.typeArguments,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
export interface RemoveStablecoinArguments {
|
|
190
|
+
self: RawTransactionArgument<string>;
|
|
191
|
+
Cap: RawTransactionArgument<string>;
|
|
192
|
+
}
|
|
193
|
+
export interface RemoveStablecoinOptions {
|
|
194
|
+
package?: string;
|
|
195
|
+
arguments:
|
|
196
|
+
| RemoveStablecoinArguments
|
|
197
|
+
| [self: RawTransactionArgument<string>, Cap: RawTransactionArgument<string>];
|
|
198
|
+
typeArguments: [string];
|
|
199
|
+
}
|
|
200
|
+
/** Removes a stablecoin from the whitelist Only Admin can remove stablecoin */
|
|
201
|
+
export function removeStablecoin(options: RemoveStablecoinOptions) {
|
|
202
|
+
const packageAddress = options.package ?? '@deepbook/core';
|
|
203
|
+
const argumentsTypes = [
|
|
204
|
+
`${packageAddress}::registry::Registry`,
|
|
205
|
+
`${packageAddress}::registry::DeepbookAdminCap`,
|
|
206
|
+
] satisfies string[];
|
|
207
|
+
const parameterNames = ['self', 'Cap'];
|
|
208
|
+
return (tx: Transaction) =>
|
|
209
|
+
tx.moveCall({
|
|
210
|
+
package: packageAddress,
|
|
211
|
+
module: 'registry',
|
|
212
|
+
function: 'remove_stablecoin',
|
|
213
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
214
|
+
typeArguments: options.typeArguments,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
export interface IsStablecoinArguments {
|
|
218
|
+
self: RawTransactionArgument<string>;
|
|
219
|
+
stableType: RawTransactionArgument<string>;
|
|
220
|
+
}
|
|
221
|
+
export interface IsStablecoinOptions {
|
|
222
|
+
package?: string;
|
|
223
|
+
arguments:
|
|
224
|
+
| IsStablecoinArguments
|
|
225
|
+
| [self: RawTransactionArgument<string>, stableType: RawTransactionArgument<string>];
|
|
226
|
+
}
|
|
227
|
+
/** Returns whether the given coin is whitelisted */
|
|
228
|
+
export function isStablecoin(options: IsStablecoinOptions) {
|
|
229
|
+
const packageAddress = options.package ?? '@deepbook/core';
|
|
230
|
+
const argumentsTypes = [
|
|
231
|
+
`${packageAddress}::registry::Registry`,
|
|
232
|
+
'0x0000000000000000000000000000000000000000000000000000000000000001::type_name::TypeName',
|
|
233
|
+
] satisfies string[];
|
|
234
|
+
const parameterNames = ['self', 'stableType'];
|
|
235
|
+
return (tx: Transaction) =>
|
|
236
|
+
tx.moveCall({
|
|
237
|
+
package: packageAddress,
|
|
238
|
+
module: 'registry',
|
|
239
|
+
function: 'is_stablecoin',
|
|
240
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Copyright (c) Mysten Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* State module represents the current state of the pool. It maintains all the
|
|
6
|
+
* accounts, history, and governance information. It also processes all the
|
|
7
|
+
* transactions and updates the state accordingly.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { MoveStruct } from '../utils/index.js';
|
|
11
|
+
import { bcs } from '@haneullabs/haneul/bcs';
|
|
12
|
+
import * as table from './deps/sui/table.js';
|
|
13
|
+
import * as history from './history.js';
|
|
14
|
+
import * as governance from './governance.js';
|
|
15
|
+
import * as balances from './balances.js';
|
|
16
|
+
const $moduleName = '@deepbook/core::state';
|
|
17
|
+
export const State = new MoveStruct({
|
|
18
|
+
name: `${$moduleName}::State`,
|
|
19
|
+
fields: {
|
|
20
|
+
accounts: table.Table,
|
|
21
|
+
history: history.History,
|
|
22
|
+
governance: governance.Governance,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
export const StakeEvent = new MoveStruct({
|
|
26
|
+
name: `${$moduleName}::StakeEvent`,
|
|
27
|
+
fields: {
|
|
28
|
+
pool_id: bcs.Address,
|
|
29
|
+
balance_manager_id: bcs.Address,
|
|
30
|
+
epoch: bcs.u64(),
|
|
31
|
+
amount: bcs.u64(),
|
|
32
|
+
stake: bcs.bool(),
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
export const ProposalEvent = new MoveStruct({
|
|
36
|
+
name: `${$moduleName}::ProposalEvent`,
|
|
37
|
+
fields: {
|
|
38
|
+
pool_id: bcs.Address,
|
|
39
|
+
balance_manager_id: bcs.Address,
|
|
40
|
+
epoch: bcs.u64(),
|
|
41
|
+
taker_fee: bcs.u64(),
|
|
42
|
+
maker_fee: bcs.u64(),
|
|
43
|
+
stake_required: bcs.u64(),
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
export const VoteEvent = new MoveStruct({
|
|
47
|
+
name: `${$moduleName}::VoteEvent`,
|
|
48
|
+
fields: {
|
|
49
|
+
pool_id: bcs.Address,
|
|
50
|
+
balance_manager_id: bcs.Address,
|
|
51
|
+
epoch: bcs.u64(),
|
|
52
|
+
from_proposal_id: bcs.option(bcs.Address),
|
|
53
|
+
to_proposal_id: bcs.Address,
|
|
54
|
+
stake: bcs.u64(),
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
export const RebateEventV2 = new MoveStruct({
|
|
58
|
+
name: `${$moduleName}::RebateEventV2`,
|
|
59
|
+
fields: {
|
|
60
|
+
pool_id: bcs.Address,
|
|
61
|
+
balance_manager_id: bcs.Address,
|
|
62
|
+
epoch: bcs.u64(),
|
|
63
|
+
claim_amount: balances.Balances,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
export const RebateEvent = new MoveStruct({
|
|
67
|
+
name: `${$moduleName}::RebateEvent`,
|
|
68
|
+
fields: {
|
|
69
|
+
pool_id: bcs.Address,
|
|
70
|
+
balance_manager_id: bcs.Address,
|
|
71
|
+
epoch: bcs.u64(),
|
|
72
|
+
claim_amount: bcs.u64(),
|
|
73
|
+
},
|
|
74
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Copyright (c) Mysten Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/** TradeParams module contains the trade parameters for a trading pair. */
|
|
5
|
+
|
|
6
|
+
import { MoveStruct } from '../utils/index.js';
|
|
7
|
+
import { bcs } from '@haneullabs/haneul/bcs';
|
|
8
|
+
const $moduleName = '@deepbook/core::trade_params';
|
|
9
|
+
export const TradeParams = new MoveStruct({
|
|
10
|
+
name: `${$moduleName}::TradeParams`,
|
|
11
|
+
fields: {
|
|
12
|
+
taker_fee: bcs.u64(),
|
|
13
|
+
maker_fee: bcs.u64(),
|
|
14
|
+
stake_required: bcs.u64(),
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Copyright (c) Mysten Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The vault holds all of the assets for this pool. At the end of all transaction
|
|
6
|
+
* processing, the vault is used to settle the balances for the user.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { MoveStruct } from '../utils/index.js';
|
|
10
|
+
import { bcs } from '@haneullabs/haneul/bcs';
|
|
11
|
+
import * as balance from './deps/sui/balance.js';
|
|
12
|
+
import * as type_name from './deps/std/type_name.js';
|
|
13
|
+
const $moduleName = '@deepbook/core::vault';
|
|
14
|
+
export const Vault = new MoveStruct({
|
|
15
|
+
name: `${$moduleName}::Vault`,
|
|
16
|
+
fields: {
|
|
17
|
+
base_balance: balance.Balance,
|
|
18
|
+
quote_balance: balance.Balance,
|
|
19
|
+
deep_balance: balance.Balance,
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
export const FlashLoan = new MoveStruct({
|
|
23
|
+
name: `${$moduleName}::FlashLoan`,
|
|
24
|
+
fields: {
|
|
25
|
+
pool_id: bcs.Address,
|
|
26
|
+
borrow_quantity: bcs.u64(),
|
|
27
|
+
type_name: type_name.TypeName,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
export const FlashLoanBorrowed = new MoveStruct({
|
|
31
|
+
name: `${$moduleName}::FlashLoanBorrowed`,
|
|
32
|
+
fields: {
|
|
33
|
+
pool_id: bcs.Address,
|
|
34
|
+
borrow_quantity: bcs.u64(),
|
|
35
|
+
type_name: type_name.TypeName,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
// Copyright (c) Mysten Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import type { BcsType, TypeTag } from '@haneullabs/haneul/bcs';
|
|
4
|
+
import { bcs, TypeTagSerializer, BcsStruct, BcsEnum, BcsTuple } from '@haneullabs/haneul/bcs';
|
|
5
|
+
import { normalizeHaneulAddress } from '@haneullabs/haneul/utils';
|
|
6
|
+
import type { TransactionArgument } from '@haneullabs/haneul/transactions';
|
|
7
|
+
import { isArgument } from '@haneullabs/haneul/transactions';
|
|
8
|
+
import { ValidationError, ErrorMessages } from '../../utils/errors.js';
|
|
9
|
+
|
|
10
|
+
const MOVE_STDLIB_ADDRESS = normalizeHaneulAddress('0x1');
|
|
11
|
+
const HANEUL_FRAMEWORK_ADDRESS = normalizeHaneulAddress('0x2');
|
|
12
|
+
const HANEUL_SYSTEM_ADDRESS = normalizeHaneulAddress('0x3');
|
|
13
|
+
|
|
14
|
+
export type RawTransactionArgument<T> = T | TransactionArgument;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @description Get the BCS schema for a given type tag
|
|
18
|
+
* @param {string | TypeTag} typeTag - The Move type tag to get the schema for
|
|
19
|
+
* @returns {BcsType<any> | null} The BCS schema if found, null otherwise
|
|
20
|
+
*/
|
|
21
|
+
export function getPureBcsSchema(typeTag: string | TypeTag): BcsType<any> | null {
|
|
22
|
+
const parsedTag = typeof typeTag === 'string' ? TypeTagSerializer.parseFromStr(typeTag) : typeTag;
|
|
23
|
+
|
|
24
|
+
if ('u8' in parsedTag) {
|
|
25
|
+
return bcs.U8;
|
|
26
|
+
} else if ('u16' in parsedTag) {
|
|
27
|
+
return bcs.U16;
|
|
28
|
+
} else if ('u32' in parsedTag) {
|
|
29
|
+
return bcs.U32;
|
|
30
|
+
} else if ('u64' in parsedTag) {
|
|
31
|
+
return bcs.U64;
|
|
32
|
+
} else if ('u128' in parsedTag) {
|
|
33
|
+
return bcs.U128;
|
|
34
|
+
} else if ('u256' in parsedTag) {
|
|
35
|
+
return bcs.U256;
|
|
36
|
+
} else if ('address' in parsedTag) {
|
|
37
|
+
return bcs.Address;
|
|
38
|
+
} else if ('bool' in parsedTag) {
|
|
39
|
+
return bcs.Bool;
|
|
40
|
+
} else if ('vector' in parsedTag) {
|
|
41
|
+
const type = getPureBcsSchema(parsedTag.vector);
|
|
42
|
+
return type ? bcs.vector(type) : null;
|
|
43
|
+
} else if ('struct' in parsedTag) {
|
|
44
|
+
const structTag = parsedTag.struct;
|
|
45
|
+
const pkg = normalizeHaneulAddress(parsedTag.struct.address);
|
|
46
|
+
|
|
47
|
+
if (pkg === MOVE_STDLIB_ADDRESS) {
|
|
48
|
+
if (
|
|
49
|
+
(structTag.module === 'ascii' || structTag.module === 'string') &&
|
|
50
|
+
structTag.name === 'String'
|
|
51
|
+
) {
|
|
52
|
+
return bcs.String;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (structTag.module === 'option' && structTag.name === 'Option') {
|
|
56
|
+
const type = getPureBcsSchema(structTag.typeParams[0]!);
|
|
57
|
+
return type ? bcs.vector(type) : null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (pkg === HANEUL_FRAMEWORK_ADDRESS && structTag.module === 'Object' && structTag.name === 'ID') {
|
|
62
|
+
return bcs.Address;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @description Normalize Move function arguments to TransactionArguments
|
|
71
|
+
* @param {unknown[] | object} args - The arguments to normalize
|
|
72
|
+
* @param {string[]} argTypes - The expected Move type strings for each argument
|
|
73
|
+
* @param {string[]} [parameterNames] - Optional parameter names when args is an object
|
|
74
|
+
* @returns {TransactionArgument[]} Array of normalized transaction arguments
|
|
75
|
+
* @throws {Error} If arguments are invalid or don't match expected types
|
|
76
|
+
*/
|
|
77
|
+
export function normalizeMoveArguments(
|
|
78
|
+
args: unknown[] | object,
|
|
79
|
+
argTypes: string[],
|
|
80
|
+
parameterNames?: string[],
|
|
81
|
+
): TransactionArgument[] {
|
|
82
|
+
const argLen = Array.isArray(args) ? args.length : Object.keys(args).length;
|
|
83
|
+
if (parameterNames && argLen !== parameterNames.length) {
|
|
84
|
+
throw new ValidationError(ErrorMessages.INVALID_ARGUMENT_COUNT(parameterNames.length, argLen));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const normalizedArgs: TransactionArgument[] = [];
|
|
88
|
+
|
|
89
|
+
let index = 0;
|
|
90
|
+
for (const [i, argType] of argTypes.entries()) {
|
|
91
|
+
if (argType === `${HANEUL_FRAMEWORK_ADDRESS}::deny_list::DenyList`) {
|
|
92
|
+
normalizedArgs.push((tx) => tx.object.denyList());
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (argType === `${HANEUL_FRAMEWORK_ADDRESS}::random::Random`) {
|
|
97
|
+
normalizedArgs.push((tx) => tx.object.random());
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (argType === `${HANEUL_FRAMEWORK_ADDRESS}::clock::Clock`) {
|
|
102
|
+
normalizedArgs.push((tx) => tx.object.clock());
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (argType === `${HANEUL_SYSTEM_ADDRESS}::haneul_system::HaneulSystemState`) {
|
|
107
|
+
normalizedArgs.push((tx) => tx.object.system());
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
let arg;
|
|
112
|
+
if (Array.isArray(args)) {
|
|
113
|
+
if (index >= args.length) {
|
|
114
|
+
throw new ValidationError(ErrorMessages.INVALID_ARGUMENT_COUNT(index + 1, args.length));
|
|
115
|
+
}
|
|
116
|
+
arg = args[index];
|
|
117
|
+
} else {
|
|
118
|
+
if (!parameterNames) {
|
|
119
|
+
throw new ValidationError(`Expected arguments to be passed as an array`);
|
|
120
|
+
}
|
|
121
|
+
const name = parameterNames[index];
|
|
122
|
+
arg = args[name as keyof typeof args];
|
|
123
|
+
|
|
124
|
+
if (arg == null) {
|
|
125
|
+
throw new ValidationError(ErrorMessages.PARAMETER_REQUIRED(name));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
index += 1;
|
|
130
|
+
|
|
131
|
+
if (typeof arg === 'function' || isArgument(arg)) {
|
|
132
|
+
normalizedArgs.push(arg as TransactionArgument);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const type = argTypes[i]!;
|
|
137
|
+
const bcsType = getPureBcsSchema(type);
|
|
138
|
+
|
|
139
|
+
if (bcsType) {
|
|
140
|
+
const bytes = bcsType.serialize(arg as never);
|
|
141
|
+
normalizedArgs.push((tx) => tx.pure(bytes));
|
|
142
|
+
continue;
|
|
143
|
+
} else if (typeof arg === 'string') {
|
|
144
|
+
normalizedArgs.push((tx) => tx.object(arg));
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
throw new ValidationError(ErrorMessages.INVALID_ARGUMENT(stringify(arg) as string, type));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return normalizedArgs;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export class MoveStruct<
|
|
155
|
+
T extends Record<string, BcsType<any>>,
|
|
156
|
+
const Name extends string = string,
|
|
157
|
+
> extends BcsStruct<T, Name> {}
|
|
158
|
+
|
|
159
|
+
export class MoveEnum<
|
|
160
|
+
T extends Record<string, BcsType<any> | null>,
|
|
161
|
+
const Name extends string,
|
|
162
|
+
> extends BcsEnum<T, Name> {}
|
|
163
|
+
|
|
164
|
+
export class MoveTuple<
|
|
165
|
+
T extends readonly BcsType<any>[],
|
|
166
|
+
const Name extends string,
|
|
167
|
+
> extends BcsTuple<T, Name> {}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @description Convert a value to string representation for error messages
|
|
171
|
+
* @param {unknown} val - The value to stringify
|
|
172
|
+
* @returns {unknown} String representation of the value
|
|
173
|
+
* @private
|
|
174
|
+
*/
|
|
175
|
+
function stringify(val: unknown): unknown {
|
|
176
|
+
if (typeof val === 'object') {
|
|
177
|
+
return JSON.stringify(val, (val: unknown) => val);
|
|
178
|
+
}
|
|
179
|
+
if (typeof val === 'bigint') {
|
|
180
|
+
return val.toString();
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return val;
|
|
184
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// Copyright (c) Mysten Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
// Main client and configuration
|
|
5
|
+
export { DeepBookClient } from './client.js';
|
|
6
|
+
export { DeepBookConfig } from './utils/config.js';
|
|
7
|
+
|
|
8
|
+
// Core contract classes
|
|
9
|
+
export { BalanceManagerContract } from './transactions/balanceManager.js';
|
|
10
|
+
export { DeepBookContract } from './transactions/deepbook.js';
|
|
11
|
+
export { DeepBookAdminContract } from './transactions/deepbookAdmin.js';
|
|
12
|
+
export { FlashLoanContract } from './transactions/flashLoans.js';
|
|
13
|
+
export { GovernanceContract } from './transactions/governance.js';
|
|
14
|
+
|
|
15
|
+
// Margin trading contracts
|
|
16
|
+
export { MarginAdminContract } from './transactions/marginAdmin.js';
|
|
17
|
+
export { MarginMaintainerContract } from './transactions/marginMaintainer.js';
|
|
18
|
+
export { MarginManagerContract } from './transactions/marginManager.js';
|
|
19
|
+
export { MarginPoolContract } from './transactions/marginPool.js';
|
|
20
|
+
export { PoolProxyContract } from './transactions/poolProxy.js';
|
|
21
|
+
export { MarginTPSLContract } from './transactions/marginTPSL.js';
|
|
22
|
+
|
|
23
|
+
// Pyth price feed integration
|
|
24
|
+
export { HaneulPythClient, HaneulPriceServiceConnection } from './pyth/pyth.js';
|
|
25
|
+
|
|
26
|
+
// BCS types for parsing on-chain data
|
|
27
|
+
export { Account, Balances, Order, OrderDeepPrice, VecSet } from './types/bcs.js';
|
|
28
|
+
|
|
29
|
+
// TypeScript interfaces and types
|
|
30
|
+
export type {
|
|
31
|
+
BalanceManager,
|
|
32
|
+
Coin,
|
|
33
|
+
Pool,
|
|
34
|
+
MarginManager,
|
|
35
|
+
MarginPool,
|
|
36
|
+
Environment,
|
|
37
|
+
Config,
|
|
38
|
+
} from './types/index.js';
|
|
39
|
+
|
|
40
|
+
// Trading parameter interfaces
|
|
41
|
+
export type {
|
|
42
|
+
PlaceLimitOrderParams,
|
|
43
|
+
PlaceMarketOrderParams,
|
|
44
|
+
PlaceMarginLimitOrderParams,
|
|
45
|
+
PlaceMarginMarketOrderParams,
|
|
46
|
+
SwapParams,
|
|
47
|
+
ProposalParams,
|
|
48
|
+
MarginProposalParams,
|
|
49
|
+
CreatePoolAdminParams,
|
|
50
|
+
CreatePermissionlessPoolParams,
|
|
51
|
+
SetEwmaParams,
|
|
52
|
+
PoolConfigParams,
|
|
53
|
+
MarginPoolConfigParams,
|
|
54
|
+
InterestConfigParams,
|
|
55
|
+
} from './types/index.js';
|
|
56
|
+
|
|
57
|
+
// TPSL (Take Profit / Stop Loss) parameter interfaces
|
|
58
|
+
export type {
|
|
59
|
+
PendingLimitOrderParams,
|
|
60
|
+
PendingMarketOrderParams,
|
|
61
|
+
AddConditionalOrderParams,
|
|
62
|
+
} from './types/index.js';
|
|
63
|
+
|
|
64
|
+
// Enums for trading
|
|
65
|
+
export { OrderType, SelfMatchingOptions } from './types/index.js';
|
|
66
|
+
|
|
67
|
+
// Constants and configuration maps
|
|
68
|
+
export type { CoinMap, PoolMap, MarginPoolMap } from './utils/constants.js';
|
|
69
|
+
export {
|
|
70
|
+
DEEP_SCALAR,
|
|
71
|
+
FLOAT_SCALAR,
|
|
72
|
+
GAS_BUDGET,
|
|
73
|
+
MAX_TIMESTAMP,
|
|
74
|
+
POOL_CREATION_FEE_DEEP,
|
|
75
|
+
PRICE_INFO_OBJECT_MAX_AGE_MS,
|
|
76
|
+
} from './utils/config.js';
|
|
77
|
+
|
|
78
|
+
// Error handling utilities
|
|
79
|
+
export {
|
|
80
|
+
DeepBookError,
|
|
81
|
+
ResourceNotFoundError,
|
|
82
|
+
ConfigurationError,
|
|
83
|
+
ValidationError,
|
|
84
|
+
ErrorMessages,
|
|
85
|
+
} from './utils/errors.js';
|
|
86
|
+
|
|
87
|
+
// Validation utilities
|
|
88
|
+
export {
|
|
89
|
+
validateRequired,
|
|
90
|
+
validateAddress,
|
|
91
|
+
validatePositiveNumber,
|
|
92
|
+
validateNonNegativeNumber,
|
|
93
|
+
validateRange,
|
|
94
|
+
validateNonEmptyArray,
|
|
95
|
+
} from './utils/validation.js';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Copyright (c) Mysten Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import type { AxiosInstance } from 'axios';
|
|
5
|
+
import axiosRetry from 'axios-retry';
|
|
6
|
+
|
|
7
|
+
export type HexString = string;
|
|
8
|
+
export type PriceFeedRequestConfig = {
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
binary?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type PriceServiceConnectionConfig = {
|
|
13
|
+
timeout?: number;
|
|
14
|
+
httpRetries?: number;
|
|
15
|
+
};
|
|
16
|
+
export class PriceServiceConnection {
|
|
17
|
+
private httpClient: AxiosInstance;
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new Connection.
|
|
20
|
+
*
|
|
21
|
+
* @param endpoint endpoint URL to the price service.
|
|
22
|
+
* @param config Optional configuration for custom setups.
|
|
23
|
+
*/
|
|
24
|
+
constructor(endpoint: string, config?: PriceServiceConnectionConfig) {
|
|
25
|
+
this.httpClient = axios.create({
|
|
26
|
+
baseURL: endpoint,
|
|
27
|
+
timeout: config?.timeout || 5000,
|
|
28
|
+
});
|
|
29
|
+
axiosRetry(this.httpClient, {
|
|
30
|
+
retries: config?.httpRetries || 3,
|
|
31
|
+
retryDelay: axiosRetry.exponentialDelay,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Fetch latest VAAs of given price IDs.
|
|
36
|
+
*
|
|
37
|
+
* @param priceIds Array of hex-encoded price IDs.
|
|
38
|
+
* @returns Array of base64 encoded VAAs.
|
|
39
|
+
*/
|
|
40
|
+
async getLatestVaas(priceIds: HexString[]): Promise<string[]> {
|
|
41
|
+
const response = await this.httpClient.get('/api/latest_vaas', {
|
|
42
|
+
params: {
|
|
43
|
+
ids: priceIds,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
return response.data;
|
|
47
|
+
}
|
|
48
|
+
}
|