import { type AxiosResponse } from "axios"; export interface ApiClientConfig { baseURL?: string; timeout?: number; headers?: Record; } type TokenProvider = () => string | undefined; interface FileResponse { data: Blob; headers: AxiosResponse["headers"]; } interface GetRequestOptions { url: string; params?: Record; headers?: Record; } interface PostRequestOptions { url: string; body?: unknown; headers?: Record; } interface PutRequestOptions { url: string; body?: unknown; headers?: Record; } interface PatchRequestOptions { url: string; body?: unknown; headers?: Record; } interface DeleteRequestOptions { url: string; headers?: Record; } interface FileRequestOptions { url: string; headers?: Record; } interface UploadFileOptions { url: string; files: FileList | File[]; headers?: { paramName?: string; [key: string]: unknown; }; } declare class ApiClientService { private instance; private tokenProvider?; constructor(config?: ApiClientConfig); private setupInterceptors; /** * Establece el proveedor de token que se usará en todas las peticiones * @param provider Función que retorna el token de autorización */ setTokenProvider(provider: TokenProvider | undefined): void; /** * Limpia el proveedor de token */ clearTokenProvider(): void; /** * Actualiza la configuración por defecto del cliente */ updateDefaults(config: ApiClientConfig): void; private axiosRequest; /** * Realiza una petición GET */ get(options: GetRequestOptions): Promise; /** * Realiza una petición POST */ post(options: PostRequestOptions): Promise; /** * Realiza una petición PUT */ put(options: PutRequestOptions): Promise; /** * Realiza una petición PATCH */ patch(options: PatchRequestOptions): Promise; /** * Realiza una petición DELETE */ del(options: DeleteRequestOptions): Promise; /** * Obtiene un archivo como Blob */ getFile(options: FileRequestOptions): Promise; /** * Obtiene un archivo y retorna su URL como objeto */ getFileAsUrl(options: FileRequestOptions): Promise; /** * Abre un archivo en una nueva ventana */ openFile(options: FileRequestOptions): Promise; /** * Descarga un archivo */ downloadFile(options: FileRequestOptions): Promise; /** * Sube uno o más archivos usando FormData */ uploadFile(options: UploadFileOptions): Promise; } /** * Cliente de API compartido con todas las funciones de HTTP */ export declare const apiClient: ApiClientService; /** * Crea una nueva instancia del cliente de API */ export declare const createApiClient: (config?: ApiClientConfig) => ApiClientService; /** * Establece el proveedor de token global para el cliente compartido */ export declare const setApiClientTokenProvider: (provider: TokenProvider | undefined) => void; /** * Limpia el proveedor de token global */ export declare const clearApiClientTokenProvider: () => void; export {}; //# sourceMappingURL=apiClient.d.ts.map