UNPKG

tinkoff-invest-api

Version:
38 lines 2.17 kB
/** * Класс подписки в стриме market. * Позволяет ожидать результата подписки и вызывать обработчики для figi, заданных при подписке. * See: https://github.com/vitalets/tinkoff-invest-api/issues/6 */ import { Candle, CandleSubscription, InfoSubscription, LastPrice, LastPriceSubscription, MarketDataRequest, MarketDataResponse, OrderBook, OrderBookSubscription, SubscriptionAction, Trade, TradeSubscription, TradingStatus } from '../generated/marketdata.js'; type ResponseSubscription = CandleSubscription | TradeSubscription | OrderBookSubscription | LastPriceSubscription | InfoSubscription; type ResponseData = Candle | Trade | OrderBook | LastPrice | TradingStatus; type MarketSubscriptionOptions<S, D> = { buildRequest: (subscriptionAction: SubscriptionAction) => MarketDataRequest; buildResponse: (res: MarketDataResponse) => UniversalMarketResponse<S, D>; dataHandler: (data: D) => unknown; requestKeys: string[]; }; /** * Универсальный ответ (одинаковые поля для разных типов подписок) */ export type UniversalMarketResponse<S, D> = { trackingId?: string; subscriptions?: S[]; subscriptionKeys?: string[]; data?: D; dataKey?: string; }; export declare class MarketSubscription<S extends ResponseSubscription, D extends ResponseData> { protected options: MarketSubscriptionOptions<S, D>; protected waitingStatusResolve?: () => unknown; protected waitingStatusReject?: (error: Error) => unknown; constructor(options: MarketSubscriptionOptions<S, D>); getRequest(subscriptionAction: SubscriptionAction): MarketDataRequest; handler(res: MarketDataResponse): void; waitStatus(): Promise<void>; protected statusHandler({ subscriptions, subscriptionKeys, trackingId }: UniversalMarketResponse<S, D>): void; protected dataHandler({ data, dataKey }: UniversalMarketResponse<S, D>): void; protected buildSubscriptionError(errorSubscriptions: S[], trackingId?: string): Error; } export {}; //# sourceMappingURL=market-subscription.d.ts.map