import { HttpClient } from '@angular/common/http';
import { HttpOptions, QueryParamsSupplier } from '../core';
import { Observable } from 'rxjs';
import { HttpDelete, HttpGet, HttpPatch, HttpPost, HttpPut } from './methods';
/**
 * Responsável por prover os métodos a serem utilizados nas requisições para uma determinada URI.
 * Os retornos serão utilizados para recuperar o tipo de resposta e a observação necessária à requisição.
 * Para que funcione, devem ser providos o HttoClient e a URI desejada.
 */
export declare class HttpMethodDispatcher {
    private readonly http;
    private readonly uri;
    constructor(http: HttpClient, uri: string);
    get<T>(options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    /**
     * As default, will return an Observable that returns a JSON. If other return type is
     * needed, check the httpGet and doHttpGet.
     *
     * @see HttpMethodDispatcher.httpGet
     * @see HttpMethodDispatcher.doHttpGet
  
     * @param path
     * @param options
     */
    doGet<T>(path: string, options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    doHttpGet<T>(options?: HttpOptions | QueryParamsSupplier): HttpGet<T>;
    httpGet<T>(path: string, options?: HttpOptions | QueryParamsSupplier): HttpGet<T>;
    put<T>(body?: any, options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    doPut<T>(path: string, body?: any, options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    doHttpPut<T>(body?: any, options?: HttpOptions | QueryParamsSupplier): HttpPut<T>;
    httpPut<T>(path: string, body?: any, options?: HttpOptions | QueryParamsSupplier): HttpPut<T>;
    patch<T>(body?: any, options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    doPatch<T>(path: string, body?: any, options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    doHttpPatch<T>(body?: any, options?: HttpOptions | QueryParamsSupplier): HttpPatch<T>;
    httpPatch<T>(path: string, body?: any, options?: HttpOptions | QueryParamsSupplier): HttpPatch<T>;
    post<T>(body?: any, options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    doPost<T>(path: string, body?: any, options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    doHttpPost<T>(body?: any, options?: HttpOptions | QueryParamsSupplier): HttpPost<T>;
    httpPost<T>(path: string, body?: any, options?: HttpOptions | QueryParamsSupplier): HttpPost<T>;
    delete<T>(options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    doDelete<T>(path: string, options?: HttpOptions | QueryParamsSupplier): Observable<T>;
    doHttoDelete<T>(options?: HttpOptions | QueryParamsSupplier): HttpDelete<T>;
    httpDelete<T>(path: string, options?: HttpOptions | QueryParamsSupplier): HttpDelete<T>;
}
