import { Ref } from 'vue';
export declare enum ReadyState {
    Connecting = 0,
    Open = 1,
    Closing = 2,
    Closed = 3
}
export interface UseWebSocketOptions {
    reconnectLimit?: number;
    reconnectInterval?: number;
    manual?: Ref<boolean> | boolean;
    onOpen?: (event: WebSocketEventMap['open'], instance: WebSocket) => void;
    onClose?: (event: WebSocketEventMap['close'], instance: WebSocket) => void;
    onMessage?: (message: WebSocketEventMap['message'], instance: WebSocket) => void;
    onError?: (event: WebSocketEventMap['error'], instance: WebSocket) => void;
    protocols?: string | string[];
}
export interface UseWebSocketResult {
    latestMessage: Readonly<Ref<WebSocketEventMap['message'] | undefined>>;
    sendMessage?: WebSocket['send'];
    disconnect?: () => void;
    connect?: () => void;
    readyState: Readonly<Ref<ReadyState>>;
    webSocketIns?: WebSocket;
}
/**
 * @param socketUrl socketUrl地址
 * @param options 配置
 * @return  readyState(Connecting = 0,Open = 1,Closing = 2,Closed = 3)
 */
export default function useWebSocket(socketUrl: Ref<string> | string, options?: UseWebSocketOptions): UseWebSocketResult;
