import { Client } from 'pg';
export interface QueryBuilderOptions {
    table: string;
    columns?: string[];
    where?: Record<string, any>;
    joins?: JoinClause[];
    orderBy?: OrderByClause[];
    groupBy?: string[];
    having?: string;
    limit?: number;
    offset?: number;
}
export interface JoinClause {
    type: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
    table: string;
    on: string;
}
export interface OrderByClause {
    column: string;
    direction: 'ASC' | 'DESC';
}
export interface QueryBuilderResult {
    sql: string;
    explanation: string;
    optimizationTips: string[];
}
export declare class QueryBuilder {
    private client;
    constructor(client: Client);
    /**
     * Build an optimized SQL query from options
     */
    buildQuery(options: QueryBuilderOptions): Promise<QueryBuilderResult>;
    /**
     * Generate suggested queries based on table analysis
     */
    suggestQueries(tableName: string): Promise<string[]>;
    /**
     * Generate explanation for the query options
     */
    private generateExplanation;
    /**
     * Generate optimization tips for the query
     */
    private generateOptimizationTips;
    /**
     * Get available tables for query building
     */
    getAvailableTables(): Promise<string[]>;
    /**
     * Get available columns for a table
     */
    getAvailableColumns(tableName: string): Promise<Array<{
        name: string;
        type: string;
    }>>;
}
//# sourceMappingURL=query-builder.d.ts.map