import type { Database, DatabaseOpts } from '@tursodatabase/sync';
import type { Executor } from '../executor';
/** Async executor backed by @tursodatabase/sync. */
export declare class TursoSyncExecutor implements Executor {
    #private;
    constructor(db: Database);
    all(sql: string, params: unknown[]): Promise<unknown[]>;
    get(sql: string, params: unknown[]): Promise<unknown>;
    run(sql: string, params: unknown[]): Promise<{
        rowsAffected: number;
    }>;
    transaction(fn: () => void | Promise<void>): Promise<void>;
    close(): void;
}
export interface TursoSyncOptions extends Omit<DatabaseOpts, 'path' | 'url' | 'authToken'> {
    /** Local path for the synced database files (maps to `path` in `@tursodatabase/sync`). */
    url: string;
    /** Remote Turso database URL (maps to `url` in `@tursodatabase/sync`). */
    syncUrl?: string;
    /** Auth token for the remote database. */
    authToken?: DatabaseOpts['authToken'];
}
/**
 * Create a flint database client using @tursodatabase/sync.
 *
 * Connection is established lazily on first query.
 *
 * @example
 * import { flint } from 'flint-orm/turso-sync'
 * const db = flint({ url: './local.db', syncUrl: 'libsql://db.turso.io', authToken: '...' })
 */
export declare function flint(options: TursoSyncOptions): {
    selectFrom: <T extends import("..").AnyTable>(table: T) => import("..").SelectBuilder<T>;
    insert: <T extends import("..").AnyTable>(table: T) => import("..").InsertStage1<T>;
    update: <T extends import("..").AnyTable>(table: T) => import("..").UpdateStage1<T>;
    delete: <T extends import("..").AnyTable>(table: T) => import("../query/builder").DeleteBuilder<T, false, keyof import("..").InferRow<T>>;
    leftJoin: <Parent extends import("..").AnyTable>(parent: Parent) => import("../flint").JoinSelectStage1<Parent>;
    innerJoin: <Parent extends import("..").AnyTable>(parent: Parent) => import("../flint").JoinSelectStage1<Parent>;
    batch: (queries: import("..").Executable[]) => Promise<void>;
    count: <T extends import("..").AnyTable>(table: T, condition?: import("..").Condition) => Promise<number>;
    countColumn: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number>;
    sum: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number | null>;
    avg: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number | null>;
    min: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number | null>;
    max: <T extends import("..").AnyTable, C extends import("..").ColumnDef<any, any>>(table: T, column: C, condition?: import("..").Condition) => Promise<number | null>;
    $run(query: string, ...params: unknown[]): Promise<{
        rowsAffected: number;
    }>;
    $executor: Executor;
};
