import { HttpClient } from '@angular/common/http';
import { DataBeforeRequestOptions, DataClientRequestOptions, DataHttpInterceptor, DataHttpRequestOptions } from '@angular-ru/cdk/http/typings';
import { Observable } from 'rxjs';
import { DataConfiguratorService } from './data-configurator.service';
import { LimitConcurrencyService } from './limit-concurrency.service';
import * as i0 from "@angular/core";
interface ReqProperty {
    method: string;
    path: string;
    options: Partial<DataClientRequestOptions>;
}
export declare abstract class AbstractHttpClient<K = unknown> {
    protected http: HttpClient;
    protected configurator: DataConfiguratorService;
    protected limitConcurrency: LimitConcurrencyService;
    protected controllerUrl: string;
    protected local: Partial<DataClientRequestOptions>;
    interceptor: K & DataHttpInterceptor;
    protected constructor(http: HttpClient, configurator: DataConfiguratorService, limitConcurrency: LimitConcurrencyService, _interceptor: any);
    abstract request<T = any, R = T>(options: DataBeforeRequestOptions): Observable<R>;
    get<T = any, R = T>(path: string, options?: Partial<DataClientRequestOptions>): Observable<R>;
    post<T = any, R = T>(path: string, options?: Partial<DataClientRequestOptions>): Observable<R>;
    put<T = any, R = T>(path: string, options?: Partial<DataClientRequestOptions>): Observable<R>;
    patch<T = any, R = T>(path: string, options?: Partial<DataClientRequestOptions>): Observable<R>;
    delete<T = any, R = T>(path: string, options?: Partial<DataClientRequestOptions>): Observable<R>;
    createRequestOptions({ method, path, options }: ReqProperty): DataBeforeRequestOptions;
    protected createDataHttpRequestOptions<T>(options: DataBeforeRequestOptions): DataHttpRequestOptions;
    private createHttpBody;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractHttpClient<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AbstractHttpClient<any>>;
}
export {};
//# sourceMappingURL=abstract-http.client.d.ts.map