import { V3Token } from '@showpad/experience-app-types';
import { AxiosError, AxiosInstance, InternalAxiosRequestConfig } from 'axios';
import { ApiConfig } from '../types';
declare const API_ENDPOINT_MAP: {
    v3: (customer: string, TLD: string) => string;
    coach: (customer: string, TLD: string) => string;
    v4: (customer: string) => string;
};
export type ShowpadApi = keyof typeof API_ENDPOINT_MAP;
export interface AxiosAuthRefreshRequestConfig extends InternalAxiosRequestConfig {
    skipAuthRefresh?: boolean;
}
type ExcludeStatus<T> = Omit<T, 'status'>;
export interface DeserializedAxiosError extends ExcludeStatus<AxiosError> {
    status: number;
}
interface Params {
    getApi: () => Promise<ApiConfig>;
    postGetApi: (apiConfig: ApiConfig) => ApiConfig;
    refreshApi: () => Promise<ApiConfig>;
    postRefreshApi: (apiConfig: ApiConfig) => ApiConfig;
}
export declare const mapApiEndpoint: (api: ShowpadApi, apiConfig: ApiConfig) => string;
export declare class ApiWrapper {
    private axiosInstance;
    private params;
    constructor(params: Params);
    private getApiRequestConfigInterceptor;
    private refreshApiRequestConfigInterceptor;
    getInstance: () => Promise<AxiosInstance>;
}
export declare const apiInstanceFactory: (getApi: () => Promise<ApiConfig>, refreshApi: () => Promise<ApiConfig>, proxyUrl?: string) => Promise<AxiosInstance>;
export declare const showpadApiInstanceFactory: (getApi: () => Promise<ApiConfig>, refreshApi: () => Promise<ApiConfig>, api?: ShowpadApi, customToken?: string) => Promise<AxiosInstance>;
export declare const V3TokenToApiconfig: (tokenResponse: V3Token) => ApiConfig;
export declare const getUTCTimestamp: () => number;
export declare const postApiConcurrentCheck: (functionName: string) => void;
export declare const setLocalStorageItemByUserId: (functionCache: string, value: string) => Promise<void>;
export declare const getCachedApiConfig: <T extends ApiConfig | V3Token>(functionCache: string) => Promise<ApiConfig | 'expired' | 'unavailable'>;
export declare const preApiConcurrentCheck: (functionName: string, functionCache: string) => Promise<ApiConfig | 'expired' | 'unavailable'>;
export {};
