@drift-labs/common 1.0.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/lib/Config.d.ts +26 -0
- package/lib/Config.js +29 -0
- package/lib/Config.js.map +1 -0
- package/lib/EnvironmentConstants.d.ts +40 -0
- package/lib/EnvironmentConstants.js +64 -0
- package/lib/EnvironmentConstants.js.map +1 -0
- package/lib/actions/actionHelpers/accountDeletionHelpers.d.ts +16 -0
- package/lib/actions/actionHelpers/accountDeletionHelpers.js +151 -0
- package/lib/actions/actionHelpers/accountDeletionHelpers.js.map +1 -0
- package/lib/actions/actionHelpers/actionHelpers.d.ts +13 -0
- package/lib/actions/actionHelpers/actionHelpers.js +8 -0
- package/lib/actions/actionHelpers/actionHelpers.js.map +1 -0
- package/lib/chartConstants.d.ts +2 -0
- package/lib/chartConstants.js +14 -0
- package/lib/chartConstants.js.map +1 -0
- package/lib/clients/candleClient.d.ts +74 -0
- package/lib/clients/candleClient.js +364 -0
- package/lib/clients/candleClient.js.map +1 -0
- package/lib/clients/dataApiWsClient.d.ts +33 -0
- package/lib/clients/dataApiWsClient.js +118 -0
- package/lib/clients/dataApiWsClient.js.map +1 -0
- package/lib/clients/index.d.ts +1 -0
- package/lib/clients/index.js +19 -0
- package/lib/clients/index.js.map +1 -0
- package/lib/clients/marketDataFeed.d.ts +42 -0
- package/lib/clients/marketDataFeed.js +422 -0
- package/lib/clients/marketDataFeed.js.map +1 -0
- package/lib/clients/redisClient.d.ts +89 -0
- package/lib/clients/redisClient.js +647 -0
- package/lib/clients/redisClient.js.map +1 -0
- package/lib/clients/swiftClient.d.ts +57 -0
- package/lib/clients/swiftClient.js +289 -0
- package/lib/clients/swiftClient.js.map +1 -0
- package/lib/clients/tvFeed.d.ts +63 -0
- package/lib/clients/tvFeed.js +351 -0
- package/lib/clients/tvFeed.js.map +1 -0
- package/lib/common-ui-utils/commonUiUtils.d.ts +211 -0
- package/lib/common-ui-utils/commonUiUtils.js +624 -0
- package/lib/common-ui-utils/commonUiUtils.js.map +1 -0
- package/lib/common-ui-utils/index.d.ts +6 -0
- package/lib/common-ui-utils/index.js +23 -0
- package/lib/common-ui-utils/index.js.map +1 -0
- package/lib/common-ui-utils/market.d.ts +27 -0
- package/lib/common-ui-utils/market.js +80 -0
- package/lib/common-ui-utils/market.js.map +1 -0
- package/lib/common-ui-utils/order.d.ts +11 -0
- package/lib/common-ui-utils/order.js +161 -0
- package/lib/common-ui-utils/order.js.map +1 -0
- package/lib/common-ui-utils/settings/settings.d.ts +51 -0
- package/lib/common-ui-utils/settings/settings.js +84 -0
- package/lib/common-ui-utils/settings/settings.js.map +1 -0
- package/lib/common-ui-utils/trading.d.ts +56 -0
- package/lib/common-ui-utils/trading.js +200 -0
- package/lib/common-ui-utils/trading.js.map +1 -0
- package/lib/common-ui-utils/user.d.ts +13 -0
- package/lib/common-ui-utils/user.js +124 -0
- package/lib/common-ui-utils/user.js.map +1 -0
- package/lib/constants/autogenerated/driftErrors.json +1787 -0
- package/lib/constants/autogenerated/jup-v4-error-codes.json +67 -0
- package/lib/constants/autogenerated/jup-v6-error-codes.json +115 -0
- package/lib/constants/dev.d.ts +15 -0
- package/lib/constants/dev.js +19 -0
- package/lib/constants/dev.js.map +1 -0
- package/lib/constants/geoblockList.d.ts +4 -0
- package/lib/constants/geoblockList.js +32 -0
- package/lib/constants/geoblockList.js.map +1 -0
- package/lib/constants/index.d.ts +9 -0
- package/lib/constants/index.js +26 -0
- package/lib/constants/index.js.map +1 -0
- package/lib/constants/markets.d.ts +1 -0
- package/lib/constants/markets.js +5 -0
- package/lib/constants/markets.js.map +1 -0
- package/lib/constants/misc.d.ts +23 -0
- package/lib/constants/misc.js +27 -0
- package/lib/constants/misc.js.map +1 -0
- package/lib/constants/orders.d.ts +12 -0
- package/lib/constants/orders.js +79 -0
- package/lib/constants/orders.js.map +1 -0
- package/lib/constants/pools.d.ts +5 -0
- package/lib/constants/pools.js +9 -0
- package/lib/constants/pools.js.map +1 -0
- package/lib/constants/predictionMarket.d.ts +3 -0
- package/lib/constants/predictionMarket.js +7 -0
- package/lib/constants/predictionMarket.js.map +1 -0
- package/lib/constants/superstake.d.ts +22 -0
- package/lib/constants/superstake.js +45 -0
- package/lib/constants/superstake.js.map +1 -0
- package/lib/constants/trade.d.ts +2 -0
- package/lib/constants/trade.js +9 -0
- package/lib/constants/trade.js.map +1 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftL2OrderbookManager.d.ts +68 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftL2OrderbookManager.js +146 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftL2OrderbookManager.js.map +1 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.d.ts +204 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js +530 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js.map +1 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/types.d.ts +90 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/types.js +3 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/types.js.map +1 -0
- package/lib/drift/Drift/clients/AuthorityDrift/SubscriptionManager.d.ts +139 -0
- package/lib/drift/Drift/clients/AuthorityDrift/SubscriptionManager.js +287 -0
- package/lib/drift/Drift/clients/AuthorityDrift/SubscriptionManager.js.map +1 -0
- package/lib/drift/Drift/clients/AuthorityDrift/index.d.ts +242 -0
- package/lib/drift/Drift/clients/AuthorityDrift/index.js +503 -0
- package/lib/drift/Drift/clients/AuthorityDrift/index.js.map +1 -0
- package/lib/drift/Drift/clients/CentralServerDrift.d.ts +91 -0
- package/lib/drift/Drift/clients/CentralServerDrift.js +326 -0
- package/lib/drift/Drift/clients/CentralServerDrift.js.map +1 -0
- package/lib/drift/Drift/clients/index.d.ts +3 -0
- package/lib/drift/Drift/clients/index.js +20 -0
- package/lib/drift/Drift/clients/index.js.map +1 -0
- package/lib/drift/Drift/constants/blockchain.d.ts +24 -0
- package/lib/drift/Drift/constants/blockchain.js +32 -0
- package/lib/drift/Drift/constants/blockchain.js.map +1 -0
- package/lib/drift/Drift/constants/errors.d.ts +6 -0
- package/lib/drift/Drift/constants/errors.js +14 -0
- package/lib/drift/Drift/constants/errors.js.map +1 -0
- package/lib/drift/Drift/constants/index.d.ts +3 -0
- package/lib/drift/Drift/constants/index.js +20 -0
- package/lib/drift/Drift/constants/index.js.map +1 -0
- package/lib/drift/Drift/constants/orderbook.d.ts +7 -0
- package/lib/drift/Drift/constants/orderbook.js +10 -0
- package/lib/drift/Drift/constants/orderbook.js.map +1 -0
- package/lib/drift/Drift/data/PollingDlob.d.ts +154 -0
- package/lib/drift/Drift/data/PollingDlob.js +387 -0
- package/lib/drift/Drift/data/PollingDlob.js.map +1 -0
- package/lib/drift/Drift/data/index.d.ts +1 -0
- package/lib/drift/Drift/data/index.js +18 -0
- package/lib/drift/Drift/data/index.js.map +1 -0
- package/lib/drift/Drift/index.d.ts +4 -0
- package/lib/drift/Drift/index.js +21 -0
- package/lib/drift/Drift/index.js.map +1 -0
- package/lib/drift/Drift/stores/MarkPriceCache.d.ts +27 -0
- package/lib/drift/Drift/stores/MarkPriceCache.js +59 -0
- package/lib/drift/Drift/stores/MarkPriceCache.js.map +1 -0
- package/lib/drift/Drift/stores/OraclePriceCache.d.ts +21 -0
- package/lib/drift/Drift/stores/OraclePriceCache.js +57 -0
- package/lib/drift/Drift/stores/OraclePriceCache.js.map +1 -0
- package/lib/drift/Drift/stores/UserAccountCache.d.ts +49 -0
- package/lib/drift/Drift/stores/UserAccountCache.js +107 -0
- package/lib/drift/Drift/stores/UserAccountCache.js.map +1 -0
- package/lib/drift/Drift/stores/index.d.ts +3 -0
- package/lib/drift/Drift/stores/index.js +20 -0
- package/lib/drift/Drift/stores/index.js.map +1 -0
- package/lib/drift/base/actions/index.d.ts +4 -0
- package/lib/drift/base/actions/index.js +21 -0
- package/lib/drift/base/actions/index.js.map +1 -0
- package/lib/drift/base/actions/perp/index.d.ts +2 -0
- package/lib/drift/base/actions/perp/index.js +19 -0
- package/lib/drift/base/actions/perp/index.js.map +1 -0
- package/lib/drift/base/actions/perp/settleFunding.d.ts +25 -0
- package/lib/drift/base/actions/perp/settleFunding.js +41 -0
- package/lib/drift/base/actions/perp/settleFunding.js.map +1 -0
- package/lib/drift/base/actions/perp/settlePnl.d.ts +35 -0
- package/lib/drift/base/actions/perp/settlePnl.js +44 -0
- package/lib/drift/base/actions/perp/settlePnl.js.map +1 -0
- package/lib/drift/base/actions/spot/borrow.d.ts +1 -0
- package/lib/drift/base/actions/spot/borrow.js +8 -0
- package/lib/drift/base/actions/spot/borrow.js.map +1 -0
- package/lib/drift/base/actions/spot/deposit.d.ts +40 -0
- package/lib/drift/base/actions/spot/deposit.js +82 -0
- package/lib/drift/base/actions/spot/deposit.js.map +1 -0
- package/lib/drift/base/actions/spot/index.d.ts +3 -0
- package/lib/drift/base/actions/spot/index.js +20 -0
- package/lib/drift/base/actions/spot/index.js.map +1 -0
- package/lib/drift/base/actions/spot/withdraw.d.ts +16 -0
- package/lib/drift/base/actions/spot/withdraw.js +39 -0
- package/lib/drift/base/actions/spot/withdraw.js.map +1 -0
- package/lib/drift/base/actions/trade/cancelOrder.d.ts +47 -0
- package/lib/drift/base/actions/trade/cancelOrder.js +55 -0
- package/lib/drift/base/actions/trade/cancelOrder.js.map +1 -0
- package/lib/drift/base/actions/trade/editOrder.d.ts +55 -0
- package/lib/drift/base/actions/trade/editOrder.js +35 -0
- package/lib/drift/base/actions/trade/editOrder.js.map +1 -0
- package/lib/drift/base/actions/trade/index.d.ts +4 -0
- package/lib/drift/base/actions/trade/index.js +21 -0
- package/lib/drift/base/actions/trade/index.js.map +1 -0
- package/lib/drift/base/actions/trade/openPerpOrder/index.d.ts +3 -0
- package/lib/drift/base/actions/trade/openPerpOrder/index.js +20 -0
- package/lib/drift/base/actions/trade/openPerpOrder/index.js.map +1 -0
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.d.ts +84 -0
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js +293 -0
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js.map +1 -0
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.d.ts +19 -0
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js +161 -0
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js.map +1 -0
- package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.d.ts +166 -0
- package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js +156 -0
- package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js.map +1 -0
- package/lib/drift/base/actions/trade/swap.d.ts +62 -0
- package/lib/drift/base/actions/trade/swap.js +60 -0
- package/lib/drift/base/actions/trade/swap.js.map +1 -0
- package/lib/drift/base/actions/user/create.d.ts +75 -0
- package/lib/drift/base/actions/user/create.js +104 -0
- package/lib/drift/base/actions/user/create.js.map +1 -0
- package/lib/drift/base/actions/user/delete.d.ts +47 -0
- package/lib/drift/base/actions/user/delete.js +39 -0
- package/lib/drift/base/actions/user/delete.js.map +1 -0
- package/lib/drift/base/actions/user/index.d.ts +1 -0
- package/lib/drift/base/actions/user/index.js +18 -0
- package/lib/drift/base/actions/user/index.js.map +1 -0
- package/lib/drift/base/constants/accountNames.d.ts +1 -0
- package/lib/drift/base/constants/accountNames.js +13 -0
- package/lib/drift/base/constants/accountNames.js.map +1 -0
- package/lib/drift/base/details/index.d.ts +2 -0
- package/lib/drift/base/details/index.js +19 -0
- package/lib/drift/base/details/index.js.map +1 -0
- package/lib/drift/base/details/market/funding.d.ts +9 -0
- package/lib/drift/base/details/market/funding.js +50 -0
- package/lib/drift/base/details/market/funding.js.map +1 -0
- package/lib/drift/base/details/market/index.d.ts +2 -0
- package/lib/drift/base/details/market/index.js +19 -0
- package/lib/drift/base/details/market/index.js.map +1 -0
- package/lib/drift/base/details/market/openInterest.d.ts +5 -0
- package/lib/drift/base/details/market/openInterest.js +12 -0
- package/lib/drift/base/details/market/openInterest.js.map +1 -0
- package/lib/drift/base/details/user/balances.d.ts +40 -0
- package/lib/drift/base/details/user/balances.js +39 -0
- package/lib/drift/base/details/user/balances.js.map +1 -0
- package/lib/drift/base/details/user/index.d.ts +4 -0
- package/lib/drift/base/details/user/index.js +21 -0
- package/lib/drift/base/details/user/index.js.map +1 -0
- package/lib/drift/base/details/user/marginInfo.d.ts +29 -0
- package/lib/drift/base/details/user/marginInfo.js +49 -0
- package/lib/drift/base/details/user/marginInfo.js.map +1 -0
- package/lib/drift/base/details/user/orders.d.ts +3 -0
- package/lib/drift/base/details/user/orders.js +11 -0
- package/lib/drift/base/details/user/orders.js.map +1 -0
- package/lib/drift/base/details/user/positions.d.ts +70 -0
- package/lib/drift/base/details/user/positions.js +146 -0
- package/lib/drift/base/details/user/positions.js.map +1 -0
- package/lib/drift/cli.d.ts +25 -0
- package/lib/drift/cli.js +900 -0
- package/lib/drift/cli.js.map +1 -0
- package/lib/drift/constants/apiUrls.d.ts +27 -0
- package/lib/drift/constants/apiUrls.js +31 -0
- package/lib/drift/constants/apiUrls.js.map +1 -0
- package/lib/drift/example.d.ts +19 -0
- package/lib/drift/example.js +249 -0
- package/lib/drift/example.js.map +1 -0
- package/lib/drift/index.d.ts +3 -0
- package/lib/drift/index.js +20 -0
- package/lib/drift/index.js.map +1 -0
- package/lib/drift/utils/auctionParamsResponseMapper.d.ts +45 -0
- package/lib/drift/utils/auctionParamsResponseMapper.js +148 -0
- package/lib/drift/utils/auctionParamsResponseMapper.js.map +1 -0
- package/lib/drift/utils/funding.d.ts +2 -0
- package/lib/drift/utils/funding.js +9 -0
- package/lib/drift/utils/funding.js.map +1 -0
- package/lib/drift/utils/index.d.ts +3 -0
- package/lib/drift/utils/index.js +23 -0
- package/lib/drift/utils/index.js.map +1 -0
- package/lib/drift/utils/orderParams.d.ts +48 -0
- package/lib/drift/utils/orderParams.js +140 -0
- package/lib/drift/utils/orderParams.js.map +1 -0
- package/lib/index.d.ts +45 -0
- package/lib/index.js +68 -0
- package/lib/index.js.map +1 -0
- package/lib/serializableTypes.d.ts +961 -0
- package/lib/serializableTypes.js +3887 -0
- package/lib/serializableTypes.js.map +1 -0
- package/lib/types/MarketId.d.ts +26 -0
- package/lib/types/MarketId.js +64 -0
- package/lib/types/MarketId.js.map +1 -0
- package/lib/types/Superstake.d.ts +7 -0
- package/lib/types/Superstake.js +3 -0
- package/lib/types/Superstake.js.map +1 -0
- package/lib/types/UIEnv.d.ts +26 -0
- package/lib/types/UIEnv.js +49 -0
- package/lib/types/UIEnv.js.map +1 -0
- package/lib/types/UIMarket.d.ts +94 -0
- package/lib/types/UIMarket.js +224 -0
- package/lib/types/UIMarket.js.map +1 -0
- package/lib/types/candles.d.ts +4 -0
- package/lib/types/candles.js +9 -0
- package/lib/types/candles.js.map +1 -0
- package/lib/types/dataServer.d.ts +53 -0
- package/lib/types/dataServer.js +3 -0
- package/lib/types/dataServer.js.map +1 -0
- package/lib/types/historyServer.d.ts +38 -0
- package/lib/types/historyServer.js +11 -0
- package/lib/types/historyServer.js.map +1 -0
- package/lib/types/index.d.ts +12 -0
- package/lib/types/index.js +29 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/leaderboard.d.ts +80 -0
- package/lib/types/leaderboard.js +11 -0
- package/lib/types/leaderboard.js.map +1 -0
- package/lib/types/remote-configs.d.ts +61 -0
- package/lib/types/remote-configs.js +3 -0
- package/lib/types/remote-configs.js.map +1 -0
- package/lib/types/trade.d.ts +18 -0
- package/lib/types/trade.js +3 -0
- package/lib/types/trade.js.map +1 -0
- package/lib/types/user.d.ts +40 -0
- package/lib/types/user.js +3 -0
- package/lib/types/user.js.map +1 -0
- package/lib/types/utility.d.ts +15 -0
- package/lib/types/utility.js +3 -0
- package/lib/types/utility.js.map +1 -0
- package/lib/utils/CircularBuffers/CircularBuffer.d.ts +22 -0
- package/lib/utils/CircularBuffers/CircularBuffer.js +73 -0
- package/lib/utils/CircularBuffers/CircularBuffer.js.map +1 -0
- package/lib/utils/CircularBuffers/UniqueCircularBuffer.d.ts +19 -0
- package/lib/utils/CircularBuffers/UniqueCircularBuffer.js +78 -0
- package/lib/utils/CircularBuffers/UniqueCircularBuffer.js.map +1 -0
- package/lib/utils/CircularBuffers/index.d.ts +2 -0
- package/lib/utils/CircularBuffers/index.js +19 -0
- package/lib/utils/CircularBuffers/index.js.map +1 -0
- package/lib/utils/MultiplexWebSocket.d.ts +95 -0
- package/lib/utils/MultiplexWebSocket.js +416 -0
- package/lib/utils/MultiplexWebSocket.js.map +1 -0
- package/lib/utils/NumLib.d.ts +106 -0
- package/lib/utils/NumLib.js +300 -0
- package/lib/utils/NumLib.js.map +1 -0
- package/lib/utils/SharedInterval.d.ts +21 -0
- package/lib/utils/SharedInterval.js +47 -0
- package/lib/utils/SharedInterval.js.map +1 -0
- package/lib/utils/SlotBasedResultValidator.d.ts +9 -0
- package/lib/utils/SlotBasedResultValidator.js +27 -0
- package/lib/utils/SlotBasedResultValidator.js.map +1 -0
- package/lib/utils/Stopwatch.d.ts +15 -0
- package/lib/utils/Stopwatch.js +31 -0
- package/lib/utils/Stopwatch.js.map +1 -0
- package/lib/utils/StrictEventEmitter.d.ts +15 -0
- package/lib/utils/StrictEventEmitter.js +55 -0
- package/lib/utils/StrictEventEmitter.js.map +1 -0
- package/lib/utils/WalletConnectionState.d.ts +31 -0
- package/lib/utils/WalletConnectionState.js +83 -0
- package/lib/utils/WalletConnectionState.js.map +1 -0
- package/lib/utils/assert.d.ts +1 -0
- package/lib/utils/assert.js +10 -0
- package/lib/utils/assert.js.map +1 -0
- package/lib/utils/candles/Candle.d.ts +94 -0
- package/lib/utils/candles/Candle.js +580 -0
- package/lib/utils/candles/Candle.js.map +1 -0
- package/lib/utils/candles/types.d.ts +8 -0
- package/lib/utils/candles/types.js +3 -0
- package/lib/utils/candles/types.js.map +1 -0
- package/lib/utils/dlob-server/DlobServerWebsocketUtils.d.ts +57 -0
- package/lib/utils/dlob-server/DlobServerWebsocketUtils.js +137 -0
- package/lib/utils/dlob-server/DlobServerWebsocketUtils.js.map +1 -0
- package/lib/utils/driftEvents.d.ts +10 -0
- package/lib/utils/driftEvents.js +123 -0
- package/lib/utils/driftEvents.js.map +1 -0
- package/lib/utils/equalityChecks.d.ts +12 -0
- package/lib/utils/equalityChecks.js +71 -0
- package/lib/utils/equalityChecks.js.map +1 -0
- package/lib/utils/featureFlags.d.ts +3 -0
- package/lib/utils/featureFlags.js +7 -0
- package/lib/utils/featureFlags.js.map +1 -0
- package/lib/utils/geoblock/index.d.ts +4 -0
- package/lib/utils/geoblock/index.js +20 -0
- package/lib/utils/geoblock/index.js.map +1 -0
- package/lib/utils/index.d.ts +181 -0
- package/lib/utils/index.js +608 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/insuranceFund.d.ts +15 -0
- package/lib/utils/insuranceFund.js +84 -0
- package/lib/utils/insuranceFund.js.map +1 -0
- package/lib/utils/logger.d.ts +5 -0
- package/lib/utils/logger.js +53 -0
- package/lib/utils/logger.js.map +1 -0
- package/lib/utils/math.d.ts +10 -0
- package/lib/utils/math.js +89 -0
- package/lib/utils/math.js.map +1 -0
- package/lib/utils/orderbook/index.d.ts +65 -0
- package/lib/utils/orderbook/index.js +80 -0
- package/lib/utils/orderbook/index.js.map +1 -0
- package/lib/utils/pollingSequenceGuard.d.ts +9 -0
- package/lib/utils/pollingSequenceGuard.js +24 -0
- package/lib/utils/pollingSequenceGuard.js.map +1 -0
- package/lib/utils/priority-fees/PriorityFeeCalculator.d.ts +24 -0
- package/lib/utils/priority-fees/PriorityFeeCalculator.js +53 -0
- package/lib/utils/priority-fees/PriorityFeeCalculator.js.map +1 -0
- package/lib/utils/priority-fees/PriorityFeeStrategies.d.ts +5 -0
- package/lib/utils/priority-fees/PriorityFeeStrategies.js +43 -0
- package/lib/utils/priority-fees/PriorityFeeStrategies.js.map +1 -0
- package/lib/utils/priority-fees/index.d.ts +2 -0
- package/lib/utils/priority-fees/index.js +19 -0
- package/lib/utils/priority-fees/index.js.map +1 -0
- package/lib/utils/priorityFees.d.ts +14 -0
- package/lib/utils/priorityFees.js +68 -0
- package/lib/utils/priorityFees.js.map +1 -0
- package/lib/utils/rpcLatency.d.ts +7 -0
- package/lib/utils/rpcLatency.js +49 -0
- package/lib/utils/rpcLatency.js.map +1 -0
- package/lib/utils/rxjs.d.ts +11 -0
- package/lib/utils/rxjs.js +24 -0
- package/lib/utils/rxjs.js.map +1 -0
- package/lib/utils/s3Buckets.d.ts +43 -0
- package/lib/utils/s3Buckets.js +108 -0
- package/lib/utils/s3Buckets.js.map +1 -0
- package/lib/utils/superstake.d.ts +86 -0
- package/lib/utils/superstake.js +224 -0
- package/lib/utils/superstake.js.map +1 -0
- package/lib/utils/token.d.ts +16 -0
- package/lib/utils/token.js +44 -0
- package/lib/utils/token.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DriftClient, DriftEnv, SpotMarketConfig } from '@drift-labs/sdk';
|
|
2
|
+
import { LstMetrics } from '../types/Superstake';
|
|
3
|
+
declare const getSuperstakeEstimatedApr: ({ lstSpotMarket, lstMetrics, initialLstDeposit, lstAmount, solAmount, driftClient, driftClientIsReady, driftEnv, includeBorrowRateDelta, }: {
|
|
4
|
+
lstSpotMarket: SpotMarketConfig;
|
|
5
|
+
lstAmount: number;
|
|
6
|
+
initialLstDeposit: number;
|
|
7
|
+
solAmount: number;
|
|
8
|
+
lstMetrics: LstMetrics;
|
|
9
|
+
driftClient: DriftClient;
|
|
10
|
+
driftClientIsReady?: boolean;
|
|
11
|
+
driftEnv?: DriftEnv;
|
|
12
|
+
includeBorrowRateDelta?: boolean;
|
|
13
|
+
}) => {
|
|
14
|
+
solBorrowRate: number;
|
|
15
|
+
lstDepositRate: number;
|
|
16
|
+
lstApy: number;
|
|
17
|
+
leveragedBorrowRate: number;
|
|
18
|
+
leveragedDepositRate: number;
|
|
19
|
+
leveragedLstApr: number;
|
|
20
|
+
leveragedEmissionsApr: number;
|
|
21
|
+
lstNetProjectedApr: number;
|
|
22
|
+
totalNetProjectedApr: number;
|
|
23
|
+
solBorrowAmount: number;
|
|
24
|
+
projectedLiqRatio: number;
|
|
25
|
+
unleveragedApr: number;
|
|
26
|
+
loaded: boolean;
|
|
27
|
+
} | {
|
|
28
|
+
solBorrowRate: number;
|
|
29
|
+
lstDepositRate: number;
|
|
30
|
+
lstApy: number;
|
|
31
|
+
leveragedLstApr: number;
|
|
32
|
+
leveragedEmissionsApr: number;
|
|
33
|
+
leveragedBorrowRate: number;
|
|
34
|
+
leveragedDepositRate: number;
|
|
35
|
+
lstNetProjectedApr: number;
|
|
36
|
+
totalNetProjectedApr: number;
|
|
37
|
+
solBorrowAmount: number;
|
|
38
|
+
unleveragedApr: number;
|
|
39
|
+
loaded: boolean;
|
|
40
|
+
};
|
|
41
|
+
declare const getSuperstakeEstimatedLiquidationRatio: ({ driftEnv, driftClient, driftClientIsReady, lstAmount, lstMetrics, lstSpotMarket, solAmount, }: {
|
|
42
|
+
driftEnv?: DriftEnv;
|
|
43
|
+
driftClient: DriftClient;
|
|
44
|
+
driftClientIsReady?: boolean;
|
|
45
|
+
lstAmount: number;
|
|
46
|
+
solAmount: number;
|
|
47
|
+
lstSpotMarket: SpotMarketConfig;
|
|
48
|
+
lstMetrics: LstMetrics;
|
|
49
|
+
}) => number;
|
|
50
|
+
/**
|
|
51
|
+
* Fetches LST Metrics with a consistent return type for either msol, bsol, or jitosol
|
|
52
|
+
*
|
|
53
|
+
* @param lstSpotMarket
|
|
54
|
+
* @returns
|
|
55
|
+
*/
|
|
56
|
+
declare const fetchLstMetrics: (lstSpotMarket: SpotMarketConfig) => Promise<{
|
|
57
|
+
lstPriceApy30d: number;
|
|
58
|
+
priceInSol: number;
|
|
59
|
+
loaded: boolean;
|
|
60
|
+
emissionsApy?: undefined;
|
|
61
|
+
driftEmissions?: undefined;
|
|
62
|
+
} | {
|
|
63
|
+
loaded: boolean;
|
|
64
|
+
lstPriceApy30d: number;
|
|
65
|
+
priceInSol: number;
|
|
66
|
+
emissionsApy: number;
|
|
67
|
+
driftEmissions: number;
|
|
68
|
+
}>;
|
|
69
|
+
/**
|
|
70
|
+
* Returns estimated max spot leverage for a particular lst
|
|
71
|
+
*
|
|
72
|
+
* @param lst
|
|
73
|
+
* @param driftClient
|
|
74
|
+
* @param driftClientIsReady
|
|
75
|
+
* @returns
|
|
76
|
+
*/
|
|
77
|
+
declare const getMaxLeverageForLst: ({ lstSpotMarket, solSpotMarket, driftClient, driftClientIsReady, }: {
|
|
78
|
+
lstSpotMarket: SpotMarketConfig;
|
|
79
|
+
solSpotMarket: SpotMarketConfig;
|
|
80
|
+
driftClient: DriftClient;
|
|
81
|
+
driftClientIsReady: boolean;
|
|
82
|
+
}) => {
|
|
83
|
+
maxLeverage: number;
|
|
84
|
+
loaded: boolean;
|
|
85
|
+
};
|
|
86
|
+
export { getMaxLeverageForLst, getSuperstakeEstimatedApr, getSuperstakeEstimatedLiquidationRatio, fetchLstMetrics, };
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchLstMetrics = exports.getSuperstakeEstimatedLiquidationRatio = exports.getSuperstakeEstimatedApr = exports.getMaxLeverageForLst = void 0;
|
|
4
|
+
const sdk_1 = require("@drift-labs/sdk");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
// Default value for estimated APR
|
|
9
|
+
const DEFAULT_VALUE = {
|
|
10
|
+
solBorrowRate: 0,
|
|
11
|
+
lstDepositRate: 0,
|
|
12
|
+
lstApy: 0,
|
|
13
|
+
leveragedBorrowRate: 0,
|
|
14
|
+
leveragedDepositRate: 0,
|
|
15
|
+
leveragedLstApr: 0,
|
|
16
|
+
leveragedEmissionsApr: 0,
|
|
17
|
+
lstNetProjectedApr: 0,
|
|
18
|
+
totalNetProjectedApr: 0,
|
|
19
|
+
solBorrowAmount: 0,
|
|
20
|
+
projectedLiqRatio: 0,
|
|
21
|
+
unleveragedApr: 0,
|
|
22
|
+
loaded: false,
|
|
23
|
+
};
|
|
24
|
+
/*
|
|
25
|
+
* Returns amount of SOL that will be borrowed to achieve the desired leverage on the active LST
|
|
26
|
+
*/
|
|
27
|
+
const getSuperstakeEstimatedApr = ({ lstSpotMarket, lstMetrics, initialLstDeposit, lstAmount, solAmount, driftClient, driftClientIsReady, driftEnv, includeBorrowRateDelta = false, }) => {
|
|
28
|
+
const solSpotMarket = ((driftEnv && sdk_1.SpotMarkets[driftEnv]) ||
|
|
29
|
+
sdk_1.SpotMarkets['mainnet-beta']).find((market) => market.symbol === 'SOL');
|
|
30
|
+
if (!lstMetrics.loaded ||
|
|
31
|
+
!driftClient ||
|
|
32
|
+
!driftClientIsReady ||
|
|
33
|
+
!lstSpotMarket ||
|
|
34
|
+
!solSpotMarket)
|
|
35
|
+
return DEFAULT_VALUE;
|
|
36
|
+
let lstSpotMarketAccount, solSpotMarketAccount;
|
|
37
|
+
try {
|
|
38
|
+
lstSpotMarketAccount = driftClient.getSpotMarketAccount(lstSpotMarket.marketIndex);
|
|
39
|
+
solSpotMarketAccount = driftClient.getSpotMarketAccount(solSpotMarket.marketIndex);
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
console.log(err);
|
|
43
|
+
}
|
|
44
|
+
if (!lstSpotMarketAccount || !solSpotMarketAccount) {
|
|
45
|
+
return DEFAULT_VALUE;
|
|
46
|
+
}
|
|
47
|
+
const lstDepositRate = sdk_1.BigNum.from((0, sdk_1.calculateDepositRate)(lstSpotMarketAccount), sdk_1.PERCENTAGE_PRECISION_EXP);
|
|
48
|
+
const solBorrowRate = sdk_1.BigNum.from((0, sdk_1.calculateInterestRate)(solSpotMarketAccount, includeBorrowRateDelta
|
|
49
|
+
? new sdk_1.BN(Math.min(solAmount * web3_js_1.LAMPORTS_PER_SOL, Number.MAX_SAFE_INTEGER)).neg()
|
|
50
|
+
: sdk_1.ZERO), sdk_1.PERCENTAGE_PRECISION_EXP);
|
|
51
|
+
const superStakeLstDeposit = lstAmount;
|
|
52
|
+
const solBorrowAmount = solAmount;
|
|
53
|
+
if (isNaN(solBorrowAmount))
|
|
54
|
+
return DEFAULT_VALUE;
|
|
55
|
+
const lstAprFromApy = (0, utils_1.aprFromApy)(lstMetrics.lstPriceApy30d, Math.floor(365 / 2)) / 100;
|
|
56
|
+
const solInFromStaking = superStakeLstDeposit * lstAprFromApy * lstMetrics.priceInSol;
|
|
57
|
+
const solInFromDeposit = superStakeLstDeposit * lstDepositRate.toNum() * lstMetrics.priceInSol;
|
|
58
|
+
const leveragedLstApr = solInFromStaking / (initialLstDeposit * lstMetrics.priceInSol);
|
|
59
|
+
const solOut = solBorrowAmount * solBorrowRate.toNum();
|
|
60
|
+
const solRewardsPerYear = solInFromStaking + solInFromDeposit - solOut;
|
|
61
|
+
const lstNetProjectedApr = solRewardsPerYear / (initialLstDeposit * lstMetrics.priceInSol);
|
|
62
|
+
const leveragedBorrowRate = solOut / (initialLstDeposit * lstMetrics.priceInSol);
|
|
63
|
+
const leveragedDepositRate = solInFromDeposit / (initialLstDeposit * lstMetrics.priceInSol);
|
|
64
|
+
// Add emissions APR on top because they are airdropped separately
|
|
65
|
+
// Not subject to the borrow rate
|
|
66
|
+
const emissionsAprFromApy = lstMetrics.emissionsApy
|
|
67
|
+
? (0, utils_1.aprFromApy)(lstMetrics.emissionsApy, Math.floor(365 / 2)) / 100
|
|
68
|
+
: 0; // 365 / 2 ~= number of epochs per year
|
|
69
|
+
const solInFromEmissions = superStakeLstDeposit * emissionsAprFromApy;
|
|
70
|
+
const leveragedEmissionsApr = solInFromEmissions / (initialLstDeposit * lstMetrics.priceInSol);
|
|
71
|
+
const totalNetProjectedApr = lstNetProjectedApr +
|
|
72
|
+
(isNaN(leveragedEmissionsApr) ? 0 : leveragedEmissionsApr);
|
|
73
|
+
return {
|
|
74
|
+
solBorrowRate: solBorrowRate.toNum() * 100,
|
|
75
|
+
lstDepositRate: lstDepositRate.toNum() * 100,
|
|
76
|
+
lstApy: lstMetrics.lstPriceApy30d,
|
|
77
|
+
// independant lst yield apr incl. leverage
|
|
78
|
+
leveragedLstApr: leveragedLstApr * 100,
|
|
79
|
+
// independent emissions apr incl. leverage
|
|
80
|
+
leveragedEmissionsApr: leveragedEmissionsApr * 100,
|
|
81
|
+
// Sol borro ratew denominated in % of user's collateral value in sol
|
|
82
|
+
// Helps to understand the apr breakdown where other values incl. leverage
|
|
83
|
+
leveragedBorrowRate: leveragedBorrowRate * 100,
|
|
84
|
+
// Deposit rate of total LST value in SOL denominated in % of user's collateral value in sol
|
|
85
|
+
leveragedDepositRate: leveragedDepositRate * 100,
|
|
86
|
+
// net apr of borrow rate + lst deposit rate + lst yield incl. leverage
|
|
87
|
+
lstNetProjectedApr: lstNetProjectedApr * 100,
|
|
88
|
+
// total net apr of lstNetProjectedApr and emissions apr together
|
|
89
|
+
totalNetProjectedApr: totalNetProjectedApr * 100,
|
|
90
|
+
solBorrowAmount,
|
|
91
|
+
unleveragedApr: lstDepositRate.toNum() * 100 +
|
|
92
|
+
lstAprFromApy * 100 +
|
|
93
|
+
emissionsAprFromApy * 100,
|
|
94
|
+
loaded: true,
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
exports.getSuperstakeEstimatedApr = getSuperstakeEstimatedApr;
|
|
98
|
+
const SOL_PRECISION_EXP = sdk_1.NINE;
|
|
99
|
+
/*
|
|
100
|
+
* Returns current liquidation ratio at given LST / sol balances
|
|
101
|
+
*/
|
|
102
|
+
const getSuperstakeEstimatedLiquidationRatio = ({ driftEnv, driftClient, driftClientIsReady, lstAmount, lstMetrics, lstSpotMarket, solAmount, }) => {
|
|
103
|
+
const solSpotMarket = ((driftEnv && sdk_1.SpotMarkets[driftEnv]) ||
|
|
104
|
+
sdk_1.SpotMarkets['mainnet-beta']).find((market) => market.symbol === 'SOL');
|
|
105
|
+
if (!lstMetrics.loaded ||
|
|
106
|
+
!driftClient ||
|
|
107
|
+
!driftClientIsReady ||
|
|
108
|
+
!lstSpotMarket ||
|
|
109
|
+
!solSpotMarket)
|
|
110
|
+
return 0;
|
|
111
|
+
let lstSpotMarketAccount, solSpotMarketAccount;
|
|
112
|
+
try {
|
|
113
|
+
lstSpotMarketAccount = driftClient.getSpotMarketAccount(lstSpotMarket.marketIndex);
|
|
114
|
+
solSpotMarketAccount = driftClient.getSpotMarketAccount(solSpotMarket.marketIndex);
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
console.log(err);
|
|
118
|
+
}
|
|
119
|
+
if (!lstSpotMarketAccount || !solSpotMarketAccount) {
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
if (isNaN(solAmount) ||
|
|
123
|
+
isNaN(lstAmount) ||
|
|
124
|
+
`${lstAmount}${solAmount}`.includes('e-'))
|
|
125
|
+
return 0;
|
|
126
|
+
const lstAmountBigNum = sdk_1.BigNum.fromPrint(`${lstAmount}`, lstSpotMarket.precisionExp);
|
|
127
|
+
const solAmountBigNum = sdk_1.BigNum.fromPrint(`${solAmount}`, SOL_PRECISION_EXP);
|
|
128
|
+
const maintenanceWeight = (0, sdk_1.calculateSizeDiscountAssetWeight)(lstAmountBigNum.val, new sdk_1.BN(lstSpotMarketAccount.imfFactor), new sdk_1.BN(lstSpotMarketAccount.maintenanceAssetWeight));
|
|
129
|
+
const liabilityWeight = (0, sdk_1.calculateSizePremiumLiabilityWeight)(solAmountBigNum.val, new sdk_1.BN(solSpotMarketAccount.imfFactor), new sdk_1.BN(solSpotMarketAccount.maintenanceLiabilityWeight), sdk_1.SPOT_MARKET_WEIGHT_PRECISION);
|
|
130
|
+
const projectedLiqRatio = (0, sdk_1.calculateEstimatedSuperStakeLiquidationPrice)(lstAmount, (0, sdk_1.convertToNumber)(maintenanceWeight, sdk_1.SPOT_MARKET_WEIGHT_PRECISION), solAmount, (0, sdk_1.convertToNumber)(liabilityWeight, sdk_1.SPOT_MARKET_WEIGHT_PRECISION), lstMetrics.priceInSol);
|
|
131
|
+
return projectedLiqRatio;
|
|
132
|
+
};
|
|
133
|
+
exports.getSuperstakeEstimatedLiquidationRatio = getSuperstakeEstimatedLiquidationRatio;
|
|
134
|
+
/**
|
|
135
|
+
* Fetches LST Metrics with a consistent return type for either msol, bsol, or jitosol
|
|
136
|
+
*
|
|
137
|
+
* @param lstSpotMarket
|
|
138
|
+
* @returns
|
|
139
|
+
*/
|
|
140
|
+
const fetchLstMetrics = async (lstSpotMarket) => {
|
|
141
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
142
|
+
if (lstSpotMarket.symbol.toLowerCase() === constants_1.M_SOL.symbol.toLowerCase()) {
|
|
143
|
+
const mSolMetrics = await (0, sdk_1.fetchMSolMetrics)();
|
|
144
|
+
return {
|
|
145
|
+
lstPriceApy30d: (_a = mSolMetrics.msol_price_apy_30d) !== null && _a !== void 0 ? _a : 0,
|
|
146
|
+
priceInSol: (_b = mSolMetrics.m_sol_price) !== null && _b !== void 0 ? _b : 0,
|
|
147
|
+
loaded: true,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
else if (lstSpotMarket.symbol.toLowerCase() === constants_1.JITO_SOL.symbol.toLowerCase()) {
|
|
151
|
+
const data = await (0, sdk_1.fetchJitoSolMetrics)();
|
|
152
|
+
const past30DaysApyAvg = (data.apy.slice(-30).reduce((a, b) => a + b.data, 0) / 30) * 100;
|
|
153
|
+
const priceInSol = data.tvl.slice(-1)[0].data /
|
|
154
|
+
constants_1.JITO_SOL.spotMarket.precision.toNumber() /
|
|
155
|
+
data.supply.slice(-1)[0].data;
|
|
156
|
+
return {
|
|
157
|
+
lstPriceApy30d: past30DaysApyAvg !== null && past30DaysApyAvg !== void 0 ? past30DaysApyAvg : 0,
|
|
158
|
+
priceInSol: priceInSol !== null && priceInSol !== void 0 ? priceInSol : 0,
|
|
159
|
+
loaded: true,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
else if (lstSpotMarket.symbol.toLowerCase() === constants_1.B_SOL.symbol.toLowerCase()) {
|
|
163
|
+
let baseApy;
|
|
164
|
+
let blzeApy;
|
|
165
|
+
let lendingMultiplier;
|
|
166
|
+
let priceInSol;
|
|
167
|
+
let driftEmissions;
|
|
168
|
+
const statsResponse = await (0, sdk_1.fetchBSolMetrics)();
|
|
169
|
+
if (statsResponse.status === 200) {
|
|
170
|
+
const data = (await statsResponse.json());
|
|
171
|
+
priceInSol = (_d = (_c = data === null || data === void 0 ? void 0 : data.stats) === null || _c === void 0 ? void 0 : _c.conversion) === null || _d === void 0 ? void 0 : _d.bsol_to_sol;
|
|
172
|
+
baseApy = (_e = data === null || data === void 0 ? void 0 : data.stats) === null || _e === void 0 ? void 0 : _e.apy.base;
|
|
173
|
+
lendingMultiplier = (_f = data === null || data === void 0 ? void 0 : data.stats) === null || _f === void 0 ? void 0 : _f.apy.lending;
|
|
174
|
+
blzeApy = ((_g = data === null || data === void 0 ? void 0 : data.stats) === null || _g === void 0 ? void 0 : _g.apy.blze) * lendingMultiplier;
|
|
175
|
+
}
|
|
176
|
+
const driftEmissionsResponse = await (0, sdk_1.fetchBSolDriftEmissions)();
|
|
177
|
+
if (driftEmissionsResponse.status === 200) {
|
|
178
|
+
const data = await driftEmissionsResponse.json();
|
|
179
|
+
driftEmissions = (_h = data === null || data === void 0 ? void 0 : data.emissions) === null || _h === void 0 ? void 0 : _h.lend;
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
loaded: true,
|
|
183
|
+
lstPriceApy30d: baseApy !== null && baseApy !== void 0 ? baseApy : 0,
|
|
184
|
+
priceInSol: priceInSol !== null && priceInSol !== void 0 ? priceInSol : 0,
|
|
185
|
+
emissionsApy: blzeApy,
|
|
186
|
+
driftEmissions,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
exports.fetchLstMetrics = fetchLstMetrics;
|
|
191
|
+
/**
|
|
192
|
+
* Returns estimated max spot leverage for a particular lst
|
|
193
|
+
*
|
|
194
|
+
* @param lst
|
|
195
|
+
* @param driftClient
|
|
196
|
+
* @param driftClientIsReady
|
|
197
|
+
* @returns
|
|
198
|
+
*/
|
|
199
|
+
const getMaxLeverageForLst = ({ lstSpotMarket, solSpotMarket, driftClient, driftClientIsReady, }) => {
|
|
200
|
+
if (!driftClient || !driftClientIsReady) {
|
|
201
|
+
return {
|
|
202
|
+
maxLeverage: 1,
|
|
203
|
+
loaded: false,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
const lstSpotMarketAccount = driftClient.getSpotMarketAccount(lstSpotMarket.marketIndex);
|
|
207
|
+
const solSpotMarketAccount = driftClient.getSpotMarketAccount(solSpotMarket.marketIndex);
|
|
208
|
+
const spotWeightPrecisionExp = sdk_1.SPOT_MARKET_WEIGHT_PRECISION.toString().length - 1;
|
|
209
|
+
const lstOraclePriceData = driftClient.getOracleDataForSpotMarket(lstSpotMarket.marketIndex);
|
|
210
|
+
const lstOraclePriceBigNum = sdk_1.BigNum.from(lstOraclePriceData.price, sdk_1.QUOTE_PRECISION_EXP);
|
|
211
|
+
const lstInitialAssetWeight = sdk_1.BigNum.from((0, sdk_1.calculateScaledInitialAssetWeight)(lstSpotMarketAccount, lstOraclePriceBigNum.val), spotWeightPrecisionExp).toNum();
|
|
212
|
+
const solInitialLiabilityWeight = sdk_1.BigNum.from(solSpotMarketAccount.initialLiabilityWeight, spotWeightPrecisionExp).toNum();
|
|
213
|
+
// make sure to under estimate
|
|
214
|
+
const unroundedMaxLeverage = lstInitialAssetWeight /
|
|
215
|
+
(solInitialLiabilityWeight - lstInitialAssetWeight) +
|
|
216
|
+
1;
|
|
217
|
+
const maxLeverage = Math.floor(10 * Math.min(3, Math.max(1, unroundedMaxLeverage))) / 10;
|
|
218
|
+
return {
|
|
219
|
+
maxLeverage,
|
|
220
|
+
loaded: true,
|
|
221
|
+
};
|
|
222
|
+
};
|
|
223
|
+
exports.getMaxLeverageForLst = getMaxLeverageForLst;
|
|
224
|
+
//# sourceMappingURL=superstake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"superstake.js","sourceRoot":"","sources":["../../src/utils/superstake.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tBigNum,\n\tPERCENTAGE_PRECISION_EXP,\n\tSpotMarketAccount,\n\tSpotMarkets,\n\tcalculateDepositRate,\n\tBN,\n\tZERO,\n\tcalculateInterestRate,\n\tDriftClient,\n\tDriftEnv,\n\tSpotMarketConfig,\n\tcalculateSizeDiscountAssetWeight,\n\tcalculateSizePremiumLiabilityWeight,\n\tSPOT_MARKET_WEIGHT_PRECISION,\n\tconvertToNumber,\n\tcalculateEstimatedSuperStakeLiquidationPrice,\n\tNINE,\n\tfetchMSolMetrics,\n\tfetchBSolMetrics,\n\tfetchJitoSolMetrics,\n\tfetchBSolDriftEmissions,\n\tBSOL_STATS_API_RESPONSE,\n\tQUOTE_PRECISION_EXP,\n\tcalculateScaledInitialAssetWeight,\n} from '@drift-labs/sdk';\nimport { aprFromApy } from '../utils';\nimport { LstMetrics } from '../types/Superstake';\nimport { LAMPORTS_PER_SOL } from '@solana/web3.js';\nimport { B_SOL, JITO_SOL, M_SOL } from '../constants';\n\n// Default value for estimated APR\nconst DEFAULT_VALUE = {\n\tsolBorrowRate: 0,\n\tlstDepositRate: 0,\n\tlstApy: 0,\n\tleveragedBorrowRate: 0,\n\tleveragedDepositRate: 0,\n\tleveragedLstApr: 0,\n\tleveragedEmissionsApr: 0,\n\tlstNetProjectedApr: 0,\n\ttotalNetProjectedApr: 0,\n\tsolBorrowAmount: 0,\n\tprojectedLiqRatio: 0,\n\tunleveragedApr: 0,\n\tloaded: false,\n};\n\n/*\n * Returns amount of SOL that will be borrowed to achieve the desired leverage on the active LST\n */\nconst getSuperstakeEstimatedApr = ({\n\tlstSpotMarket,\n\tlstMetrics,\n\tinitialLstDeposit,\n\tlstAmount,\n\tsolAmount,\n\tdriftClient,\n\tdriftClientIsReady,\n\tdriftEnv,\n\tincludeBorrowRateDelta = false,\n}: {\n\tlstSpotMarket: SpotMarketConfig;\n\tlstAmount: number;\n\tinitialLstDeposit: number;\n\tsolAmount: number;\n\tlstMetrics: LstMetrics;\n\tdriftClient: DriftClient;\n\tdriftClientIsReady?: boolean;\n\tdriftEnv?: DriftEnv;\n\tincludeBorrowRateDelta?: boolean;\n}) => {\n\tconst solSpotMarket = (\n\t\t(driftEnv && SpotMarkets[driftEnv]) ||\n\t\tSpotMarkets['mainnet-beta']\n\t).find((market) => market.symbol === 'SOL');\n\n\tif (\n\t\t!lstMetrics.loaded ||\n\t\t!driftClient ||\n\t\t!driftClientIsReady ||\n\t\t!lstSpotMarket ||\n\t\t!solSpotMarket\n\t)\n\t\treturn DEFAULT_VALUE;\n\n\tlet lstSpotMarketAccount: SpotMarketAccount | undefined,\n\t\tsolSpotMarketAccount: SpotMarketAccount | undefined;\n\ttry {\n\t\tlstSpotMarketAccount = driftClient.getSpotMarketAccount(\n\t\t\tlstSpotMarket.marketIndex\n\t\t);\n\t\tsolSpotMarketAccount = driftClient.getSpotMarketAccount(\n\t\t\tsolSpotMarket.marketIndex\n\t\t);\n\t} catch (err) {\n\t\tconsole.log(err);\n\t}\n\n\tif (!lstSpotMarketAccount || !solSpotMarketAccount) {\n\t\treturn DEFAULT_VALUE;\n\t}\n\n\tconst lstDepositRate = BigNum.from(\n\t\tcalculateDepositRate(lstSpotMarketAccount),\n\t\tPERCENTAGE_PRECISION_EXP\n\t);\n\tconst solBorrowRate = BigNum.from(\n\t\tcalculateInterestRate(\n\t\t\tsolSpotMarketAccount,\n\t\t\tincludeBorrowRateDelta\n\t\t\t\t? new BN(\n\t\t\t\t\t\tMath.min(solAmount * LAMPORTS_PER_SOL, Number.MAX_SAFE_INTEGER)\n\t\t\t\t ).neg()\n\t\t\t\t: ZERO\n\t\t),\n\t\tPERCENTAGE_PRECISION_EXP\n\t);\n\n\tconst superStakeLstDeposit = lstAmount;\n\tconst solBorrowAmount = solAmount;\n\n\tif (isNaN(solBorrowAmount)) return DEFAULT_VALUE;\n\n\tconst lstAprFromApy =\n\t\taprFromApy(lstMetrics.lstPriceApy30d, Math.floor(365 / 2)) / 100;\n\n\tconst solInFromStaking =\n\t\tsuperStakeLstDeposit * lstAprFromApy * lstMetrics.priceInSol;\n\tconst solInFromDeposit =\n\t\tsuperStakeLstDeposit * lstDepositRate.toNum() * lstMetrics.priceInSol;\n\tconst leveragedLstApr =\n\t\tsolInFromStaking / (initialLstDeposit * lstMetrics.priceInSol);\n\tconst solOut = solBorrowAmount * solBorrowRate.toNum();\n\tconst solRewardsPerYear = solInFromStaking + solInFromDeposit - solOut;\n\tconst lstNetProjectedApr =\n\t\tsolRewardsPerYear / (initialLstDeposit * lstMetrics.priceInSol);\n\tconst leveragedBorrowRate =\n\t\tsolOut / (initialLstDeposit * lstMetrics.priceInSol);\n\tconst leveragedDepositRate =\n\t\tsolInFromDeposit / (initialLstDeposit * lstMetrics.priceInSol);\n\n\t// Add emissions APR on top because they are airdropped separately\n\t// Not subject to the borrow rate\n\tconst emissionsAprFromApy = lstMetrics.emissionsApy\n\t\t? aprFromApy(lstMetrics.emissionsApy, Math.floor(365 / 2)) / 100\n\t\t: 0; // 365 / 2 ~= number of epochs per year\n\tconst solInFromEmissions = superStakeLstDeposit * emissionsAprFromApy;\n\tconst leveragedEmissionsApr =\n\t\tsolInFromEmissions / (initialLstDeposit * lstMetrics.priceInSol);\n\n\tconst totalNetProjectedApr =\n\t\tlstNetProjectedApr +\n\t\t(isNaN(leveragedEmissionsApr) ? 0 : leveragedEmissionsApr);\n\n\treturn {\n\t\tsolBorrowRate: solBorrowRate.toNum() * 100,\n\t\tlstDepositRate: lstDepositRate.toNum() * 100,\n\t\tlstApy: lstMetrics.lstPriceApy30d,\n\n\t\t// independant lst yield apr incl. leverage\n\t\tleveragedLstApr: leveragedLstApr * 100,\n\n\t\t// independent emissions apr incl. leverage\n\t\tleveragedEmissionsApr: leveragedEmissionsApr * 100,\n\n\t\t// Sol borro ratew denominated in % of user's collateral value in sol\n\t\t// Helps to understand the apr breakdown where other values incl. leverage\n\t\tleveragedBorrowRate: leveragedBorrowRate * 100,\n\n\t\t// Deposit rate of total LST value in SOL denominated in % of user's collateral value in sol\n\t\tleveragedDepositRate: leveragedDepositRate * 100,\n\n\t\t// net apr of borrow rate + lst deposit rate + lst yield incl. leverage\n\t\tlstNetProjectedApr: lstNetProjectedApr * 100,\n\n\t\t// total net apr of lstNetProjectedApr and emissions apr together\n\t\ttotalNetProjectedApr: totalNetProjectedApr * 100,\n\n\t\tsolBorrowAmount,\n\t\tunleveragedApr:\n\t\t\tlstDepositRate.toNum() * 100 +\n\t\t\tlstAprFromApy * 100 +\n\t\t\temissionsAprFromApy * 100,\n\t\tloaded: true,\n\t};\n};\n\nconst SOL_PRECISION_EXP = NINE;\n\n/*\n * Returns current liquidation ratio at given LST / sol balances\n */\nconst getSuperstakeEstimatedLiquidationRatio = ({\n\tdriftEnv,\n\tdriftClient,\n\tdriftClientIsReady,\n\tlstAmount,\n\tlstMetrics,\n\tlstSpotMarket,\n\tsolAmount,\n}: {\n\tdriftEnv?: DriftEnv;\n\tdriftClient: DriftClient;\n\tdriftClientIsReady?: boolean;\n\tlstAmount: number;\n\tsolAmount: number;\n\tlstSpotMarket: SpotMarketConfig;\n\tlstMetrics: LstMetrics;\n}) => {\n\tconst solSpotMarket = (\n\t\t(driftEnv && SpotMarkets[driftEnv]) ||\n\t\tSpotMarkets['mainnet-beta']\n\t).find((market) => market.symbol === 'SOL');\n\n\tif (\n\t\t!lstMetrics.loaded ||\n\t\t!driftClient ||\n\t\t!driftClientIsReady ||\n\t\t!lstSpotMarket ||\n\t\t!solSpotMarket\n\t)\n\t\treturn 0;\n\n\tlet lstSpotMarketAccount: SpotMarketAccount | undefined,\n\t\tsolSpotMarketAccount: SpotMarketAccount | undefined;\n\ttry {\n\t\tlstSpotMarketAccount = driftClient.getSpotMarketAccount(\n\t\t\tlstSpotMarket.marketIndex\n\t\t);\n\t\tsolSpotMarketAccount = driftClient.getSpotMarketAccount(\n\t\t\tsolSpotMarket.marketIndex\n\t\t);\n\t} catch (err) {\n\t\tconsole.log(err);\n\t}\n\n\tif (!lstSpotMarketAccount || !solSpotMarketAccount) {\n\t\treturn 0;\n\t}\n\n\tif (\n\t\tisNaN(solAmount) ||\n\t\tisNaN(lstAmount) ||\n\t\t`${lstAmount}${solAmount}`.includes('e-')\n\t)\n\t\treturn 0;\n\n\tconst lstAmountBigNum = BigNum.fromPrint(\n\t\t`${lstAmount}`,\n\t\tlstSpotMarket.precisionExp\n\t);\n\tconst solAmountBigNum = BigNum.fromPrint(`${solAmount}`, SOL_PRECISION_EXP);\n\n\tconst maintenanceWeight = calculateSizeDiscountAssetWeight(\n\t\tlstAmountBigNum.val,\n\t\tnew BN(lstSpotMarketAccount.imfFactor),\n\t\tnew BN(lstSpotMarketAccount.maintenanceAssetWeight)\n\t);\n\n\tconst liabilityWeight = calculateSizePremiumLiabilityWeight(\n\t\tsolAmountBigNum.val,\n\t\tnew BN(solSpotMarketAccount.imfFactor),\n\t\tnew BN(solSpotMarketAccount.maintenanceLiabilityWeight),\n\t\tSPOT_MARKET_WEIGHT_PRECISION\n\t);\n\n\tconst projectedLiqRatio = calculateEstimatedSuperStakeLiquidationPrice(\n\t\tlstAmount,\n\t\tconvertToNumber(maintenanceWeight, SPOT_MARKET_WEIGHT_PRECISION),\n\t\tsolAmount,\n\t\tconvertToNumber(liabilityWeight, SPOT_MARKET_WEIGHT_PRECISION),\n\t\tlstMetrics.priceInSol\n\t);\n\n\treturn projectedLiqRatio;\n};\n\n/**\n * Fetches LST Metrics with a consistent return type for either msol, bsol, or jitosol\n *\n * @param lstSpotMarket\n * @returns\n */\nconst fetchLstMetrics = async (lstSpotMarket: SpotMarketConfig) => {\n\tif (lstSpotMarket.symbol.toLowerCase() === M_SOL.symbol.toLowerCase()) {\n\t\tconst mSolMetrics = await fetchMSolMetrics();\n\n\t\treturn {\n\t\t\tlstPriceApy30d: mSolMetrics.msol_price_apy_30d ?? 0,\n\t\t\tpriceInSol: mSolMetrics.m_sol_price ?? 0,\n\t\t\tloaded: true,\n\t\t};\n\t} else if (\n\t\tlstSpotMarket.symbol.toLowerCase() === JITO_SOL.symbol.toLowerCase()\n\t) {\n\t\tconst data = await fetchJitoSolMetrics();\n\n\t\tconst past30DaysApyAvg =\n\t\t\t(data.apy.slice(-30).reduce((a, b) => a + b.data, 0) / 30) * 100;\n\n\t\tconst priceInSol =\n\t\t\tdata.tvl.slice(-1)[0].data /\n\t\t\tJITO_SOL.spotMarket.precision.toNumber() /\n\t\t\tdata.supply.slice(-1)[0].data;\n\n\t\treturn {\n\t\t\tlstPriceApy30d: past30DaysApyAvg ?? 0,\n\t\t\tpriceInSol: priceInSol ?? 0,\n\t\t\tloaded: true,\n\t\t};\n\t} else if (\n\t\tlstSpotMarket.symbol.toLowerCase() === B_SOL.symbol.toLowerCase()\n\t) {\n\t\tlet baseApy: number;\n\t\tlet blzeApy: number;\n\t\tlet lendingMultiplier: number;\n\t\tlet priceInSol: number;\n\t\tlet driftEmissions: number;\n\n\t\tconst statsResponse = await fetchBSolMetrics();\n\t\tif (statsResponse.status === 200) {\n\t\t\tconst data = (await statsResponse.json()) as BSOL_STATS_API_RESPONSE;\n\t\t\tpriceInSol = data?.stats?.conversion?.bsol_to_sol;\n\t\t\tbaseApy = data?.stats?.apy.base;\n\t\t\tlendingMultiplier = data?.stats?.apy.lending;\n\t\t\tblzeApy = data?.stats?.apy.blze * lendingMultiplier;\n\t\t}\n\n\t\tconst driftEmissionsResponse = await fetchBSolDriftEmissions();\n\t\tif (driftEmissionsResponse.status === 200) {\n\t\t\tconst data = await driftEmissionsResponse.json();\n\t\t\tdriftEmissions = data?.emissions?.lend;\n\t\t}\n\n\t\treturn {\n\t\t\tloaded: true,\n\t\t\tlstPriceApy30d: baseApy ?? 0,\n\t\t\tpriceInSol: priceInSol ?? 0,\n\t\t\temissionsApy: blzeApy,\n\t\t\tdriftEmissions,\n\t\t};\n\t}\n};\n\n/**\n * Returns estimated max spot leverage for a particular lst\n *\n * @param lst\n * @param driftClient\n * @param driftClientIsReady\n * @returns\n */\nconst getMaxLeverageForLst = ({\n\tlstSpotMarket,\n\tsolSpotMarket,\n\tdriftClient,\n\tdriftClientIsReady,\n}: {\n\tlstSpotMarket: SpotMarketConfig;\n\tsolSpotMarket: SpotMarketConfig;\n\tdriftClient: DriftClient;\n\tdriftClientIsReady: boolean;\n}) => {\n\tif (!driftClient || !driftClientIsReady) {\n\t\treturn {\n\t\t\tmaxLeverage: 1,\n\t\t\tloaded: false,\n\t\t};\n\t}\n\n\tconst lstSpotMarketAccount = driftClient.getSpotMarketAccount(\n\t\tlstSpotMarket.marketIndex\n\t);\n\tconst solSpotMarketAccount = driftClient.getSpotMarketAccount(\n\t\tsolSpotMarket.marketIndex\n\t);\n\n\tconst spotWeightPrecisionExp =\n\t\tSPOT_MARKET_WEIGHT_PRECISION.toString().length - 1;\n\n\tconst lstOraclePriceData = driftClient.getOracleDataForSpotMarket(\n\t\tlstSpotMarket.marketIndex\n\t);\n\tconst lstOraclePriceBigNum = BigNum.from(\n\t\tlstOraclePriceData.price,\n\t\tQUOTE_PRECISION_EXP\n\t);\n\n\tconst lstInitialAssetWeight = BigNum.from(\n\t\tcalculateScaledInitialAssetWeight(\n\t\t\tlstSpotMarketAccount,\n\t\t\tlstOraclePriceBigNum.val\n\t\t),\n\t\tspotWeightPrecisionExp\n\t).toNum();\n\n\tconst solInitialLiabilityWeight = BigNum.from(\n\t\tsolSpotMarketAccount.initialLiabilityWeight,\n\t\tspotWeightPrecisionExp\n\t).toNum();\n\n\t// make sure to under estimate\n\tconst unroundedMaxLeverage =\n\t\tlstInitialAssetWeight /\n\t\t\t(solInitialLiabilityWeight - lstInitialAssetWeight) +\n\t\t1;\n\n\tconst maxLeverage =\n\t\tMath.floor(10 * Math.min(3, Math.max(1, unroundedMaxLeverage))) / 10;\n\n\treturn {\n\t\tmaxLeverage,\n\t\tloaded: true,\n\t};\n};\n\nexport {\n\tgetMaxLeverageForLst,\n\tgetSuperstakeEstimatedApr,\n\tgetSuperstakeEstimatedLiquidationRatio,\n\tfetchLstMetrics,\n};\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
2
|
+
export { TOKEN_PROGRAM_ID, createTransferCheckedInstruction, } from '@solana/spl-token';
|
|
3
|
+
export declare const getTokenAddress: (mintAddress: string, userPubKey: string) => Promise<PublicKey>;
|
|
4
|
+
/**
|
|
5
|
+
* Get the associated token address for the given mint and user public key. If the mint is SOL, return the user public key.
|
|
6
|
+
* This should be used for spot token movement in and out of the user's wallet.
|
|
7
|
+
* @param mintAddress - The mint address
|
|
8
|
+
* @param authorityPubKey - The authority's public key
|
|
9
|
+
* @returns The associated token address
|
|
10
|
+
*/
|
|
11
|
+
export declare const getTokenAddressForDepositAndWithdraw: (mintAddress: PublicKey, authorityPubKey: PublicKey) => Promise<PublicKey>;
|
|
12
|
+
export declare const getTokenAccount: (connection: Connection, mintAddress: string, userPubKey: string) => Promise<{
|
|
13
|
+
pubkey: PublicKey;
|
|
14
|
+
account: import('@solana/web3.js').AccountInfo<import('@solana/web3.js').ParsedAccountData>;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const createTokenAccountIx: (owner: PublicKey, mintAddress: PublicKey, payer?: PublicKey) => Promise<TransactionInstruction>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTokenAccountIx = exports.getTokenAccount = exports.getTokenAddressForDepositAndWithdraw = exports.getTokenAddress = exports.createTransferCheckedInstruction = exports.TOKEN_PROGRAM_ID = void 0;
|
|
4
|
+
const sdk_1 = require("@drift-labs/sdk");
|
|
5
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
6
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
7
|
+
var spl_token_2 = require("@solana/spl-token");
|
|
8
|
+
Object.defineProperty(exports, "TOKEN_PROGRAM_ID", { enumerable: true, get: function () { return spl_token_2.TOKEN_PROGRAM_ID; } });
|
|
9
|
+
Object.defineProperty(exports, "createTransferCheckedInstruction", { enumerable: true, get: function () { return spl_token_2.createTransferCheckedInstruction; } });
|
|
10
|
+
const getTokenAddress = (mintAddress, userPubKey) => {
|
|
11
|
+
return (0, spl_token_1.getAssociatedTokenAddress)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(userPubKey), true);
|
|
12
|
+
};
|
|
13
|
+
exports.getTokenAddress = getTokenAddress;
|
|
14
|
+
/**
|
|
15
|
+
* Get the associated token address for the given mint and user public key. If the mint is SOL, return the user public key.
|
|
16
|
+
* This should be used for spot token movement in and out of the user's wallet.
|
|
17
|
+
* @param mintAddress - The mint address
|
|
18
|
+
* @param authorityPubKey - The authority's public key
|
|
19
|
+
* @returns The associated token address
|
|
20
|
+
*/
|
|
21
|
+
const getTokenAddressForDepositAndWithdraw = async (mintAddress, authorityPubKey) => {
|
|
22
|
+
const isSol = mintAddress.equals(sdk_1.WRAPPED_SOL_MINT);
|
|
23
|
+
if (isSol)
|
|
24
|
+
return authorityPubKey;
|
|
25
|
+
return (0, spl_token_1.getAssociatedTokenAddress)(mintAddress, authorityPubKey, true);
|
|
26
|
+
};
|
|
27
|
+
exports.getTokenAddressForDepositAndWithdraw = getTokenAddressForDepositAndWithdraw;
|
|
28
|
+
const getTokenAccount = async (connection, mintAddress, userPubKey) => {
|
|
29
|
+
const tokenAccounts = await connection.getParsedTokenAccountsByOwner(new web3_js_1.PublicKey(userPubKey), { mint: new web3_js_1.PublicKey(mintAddress) });
|
|
30
|
+
const associatedAddress = await (0, spl_token_1.getAssociatedTokenAddress)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(userPubKey), true);
|
|
31
|
+
const targetAccount = tokenAccounts.value.filter((account) => account.pubkey.equals(associatedAddress))[0] || tokenAccounts.value[0];
|
|
32
|
+
return targetAccount;
|
|
33
|
+
};
|
|
34
|
+
exports.getTokenAccount = getTokenAccount;
|
|
35
|
+
const createTokenAccountIx = async (owner, mintAddress, payer) => {
|
|
36
|
+
if (!payer) {
|
|
37
|
+
payer = owner;
|
|
38
|
+
}
|
|
39
|
+
const associatedAddress = await (0, spl_token_1.getAssociatedTokenAddress)(mintAddress, owner, true);
|
|
40
|
+
const createAtaIx = await (0, spl_token_1.createAssociatedTokenAccountInstruction)(payer, associatedAddress, owner, mintAddress);
|
|
41
|
+
return createAtaIx;
|
|
42
|
+
};
|
|
43
|
+
exports.createTokenAccountIx = createTokenAccountIx;
|
|
44
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AACnD,iDAG2B;AAC3B,6CAAgF;AAEhF,+CAG2B;AAF1B,6GAAA,gBAAgB,OAAA;AAChB,6HAAA,gCAAgC,OAAA;AAG1B,MAAM,eAAe,GAAG,CAC9B,WAAmB,EACnB,UAAkB,EACG,EAAE;IACvB,OAAO,IAAA,qCAAyB,EAC/B,IAAI,mBAAS,CAAC,WAAW,CAAC,EAC1B,IAAI,mBAAS,CAAC,UAAU,CAAC,EACzB,IAAI,CACJ,CAAC;AACH,CAAC,CAAC;AATW,QAAA,eAAe,mBAS1B;AAEF;;;;;;GAMG;AACI,MAAM,oCAAoC,GAAG,KAAK,EACxD,WAAsB,EACtB,eAA0B,EACL,EAAE;IACvB,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,sBAAgB,CAAC,CAAC;IAEnD,IAAI,KAAK;QAAE,OAAO,eAAe,CAAC;IAElC,OAAO,IAAA,qCAAyB,EAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC,CAAC;AATW,QAAA,oCAAoC,wCAS/C;AAEK,MAAM,eAAe,GAAG,KAAK,EACnC,UAAsB,EACtB,WAAmB,EACnB,UAAkB,EAMhB,EAAE;IACJ,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,6BAA6B,CACnE,IAAI,mBAAS,CAAC,UAAU,CAAC,EACzB,EAAE,IAAI,EAAE,IAAI,mBAAS,CAAC,WAAW,CAAC,EAAE,CACpC,CAAC;IAEF,MAAM,iBAAiB,GAAG,MAAM,IAAA,qCAAyB,EACxD,IAAI,mBAAS,CAAC,WAAW,CAAC,EAC1B,IAAI,mBAAS,CAAC,UAAU,CAAC,EACzB,IAAI,CACJ,CAAC;IAEF,MAAM,aAAa,GAClB,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CACtC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CACxC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEhC,OAAO,aAAa,CAAC;AACtB,CAAC,CAAC;AA3BW,QAAA,eAAe,mBA2B1B;AAEK,MAAM,oBAAoB,GAAG,KAAK,EACxC,KAAgB,EAChB,WAAsB,EACtB,KAAiB,EACiB,EAAE;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,KAAK,GAAG,KAAK,CAAC;IACf,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,IAAA,qCAAyB,EACxD,WAAW,EACX,KAAK,EACL,IAAI,CACJ,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,IAAA,mDAAuC,EAChE,KAAK,EACL,iBAAiB,EACjB,KAAK,EACL,WAAW,CACX,CAAC;IAEF,OAAO,WAAW,CAAC;AACpB,CAAC,CAAC;AAvBW,QAAA,oBAAoB,wBAuB/B","sourcesContent":["import { WRAPPED_SOL_MINT } from '@drift-labs/sdk';\nimport {\n\tcreateAssociatedTokenAccountInstruction,\n\tgetAssociatedTokenAddress,\n} from '@solana/spl-token';\nimport { Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';\n\nexport {\n\tTOKEN_PROGRAM_ID,\n\tcreateTransferCheckedInstruction,\n} from '@solana/spl-token';\n\nexport const getTokenAddress = (\n\tmintAddress: string,\n\tuserPubKey: string\n): Promise<PublicKey> => {\n\treturn getAssociatedTokenAddress(\n\t\tnew PublicKey(mintAddress),\n\t\tnew PublicKey(userPubKey),\n\t\ttrue\n\t);\n};\n\n/**\n * Get the associated token address for the given mint and user public key. If the mint is SOL, return the user public key.\n * This should be used for spot token movement in and out of the user's wallet.\n * @param mintAddress - The mint address\n * @param authorityPubKey - The authority's public key\n * @returns The associated token address\n */\nexport const getTokenAddressForDepositAndWithdraw = async (\n\tmintAddress: PublicKey,\n\tauthorityPubKey: PublicKey\n): Promise<PublicKey> => {\n\tconst isSol = mintAddress.equals(WRAPPED_SOL_MINT);\n\n\tif (isSol) return authorityPubKey;\n\n\treturn getAssociatedTokenAddress(mintAddress, authorityPubKey, true);\n};\n\nexport const getTokenAccount = async (\n\tconnection: Connection,\n\tmintAddress: string,\n\tuserPubKey: string\n): Promise<{\n\tpubkey: PublicKey;\n\taccount: import('@solana/web3.js').AccountInfo<\n\t\timport('@solana/web3.js').ParsedAccountData\n\t>;\n}> => {\n\tconst tokenAccounts = await connection.getParsedTokenAccountsByOwner(\n\t\tnew PublicKey(userPubKey),\n\t\t{ mint: new PublicKey(mintAddress) }\n\t);\n\n\tconst associatedAddress = await getAssociatedTokenAddress(\n\t\tnew PublicKey(mintAddress),\n\t\tnew PublicKey(userPubKey),\n\t\ttrue\n\t);\n\n\tconst targetAccount =\n\t\ttokenAccounts.value.filter((account) =>\n\t\t\taccount.pubkey.equals(associatedAddress)\n\t\t)[0] || tokenAccounts.value[0];\n\n\treturn targetAccount;\n};\n\nexport const createTokenAccountIx = async (\n\towner: PublicKey,\n\tmintAddress: PublicKey,\n\tpayer?: PublicKey\n): Promise<TransactionInstruction> => {\n\tif (!payer) {\n\t\tpayer = owner;\n\t}\n\n\tconst associatedAddress = await getAssociatedTokenAddress(\n\t\tmintAddress,\n\t\towner,\n\t\ttrue\n\t);\n\n\tconst createAtaIx = await createAssociatedTokenAccountInstruction(\n\t\tpayer,\n\t\tassociatedAddress,\n\t\towner,\n\t\tmintAddress\n\t);\n\n\treturn createAtaIx;\n};\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@drift-labs/common",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Common functions for Drift",
|
|
5
|
+
"main": "./lib/index.js",
|
|
6
|
+
"types": "./lib/index.d.ts",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/drift-labs/drift-common/tree/master/common-ts"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://www.drift.trade/",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"drift-labs",
|
|
15
|
+
"drift",
|
|
16
|
+
"perps"
|
|
17
|
+
],
|
|
18
|
+
"author": "Drift Labs",
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@slack/web-api": "6.4.0",
|
|
21
|
+
"@solana/spl-token": "0.3.8",
|
|
22
|
+
"@solana/web3.js": "1.98.0",
|
|
23
|
+
"bcryptjs-react": "2.4.6",
|
|
24
|
+
"cerializr": "3.1.4",
|
|
25
|
+
"immer": "10.0.3",
|
|
26
|
+
"ioredis": "5.4.1",
|
|
27
|
+
"isomorphic-ws": "^5.0.0",
|
|
28
|
+
"localstorage-memory": "1.0.3",
|
|
29
|
+
"rxjs": "7.8.2",
|
|
30
|
+
"tiny-invariant": "1.3.1",
|
|
31
|
+
"tweetnacl": "1.0.3",
|
|
32
|
+
"winston": "3.13.0",
|
|
33
|
+
"winston-slack-webhook-transport": "2.3.5"
|
|
34
|
+
},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"@drift-labs/sdk": "^2.136.0",
|
|
37
|
+
"@solana/web3.js": "1.98.0"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "yarn clean && tsc",
|
|
41
|
+
"prepublishOnly": "yarn build",
|
|
42
|
+
"watch": "yarn clean && tsc --watch",
|
|
43
|
+
"build-dual": "yarn clean && tsup",
|
|
44
|
+
"watch-dual": "yarn clean && tsup --watch",
|
|
45
|
+
"clean": "rm -rf lib",
|
|
46
|
+
"test": "npx mocha -r ts-node/register tests/**/*.ts",
|
|
47
|
+
"test:ci": "mocha -r ts-node/register tests/**/*.ts --silent",
|
|
48
|
+
"test:debug": "node --inspect-brk --inspect=2234 node_modules/.bin/jest --runInBand",
|
|
49
|
+
"update-jup-errors": "node src/scripts/update-jup-error-codes.js",
|
|
50
|
+
"update-drift-errors": "node src/scripts/update-drift-error-codes.js",
|
|
51
|
+
"circular-deps": "bunx madge --circular --circular --extensions ts,tsx src",
|
|
52
|
+
"build-and-pack": "bun run build && npm pack"
|
|
53
|
+
},
|
|
54
|
+
"directories": {
|
|
55
|
+
"lib": "lib"
|
|
56
|
+
},
|
|
57
|
+
"exports": {
|
|
58
|
+
".": "./lib/index.js",
|
|
59
|
+
"./clients": "./lib/clients/index.js"
|
|
60
|
+
},
|
|
61
|
+
"files": [
|
|
62
|
+
"lib"
|
|
63
|
+
],
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=14"
|
|
66
|
+
},
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"@drift-labs/sdk": "file:../protocol/sdk",
|
|
69
|
+
"@jest/globals": "29.3.1",
|
|
70
|
+
"@types/mocha": "10.0.4",
|
|
71
|
+
"@types/sinon": "^17.0.4",
|
|
72
|
+
"chai": "4.3.10",
|
|
73
|
+
"encoding": "0.1.13",
|
|
74
|
+
"jest": "29.7.0",
|
|
75
|
+
"madge": "^8.0.0",
|
|
76
|
+
"mocha": "10.2.0",
|
|
77
|
+
"sinon": "^21.0.0",
|
|
78
|
+
"ts-node": "10.9.1",
|
|
79
|
+
"typescript": "5.4.5"
|
|
80
|
+
},
|
|
81
|
+
"publishConfig": {
|
|
82
|
+
"access": "public"
|
|
83
|
+
},
|
|
84
|
+
"resolutions": {
|
|
85
|
+
"@solana/errors": "2.0.0-preview.4"
|
|
86
|
+
}
|
|
87
|
+
}
|