import axios, { type AxiosError, type Method } from 'axios';
import { errorLogger, requestLogger, responseLogger } from 'axios-logger';
import { type SellingPartnerApiAuth } from '@sp-api-sdk/auth';
import { type SellingPartnerRegion } from './regions';
type RequestLogConfig = Exclude<Parameters<typeof requestLogger>[1], undefined>;
type ResponseLogConfig = Exclude<Parameters<typeof responseLogger>[1], undefined>;
type ErrorLogConfig = Exclude<Parameters<typeof errorLogger>[1], undefined>;
export interface RateLimit {
    urlRegex: RegExp;
    rate: number;
    burst: number;
    method: Method;
}
export interface OnRetryParameters {
    delay: number;
    rateLimit?: number;
    retryCount: number;
    error: AxiosError;
}
export interface ClientConfiguration {
    auth: SellingPartnerApiAuth;
    restrictedDataToken?: string;
    region: SellingPartnerRegion;
    userAgent?: string;
    sandbox?: boolean;
    rateLimiting?: {
        retry: boolean;
        onRetry?: (retryInfo: OnRetryParameters) => void;
    };
    logging?: {
        request?: RequestLogConfig | true;
        response?: ResponseLogConfig | true;
        error?: ErrorLogConfig | true;
    };
}
export declare function createAxiosInstance({ auth, restrictedDataToken, region, userAgent, sandbox, rateLimiting, logging, }: ClientConfiguration, rateLimits: RateLimit[]): {
    axios: axios.AxiosInstance;
    endpoint: string;
};
export {};
