import { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
interface AxiosServiceConfig extends AxiosRequestConfig {
    baseURL: string;
    timeout?: number;
    headers?: Record<string, string>;
    withCredentials?: boolean;
    retryConfig?: {
        maxRetries: number;
        delayMs: number;
        retryCondition?: (error: AxiosError) => boolean;
    };
    cacheConfig?: {
        enabled: boolean;
        ttlMs?: number;
    };
}
export declare class AxiosService {
    private static instance;
    private static cache;
    private static retryConfig;
    static connect(config: AxiosServiceConfig): AxiosInstance;
    private static setupInterceptors;
    private static sanitizeHeaders;
    private static handleAxiosError;
    private static getCacheKey;
    private static getFromCache;
    private static setCache;
    static withRetry<T>(requestFn: () => Promise<AxiosResponse<T>>, customConfig?: Partial<typeof this.retryConfig>): Promise<AxiosResponse<T>>;
    static get<T>(url: string, config?: AxiosRequestConfig & {
        retry?: boolean;
        cache?: boolean;
        cacheTTL?: number;
    }): Promise<AxiosResponse<T>>;
    static post<T>(url: string, data?: any, config?: AxiosRequestConfig & {
        retry?: boolean;
    }): Promise<AxiosResponse<T>>;
    static put<T>(url: string, data?: any, config?: AxiosRequestConfig & {
        retry?: boolean;
    }): Promise<AxiosResponse<T>>;
    static delete<T>(url: string, config?: AxiosRequestConfig & {
        retry?: boolean;
    }): Promise<AxiosResponse<T>>;
    static patch<T>(url: string, data?: any, config?: AxiosRequestConfig & {
        retry?: boolean;
    }): Promise<AxiosResponse<T>>;
    static setHeader(key: string, value: string, type?: 'common' | 'get' | 'post' | 'put' | 'patch' | 'delete'): void;
    static removeHeader(key: string, type?: 'common' | 'get' | 'post' | 'put' | 'patch' | 'delete'): void;
    static getInstance(): AxiosInstance;
    static clearCache(): void;
    static getCacheSize(): number;
}
export {};
