import { Base, Type } from "./type";
import { IFilterExpression } from "./IFilterExpression";
import { FilterExpressionOperatorType } from "./FilterExpressionOperatorType";
import { FilterExpressionFunctionType } from "./FilterExpressionFunctionType";
import { IDataSourceDataProvider } from "./IDataSourceDataProvider";
import { IDataSourceSchema } from "./IDataSourceSchema";
import { IOperationFilterExpression } from "./IOperationFilterExpression";
import { IFunctionFilterExpression } from "./IFunctionFilterExpression";
import { FilterExpressionCollection } from "./FilterExpressionCollection";
import { IPropertyReferenceFilterExpression } from "./IPropertyReferenceFilterExpression";
import { ILiteralFilterExpression } from "./ILiteralFilterExpression";
/**
 * @hidden
 */
export declare abstract class FilterExpression extends Base implements IFilterExpression {
    static $t: Type;
    private ay;
    abstract get precedence(): number;
    private az;
    markAutoGenerated(): void;
    get isAutoGenerated(): boolean;
    static isFilterExpression(a: any): boolean;
    static operation(a: IFilterExpression | string, b: FilterExpressionOperatorType, c: IFilterExpression | any): OperationFilterExpression;
    static func(a: FilterExpressionFunctionType, ...b: IFilterExpression[]): FunctionFilterExpression;
    protected a4(): void;
    protected abstract a2(): 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;
    a3(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): boolean;
    private a0;
    abstract evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
    protected get_isPropertyReference(): boolean;
    get isPropertyReference(): boolean;
    protected get_isOperation(): boolean;
    get isOperation(): boolean;
    protected get_isFunction(): boolean;
    get isFunction(): boolean;
    protected get_isLiteral(): boolean;
    get isLiteral(): boolean;
    protected get_isNull(): boolean;
    get isNull(): boolean;
    group(): FilterExpression;
    and(a: IFilterExpression): FilterExpression;
    or(a: IFilterExpression): FilterExpression;
    not(): FilterExpression;
    add(a: IFilterExpression | any): FilterExpression;
    plus(a: IFilterExpression | any): FilterExpression;
    divide(a: IFilterExpression | any): FilterExpression;
    divideBy(a: IFilterExpression | any): FilterExpression;
    isEqualTo(a: IFilterExpression | any): FilterExpression;
    isGreaterThan(a: IFilterExpression | any): FilterExpression;
    isGreaterThanOrEqualTo(a: IFilterExpression | any): FilterExpression;
    isLessThan(a: IFilterExpression | any): FilterExpression;
    isLessThanOrEqualTo(a: IFilterExpression | any): FilterExpression;
    modulo(a: IFilterExpression | any): FilterExpression;
    multiply(a: IFilterExpression | any): FilterExpression;
    times(a: IFilterExpression | any): FilterExpression;
    isNotEqualTo(a: IFilterExpression | any): FilterExpression;
    subtract(a: IFilterExpression | any): FilterExpression;
    minus(a: IFilterExpression | any): FilterExpression;
    ceiling(): FilterExpression;
    concat(a: IFilterExpression | string): FilterExpression;
    contains(a: IFilterExpression | string): FilterExpression;
    day(): FilterExpression;
    endsWith(a: IFilterExpression | string): FilterExpression;
    floor(): FilterExpression;
    hour(): FilterExpression;
    indexOf(a: IFilterExpression | string): FilterExpression;
    length(): FilterExpression;
    minute(): FilterExpression;
    month(): FilterExpression;
    replace(a: IFilterExpression | string, b: IFilterExpression | string): FilterExpression;
    round(): FilterExpression;
    second(): FilterExpression;
    startsWith(a: IFilterExpression | string): FilterExpression;
    substring(a: IFilterExpression | number, b?: IFilterExpression | number): FilterExpression;
    toLower(): FilterExpression;
    toUpper(): FilterExpression;
    trim(): FilterExpression;
    year(): FilterExpression;
    date(): FilterExpression;
    time(): FilterExpression;
    now(): FilterExpression;
    isOf(a: IFilterExpression | string): FilterExpression;
    cast(a: IFilterExpression | string): FilterExpression;
}
/**
 * @hidden
 */
export declare class OperationFilterExpression extends FilterExpression implements IOperationFilterExpression {
    static $t: Type;
    constructor(a: any, b: FilterExpressionOperatorType, c: any);
    private a6;
    private a8;
    private a7;
    private a9;
    private a5;
    protected get_isOperation(): boolean;
    protected a2(): boolean;
    get isComparisonOperation(): boolean;
    get propertyName(): string;
    set propertyName(a: string);
    get hasPropertyName(): boolean;
    get value(): any;
    set value(a: any);
    get hasValue(): boolean;
    get left(): IFilterExpression;
    set left(a: IFilterExpression);
    get hasLeft(): boolean;
    get right(): IFilterExpression;
    set right(a: IFilterExpression);
    get hasRight(): boolean;
    get operator(): FilterExpressionOperatorType;
    set operator(a: FilterExpressionOperatorType);
    get hasOperator(): boolean;
    protected get bf(): boolean;
    protected get_precedence(): number;
    get precedence(): number;
    evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
    private bi;
    private bj;
    private bh;
}
/**
 * @hidden
 */
export declare class FunctionFilterExpression extends FilterExpression implements IFunctionFilterExpression {
    static $t: Type;
    constructor(a: FilterExpressionFunctionType, ...b: IFilterExpression[]);
    private a6;
    private a5;
    protected get_isFunction(): boolean;
    protected a2(): boolean;
    get functionType(): FilterExpressionFunctionType;
    set functionType(a: FilterExpressionFunctionType);
    protected get a7(): boolean;
    get functionArguments(): FilterExpressionCollection;
    get hasFunctionArguments(): boolean;
    evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
    protected get_precedence(): number;
    get precedence(): number;
    private a8;
    private ba;
    private a9;
}
/**
 * @hidden
 */
export declare class PropertyReferenceFilterExpression extends FilterExpression implements IPropertyReferenceFilterExpression {
    static $t: Type;
    constructor(a: string);
    protected get_isPropertyReference(): boolean;
    protected get_precedence(): number;
    get precedence(): number;
    protected a2(): boolean;
    private a5;
    get propertyReference(): string;
    set propertyReference(a: string);
    evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
}
/**
 * @hidden
 */
export declare class LiteralFilterExpression extends FilterExpression implements ILiteralFilterExpression {
    static $t: Type;
    constructor(a: any, b: boolean);
    protected get_precedence(): number;
    get precedence(): number;
    private a6;
    private a5;
    protected get_isLiteral(): boolean;
    protected get_isNull(): boolean;
    get literalValue(): any;
    set literalValue(a: any);
    get leaveUnquoted(): boolean;
    set leaveUnquoted(a: boolean);
    protected a2(): boolean;
    evaluate(a: any, b: IDataSourceDataProvider, c: IDataSourceSchema): any;
}
