UNPKG

@drift-labs/common

Version:

Common functions for Drift

43 lines (42 loc) 1.78 kB
import { CandleResolution } from '@drift-labs/sdk'; import { MarketSymbol, Opaque } from '../types'; import { Subject } from 'rxjs'; import { JsonCandle } from 'src/types'; import { JsonTrade } from 'src/types'; import { UIEnv } from '../types'; type SubscriptionType = 'candles' | 'trades'; interface ISubscriptionConfig<T extends SubscriptionType> { readonly type: T; readonly env: UIEnv; marketSymbol: MarketSymbol; } type CandleSubscriptionConfig = ISubscriptionConfig<'candles'> & { resolution: CandleResolution; }; type TradeSubscriptionConfig = ISubscriptionConfig<'trades'>; type SubscriberId = Opaque<string, 'SubscriberId'>; declare abstract class SubscriberSubscription<T> { readonly id: SubscriberId; private readonly _subject; get observable(): import("rxjs").Observable<T>; constructor(id: SubscriberId, subject: Subject<T>); } export declare class CandleSubscriberSubscription extends SubscriberSubscription<JsonCandle> { constructor(id: SubscriberId, subject: Subject<JsonCandle>); } export declare class TradeSubscriberSubscription extends SubscriberSubscription<JsonTrade[]> { constructor(id: SubscriberId, subject: Subject<JsonTrade[]>); } /** * This class will handle subscribing to market data from the Drift Data API's websocket. See https://data.api.drift.trade/playground for more information about the API. * * It currently supports subscribing to candles and to trades. */ export declare class MarketDataFeed { private static subscriptionManager; constructor(); static subscribe(config: CandleSubscriptionConfig): CandleSubscriberSubscription; static subscribe(config: TradeSubscriptionConfig): TradeSubscriberSubscription; static unsubscribe(subscriberId: SubscriberId): void; } export {};