import { FilterLogicalOperator } from "../QueryFilter";
import { FilterComponent } from "./FilterComponent";
import { IBooleanFilterOperatorBuilder, IDateTimeFilterOperatorBuilder, IDateTimeOffsetFilterOperatorBuilder, IFloatFilterOperatorBuilder, IIntFilterOperatorBuilder, ILongFilterOperatorBuilder, IStringFilterOperatorBuilder, IntFilterOperatorBuilder } from "./FilterOperatorBuilder";
export interface IFilterComponentBuilder {
    int(propertyName: string): IIntFilterOperatorBuilder;
    float(propertyName: string): IFloatFilterOperatorBuilder;
    dateTime(propertyName: string): IDateTimeFilterOperatorBuilder;
    dateTimeOffset(propertyName: string): IDateTimeOffsetFilterOperatorBuilder;
    string(propertyName: string): IStringFilterOperatorBuilder;
    boolean(propertyName: string): IBooleanFilterOperatorBuilder;
    long(propertyName: string): ILongFilterOperatorBuilder;
    expression(buildInnerExpression: (builder: IFilterComponentBuilder) => IFilterLogicalOperatorBuilder): IFilterLogicalOperatorBuilder;
}
export interface IFilterLogicalOperatorBuilder {
    and(): IFilterComponentBuilder;
    or(): IFilterComponentBuilder;
    build(): FilterComponent[];
}
export declare class FilterBuilder implements IFilterComponentBuilder, IFilterLogicalOperatorBuilder {
    protected filters: FilterComponent[];
    protected intFilterOperatorBuilder?: IntFilterOperatorBuilder;
    private floatFilterOperatorBuilder?;
    private dateTimeFilterOperatorBuilder?;
    private dateTimeOffsetFilterOperatorBuilder?;
    private stringFilterOperatorBuilder?;
    private booleanFilterOperatorBuilder?;
    private longFilterOperatorBuilder?;
    propertyName?: string;
    filterLogicalOperator: FilterLogicalOperator;
    constructor(filters?: FilterComponent[]);
    addFilter(filterComponent: FilterComponent): void;
    and(): IFilterComponentBuilder;
    or(): IFilterComponentBuilder;
    build(): FilterComponent[];
    int(propertyName: string): IIntFilterOperatorBuilder;
    float(propertyName: string): IFloatFilterOperatorBuilder;
    long(propertyName: string): ILongFilterOperatorBuilder;
    dateTime(propertyName: string): IDateTimeFilterOperatorBuilder;
    dateTimeOffset(propertyName: string): IDateTimeOffsetFilterOperatorBuilder;
    string(propertyName: string): IStringFilterOperatorBuilder;
    boolean(propertyName: string): IBooleanFilterOperatorBuilder;
    expression(buildInnerExpression: (builder: IFilterComponentBuilder) => IFilterLogicalOperatorBuilder): IFilterLogicalOperatorBuilder;
}
