export interface NativeQueryOptions {
    maxRows?: number;
    /**
     * Hard timeout in ms. If the query has not produced a result by this
     * deadline, the returned promise rejects with `error.hardTimeout = true`
     * and the connection is marked dead so the pool replaces it.
     *
     * Note: the underlying libuv worker may continue running until db-lib's
     * cooperative DBSETTIME fires (set from the connection's `timeout`).
     * Its result is discarded.
     *
     * Defaults to `max(2 * connection.timeout * 1000, 30000)` on the native side.
     */
    hardTimeoutMs?: number;
}
export interface NativeBinding {
    connect(config: {
        host: string;
        port: number;
        database: string;
        username: string;
        password: string;
        timeout?: number;
        /** TDS network packet size in bytes. Defaults to 4096 (FreeTDS default is 512). */
        packetSize?: number;
    }): Promise<unknown>;
    query(conn: unknown, sql: string, options?: NativeQueryOptions): Promise<{
        rows: Record<string, unknown>[];
        columns: string[];
        rowCount: number;
        affectedRows: number;
    }>;
    close(conn: unknown): void;
    isAlive(conn: unknown): boolean;
    getVersion(): string;
}
/**
 * Get the native binding, loading it lazily on first call.
 * Throws if no binding is available for the current platform.
 */
export declare function getNative(): NativeBinding;
/**
 * Lazy-loaded native binding.
 * The binding is only loaded on first property access, allowing pure-JS modules
 * (schema, columns, table) to be imported without requiring the native binary.
 */
export declare const native: NativeBinding;
//# sourceMappingURL=index.d.ts.map