import { QueryVisitor, QueryContext } from "./queryVisitor";
import { SqlAstNode, SqlRoot, SqlDialect } from "./astsql";
export interface AstLogger {
    log(message: string): void;
}
export interface AstPrintOptions {
    indentSize: number;
    logger: AstLogger;
}
export declare abstract class QueryAstPrinter extends QueryVisitor {
    private _options;
    private _indents;
    constructor(dialect: SqlDialect, query: SqlRoot, options?: Partial<AstPrintOptions>);
    print(): void;
    protected visitGenericNode(context: QueryContext, node: SqlAstNode): QueryContext;
    private getDefaultOptions();
    private log(message);
    private getIndentation(context);
}
export declare class MySQLAstPrinter extends QueryAstPrinter {
    constructor(query: SqlRoot, options?: Partial<AstPrintOptions>);
}
