import type { ExtractionOptions, Table } from '@uwdata/flechette';
import type { ArrowQueryRequest, Connector, ExecQueryRequest, JSONQueryRequest } from './Connector.js';
import * as duckdb from '@duckdb/duckdb-wasm';
interface DuckDBWASMOptions {
    /** Flag to enable logging. */
    log?: boolean;
}
interface DuckDBWASMConnectorOptions extends DuckDBWASMOptions {
    /** Arrow IPC extraction options. */
    ipc?: ExtractionOptions;
    /** Optional pre-existing DuckDB-WASM instance. */
    duckdb?: duckdb.AsyncDuckDB;
    /** Optional pre-existing DuckDB-WASM connection. */
    connection?: duckdb.AsyncDuckDBConnection;
}
/**
 * Connect to a DuckDB-WASM instance.
 * @param options Connector options.
 * @returns A connector instance.
 */
export declare function wasmConnector(options?: DuckDBWASMConnectorOptions): DuckDBWASMConnector;
/**
 * DuckDB-WASM connector.
 */
export declare class DuckDBWASMConnector implements Connector {
    private _ipc?;
    _options: DuckDBWASMOptions;
    _db?: duckdb.AsyncDuckDB;
    _con?: duckdb.AsyncDuckDBConnection;
    _loadPromise?: Promise<unknown>;
    /**
     * Create a new DuckDB-WASM connector instance.
     * @param options Connector options.
     */
    constructor(options?: DuckDBWASMConnectorOptions);
    /**
     * Get the backing DuckDB-WASM instance.
     * Lazily initializes DuckDB-WASM if not already loaded.
     * @returns The DuckDB-WASM instance.
     */
    getDuckDB(): Promise<duckdb.AsyncDuckDB>;
    /**
     * Get the backing DuckDB-WASM connection.
     * Lazily initializes DuckDB-WASM if not already loaded.
     * @returns The DuckDB-WASM connection.
     */
    getConnection(): Promise<duckdb.AsyncDuckDBConnection>;
    query(query: ArrowQueryRequest): Promise<Table>;
    query(query: ExecQueryRequest): Promise<void>;
    query(query: JSONQueryRequest): Promise<Record<string, unknown>[]>;
}
export {};
//# sourceMappingURL=wasm.d.ts.map