import type { CommentExportMode } from "../types/Formatting";
/**
 * Represents a comment with its position relative to a token or component
 */
export interface PositionedComment {
    position: 'before' | 'after';
    comments: string[];
}
export declare abstract class SqlComponent {
    static kind: symbol;
    getKind(): symbol;
    accept<T>(visitor: SqlComponentVisitor<T>): T;
    toSqlString(formatter: SqlComponentVisitor<string>): string;
    comments: string[] | null;
    positionedComments: PositionedComment[] | null;
    /**
     * Add comments at a specific position
     */
    addPositionedComments(position: 'before' | 'after', comments: string[]): void;
    /**
     * Get comments for a specific position
     */
    getPositionedComments(position: 'before' | 'after'): string[];
    /**
     * Get all positioned comments as a flat array in order (before, after)
     */
    getAllPositionedComments(): string[];
}
export interface SqlComponentVisitor<T> {
    visit(expr: SqlComponent): T;
}
export declare class SqlDialectConfiguration {
    parameterSymbol: string;
    identifierEscape: {
        start: string;
        end: string;
    };
    exportComment: CommentExportMode;
}
