import { HttpClient, RequestInit } from "aurelia-fetch-client";
import { NumberService } from "./number-service";
import { AjaxErrorHandler as IErrorHandler } from "./handle-errors-service";
import { LoggingService } from "./logging-service";
import { I18N } from 'aurelia-i18n';
export declare class Ajax {
    private http;
    private errorHandler;
    private loggingService;
    private numberService;
    private i18n;
    static GlobalBaseUrl: string;
    static GlobalRequestInit: RequestInit;
    BaseUrl: string;
    noCacheHeader: any;
    private _initialized;
    constructor(http: HttpClient, errorHandler: IErrorHandler, loggingService: LoggingService, numberService: NumberService, i18n: I18N);
    private configure();
    private fetch<T>(url, init);
    fetchNumber(url: string, init?: RequestInit): Promise<IAjaxResult<number>>;
    fetchText(url: string, init?: RequestInit): Promise<IAjaxResult<string>>;
    fetchJson<T>(url: string, init?: RequestInit): Promise<IAjaxResult<any>>;
    put<T>(url: string, data: Object, init?: RequestInit): Promise<IAjaxResult<T>>;
    post<T>(url: string, data?: Object, init?: RequestInit): Promise<IAjaxResult<T>>;
    delete<T>(url: string, init?: RequestInit): Promise<IAjaxResult<T>>;
    private getAjaxResponse<T>(response);
    private getAjaxResultForType(response, dataReturnType);
    private handleJavaScriptException<T>(ex);
    private handleTypeError<T>(ex);
    private handleServerException<T>(ex);
    private handleDOMException<T>(ex);
    private handleServerError<T>(error);
}
export interface IAjaxResult<T> {
    Success: boolean;
    ErrorCode?: number;
    ErrorMessage?: string;
    Data?: T;
}
export interface IErrorHandler {
    HandleError(friendlyMessage: string, diagnosticMessage?: string): Promise<void>;
}
