import type { InferSlotVars } from "@tai-kun/surrealdb/standard-client";
import type { PreparedQueryLike, SlotLike } from "@tai-kun/surrealdb/types";
import type { Simplify } from "type-fest";
import { type InlineQueryOptions } from "./query";
type Override<T, U> = Simplify<Omit<T, keyof U> & U>;
export type CreateInlineQueryOptions = Omit<InlineQueryOptions, "signal"> & {
    readonly timeout?: number | undefined;
    readonly bindings?: {
        readonly [p: string]: unknown;
    };
};
/**
 * @experimental
 */
export default function createQuery(endpoint: string | URL, options?: CreateInlineQueryOptions | undefined): {
    <T extends readonly unknown[] = unknown[]>(surql: string, vars?: {
        readonly [p: string]: unknown;
    } | undefined, options?: InlineQueryOptions | undefined): Promise<T>;
    <T>(surql: Override<PreparedQueryLike, {
        readonly slots: readonly (never | SlotLike<string, false>)[];
        readonly __type: T;
    }>, vars?: {
        readonly [p: string]: unknown;
    } | undefined, options?: InlineQueryOptions | undefined): Promise<T>;
    <S extends SlotLike, T>(surql: Override<PreparedQueryLike, {
        readonly slots: readonly S[];
        readonly __type: T;
    }>, vars: Simplify<InferSlotVars<S> & {
        readonly [p: string]: unknown;
    }>, options?: InlineQueryOptions | undefined): Promise<T>;
};
export {};
//# sourceMappingURL=create-query.d.ts.map