@drift-labs/common 1.0.14 → 1.0.17
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/clients/DlobWebsocketClient.d.ts +8 -1
- package/lib/clients/DlobWebsocketClient.js +29 -9
- package/lib/clients/DlobWebsocketClient.js.map +1 -1
- package/lib/clients/candleClient.js +12 -0
- package/lib/clients/candleClient.js.map +1 -1
- package/lib/clients/redisClient.d.ts +1 -0
- package/lib/clients/swiftClient.d.ts +1 -0
- package/lib/clients/swiftClient.js +19 -5
- package/lib/clients/swiftClient.js.map +1 -1
- package/lib/clients/tvFeed.d.ts +4 -1
- package/lib/clients/tvFeed.js +29 -3
- package/lib/clients/tvFeed.js.map +1 -1
- package/lib/common-ui-utils/commonUiUtils.d.ts +22 -3
- package/lib/common-ui-utils/commonUiUtils.js +53 -11
- package/lib/common-ui-utils/commonUiUtils.js.map +1 -1
- package/lib/common-ui-utils/market.d.ts +5 -0
- package/lib/common-ui-utils/market.js +19 -11
- package/lib/common-ui-utils/market.js.map +1 -1
- package/lib/common-ui-utils/order.d.ts +7 -1
- package/lib/common-ui-utils/order.js +9 -9
- package/lib/common-ui-utils/order.js.map +1 -1
- package/lib/common-ui-utils/user.d.ts +5 -0
- package/lib/common-ui-utils/user.js +57 -0
- package/lib/common-ui-utils/user.js.map +1 -1
- package/lib/constants/markets.d.ts +4 -0
- package/lib/constants/markets.js +5 -1
- package/lib/constants/markets.js.map +1 -1
- package/lib/constants/superstake.js.map +1 -1
- package/lib/drift/Drift/clients/AuthorityDrift/DriftL2OrderbookManager.d.ts +1 -1
- package/lib/drift/Drift/clients/AuthorityDrift/DriftL2OrderbookManager.js.map +1 -1
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js +6 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js.map +1 -1
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/types.d.ts +1 -0
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/types.js.map +1 -1
- package/lib/drift/Drift/clients/AuthorityDrift/index.d.ts +1 -1
- package/lib/drift/Drift/clients/AuthorityDrift/index.js.map +1 -1
- package/lib/drift/Drift/clients/CentralServerDrift/index.d.ts +19 -2
- package/lib/drift/Drift/clients/CentralServerDrift/index.js +102 -64
- package/lib/drift/Drift/clients/CentralServerDrift/index.js.map +1 -1
- package/lib/drift/Drift/data/PollingDlob.d.ts +1 -1
- package/lib/drift/Drift/data/PollingDlob.js.map +1 -1
- package/lib/drift/base/actions/perp/settlePnl.d.ts +4 -3
- package/lib/drift/base/actions/perp/settlePnl.js +6 -3
- package/lib/drift/base/actions/perp/settlePnl.js.map +1 -1
- package/lib/drift/base/actions/spot/deposit.d.ts +10 -3
- package/lib/drift/base/actions/spot/deposit.js +22 -7
- package/lib/drift/base/actions/spot/deposit.js.map +1 -1
- package/lib/drift/base/actions/trade/editOrder.d.ts +5 -0
- package/lib/drift/base/actions/trade/editOrder.js +1 -0
- package/lib/drift/base/actions/trade/editOrder.js.map +1 -1
- package/lib/drift/base/actions/trade/index.d.ts +1 -0
- package/lib/drift/base/actions/trade/index.js +1 -0
- package/lib/drift/base/actions/trade/index.js.map +1 -1
- package/lib/drift/base/actions/trade/margin.d.ts +24 -0
- package/lib/drift/base/actions/trade/margin.js +48 -0
- package/lib/drift/base/actions/trade/margin.js.map +1 -0
- package/lib/drift/base/actions/trade/openPerpOrder/auction.d.ts +6 -1
- package/lib/drift/base/actions/trade/openPerpOrder/auction.js +4 -4
- package/lib/drift/base/actions/trade/openPerpOrder/auction.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/dlobServer/index.d.ts +8 -5
- package/lib/drift/base/actions/trade/openPerpOrder/dlobServer/index.js +6 -5
- package/lib/drift/base/actions/trade/openPerpOrder/dlobServer/index.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.d.ts +13 -5
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js +18 -15
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.d.ts +3 -4
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js +11 -11
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.d.ts +40 -11
- package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js +49 -15
- package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/types.d.ts +5 -3
- package/lib/drift/base/actions/trade/openPerpOrder/types.js.map +1 -1
- package/lib/drift/base/actions/trade/swap.d.ts +18 -11
- package/lib/drift/base/actions/trade/swap.js +40 -17
- package/lib/drift/base/actions/trade/swap.js.map +1 -1
- package/lib/drift/base/actions/user/create.d.ts +3 -1
- package/lib/drift/base/actions/user/create.js +21 -7
- package/lib/drift/base/actions/user/create.js.map +1 -1
- package/lib/drift/cli.js +16 -2
- package/lib/drift/cli.js.map +1 -1
- package/lib/drift/utils/auctionParamsResponseMapper.d.ts +2 -1
- package/lib/drift/utils/auctionParamsResponseMapper.js +1 -1
- package/lib/drift/utils/auctionParamsResponseMapper.js.map +1 -1
- package/lib/drift/utils/orderParams.js +1 -1
- package/lib/drift/utils/orderParams.js.map +1 -1
- package/lib/utils/driftEvents.js +18 -2
- package/lib/utils/driftEvents.js.map +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/logger.js +34 -3
- package/lib/utils/logger.js.map +1 -1
- package/lib/utils/orderbook/constants.d.ts +2 -0
- package/lib/utils/orderbook/constants.js +5 -0
- package/lib/utils/orderbook/constants.js.map +1 -0
- package/lib/utils/orderbook/index.d.ts +38 -59
- package/lib/utils/orderbook/index.js +285 -1
- package/lib/utils/orderbook/index.js.map +1 -1
- package/lib/utils/orderbook/types.d.ts +101 -0
- package/lib/utils/orderbook/types.js +9 -0
- package/lib/utils/orderbook/types.js.map +1 -0
- package/lib/utils/signedMsgs.d.ts +1 -1
- package/lib/utils/signedMsgs.js +2 -2
- package/lib/utils/signedMsgs.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/drift/Drift/clients/AuthorityDrift/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tCustomizedCadenceBulkAccountLoader,\n\tDelistedMarketSetting,\n\tDRIFT_PROGRAM_ID,\n\tDriftClient,\n\tDriftClientConfig,\n\tDriftEnv,\n\tgetMarketsAndOraclesForSubscription,\n\tIWallet,\n\tMarketType,\n\tPerpMarketConfig,\n\tPerpMarkets,\n\tQuoteResponse,\n\tSpotMarketConfig,\n\tSpotMarkets,\n\tSwapMode,\n\tUser,\n\tWhileValidTxSender,\n\tIWalletV2,\n\tTxParams,\n} from '@drift-labs/sdk';\nimport { Connection, PublicKey, TransactionSignature } from '@solana/web3.js';\nimport { COMMON_UI_UTILS } from '../../../../common-ui-utils/commonUiUtils';\nimport {\n\tDEFAULT_ACCOUNT_LOADER_COMMITMENT,\n\tDEFAULT_ACCOUNT_LOADER_POLLING_FREQUENCY_MS,\n\tDEFAULT_TX_SENDER_CONFIRMATION_STRATEGY,\n\tDEFAULT_TX_SENDER_RETRY_INTERVAL,\n\tDELISTED_MARKET_STATUSES,\n\tHIGH_ACTIVITY_MARKET_ACCOUNTS,\n\tPollingCategory,\n} from '../../constants';\nimport { MarketId } from '../../../../types';\nimport { MARKET_UTILS } from '../../../../common-ui-utils/market';\nimport {\n\tPOLLING_DEPTHS,\n\tPOLLING_INTERVALS,\n\tPollingDlob,\n} from '../../data/PollingDlob';\nimport { EnvironmentConstants } from '../../../../EnvironmentConstants';\nimport { MarkPriceLookup, MarkPriceCache } from '../../stores/MarkPriceCache';\nimport {\n\tOraclePriceLookup,\n\tOraclePriceCache,\n} from '../../stores/OraclePriceCache';\nimport { DriftL2OrderbookManager } from './DriftL2OrderbookManager';\nimport { Subscription } from 'rxjs';\nimport {\n\tEnhancedAccountData,\n\tUserAccountCache,\n\tUserAccountLookup,\n} from '../../stores/UserAccountCache';\nimport { ENUM_UTILS } from '../../../../utils';\nimport { checkGeoBlock } from '../../../../utils/geoblock';\nimport {\n\tPriorityFeeSubscriber,\n\tPriorityFeeSubscriberConfig,\n\tPriorityFeeMethod,\n} from '@drift-labs/sdk';\nimport { SubscriptionManager } from './SubscriptionManager';\nimport { DriftOperations } from './DriftOperations';\nimport {\n\tCreateUserAndDepositParams,\n\tDepositParams,\n\tWithdrawParams,\n\tPerpOrderParams,\n\tSwapParams,\n\tSettleAccountPnlParams,\n\tCancelOrdersParams,\n\tCreateRevenueShareEscrowParams,\n} from './DriftOperations/types';\nimport { Initialize } from '../../../../Config';\nimport { L2WithOracleAndMarketData } from '../../../../utils/orderbook';\nimport { GeoBlockError } from '../../constants/errors';\nimport {\n\tDEFAULT_ORDERBOOK_GROUPING,\n\tDEFAULT_ORDERBOOK_SUBSCRIPTION_CONFIG,\n} from '../../constants/orderbook';\nimport { OrderbookGrouping } from '../../../../utils/dlob-server/DlobServerWebsocketUtils';\n\n/**\n * Decorator that prevents method execution if the user is geographically blocked.\n * Throws a GeoBlockError if the user is blocked.\n *\n * @param target - The class prototype\n * @param propertyName - The method name\n * @param descriptor - The method descriptor\n */\nfunction enforceGeoBlock(\n\t_target: any,\n\tpropertyName: string,\n\tdescriptor: PropertyDescriptor\n): PropertyDescriptor {\n\tconst originalMethod = descriptor.value;\n\n\tdescriptor.value = function (this: AuthorityDrift, ...args: any[]) {\n\t\tif (this._isGeoBlocked) {\n\t\t\tthrow new GeoBlockError(propertyName);\n\t\t}\n\t\treturn originalMethod.apply(this, args);\n\t};\n\n\treturn descriptor;\n}\n\nexport interface AuthorityDriftConfig {\n\tsolanaRpcEndpoint: string;\n\tdriftEnv: DriftEnv;\n\twallet?: IWalletV2;\n\tdriftDlobServerHttpUrl?: string;\n\ttradableMarkets?: MarketId[];\n\tselectedTradeMarket?: MarketId;\n\tadditionalDriftClientConfig?: Partial<Omit<DriftClientConfig, 'env'>>;\n\tpriorityFeeSubscriberConfig?: Partial<PriorityFeeSubscriberConfig>;\n\torderbookConfig?: {\n\t\tdlobWebSocketUrl?: string;\n\t\torderbookGrouping?: OrderbookGrouping;\n\t};\n}\n\n/**\n * A Drift client that is used to subscribe to all accounts for a given authority.\n *\n * This is useful for applications that want to subscribe to all user accounts for a given authority,\n * such as a UI to trade on Drift or a wallet application that allows trading on Drift.\n */\nexport class AuthorityDrift {\n\t/**\n\t * Handles all Drift program interactions e.g. trading, read account details, etc.\n\t */\n\tprivate _driftClient!: DriftClient;\n\n\t/**\n\t * Handles bulk account loading from the RPC.\n\t */\n\tprivate accountLoader!: CustomizedCadenceBulkAccountLoader;\n\n\t/**\n\t * Handles polling the DLOB server for mark price and oracle price data for markets.\n\t * It is also the fallback source for orderbook data, if the websocket DLOB subscriber is unavailable.\n\t */\n\tprivate _pollingDlob!: PollingDlob;\n\n\t/**\n\t * Subscription to the polling DLOB data.\n\t */\n\tprivate pollingDlobSubscription: Subscription | null = null;\n\n\t/**\n\t * Subscription to the orderbook data.\n\t */\n\tprivate orderbookSubscription: Subscription | null = null;\n\n\t/**\n\t * Handles all trading operations including deposits, withdrawals, and position management.\n\t */\n\tprivate driftOperations!: DriftOperations;\n\n\t/**\n\t * Manages all subscription operations including user accounts, market subscriptions, and polling optimization.\n\t */\n\tprivate subscriptionManager!: SubscriptionManager;\n\n\t/**\n\t * Stores the fetched mark prices for all tradable markets.\n\t * Mark price sources includes:\n\t * - Websocket DLOB subscriber (active market, derived when fetching orderbook data)\n\t * - Polling DLOB server (all non-active markets)\n\t */\n\tprivate _markPriceCache!: MarkPriceCache;\n\n\t/**\n\t * Stores the fetched oracle prices for all tradable markets.\n\t * Oracle price sources includes:\n\t * - DriftClient oracle account subscriptions\n\t * - Polling DLOB server (all non-active markets)\n\t */\n\tprivate _oraclePriceCache!: OraclePriceCache;\n\n\t/**\n\t * Stores the fetched user account data for all user accounts.\n\t */\n\tprivate _userAccountCache!: UserAccountCache;\n\n\t/**\n\t * Manages real-time orderbook subscriptions via websocket.\n\t */\n\tprivate _orderbookManager!: DriftL2OrderbookManager;\n\n\t/**\n\t * Handles priority fee tracking and calculation for optimized transaction costs.\n\t */\n\tprivate priorityFeeSubscriber!: PriorityFeeSubscriber;\n\n\t/**\n\t * Stores whether the user is geographically blocked from using the service.\n\t * This is checked during subscription and cached for decorator use.\n\t */\n\tprotected _isGeoBlocked: boolean = false;\n\n\t/**\n\t * The selected trade market to use for the drift client. This is used to subscribe to the market account,\n\t * oracle data and mark price more frequently compared to the other markets.\n\t *\n\t * Example usage:\n\t * - When the UI wants to display the orderbook of this market.\n\t * - When the user is interacting with the trade form to trade on this market.\n\t */\n\tprivate selectedTradeMarket: MarketId | null = null;\n\n\t/**\n\t * The markets that are tradable through this client. This affects oracle price, mark price and market account subscriptions.\n\t */\n\tprivate _tradableMarkets: MarketId[] = [];\n\n\tprivate _spotMarketConfigs: SpotMarketConfig[] = [];\n\tprivate _perpMarketConfigs: PerpMarketConfig[] = [];\n\n\t/**\n\t * The public endpoints that can be used to retrieve Drift data / interact with the Drift program.\n\t */\n\tprivate _driftEndpoints: {\n\t\tdlobServerHttpUrl: string;\n\t\tswiftServerUrl: string;\n\t\torderbookWebsocketUrl: string;\n\t};\n\n\t/**\n\t * @param solanaRpcEndpoint - The Solana RPC endpoint to use for reading RPC data.\n\t * @param driftEnv - The drift environment to use for the drift client.\n\t * @param authority - The authority (wallet) whose user accounts to subscribe to.\n\t * @param tradableMarkets - The markets that are tradable through this client.\n\t * @param selectedTradeMarket - The active trade market to use for the drift client. This is used to subscribe to the market account, oracle data and mark price more frequently compared to the other markets.\n\t * @param additionalDriftClientConfig - Additional DriftClient config to use for the DriftClient.\n\t */\n\tconstructor(config: AuthorityDriftConfig) {\n\t\t// set up tradable markets\n\t\tthis.selectedTradeMarket = config.selectedTradeMarket ?? null;\n\n\t\tconst perpTradableMarkets = PerpMarkets[config.driftEnv].map(\n\t\t\t(marketConfig) => MarketId.createPerpMarket(marketConfig.marketIndex)\n\t\t);\n\t\tconst spotTradableMarkets = SpotMarkets[config.driftEnv].map(\n\t\t\t(marketConfig) => MarketId.createSpotMarket(marketConfig.marketIndex)\n\t\t);\n\n\t\tthis._tradableMarkets = config.tradableMarkets ?? [\n\t\t\t...perpTradableMarkets,\n\t\t\t...spotTradableMarkets,\n\t\t];\n\t\tthis._spotMarketConfigs = spotTradableMarkets.map((market) =>\n\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\tconfig.driftEnv,\n\t\t\t\tMarketType.SPOT,\n\t\t\t\tmarket.marketIndex\n\t\t\t)\n\t\t);\n\t\tthis._perpMarketConfigs = perpTradableMarkets.map((market) =>\n\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\tconfig.driftEnv,\n\t\t\t\tMarketType.PERP,\n\t\t\t\tmarket.marketIndex\n\t\t\t)\n\t\t);\n\n\t\t// set up Drift endpoints\n\t\tconst driftDlobServerHttpUrlToUse =\n\t\t\tconfig.driftDlobServerHttpUrl ??\n\t\t\tEnvironmentConstants.dlobServerHttpUrl[\n\t\t\t\tconfig.driftEnv === 'devnet' ? 'dev' : 'mainnet'\n\t\t\t];\n\t\tconst swiftServerUrlToUse =\n\t\t\tEnvironmentConstants.swiftServerUrl[\n\t\t\t\tconfig.driftEnv === 'devnet' ? 'staging' : 'mainnet'\n\t\t\t];\n\t\tconst orderbookWebsocketUrlToUse =\n\t\t\tconfig.orderbookConfig?.dlobWebSocketUrl ??\n\t\t\tEnvironmentConstants.dlobServerWsUrl[\n\t\t\t\tconfig.driftEnv === 'devnet' ? 'dev' : 'mainnet'\n\t\t\t];\n\t\tthis._driftEndpoints = {\n\t\t\tdlobServerHttpUrl: driftDlobServerHttpUrlToUse,\n\t\t\tswiftServerUrl: swiftServerUrlToUse,\n\t\t\torderbookWebsocketUrl: orderbookWebsocketUrlToUse,\n\t\t};\n\n\t\t// we set this up because SerializableTypes\n\t\tInitialize(config.driftEnv);\n\n\t\t// set up clients and stores\n\t\tconst driftClient = this.setupDriftClient(config);\n\t\tthis.initializePollingDlob(driftDlobServerHttpUrlToUse);\n\t\tthis.initializeStores(driftClient);\n\t\tthis.initializeOrderbookManager(\n\t\t\torderbookWebsocketUrlToUse,\n\t\t\tconfig.orderbookConfig?.orderbookGrouping\n\t\t);\n\t\tthis.initializePriorityFeeSubscriber(config.priorityFeeSubscriberConfig);\n\t\tthis.initializeManagers(driftDlobServerHttpUrlToUse, swiftServerUrlToUse);\n\t}\n\n\tpublic get driftClient(): DriftClient {\n\t\treturn this._driftClient;\n\t}\n\n\tpublic get authority(): PublicKey {\n\t\treturn this._driftClient.wallet.publicKey;\n\t}\n\n\tpublic get pollingDlob(): PollingDlob {\n\t\treturn this._pollingDlob;\n\t}\n\n\tpublic get oraclePriceCache(): OraclePriceLookup {\n\t\treturn this._oraclePriceCache.store;\n\t}\n\n\tpublic get markPriceCache(): MarkPriceLookup {\n\t\treturn this._markPriceCache.store;\n\t}\n\n\tpublic get userAccountCache(): UserAccountLookup {\n\t\treturn this._userAccountCache.store;\n\t}\n\n\tpublic get orderbookCache(): L2WithOracleAndMarketData | null {\n\t\treturn this._orderbookManager.store;\n\t}\n\n\tpublic get orderbookManager(): DriftL2OrderbookManager {\n\t\treturn this._orderbookManager;\n\t}\n\n\tpublic get tradableMarkets(): MarketId[] {\n\t\treturn this._tradableMarkets;\n\t}\n\n\t/**\n\t * Gets the current geoblock status of the user.\n\t *\n\t * @returns True if the user is geographically blocked, false otherwise\n\t */\n\tpublic get isGeoBlocked(): boolean {\n\t\treturn this._isGeoBlocked;\n\t}\n\n\t/**\n\t * The public endpoints that can be used to retrieve Drift data / interact with the Drift program.\n\t */\n\tpublic get driftEndpoints(): {\n\t\tdlobServerHttpUrl: string;\n\t\tswiftServerUrl: string;\n\t} {\n\t\treturn this._driftEndpoints;\n\t}\n\n\tprivate set tradableMarkets(tradableMarkets: MarketId[]) {\n\t\tthis._tradableMarkets = tradableMarkets;\n\t\tthis._spotMarketConfigs = tradableMarkets\n\t\t\t.filter((market) => !market.isPerp)\n\t\t\t.map((market) =>\n\t\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\t\tthis._driftClient.env,\n\t\t\t\t\tMarketType.SPOT,\n\t\t\t\t\tmarket.marketIndex\n\t\t\t\t)\n\t\t\t);\n\t\tthis._perpMarketConfigs = tradableMarkets\n\t\t\t.filter((market) => market.isPerp)\n\t\t\t.map((market) =>\n\t\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\t\tthis._driftClient.env,\n\t\t\t\t\tMarketType.PERP,\n\t\t\t\t\tmarket.marketIndex\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tpublic get spotMarketConfigs(): SpotMarketConfig[] {\n\t\treturn this._spotMarketConfigs;\n\t}\n\n\tpublic get perpMarketConfigs(): PerpMarketConfig[] {\n\t\treturn this._perpMarketConfigs;\n\t}\n\n\tprivate initializeStores(driftClient: DriftClient) {\n\t\tthis._markPriceCache = new MarkPriceCache();\n\t\tthis._oraclePriceCache = new OraclePriceCache();\n\t\tthis._userAccountCache = new UserAccountCache(\n\t\t\tdriftClient,\n\t\t\tthis._oraclePriceCache,\n\t\t\tthis._markPriceCache\n\t\t);\n\t}\n\n\tprivate initializeOrderbookManager(\n\t\torderbookWebsocketUrl: string,\n\t\torderbookGrouping: OrderbookGrouping = DEFAULT_ORDERBOOK_GROUPING\n\t) {\n\t\tthis._orderbookManager = new DriftL2OrderbookManager({\n\t\t\twsUrl: orderbookWebsocketUrl,\n\t\t\tsubscriptionConfig: this.selectedTradeMarket\n\t\t\t\t? {\n\t\t\t\t\t\t...DEFAULT_ORDERBOOK_SUBSCRIPTION_CONFIG,\n\t\t\t\t\t\tgrouping: orderbookGrouping,\n\t\t\t\t\t\tmarketId: this.selectedTradeMarket,\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t});\n\t}\n\n\tprivate initializePollingDlob(driftDlobServerHttpUrl: string) {\n\t\tthis._pollingDlob = new PollingDlob({\n\t\t\tdriftDlobServerHttpUrl: driftDlobServerHttpUrl,\n\t\t});\n\t}\n\n\tprivate initializePriorityFeeSubscriber(\n\t\tconfig?: Partial<PriorityFeeSubscriberConfig>\n\t) {\n\t\t// Convert tradable markets to DriftMarketInfo format for priority fee subscriber\n\t\tconst driftMarkets = this._tradableMarkets.map((market) => ({\n\t\t\tmarketType: market.marketTypeStr,\n\t\t\tmarketIndex: market.marketIndex,\n\t\t}));\n\n\t\tconst priorityFeeConfig: PriorityFeeSubscriberConfig = {\n\t\t\tconnection: this.driftClient.connection,\n\t\t\tpriorityFeeMethod: PriorityFeeMethod.SOLANA,\n\t\t\tdriftMarkets,\n\t\t\taddresses: HIGH_ACTIVITY_MARKET_ACCOUNTS,\n\t\t\t...config,\n\t\t};\n\n\t\tthis.priorityFeeSubscriber = new PriorityFeeSubscriber(priorityFeeConfig);\n\t}\n\n\tprivate setupDriftClient(\n\t\tconfig: Omit<AuthorityDriftConfig, 'onUserAccountUpdate'>\n\t) {\n\t\tconst driftEnv = config.driftEnv;\n\n\t\tconst connection = new Connection(config.solanaRpcEndpoint);\n\t\tconst driftProgramID = new PublicKey(DRIFT_PROGRAM_ID);\n\t\tconst accountLoader = new CustomizedCadenceBulkAccountLoader(\n\t\t\tconnection,\n\t\t\tDEFAULT_ACCOUNT_LOADER_COMMITMENT,\n\t\t\tDEFAULT_ACCOUNT_LOADER_POLLING_FREQUENCY_MS\n\t\t);\n\t\tthis.accountLoader = accountLoader;\n\n\t\tconst wallet = config.wallet ?? COMMON_UI_UTILS.createPlaceholderIWallet();\n\t\tconst skipInitialUsersLoad = !config.wallet;\n\n\t\tconst perpMarkets =\n\t\t\tconfig.tradableMarkets\n\t\t\t\t?.filter((market) => market.isPerp)\n\t\t\t\t.map((market) =>\n\t\t\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\t\t\tdriftEnv,\n\t\t\t\t\t\tMarketType.PERP,\n\t\t\t\t\t\tmarket.marketIndex\n\t\t\t\t\t)\n\t\t\t\t) ?? PerpMarkets[driftEnv];\n\t\tconst spotMarkets =\n\t\t\tconfig.tradableMarkets\n\t\t\t\t?.filter((market) => !market.isPerp)\n\t\t\t\t.map((market) =>\n\t\t\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\t\t\tdriftEnv,\n\t\t\t\t\t\tMarketType.SPOT,\n\t\t\t\t\t\tmarket.marketIndex\n\t\t\t\t\t)\n\t\t\t\t) ?? SpotMarkets[driftEnv];\n\t\tconst { perpMarketIndexes, spotMarketIndexes, oracleInfos } =\n\t\t\tgetMarketsAndOraclesForSubscription(driftEnv, perpMarkets, spotMarkets);\n\n\t\tconst driftClientConfig: DriftClientConfig = {\n\t\t\tenv: driftEnv,\n\t\t\tconnection,\n\t\t\twallet,\n\t\t\tprogramID: driftProgramID,\n\t\t\tenableMetricsEvents: false,\n\t\t\taccountSubscription: {\n\t\t\t\ttype: 'polling',\n\t\t\t\taccountLoader,\n\t\t\t},\n\t\t\tuserStats: true,\n\t\t\tincludeDelegates: true,\n\t\t\tskipLoadUsers: skipInitialUsersLoad,\n\t\t\tdelistedMarketSetting: DelistedMarketSetting.Unsubscribe,\n\t\t\tperpMarketIndexes,\n\t\t\tspotMarketIndexes,\n\t\t\toracleInfos,\n\t\t\t...config.additionalDriftClientConfig,\n\t\t};\n\t\tthis._driftClient = new DriftClient(driftClientConfig);\n\n\t\tconst txSender = new WhileValidTxSender({\n\t\t\tconnection,\n\t\t\twallet,\n\t\t\tadditionalConnections: [],\n\t\t\tadditionalTxSenderCallbacks: [],\n\t\t\ttxHandler: this._driftClient.txHandler,\n\t\t\tconfirmationStrategy: DEFAULT_TX_SENDER_CONFIRMATION_STRATEGY,\n\t\t\tretrySleep: DEFAULT_TX_SENDER_RETRY_INTERVAL,\n\t\t});\n\n\t\tthis._driftClient.txSender = txSender;\n\n\t\treturn this._driftClient;\n\t}\n\n\tprivate setupOrderbookManager() {\n\t\tthis.orderbookSubscription = this._orderbookManager.onUpdate(\n\t\t\t(orderbookData) => {\n\t\t\t\tconst marketKey = new MarketId(\n\t\t\t\t\torderbookData.marketIndex,\n\t\t\t\t\tENUM_UTILS.toObj(orderbookData.marketType as string) as MarketType\n\t\t\t\t).key;\n\n\t\t\t\tconst markPrice = orderbookData.markPrice;\n\n\t\t\t\tthis._markPriceCache.updateMarkPrices({\n\t\t\t\t\tmarketKey,\n\t\t\t\t\tmarkPrice,\n\t\t\t\t\tbestAsk: orderbookData.bestAskPrice,\n\t\t\t\t\tbestBid: orderbookData.bestBidPrice,\n\t\t\t\t\tlastUpdateSlot: orderbookData.slot ?? 0,\n\t\t\t\t});\n\n\t\t\t\tthis._oraclePriceCache.updateOraclePrices({\n\t\t\t\t\t...orderbookData.oracleData,\n\t\t\t\t\tmarketKey,\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\tprivate setupPollingDlob() {\n\t\t// DriftL2OrderbookManager will handle the fetching of data for the selected trade market through websocket\n\n\t\tthis._pollingDlob.addInterval(\n\t\t\tPollingCategory.USER_INVOLVED,\n\t\t\tPOLLING_INTERVALS.BACKGROUND_DEEP,\n\t\t\tPOLLING_DEPTHS.DEEP\n\t\t); // markets that the user is involved in\n\t\tthis._pollingDlob.addInterval(\n\t\t\tPollingCategory.USER_NOT_INVOLVED,\n\t\t\tPOLLING_INTERVALS.BACKGROUND_SHALLOW,\n\t\t\tPOLLING_DEPTHS.SHALLOW\n\t\t); // markets that the user is not involved in\n\n\t\t// add all markets to the user-not-involved interval first, until user-involved markets are known\n\t\tthis._pollingDlob.addMarketsToInterval(\n\t\t\tPollingCategory.USER_NOT_INVOLVED,\n\t\t\tthis._tradableMarkets.map((market) => market.key)\n\t\t);\n\n\t\tthis.pollingDlobSubscription = this._pollingDlob\n\t\t\t.onData()\n\t\t\t.subscribe((data) => {\n\t\t\t\tconst updatedMarkPrices = data.map((marketData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmarketKey: marketData.marketId.key,\n\t\t\t\t\t\tmarkPrice: marketData.data.markPrice,\n\t\t\t\t\t\tbestBid: marketData.data.bestBidPrice,\n\t\t\t\t\t\tbestAsk: marketData.data.bestAskPrice,\n\t\t\t\t\t\tlastUpdateSlot: marketData.data.slot ?? 0,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tconst updatedOraclePrices = data.map((marketData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmarketKey: marketData.marketId.key,\n\t\t\t\t\t\t...marketData.data.oracleData,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tthis._markPriceCache.updateMarkPrices(...updatedMarkPrices);\n\t\t\t\tthis._oraclePriceCache.updateOraclePrices(...updatedOraclePrices);\n\t\t\t});\n\t}\n\n\tprivate initializeManagers(\n\t\tdlobServerHttpUrl: string,\n\t\tswiftServerUrl: string\n\t) {\n\t\t// Initialize trading operations\n\t\tthis.driftOperations = new DriftOperations(\n\t\t\tthis._driftClient,\n\t\t\t() => this._userAccountCache,\n\t\t\tdlobServerHttpUrl,\n\t\t\tswiftServerUrl,\n\t\t\t() => this.priorityFeeSubscriber.getCustomStrategyResult()\n\t\t);\n\n\t\t// Initialize subscription manager with all subscription and market operations\n\t\tthis.subscriptionManager = new SubscriptionManager(\n\t\t\tthis._driftClient,\n\t\t\tthis.accountLoader,\n\t\t\tthis._pollingDlob,\n\t\t\tthis._orderbookManager,\n\t\t\tthis._userAccountCache,\n\t\t\tthis._tradableMarkets,\n\t\t\tthis.selectedTradeMarket\n\t\t);\n\t}\n\n\tprivate unsubscribeFromPollingDlob() {\n\t\tthis.pollingDlobSubscription?.unsubscribe();\n\t\tthis.pollingDlobSubscription = null;\n\n\t\tthis._pollingDlob.stop();\n\t}\n\n\tprivate unsubscribeFromOrderbook() {\n\t\tthis.orderbookSubscription?.unsubscribe();\n\t\tthis.orderbookSubscription = null;\n\n\t\tthis._orderbookManager.unsubscribe();\n\t}\n\n\tpublic async subscribe() {\n\t\tconst handleGeoBlock = async () => {\n\t\t\ttry {\n\t\t\t\tthis._isGeoBlocked = (await checkGeoBlock()) ?? false;\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn('Failed to check geoblock status:', error);\n\t\t\t\tthis._isGeoBlocked = false; // Default to not blocked if check fails\n\t\t\t}\n\t\t};\n\n\t\t// async logic that doesn't require DriftClient to be subscribed\n\t\tconst handleGeoBlockPromise = handleGeoBlock();\n\t\tconst pollingDlobStartPromise = this._pollingDlob.start();\n\t\tconst priorityFeeSubscribePromise = this.priorityFeeSubscriber.subscribe();\n\t\tconst orderbookSubscribePromise = this._orderbookManager.subscribe();\n\n\t\tawait this._driftClient.subscribe();\n\n\t\t// filter out markets that are delisted\n\t\tconst actualTradableMarkets = this._tradableMarkets.filter((market) => {\n\t\t\tconst marketAccount = market.isPerp\n\t\t\t\t? this._driftClient.getPerpMarketAccount(market.marketIndex)\n\t\t\t\t: this._driftClient.getSpotMarketAccount(market.marketIndex);\n\n\t\t\tif (\n\t\t\t\t!marketAccount ||\n\t\t\t\tDELISTED_MARKET_STATUSES.some((marketStatus) =>\n\t\t\t\t\tENUM_UTILS.match(marketAccount.status, marketStatus)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\n\t\tthis._tradableMarkets = actualTradableMarkets;\n\t\tthis.subscriptionManager.updateTradableMarkets(actualTradableMarkets);\n\t\tthis.setupPollingDlob();\n\t\tthis.setupOrderbookManager();\n\n\t\tconst subscribeToNonWhitelistedButUserInvolvedMarketsPromise =\n\t\t\tthis.subscriptionManager.subscribeToNonWhitelistedButUserInvolvedMarkets(\n\t\t\t\tthis._driftClient.getUsers()\n\t\t\t);\n\n\t\tawait Promise.all([\n\t\t\tpollingDlobStartPromise,\n\t\t\tsubscribeToNonWhitelistedButUserInvolvedMarketsPromise,\n\t\t\tpriorityFeeSubscribePromise,\n\t\t\thandleGeoBlockPromise,\n\t\t\torderbookSubscribePromise,\n\t\t]);\n\n\t\tthis.subscriptionManager.subscribeToAllUsersUpdates();\n\n\t\t// TODO: subscribe to oracle price updates from drift client?\n\t}\n\n\tpublic async unsubscribe() {\n\t\tthis.unsubscribeFromPollingDlob();\n\t\tthis.unsubscribeFromOrderbook();\n\t\tthis._userAccountCache.destroy();\n\t\tthis._markPriceCache.destroy();\n\t\tthis._orderbookManager.destroy();\n\n\t\tconst driftClientUnsubscribePromise = this._driftClient.unsubscribe();\n\t\tconst priorityFeeUnsubscribePromise =\n\t\t\tthis.priorityFeeSubscriber.unsubscribe();\n\n\t\tawait Promise.all(\n\t\t\t[driftClientUnsubscribePromise, priorityFeeUnsubscribePromise].filter(\n\t\t\t\tBoolean\n\t\t\t)\n\t\t);\n\n\t\tthis.pollingDlobSubscription = null;\n\t}\n\n\tpublic onOraclePricesUpdate(\n\t\tcallback: (oraclePrice: OraclePriceLookup) => void\n\t) {\n\t\treturn this._oraclePriceCache.onUpdate(callback);\n\t}\n\n\tpublic onMarkPricesUpdate(callback: (markPrice: MarkPriceLookup) => void) {\n\t\treturn this._markPriceCache.onUpdate(callback);\n\t}\n\n\tpublic onUserAccountUpdate(\n\t\tcallback: (userAccount: EnhancedAccountData) => void\n\t) {\n\t\treturn this._userAccountCache.onUpdate(callback);\n\t}\n\n\tpublic onOrderbookUpdate(\n\t\tcallback: (orderbook: L2WithOracleAndMarketData) => void\n\t) {\n\t\treturn this._orderbookManager.onUpdate(callback);\n\t}\n\n\t/**\n\t * Updates the authority (wallet) for the drift client and reestablishes subscriptions.\n\t *\n\t * @param wallet - The new wallet to use as authority\n\t * @param activeSubAccountId - Optional subaccount ID to switch to after wallet update\n\t */\n\tpublic async updateAuthority(wallet: IWallet, activeSubAccountId?: number) {\n\t\treturn this.subscriptionManager.updateAuthority(wallet, activeSubAccountId);\n\t}\n\n\t/**\n\t * Updates the selected trade market and optimizes subscription polling.\n\t *\n\t * @param newSelectedTradeMarket - The new market to prioritize for trading\n\t */\n\tpublic updateSelectedTradeMarket(newSelectedTradeMarket: MarketId | null) {\n\t\tconst isNewSelectedTradeMarket =\n\t\t\t!!newSelectedTradeMarket !== !!this.selectedTradeMarket || // only one of them is null\n\t\t\t(!!newSelectedTradeMarket && // or both are not null and are different\n\t\t\t\t!!this.selectedTradeMarket &&\n\t\t\t\t!this.selectedTradeMarket.equals(newSelectedTradeMarket));\n\n\t\tif (!isNewSelectedTradeMarket) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Update the local reference\n\t\tthis.selectedTradeMarket = newSelectedTradeMarket;\n\n\t\t// Delegate to subscription manager for all polling optimization\n\t\tthis.subscriptionManager.updateSelectedTradeMarket(newSelectedTradeMarket);\n\t}\n\n\t/**\n\t * Creates a new user account and deposits initial collateral.\n\t *\n\t * @param params - Parameters for creating user and depositing collateral\n\t * @returns Promise resolving to transaction signature and user account public key\n\t */\n\tpublic async createUserAndDeposit(\n\t\tparams: CreateUserAndDepositParams\n\t): Promise<{\n\t\ttxSig: TransactionSignature;\n\t\tuser: User;\n\t}> {\n\t\treturn this.driftOperations.createUserAndDeposit(params);\n\t}\n\n\t/**\n\t * Creates a RevenueShareEscrow account for the user.\n\t *\n\t * @param params - Parameters for creating a RevenueShareEscrow account\n\t * @returns Promise resolving to the transaction signature of the creation\n\t */\n\tpublic async createRevenueShareEscrow(\n\t\tparams: CreateRevenueShareEscrowParams\n\t): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.createRevenueShareEscrow(params);\n\t}\n\n\t/**\n\t * Deposits collateral into a user's spot market position.\n\t *\n\t * @param params - Parameters for the deposit operation\n\t * @returns Promise resolving to the transaction signature\n\t */\n\tpublic async deposit(params: DepositParams): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.deposit(params);\n\t}\n\n\t/**\n\t * Withdraws collateral from a user's spot market position.\n\t *\n\t * @param params - Parameters for the withdrawal operation\n\t * @returns Promise resolving to the transaction signature\n\t */\n\tpublic async withdraw(params: WithdrawParams): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.withdraw(params);\n\t}\n\n\t/**\n\t * Opens a perpetual market order.\n\t *\n\t * @param params - Parameters for the perp order\n\t * @returns Promise resolving to the transaction signature\n\t */\n\t@enforceGeoBlock\n\tpublic async openPerpOrder(\n\t\tparams: PerpOrderParams\n\t): Promise<TransactionSignature | void> {\n\t\treturn this.driftOperations.openPerpOrder(params);\n\t}\n\n\t/**\n\t * Executes a swap between two spot markets.\n\t *\n\t * @param params - Parameters for the swap operation\n\t * @returns Promise resolving to the transaction signature\n\t */\n\tpublic async swap(params: SwapParams): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.swap(params);\n\t}\n\n\tpublic async getSwapQuote(\n\t\tparams: Omit<SwapParams, 'jupiterQuote'> & {\n\t\t\tslippageBps?: number;\n\t\t\tswapMode?: SwapMode;\n\t\t\tonlyDirectRoutes?: boolean;\n\t\t}\n\t): Promise<QuoteResponse> {\n\t\treturn this.driftOperations.getSwapQuote(params);\n\t}\n\n\t/**\n\t * Settles profit and loss for a perpetual position.\n\t *\n\t * @param params - Parameters for the settle PnL operation\n\t * @returns Promise resolving to the transaction signature\n\t */\n\tpublic async settleAccountPnl(\n\t\tparams: SettleAccountPnlParams\n\t): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.settleAccountPnl(params);\n\t}\n\n\t/**\n\t * Deletes a user account from the Drift protocol.\n\t *\n\t * @param subAccountId - The ID of the sub-account to delete\n\t * @returns Promise resolving to the transaction signature of the deletion\n\t */\n\tpublic async deleteUser(subAccountId: number): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.deleteUser(subAccountId);\n\t}\n\n\t/**\n\t * Cancels a list of open orders.\n\t *\n\t * @param params - See `CancelOrdersParams`\n\t * @returns Promise resolving to the transaction signature of the cancellation\n\t */\n\tpublic async cancelOrders(\n\t\tparams: CancelOrdersParams\n\t): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.cancelOrders(params);\n\t}\n\n\tpublic getTxParams(overrides?: Partial<TxParams>): TxParams {\n\t\treturn this.driftOperations.getTxParams(overrides);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/drift/Drift/clients/AuthorityDrift/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tCustomizedCadenceBulkAccountLoader,\n\tDelistedMarketSetting,\n\tDRIFT_PROGRAM_ID,\n\tDriftClient,\n\tDriftClientConfig,\n\tDriftEnv,\n\tgetMarketsAndOraclesForSubscription,\n\tIWallet,\n\tMarketType,\n\tPerpMarketConfig,\n\tPerpMarkets,\n\tQuoteResponse,\n\tSpotMarketConfig,\n\tSpotMarkets,\n\tSwapMode,\n\tUser,\n\tWhileValidTxSender,\n\tIWalletV2,\n\tTxParams,\n} from '@drift-labs/sdk';\nimport { Connection, PublicKey, TransactionSignature } from '@solana/web3.js';\nimport { COMMON_UI_UTILS } from '../../../../common-ui-utils/commonUiUtils';\nimport {\n\tDEFAULT_ACCOUNT_LOADER_COMMITMENT,\n\tDEFAULT_ACCOUNT_LOADER_POLLING_FREQUENCY_MS,\n\tDEFAULT_TX_SENDER_CONFIRMATION_STRATEGY,\n\tDEFAULT_TX_SENDER_RETRY_INTERVAL,\n\tDELISTED_MARKET_STATUSES,\n\tHIGH_ACTIVITY_MARKET_ACCOUNTS,\n\tPollingCategory,\n} from '../../constants';\nimport { MarketId } from '../../../../types';\nimport { MARKET_UTILS } from '../../../../common-ui-utils/market';\nimport {\n\tPOLLING_DEPTHS,\n\tPOLLING_INTERVALS,\n\tPollingDlob,\n} from '../../data/PollingDlob';\nimport { EnvironmentConstants } from '../../../../EnvironmentConstants';\nimport { MarkPriceLookup, MarkPriceCache } from '../../stores/MarkPriceCache';\nimport {\n\tOraclePriceLookup,\n\tOraclePriceCache,\n} from '../../stores/OraclePriceCache';\nimport { DriftL2OrderbookManager } from './DriftL2OrderbookManager';\nimport { Subscription } from 'rxjs';\nimport {\n\tEnhancedAccountData,\n\tUserAccountCache,\n\tUserAccountLookup,\n} from '../../stores/UserAccountCache';\nimport { ENUM_UTILS } from '../../../../utils';\nimport { checkGeoBlock } from '../../../../utils/geoblock';\nimport {\n\tPriorityFeeSubscriber,\n\tPriorityFeeSubscriberConfig,\n\tPriorityFeeMethod,\n} from '@drift-labs/sdk';\nimport { SubscriptionManager } from './SubscriptionManager';\nimport { DriftOperations } from './DriftOperations';\nimport {\n\tCreateUserAndDepositParams,\n\tDepositParams,\n\tWithdrawParams,\n\tPerpOrderParams,\n\tSwapParams,\n\tSettleAccountPnlParams,\n\tCancelOrdersParams,\n\tCreateRevenueShareEscrowParams,\n} from './DriftOperations/types';\nimport { Initialize } from '../../../../Config';\nimport { L2WithOracleAndMarketData } from '../../../../utils/orderbook/types';\nimport { GeoBlockError } from '../../constants/errors';\nimport {\n\tDEFAULT_ORDERBOOK_GROUPING,\n\tDEFAULT_ORDERBOOK_SUBSCRIPTION_CONFIG,\n} from '../../constants/orderbook';\nimport { OrderbookGrouping } from '../../../../utils/dlob-server/DlobServerWebsocketUtils';\n\n/**\n * Decorator that prevents method execution if the user is geographically blocked.\n * Throws a GeoBlockError if the user is blocked.\n *\n * @param target - The class prototype\n * @param propertyName - The method name\n * @param descriptor - The method descriptor\n */\nfunction enforceGeoBlock(\n\t_target: any,\n\tpropertyName: string,\n\tdescriptor: PropertyDescriptor\n): PropertyDescriptor {\n\tconst originalMethod = descriptor.value;\n\n\tdescriptor.value = function (this: AuthorityDrift, ...args: any[]) {\n\t\tif (this._isGeoBlocked) {\n\t\t\tthrow new GeoBlockError(propertyName);\n\t\t}\n\t\treturn originalMethod.apply(this, args);\n\t};\n\n\treturn descriptor;\n}\n\nexport interface AuthorityDriftConfig {\n\tsolanaRpcEndpoint: string;\n\tdriftEnv: DriftEnv;\n\twallet?: IWalletV2;\n\tdriftDlobServerHttpUrl?: string;\n\ttradableMarkets?: MarketId[];\n\tselectedTradeMarket?: MarketId;\n\tadditionalDriftClientConfig?: Partial<Omit<DriftClientConfig, 'env'>>;\n\tpriorityFeeSubscriberConfig?: Partial<PriorityFeeSubscriberConfig>;\n\torderbookConfig?: {\n\t\tdlobWebSocketUrl?: string;\n\t\torderbookGrouping?: OrderbookGrouping;\n\t};\n}\n\n/**\n * A Drift client that is used to subscribe to all accounts for a given authority.\n *\n * This is useful for applications that want to subscribe to all user accounts for a given authority,\n * such as a UI to trade on Drift or a wallet application that allows trading on Drift.\n */\nexport class AuthorityDrift {\n\t/**\n\t * Handles all Drift program interactions e.g. trading, read account details, etc.\n\t */\n\tprivate _driftClient!: DriftClient;\n\n\t/**\n\t * Handles bulk account loading from the RPC.\n\t */\n\tprivate accountLoader!: CustomizedCadenceBulkAccountLoader;\n\n\t/**\n\t * Handles polling the DLOB server for mark price and oracle price data for markets.\n\t * It is also the fallback source for orderbook data, if the websocket DLOB subscriber is unavailable.\n\t */\n\tprivate _pollingDlob!: PollingDlob;\n\n\t/**\n\t * Subscription to the polling DLOB data.\n\t */\n\tprivate pollingDlobSubscription: Subscription | null = null;\n\n\t/**\n\t * Subscription to the orderbook data.\n\t */\n\tprivate orderbookSubscription: Subscription | null = null;\n\n\t/**\n\t * Handles all trading operations including deposits, withdrawals, and position management.\n\t */\n\tprivate driftOperations!: DriftOperations;\n\n\t/**\n\t * Manages all subscription operations including user accounts, market subscriptions, and polling optimization.\n\t */\n\tprivate subscriptionManager!: SubscriptionManager;\n\n\t/**\n\t * Stores the fetched mark prices for all tradable markets.\n\t * Mark price sources includes:\n\t * - Websocket DLOB subscriber (active market, derived when fetching orderbook data)\n\t * - Polling DLOB server (all non-active markets)\n\t */\n\tprivate _markPriceCache!: MarkPriceCache;\n\n\t/**\n\t * Stores the fetched oracle prices for all tradable markets.\n\t * Oracle price sources includes:\n\t * - DriftClient oracle account subscriptions\n\t * - Polling DLOB server (all non-active markets)\n\t */\n\tprivate _oraclePriceCache!: OraclePriceCache;\n\n\t/**\n\t * Stores the fetched user account data for all user accounts.\n\t */\n\tprivate _userAccountCache!: UserAccountCache;\n\n\t/**\n\t * Manages real-time orderbook subscriptions via websocket.\n\t */\n\tprivate _orderbookManager!: DriftL2OrderbookManager;\n\n\t/**\n\t * Handles priority fee tracking and calculation for optimized transaction costs.\n\t */\n\tprivate priorityFeeSubscriber!: PriorityFeeSubscriber;\n\n\t/**\n\t * Stores whether the user is geographically blocked from using the service.\n\t * This is checked during subscription and cached for decorator use.\n\t */\n\tprotected _isGeoBlocked: boolean = false;\n\n\t/**\n\t * The selected trade market to use for the drift client. This is used to subscribe to the market account,\n\t * oracle data and mark price more frequently compared to the other markets.\n\t *\n\t * Example usage:\n\t * - When the UI wants to display the orderbook of this market.\n\t * - When the user is interacting with the trade form to trade on this market.\n\t */\n\tprivate selectedTradeMarket: MarketId | null = null;\n\n\t/**\n\t * The markets that are tradable through this client. This affects oracle price, mark price and market account subscriptions.\n\t */\n\tprivate _tradableMarkets: MarketId[] = [];\n\n\tprivate _spotMarketConfigs: SpotMarketConfig[] = [];\n\tprivate _perpMarketConfigs: PerpMarketConfig[] = [];\n\n\t/**\n\t * The public endpoints that can be used to retrieve Drift data / interact with the Drift program.\n\t */\n\tprivate _driftEndpoints: {\n\t\tdlobServerHttpUrl: string;\n\t\tswiftServerUrl: string;\n\t\torderbookWebsocketUrl: string;\n\t};\n\n\t/**\n\t * @param solanaRpcEndpoint - The Solana RPC endpoint to use for reading RPC data.\n\t * @param driftEnv - The drift environment to use for the drift client.\n\t * @param authority - The authority (wallet) whose user accounts to subscribe to.\n\t * @param tradableMarkets - The markets that are tradable through this client.\n\t * @param selectedTradeMarket - The active trade market to use for the drift client. This is used to subscribe to the market account, oracle data and mark price more frequently compared to the other markets.\n\t * @param additionalDriftClientConfig - Additional DriftClient config to use for the DriftClient.\n\t */\n\tconstructor(config: AuthorityDriftConfig) {\n\t\t// set up tradable markets\n\t\tthis.selectedTradeMarket = config.selectedTradeMarket ?? null;\n\n\t\tconst perpTradableMarkets = PerpMarkets[config.driftEnv].map(\n\t\t\t(marketConfig) => MarketId.createPerpMarket(marketConfig.marketIndex)\n\t\t);\n\t\tconst spotTradableMarkets = SpotMarkets[config.driftEnv].map(\n\t\t\t(marketConfig) => MarketId.createSpotMarket(marketConfig.marketIndex)\n\t\t);\n\n\t\tthis._tradableMarkets = config.tradableMarkets ?? [\n\t\t\t...perpTradableMarkets,\n\t\t\t...spotTradableMarkets,\n\t\t];\n\t\tthis._spotMarketConfigs = spotTradableMarkets.map((market) =>\n\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\tconfig.driftEnv,\n\t\t\t\tMarketType.SPOT,\n\t\t\t\tmarket.marketIndex\n\t\t\t)\n\t\t);\n\t\tthis._perpMarketConfigs = perpTradableMarkets.map((market) =>\n\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\tconfig.driftEnv,\n\t\t\t\tMarketType.PERP,\n\t\t\t\tmarket.marketIndex\n\t\t\t)\n\t\t);\n\n\t\t// set up Drift endpoints\n\t\tconst driftDlobServerHttpUrlToUse =\n\t\t\tconfig.driftDlobServerHttpUrl ??\n\t\t\tEnvironmentConstants.dlobServerHttpUrl[\n\t\t\t\tconfig.driftEnv === 'devnet' ? 'dev' : 'mainnet'\n\t\t\t];\n\t\tconst swiftServerUrlToUse =\n\t\t\tEnvironmentConstants.swiftServerUrl[\n\t\t\t\tconfig.driftEnv === 'devnet' ? 'staging' : 'mainnet'\n\t\t\t];\n\t\tconst orderbookWebsocketUrlToUse =\n\t\t\tconfig.orderbookConfig?.dlobWebSocketUrl ??\n\t\t\tEnvironmentConstants.dlobServerWsUrl[\n\t\t\t\tconfig.driftEnv === 'devnet' ? 'dev' : 'mainnet'\n\t\t\t];\n\t\tthis._driftEndpoints = {\n\t\t\tdlobServerHttpUrl: driftDlobServerHttpUrlToUse,\n\t\t\tswiftServerUrl: swiftServerUrlToUse,\n\t\t\torderbookWebsocketUrl: orderbookWebsocketUrlToUse,\n\t\t};\n\n\t\t// we set this up because SerializableTypes\n\t\tInitialize(config.driftEnv);\n\n\t\t// set up clients and stores\n\t\tconst driftClient = this.setupDriftClient(config);\n\t\tthis.initializePollingDlob(driftDlobServerHttpUrlToUse);\n\t\tthis.initializeStores(driftClient);\n\t\tthis.initializeOrderbookManager(\n\t\t\torderbookWebsocketUrlToUse,\n\t\t\tconfig.orderbookConfig?.orderbookGrouping\n\t\t);\n\t\tthis.initializePriorityFeeSubscriber(config.priorityFeeSubscriberConfig);\n\t\tthis.initializeManagers(driftDlobServerHttpUrlToUse, swiftServerUrlToUse);\n\t}\n\n\tpublic get driftClient(): DriftClient {\n\t\treturn this._driftClient;\n\t}\n\n\tpublic get authority(): PublicKey {\n\t\treturn this._driftClient.wallet.publicKey;\n\t}\n\n\tpublic get pollingDlob(): PollingDlob {\n\t\treturn this._pollingDlob;\n\t}\n\n\tpublic get oraclePriceCache(): OraclePriceLookup {\n\t\treturn this._oraclePriceCache.store;\n\t}\n\n\tpublic get markPriceCache(): MarkPriceLookup {\n\t\treturn this._markPriceCache.store;\n\t}\n\n\tpublic get userAccountCache(): UserAccountLookup {\n\t\treturn this._userAccountCache.store;\n\t}\n\n\tpublic get orderbookCache(): L2WithOracleAndMarketData | null {\n\t\treturn this._orderbookManager.store;\n\t}\n\n\tpublic get orderbookManager(): DriftL2OrderbookManager {\n\t\treturn this._orderbookManager;\n\t}\n\n\tpublic get tradableMarkets(): MarketId[] {\n\t\treturn this._tradableMarkets;\n\t}\n\n\t/**\n\t * Gets the current geoblock status of the user.\n\t *\n\t * @returns True if the user is geographically blocked, false otherwise\n\t */\n\tpublic get isGeoBlocked(): boolean {\n\t\treturn this._isGeoBlocked;\n\t}\n\n\t/**\n\t * The public endpoints that can be used to retrieve Drift data / interact with the Drift program.\n\t */\n\tpublic get driftEndpoints(): {\n\t\tdlobServerHttpUrl: string;\n\t\tswiftServerUrl: string;\n\t} {\n\t\treturn this._driftEndpoints;\n\t}\n\n\tprivate set tradableMarkets(tradableMarkets: MarketId[]) {\n\t\tthis._tradableMarkets = tradableMarkets;\n\t\tthis._spotMarketConfigs = tradableMarkets\n\t\t\t.filter((market) => !market.isPerp)\n\t\t\t.map((market) =>\n\t\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\t\tthis._driftClient.env,\n\t\t\t\t\tMarketType.SPOT,\n\t\t\t\t\tmarket.marketIndex\n\t\t\t\t)\n\t\t\t);\n\t\tthis._perpMarketConfigs = tradableMarkets\n\t\t\t.filter((market) => market.isPerp)\n\t\t\t.map((market) =>\n\t\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\t\tthis._driftClient.env,\n\t\t\t\t\tMarketType.PERP,\n\t\t\t\t\tmarket.marketIndex\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tpublic get spotMarketConfigs(): SpotMarketConfig[] {\n\t\treturn this._spotMarketConfigs;\n\t}\n\n\tpublic get perpMarketConfigs(): PerpMarketConfig[] {\n\t\treturn this._perpMarketConfigs;\n\t}\n\n\tprivate initializeStores(driftClient: DriftClient) {\n\t\tthis._markPriceCache = new MarkPriceCache();\n\t\tthis._oraclePriceCache = new OraclePriceCache();\n\t\tthis._userAccountCache = new UserAccountCache(\n\t\t\tdriftClient,\n\t\t\tthis._oraclePriceCache,\n\t\t\tthis._markPriceCache\n\t\t);\n\t}\n\n\tprivate initializeOrderbookManager(\n\t\torderbookWebsocketUrl: string,\n\t\torderbookGrouping: OrderbookGrouping = DEFAULT_ORDERBOOK_GROUPING\n\t) {\n\t\tthis._orderbookManager = new DriftL2OrderbookManager({\n\t\t\twsUrl: orderbookWebsocketUrl,\n\t\t\tsubscriptionConfig: this.selectedTradeMarket\n\t\t\t\t? {\n\t\t\t\t\t\t...DEFAULT_ORDERBOOK_SUBSCRIPTION_CONFIG,\n\t\t\t\t\t\tgrouping: orderbookGrouping,\n\t\t\t\t\t\tmarketId: this.selectedTradeMarket,\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t});\n\t}\n\n\tprivate initializePollingDlob(driftDlobServerHttpUrl: string) {\n\t\tthis._pollingDlob = new PollingDlob({\n\t\t\tdriftDlobServerHttpUrl: driftDlobServerHttpUrl,\n\t\t});\n\t}\n\n\tprivate initializePriorityFeeSubscriber(\n\t\tconfig?: Partial<PriorityFeeSubscriberConfig>\n\t) {\n\t\t// Convert tradable markets to DriftMarketInfo format for priority fee subscriber\n\t\tconst driftMarkets = this._tradableMarkets.map((market) => ({\n\t\t\tmarketType: market.marketTypeStr,\n\t\t\tmarketIndex: market.marketIndex,\n\t\t}));\n\n\t\tconst priorityFeeConfig: PriorityFeeSubscriberConfig = {\n\t\t\tconnection: this.driftClient.connection,\n\t\t\tpriorityFeeMethod: PriorityFeeMethod.SOLANA,\n\t\t\tdriftMarkets,\n\t\t\taddresses: HIGH_ACTIVITY_MARKET_ACCOUNTS,\n\t\t\t...config,\n\t\t};\n\n\t\tthis.priorityFeeSubscriber = new PriorityFeeSubscriber(priorityFeeConfig);\n\t}\n\n\tprivate setupDriftClient(\n\t\tconfig: Omit<AuthorityDriftConfig, 'onUserAccountUpdate'>\n\t) {\n\t\tconst driftEnv = config.driftEnv;\n\n\t\tconst connection = new Connection(config.solanaRpcEndpoint);\n\t\tconst driftProgramID = new PublicKey(DRIFT_PROGRAM_ID);\n\t\tconst accountLoader = new CustomizedCadenceBulkAccountLoader(\n\t\t\tconnection,\n\t\t\tDEFAULT_ACCOUNT_LOADER_COMMITMENT,\n\t\t\tDEFAULT_ACCOUNT_LOADER_POLLING_FREQUENCY_MS\n\t\t);\n\t\tthis.accountLoader = accountLoader;\n\n\t\tconst wallet = config.wallet ?? COMMON_UI_UTILS.createPlaceholderIWallet();\n\t\tconst skipInitialUsersLoad = !config.wallet;\n\n\t\tconst perpMarkets =\n\t\t\tconfig.tradableMarkets\n\t\t\t\t?.filter((market) => market.isPerp)\n\t\t\t\t.map((market) =>\n\t\t\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\t\t\tdriftEnv,\n\t\t\t\t\t\tMarketType.PERP,\n\t\t\t\t\t\tmarket.marketIndex\n\t\t\t\t\t)\n\t\t\t\t) ?? PerpMarkets[driftEnv];\n\t\tconst spotMarkets =\n\t\t\tconfig.tradableMarkets\n\t\t\t\t?.filter((market) => !market.isPerp)\n\t\t\t\t.map((market) =>\n\t\t\t\t\tMARKET_UTILS.getMarketConfig(\n\t\t\t\t\t\tdriftEnv,\n\t\t\t\t\t\tMarketType.SPOT,\n\t\t\t\t\t\tmarket.marketIndex\n\t\t\t\t\t)\n\t\t\t\t) ?? SpotMarkets[driftEnv];\n\t\tconst { perpMarketIndexes, spotMarketIndexes, oracleInfos } =\n\t\t\tgetMarketsAndOraclesForSubscription(driftEnv, perpMarkets, spotMarkets);\n\n\t\tconst driftClientConfig: DriftClientConfig = {\n\t\t\tenv: driftEnv,\n\t\t\tconnection,\n\t\t\twallet,\n\t\t\tprogramID: driftProgramID,\n\t\t\tenableMetricsEvents: false,\n\t\t\taccountSubscription: {\n\t\t\t\ttype: 'polling',\n\t\t\t\taccountLoader,\n\t\t\t},\n\t\t\tuserStats: true,\n\t\t\tincludeDelegates: true,\n\t\t\tskipLoadUsers: skipInitialUsersLoad,\n\t\t\tdelistedMarketSetting: DelistedMarketSetting.Unsubscribe,\n\t\t\tperpMarketIndexes,\n\t\t\tspotMarketIndexes,\n\t\t\toracleInfos,\n\t\t\t...config.additionalDriftClientConfig,\n\t\t};\n\t\tthis._driftClient = new DriftClient(driftClientConfig);\n\n\t\tconst txSender = new WhileValidTxSender({\n\t\t\tconnection,\n\t\t\twallet,\n\t\t\tadditionalConnections: [],\n\t\t\tadditionalTxSenderCallbacks: [],\n\t\t\ttxHandler: this._driftClient.txHandler,\n\t\t\tconfirmationStrategy: DEFAULT_TX_SENDER_CONFIRMATION_STRATEGY,\n\t\t\tretrySleep: DEFAULT_TX_SENDER_RETRY_INTERVAL,\n\t\t});\n\n\t\tthis._driftClient.txSender = txSender;\n\n\t\treturn this._driftClient;\n\t}\n\n\tprivate setupOrderbookManager() {\n\t\tthis.orderbookSubscription = this._orderbookManager.onUpdate(\n\t\t\t(orderbookData) => {\n\t\t\t\tconst marketKey = new MarketId(\n\t\t\t\t\torderbookData.marketIndex,\n\t\t\t\t\tENUM_UTILS.toObj(orderbookData.marketType as string) as MarketType\n\t\t\t\t).key;\n\n\t\t\t\tconst markPrice = orderbookData.markPrice;\n\n\t\t\t\tthis._markPriceCache.updateMarkPrices({\n\t\t\t\t\tmarketKey,\n\t\t\t\t\tmarkPrice,\n\t\t\t\t\tbestAsk: orderbookData.bestAskPrice,\n\t\t\t\t\tbestBid: orderbookData.bestBidPrice,\n\t\t\t\t\tlastUpdateSlot: orderbookData.slot ?? 0,\n\t\t\t\t});\n\n\t\t\t\tthis._oraclePriceCache.updateOraclePrices({\n\t\t\t\t\t...orderbookData.oracleData,\n\t\t\t\t\tmarketKey,\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\tprivate setupPollingDlob() {\n\t\t// DriftL2OrderbookManager will handle the fetching of data for the selected trade market through websocket\n\n\t\tthis._pollingDlob.addInterval(\n\t\t\tPollingCategory.USER_INVOLVED,\n\t\t\tPOLLING_INTERVALS.BACKGROUND_DEEP,\n\t\t\tPOLLING_DEPTHS.DEEP\n\t\t); // markets that the user is involved in\n\t\tthis._pollingDlob.addInterval(\n\t\t\tPollingCategory.USER_NOT_INVOLVED,\n\t\t\tPOLLING_INTERVALS.BACKGROUND_SHALLOW,\n\t\t\tPOLLING_DEPTHS.SHALLOW\n\t\t); // markets that the user is not involved in\n\n\t\t// add all markets to the user-not-involved interval first, until user-involved markets are known\n\t\tthis._pollingDlob.addMarketsToInterval(\n\t\t\tPollingCategory.USER_NOT_INVOLVED,\n\t\t\tthis._tradableMarkets.map((market) => market.key)\n\t\t);\n\n\t\tthis.pollingDlobSubscription = this._pollingDlob\n\t\t\t.onData()\n\t\t\t.subscribe((data) => {\n\t\t\t\tconst updatedMarkPrices = data.map((marketData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmarketKey: marketData.marketId.key,\n\t\t\t\t\t\tmarkPrice: marketData.data.markPrice,\n\t\t\t\t\t\tbestBid: marketData.data.bestBidPrice,\n\t\t\t\t\t\tbestAsk: marketData.data.bestAskPrice,\n\t\t\t\t\t\tlastUpdateSlot: marketData.data.slot ?? 0,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tconst updatedOraclePrices = data.map((marketData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmarketKey: marketData.marketId.key,\n\t\t\t\t\t\t...marketData.data.oracleData,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tthis._markPriceCache.updateMarkPrices(...updatedMarkPrices);\n\t\t\t\tthis._oraclePriceCache.updateOraclePrices(...updatedOraclePrices);\n\t\t\t});\n\t}\n\n\tprivate initializeManagers(\n\t\tdlobServerHttpUrl: string,\n\t\tswiftServerUrl: string\n\t) {\n\t\t// Initialize trading operations\n\t\tthis.driftOperations = new DriftOperations(\n\t\t\tthis._driftClient,\n\t\t\t() => this._userAccountCache,\n\t\t\tdlobServerHttpUrl,\n\t\t\tswiftServerUrl,\n\t\t\t() => this.priorityFeeSubscriber.getCustomStrategyResult()\n\t\t);\n\n\t\t// Initialize subscription manager with all subscription and market operations\n\t\tthis.subscriptionManager = new SubscriptionManager(\n\t\t\tthis._driftClient,\n\t\t\tthis.accountLoader,\n\t\t\tthis._pollingDlob,\n\t\t\tthis._orderbookManager,\n\t\t\tthis._userAccountCache,\n\t\t\tthis._tradableMarkets,\n\t\t\tthis.selectedTradeMarket\n\t\t);\n\t}\n\n\tprivate unsubscribeFromPollingDlob() {\n\t\tthis.pollingDlobSubscription?.unsubscribe();\n\t\tthis.pollingDlobSubscription = null;\n\n\t\tthis._pollingDlob.stop();\n\t}\n\n\tprivate unsubscribeFromOrderbook() {\n\t\tthis.orderbookSubscription?.unsubscribe();\n\t\tthis.orderbookSubscription = null;\n\n\t\tthis._orderbookManager.unsubscribe();\n\t}\n\n\tpublic async subscribe() {\n\t\tconst handleGeoBlock = async () => {\n\t\t\ttry {\n\t\t\t\tthis._isGeoBlocked = (await checkGeoBlock()) ?? false;\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn('Failed to check geoblock status:', error);\n\t\t\t\tthis._isGeoBlocked = false; // Default to not blocked if check fails\n\t\t\t}\n\t\t};\n\n\t\t// async logic that doesn't require DriftClient to be subscribed\n\t\tconst handleGeoBlockPromise = handleGeoBlock();\n\t\tconst pollingDlobStartPromise = this._pollingDlob.start();\n\t\tconst priorityFeeSubscribePromise = this.priorityFeeSubscriber.subscribe();\n\t\tconst orderbookSubscribePromise = this._orderbookManager.subscribe();\n\n\t\tawait this._driftClient.subscribe();\n\n\t\t// filter out markets that are delisted\n\t\tconst actualTradableMarkets = this._tradableMarkets.filter((market) => {\n\t\t\tconst marketAccount = market.isPerp\n\t\t\t\t? this._driftClient.getPerpMarketAccount(market.marketIndex)\n\t\t\t\t: this._driftClient.getSpotMarketAccount(market.marketIndex);\n\n\t\t\tif (\n\t\t\t\t!marketAccount ||\n\t\t\t\tDELISTED_MARKET_STATUSES.some((marketStatus) =>\n\t\t\t\t\tENUM_UTILS.match(marketAccount.status, marketStatus)\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\n\t\tthis._tradableMarkets = actualTradableMarkets;\n\t\tthis.subscriptionManager.updateTradableMarkets(actualTradableMarkets);\n\t\tthis.setupPollingDlob();\n\t\tthis.setupOrderbookManager();\n\n\t\tconst subscribeToNonWhitelistedButUserInvolvedMarketsPromise =\n\t\t\tthis.subscriptionManager.subscribeToNonWhitelistedButUserInvolvedMarkets(\n\t\t\t\tthis._driftClient.getUsers()\n\t\t\t);\n\n\t\tawait Promise.all([\n\t\t\tpollingDlobStartPromise,\n\t\t\tsubscribeToNonWhitelistedButUserInvolvedMarketsPromise,\n\t\t\tpriorityFeeSubscribePromise,\n\t\t\thandleGeoBlockPromise,\n\t\t\torderbookSubscribePromise,\n\t\t]);\n\n\t\tthis.subscriptionManager.subscribeToAllUsersUpdates();\n\n\t\t// TODO: subscribe to oracle price updates from drift client?\n\t}\n\n\tpublic async unsubscribe() {\n\t\tthis.unsubscribeFromPollingDlob();\n\t\tthis.unsubscribeFromOrderbook();\n\t\tthis._userAccountCache.destroy();\n\t\tthis._markPriceCache.destroy();\n\t\tthis._orderbookManager.destroy();\n\n\t\tconst driftClientUnsubscribePromise = this._driftClient.unsubscribe();\n\t\tconst priorityFeeUnsubscribePromise =\n\t\t\tthis.priorityFeeSubscriber.unsubscribe();\n\n\t\tawait Promise.all(\n\t\t\t[driftClientUnsubscribePromise, priorityFeeUnsubscribePromise].filter(\n\t\t\t\tBoolean\n\t\t\t)\n\t\t);\n\n\t\tthis.pollingDlobSubscription = null;\n\t}\n\n\tpublic onOraclePricesUpdate(\n\t\tcallback: (oraclePrice: OraclePriceLookup) => void\n\t) {\n\t\treturn this._oraclePriceCache.onUpdate(callback);\n\t}\n\n\tpublic onMarkPricesUpdate(callback: (markPrice: MarkPriceLookup) => void) {\n\t\treturn this._markPriceCache.onUpdate(callback);\n\t}\n\n\tpublic onUserAccountUpdate(\n\t\tcallback: (userAccount: EnhancedAccountData) => void\n\t) {\n\t\treturn this._userAccountCache.onUpdate(callback);\n\t}\n\n\tpublic onOrderbookUpdate(\n\t\tcallback: (orderbook: L2WithOracleAndMarketData) => void\n\t) {\n\t\treturn this._orderbookManager.onUpdate(callback);\n\t}\n\n\t/**\n\t * Updates the authority (wallet) for the drift client and reestablishes subscriptions.\n\t *\n\t * @param wallet - The new wallet to use as authority\n\t * @param activeSubAccountId - Optional subaccount ID to switch to after wallet update\n\t */\n\tpublic async updateAuthority(wallet: IWallet, activeSubAccountId?: number) {\n\t\treturn this.subscriptionManager.updateAuthority(wallet, activeSubAccountId);\n\t}\n\n\t/**\n\t * Updates the selected trade market and optimizes subscription polling.\n\t *\n\t * @param newSelectedTradeMarket - The new market to prioritize for trading\n\t */\n\tpublic updateSelectedTradeMarket(newSelectedTradeMarket: MarketId | null) {\n\t\tconst isNewSelectedTradeMarket =\n\t\t\t!!newSelectedTradeMarket !== !!this.selectedTradeMarket || // only one of them is null\n\t\t\t(!!newSelectedTradeMarket && // or both are not null and are different\n\t\t\t\t!!this.selectedTradeMarket &&\n\t\t\t\t!this.selectedTradeMarket.equals(newSelectedTradeMarket));\n\n\t\tif (!isNewSelectedTradeMarket) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Update the local reference\n\t\tthis.selectedTradeMarket = newSelectedTradeMarket;\n\n\t\t// Delegate to subscription manager for all polling optimization\n\t\tthis.subscriptionManager.updateSelectedTradeMarket(newSelectedTradeMarket);\n\t}\n\n\t/**\n\t * Creates a new user account and deposits initial collateral.\n\t *\n\t * @param params - Parameters for creating user and depositing collateral\n\t * @returns Promise resolving to transaction signature and user account public key\n\t */\n\tpublic async createUserAndDeposit(\n\t\tparams: CreateUserAndDepositParams\n\t): Promise<{\n\t\ttxSig: TransactionSignature;\n\t\tuser: User;\n\t}> {\n\t\treturn this.driftOperations.createUserAndDeposit(params);\n\t}\n\n\t/**\n\t * Creates a RevenueShareEscrow account for the user.\n\t *\n\t * @param params - Parameters for creating a RevenueShareEscrow account\n\t * @returns Promise resolving to the transaction signature of the creation\n\t */\n\tpublic async createRevenueShareEscrow(\n\t\tparams: CreateRevenueShareEscrowParams\n\t): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.createRevenueShareEscrow(params);\n\t}\n\n\t/**\n\t * Deposits collateral into a user's spot market position.\n\t *\n\t * @param params - Parameters for the deposit operation\n\t * @returns Promise resolving to the transaction signature\n\t */\n\tpublic async deposit(params: DepositParams): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.deposit(params);\n\t}\n\n\t/**\n\t * Withdraws collateral from a user's spot market position.\n\t *\n\t * @param params - Parameters for the withdrawal operation\n\t * @returns Promise resolving to the transaction signature\n\t */\n\tpublic async withdraw(params: WithdrawParams): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.withdraw(params);\n\t}\n\n\t/**\n\t * Opens a perpetual market order.\n\t *\n\t * @param params - Parameters for the perp order\n\t * @returns Promise resolving to the transaction signature\n\t */\n\t@enforceGeoBlock\n\tpublic async openPerpOrder(\n\t\tparams: PerpOrderParams\n\t): Promise<TransactionSignature | void> {\n\t\treturn this.driftOperations.openPerpOrder(params);\n\t}\n\n\t/**\n\t * Executes a swap between two spot markets.\n\t *\n\t * @param params - Parameters for the swap operation\n\t * @returns Promise resolving to the transaction signature\n\t */\n\tpublic async swap(params: SwapParams): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.swap(params);\n\t}\n\n\tpublic async getSwapQuote(\n\t\tparams: Omit<SwapParams, 'jupiterQuote'> & {\n\t\t\tslippageBps?: number;\n\t\t\tswapMode?: SwapMode;\n\t\t\tonlyDirectRoutes?: boolean;\n\t\t}\n\t): Promise<QuoteResponse> {\n\t\treturn this.driftOperations.getSwapQuote(params);\n\t}\n\n\t/**\n\t * Settles profit and loss for a perpetual position.\n\t *\n\t * @param params - Parameters for the settle PnL operation\n\t * @returns Promise resolving to the transaction signature\n\t */\n\tpublic async settleAccountPnl(\n\t\tparams: SettleAccountPnlParams\n\t): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.settleAccountPnl(params);\n\t}\n\n\t/**\n\t * Deletes a user account from the Drift protocol.\n\t *\n\t * @param subAccountId - The ID of the sub-account to delete\n\t * @returns Promise resolving to the transaction signature of the deletion\n\t */\n\tpublic async deleteUser(subAccountId: number): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.deleteUser(subAccountId);\n\t}\n\n\t/**\n\t * Cancels a list of open orders.\n\t *\n\t * @param params - See `CancelOrdersParams`\n\t * @returns Promise resolving to the transaction signature of the cancellation\n\t */\n\tpublic async cancelOrders(\n\t\tparams: CancelOrdersParams\n\t): Promise<TransactionSignature> {\n\t\treturn this.driftOperations.cancelOrders(params);\n\t}\n\n\tpublic getTxParams(overrides?: Partial<TxParams>): TxParams {\n\t\treturn this.driftOperations.getTxParams(overrides);\n\t}\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BN, DriftClientConfig, DriftEnv, MarketType, OrderTriggerCondition, PositionDirection, PublicKey, QuoteResponse, SwapMode, TxParams, User } from '@drift-labs/sdk';
|
|
1
|
+
import { BN, DriftClient, DriftClientConfig, DriftEnv, MarketType, OrderTriggerCondition, PositionDirection, PriorityFeeSubscriberConfig, PublicKey, QuoteResponse, SwapMode, TxParams, User } from '@drift-labs/sdk';
|
|
2
2
|
import { Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
3
3
|
import { CentralServerGetOpenPerpMarketOrderTxnParams, CentralServerGetOpenPerpNonMarketOrderTxnParams } from './types';
|
|
4
4
|
import { CentralServerDriftMarkets } from './markets';
|
|
@@ -8,13 +8,17 @@ import { CentralServerDriftMarkets } from './markets';
|
|
|
8
8
|
* This is useful for an API server that fetches user data on-demand, and return transaction messages specific to a given user
|
|
9
9
|
*/
|
|
10
10
|
export declare class CentralServerDrift {
|
|
11
|
-
private
|
|
11
|
+
private _driftClient;
|
|
12
12
|
private _perpMarketConfigs;
|
|
13
13
|
private _spotMarketConfigs;
|
|
14
14
|
/**
|
|
15
15
|
* The public endpoints that can be used to retrieve Drift data / interact with the Drift program.
|
|
16
16
|
*/
|
|
17
17
|
private _driftEndpoints;
|
|
18
|
+
/**
|
|
19
|
+
* Handles priority fee tracking and calculation for optimized transaction costs.
|
|
20
|
+
*/
|
|
21
|
+
private priorityFeeSubscriber;
|
|
18
22
|
readonly markets: CentralServerDriftMarkets;
|
|
19
23
|
/**
|
|
20
24
|
* @param solanaRpcEndpoint - The Solana RPC endpoint to use for reading RPC data.
|
|
@@ -28,7 +32,9 @@ export declare class CentralServerDrift {
|
|
|
28
32
|
supportedPerpMarkets: number[];
|
|
29
33
|
supportedSpotMarkets: number[];
|
|
30
34
|
additionalDriftClientConfig?: Partial<Omit<DriftClientConfig, 'env'>>;
|
|
35
|
+
priorityFeeSubscriberConfig?: Partial<PriorityFeeSubscriberConfig>;
|
|
31
36
|
});
|
|
37
|
+
get driftClient(): DriftClient;
|
|
32
38
|
subscribe(): Promise<void>;
|
|
33
39
|
unsubscribe(): Promise<void>;
|
|
34
40
|
/**
|
|
@@ -52,6 +58,11 @@ export declare class CentralServerDrift {
|
|
|
52
58
|
* @param userAccountPublicKey - The user account public key
|
|
53
59
|
*/
|
|
54
60
|
getUser(userAccountPublicKey: PublicKey): Promise<User>;
|
|
61
|
+
/**
|
|
62
|
+
* Gets transaction parameters with dynamic priority fees.
|
|
63
|
+
* Falls back to default if priority fee function is not available.
|
|
64
|
+
*/
|
|
65
|
+
getTxParams(overrides?: Partial<TxParams>): TxParams;
|
|
55
66
|
getCreateAndDepositTxn(authority: PublicKey, amount: BN, spotMarketIndex: number, options?: {
|
|
56
67
|
referrerName?: string;
|
|
57
68
|
accountName?: string;
|
|
@@ -66,6 +77,11 @@ export declare class CentralServerDrift {
|
|
|
66
77
|
}>;
|
|
67
78
|
getDepositTxn(userAccountPublicKey: PublicKey, amount: BN, spotMarketIndex: number, options?: {
|
|
68
79
|
txParams?: TxParams;
|
|
80
|
+
/**
|
|
81
|
+
* Optional external wallet to deposit from. If provided, the deposit will be made
|
|
82
|
+
* from this wallet instead of the user's authority wallet.
|
|
83
|
+
*/
|
|
84
|
+
externalWallet?: PublicKey;
|
|
69
85
|
}): Promise<VersionedTransaction | Transaction>;
|
|
70
86
|
getDeleteUserTxn(userAccountPublicKey: PublicKey, options?: {
|
|
71
87
|
txParams?: TxParams;
|
|
@@ -106,6 +122,7 @@ export declare class CentralServerDrift {
|
|
|
106
122
|
bitFlags?: number;
|
|
107
123
|
maxTs?: BN;
|
|
108
124
|
policy?: number;
|
|
125
|
+
positionMaxLeverage?: number;
|
|
109
126
|
}): Promise<VersionedTransaction | Transaction>;
|
|
110
127
|
/**
|
|
111
128
|
* Create a transaction to cancel specific orders by their IDs
|