import type { CreateAxiosConfig } from '../../utils/src/http/createAxios';
import type { AxiosInstance } from 'axios';
/**
 * 描述一个 giime 内置 service 的全部信息：
 *  - axios 配置（baseURL / successCode / withCredentials / 等）
 *  - 跨 bundle 稳定的 __id__（CRX 桥接用，web 模式下忽略）
 *  - baseURL 重置规则（baseUrlEnvKey / serviceType）
 */
export interface GiimeServiceDescriptor extends CreateAxiosConfig {
    /**
     * 跨 bundle 稳定 id。CRX 用来在 contentScript ↔ background 之间匹配同一个 service。
     *
     * 约定：`giime-api/<packageName>`，例如 `'giime-api/guardBasic'`、`'giime-api/gstore'`。
     * 全局唯一 —— 重复 id 会被 createCrxAxios 当作"同一文件多次调用"抛错。
     */
    __id__: string;
    /** 用 import.meta.env 里哪个 key 覆盖 baseURL（resetAxiosBaseURL 用） */
    baseUrlEnvKey: string;
    /** 默认 baseURL fallback / dev 代理 prefix（resetAxiosBaseURL 用） */
    serviceType: string;
}
export type GiimeServiceFactory = (desc: GiimeServiceDescriptor) => AxiosInstance;
/**
 * 替换 giime 内置 API 包的 service 创建实现。
 *
 * **必须在任何 `@giime/api/*` 的 controller / request.ts 被 import 之前调用**，
 * 否则那个 service 已经用旧 factory 创建过、缓存在模块顶层 export 里，换 factory 也来不及。
 *
 * CRX 项目通过 `@giime/crx` 的 `installIntoGiimeApi()` 调用，业务方一般不直接用这个。
 */
export declare const setGiimeServiceFactory: (fn: GiimeServiceFactory) => void;
/** 重置回默认 factory。测试 / 异常恢复用，业务一般用不到。 */
export declare const resetGiimeServiceFactory: () => void;
/** 各 `request.ts` 调用此函数创建自己的 service。 */
export declare const createGiimeService: (desc: GiimeServiceDescriptor) => AxiosInstance;
