import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { ODataConfiguration } from './angularODataConfiguration';
import { ODataExecReturnType } from './angularODataEnums';
import { ODataMetadataResult } from './angularODataMetadataResult';
import { ODataOperation } from './angularODataOperation';
import { ODataPagedResult } from './angularODataPagedResult';
export interface CustomOption {
    key: string;
    value: any;
}
export declare class ODataQuery<T> extends ODataOperation<T> {
    private _filter;
    private _top;
    private _skip;
    private _search;
    private _orderBy;
    private _apply;
    private _entitiesUri;
    private _maxPerPage;
    private _customQueryOptions;
    private _customQueryHeaders;
    constructor(typeName: string, config: ODataConfiguration, http: HttpClient);
    Filter(filter: string): ODataQuery<T>;
    Search(search: string): ODataQuery<T>;
    Top(top: number): ODataQuery<T>;
    Skip(skip: number): ODataQuery<T>;
    OrderBy(orderBy: string | string[]): ODataQuery<T>;
    MaxPerPage(maxPerPage: number): ODataQuery<T>;
    Apply(apply: string | string[]): ODataQuery<T>;
    CustomQueryOptions(customOptions: CustomOption | CustomOption[]): ODataQuery<T>;
    CustomQueryHeaders(customHeaders: CustomOption | CustomOption[]): ODataQuery<T>;
    GetUrl(returnType?: ODataExecReturnType): string;
    Exec(): Observable<T[]>;
    Exec(returnType: ODataExecReturnType.Count): Observable<number>;
    Exec(returnType: ODataExecReturnType.PagedResult): Observable<ODataPagedResult<T>>;
    Exec(returnType: ODataExecReturnType.MetadataResult): Observable<ODataMetadataResult<T>>;
    ExecWithCount(): Observable<ODataPagedResult<T>>;
    NextPage(pagedResult: ODataPagedResult<T>): Observable<ODataPagedResult<T>>;
    private execGetCount;
    private execGetArrayDataWithCount;
    private execGetArrayDataWithMetadata;
    private execGetArrayData;
    private getQueryRequestOptions;
    private getQueryHeaders;
    private getQueryParams;
    private extractDataAsNumber;
    private extractArrayData;
    private extractArrayDataWithCount;
    private extractArrayDataWithMetadata;
    private checkReservedCustomQueryOptionKey;
}
