@drift-labs/common
Version:
Common functions for Drift
43 lines (42 loc) • 1.78 kB
TypeScript
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 {};