import { TLSSocket } from 'tls';
import { Interface } from 'readline';
import { MarketSubscriptionMessage, OrderSubscriptionMessage, CurrencyRate, MarketChangeCallback, OrderChangeCallback, RawDataCallback, OrderFilter } from './betfair-exchange-stream-api-types';
import { StreamDecoderState } from './betfair-stream-decoder';
import { HeartbeatState } from './heartbeat';
export interface StreamApiState {
    tlsSocket?: TLSSocket;
    readline?: Interface;
    authenticationStatus: boolean;
    authToken: string;
    appKey: string;
    connectionId?: string;
    pendingPackets: {
        [key: string]: string;
    };
    streamDecoder: StreamDecoderState;
    heartbeat: HeartbeatState;
    segmentationEnabled: boolean;
    conflateMs: number;
    heartbeatMs: number;
    audCurrencyRate: CurrencyRate;
    lastMarketSubscription?: MarketSubscriptionMessage;
    lastOrderSubscription?: OrderSubscriptionMessage;
    lastMarkets: string[];
    marketChangeCallback: MarketChangeCallback;
    orderChangeCallback?: OrderChangeCallback;
    rawDataCallback?: RawDataCallback;
}
/**
 * Creates initial stream API state
 */
export declare const createStreamApiState: (authToken: string, appKey: string, segmentationEnabled: boolean, conflateMs: number, heartbeatMs: number, audCurrencyRate: CurrencyRate, marketChangeCallback: MarketChangeCallback, orderChangeCallback?: OrderChangeCallback, rawDataCallback?: RawDataCallback) => StreamApiState;
/**
 * Opens the TLS stream connection
 */
export declare const openStream: (state: StreamApiState) => Promise<StreamApiState>;
/**
 * Closes the stream connection
 */
export declare const closeStream: (state: StreamApiState) => StreamApiState;
/**
 * Authenticates the stream connection
 */
export declare const authenticateStream: (state: StreamApiState) => StreamApiState;
/**
 * Subscribes to market updates
 */
export declare const subscribeToMarkets: (state: StreamApiState, marketIds: string[]) => StreamApiState;
/**
 * Subscribes to order updates
 */
export declare const subscribeToOrders: (state: StreamApiState, orderFilter?: OrderFilter) => StreamApiState;
/**
 * Gets the current market cache
 */
export declare const getStreamCache: (state: StreamApiState) => {
    [key: string]: any;
};
/**
 * Gets the current order cache
 */
export declare const getOrderStreamCache: (state: StreamApiState) => {
    [key: string]: any;
};
/**
 * Updates authentication credentials
 */
export declare const setAuthCredentials: (state: StreamApiState, appKey: string, authToken: string) => StreamApiState;
/**
 * Restarts the stream connection
 */
export declare const restartStream: (state: StreamApiState) => Promise<StreamApiState>;
export declare const createAndConnectStream: (authToken: string, appKey: string, segmentationEnabled: boolean, conflateMs: number, heartbeatMs: number, audCurrencyRate: CurrencyRate, marketChangeCallback: MarketChangeCallback, orderChangeCallback?: OrderChangeCallback, rawDataCallback?: RawDataCallback) => Promise<StreamApiState>;
/**
 * Creates and connects a stream specifically optimized for recording with more lenient heartbeat
 */
export declare const createAndConnectRecordingStream: (authToken: string, appKey: string, segmentationEnabled: boolean, conflateMs: number, audCurrencyRate: CurrencyRate, marketChangeCallback: MarketChangeCallback, orderChangeCallback?: OrderChangeCallback, rawDataCallback?: RawDataCallback) => Promise<StreamApiState>;
//# sourceMappingURL=betfair-exchange-stream-api.d.ts.map