import { ApiResponse, ErrorInterceptor, RequestConfig, RequestInterceptor, ResponseInterceptor, UploadConfig, UploadResult } from './types'; import { Ref } from 'vue'; /** * HTTP 请求客户端接口定义。 * 提供基础的 HTTP 请求方法、文件直传服务配置以及拦截器管理。 */ export interface RequestClient { /** * 发送网络请求。 * @param config 请求配置项 * @returns 封装后的响应结果 Promise */ request(config: RequestConfig): Promise>; /** * 发送 GET 请求的快捷方法。 * @param url 请求的目标 URL * @param data 请求携带的 query 参数 * @returns 封装后的响应结果 Promise */ get(url: string, data?: unknown): Promise>; /** * 发送 POST 请求的快捷方法。 * @param url 请求的目标 URL * @param data 请求携带的 body 数据 * @returns 封装后的响应结果 Promise */ post(url: string, data?: unknown): Promise>; /** * 发送 PUT 请求的快捷方法。 * @param url 请求的目标 URL * @param data 请求携带的 body 数据 * @returns 封装后的响应结果 Promise */ put(url: string, data?: unknown): Promise>; /** * 发送 DELETE 请求的快捷方法。 * @param url 请求的目标 URL * @param data 请求携带的 query 或 body 数据 * @returns 封装后的响应结果 Promise */ del(url: string, data?: unknown): Promise>; /** * 上传本地文件到服务器或第三方云存储。 * @param config 文件上传配置项 * @returns 上传解析结果 Promise */ upload(config: UploadConfig): Promise; /** * 设置基础请求域名或前缀。 * @param url 域名字符串(如 'https://api.example.com') */ setBaseURL(url: string): void; /** * 拼接并解析微服务模块或命名空间下的请求 URL。 * @param namespace 命名空间/模块名称 * @param url 具体的接口路径 * @param servicePrefix 服务的前缀,可选 * @returns 拼接完成的完整路径 */ resolveServiceUrl(namespace: string, url: string, servicePrefix?: string): string; /** * 注册请求拦截器,在请求发出前触发。 * @param fn 拦截器处理函数 * @returns 用于注销该拦截器的注销函数 */ onRequest(fn: RequestInterceptor): () => void; /** * 注册响应拦截器,在成功接收响应后触发。 * @param fn 拦截器处理函数 * @returns 用于注销该拦截器的注销函数 */ onResponse(fn: ResponseInterceptor): () => void; /** * 注册错误拦截器,在请求或响应阶段发生异常时触发。 * @param fn 错误拦截处理器 * @returns 用于注销该拦截器的注销函数 */ onError(fn: ErrorInterceptor): () => void; } /** * 全局请求客户端单例。 */ export declare const request: RequestClient; /** * 文件上传 composable。 * 提供 `uploading` 状态与上传方法。 * * @example * ```ts * const { uploading, upload } = useUpload(); * const res = await upload({ * type: 'oss', * filePath: 'temp-path', * server: 'https://oss-endpoint.com' * }); * ``` */ export declare function useUpload(): { uploading: Ref; upload: (options: UploadConfig) => Promise; };