import { Http, RequestOptions, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { ProviderDefaults } from './model/provider-defaults';
import { RequestParams } from './model/request-param';
import { ProviderMethod } from './model/provider-method';
import { ProviderConfig } from './model/provider-config';
import { MethodConfig } from './model/method-config';
import { RequestProperties } from './model/request-properties';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/map';
import { AuthHttp } from 'angular2-jwt';
export interface IProvider {
    getProviderDefaults(): ProviderDefaults;
}
export declare class Provider implements IProvider {
    protected readonly providerDefaults: ProviderDefaults;
    protected readonly resourcePath: string;
    private _defaults;
    constructor(providerDefaults: ProviderDefaults, resourcePath: string);
    getProviderDefaults(): ProviderDefaults;
    protected getAuthHttp(): Http | AuthHttp;
    protected getPath(): string;
    protected getWithParams<E>(path: string, requestParams: RequestParams, options?: RequestOptions): Observable<E | String>;
    protected get<E>(path?: string, options?: RequestProperties): Observable<E | String>;
    protected post<E>(path: string, body: any, options?: RequestOptions): Observable<E | String>;
    protected put<E>(path: string, body: any, options?: RequestOptions): Observable<E | String>;
    protected del<E>(path: string, options?: RequestOptions): Observable<E | String>;
    protected patch<E>(path: string, body: any, options?: RequestOptions): Observable<E | String>;
    protected setDefaultFor(method: ProviderMethod, config: MethodConfig): void;
    protected getFromCache<E>(requestProperties: RequestProperties, path: string): Promise<E>;
    protected storeGetOnCache<E>(requestProperties: RequestProperties, path: string, result: E): void;
    protected resolveRequestParams(requestParams: RequestParams, uri?: string): string;
    protected mapResFor<E>(method: ProviderMethod, res: Response): E | String;
    readonly defaults: ProviderConfig;
}
