type SubscriptionRequest<T = any> = {
    method: string;
    unsubscribe: string;
    params: any[];
    onMessage: (event: T) => void;
    signal?: AbortSignal;
};
export type WebsocketClientOptions = {
    WebSocketConstructor?: typeof WebSocket;
    callTimeout?: number;
    reconnectTimeout?: number;
    maxReconnects?: number;
};
export declare const DEFAULT_CLIENT_OPTIONS: {
    WebSocketConstructor: typeof WebSocket;
    callTimeout: number;
    reconnectTimeout: number;
    maxReconnects: number;
};
export declare class WebsocketClient {
    #private;
    endpoint: string;
    options: Required<WebsocketClientOptions>;
    constructor(endpoint: string, options?: WebsocketClientOptions);
    makeRequest<T>(method: string, params: any[], signal?: AbortSignal): Promise<T>;
    subscribe<T>(input: SubscriptionRequest<T>): Promise<() => Promise<unknown>>;
}
export {};
