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 InlineRpcOptions } from "./rpc";
type Override<T, U> = Simplify<Omit<T, keyof U> & U>;
export type InlineQueryOptions = InlineRpcOptions;
/**
 * @experimental
 */
declare function query<TResults extends readonly unknown[] = unknown[]>(endpoint: string | URL, surql: string, vars?: {
    readonly [p: string]: unknown;
} | undefined, options?: InlineQueryOptions | undefined): Promise<TResults>;
/**
 * @experimental
 */
declare function query<TType>(endpoint: string | URL, surql: Override<PreparedQueryLike, {
    readonly slots: readonly (never | SlotLike<string, false>)[];
    readonly __type: TType;
}>, vars?: {
    readonly [p: string]: unknown;
} | undefined, options?: InlineQueryOptions | undefined): Promise<TType>;
/**
 * @experimental
 */
declare function query<TSlot extends SlotLike, TType>(endpoint: string | URL, surql: Override<PreparedQueryLike, {
    readonly slots: readonly TSlot[];
    readonly __type: TType;
}>, vars: Simplify<InferSlotVars<TSlot> & {
    readonly [p: string]: unknown;
}>, options?: InlineQueryOptions | undefined): Promise<TType>;
export default query;
//# sourceMappingURL=query.d.ts.map