import type { ExtractionOptions, Table } from '@uwdata/flechette';
import type { ArrowQueryRequest, Connector, ExecQueryRequest, JSONQueryRequest, ConnectorQueryRequest } from './Connector.js';
interface SocketOptions {
    uri?: string;
    ipc?: ExtractionOptions;
}
/**
 * Connect to a DuckDB server over a WebSocket interface.
 * @param options Connector options.
 * @param options.uri The URI for the DuckDB REST server.
 * @param options.ipc Arrow IPC extraction options.
 * @returns A connector instance.
 */
export declare function socketConnector(options?: SocketOptions): SocketConnector;
/**
 * DuckDB socket connector.
 */
export declare class SocketConnector implements Connector {
    private _uri;
    private _queue;
    private _connected;
    private _request;
    private _ws;
    private _events;
    /**
     * @param options Connector options.
     * @param options.uri The URI for the DuckDB REST server.
     * @param options.ipc Arrow IPC extraction options.
     */
    constructor({ uri, ipc, }?: SocketOptions);
    get connected(): boolean;
    init(): void;
    enqueue(query: ConnectorQueryRequest, resolve: (value?: unknown) => void, reject: (reason?: unknown) => void): void;
    next(): void;
    query(query: ArrowQueryRequest): Promise<Table>;
    query(query: ExecQueryRequest): Promise<void>;
    query(query: JSONQueryRequest): Promise<Record<string, unknown>[]>;
}
export {};
//# sourceMappingURL=socket.d.ts.map