import { BinderStore } from '../binder';
import { FromItem } from './select-path/SelectFromStep';
import { ItemInfo } from '../ItemInfo';
import { ColumnLike } from './select-path/SelectStep';
import { BuilderData } from '../builder';
import { Condition, PrimitiveType } from '../models';
import { LogicalOperator } from '../operators';
import { BooleanColumn, Column, Table } from '../database';
export declare enum Parenthesis {
Open = "(",
Close = ")"
}
export type Artifacts = {
tables: ReadonlySet
;
columns: ReadonlySet;
};
export declare abstract class BaseStep extends Function {
readonly prevStep: BaseStep | null;
readonly rootStep: BaseStep;
protected readonly data: BuilderData;
protected readonly binderStore: BinderStore;
protected readonly prefixSeparator: string;
constructor(prevStep: BaseStep | null);
getSQL(): string;
protected getFullStatement(nextArtifacts: Artifacts): string;
protected getFullArtifacts(): Artifacts;
private mergeArtifacts;
abstract getStepStatement(artifacts: Artifacts): string;
abstract getStepArtifacts(): Artifacts;
private getStepStatementCalled;
getBindValues(): PrimitiveType[];
/** @deprecated - Not needed since version 0.15.0 */
cleanUp(): void;
protected static getTable(item: FromItem): Table;
protected throwIfTableNotInDb(table: Table): void;
protected throwIfColumnsNotInDb(columns: (ItemInfo | ColumnLike)[]): void;
protected static addConditionParts(conditionArray: (LogicalOperator | Condition | Parenthesis | BooleanColumn)[], cond1: Condition, op1?: LogicalOperator, cond2?: Condition, op2?: LogicalOperator, cond3?: Condition): void;
/**
* This function throws error if WhereParts Array where invalid
* it check the number of open and close parentheses in the conditions
*/
protected static throwIfConditionPartsInvalid(conditionsArray: (LogicalOperator | Condition | Parenthesis | BooleanColumn)[]): void;
}