import { Artifacts } from '../steps/BaseStep';
import { UpdateSetItemInfo } from '../UpdateSetItemInfo';
import { BinderStore } from '../binder';
import { BuilderData } from '../builder';
import { BooleanColumn, Column, DateColumn, NumberColumn, TextColumn } from '../database';
import { ItemInfo } from '../ItemInfo';
import { Qualifier } from '../operators';
import { Expression, ExpressionType } from './Expression';
import { IStatementGiver } from './IStatementGiver';
import { ConditionOperand, Operand } from './Operand';
import { BooleanLike } from './types';
type ConditionConstructor = {
    leftExpression: Expression;
    operator?: Qualifier;
    rightExpression?: Expression;
    notLeft?: boolean;
    notRight?: boolean;
};
export declare class Condition implements Expression, IStatementGiver {
    readonly operator?: Qualifier;
    readonly leftOperand: ConditionOperand;
    readonly rightOperand?: ConditionOperand;
    readonly type: ExpressionType.NULL | ExpressionType.BOOLEAN;
    constructor(con: ConditionConstructor);
    getStmt(data: BuilderData, artifacts: Artifacts, binderStore: BinderStore): string;
    as(alias: string): ItemInfo;
    eq(value: BooleanLike): Condition;
    eq$(value: boolean): Condition;
    ne(value: BooleanLike): Condition;
    ne$(value: boolean): Condition;
    isEq(value: null | boolean): Condition;
    isEq$(value: null | boolean): Condition;
    isNe(value: null | boolean): Condition;
    isNe$(value: null | boolean): Condition;
    get NOT(): Condition;
    getColumns(): Column[];
    private static getResultExpressionType;
    private static isListComparisonOperator;
    private static throwInvalidConditionError;
}
export declare class UpdateCondition extends Condition implements UpdateSetItemInfo {
    readonly operand: Operand;
    readonly column: Column;
    constructor(column: BooleanColumn | NumberColumn | TextColumn | DateColumn, rightExpression: Expression);
}
export {};
