export = SelectValidator;
/**
 * Validates the tables and attributes against the actual schema
 * Validates general SQL rules
 */
declare class SelectValidator {
    constructor(statement: any);
    statement: any;
    attributes: any[];
    /**
     * entry point for validation
     * @returns {*}
     */
    validate(): any;
    /**
     * if the statement has columns in it:
     * loops thru the from and join arrays of the AST and passes individual entries into validateTable
     */
    [validateTables](): void;
    /**
     * Checks that the table exists in the schema, adds all of it's attributes to the class level collection this.attributes
     * @param table
     */
    [validateTable](table: any): void;
    /**
     * validates the column against the schema
     * @param column
     * @returns {*[]}
     */
    [findColumn](column: any): any[];
    /**
     * detects * in the select, if found adds all columns to the select
     */
    [checkColumnsForAsterisk](): void;
    /**
     * takes a table and adds all of it's columns to the select. if no table it adds every column from every table in the select
     * @param tableName
     */
    [setColumnsForTable](tableName: any): void;
    /**
     * passes segments to ValidateSegment for validation
     */
    [validateAllColumns](): void;
    /**
     * iterates the attributes in a segment and validates them against the schema
     * @param segment
     * @param isOrderBy
     * @returns {*}
     */
    [validateSegment](segment: any, isOrderBy: any): any;
    /**
     * validation specific for GROUP BY
     * makes sure that the non-aggregate functions and columns from the select are represented in the group by and the columns match the schema
     * @param segment
     */
    [validateGroupBy](segment: any): void;
    /**
     * Order BY specific validation
     *
     * @param column
     */
    [validateOrderBy](column: any): void;
    /**
     * validates a column to the schema
     * @param column
     * @returns {*}
     */
    [validateColumn](column: any): any;
}
declare const validateTables: unique symbol;
declare const validateTable: unique symbol;
declare const findColumn: unique symbol;
declare const checkColumnsForAsterisk: unique symbol;
declare const setColumnsForTable: unique symbol;
declare const validateAllColumns: unique symbol;
declare const validateSegment: unique symbol;
declare const validateGroupBy: unique symbol;
declare const validateOrderBy: unique symbol;
declare const validateColumn: unique symbol;
