@haneullabs/deepbook-v3 0.1.0 → 1.0.11
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 +268 -81
- package/dist/client.d.mts +957 -0
- package/dist/client.d.mts.map +1 -0
- package/dist/client.mjs +2293 -0
- package/dist/client.mjs.map +1 -0
- package/dist/contracts/deepbook/account.d.mts +38 -0
- package/dist/contracts/deepbook/account.d.mts.map +1 -0
- package/dist/contracts/deepbook/account.mjs +31 -0
- package/dist/contracts/deepbook/account.mjs.map +1 -0
- package/dist/contracts/deepbook/balances.d.mts +13 -0
- package/dist/contracts/deepbook/balances.d.mts.map +1 -0
- package/dist/contracts/deepbook/balances.mjs +24 -0
- package/dist/contracts/deepbook/balances.mjs.map +1 -0
- package/dist/contracts/deepbook/deep_price.d.mts +13 -0
- package/dist/contracts/deepbook/deep_price.d.mts.map +1 -0
- package/dist/contracts/deepbook/deep_price.mjs +49 -0
- package/dist/contracts/deepbook/deep_price.mjs.map +1 -0
- package/dist/contracts/deepbook/deps/haneul/vec_set.d.mts +22 -0
- package/dist/contracts/deepbook/deps/haneul/vec_set.d.mts.map +1 -0
- package/dist/contracts/deepbook/deps/haneul/vec_set.mjs +26 -0
- package/dist/contracts/deepbook/deps/haneul/vec_set.mjs.map +1 -0
- package/dist/contracts/deepbook/order.d.mts +24 -0
- package/dist/contracts/deepbook/order.d.mts.map +1 -0
- package/dist/contracts/deepbook/order.mjs +63 -0
- package/dist/contracts/deepbook/order.mjs.map +1 -0
- package/dist/contracts/pyth/data_source.mjs +20 -0
- package/dist/contracts/pyth/data_source.mjs.map +1 -0
- package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs +21 -0
- package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs.map +1 -0
- package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +19 -0
- package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -0
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.mjs +16 -0
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.mjs.map +1 -0
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.mjs +16 -0
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.mjs.map +1 -0
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.mjs +16 -0
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.mjs.map +1 -0
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs +16 -0
- package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs.map +1 -0
- package/dist/contracts/pyth/i64.mjs +19 -0
- package/dist/contracts/pyth/i64.mjs.map +1 -0
- package/dist/contracts/pyth/price.mjs +22 -0
- package/dist/contracts/pyth/price.mjs.map +1 -0
- package/dist/contracts/pyth/price_feed.mjs +21 -0
- package/dist/contracts/pyth/price_feed.mjs.map +1 -0
- package/dist/contracts/pyth/price_identifier.mjs +16 -0
- package/dist/contracts/pyth/price_identifier.mjs.map +1 -0
- package/dist/contracts/pyth/price_info.mjs +28 -0
- package/dist/contracts/pyth/price_info.mjs.map +1 -0
- package/dist/contracts/pyth/state.mjs +36 -0
- package/dist/contracts/pyth/state.mjs.map +1 -0
- package/dist/contracts/utils/index.d.mts +34 -0
- package/dist/contracts/utils/index.d.mts.map +1 -0
- package/dist/contracts/utils/index.mjs +35 -0
- package/dist/contracts/utils/index.mjs.map +1 -0
- package/dist/contracts/wormhole/bytes32.mjs +16 -0
- package/dist/contracts/wormhole/bytes32.mjs.map +1 -0
- package/dist/contracts/wormhole/consumed_vaas.mjs +16 -0
- package/dist/contracts/wormhole/consumed_vaas.mjs.map +1 -0
- package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs +16 -0
- package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs.map +1 -0
- package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs +21 -0
- package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs.map +1 -0
- package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +19 -0
- package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -0
- package/dist/contracts/wormhole/external_address.mjs +16 -0
- package/dist/contracts/wormhole/external_address.mjs.map +1 -0
- package/dist/contracts/wormhole/fee_collector.mjs +20 -0
- package/dist/contracts/wormhole/fee_collector.mjs.map +1 -0
- package/dist/contracts/wormhole/set.mjs +16 -0
- package/dist/contracts/wormhole/set.mjs.map +1 -0
- package/dist/contracts/wormhole/state.mjs +31 -0
- package/dist/contracts/wormhole/state.mjs.map +1 -0
- package/dist/index.d.mts +25 -0
- package/dist/index.mjs +26 -0
- package/dist/pyth/PriceServiceConnection.d.mts +26 -0
- package/dist/pyth/PriceServiceConnection.d.mts.map +1 -0
- package/dist/pyth/PriceServiceConnection.mjs +35 -0
- package/dist/pyth/PriceServiceConnection.mjs.map +1 -0
- package/dist/pyth/pyth-helpers.mjs +18 -0
- package/dist/pyth/pyth-helpers.mjs.map +1 -0
- package/dist/pyth/pyth.d.mts +69 -0
- package/dist/pyth/pyth.d.mts.map +1 -0
- package/dist/pyth/pyth.mjs +220 -0
- package/dist/pyth/pyth.mjs.map +1 -0
- package/dist/transactions/balanceManager.d.mts +174 -0
- package/dist/transactions/balanceManager.d.mts.map +1 -0
- package/dist/transactions/balanceManager.mjs +233 -0
- package/dist/transactions/balanceManager.mjs.map +1 -0
- package/dist/transactions/deepbook.d.mts +490 -0
- package/dist/transactions/deepbook.d.mts.map +1 -0
- package/dist/transactions/deepbook.mjs +978 -0
- package/dist/transactions/deepbook.mjs.map +1 -0
- package/dist/transactions/deepbookAdmin.d.mts +111 -0
- package/dist/transactions/deepbookAdmin.d.mts.map +1 -0
- package/dist/transactions/deepbookAdmin.mjs +221 -0
- package/dist/transactions/deepbookAdmin.mjs.map +1 -0
- package/dist/transactions/flashLoans.d.mts +62 -0
- package/dist/transactions/flashLoans.d.mts.map +1 -0
- package/dist/transactions/flashLoans.mjs +75 -0
- package/dist/transactions/flashLoans.mjs.map +1 -0
- package/dist/transactions/governance.d.mts +48 -0
- package/dist/transactions/governance.d.mts.map +1 -0
- package/dist/transactions/governance.mjs +90 -0
- package/dist/transactions/governance.mjs.map +1 -0
- package/dist/transactions/marginAdmin.d.mts +139 -0
- package/dist/transactions/marginAdmin.d.mts.map +1 -0
- package/dist/transactions/marginAdmin.mjs +249 -0
- package/dist/transactions/marginAdmin.mjs.map +1 -0
- package/dist/transactions/marginLiquidations.d.mts +67 -0
- package/dist/transactions/marginLiquidations.d.mts.map +1 -0
- package/dist/transactions/marginLiquidations.mjs +109 -0
- package/dist/transactions/marginLiquidations.mjs.map +1 -0
- package/dist/transactions/marginMaintainer.d.mts +86 -0
- package/dist/transactions/marginMaintainer.d.mts.map +1 -0
- package/dist/transactions/marginMaintainer.mjs +160 -0
- package/dist/transactions/marginMaintainer.mjs.map +1 -0
- package/dist/transactions/marginManager.d.mts +255 -0
- package/dist/transactions/marginManager.d.mts.map +1 -0
- package/dist/transactions/marginManager.mjs +558 -0
- package/dist/transactions/marginManager.mjs.map +1 -0
- package/dist/transactions/marginPool.d.mts +140 -0
- package/dist/transactions/marginPool.d.mts.map +1 -0
- package/dist/transactions/marginPool.mjs +206 -0
- package/dist/transactions/marginPool.mjs.map +1 -0
- package/dist/transactions/marginRegistry.d.mts +100 -0
- package/dist/transactions/marginRegistry.d.mts.map +1 -0
- package/dist/transactions/marginRegistry.mjs +128 -0
- package/dist/transactions/marginRegistry.mjs.map +1 -0
- package/dist/transactions/marginTPSL.d.mts +100 -0
- package/dist/transactions/marginTPSL.d.mts.map +1 -0
- package/dist/transactions/marginTPSL.mjs +175 -0
- package/dist/transactions/marginTPSL.mjs.map +1 -0
- package/dist/transactions/poolProxy.d.mts +123 -0
- package/dist/transactions/poolProxy.d.mts.map +1 -0
- package/dist/transactions/poolProxy.mjs +336 -0
- package/dist/transactions/poolProxy.mjs.map +1 -0
- package/dist/types/bcs.d.mts +5 -0
- package/dist/types/bcs.mjs +7 -0
- package/dist/types/index.d.mts +237 -0
- package/dist/types/index.d.mts.map +1 -0
- package/dist/types/index.mjs +18 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/utils/config.d.mts +82 -0
- package/dist/utils/config.d.mts.map +1 -0
- package/dist/utils/config.mjs +88 -0
- package/dist/utils/config.mjs.map +1 -0
- package/dist/utils/constants.d.mts +85 -0
- package/dist/utils/constants.d.mts.map +1 -0
- package/dist/utils/constants.mjs +384 -0
- package/dist/utils/constants.mjs.map +1 -0
- package/dist/utils/errors.d.mts +46 -0
- package/dist/utils/errors.d.mts.map +1 -0
- package/dist/utils/errors.mjs +59 -0
- package/dist/utils/errors.mjs.map +1 -0
- package/dist/{cjs/utils/validation.d.ts → utils/validation.d.mts} +11 -7
- package/dist/utils/validation.d.mts.map +1 -0
- package/dist/utils/validation.mjs +76 -0
- package/dist/utils/validation.mjs.map +1 -0
- package/package.json +29 -26
- package/src/client.ts +1016 -545
- package/src/contracts/deepbook/account.ts +15 -15
- package/src/contracts/deepbook/balance_manager.ts +343 -57
- package/src/contracts/deepbook/balances.ts +3 -2
- package/src/contracts/deepbook/big_vector.ts +6 -7
- package/src/contracts/deepbook/book.ts +3 -2
- package/src/contracts/deepbook/constants.ts +95 -3
- package/src/contracts/deepbook/deep_price.ts +7 -7
- package/src/contracts/deepbook/deps/{sui → haneul}/bag.ts +8 -8
- package/src/contracts/deepbook/deps/{sui → haneul}/balance.ts +4 -3
- package/src/contracts/deepbook/deps/{sui → haneul}/table.ts +6 -6
- package/src/contracts/deepbook/deps/{sui → haneul}/vec_map.ts +4 -4
- package/src/contracts/deepbook/deps/{sui → haneul}/vec_set.ts +4 -4
- package/src/contracts/deepbook/deps/{sui → haneul}/versioned.ts +4 -4
- package/src/contracts/deepbook/deps/std/type_name.ts +3 -2
- package/src/contracts/deepbook/ewma.ts +14 -3
- package/src/contracts/deepbook/fill.ts +21 -21
- package/src/contracts/deepbook/governance.ts +4 -3
- package/src/contracts/deepbook/history.ts +4 -3
- package/src/contracts/deepbook/math.ts +15 -15
- package/src/contracts/deepbook/order.ts +16 -16
- package/src/contracts/deepbook/order_info.ts +39 -27
- package/src/contracts/deepbook/order_query.ts +12 -12
- package/src/contracts/deepbook/pool.ts +883 -526
- package/src/contracts/deepbook/registry.ts +149 -38
- package/src/contracts/deepbook/state.ts +14 -3
- package/src/contracts/deepbook/trade_params.ts +3 -2
- package/src/contracts/deepbook/vault.ts +5 -4
- package/src/contracts/pyth/batch_price_attestation.ts +92 -0
- package/src/contracts/pyth/contract_upgrade.ts +54 -0
- package/src/contracts/pyth/data_source.ts +64 -0
- package/src/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.ts +15 -0
- package/src/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.ts +13 -0
- package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.ts +12 -0
- package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.ts +13 -0
- package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.ts +13 -0
- package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.ts +12 -0
- package/src/contracts/pyth/deserialize.ts +117 -0
- package/src/contracts/pyth/event.ts +20 -0
- package/src/contracts/pyth/governance.ts +113 -0
- package/src/contracts/pyth/governance_action.ts +130 -0
- package/src/contracts/pyth/governance_instruction.ts +98 -0
- package/src/contracts/pyth/hot_potato_vector.ts +70 -0
- package/src/contracts/pyth/i64.ts +94 -0
- package/src/contracts/pyth/merkle_tree.ts +41 -0
- package/src/contracts/pyth/migrate.ts +29 -0
- package/src/contracts/pyth/price.ts +102 -0
- package/src/contracts/pyth/price_feed.ts +101 -0
- package/src/contracts/pyth/price_identifier.ts +46 -0
- package/src/contracts/pyth/price_info.ts +220 -0
- package/src/contracts/pyth/price_status.ts +74 -0
- package/src/contracts/pyth/pyth.ts +236 -0
- package/src/contracts/pyth/set.ts +93 -0
- package/src/contracts/pyth/set_data_sources.ts +14 -0
- package/src/contracts/pyth/set_fee_recipient.ts +13 -0
- package/src/contracts/pyth/set_governance_data_source.ts +16 -0
- package/src/contracts/pyth/set_stale_price_threshold.ts +13 -0
- package/src/contracts/pyth/set_update_fee.ts +14 -0
- package/src/contracts/pyth/setup.ts +12 -0
- package/src/contracts/pyth/state.ts +227 -0
- package/src/contracts/pyth/version_control.ts +25 -0
- package/src/contracts/utils/index.ts +100 -50
- package/src/contracts/wormhole/bytes32.ts +12 -0
- package/src/contracts/wormhole/consumed_vaas.ts +13 -0
- package/src/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.ts +12 -0
- package/src/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.ts +15 -0
- package/src/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.ts +13 -0
- package/src/contracts/wormhole/external_address.ts +13 -0
- package/src/contracts/wormhole/fee_collector.ts +15 -0
- package/src/contracts/wormhole/set.ts +12 -0
- package/src/contracts/wormhole/state.ts +25 -0
- package/src/index.ts +17 -3
- package/src/pyth/pyth.ts +51 -50
- package/src/transactions/deepbook.ts +31 -12
- package/src/transactions/deepbookAdmin.ts +3 -3
- package/src/transactions/marginAdmin.ts +11 -8
- package/src/transactions/marginMaintainer.ts +23 -12
- package/src/transactions/marginManager.ts +104 -28
- package/src/transactions/marginPool.ts +5 -6
- package/src/transactions/marginTPSL.ts +5 -5
- package/src/transactions/poolProxy.ts +50 -0
- package/src/types/bcs.ts +1 -1
- package/src/types/index.ts +19 -2
- package/src/utils/config.ts +12 -14
- package/src/utils/constants.ts +44 -12
- package/src/utils/validation.ts +1 -1
- package/dist/cjs/client.d.ts +0 -861
- package/dist/cjs/client.js +0 -1982
- package/dist/cjs/client.js.map +0 -7
- package/dist/cjs/contracts/deepbook/account.d.ts +0 -105
- package/dist/cjs/contracts/deepbook/account.js +0 -163
- package/dist/cjs/contracts/deepbook/account.js.map +0 -7
- package/dist/cjs/contracts/deepbook/balance_manager.d.ts +0 -268
- package/dist/cjs/contracts/deepbook/balance_manager.js +0 -361
- package/dist/cjs/contracts/deepbook/balance_manager.js.map +0 -7
- package/dist/cjs/contracts/deepbook/balances.d.ts +0 -10
- package/dist/cjs/contracts/deepbook/balances.js +0 -35
- package/dist/cjs/contracts/deepbook/balances.js.map +0 -7
- package/dist/cjs/contracts/deepbook/big_vector.d.ts +0 -62
- package/dist/cjs/contracts/deepbook/big_vector.js +0 -80
- package/dist/cjs/contracts/deepbook/big_vector.js.map +0 -7
- package/dist/cjs/contracts/deepbook/book.d.ts +0 -34
- package/dist/cjs/contracts/deepbook/book.js +0 -50
- package/dist/cjs/contracts/deepbook/book.js.map +0 -7
- package/dist/cjs/contracts/deepbook/constants.d.ts +0 -176
- package/dist/cjs/contracts/deepbook/constants.js +0 -338
- package/dist/cjs/contracts/deepbook/constants.js.map +0 -7
- package/dist/cjs/contracts/deepbook/deep_price.d.ts +0 -60
- package/dist/cjs/contracts/deepbook/deep_price.js +0 -87
- package/dist/cjs/contracts/deepbook/deep_price.js.map +0 -7
- package/dist/cjs/contracts/deepbook/deps/std/type_name.d.ts +0 -14
- package/dist/cjs/contracts/deepbook/deps/std/type_name.js +0 -42
- package/dist/cjs/contracts/deepbook/deps/std/type_name.js.map +0 -7
- package/dist/cjs/contracts/deepbook/deps/sui/bag.d.ts +0 -33
- package/dist/cjs/contracts/deepbook/deps/sui/bag.js +0 -47
- package/dist/cjs/contracts/deepbook/deps/sui/bag.js.map +0 -7
- package/dist/cjs/contracts/deepbook/deps/sui/balance.d.ts +0 -9
- package/dist/cjs/contracts/deepbook/deps/sui/balance.js +0 -33
- package/dist/cjs/contracts/deepbook/deps/sui/balance.js.map +0 -7
- package/dist/cjs/contracts/deepbook/deps/sui/object.d.ts +0 -5
- package/dist/cjs/contracts/deepbook/deps/sui/object.js +0 -33
- package/dist/cjs/contracts/deepbook/deps/sui/object.js.map +0 -7
- package/dist/cjs/contracts/deepbook/deps/sui/table.d.ts +0 -28
- package/dist/cjs/contracts/deepbook/deps/sui/table.js +0 -47
- package/dist/cjs/contracts/deepbook/deps/sui/table.js.map +0 -7
- package/dist/cjs/contracts/deepbook/deps/sui/vec_map.d.ts +0 -27
- package/dist/cjs/contracts/deepbook/deps/sui/vec_map.js +0 -45
- package/dist/cjs/contracts/deepbook/deps/sui/vec_map.js.map +0 -7
- package/dist/cjs/contracts/deepbook/deps/sui/vec_set.d.ts +0 -15
- package/dist/cjs/contracts/deepbook/deps/sui/vec_set.js +0 -35
- package/dist/cjs/contracts/deepbook/deps/sui/vec_set.js.map +0 -7
- package/dist/cjs/contracts/deepbook/deps/sui/versioned.d.ts +0 -7
- package/dist/cjs/contracts/deepbook/deps/sui/versioned.js +0 -45
- package/dist/cjs/contracts/deepbook/deps/sui/versioned.js.map +0 -7
- package/dist/cjs/contracts/deepbook/ewma.d.ts +0 -17
- package/dist/cjs/contracts/deepbook/ewma.js +0 -39
- package/dist/cjs/contracts/deepbook/ewma.js.map +0 -7
- package/dist/cjs/contracts/deepbook/fill.d.ts +0 -153
- package/dist/cjs/contracts/deepbook/fill.js +0 -251
- package/dist/cjs/contracts/deepbook/fill.js.map +0 -7
- package/dist/cjs/contracts/deepbook/governance.d.ts +0 -63
- package/dist/cjs/contracts/deepbook/governance.js +0 -79
- package/dist/cjs/contracts/deepbook/governance.js.map +0 -7
- package/dist/cjs/contracts/deepbook/history.d.ts +0 -60
- package/dist/cjs/contracts/deepbook/history.js +0 -78
- package/dist/cjs/contracts/deepbook/history.js.map +0 -7
- package/dist/cjs/contracts/deepbook/math.d.ts +0 -94
- package/dist/cjs/contracts/deepbook/math.js +0 -132
- package/dist/cjs/contracts/deepbook/math.js.map +0 -7
- package/dist/cjs/contracts/deepbook/order.d.ts +0 -135
- package/dist/cjs/contracts/deepbook/order.js +0 -218
- package/dist/cjs/contracts/deepbook/order.js.map +0 -7
- package/dist/cjs/contracts/deepbook/order_info.d.ts +0 -296
- package/dist/cjs/contracts/deepbook/order_info.js +0 -386
- package/dist/cjs/contracts/deepbook/order_info.js.map +0 -7
- package/dist/cjs/contracts/deepbook/order_query.d.ts +0 -85
- package/dist/cjs/contracts/deepbook/order_query.js +0 -96
- package/dist/cjs/contracts/deepbook/order_query.js.map +0 -7
- package/dist/cjs/contracts/deepbook/pool.d.ts +0 -1218
- package/dist/cjs/contracts/deepbook/pool.js +0 -1236
- package/dist/cjs/contracts/deepbook/pool.js.map +0 -7
- package/dist/cjs/contracts/deepbook/registry.d.ts +0 -134
- package/dist/cjs/contracts/deepbook/registry.js +0 -182
- package/dist/cjs/contracts/deepbook/registry.js.map +0 -7
- package/dist/cjs/contracts/deepbook/state.d.ts +0 -117
- package/dist/cjs/contracts/deepbook/state.js +0 -104
- package/dist/cjs/contracts/deepbook/state.js.map +0 -7
- package/dist/cjs/contracts/deepbook/trade_params.d.ts +0 -7
- package/dist/cjs/contracts/deepbook/trade_params.js +0 -35
- package/dist/cjs/contracts/deepbook/trade_params.js.map +0 -7
- package/dist/cjs/contracts/deepbook/vault.d.ts +0 -30
- package/dist/cjs/contracts/deepbook/vault.js +0 -65
- package/dist/cjs/contracts/deepbook/vault.js.map +0 -7
- package/dist/cjs/contracts/utils/index.d.ts +0 -25
- package/dist/cjs/contracts/utils/index.js +0 -148
- package/dist/cjs/contracts/utils/index.js.map +0 -7
- package/dist/cjs/index.d.ts +0 -23
- package/dist/cjs/index.js +0 -81
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/package.json +0 -4
- package/dist/cjs/pyth/PriceServiceConnection.d.ts +0 -26
- package/dist/cjs/pyth/PriceServiceConnection.js +0 -68
- package/dist/cjs/pyth/PriceServiceConnection.js.map +0 -7
- package/dist/cjs/pyth/pyth-helpers.d.ts +0 -7
- package/dist/cjs/pyth/pyth-helpers.js +0 -36
- package/dist/cjs/pyth/pyth-helpers.js.map +0 -7
- package/dist/cjs/pyth/pyth.d.ts +0 -65
- package/dist/cjs/pyth/pyth.js +0 -269
- package/dist/cjs/pyth/pyth.js.map +0 -7
- package/dist/cjs/transactions/balanceManager.d.ts +0 -168
- package/dist/cjs/transactions/balanceManager.js +0 -384
- package/dist/cjs/transactions/balanceManager.js.map +0 -7
- package/dist/cjs/transactions/deepbook.d.ts +0 -477
- package/dist/cjs/transactions/deepbook.js +0 -1335
- package/dist/cjs/transactions/deepbook.js.map +0 -7
- package/dist/cjs/transactions/deepbookAdmin.d.ts +0 -105
- package/dist/cjs/transactions/deepbookAdmin.js +0 -334
- package/dist/cjs/transactions/deepbookAdmin.js.map +0 -7
- package/dist/cjs/transactions/flashLoans.d.ts +0 -56
- package/dist/cjs/transactions/flashLoans.js +0 -124
- package/dist/cjs/transactions/flashLoans.js.map +0 -7
- package/dist/cjs/transactions/governance.d.ts +0 -42
- package/dist/cjs/transactions/governance.js +0 -135
- package/dist/cjs/transactions/governance.js.map +0 -7
- package/dist/cjs/transactions/marginAdmin.d.ts +0 -133
- package/dist/cjs/transactions/marginAdmin.js +0 -393
- package/dist/cjs/transactions/marginAdmin.js.map +0 -7
- package/dist/cjs/transactions/marginLiquidations.d.ts +0 -61
- package/dist/cjs/transactions/marginLiquidations.js +0 -173
- package/dist/cjs/transactions/marginLiquidations.js.map +0 -7
- package/dist/cjs/transactions/marginMaintainer.d.ts +0 -80
- package/dist/cjs/transactions/marginMaintainer.js +0 -251
- package/dist/cjs/transactions/marginMaintainer.js.map +0 -7
- package/dist/cjs/transactions/marginManager.d.ts +0 -236
- package/dist/cjs/transactions/marginManager.js +0 -688
- package/dist/cjs/transactions/marginManager.js.map +0 -7
- package/dist/cjs/transactions/marginPool.d.ts +0 -134
- package/dist/cjs/transactions/marginPool.js +0 -330
- package/dist/cjs/transactions/marginPool.js.map +0 -7
- package/dist/cjs/transactions/marginRegistry.d.ts +0 -94
- package/dist/cjs/transactions/marginRegistry.js +0 -221
- package/dist/cjs/transactions/marginRegistry.js.map +0 -7
- package/dist/cjs/transactions/marginTPSL.d.ts +0 -93
- package/dist/cjs/transactions/marginTPSL.js +0 -286
- package/dist/cjs/transactions/marginTPSL.js.map +0 -7
- package/dist/cjs/transactions/poolProxy.d.ts +0 -104
- package/dist/cjs/transactions/poolProxy.js +0 -435
- package/dist/cjs/transactions/poolProxy.js.map +0 -7
- package/dist/cjs/types/bcs.d.ts +0 -5
- package/dist/cjs/types/bcs.js +0 -33
- package/dist/cjs/types/bcs.js.map +0 -7
- package/dist/cjs/types/index.d.ts +0 -218
- package/dist/cjs/types/index.js +0 -38
- package/dist/cjs/types/index.js.map +0 -7
- package/dist/cjs/utils/config.d.ts +0 -65
- package/dist/cjs/utils/config.js +0 -144
- package/dist/cjs/utils/config.js.map +0 -7
- package/dist/cjs/utils/constants.d.ts +0 -76
- package/dist/cjs/utils/constants.js +0 -382
- package/dist/cjs/utils/constants.js.map +0 -7
- package/dist/cjs/utils/errors.d.ts +0 -42
- package/dist/cjs/utils/errors.js +0 -70
- package/dist/cjs/utils/errors.js.map +0 -7
- package/dist/cjs/utils/validation.js +0 -67
- package/dist/cjs/utils/validation.js.map +0 -7
- package/dist/esm/client.d.ts +0 -861
- package/dist/esm/client.js +0 -1967
- package/dist/esm/client.js.map +0 -7
- package/dist/esm/contracts/deepbook/account.d.ts +0 -105
- package/dist/esm/contracts/deepbook/account.js +0 -133
- package/dist/esm/contracts/deepbook/account.js.map +0 -7
- package/dist/esm/contracts/deepbook/balance_manager.d.ts +0 -268
- package/dist/esm/contracts/deepbook/balance_manager.js +0 -331
- package/dist/esm/contracts/deepbook/balance_manager.js.map +0 -7
- package/dist/esm/contracts/deepbook/balances.d.ts +0 -10
- package/dist/esm/contracts/deepbook/balances.js +0 -15
- package/dist/esm/contracts/deepbook/balances.js.map +0 -7
- package/dist/esm/contracts/deepbook/big_vector.d.ts +0 -62
- package/dist/esm/contracts/deepbook/big_vector.js +0 -50
- package/dist/esm/contracts/deepbook/big_vector.js.map +0 -7
- package/dist/esm/contracts/deepbook/book.d.ts +0 -34
- package/dist/esm/contracts/deepbook/book.js +0 -20
- package/dist/esm/contracts/deepbook/book.js.map +0 -7
- package/dist/esm/contracts/deepbook/constants.d.ts +0 -176
- package/dist/esm/contracts/deepbook/constants.js +0 -318
- package/dist/esm/contracts/deepbook/constants.js.map +0 -7
- package/dist/esm/contracts/deepbook/deep_price.d.ts +0 -60
- package/dist/esm/contracts/deepbook/deep_price.js +0 -67
- package/dist/esm/contracts/deepbook/deep_price.js.map +0 -7
- package/dist/esm/contracts/deepbook/deps/std/type_name.d.ts +0 -14
- package/dist/esm/contracts/deepbook/deps/std/type_name.js +0 -22
- package/dist/esm/contracts/deepbook/deps/std/type_name.js.map +0 -7
- package/dist/esm/contracts/deepbook/deps/sui/bag.d.ts +0 -33
- package/dist/esm/contracts/deepbook/deps/sui/bag.js +0 -17
- package/dist/esm/contracts/deepbook/deps/sui/bag.js.map +0 -7
- package/dist/esm/contracts/deepbook/deps/sui/balance.d.ts +0 -9
- package/dist/esm/contracts/deepbook/deps/sui/balance.js +0 -13
- package/dist/esm/contracts/deepbook/deps/sui/balance.js.map +0 -7
- package/dist/esm/contracts/deepbook/deps/sui/object.d.ts +0 -5
- package/dist/esm/contracts/deepbook/deps/sui/object.js +0 -13
- package/dist/esm/contracts/deepbook/deps/sui/object.js.map +0 -7
- package/dist/esm/contracts/deepbook/deps/sui/table.d.ts +0 -28
- package/dist/esm/contracts/deepbook/deps/sui/table.js +0 -17
- package/dist/esm/contracts/deepbook/deps/sui/table.js.map +0 -7
- package/dist/esm/contracts/deepbook/deps/sui/vec_map.d.ts +0 -27
- package/dist/esm/contracts/deepbook/deps/sui/vec_map.js +0 -25
- package/dist/esm/contracts/deepbook/deps/sui/vec_map.js.map +0 -7
- package/dist/esm/contracts/deepbook/deps/sui/vec_set.d.ts +0 -15
- package/dist/esm/contracts/deepbook/deps/sui/vec_set.js +0 -15
- package/dist/esm/contracts/deepbook/deps/sui/vec_set.js.map +0 -7
- package/dist/esm/contracts/deepbook/deps/sui/versioned.d.ts +0 -7
- package/dist/esm/contracts/deepbook/deps/sui/versioned.js +0 -15
- package/dist/esm/contracts/deepbook/deps/sui/versioned.js.map +0 -7
- package/dist/esm/contracts/deepbook/ewma.d.ts +0 -17
- package/dist/esm/contracts/deepbook/ewma.js +0 -19
- package/dist/esm/contracts/deepbook/ewma.js.map +0 -7
- package/dist/esm/contracts/deepbook/fill.d.ts +0 -153
- package/dist/esm/contracts/deepbook/fill.js +0 -221
- package/dist/esm/contracts/deepbook/fill.js.map +0 -7
- package/dist/esm/contracts/deepbook/governance.d.ts +0 -63
- package/dist/esm/contracts/deepbook/governance.js +0 -49
- package/dist/esm/contracts/deepbook/governance.js.map +0 -7
- package/dist/esm/contracts/deepbook/history.d.ts +0 -60
- package/dist/esm/contracts/deepbook/history.js +0 -48
- package/dist/esm/contracts/deepbook/history.js.map +0 -7
- package/dist/esm/contracts/deepbook/math.d.ts +0 -94
- package/dist/esm/contracts/deepbook/math.js +0 -112
- package/dist/esm/contracts/deepbook/math.js.map +0 -7
- package/dist/esm/contracts/deepbook/order.d.ts +0 -135
- package/dist/esm/contracts/deepbook/order.js +0 -188
- package/dist/esm/contracts/deepbook/order.js.map +0 -7
- package/dist/esm/contracts/deepbook/order_info.d.ts +0 -296
- package/dist/esm/contracts/deepbook/order_info.js +0 -356
- package/dist/esm/contracts/deepbook/order_info.js.map +0 -7
- package/dist/esm/contracts/deepbook/order_query.d.ts +0 -85
- package/dist/esm/contracts/deepbook/order_query.js +0 -66
- package/dist/esm/contracts/deepbook/order_query.js.map +0 -7
- package/dist/esm/contracts/deepbook/pool.d.ts +0 -1218
- package/dist/esm/contracts/deepbook/pool.js +0 -1206
- package/dist/esm/contracts/deepbook/pool.js.map +0 -7
- package/dist/esm/contracts/deepbook/registry.d.ts +0 -134
- package/dist/esm/contracts/deepbook/registry.js +0 -152
- package/dist/esm/contracts/deepbook/registry.js.map +0 -7
- package/dist/esm/contracts/deepbook/state.d.ts +0 -117
- package/dist/esm/contracts/deepbook/state.js +0 -74
- package/dist/esm/contracts/deepbook/state.js.map +0 -7
- package/dist/esm/contracts/deepbook/trade_params.d.ts +0 -7
- package/dist/esm/contracts/deepbook/trade_params.js +0 -15
- package/dist/esm/contracts/deepbook/trade_params.js.map +0 -7
- package/dist/esm/contracts/deepbook/vault.d.ts +0 -30
- package/dist/esm/contracts/deepbook/vault.js +0 -35
- package/dist/esm/contracts/deepbook/vault.js.map +0 -7
- package/dist/esm/contracts/utils/index.d.ts +0 -25
- package/dist/esm/contracts/utils/index.js +0 -128
- package/dist/esm/contracts/utils/index.js.map +0 -7
- package/dist/esm/index.d.ts +0 -23
- package/dist/esm/index.js +0 -81
- package/dist/esm/index.js.map +0 -7
- package/dist/esm/package.json +0 -4
- package/dist/esm/pyth/PriceServiceConnection.d.ts +0 -26
- package/dist/esm/pyth/PriceServiceConnection.js +0 -38
- package/dist/esm/pyth/PriceServiceConnection.js.map +0 -7
- package/dist/esm/pyth/pyth-helpers.d.ts +0 -7
- package/dist/esm/pyth/pyth-helpers.js +0 -16
- package/dist/esm/pyth/pyth-helpers.js.map +0 -7
- package/dist/esm/pyth/pyth.d.ts +0 -65
- package/dist/esm/pyth/pyth.js +0 -249
- package/dist/esm/pyth/pyth.js.map +0 -7
- package/dist/esm/transactions/balanceManager.d.ts +0 -168
- package/dist/esm/transactions/balanceManager.js +0 -364
- package/dist/esm/transactions/balanceManager.js.map +0 -7
- package/dist/esm/transactions/deepbook.d.ts +0 -477
- package/dist/esm/transactions/deepbook.js +0 -1321
- package/dist/esm/transactions/deepbook.js.map +0 -7
- package/dist/esm/transactions/deepbookAdmin.d.ts +0 -105
- package/dist/esm/transactions/deepbookAdmin.js +0 -314
- package/dist/esm/transactions/deepbookAdmin.js.map +0 -7
- package/dist/esm/transactions/flashLoans.d.ts +0 -56
- package/dist/esm/transactions/flashLoans.js +0 -104
- package/dist/esm/transactions/flashLoans.js.map +0 -7
- package/dist/esm/transactions/governance.d.ts +0 -42
- package/dist/esm/transactions/governance.js +0 -115
- package/dist/esm/transactions/governance.js.map +0 -7
- package/dist/esm/transactions/marginAdmin.d.ts +0 -133
- package/dist/esm/transactions/marginAdmin.js +0 -373
- package/dist/esm/transactions/marginAdmin.js.map +0 -7
- package/dist/esm/transactions/marginLiquidations.d.ts +0 -61
- package/dist/esm/transactions/marginLiquidations.js +0 -153
- package/dist/esm/transactions/marginLiquidations.js.map +0 -7
- package/dist/esm/transactions/marginMaintainer.d.ts +0 -80
- package/dist/esm/transactions/marginMaintainer.js +0 -231
- package/dist/esm/transactions/marginMaintainer.js.map +0 -7
- package/dist/esm/transactions/marginManager.d.ts +0 -236
- package/dist/esm/transactions/marginManager.js +0 -668
- package/dist/esm/transactions/marginManager.js.map +0 -7
- package/dist/esm/transactions/marginPool.d.ts +0 -134
- package/dist/esm/transactions/marginPool.js +0 -310
- package/dist/esm/transactions/marginPool.js.map +0 -7
- package/dist/esm/transactions/marginRegistry.d.ts +0 -94
- package/dist/esm/transactions/marginRegistry.js +0 -201
- package/dist/esm/transactions/marginRegistry.js.map +0 -7
- package/dist/esm/transactions/marginTPSL.d.ts +0 -93
- package/dist/esm/transactions/marginTPSL.js +0 -266
- package/dist/esm/transactions/marginTPSL.js.map +0 -7
- package/dist/esm/transactions/poolProxy.d.ts +0 -104
- package/dist/esm/transactions/poolProxy.js +0 -415
- package/dist/esm/transactions/poolProxy.js.map +0 -7
- package/dist/esm/types/bcs.d.ts +0 -5
- package/dist/esm/types/bcs.js +0 -13
- package/dist/esm/types/bcs.js.map +0 -7
- package/dist/esm/types/index.d.ts +0 -218
- package/dist/esm/types/index.js +0 -18
- package/dist/esm/types/index.js.map +0 -7
- package/dist/esm/utils/config.d.ts +0 -65
- package/dist/esm/utils/config.js +0 -135
- package/dist/esm/utils/config.js.map +0 -7
- package/dist/esm/utils/constants.d.ts +0 -76
- package/dist/esm/utils/constants.js +0 -362
- package/dist/esm/utils/constants.js.map +0 -7
- package/dist/esm/utils/errors.d.ts +0 -42
- package/dist/esm/utils/errors.js +0 -50
- package/dist/esm/utils/errors.js.map +0 -7
- package/dist/esm/utils/validation.d.ts +0 -50
- package/dist/esm/utils/validation.js +0 -47
- package/dist/esm/utils/validation.js.map +0 -7
- package/dist/tsconfig.esm.tsbuildinfo +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/contracts/deepbook/deps/sui/object.ts +0 -14
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { PriceServiceConnection } from "./PriceServiceConnection.mjs";
|
|
2
|
+
import { extractVaaBytesFromAccumulatorMessage } from "./pyth-helpers.mjs";
|
|
3
|
+
import { State } from "../contracts/pyth/state.mjs";
|
|
4
|
+
import { State as State$1 } from "../contracts/wormhole/state.mjs";
|
|
5
|
+
import { bcs } from "@haneullabs/haneul/bcs";
|
|
6
|
+
import { fromBase64, fromHex, parseStructTag } from "@haneullabs/haneul/utils";
|
|
7
|
+
import { coinWithBalance } from "@haneullabs/haneul/transactions";
|
|
8
|
+
|
|
9
|
+
//#region src/pyth/pyth.ts
|
|
10
|
+
const MAX_ARGUMENT_SIZE = 16 * 1024;
|
|
11
|
+
var HaneulPriceServiceConnection = class extends PriceServiceConnection {
|
|
12
|
+
/**
|
|
13
|
+
* Fetch price feed update data.
|
|
14
|
+
*
|
|
15
|
+
* @param priceIds Array of hex-encoded price IDs.
|
|
16
|
+
* @returns Array of buffers containing the price update data.
|
|
17
|
+
*/
|
|
18
|
+
async getPriceFeedsUpdateData(priceIds) {
|
|
19
|
+
return (await this.getLatestVaas(priceIds)).map((vaa) => fromBase64(vaa));
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var HaneulPythClient = class {
|
|
23
|
+
#pythPackageId;
|
|
24
|
+
#wormholePackageId;
|
|
25
|
+
#priceFeedObjectIdCache = /* @__PURE__ */ new Map();
|
|
26
|
+
#priceTableInfo;
|
|
27
|
+
#baseUpdateFee;
|
|
28
|
+
constructor(provider, pythStateId, wormholeStateId) {
|
|
29
|
+
this.provider = provider;
|
|
30
|
+
this.pythStateId = pythStateId;
|
|
31
|
+
this.wormholeStateId = wormholeStateId;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Verifies the VAAs using the Wormhole contract.
|
|
35
|
+
*
|
|
36
|
+
* @param vaas Array of VAA buffers to verify.
|
|
37
|
+
* @param tx Transaction block to add commands to.
|
|
38
|
+
* @returns Array of verified VAAs.
|
|
39
|
+
*/
|
|
40
|
+
async verifyVaas(vaas, tx) {
|
|
41
|
+
const wormholePackageId = await this.getWormholePackageId();
|
|
42
|
+
const verifiedVaas = [];
|
|
43
|
+
for (const vaa of vaas) {
|
|
44
|
+
const [verifiedVaa] = tx.moveCall({
|
|
45
|
+
target: `${wormholePackageId}::vaa::parse_and_verify`,
|
|
46
|
+
arguments: [
|
|
47
|
+
tx.object(this.wormholeStateId),
|
|
48
|
+
tx.pure.vector("u8", vaa),
|
|
49
|
+
tx.object.clock()
|
|
50
|
+
]
|
|
51
|
+
});
|
|
52
|
+
verifiedVaas.push(verifiedVaa);
|
|
53
|
+
}
|
|
54
|
+
return verifiedVaas;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Adds the necessary commands for updating the Pyth price feeds to the transaction block.
|
|
58
|
+
*
|
|
59
|
+
* @param tx Transaction block to add commands to.
|
|
60
|
+
* @param updates Array of price feed updates received from the price service.
|
|
61
|
+
* @param feedIds Array of feed IDs to update (in hex format).
|
|
62
|
+
*/
|
|
63
|
+
async updatePriceFeeds(tx, updates, feedIds) {
|
|
64
|
+
const packageId = await this.getPythPackageId();
|
|
65
|
+
let priceUpdatesHotPotato;
|
|
66
|
+
if (updates.length > 1) throw new Error("SDK does not support sending multiple accumulator messages in a single transaction");
|
|
67
|
+
const vaa = extractVaaBytesFromAccumulatorMessage(updates[0]);
|
|
68
|
+
const verifiedVaas = await this.verifyVaas([vaa], tx);
|
|
69
|
+
[priceUpdatesHotPotato] = tx.moveCall({
|
|
70
|
+
target: `${packageId}::pyth::create_authenticated_price_infos_using_accumulator`,
|
|
71
|
+
arguments: [
|
|
72
|
+
tx.object(this.pythStateId),
|
|
73
|
+
tx.pure(bcs.vector(bcs.U8).serialize(Array.from(updates[0]), { maxSize: MAX_ARGUMENT_SIZE }).toBytes()),
|
|
74
|
+
verifiedVaas[0],
|
|
75
|
+
tx.object.clock()
|
|
76
|
+
]
|
|
77
|
+
});
|
|
78
|
+
const priceInfoObjects = [];
|
|
79
|
+
const baseUpdateFee = await this.getBaseUpdateFee();
|
|
80
|
+
for (const feedId of feedIds) {
|
|
81
|
+
const priceInfoObjectId = await this.getPriceFeedObjectId(feedId);
|
|
82
|
+
if (!priceInfoObjectId) throw new Error(`Price feed ${feedId} not found, please create it first`);
|
|
83
|
+
priceInfoObjects.push(priceInfoObjectId);
|
|
84
|
+
[priceUpdatesHotPotato] = tx.moveCall({
|
|
85
|
+
target: `${packageId}::pyth::update_single_price_feed`,
|
|
86
|
+
arguments: [
|
|
87
|
+
tx.object(this.pythStateId),
|
|
88
|
+
priceUpdatesHotPotato,
|
|
89
|
+
tx.object(priceInfoObjectId),
|
|
90
|
+
coinWithBalance({ balance: baseUpdateFee }),
|
|
91
|
+
tx.object.clock()
|
|
92
|
+
]
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
tx.moveCall({
|
|
96
|
+
target: `${packageId}::hot_potato_vector::destroy`,
|
|
97
|
+
arguments: [priceUpdatesHotPotato],
|
|
98
|
+
typeArguments: [`${packageId}::price_info::PriceInfo`]
|
|
99
|
+
});
|
|
100
|
+
return priceInfoObjects;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get the price feed object ID for a given feed ID, caching the promise.
|
|
104
|
+
* @param feedId
|
|
105
|
+
*/
|
|
106
|
+
getPriceFeedObjectId(feedId) {
|
|
107
|
+
if (!this.#priceFeedObjectIdCache.has(feedId)) this.#priceFeedObjectIdCache.set(feedId, this.#fetchPriceFeedObjectId(feedId).catch((err) => {
|
|
108
|
+
this.#priceFeedObjectIdCache.delete(feedId);
|
|
109
|
+
throw err;
|
|
110
|
+
}));
|
|
111
|
+
return this.#priceFeedObjectIdCache.get(feedId);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Fetches the price feed object ID for a given feed ID (no caching).
|
|
115
|
+
* Throws an error if the object is not found.
|
|
116
|
+
*/
|
|
117
|
+
async #fetchPriceFeedObjectId(feedId) {
|
|
118
|
+
const { id: tableId, fieldType } = await this.getPriceTableInfo();
|
|
119
|
+
const nameBytes = bcs.byteVector().serialize(Array.from(fromHex(feedId))).toBytes();
|
|
120
|
+
const result = await this.provider.core.getDynamicField({
|
|
121
|
+
parentId: tableId,
|
|
122
|
+
name: {
|
|
123
|
+
type: `${fieldType}::price_identifier::PriceIdentifier`,
|
|
124
|
+
bcs: nameBytes
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
if (!result.dynamicField) throw new Error(`Price feed object ID for feed ID ${feedId} not found.`);
|
|
128
|
+
return bcs.Address.parse(result.dynamicField.value.bcs);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Fetches the price table object ID for the current state ID, caching the promise.
|
|
132
|
+
* @returns Price table object ID and field type
|
|
133
|
+
*/
|
|
134
|
+
getPriceTableInfo() {
|
|
135
|
+
if (!this.#priceTableInfo) this.#priceTableInfo = this.#fetchPriceTableInfo().catch((err) => {
|
|
136
|
+
this.#priceTableInfo = void 0;
|
|
137
|
+
throw err;
|
|
138
|
+
});
|
|
139
|
+
return this.#priceTableInfo;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Fetches the price table object ID and field type (no caching).
|
|
143
|
+
* @returns Price table object ID and field type
|
|
144
|
+
*/
|
|
145
|
+
async #fetchPriceTableInfo() {
|
|
146
|
+
const result = await this.provider.core.getDynamicObjectField({
|
|
147
|
+
parentId: this.pythStateId,
|
|
148
|
+
name: {
|
|
149
|
+
type: "vector<u8>",
|
|
150
|
+
bcs: bcs.string().serialize("price_info").toBytes()
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
if (!result.object) throw new Error("Price Table not found, contract may not be initialized");
|
|
154
|
+
const priceIdentifier = parseStructTag(result.object.type).typeParams[0];
|
|
155
|
+
if (typeof priceIdentifier === "object" && priceIdentifier !== null && priceIdentifier.name === "PriceIdentifier" && "address" in priceIdentifier) return {
|
|
156
|
+
id: result.object.objectId,
|
|
157
|
+
fieldType: priceIdentifier.address
|
|
158
|
+
};
|
|
159
|
+
else throw new Error("fieldType not found");
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Fetches the package ID for the Wormhole contract, with caching.
|
|
163
|
+
*/
|
|
164
|
+
getWormholePackageId() {
|
|
165
|
+
if (!this.#wormholePackageId) this.#wormholePackageId = this.#fetchWormholePackageId();
|
|
166
|
+
return this.#wormholePackageId;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Fetches the package ID for the Wormhole contract (no caching).
|
|
170
|
+
*/
|
|
171
|
+
async #fetchWormholePackageId() {
|
|
172
|
+
const result = await this.provider.core.getObject({
|
|
173
|
+
objectId: this.wormholeStateId,
|
|
174
|
+
include: { content: true }
|
|
175
|
+
});
|
|
176
|
+
if (!result.object?.content) throw new Error("Unable to fetch Wormhole state object");
|
|
177
|
+
return State$1.parse(result.object.content).upgrade_cap.package;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Fetches the package ID for the Pyth contract, with caching.
|
|
181
|
+
*/
|
|
182
|
+
getPythPackageId() {
|
|
183
|
+
if (!this.#pythPackageId) this.#pythPackageId = this.#fetchPythPackageId();
|
|
184
|
+
return this.#pythPackageId;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Fetches the package ID for the Pyth contract (no caching).
|
|
188
|
+
*/
|
|
189
|
+
async #fetchPythPackageId() {
|
|
190
|
+
const result = await this.provider.core.getObject({
|
|
191
|
+
objectId: this.pythStateId,
|
|
192
|
+
include: { content: true }
|
|
193
|
+
});
|
|
194
|
+
if (!result.object?.content) throw new Error(`Cannot fetch Pyth package ID for object ${this.pythStateId}`);
|
|
195
|
+
return State.parse(result.object.content).upgrade_cap.package;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Gets the base update fee from the Pyth state object.
|
|
199
|
+
*/
|
|
200
|
+
async #fetchBaseUpdateFee() {
|
|
201
|
+
const result = await this.provider.core.getObject({
|
|
202
|
+
objectId: this.pythStateId,
|
|
203
|
+
include: { content: true }
|
|
204
|
+
});
|
|
205
|
+
if (!result.object?.content) throw new Error("Unable to fetch Pyth state object");
|
|
206
|
+
const state = State.parse(result.object.content);
|
|
207
|
+
return Number(state.base_update_fee);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Returns the cached base update fee, fetching it if necessary.
|
|
211
|
+
*/
|
|
212
|
+
getBaseUpdateFee() {
|
|
213
|
+
if (!this.#baseUpdateFee) this.#baseUpdateFee = this.#fetchBaseUpdateFee();
|
|
214
|
+
return this.#baseUpdateFee;
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
//#endregion
|
|
219
|
+
export { HaneulPriceServiceConnection, HaneulPythClient };
|
|
220
|
+
//# sourceMappingURL=pyth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pyth.mjs","names":["#priceFeedObjectIdCache","#fetchPriceFeedObjectId","#priceTableInfo","#fetchPriceTableInfo","#wormholePackageId","#fetchWormholePackageId","WormholeState","#pythPackageId","#fetchPythPackageId","PythState","#fetchBaseUpdateFee","#baseUpdateFee"],"sources":["../../src/pyth/pyth.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/haneul/bcs';\nimport type { ClientWithCoreApi } from '@haneullabs/haneul/client';\nimport type { Transaction } from '@haneullabs/haneul/transactions';\nimport { coinWithBalance } from '@haneullabs/haneul/transactions';\nimport { fromBase64, fromHex, parseStructTag } from '@haneullabs/haneul/utils';\n\nimport type { HexString } from './PriceServiceConnection.js';\nimport { PriceServiceConnection } from './PriceServiceConnection.js';\nimport { extractVaaBytesFromAccumulatorMessage } from './pyth-helpers.js';\nimport { State as PythState } from '../contracts/pyth/state.js';\nimport { State as WormholeState } from '../contracts/wormhole/state.js';\n\nconst MAX_ARGUMENT_SIZE = 16 * 1024;\nexport type ObjectId = string;\nexport class HaneulPriceServiceConnection extends PriceServiceConnection {\n\t/**\n\t * Fetch price feed update data.\n\t *\n\t * @param priceIds Array of hex-encoded price IDs.\n\t * @returns Array of buffers containing the price update data.\n\t */\n\tasync getPriceFeedsUpdateData(priceIds: HexString[]): Promise<Uint8Array[]> {\n\t\tconst latestVaas = await this.getLatestVaas(priceIds);\n\t\treturn latestVaas.map((vaa) => fromBase64(vaa));\n\t}\n}\nexport class HaneulPythClient {\n\t#pythPackageId?: Promise<ObjectId>;\n\t#wormholePackageId?: Promise<ObjectId>;\n\t#priceFeedObjectIdCache: Map<HexString, Promise<ObjectId>> = new Map();\n\t#priceTableInfo?: Promise<{ id: ObjectId; fieldType: ObjectId }>;\n\t#baseUpdateFee?: Promise<number>;\n\tprovider: ClientWithCoreApi;\n\tpythStateId: ObjectId;\n\twormholeStateId: ObjectId;\n\n\tconstructor(provider: ClientWithCoreApi, pythStateId: ObjectId, wormholeStateId: ObjectId) {\n\t\tthis.provider = provider;\n\t\tthis.pythStateId = pythStateId;\n\t\tthis.wormholeStateId = wormholeStateId;\n\t}\n\t/**\n\t * Verifies the VAAs using the Wormhole contract.\n\t *\n\t * @param vaas Array of VAA buffers to verify.\n\t * @param tx Transaction block to add commands to.\n\t * @returns Array of verified VAAs.\n\t */\n\tasync verifyVaas(vaas: Uint8Array[], tx: Transaction) {\n\t\tconst wormholePackageId = await this.getWormholePackageId();\n\t\tconst verifiedVaas = [];\n\t\tfor (const vaa of vaas) {\n\t\t\tconst [verifiedVaa] = tx.moveCall({\n\t\t\t\ttarget: `${wormholePackageId}::vaa::parse_and_verify`,\n\t\t\t\targuments: [tx.object(this.wormholeStateId), tx.pure.vector('u8', vaa), tx.object.clock()],\n\t\t\t});\n\t\t\tverifiedVaas.push(verifiedVaa);\n\t\t}\n\t\treturn verifiedVaas;\n\t}\n\t/**\n\t * Adds the necessary commands for updating the Pyth price feeds to the transaction block.\n\t *\n\t * @param tx Transaction block to add commands to.\n\t * @param updates Array of price feed updates received from the price service.\n\t * @param feedIds Array of feed IDs to update (in hex format).\n\t */\n\tasync updatePriceFeeds(\n\t\ttx: Transaction,\n\t\tupdates: Uint8Array[],\n\t\tfeedIds: HexString[],\n\t): Promise<ObjectId[]> {\n\t\tconst packageId = await this.getPythPackageId();\n\t\tlet priceUpdatesHotPotato;\n\t\tif (updates.length > 1) {\n\t\t\tthrow new Error(\n\t\t\t\t'SDK does not support sending multiple accumulator messages in a single transaction',\n\t\t\t);\n\t\t}\n\t\tconst vaa = extractVaaBytesFromAccumulatorMessage(updates[0]);\n\t\tconst verifiedVaas = await this.verifyVaas([vaa], tx);\n\t\t[priceUpdatesHotPotato] = tx.moveCall({\n\t\t\ttarget: `${packageId}::pyth::create_authenticated_price_infos_using_accumulator`,\n\t\t\targuments: [\n\t\t\t\ttx.object(this.pythStateId),\n\t\t\t\ttx.pure(\n\t\t\t\t\tbcs\n\t\t\t\t\t\t.vector(bcs.U8)\n\t\t\t\t\t\t.serialize(Array.from(updates[0]), {\n\t\t\t\t\t\t\tmaxSize: MAX_ARGUMENT_SIZE,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.toBytes(),\n\t\t\t\t),\n\t\t\t\tverifiedVaas[0],\n\t\t\t\ttx.object.clock(),\n\t\t\t],\n\t\t});\n\t\tconst priceInfoObjects: ObjectId[] = [];\n\t\tconst baseUpdateFee = await this.getBaseUpdateFee();\n\t\tfor (const feedId of feedIds) {\n\t\t\tconst priceInfoObjectId = await this.getPriceFeedObjectId(feedId);\n\t\t\tif (!priceInfoObjectId) {\n\t\t\t\tthrow new Error(`Price feed ${feedId} not found, please create it first`);\n\t\t\t}\n\t\t\tpriceInfoObjects.push(priceInfoObjectId);\n\t\t\t[priceUpdatesHotPotato] = tx.moveCall({\n\t\t\t\ttarget: `${packageId}::pyth::update_single_price_feed`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(this.pythStateId),\n\t\t\t\t\tpriceUpdatesHotPotato,\n\t\t\t\t\ttx.object(priceInfoObjectId),\n\t\t\t\t\tcoinWithBalance({ balance: baseUpdateFee }),\n\t\t\t\t\ttx.object.clock(),\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\t\ttx.moveCall({\n\t\t\ttarget: `${packageId}::hot_potato_vector::destroy`,\n\t\t\targuments: [priceUpdatesHotPotato],\n\t\t\ttypeArguments: [`${packageId}::price_info::PriceInfo`],\n\t\t});\n\t\treturn priceInfoObjects;\n\t}\n\t/**\n\t * Get the price feed object ID for a given feed ID, caching the promise.\n\t * @param feedId\n\t */\n\tgetPriceFeedObjectId(feedId: HexString): Promise<ObjectId | undefined> {\n\t\tif (!this.#priceFeedObjectIdCache.has(feedId)) {\n\t\t\tthis.#priceFeedObjectIdCache.set(\n\t\t\t\tfeedId,\n\t\t\t\tthis.#fetchPriceFeedObjectId(feedId).catch((err) => {\n\t\t\t\t\t// Remove failed promises from the cache to allow retries\n\t\t\t\t\tthis.#priceFeedObjectIdCache.delete(feedId);\n\t\t\t\t\tthrow err;\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn this.#priceFeedObjectIdCache.get(feedId)!;\n\t}\n\n\t/**\n\t * Fetches the price feed object ID for a given feed ID (no caching).\n\t * Throws an error if the object is not found.\n\t */\n\tasync #fetchPriceFeedObjectId(feedId: HexString): Promise<ObjectId> {\n\t\tconst { id: tableId, fieldType } = await this.getPriceTableInfo();\n\n\t\t// Serialize the PriceIdentifier name using BCS (vector of bytes)\n\t\tconst nameBytes = bcs\n\t\t\t.byteVector()\n\t\t\t.serialize(Array.from(fromHex(feedId)))\n\t\t\t.toBytes();\n\n\t\tconst result = await this.provider.core.getDynamicField({\n\t\t\tparentId: tableId,\n\t\t\tname: {\n\t\t\t\ttype: `${fieldType}::price_identifier::PriceIdentifier`,\n\t\t\t\tbcs: nameBytes,\n\t\t\t},\n\t\t});\n\n\t\tif (!result.dynamicField) {\n\t\t\tthrow new Error(`Price feed object ID for feed ID ${feedId} not found.`);\n\t\t}\n\n\t\t// The value in the table is just the object ID (address)\n\t\tconst objectId = bcs.Address.parse(result.dynamicField.value.bcs);\n\t\treturn objectId;\n\t}\n\n\t/**\n\t * Fetches the price table object ID for the current state ID, caching the promise.\n\t * @returns Price table object ID and field type\n\t */\n\tgetPriceTableInfo(): Promise<{ id: ObjectId; fieldType: ObjectId }> {\n\t\tif (!this.#priceTableInfo) {\n\t\t\tconst promise = this.#fetchPriceTableInfo().catch((err) => {\n\t\t\t\t// Clear the cached promise on error\n\t\t\t\tthis.#priceTableInfo = undefined;\n\t\t\t\tthrow err;\n\t\t\t});\n\n\t\t\tthis.#priceTableInfo = promise;\n\t\t}\n\n\t\treturn this.#priceTableInfo;\n\t}\n\n\t/**\n\t * Fetches the price table object ID and field type (no caching).\n\t * @returns Price table object ID and field type\n\t */\n\tasync #fetchPriceTableInfo(): Promise<{ id: ObjectId; fieldType: ObjectId }> {\n\t\tconst result = await this.provider.core.getDynamicObjectField({\n\t\t\tparentId: this.pythStateId,\n\t\t\tname: {\n\t\t\t\ttype: 'vector<u8>',\n\t\t\t\tbcs: bcs.string().serialize('price_info').toBytes(),\n\t\t\t},\n\t\t});\n\n\t\tif (!result.object) {\n\t\t\tthrow new Error('Price Table not found, contract may not be initialized');\n\t\t}\n\n\t\tconst tableType = parseStructTag(result.object.type);\n\t\tconst priceIdentifier = tableType.typeParams[0];\n\t\tif (\n\t\t\ttypeof priceIdentifier === 'object' &&\n\t\t\tpriceIdentifier !== null &&\n\t\t\tpriceIdentifier.name === 'PriceIdentifier' &&\n\t\t\t'address' in priceIdentifier\n\t\t) {\n\t\t\treturn { id: result.object.objectId, fieldType: priceIdentifier.address };\n\t\t} else {\n\t\t\tthrow new Error('fieldType not found');\n\t\t}\n\t}\n\t/**\n\t * Fetches the package ID for the Wormhole contract, with caching.\n\t */\n\tgetWormholePackageId(): Promise<ObjectId> {\n\t\tif (!this.#wormholePackageId) {\n\t\t\tthis.#wormholePackageId = this.#fetchWormholePackageId();\n\t\t}\n\t\treturn this.#wormholePackageId;\n\t}\n\n\t/**\n\t * Fetches the package ID for the Wormhole contract (no caching).\n\t */\n\tasync #fetchWormholePackageId(): Promise<ObjectId> {\n\t\tconst result = await this.provider.core.getObject({\n\t\t\tobjectId: this.wormholeStateId,\n\t\t\tinclude: { content: true },\n\t\t});\n\n\t\tif (!result.object?.content) {\n\t\t\tthrow new Error('Unable to fetch Wormhole state object');\n\t\t}\n\n\t\tconst state = WormholeState.parse(result.object.content);\n\t\treturn state.upgrade_cap.package;\n\t}\n\n\t/**\n\t * Fetches the package ID for the Pyth contract, with caching.\n\t */\n\tgetPythPackageId(): Promise<ObjectId> {\n\t\tif (!this.#pythPackageId) {\n\t\t\tthis.#pythPackageId = this.#fetchPythPackageId();\n\t\t}\n\t\treturn this.#pythPackageId;\n\t}\n\n\t/**\n\t * Fetches the package ID for the Pyth contract (no caching).\n\t */\n\tasync #fetchPythPackageId(): Promise<ObjectId> {\n\t\tconst result = await this.provider.core.getObject({\n\t\t\tobjectId: this.pythStateId,\n\t\t\tinclude: { content: true },\n\t\t});\n\n\t\tif (!result.object?.content) {\n\t\t\tthrow new Error(`Cannot fetch Pyth package ID for object ${this.pythStateId}`);\n\t\t}\n\n\t\t// Parse the BCS content to get the upgrade_cap.package field\n\t\tconst state = PythState.parse(result.object.content);\n\t\treturn state.upgrade_cap.package;\n\t}\n\n\t/**\n\t * Gets the base update fee from the Pyth state object.\n\t */\n\tasync #fetchBaseUpdateFee(): Promise<number> {\n\t\tconst result = await this.provider.core.getObject({\n\t\t\tobjectId: this.pythStateId,\n\t\t\tinclude: { content: true },\n\t\t});\n\n\t\tif (!result.object?.content) {\n\t\t\tthrow new Error('Unable to fetch Pyth state object');\n\t\t}\n\n\t\t// Parse the BCS content to get the base_update_fee field\n\t\tconst state = PythState.parse(result.object.content);\n\t\treturn Number(state.base_update_fee);\n\t}\n\n\t/**\n\t * Returns the cached base update fee, fetching it if necessary.\n\t */\n\tgetBaseUpdateFee(): Promise<number> {\n\t\tif (!this.#baseUpdateFee) {\n\t\t\tthis.#baseUpdateFee = this.#fetchBaseUpdateFee();\n\t\t}\n\t\treturn this.#baseUpdateFee;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { DeepBookConfig } from "../utils/config.mjs";
|
|
2
|
+
import * as _haneullabs_haneul_transactions52 from "@haneullabs/haneul/transactions";
|
|
3
|
+
import { Transaction, TransactionArgument } from "@haneullabs/haneul/transactions";
|
|
4
|
+
|
|
5
|
+
//#region src/transactions/balanceManager.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* BalanceManagerContract class for managing BalanceManager operations.
|
|
8
|
+
*/
|
|
9
|
+
declare class BalanceManagerContract {
|
|
10
|
+
#private;
|
|
11
|
+
/**
|
|
12
|
+
* @param {DeepBookConfig} config Configuration for BalanceManagerContract
|
|
13
|
+
*/
|
|
14
|
+
constructor(config: DeepBookConfig);
|
|
15
|
+
/**
|
|
16
|
+
* @description Create and share a new BalanceManager
|
|
17
|
+
* @returns A function that takes a Transaction object
|
|
18
|
+
*/
|
|
19
|
+
createAndShareBalanceManager: () => (tx: Transaction) => void;
|
|
20
|
+
/**
|
|
21
|
+
* @description Create a new BalanceManager, manually set the owner. Returns the manager.
|
|
22
|
+
* @returns A function that takes a Transaction object
|
|
23
|
+
*/
|
|
24
|
+
createBalanceManagerWithOwner: (ownerAddress: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
25
|
+
/**
|
|
26
|
+
* @description Share the BalanceManager
|
|
27
|
+
* @param {TransactionArgument} manager The BalanceManager to share
|
|
28
|
+
* @returns A function that takes a Transaction object
|
|
29
|
+
*/
|
|
30
|
+
shareBalanceManager: (manager: TransactionArgument) => (tx: Transaction) => void;
|
|
31
|
+
/**
|
|
32
|
+
* @description Deposit funds into the BalanceManager
|
|
33
|
+
* @param {string} managerKey The key of the BalanceManager
|
|
34
|
+
* @param {string} coinKey The key of the coin to deposit
|
|
35
|
+
* @param {number} amountToDeposit The amount to deposit
|
|
36
|
+
* @returns A function that takes a Transaction object
|
|
37
|
+
*/
|
|
38
|
+
depositIntoManager: (managerKey: string, coinKey: string, amountToDeposit: number) => (tx: Transaction) => void;
|
|
39
|
+
/**
|
|
40
|
+
* @description Withdraw funds from the BalanceManager
|
|
41
|
+
* @param {string} managerKey The key of the BalanceManager
|
|
42
|
+
* @param {string} coinKey The key of the coin to withdraw
|
|
43
|
+
* @param {number} amountToWithdraw The amount to withdraw
|
|
44
|
+
* @param {string} recipient The recipient of the withdrawn funds
|
|
45
|
+
* @returns A function that takes a Transaction object
|
|
46
|
+
*/
|
|
47
|
+
withdrawFromManager: (managerKey: string, coinKey: string, amountToWithdraw: number, recipient: string) => (tx: Transaction) => void;
|
|
48
|
+
/**
|
|
49
|
+
* @description Withdraw all funds from the BalanceManager
|
|
50
|
+
* @param {string} managerKey The key of the BalanceManager
|
|
51
|
+
* @param {string} coinKey The key of the coin to withdraw
|
|
52
|
+
* @param {string} recipient The recipient of the withdrawn funds
|
|
53
|
+
* @returns A function that takes a Transaction object
|
|
54
|
+
*/
|
|
55
|
+
withdrawAllFromManager: (managerKey: string, coinKey: string, recipient: string) => (tx: Transaction) => void;
|
|
56
|
+
/**
|
|
57
|
+
* @description Check the balance of the BalanceManager
|
|
58
|
+
* @param {string} managerKey The key of the BalanceManager
|
|
59
|
+
* @param {string} coinKey The key of the coin to check the balance of
|
|
60
|
+
* @returns A function that takes a Transaction object
|
|
61
|
+
*/
|
|
62
|
+
checkManagerBalance: (managerKey: string, coinKey: string) => (tx: Transaction) => void;
|
|
63
|
+
/**
|
|
64
|
+
* @description Generate a trade proof for the BalanceManager. Calls the appropriate function based on whether tradeCap is set.
|
|
65
|
+
* @param {string} managerKey The key of the BalanceManager
|
|
66
|
+
* @returns A function that takes a Transaction object
|
|
67
|
+
*/
|
|
68
|
+
generateProof: (managerKey: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
69
|
+
/**
|
|
70
|
+
* @description Generate a trade proof as the owner
|
|
71
|
+
* @param {string} managerId The ID of the BalanceManager
|
|
72
|
+
* @returns A function that takes a Transaction object
|
|
73
|
+
*/
|
|
74
|
+
generateProofAsOwner: (managerId: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
75
|
+
/**
|
|
76
|
+
* @description Generate a trade proof as a trader
|
|
77
|
+
* @param {string} managerId The ID of the BalanceManager
|
|
78
|
+
* @param {string} tradeCapId The ID of the tradeCap
|
|
79
|
+
* @returns A function that takes a Transaction object
|
|
80
|
+
*/
|
|
81
|
+
generateProofAsTrader: (managerId: string, tradeCapId: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
82
|
+
/**
|
|
83
|
+
* @description Mint a TradeCap
|
|
84
|
+
* @param {string} managerKey The name of the BalanceManager
|
|
85
|
+
* @returns A function that takes a Transaction object
|
|
86
|
+
*/
|
|
87
|
+
mintTradeCap: (managerKey: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
88
|
+
/**
|
|
89
|
+
* @description Mint a DepositCap
|
|
90
|
+
* @param {string} managerKey The name of the BalanceManager
|
|
91
|
+
* @returns A function that takes a Transaction object
|
|
92
|
+
*/
|
|
93
|
+
mintDepositCap: (managerKey: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
94
|
+
/**
|
|
95
|
+
* @description Mint a WithdrawalCap
|
|
96
|
+
* @param {string} managerKey The name of the BalanceManager
|
|
97
|
+
* @returns A function that takes a Transaction object
|
|
98
|
+
*/
|
|
99
|
+
mintWithdrawalCap: (managerKey: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
100
|
+
/**
|
|
101
|
+
* @description Deposit using the DepositCap
|
|
102
|
+
* @param {string} managerKey The name of the BalanceManager
|
|
103
|
+
* @param {string} coinKey The name of the coin to deposit
|
|
104
|
+
* @param {number} amountToDeposit The amount to deposit
|
|
105
|
+
* @returns A function that takes a Transaction object
|
|
106
|
+
*/
|
|
107
|
+
depositWithCap: (managerKey: string, coinKey: string, amountToDeposit: number) => (tx: Transaction) => void;
|
|
108
|
+
/**
|
|
109
|
+
* @description Withdraw using the WithdrawCap
|
|
110
|
+
* @param {string} managerKey The name of the BalanceManager
|
|
111
|
+
* @param {string} coinKey The name of the coin to withdraw
|
|
112
|
+
* @param {number} amountToWithdraw The amount to withdraw
|
|
113
|
+
* @returns A function that takes a Transaction object
|
|
114
|
+
*/
|
|
115
|
+
withdrawWithCap: (managerKey: string, coinKey: string, amountToWithdraw: number) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
116
|
+
/**
|
|
117
|
+
* @description Set the referral for the BalanceManager for a specific pool
|
|
118
|
+
* @param {string} managerKey The name of the BalanceManager
|
|
119
|
+
* @param {string} referral The referral (DeepBookPoolReferral) to set the BalanceManager to
|
|
120
|
+
* @param {TransactionArgument} tradeCap The tradeCap for permission checking
|
|
121
|
+
* @returns A function that takes a Transaction object
|
|
122
|
+
*/
|
|
123
|
+
setBalanceManagerReferral: (managerKey: string, referral: string, tradeCap: TransactionArgument) => (tx: Transaction) => void;
|
|
124
|
+
/**
|
|
125
|
+
* @description Unset the referral for the BalanceManager for a specific pool
|
|
126
|
+
* @param {string} managerKey The name of the BalanceManager
|
|
127
|
+
* @param {string} poolKey The key of the pool to unset the referral for
|
|
128
|
+
* @param {TransactionArgument} tradeCap The tradeCap for permission checking
|
|
129
|
+
* @returns A function that takes a Transaction object
|
|
130
|
+
*/
|
|
131
|
+
unsetBalanceManagerReferral: (managerKey: string, poolKey: string, tradeCap: TransactionArgument) => (tx: Transaction) => void;
|
|
132
|
+
registerBalanceManager: (managerKey: string) => (tx: Transaction) => void;
|
|
133
|
+
/**
|
|
134
|
+
* @description Get the owner of the BalanceManager
|
|
135
|
+
* @param {string} managerKey The key of the BalanceManager
|
|
136
|
+
* @returns A function that takes a Transaction object
|
|
137
|
+
*/
|
|
138
|
+
owner: (managerKey: string) => (tx: Transaction) => void;
|
|
139
|
+
/**
|
|
140
|
+
* @description Get the ID of the BalanceManager
|
|
141
|
+
* @param {string} managerKey The key of the BalanceManager
|
|
142
|
+
* @returns A function that takes a Transaction object
|
|
143
|
+
*/
|
|
144
|
+
id: (managerKey: string) => (tx: Transaction) => void;
|
|
145
|
+
/**
|
|
146
|
+
* @description Get the owner of the referral (DeepBookPoolReferral)
|
|
147
|
+
* @param {string} referralId The ID of the referral to get the owner of
|
|
148
|
+
* @returns A function that takes a Transaction object
|
|
149
|
+
*/
|
|
150
|
+
balanceManagerReferralOwner: (referralId: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
151
|
+
/**
|
|
152
|
+
* @description Get the pool ID associated with a referral (DeepBookPoolReferral)
|
|
153
|
+
* @param {string} referralId The ID of the referral to get the pool ID of
|
|
154
|
+
* @returns A function that takes a Transaction object
|
|
155
|
+
*/
|
|
156
|
+
balanceManagerReferralPoolId: (referralId: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
157
|
+
/**
|
|
158
|
+
* @description Get the referral ID from the balance manager for a specific pool
|
|
159
|
+
* @param {string} managerKey The name of the BalanceManager
|
|
160
|
+
* @param {string} poolKey Key of the pool to get the referral for
|
|
161
|
+
* @returns A function that takes a Transaction object
|
|
162
|
+
*/
|
|
163
|
+
getBalanceManagerReferralId: (managerKey: string, poolKey: string) => (tx: Transaction) => _haneullabs_haneul_transactions52.TransactionResult;
|
|
164
|
+
/**
|
|
165
|
+
* @description Revoke a TradeCap. This also revokes the associated DepositCap and WithdrawCap.
|
|
166
|
+
* @param {string} managerKey The name of the BalanceManager
|
|
167
|
+
* @param {string} tradeCapId The ID of the TradeCap to revoke
|
|
168
|
+
* @returns A function that takes a Transaction object
|
|
169
|
+
*/
|
|
170
|
+
revokeTradeCap: (managerKey: string, tradeCapId: string) => (tx: Transaction) => void;
|
|
171
|
+
}
|
|
172
|
+
//#endregion
|
|
173
|
+
export { BalanceManagerContract };
|
|
174
|
+
//# sourceMappingURL=balanceManager.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balanceManager.d.mts","names":[],"sources":["../../src/transactions/balanceManager.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAUa,cAAA,sBAAA,CAAsB;EAMd,CAAA,OAAA;EAQsB;;;EA4BV,WAAA,CAAA,MAAA,EApCZ,cAoCY;EAA6B;;;;EAkFO,4BAAA,EAAA,GAAA,GAAA,CAAA,EAAA,EA9G1B,WA8G0B,EAAA,GAAA,IAAA;EAevB;;;;EA2B2B,6BAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,EAxIT,WAwIS,EAAA,GAxIE,iCAAA,CAAA,iBAwIF;EAAW;;;;;EAwClC,mBAAA,EAAA,CAAA,OAAA,EApKjB,mBAoKiB,EAAA,GAAA,CAAA,EAAA,EApKY,WAoKZ,EAAA,GAAA,IAAA;EAAW;;;;;;;EAuFkB,kBAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,EA3ON,WA2OM,EAAA,GAAA,IAAA;EASxB;;;;;;;;EAgEiC,mBAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EAAA,EAzRjF,WAyRiF,EAAA,GAAA,IAAA;EAerB;;;;;;;2FAnRA;;;;;;;qEAkBE;;;;;;8CAevB,gBAAW,iCAAA,CAAA;;;;;;oDAcL,gBAAW,iCAAA,CAAA;;;;;;;yEAaU,gBAAW,iCAAA,CAAA;;;;;;6CAYvC,gBAAW,iCAAA,CAAA;;;;;;+CAcT,gBAAW,iCAAA,CAAA;;;;;;kDAcR,gBAAW,iCAAA,CAAA;;;;;;;;yFAiBY;;;;;;;;2FA6BC,gBAAW,iCAAA,CAAA;;;;;;;;8EAyBlC,6BAA6B;;;;;;;;+EAgB9B,6BAA6B;uDASxB;;;;;;sCAajB;;;;;;mCAaH;;;;;;4DAayB,gBAAW,iCAAA,CAAA;;;;;;6DAYV,gBAAW,iCAAA,CAAA;;;;;;;6EAaK,gBAAW,iCAAA,CAAA;;;;;;;mEAerB"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { coinWithBalance } from "@haneullabs/haneul/transactions";
|
|
2
|
+
|
|
3
|
+
//#region src/transactions/balanceManager.ts
|
|
4
|
+
/**
|
|
5
|
+
* BalanceManagerContract class for managing BalanceManager operations.
|
|
6
|
+
*/
|
|
7
|
+
var BalanceManagerContract = class {
|
|
8
|
+
#config;
|
|
9
|
+
/**
|
|
10
|
+
* @param {DeepBookConfig} config Configuration for BalanceManagerContract
|
|
11
|
+
*/
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.createAndShareBalanceManager = () => (tx) => {
|
|
14
|
+
const manager = tx.moveCall({ target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::new` });
|
|
15
|
+
tx.moveCall({
|
|
16
|
+
target: "0x2::transfer::public_share_object",
|
|
17
|
+
arguments: [manager],
|
|
18
|
+
typeArguments: [`${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::BalanceManager`]
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
this.createBalanceManagerWithOwner = (ownerAddress) => (tx) => {
|
|
22
|
+
return tx.moveCall({
|
|
23
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::new_with_custom_owner`,
|
|
24
|
+
arguments: [tx.pure.address(ownerAddress)]
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
this.shareBalanceManager = (manager) => (tx) => {
|
|
28
|
+
tx.moveCall({
|
|
29
|
+
target: "0x2::transfer::public_share_object",
|
|
30
|
+
arguments: [manager],
|
|
31
|
+
typeArguments: [`${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::BalanceManager`]
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
this.depositIntoManager = (managerKey, coinKey, amountToDeposit) => (tx) => {
|
|
35
|
+
tx.setSenderIfNotSet(this.#config.address);
|
|
36
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
37
|
+
const coin = this.#config.getCoin(coinKey);
|
|
38
|
+
const depositInput = Math.round(amountToDeposit * coin.scalar);
|
|
39
|
+
const deposit = coinWithBalance({
|
|
40
|
+
type: coin.type,
|
|
41
|
+
balance: depositInput
|
|
42
|
+
});
|
|
43
|
+
tx.moveCall({
|
|
44
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::deposit`,
|
|
45
|
+
arguments: [tx.object(managerId), deposit],
|
|
46
|
+
typeArguments: [coin.type]
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
this.withdrawFromManager = (managerKey, coinKey, amountToWithdraw, recipient) => (tx) => {
|
|
50
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
51
|
+
const coin = this.#config.getCoin(coinKey);
|
|
52
|
+
const withdrawInput = Math.round(amountToWithdraw * coin.scalar);
|
|
53
|
+
const coinObject = tx.moveCall({
|
|
54
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::withdraw`,
|
|
55
|
+
arguments: [tx.object(managerId), tx.pure.u64(withdrawInput)],
|
|
56
|
+
typeArguments: [coin.type]
|
|
57
|
+
});
|
|
58
|
+
tx.transferObjects([coinObject], recipient);
|
|
59
|
+
};
|
|
60
|
+
this.withdrawAllFromManager = (managerKey, coinKey, recipient) => (tx) => {
|
|
61
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
62
|
+
const coin = this.#config.getCoin(coinKey);
|
|
63
|
+
const withdrawalCoin = tx.moveCall({
|
|
64
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::withdraw_all`,
|
|
65
|
+
arguments: [tx.object(managerId)],
|
|
66
|
+
typeArguments: [coin.type]
|
|
67
|
+
});
|
|
68
|
+
tx.transferObjects([withdrawalCoin], recipient);
|
|
69
|
+
};
|
|
70
|
+
this.checkManagerBalance = (managerKey, coinKey) => (tx) => {
|
|
71
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
72
|
+
const coin = this.#config.getCoin(coinKey);
|
|
73
|
+
tx.moveCall({
|
|
74
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::balance`,
|
|
75
|
+
arguments: [tx.object(managerId)],
|
|
76
|
+
typeArguments: [coin.type]
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
this.generateProof = (managerKey) => (tx) => {
|
|
80
|
+
const balanceManager = this.#config.getBalanceManager(managerKey);
|
|
81
|
+
return tx.add(balanceManager.tradeCap ? this.generateProofAsTrader(balanceManager.address, balanceManager.tradeCap) : this.generateProofAsOwner(balanceManager.address));
|
|
82
|
+
};
|
|
83
|
+
this.generateProofAsOwner = (managerId) => (tx) => {
|
|
84
|
+
return tx.moveCall({
|
|
85
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::generate_proof_as_owner`,
|
|
86
|
+
arguments: [tx.object(managerId)]
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
this.generateProofAsTrader = (managerId, tradeCapId) => (tx) => {
|
|
90
|
+
return tx.moveCall({
|
|
91
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::generate_proof_as_trader`,
|
|
92
|
+
arguments: [tx.object(managerId), tx.object(tradeCapId)]
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
this.mintTradeCap = (managerKey) => (tx) => {
|
|
96
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
97
|
+
return tx.moveCall({
|
|
98
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::mint_trade_cap`,
|
|
99
|
+
arguments: [tx.object(managerId)]
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
this.mintDepositCap = (managerKey) => (tx) => {
|
|
103
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
104
|
+
return tx.moveCall({
|
|
105
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::mint_deposit_cap`,
|
|
106
|
+
arguments: [tx.object(managerId)]
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
this.mintWithdrawalCap = (managerKey) => (tx) => {
|
|
110
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
111
|
+
return tx.moveCall({
|
|
112
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::mint_withdraw_cap`,
|
|
113
|
+
arguments: [tx.object(managerId)]
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
this.depositWithCap = (managerKey, coinKey, amountToDeposit) => (tx) => {
|
|
117
|
+
tx.setSenderIfNotSet(this.#config.address);
|
|
118
|
+
const manager = this.#config.getBalanceManager(managerKey);
|
|
119
|
+
const managerId = manager.address;
|
|
120
|
+
if (!manager.depositCap) throw new Error(`DepositCap not set for ${managerKey}`);
|
|
121
|
+
const depositCapId = manager.depositCap;
|
|
122
|
+
const coin = this.#config.getCoin(coinKey);
|
|
123
|
+
const depositInput = Math.round(amountToDeposit * coin.scalar);
|
|
124
|
+
const deposit = coinWithBalance({
|
|
125
|
+
type: coin.type,
|
|
126
|
+
balance: depositInput
|
|
127
|
+
});
|
|
128
|
+
tx.moveCall({
|
|
129
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::deposit_with_cap`,
|
|
130
|
+
arguments: [
|
|
131
|
+
tx.object(managerId),
|
|
132
|
+
tx.object(depositCapId),
|
|
133
|
+
deposit
|
|
134
|
+
],
|
|
135
|
+
typeArguments: [coin.type]
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
this.withdrawWithCap = (managerKey, coinKey, amountToWithdraw) => (tx) => {
|
|
139
|
+
tx.setSenderIfNotSet(this.#config.address);
|
|
140
|
+
const manager = this.#config.getBalanceManager(managerKey);
|
|
141
|
+
const managerId = manager.address;
|
|
142
|
+
if (!manager.withdrawCap) throw new Error(`WithdrawCap not set for ${managerKey}`);
|
|
143
|
+
const withdrawCapId = manager.withdrawCap;
|
|
144
|
+
const coin = this.#config.getCoin(coinKey);
|
|
145
|
+
const withdrawAmount = Math.round(amountToWithdraw * coin.scalar);
|
|
146
|
+
return tx.moveCall({
|
|
147
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::withdraw_with_cap`,
|
|
148
|
+
arguments: [
|
|
149
|
+
tx.object(managerId),
|
|
150
|
+
tx.object(withdrawCapId),
|
|
151
|
+
tx.pure.u64(withdrawAmount)
|
|
152
|
+
],
|
|
153
|
+
typeArguments: [coin.type]
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
this.setBalanceManagerReferral = (managerKey, referral, tradeCap) => (tx) => {
|
|
157
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
158
|
+
tx.moveCall({
|
|
159
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::set_balance_manager_referral`,
|
|
160
|
+
arguments: [
|
|
161
|
+
tx.object(managerId),
|
|
162
|
+
tx.object(referral),
|
|
163
|
+
tradeCap
|
|
164
|
+
]
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
this.unsetBalanceManagerReferral = (managerKey, poolKey, tradeCap) => (tx) => {
|
|
168
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
169
|
+
const poolId = this.#config.getPool(poolKey).address;
|
|
170
|
+
tx.moveCall({
|
|
171
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::unset_balance_manager_referral`,
|
|
172
|
+
arguments: [
|
|
173
|
+
tx.object(managerId),
|
|
174
|
+
tx.pure.id(poolId),
|
|
175
|
+
tradeCap
|
|
176
|
+
]
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
this.registerBalanceManager = (managerKey) => (tx) => {
|
|
180
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
181
|
+
tx.moveCall({
|
|
182
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::register_balance_manager`,
|
|
183
|
+
arguments: [tx.object(managerId), tx.object(this.#config.REGISTRY_ID)]
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
this.owner = (managerKey) => (tx) => {
|
|
187
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
188
|
+
tx.moveCall({
|
|
189
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::owner`,
|
|
190
|
+
arguments: [tx.object(managerId)]
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
this.id = (managerKey) => (tx) => {
|
|
194
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
195
|
+
tx.moveCall({
|
|
196
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::id`,
|
|
197
|
+
arguments: [tx.object(managerId)]
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
this.balanceManagerReferralOwner = (referralId) => (tx) => {
|
|
201
|
+
return tx.moveCall({
|
|
202
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::balance_manager_referral_owner`,
|
|
203
|
+
arguments: [tx.object(referralId)]
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
this.balanceManagerReferralPoolId = (referralId) => (tx) => {
|
|
207
|
+
return tx.moveCall({
|
|
208
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::balance_manager_referral_pool_id`,
|
|
209
|
+
arguments: [tx.object(referralId)]
|
|
210
|
+
});
|
|
211
|
+
};
|
|
212
|
+
this.getBalanceManagerReferralId = (managerKey, poolKey) => (tx) => {
|
|
213
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
214
|
+
const poolId = this.#config.getPool(poolKey).address;
|
|
215
|
+
return tx.moveCall({
|
|
216
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::get_balance_manager_referral_id`,
|
|
217
|
+
arguments: [tx.object(managerId), tx.pure.id(poolId)]
|
|
218
|
+
});
|
|
219
|
+
};
|
|
220
|
+
this.revokeTradeCap = (managerKey, tradeCapId) => (tx) => {
|
|
221
|
+
const managerId = this.#config.getBalanceManager(managerKey).address;
|
|
222
|
+
tx.moveCall({
|
|
223
|
+
target: `${this.#config.DEEPBOOK_PACKAGE_ID}::balance_manager::revoke_trade_cap`,
|
|
224
|
+
arguments: [tx.object(managerId), tx.pure.id(tradeCapId)]
|
|
225
|
+
});
|
|
226
|
+
};
|
|
227
|
+
this.#config = config;
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
//#endregion
|
|
232
|
+
export { BalanceManagerContract };
|
|
233
|
+
//# sourceMappingURL=balanceManager.mjs.map
|