import { type HasQuery, type HasResolver, type HasSql, internalData, internalQuery } from './Internal.js'; import type { Deliver, QueryMeta } from './MetaData.js'; import type { PreparedStatement, Resolver } from './Resolver.js'; import type { Sql } from './Sql.js'; export declare class QueryData { resolver?: Resolver; first?: boolean; } type Exec = Function; declare class Executable implements PromiseLike { #private; private brand; constructor(exec: Exec); [Symbol.iterator](): Generator, Result, unknown>; run(): Deliver; then(onfulfilled?: ((value: Result) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike) | undefined | null): Promise; catch(onrejected?: ((reason: unknown) => TResult | PromiseLike) | undefined | null): Promise; finally(onfinally?: (() => void) | undefined | null): Promise; } export declare class BatchQuery extends Executable, Meta> { constructor(queryResolver: Resolver, queries: Array); } export declare abstract class SingleQuery extends Executable { #private; readonly [internalData]: QueryData; abstract [internalQuery]: Sql; constructor(data: QueryData); all>(this: SingleQuery, db?: HasResolver): Deliver; get>(this: SingleQuery, db?: HasResolver): Deliver; get(db?: HasResolver): Deliver; run(db?: HasResolver): Deliver; prepare>(name?: string): PreparedQuery; toSQL(db?: HasResolver): { sql: string; params: Array; }; } export interface PreparedQuery, Meta extends QueryMeta> extends PreparedStatement { all>(this: PreparedQuery, inputs?: Inputs): Deliver; get(inputs?: Inputs): Deliver; get>(this: PreparedQuery, inputs?: Inputs): Deliver; run(inputs?: Inputs): Deliver; execute(inputs?: Inputs): Promise; free(): void; } export {};