import { FilterBuilder, IFilterLogicalOperatorBuilder } from "./FilterBuilder";
export interface IFilterOperatorBuilder<T> {
    equals(value: T): IFilterLogicalOperatorBuilder;
    notEquals(value: T): IFilterLogicalOperatorBuilder;
    isNull(): IFilterLogicalOperatorBuilder;
    isNotNull(): IFilterLogicalOperatorBuilder;
    in(values: T[]): IFilterLogicalOperatorBuilder;
    notIn(values: T[]): IFilterLogicalOperatorBuilder;
}
export interface IComparableFilterOperatorBuilder<T> extends IFilterOperatorBuilder<T> {
    lessThan(value: T): IFilterLogicalOperatorBuilder;
    greaterThan(value: T): IFilterLogicalOperatorBuilder;
    lessThanOrEqual(value: T): IFilterLogicalOperatorBuilder;
    greaterThanOrEqual(value: T): IFilterLogicalOperatorBuilder;
}
export interface IIntFilterOperatorBuilder extends IComparableFilterOperatorBuilder<number> {
    bitwiseAnd(value: number): IFilterLogicalOperatorBuilder;
    bitwiseNotAnd(value: number): IFilterLogicalOperatorBuilder;
}
export interface IFloatFilterOperatorBuilder extends IComparableFilterOperatorBuilder<number> {
}
export interface ILongFilterOperatorBuilder extends IComparableFilterOperatorBuilder<number> {
}
export interface IDateTimeFilterOperatorBuilder extends IComparableFilterOperatorBuilder<Date> {
}
export interface IDateTimeOffsetFilterOperatorBuilder extends IComparableFilterOperatorBuilder<Date> {
}
export interface IBooleanFilterOperatorBuilder extends IFilterOperatorBuilder<boolean> {
}
export interface IStringFilterOperatorBuilder extends IFilterOperatorBuilder<string> {
    like(value: string): IFilterLogicalOperatorBuilder;
    notLike(value: string): IFilterLogicalOperatorBuilder;
}
export declare class FilterOperatorBuilder<T> implements IFilterOperatorBuilder<T> {
    protected readonly filterBuilder: FilterBuilder;
    constructor(filterBuilder: FilterBuilder);
    equals(value: T): IFilterLogicalOperatorBuilder;
    notEquals(value: T): IFilterLogicalOperatorBuilder;
    notIn(values: T[]): IFilterLogicalOperatorBuilder;
    in(values: T[]): IFilterLogicalOperatorBuilder;
    isNull(): IFilterLogicalOperatorBuilder;
    isNotNull(): IFilterLogicalOperatorBuilder;
}
export declare class StringFilterOperatorBuilder extends FilterOperatorBuilder<string> implements IStringFilterOperatorBuilder {
    like(value: string): IFilterLogicalOperatorBuilder;
    notLike(value: string): IFilterLogicalOperatorBuilder;
}
export declare class ComparableFilterOperatorBuilder<T> extends FilterOperatorBuilder<T> implements IComparableFilterOperatorBuilder<T> {
    greaterThanOrEqual(value: T): IFilterLogicalOperatorBuilder;
    greaterThan(value: T): IFilterLogicalOperatorBuilder;
    lessThanOrEqual(value: T): IFilterLogicalOperatorBuilder;
    lessThan(value: T): IFilterLogicalOperatorBuilder;
}
export declare class IntFilterOperatorBuilder extends ComparableFilterOperatorBuilder<number> implements IIntFilterOperatorBuilder {
    bitwiseAnd(value: number): IFilterLogicalOperatorBuilder;
    bitwiseNotAnd(value: number): IFilterLogicalOperatorBuilder;
}
export declare class FloatFilterOperatorBuilder extends ComparableFilterOperatorBuilder<number> implements IFloatFilterOperatorBuilder {
    constructor(filterBuilder: FilterBuilder);
}
export declare class LongFilterOperatorBuilder extends ComparableFilterOperatorBuilder<number> implements ILongFilterOperatorBuilder {
    constructor(filterBuilder: FilterBuilder);
}
export declare class DateTimeFilterOperatorBuilder extends ComparableFilterOperatorBuilder<Date> implements IDateTimeFilterOperatorBuilder {
    constructor(filterBuilder: FilterBuilder);
}
export declare class DateTimeOffsetFilterOperatorBuilder extends ComparableFilterOperatorBuilder<Date> implements IDateTimeOffsetFilterOperatorBuilder {
    constructor(filterBuilder: FilterBuilder);
}
export declare class BooleanFilterOperatorBuilder extends ComparableFilterOperatorBuilder<boolean> implements IBooleanFilterOperatorBuilder {
    constructor(filterBuilder: FilterBuilder);
}
