import { HttpContext, HttpParams } from '@angular/common/http';
import * as Angular from '@angular/common/http';
import { HttpBackend, type HttpEvent, HttpResponse } from '@opra/client';
import { Observable } from 'rxjs';
import type { StrictOmit } from 'ts-gems';
/**
 *
 * @class AngularBackend
 */
export declare class AngularBackend extends HttpBackend {
    readonly httpClient: Angular.HttpClient;
    defaults: AngularBackend.RequestDefaults;
    constructor(httpClient: Angular.HttpClient, serviceUrl: string, options?: AngularBackend.Options);
    handle(init: AngularBackend.RequestInit): Observable<HttpEvent>;
    protected send(request: Angular.HttpRequest<any>): Observable<Angular.HttpEvent<unknown>>;
    protected prepareRequest(init: AngularBackend.RequestInit): AngularBackend.RequestInit;
    protected createResponse(init: HttpResponse.Initiator): HttpResponse;
    protected parseBody(fetchResponse: Response): Promise<any>;
}
/**
 * @namespace AngularBackend
 */
export declare namespace AngularBackend {
    interface Options extends HttpBackend.Options {
        defaults?: RequestDefaults;
    }
    interface RequestInit extends HttpBackend.RequestInit {
        context?: HttpContext;
        reportProgress?: boolean;
        params?: HttpParams;
        responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';
        withCredentials?: boolean;
    }
    interface RequestOptions extends Pick<RequestInit, 'context' | 'reportProgress' | 'withCredentials'> {
    }
    type RequestDefaults = StrictOmit<RequestOptions, 'context'> & {
        headers: Headers;
        params: URLSearchParams;
    };
}
