import { AxiosRequestConfig, AxiosResponse, AxiosError } from "axios";
type LogLevel = "DEBUG" | "INFO" | "WARN" | "ERROR" | "CRITICAL" | "TRACE";
type loggerJson = {
    time: number;
    request: AxiosRequestConfig | any;
    response: AxiosResponse | any;
    responseBody: JSON | any;
    statusCode: number | string;
};
export type AxiosMasterLoggerType = {
    log_levels: LogLevel;
    message: string;
    json: loggerJson;
};
interface MasterConfig {
    name?: string;
    log?: boolean;
    timeout?: number;
    logger?: (data: AxiosMasterLoggerType) => void;
    shouldRetry?: boolean;
    shouldRetryStatus?: number[];
    retryFunction?: () => Promise<string>;
}
export type AxiosMasterError<T = unknown, D = any> = AxiosError;
export declare const axiosMasterMain: (default_config: AxiosRequestConfig, masterConfig: MasterConfig) => Promise<AxiosResponse | any>;
export declare const axiosMasterLogger: (default_config: AxiosRequestConfig, masterConfig: MasterConfig) => Promise<AxiosResponse | any>;
export default axiosMasterMain;
