import { ProjectionItemContext, ProjectionItemsContext, CastContext, OrderItemContext, OrderByContext } from "../Context";
import { IToken } from "chevrotain";
import { Range } from "../utils/getRange";
declare const Visitor: new (...args: any[]) => import("chevrotain").ICstVisitor<any, any>;
/**
 * Visitor to extract `projectionItem` list
 */
export declare class ProjectionItemsVisitor extends Visitor {
    output: Array<{
        range: Range;
        isAsterisk: boolean;
        expression: string;
        path?: {
            catalogName?: string;
            schemaName?: string;
            tableName?: string;
            columnName: string;
        };
        alias?: string;
        cast?: {
            value: string;
            type: string;
        };
        fn?: {
            identifier: string;
            values: {
                expression: string;
                path?: {
                    catalogName?: string;
                    schemaName?: string;
                    tableName?: string;
                    columnName: string;
                };
            }[];
        };
        sort?: {
            order: "asc" | "desc";
            nullsOrder?: "first" | "last";
        };
    }>;
    sort: Array<{
        expression: string;
        expressionRange: Range;
        order?: "asc" | "desc";
        nullsOrder?: "first" | "last";
    }>;
    sortRange: Range | undefined;
    commas: IToken[];
    asteriskCount: number;
    constructor();
    projectionItems(ctx: ProjectionItemsContext): void;
    cast(ctx: CastContext): {
        value: string;
        type: string;
    };
    orderBy(ctx: OrderByContext): void;
    orderItem(ctx: OrderItemContext): void;
    projectionItem(ctx: ProjectionItemContext): void;
}
export {};
//# sourceMappingURL=ProjectionItemsVisitor.d.ts.map