import { Observable } from 'rxjs';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { ODataConfiguration } from './angularODataConfiguration';
import { DeleteOperation, GetOperation, PatchOperation, PostOperation, PutOperation } from './angularODataOperation';
import { ODataQuery } from './angularODataQuery';
export declare class ODataService<T> {
    private _typeName;
    private _http;
    private config;
    private _entitiesUri;
    constructor(_typeName: string, _http: HttpClient, config: ODataConfiguration);
    get TypeName(): string;
    Get(key: any): GetOperation<T>;
    Post<T>(entity: T): PostOperation<T>;
    Patch<T>(entity: T, key: any): PatchOperation<T>;
    Put<T>(entity: T, key: any): PutOperation<T>;
    Delete(key: any): DeleteOperation<T>;
    CustomAction(key: any, actionName: string, postdata: any): Observable<any>;
    CustomCollectionAction(actionName: string, postdata: any): Observable<any>;
    CustomFunction(key: any, functionName: string, parameters?: any): Observable<any>;
    CustomCollectionFunction(functionName: string, parameters?: any): Observable<any>;
    getNestedEntityService<U>(key: string, typeName: string): ODataService<U>;
    ItemProperty<T = any>(key: string, propertyName: string): Observable<T | null>;
    Query(): ODataQuery<T>;
    protected getEntityUri(key: any): string;
    protected handleResponse<TResponse>(entity: Observable<HttpResponse<TResponse>>): Observable<TResponse>;
    private extractData;
}
