import type { UseWebSocketOptions } from '@vueuse/core';
import type { Overrides, RpcMethodsWS, RpcParamsWS, RpcRequestWS } from '#surrealdb/types/index';
import type { MaybeRefOrGetter } from '#imports';
type MROGParam<T, M extends keyof RpcMethodsWS<T>, N extends number> = MaybeRefOrGetter<RpcParamsWS<T, M>[N]>;
export declare function useSurrealWS(options?: UseWebSocketOptions & {
    database?: Overrides['database'];
    auth?: string | null | false;
}): {
    authenticate: (token: MROGParam<any, "authenticate", 0>) => boolean;
    close: {
        (code?: number, reason?: string): void;
        (code?: number, reason?: string): void;
    };
    create: <T = any>(thing: MROGParam<T, "create", 0>, data?: MROGParam<T, "create", 1>) => boolean;
    _data: import("vue").Ref<string | null, string | null>;
    data: import("vue").ComputedRef<any>;
    delete: (thing: MROGParam<any, "delete", 0>) => boolean;
    info: <T = any>() => boolean;
    insert: <T = any>(thing: MROGParam<T, "insert", 0>, data?: MROGParam<T, "insert", 1>) => boolean;
    invalidate: () => boolean;
    kill: (thing: MROGParam<any, "kill", 0>) => boolean;
    let: <T = any>(name: MROGParam<T, "let", 0>, value: MROGParam<T, "let", 1>) => boolean;
    live: <T = any>(table: MROGParam<T, "live", 0>, diff?: MROGParam<T, "live", 1>) => boolean;
    merge: <T = any>(thing: MROGParam<T, "merge", 0>, data: MROGParam<T, "merge", 1>) => boolean;
    open: import("@vueuse/core").Fn;
    patch: <T = any>(thing: MROGParam<T, "patch", 0>, patches: MROGParam<T, "patch", 1>, diff?: MROGParam<T, "patch", 2>) => boolean;
    query: <T = any>(sql: MROGParam<T, "query", 0>, vars?: MROGParam<T, "query", 1>) => boolean;
    remove: (thing: MROGParam<any, "delete", 0>) => boolean;
    rpc: <T = any>(req: RpcRequestWS<T>) => boolean;
    select: <T = any>(thing: MROGParam<T, "select", 0>) => boolean;
    _send: (data: string | ArrayBuffer | Blob, useBuffer?: boolean) => boolean;
    send: (data: Record<string, any>, useBuffer?: boolean) => boolean;
    set: <T = any>(name: MROGParam<T, "let", 0>, value: MROGParam<T, "let", 1>) => boolean;
    signin: (auth: MROGParam<any, "signin", 0>) => boolean;
    signup: (auth: MROGParam<any, "signup", 0>) => boolean;
    sql: <T = any>(sql: MROGParam<T, "query", 0>, vars?: MROGParam<T, "query", 1>) => boolean;
    status: import("vue").Ref<import("@vueuse/core").WebSocketStatus, import("@vueuse/core").WebSocketStatus>;
    unset: (name: MROGParam<any, "unset", 0>) => boolean;
    update: <T = any>(thing: MROGParam<T, "update", 0>, data?: MROGParam<T, "update", 1>) => boolean;
    use: (NS?: MROGParam<any, "use", 0>, DB?: MROGParam<any, "use", 1>) => boolean;
    ws: import("vue").Ref<WebSocket | undefined, WebSocket | undefined>;
};
export {};
