import { AxiosHeaders, AxiosRequestConfig } from "axios";
import { httpStatusCodes } from "./statusCodes";
export type HttpStatusCodes = keyof typeof httpStatusCodes;
export type HttpStatusMessage = typeof httpStatusCodes[HttpStatusCodes];
export type HttpRetrierRetryOn = (response: HttpRetrierResponse) => boolean;
export type HttpRetrierLogger = (message: string) => void;
export type HttpRetrierOptions = Omit<AxiosRequestConfig, 'url' | "baseURL"> & Partial<HttpRetrierSettings>;
export interface HttpRetrierOutputConverter {
    xml2json?: boolean;
    custome?: (output: any) => any;
}
export interface WaitOptions {
    attempt?: number;
    exponentialBackoff?: boolean;
}
export interface HttpRetrierSettings {
    title: string;
    maxAttempts: number;
    delay: number;
    exponentialBackoff: boolean;
    outputConverter: HttpRetrierOutputConverter;
    logging: HttpRetrierLogging;
    retryOn: HttpRetrierRetryOn;
}
export interface HttpRetrierResponse {
    url: string;
    method: string;
    status: HttpStatusCodes;
    statusText: string;
    headers?: AxiosHeaders;
    attempt: number;
    input: any;
    output: any;
}
export interface HttpRetrierLogging {
    beforeStart?: (response: HttpRetrierResponse) => void;
    beforeAttempt?: (response: HttpRetrierResponse) => void;
    afterAttempt?: (response: HttpRetrierResponse) => void;
    afterDone?: (response: HttpRetrierResponse) => void;
}
//# sourceMappingURL=types.d.ts.map