/*!
 * Copyright (C) Microsoft Corporation. All rights reserved.
 */
export type RequestConfig = {
    /** The authentication resource to be injected into the request as a bearer token */
    authResource?: string;
    /** The headers for the request */
    headers?: Record<string, string>;
    /** The type of response for the request. Defaults to json */
    responseType?: 'json' | 'text' | 'blob';
    /** The body of the request to send. Requires a JSON object */
    body?: unknown;
    /** Prevents default headers from being added to the request */
    excludeDefaultHeaders?: boolean;
    /** Use fetch implementation */
    useFetch?: boolean;
    /** operation name of the telemetry event we want logged */
    operationName?: string;
    /** event data of the telemetry event we want logged */
    eventData?: object;
    /** retryable error handler */
    handleRetry?: (originalRequest: Request, response: globalThis.Response) => Promise<Request | null>;
};
export type Response<T = unknown> = {
    data: T;
    status: number;
    headers: Record<string, string>;
};
export interface IHttpClient {
    get<T = unknown>(url: string, config?: RequestConfig): Promise<Response<T>>;
    post<T = unknown>(url: string, config?: RequestConfig): Promise<Response<T>>;
    patch<T = unknown>(url: string, config?: RequestConfig): Promise<Response<T>>;
    put<T = unknown>(url: string, config?: RequestConfig): Promise<Response<T>>;
    delete<T = unknown>(url: string, config?: RequestConfig): Promise<Response<T>>;
}
//# sourceMappingURL=IHttpClient.d.ts.map