import { type EnvDomainMap, type IEnvSwitcher } from '../env';
import { NetworkEngine } from './engine';
import { COCOS_LOGIN_INFO_STORAGE_KEY } from './interceptors/request/cocos-login-info-param-interceptor';
import type { ICocosLoginInfoStorage, LoginInfo } from './types';
export interface IInitCocosNetworkOptions {
    /**
       * 多环境域名配置（必填，breaking change）。
       *
       * 例：
       * ```ts
       * network: {
       *   svrdomain: {
       *     test: 'atest.igame.qq.com',
       *     prod: 'igame.qq.com',
       *   },
       * }
       * ```
       * 域名不要带协议，也不要带末尾斜杠。
       */
    network: {
        svrdomain: EnvDomainMap;
    };
    /**
       * 登录接口路径（必填，breaking change）。
       * 内部会拼接为 `https://{svrdomain[env]}{loginPath}`。
       * 例如 '/v2/login/code'。
       */
    loginPath?: string;
    /**
       * 登录接口路径
       * 优先级更高，防止 loginPath 的 domain 与 network.svrdomain 不一致
       * 如 https://atest.igame.qq.com/pmdtrpc.commcgi.user.user/QueryUserInfo
       */
    loginUrl?: string;
    /**
       * 环境持久化存储 key，默认 'pmd_api_cocos_env'。
       */
    envStorageKey?: string;
    /**
       * 切换环境后是否自动重启（restartMiniProgram / location.reload），默认 true。
       */
    envAutoRestart?: boolean;
    /**
       * 全局调试函数名（挂到 globalThis 上）。
       *   - 默认 '__pmdSetEnv__' / '__pmdGetEnv__'
       *   - 传 false 可关闭挂载
       */
    globalSetEnvName?: string | false;
    globalGetEnvName?: string | false;
    /** 小游戏 appid（必填） */
    appid: string;
    /** 登录平台类型，默认 3（微信小游戏） */
    platform?: number;
    /** 登录类型 _ltype，默认 tiploginwxproc */
    ltype?: string;
    /**
       * 登录态存储（可选）
       * 默认使用 Cocos 的 `sys.localStorage`（getItem/setItem/removeItem）封装，
       * 业务如需自定义（如真机用 wx.getStorageSync）可自行传入。
       */
    storage?: ICocosLoginInfoStorage;
    /** 存储 key，默认 cocos_login_info */
    storageKey?: string;
    /**
       * 无登录态时获取 wx.code 的方法（可选）
       * 默认使用 `wx.login`；在 `wx` 不存在的环境下返回空 code。
       */
    getLoginCode?: () => Promise<{
        code: string;
    }>;
    /** loginInfo 更新回调（可选，便于业务侧刷新 UI 或同步到 AuthService 等） */
    onLoginInfo?: (info: LoginInfo) => void;
}
/**
 * 一键初始化 Cocos 微信小游戏网络层
 *
 * 等价于 pmd-npm `business/src/network-v2/application/cocos/index-mp.ts`
 * 的 initNetworkManager，但适配到本包自带的 NetworkManager 和 wx.request。
 *
 * 调用一次后，所有通过 pmd-api-cocos 的 NetworkManager 发出的请求
 * 都会：
 *   - 自动拼 baseUrl + host
 *   - 无登录态时带 code → 触发后台换登录态
 *   - 有登录态时 body.login_info + cookie 透传
 *   - 响应 header logininfo 自动入库
 *   - ret=100000 自动清态重试一次
 *
 * 使用示例（见 README）：
 * ```ts
 * import { initCocosNetwork } from '@tencent/pmd-api-cocos/network';
 *
 * initCocosNetwork({
 *   network: {
 *     svrdomain: {
 *       test: 'atest.igame.qq.com',
 *       prod: 'igame.qq.com',
 *     },
 *   },
 *   loginPath: '/v2/login/code',
 *   appid: 'wx14f5bb5ae9a067f8',
 *   // storage / getLoginCode 可不传，默认走 sys.localStorage + wx.login
 *   onLoginInfo: (info) => {
 *     // 可选：同步到 AuthService / 刷新 UI 等
 *   },
 * });
 *
 * // 控制台可执行（微信小游戏 / 开发者工具）：
 *   wx.__pmdSetEnv__('prod')  // → 切到正式环境并自动重启
 *   wx.__pmdSetEnv__('test')  // → 切回测试环境
 *   wx.__pmdGetEnv__()        // → 查看当前环境
 * // （非微信环境会回退挂到 globalThis 上）
 * ```
 */
export declare function initCocosNetwork(options: IInitCocosNetworkOptions): NetworkEngine & {
    envSwitcher: IEnvSwitcher;
};
export { COCOS_LOGIN_INFO_STORAGE_KEY };
export type { ICocosLoginInfoStorage, LoginInfo };
