import { AxiosPromise, AxiosRequestConfig, AxiosResponse } from 'axios';
import { ILogger } from "../logger/ILogger";
export declare type FetchResponse<T> = AxiosResponse<T>;
export declare type FetchRequestConfig = AxiosRequestConfig & {
    internalClient?: 'ote' | 'system';
    ignoreAuthError?: boolean;
};
export interface FetcherOptions {
    urlPrefix?: string;
    name?: string;
    requestConfig?: FetchRequestConfig;
}
export declare class ServiceRequester {
    private urlPrefix;
    private readonly log;
    private name;
    private http;
    protected extractRequestData<T = any>(request: AxiosPromise<T>, failureMessage?: string): Promise<FetchResponse<T>>;
    constructor(options?: FetcherOptions, logger?: ILogger);
    setUrlPrefix(urlPrefix: string, skipVersion?: boolean): void;
    resetUrlPrefix(urlPrefix: string): void;
    setName(name: string): void;
    send<T>(config: FetchRequestConfig): Promise<FetchResponse<T>>;
    getResourceLink(response: FetchResponse<any>): string;
    fetchCreatedResource<T, R>(response: FetchResponse<T>): Promise<FetchResponse<R>>;
}
