import { Artifacts } from '../steps/BaseStep';
import { Binder, BinderArray, BinderStore } from '../binder';
import { Expression, ExpressionType } from './Expression';
import { BuilderData } from '../builder';
import { OperandType } from './types';
import { IStatementGiver } from './IStatementGiver';
export declare class Operand implements IStatementGiver {
    readonly value: OperandType | Binder | OperandType[] | BinderArray;
    readonly isNot: boolean;
    type: ExpressionType;
    constructor(value: OperandType | Binder | OperandType[] | BinderArray, isNot?: boolean);
    getStmt(data: BuilderData, artifacts: Artifacts, binderStore: BinderStore): string;
    /**
     * written as static in separate function to be able to call it recursively
     * when the value is an array
     */
    private static getStmtOfValue;
    private static getExpressionType;
    private static throwIfInvalidUseOfNot;
}
export declare class ConditionOperand extends Operand {
    readonly value: Expression;
    readonly isNot: boolean;
    constructor(value: Expression, isNot?: boolean);
}
