import { ResponseObserve } from '../core';
import { HttpClient } from '@angular/common/http';
/**
 * As implementações dos métodos GET, PUT, POST, DELETE e PATCH devem ser capazes de resolver os tipos de resposta -
 * <strong>responseType</strong> e o que observar - <strong>observe</strong>.
 *
 * Como a maioria de chamadas à APIs trabalham intensamente com JSON, a implementação do
 * JsonResponseObserve já é acessível por padrão a partir dos métodos:
 *
 * - submit(): observa o corpo retornado na requisição;
 * - observeEvents(): observa os eventos que ocorrem ao se inscrever no Observable;
 * - observeResponse(): observa o corpo da resposta dentre os eventos ocorridos no Observable.
 *
 */
export declare abstract class HttpMethod<T> {
    protected readonly http: HttpClient;
    private _json;
    protected constructor(http: HttpClient, _json: ResponseObserve<T>);
    json(): ResponseObserve<T>;
    /**
     * ### Provê os métodos necessários para trabalhar com os Observables de Blob:
     * - observeBody(): Observable<Blob>;
     * - observeEvents(): Observable<HttpEvent<Blob>>;
     * - observeResponse(): Observable<HttpResponse<Blob>>;
     */
    abstract blob(): ResponseObserve<Blob>;
    /**
     * ### Provê os métodos necessários para trabalhar com os Observables de ArrayBuffer:
     * - observeBody(): Observable<ArrayBuffer>;
     * - observeEvents(): Observable<HttpEvent<ArrayBuffer>>;
     * - observeResponse(): Observable<HttpResponse<ArrayBuffer>>;
     */
    abstract arraybuffer(): ResponseObserve<ArrayBuffer>;
    /**
     * ### Provê os métodos necessários para trabalhar com os Observables de string:
     * - observeBody(): Observable<string>;
     * - observeEvents(): Observable<HttpEvent<string>>;
     * - observeResponse(): Observable<HttpResponse<string>>;
     */
    abstract text(): ResponseObserve<string>;
}
