import { CommaBreakStyle, AndBreakStyle } from './SqlPrinter';
import { IndentCharOption, NewlineOption } from './LinePrinter';
import { SqlComponent } from '../models/SqlComponent';
export declare const VALID_PRESETS: readonly ["mysql", "postgres", "sqlserver", "sqlite"];
export type PresetName = (typeof VALID_PRESETS)[number];
/**
 * SqlFormatter class combines parsing and printing of SQL queries into a single interface.
 */
export declare class SqlFormatter {
    private parser;
    private printer;
    constructor(options?: {
        preset?: PresetName;
        identifierEscape?: {
            start: string;
            end: string;
        };
        parameterSymbol?: string | {
            start: string;
            end: string;
        };
        parameterStyle?: 'anonymous' | 'indexed' | 'named';
        indentSize?: number;
        indentChar?: IndentCharOption;
        newline?: NewlineOption;
        keywordCase?: 'none' | 'upper' | 'lower';
        commaBreak?: CommaBreakStyle;
        andBreak?: AndBreakStyle;
    });
    /**
     * Formats a SQL query string with the given parameters.
     * @param sqlText The SQL query string to format.
     * @param parameters A dictionary of parameters to replace in the query.
     * @returns An object containing the formatted SQL string and the parameters.
     */
    format(sql: SqlComponent): {
        formattedSql: string;
        params: Record<string, any>;
    };
}
