import type { Plugin } from 'vite';
/**
 * 给所有 createCrxAxios({...}) 的调用按"源文件相对路径"注入一个稳定的 __id__。
 *
 * 为什么需要这个插件：
 * - 多个 service 完全可以共用同一个 baseURL（比如 https://api-dev.giikin.cn/guard 下多个模块）
 * - 如果以 baseURL 做 serviceId 会冲突
 * - 想以源文件路径做 id，又不希望业务侧手动维护字符串
 * - 运行时 stack trace 在 prod bundled 模式下拿不到真实源文件路径
 *   并且 background bundle 和 contentScript bundle 看到的"运行时路径"会不一样，
 *   两端桥接对不上
 *
 * 这里在编译期把每个 createCrxAxios 调用的源文件相对路径写死成 __id__，
 * 同一个源文件在任何 bundle 里都是同一个 __id__，桥接两端必然匹配。
 *
 * 规则：
 * - 形如 `createCrxAxios({ ... })` 的字面量对象会被注入 __id__
 * - 同一个文件里多次调用 createCrxAxios 会得到相同的 __id__，
 *   createCrxAxios 内部 registry.set 时会检测冲突直接抛错
 * - 如果业务自己显式传了 __id__，对象字面量里后写的属性会覆盖先写的，业务的 id 胜出
 *
 * 使用方式：
 *
 * ```ts
 * // vite.config.ts
 * import { crxAxiosIdPlugin } from '../../crx/vite-plugin';
 * export default defineConfig({ plugins: [crxAxiosIdPlugin()] });
 * ```
 */
export interface CrxAxiosIdPluginOptions {
    /**
     * 项目根目录。`createCrxAxios` 源文件相对此目录计算 id。
     * 默认 `process.cwd()`，对绝大多数 Vite 项目是对的。
     * 单仓库多项目 / 自定义构建根目录时可显式传入。
     */
    root?: string;
}
export declare function crxAxiosIdPlugin(options?: CrxAxiosIdPluginOptions): Plugin;
