///
///
import RingCentral from '@rc-ex/core';
import SdkExtension from '@rc-ex/core/lib/SdkExtension';
import WS from 'isomorphic-ws';
import { EventEmitter } from 'events';
import RateLimitExtension from '@rc-ex/rate-limit';
import { SubscriptionInfo } from '@rc-ex/core/lib/definitions';
import { request } from './rest';
import { WsToken, ConnectionDetails, WebSocketOptions, Wsc } from './types';
import Subscription from './subscription';
export declare enum Events {
autoRecoverSuccess = "autoRecoverSuccess",
autoRecoverFailed = "autoRecoverFailed",
autoRecoverError = "autoRecoverError",
newWebSocketObject = "newWebSocketObject",
newWsc = "newWsc"
}
declare class WebSocketExtension extends SdkExtension {
eventEmitter: EventEmitter;
options: WebSocketOptions;
rc: RingCentral;
wsToken: WsToken;
ws: WS;
connectionDetails: ConnectionDetails;
wsc: Wsc;
subscriptions: Subscription[];
intervalHandle?: NodeJS.Timeout;
recoverTimestamp?: number;
pingServerHandle?: NodeJS.Timeout;
request: typeof request;
rateLimitExtension: RateLimitExtension;
constructor(options?: WebSocketOptions);
get enabled(): boolean;
set enabled(value: boolean);
install(rc: RingCentral): Promise;
recover(): Promise;
pingServer(): Promise;
connect(recoverSession?: boolean): Promise;
revoke(): Promise;
subscribe(eventFilters: string[], callback: (event: {}) => void, cache?: SubscriptionInfo | undefined): Promise;
}
export default WebSocketExtension;