import { IFilterExpression } from "./IFilterExpression";
import { FilterExpressionOperatorType } from "./FilterExpressionOperatorType";
import { FilterExpressionFunctionType } from "./FilterExpressionFunctionType";
import { IDataSourceDataProvider } from "./IDataSourceDataProvider";
import { IDataSourceSchema } from "./IDataSourceSchema";
import { DataSourceSchemaPropertyType } from "./DataSourceSchemaPropertyType";
import { Base, Type } from "./type";
import { IFunctionFilterExpression } from "./IFunctionFilterExpression";
import { FilterExpressionCollection } from "./FilterExpressionCollection";
export declare abstract class FilterExpression extends Base implements IFilterExpression {
    private bv;
    static operation3(a: string, b: FilterExpressionOperatorType, c: any): OperationFilterExpression;
    static operation(a: FilterExpression, b: FilterExpressionOperatorType, c: FilterExpression): OperationFilterExpression;
    static operation2(a: string, b: FilterExpressionOperatorType, c: FilterExpression): OperationFilterExpression;
    static operation1(a: FilterExpression, b: FilterExpressionOperatorType, c: any): OperationFilterExpression;
    static $function(a: FilterExpressionFunctionType, ...b: FilterExpression[]): FunctionFilterExpression;
    protected bz(): void;
    protected abstract bx(): boolean;
    static property(a: string): PropertyReferenceFilterExpression;
    static nullLiteral(): LiteralFilterExpression;
    static literal(a: any): LiteralFilterExpression;
    static unquotedLiteral(a: string): LiteralFilterExpression;
    match(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): boolean;
    by(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): boolean;
    private bw(a, b, c);
    abstract evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
    protected get_isPropertyReference(): boolean;
    readonly isPropertyReference: boolean;
    protected get_isOperation(): boolean;
    readonly isOperation: boolean;
    protected get_isFunction(): boolean;
    readonly isFunction: boolean;
    protected get_isLiteral(): boolean;
    readonly isLiteral: boolean;
    protected get_isNull(): boolean;
    readonly isNull: boolean;
    group(): FilterExpression;
    and(a: FilterExpression): FilterExpression;
    or(a: FilterExpression): FilterExpression;
    not(): FilterExpression;
    add(a: FilterExpression): FilterExpression;
    add1(a: any): FilterExpression;
    plus(a: FilterExpression): FilterExpression;
    plus1(a: any): FilterExpression;
    divide(a: FilterExpression): FilterExpression;
    divide1(a: any): FilterExpression;
    dividedBy(a: FilterExpression): FilterExpression;
    dividedBy1(a: any): FilterExpression;
    isEqualTo(a: FilterExpression): FilterExpression;
    isEqualTo1(a: any): FilterExpression;
    isGreaterThan(a: FilterExpression): FilterExpression;
    isGreaterThan1(a: any): FilterExpression;
    isGreaterThanOrEqualTo(a: FilterExpression): FilterExpression;
    isGreaterThanOrEqualTo1(a: any): FilterExpression;
    isLessThan(a: FilterExpression): FilterExpression;
    isLessThan1(a: any): FilterExpression;
    isLessThanOrEqualTo(a: FilterExpression): FilterExpression;
    isLessThanOrEqualTo1(a: any): FilterExpression;
    modulo(a: FilterExpression): FilterExpression;
    modulo1(a: any): FilterExpression;
    multiply(a: FilterExpression): FilterExpression;
    multiply1(a: any): FilterExpression;
    times(a: FilterExpression): FilterExpression;
    times1(a: any): FilterExpression;
    isNotEqualTo(a: FilterExpression): FilterExpression;
    isNotEqualTo1(a: any): FilterExpression;
    subtract(a: FilterExpression): FilterExpression;
    subtract1(a: any): FilterExpression;
    minus(a: FilterExpression): FilterExpression;
    minus1(a: any): FilterExpression;
    ceiling(): FilterExpression;
    concat(a: FilterExpression): FilterExpression;
    concat1(a: string): FilterExpression;
    contains(a: FilterExpression): FilterExpression;
    contains1(a: string): FilterExpression;
    day(): FilterExpression;
    endsWith(a: FilterExpression): FilterExpression;
    endsWith1(a: string): FilterExpression;
    floor(): FilterExpression;
    hour(): FilterExpression;
    indexOf(a: FilterExpression): FilterExpression;
    indexOf1(a: string): FilterExpression;
    length(): FilterExpression;
    minute(): FilterExpression;
    month(): FilterExpression;
    replace(a: FilterExpression, b: FilterExpression): FilterExpression;
    replace2(a: string, b: FilterExpression): FilterExpression;
    replace1(a: FilterExpression, b: string): FilterExpression;
    replace3(a: string, b: string): FilterExpression;
    round(): FilterExpression;
    second(): FilterExpression;
    startsWith(a: FilterExpression): FilterExpression;
    startsWith1(a: string): FilterExpression;
    substring(a: FilterExpression): FilterExpression;
    substring3(a: number): FilterExpression;
    substring1(a: FilterExpression, b: FilterExpression): FilterExpression;
    substring4(a: number, b: FilterExpression): FilterExpression;
    substring2(a: FilterExpression, b: number): FilterExpression;
    substring5(a: number, b: number): FilterExpression;
    toLower(): FilterExpression;
    toUpper(): FilterExpression;
    trim(): FilterExpression;
    year(): FilterExpression;
    date(): FilterExpression;
    time(): FilterExpression;
    now(): FilterExpression;
    isOf(a: DataSourceSchemaPropertyType): FilterExpression;
    cast(a: DataSourceSchemaPropertyType): FilterExpression;
    isOf1(a: string): FilterExpression;
    cast1(a: string): FilterExpression;
    static $t: Type;
}
export declare class OperationFilterExpression extends FilterExpression {
    constructor(a: number);
    constructor(a: number, b: FilterExpression, c: FilterExpressionOperatorType, d: FilterExpression);
    constructor(a: number, b: string, c: FilterExpressionOperatorType, d: FilterExpression);
    constructor(a: number, b: FilterExpression, c: FilterExpressionOperatorType, d: any);
    constructor(a: number, b: string, c: FilterExpressionOperatorType, d: any);
    constructor(a: number, ..._rest: any[]);
    private b2;
    private b6;
    private b3;
    private b7;
    private b0;
    protected get_isOperation(): boolean;
    readonly isOperation: boolean;
    protected bx(): boolean;
    readonly isComparisonOperation: boolean;
    propertyName: string;
    readonly hasPropertyName: boolean;
    value: any;
    readonly hasValue: boolean;
    left: IFilterExpression;
    readonly hasLeft: boolean;
    right: IFilterExpression;
    readonly hasRight: boolean;
    operator: FilterExpressionOperatorType;
    readonly hasOperator: boolean;
    protected readonly cd: boolean;
    evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
    private cg(a, b, c);
    private ch(a, b, c);
    private cf(a, b, c);
    static $t: Type;
}
export declare class FunctionFilterExpression extends FilterExpression implements IFunctionFilterExpression {
    constructor(a: number);
    constructor(a: number, b: FilterExpressionFunctionType, ...c: FilterExpression[]);
    constructor(a: number, ..._rest: any[]);
    private b1;
    private b0;
    protected get_isFunction(): boolean;
    readonly isFunction: boolean;
    protected bx(): boolean;
    functionType: FilterExpressionFunctionType;
    protected readonly b2: boolean;
    readonly functionArguments: FilterExpressionCollection;
    readonly hasFunctionArguments: boolean;
    evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
    private b3(a, b);
    private b5(a, b);
    private b4(a);
    static $t: Type;
}
export declare class PropertyReferenceFilterExpression extends FilterExpression {
    constructor(a: number);
    constructor(a: number, b: string);
    constructor(a: number, ..._rest: any[]);
    protected get_isPropertyReference(): boolean;
    readonly isPropertyReference: boolean;
    protected bx(): boolean;
    private b0;
    propertyReference: string;
    evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
    static $t: Type;
}
export declare class LiteralFilterExpression extends FilterExpression {
    constructor(a: number);
    constructor(a: number, b: any);
    constructor(a: number, b: string, c: boolean);
    constructor(a: number, ..._rest: any[]);
    private b2;
    private b0;
    protected get_isLiteral(): boolean;
    readonly isLiteral: boolean;
    protected get_isNull(): boolean;
    readonly isNull: boolean;
    literalValue: any;
    leaveUnquoted: boolean;
    protected bx(): boolean;
    evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
    static $t: Type;
}
