import { ClientOperaters } from './client-operaters';
import { ApiRequest, FilterParam, Include, JPath, OrderBy, PageContext, SearchType, SortParam } from './common';
export declare class RequestBuilder<T> {
    private request?;
    constructor(request?: ApiRequest<T>);
    filter<Tk>(key: Tk | ClientOperaters, value: ClientOperaters | any, searchType?: SearchType, jPath?: JPath): this;
    addFilter(filters: FilterParam<T> | Array<FilterParam<T>>): RequestBuilder<T>;
    clearFilter(): RequestBuilder<T>;
    sort(key: string, orderBy: OrderBy): RequestBuilder<T>;
    addSorter(sorters: SortParam | SortParam[]): RequestBuilder<T>;
    clearSorter(): this;
    addAttribute(attributes: string | string[]): RequestBuilder<T>;
    clearAttribute(): this;
    addInclude(include: Include | Include[]): RequestBuilder<T>;
    addIncludeWhere(path: string, where: {
        [key: string]: any;
    }): this;
    clearIncludeWhere(): this;
    clearInclude(): this;
    pageContext(pageNumber: number, pageSize: number): RequestBuilder<T>;
    setPageContext(pageContext: PageContext): RequestBuilder<T>;
    resetPageContext(): RequestBuilder<T>;
    getRequest(): ApiRequest<T>;
    getRequestForNextPage(): ApiRequest<T>;
    getRequestForPreviousPage(): ApiRequest<T>;
    private clearWhere;
    private addWhere;
}
