import { QueryResult } from 'trino-client';
export interface TrinoOptions {
    catalog: string;
    host: string;
    password?: string;
    schema: string;
    user: string;
}
export interface QueryOptions {
    limit?: number;
    orderBy?: {
        direction: 'asc' | 'desc';
        field: string;
    };
    unique?: boolean;
    where?: Record<string, any>;
}
export declare class TrinoConnector {
    private catalog;
    private client;
    private schema;
    constructor(options: TrinoOptions);
    /**
   * Constructs an ORDER BY clause from the given options.
   */
    buildOrderByClause(orderBy?: {
        direction: 'asc' | 'desc';
        field: string;
    }): string;
    /**
   * Constructs a WHERE clause from the given filter object, escaping values to prevent SQL injection.
   */
    buildWhereClause(where?: Record<string, any>): string;
    /**
   * Converts query result iterators to an array of objects using column headers.
   */
    convertIteratorToObject(headers: string[], resultsIterator: AsyncIterator<QueryResult>): Promise<Record<string, any>[]>;
    /**
   * Counts the number of rows matching the conditions.
   */
    count(table: string, options?: QueryOptions): Promise<number | undefined>;
    /**
   * Executes the SQL query and returns an AsyncIterator.
   */
    executeQuery(sql: string): Promise<AsyncIterator<QueryResult>>;
    /**
   * Finds the first row matching the conditions.
   */
    findFirst<T>(table: string, options: QueryOptions): Promise<null | T>;
    /**
   * Finds multiple rows matching the conditions.
   */
    findMany<T>(table: string, options?: QueryOptions): Promise<T[]>;
    /**
   * Finds a single unique row based on the given conditions.
   */
    findUnique<T>(table: string, options: QueryOptions): Promise<null | T>;
    /**
   * Generic method for fetching query results based on options.
   */
    private fetchResults;
    /**
   * Utility method to format values for SQL.
   */
    private formatValue;
    /**
   * Fetches column headers for the given table.
   */
    private getColumnHeaders;
}
