import { ODataExecReturnType, ODataMetadataResult, ODataPagedResult, ODataQuery } from "@mgrcto/angular-odata-v401";
import { TccODataService } from "../tcc-odata/tcc-odata.service";
import { Observable } from "rxjs";
import { IKeyValue } from "../../models/shared.model";
export declare class TccODataQuery<T> extends ODataQuery<T> {
    private odataService;
    private filter;
    private search;
    private select;
    private orderBy;
    private skip;
    private _pageSize;
    private fromSave;
    private saveTime;
    private currPage;
    private maxResultLimit;
    private _count;
    private pagingRequest;
    private pagingOffset;
    private entitypath;
    private uniqueId;
    private cacheService;
    private fCustomQueryHeaders;
    constructor(odataService: TccODataService<T>);
    /**
     * Number of entities for this entityPath
     *
     * will be undefined, if no data was loaded with this query
     */
    get count(): number;
    set count(val: number);
    private get pageSize();
    Filter(filter: string): TccODataQuery<T>;
    Select(select: string | string[]): this;
    Search(search: string): TccODataQuery<T>;
    /**
     * How many entities will be in one Page, while using Paging()
     * @param pageSize number of entities per Page
     * @returns self
     */
    PageSize(pageSize: number): TccODataQuery<T>;
    /**
     * How many entities are requested
     * @param top number of entities
     * @returns self
     */
    Top(top: number): TccODataQuery<T>;
    /**
     * How many entities will be skippt in request
     * @param skip number of entities to skip
     * @returns self
     */
    Skip(skip: number): TccODataQuery<T>;
    /**
     * @param offset number of entities added to offset of paging
     */
    AddToPagingOffset(offset: number): void;
    private BuildCustomQueryHeaders;
    /**
     * Sets custon Query Headers for this Query permanent
     * @param customHeaders The custom Query Headers as KeyValue or KeyValue[]
     * @returns self
     */
    CustomQueryHeaders(customHeaders: IKeyValue<any> | IKeyValue<any>[]): TccODataQuery<T>;
    Apply(apply: string | string[]): TccODataQuery<T>;
    CustomQueryOptions(customOptions: IKeyValue<any> | IKeyValue<any>[]): TccODataQuery<T>;
    OrderBy(orderBy: string | string[]): TccODataQuery<T>;
    /**
     * Disables loading Animation and page disable while loading
     * @returns self
     */
    DisableLoading(enabled?: boolean): TccODataQuery<T>;
    /**
     * @description
     * Get paged data
     * @param {string|number} page string -> ('-2','-1','1','2'...):returns page current page + string({page}); number: returns page with page Number {page}; undefined: returns next page;
     * @returns The data as Array (in an Observable)
     */
    Paging(page?: number | string): Observable<T[]>;
    /**
     * @description
     * Get paged data
     * @param {string|number} page string -> ('-2','-1','1','2'...):returns page current page + string({page}); number: returns page with page Number {page}; undefined: returns next page;
     * @returns The query
     */
    GenericPagingQuery(page?: number | string): TccODataQuery<T>;
    /**
     * @description
     * removes elements out of the paging count. Call if elements got deleted, that are placed in the current page or before.
     * @param {number} count number of pages, that were deleted
     */
    pagingDataDeleted(count: number): void;
    dataDeleted(deletedCount: number): void;
    dataCreated(createCount: number): void;
    /**
     * @description
     * Resets the current PageNumber
     */
    resetPageCount(): void;
    /**
     * @description
     * Resets the current PageNumber
     */
    setPageCount(page: number): void;
    /**
     * @description
     * Resets the current PageNumber
     */
    getPageCount(): number;
    /**
     * execAll
     * Ruft unabhängig vom Odata Limit pro request einfach trotzdem alle Einträge ab.
     * Nur benutzen wenn es explizit erwähnt wurde.
     * @returns All items in a single array
     */
    execAll(): Observable<T[]>;
    Exec(): Observable<T[]>;
    Exec(returnType: ODataExecReturnType.Count): Observable<number>;
    Exec(returnType: ODataExecReturnType.PagedResult): Observable<ODataPagedResult<T>>;
    Exec(returnType: ODataExecReturnType.MetadataResult): Observable<ODataMetadataResult<T>>;
    Exec(returnType: ODataExecReturnType.Array): Observable<T[]>;
    ExecCount(): Observable<number>;
    ExecWithCount(): Observable<ODataPagedResult<T>>;
    private checkPagedResult;
    private extractCount;
    private addCountToResult;
    private ExecLoad;
    /**
     * Deletes all cached data
     */
    ResetCache(): void;
    private FillObserverAndSave;
    private FillObserverAndSave2;
    /**
     * Check if all data from this entityPath is already caached
     * @returns true, if all data for this entityPath is already cached
     */
    cacheComplete(): boolean;
}
