import { HttpEvent, HttpHeaderResponse, HttpProgressEvent, HttpResponse, HttpSentEvent } from '@angular/common/http';
import { Constructor } from '@rxap/utilities';
import { Observable, Subject } from 'rxjs';
import { HttpDataSourceOptions } from './http.data-source.options';
import { HttpDataSourceMetadata } from './http.data-source.metadata';
import { BaseHttpDataSource } from './base-http.data-source';
import * as i0 from "@angular/core";
export declare class HttpDataSource<Data = any, PathParams = any, Body = any> extends BaseHttpDataSource<Data, PathParams, Body> {
    readonly onSentEvent$: Subject<HttpSentEvent>;
    readonly onResponse$: Subject<HttpResponse<Data>>;
    readonly onDownloadProgress$: Subject<HttpProgressEvent>;
    readonly onUploadProgress$: Subject<HttpProgressEvent>;
    readonly onResponseHeader$: Subject<HttpHeaderResponse>;
    derive<D = Data>(id: string, metadata?: Partial<HttpDataSourceMetadata<PathParams, Body>>, isolated?: boolean): HttpDataSource<D, PathParams, Body>;
    transform(data: any): Data;
    protected handelHttpEvent(event: HttpEvent<Data>): void;
    protected buildRequest(options: HttpDataSourceOptions<PathParams, Body>): Observable<Data>;
    static ɵfac: i0.ɵɵFactoryDeclaration<HttpDataSource<any, any, any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<HttpDataSource<any, any, any>>;
}
export declare function RxapHttpDataSource<Data, PathParams = any, Body = any>(metadata: HttpDataSourceMetadata<PathParams, Body>, className?: string, packageName?: string): (target: Constructor<HttpDataSource<Data, PathParams, Body>>) => void;
