import { Writable } from 'stream';
import { Filter } from '../types.ts';
import { MultiConnectionRealTimeFeedBase, PoolingClientBase, RealTimeFeedBase } from './realtimefeed.ts';
declare const BINANCE_FUTURES_PUBLIC_STREAM_PATH = "/public/stream";
declare const BINANCE_FUTURES_MARKET_STREAM_PATH = "/market/stream";
type BinanceFuturesStreamPath = typeof BINANCE_FUTURES_PUBLIC_STREAM_PATH | typeof BINANCE_FUTURES_MARKET_STREAM_PATH;
declare abstract class BinanceRealTimeFeedBase extends MultiConnectionRealTimeFeedBase {
    protected abstract wssURL: string;
    protected abstract httpURL: string;
    protected abstract suffixes: {
        [key: string]: string;
    };
    protected abstract depthRequestRequestWeight: number;
    protected _getRealTimeFeeds(exchange: string, filters: Filter<string>[], timeoutIntervalMS?: number, onError?: (error: Error) => void): Generator<BinanceSingleConnectionRealTimeFeed | BinanceFuturesOpenInterestClient, void, unknown>;
}
declare class BinanceFuturesOpenInterestClient extends PoolingClientBase {
    private readonly _exchange;
    private readonly _httpURL;
    private readonly _instruments;
    private readonly _minPollingIntervalMS;
    private readonly _minAvailableWeightBuffer;
    private readonly _maxPollingIntervalMS;
    private _currentPollingIntervalMS;
    private _requestWeightLimit;
    private _usedWeight;
    constructor(_exchange: string, _httpURL: string, _instruments: string[], onError?: (error: Error) => void);
    protected getPoolingDelayMS(): number;
    protected poolDataToStream(outputStream: Writable): Promise<void>;
    private _waitForAvailableWeight;
    private _initializeRateLimitInfo;
    private _getBatchSize;
    private _notifyError;
    private _updateUsedWeight;
}
declare class BinanceSingleConnectionRealTimeFeed extends RealTimeFeedBase {
    protected wssURL: string;
    private readonly _httpURL;
    private readonly _suffixes;
    private readonly _depthRequestRequestWeight;
    constructor(exchange: string, filters: Filter<string>[], wssURL: string, _httpURL: string, _suffixes: {
        [key: string]: string;
    }, _depthRequestRequestWeight: number, timeoutIntervalMS: number | undefined, onError?: (error: Error) => void);
    protected mapToSubscribeMessages(filters: Filter<string>[]): any[];
    protected messageIsError(message: any): boolean;
    protected provideManualSnapshots(filters: Filter<string>[], shouldCancel: () => boolean): Promise<void>;
}
declare class BinanceFuturesSingleConnectionRealTimeFeed extends BinanceSingleConnectionRealTimeFeed {
    private readonly _streamPath;
    constructor(exchange: string, filters: Filter<string>[], _streamPath: BinanceFuturesStreamPath, httpURL: string, suffixes: {
        [key: string]: string;
    }, depthRequestRequestWeight: number, timeoutIntervalMS: number | undefined, onError?: (error: Error) => void);
    protected getWebSocketUrl(): Promise<string>;
}
export declare class BinanceRealTimeFeed extends BinanceRealTimeFeedBase {
    protected wssURL: string;
    protected httpURL: string;
    protected suffixes: {
        depth: string;
    };
    protected depthRequestRequestWeight: number;
}
export declare class BinanceJerseyRealTimeFeed extends BinanceRealTimeFeedBase {
    protected wssURL: string;
    protected httpURL: string;
    protected suffixes: {
        depth: string;
    };
    protected depthRequestRequestWeight: number;
}
export declare class BinanceUSRealTimeFeed extends BinanceRealTimeFeedBase {
    protected wssURL: string;
    protected httpURL: string;
    protected suffixes: {
        depth: string;
    };
    protected depthRequestRequestWeight: number;
}
export declare class BinanceFuturesRealTimeFeed extends BinanceRealTimeFeedBase {
    protected wssURL: string;
    protected httpURL: string;
    protected suffixes: {
        depth: string;
        markPrice: string;
    };
    protected depthRequestRequestWeight: number;
    protected _getRealTimeFeeds(exchange: string, filters: Filter<string>[], timeoutIntervalMS?: number, onError?: (error: Error) => void): Generator<BinanceFuturesOpenInterestClient | BinanceFuturesSingleConnectionRealTimeFeed, void, unknown>;
}
export declare class BinanceDeliveryRealTimeFeed extends BinanceRealTimeFeedBase {
    protected wssURL: string;
    protected httpURL: string;
    protected suffixes: {
        depth: string;
        markPrice: string;
        indexPrice: string;
    };
    protected depthRequestRequestWeight: number;
}
export {};
//# sourceMappingURL=binance.d.ts.map