import type { PublicRuntimeConfig } from '@nuxt/schema';
import type { AsyncData } from 'nuxt/app';
import type { FetchError } from 'ofetch';
import type { KeysOf, PickFrom, Overrides, QueryResponse, RpcMethods, RpcParams, RpcResponseError, UseSurrealRpcOptions } from '#surrealdb/types/index';
import type { MaybeRefOrGetter } from '#imports';
type MROGParam<T, M extends keyof RpcMethods<T>, N extends number> = MaybeRefOrGetter<RpcParams<T, M>[N]>;
export declare function useSurrealDB(overrides?: Overrides): {
    $authenticate: (token: MROGParam<any, "authenticate", 0>, options?: Overrides) => Promise<void>;
    authenticate: (token: MROGParam<any, "authenticate", 0>, options?: UseSurrealRpcOptions<any>) => Promise<AsyncData<void, RpcResponseError | undefined>>;
    $create: <T = any>(thing: MROGParam<T, "create", 0>, data?: MROGParam<T, "create", 1>, options?: Overrides) => Promise<T>;
    create: <ResT, DataT = ResT, DefaultT = undefined>(thing: MROGParam<ResT, "create", 0>, data?: MROGParam<ResT, "create", 1>, options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $delete: <T = any>(thing: MROGParam<any, "delete", 0>, options?: Overrides) => Promise<T>;
    delete: <ResT, DataT = ResT, DefaultT = undefined>(thing: MROGParam<any, "delete", 0>, options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $info: <T = any>(options?: Overrides) => Promise<T>;
    info: <ResT, DataT = ResT, DefaultT = undefined>(options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $insert: <T = any>(thing: MROGParam<T, "insert", 0>, data?: MROGParam<T, "insert", 1>, options?: Overrides) => Promise<T>;
    insert: <ResT, DataT = ResT, DefaultT = undefined>(thing: MROGParam<ResT, "insert", 0>, data?: MROGParam<ResT, "insert", 1>, options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $invalidate: (options?: Overrides) => Promise<void>;
    invalidate: (options?: UseSurrealRpcOptions<any>) => Promise<AsyncData<void, RpcResponseError | undefined>>;
    $merge: <T = any>(thing: MROGParam<T, "merge", 0>, data: MROGParam<T, "merge", 1>, options?: Overrides) => Promise<T>;
    merge: <ResT, DataT = ResT, DefaultT = undefined>(thing: MROGParam<ResT, "merge", 0>, data: MROGParam<ResT, "merge", 1>, options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $patch: <T = any>(thing: MROGParam<T, "patch", 0>, patches: MROGParam<T, "patch", 1>, diff?: MROGParam<T, "patch", 2>, options?: Overrides) => Promise<T>;
    patch: <T = any>(thing: MROGParam<T, "patch", 0>, patches: MROGParam<T, "patch", 1>, diff?: MROGParam<T, "patch", 2>, options?: UseSurrealRpcOptions<T>) => Promise<AsyncData<undefined | PickFrom<T, KeysOf<T>>, RpcResponseError | undefined>>;
    $query: <T = any, R = QueryResponse<T>>(sql: MROGParam<any, "query", 0>, vars?: MROGParam<any, "query", 1>, options?: Overrides) => Promise<R>;
    query: <ResT extends QueryResponse<any[]> = import("#surrealdb/types/index").RpcResponse<any>[], DataT = ResT, DefaultT = undefined>(sql: MROGParam<any, "query", 0>, vars?: MROGParam<any, "query", 1>, options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $remove: <T = any>(thing: MROGParam<any, "delete", 0>, options?: Overrides) => Promise<T>;
    remove: <ResT, DataT = ResT, DefaultT = undefined>(thing: MROGParam<any, "delete", 0>, options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $select: <T = any>(thing: MROGParam<T, "select", 0>, options?: Overrides) => Promise<T>;
    select: <ResT, DataT = ResT, DefaultT = undefined>(thing: MROGParam<ResT, "select", 0>, options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $signin: (auth: MROGParam<any, "signin", 0>, options?: {
        database?: keyof PublicRuntimeConfig["surrealdb"]["databases"] | {
            host?: string;
        };
    }) => Promise<string>;
    signin: (auth: MROGParam<any, "signin", 0>, options?: UseSurrealRpcOptions<string>) => Promise<AsyncData<string | undefined, RpcResponseError | undefined>>;
    $signup: {
        (credentials: MROGParam<any, "signup", 0> & {
            SC: string;
            AC?: never;
        }): Promise<string>;
        (credentials: MROGParam<any, "signup", 0> & {
            AC: string;
            SC?: never;
        }): Promise<string>;
    };
    signup: (auth: MROGParam<any, "signup", 0>, options?: Omit<UseSurrealRpcOptions<string>, "database"> & {
        database?: keyof PublicRuntimeConfig["surrealdb"]["databases"] | {
            host?: string;
        };
    }) => Promise<AsyncData<string | undefined, RpcResponseError | undefined>>;
    $sql: <T = any, R = QueryResponse<T>>(sql: MROGParam<any, "query", 0>, vars?: MROGParam<any, "query", 1>, options?: Overrides) => Promise<R>;
    sql: <ResT extends QueryResponse<any[]> = import("#surrealdb/types/index").RpcResponse<any>[], DataT = ResT, DefaultT = undefined>(sql: MROGParam<any, "query", 0>, vars?: MROGParam<any, "query", 1>, options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $update: <T = any>(thing: MROGParam<T, "update", 0>, data?: MROGParam<T, "update", 1>, options?: Overrides) => Promise<T>;
    update: <ResT, DataT = ResT, DefaultT = undefined>(thing: MROGParam<ResT, "update", 0>, data?: MROGParam<ResT, "update", 1>, options?: UseSurrealRpcOptions<ResT, DataT, DefaultT>) => Promise<AsyncData<DefaultT | PickFrom<DataT, KeysOf<DataT>>, RpcResponseError | undefined>>;
    $version: (options?: Overrides) => Promise<string>;
    version: (options?: Overrides) => Promise<AsyncData<string | undefined, FetchError<any> | undefined>>;
    $surrealFetch: unknown;
    $surrealRPC: unknown;
};
export {};
