/// <reference types="vite/client" />

/**
 * 将 @/assets/iconify/single-color 目录下的所有 SVG 文件识别为 IconifyIcon
 */
declare module '@/assets/iconify/single-color/*.svg' {
    const content: import('@iconify/react').IconifyIcon;
    export default content;
}

/**
 * 将 @/assets/iconify/multi-color 目录下的所有 SVG 文件识别为 IconifyIcon
 */
declare module '@/assets/iconify/multi-color/*.svg' {
    const content: import('@iconify/react').IconifyIcon;
    export default content;
}

type Recordable<T = any> = Record<string, T>;

/**
 * 打包压缩格式的类型声明
 */
type BuildCompression =
    | 'none'
    | 'gzip'
    | 'brotli'
    | 'both'
    | 'gzip-clear'
    | 'brotli-clear'
    | 'both-clear';

interface ImportMetaEnv {
    // 覆盖原本的字段定义
    BASE_URL?: string;
    MODE?: string;
    DEV?: boolean;
    PROD?: boolean;
    SSR?: boolean;

    [key: string]: any;

    /**端口号 */
    VITE_DEV_PORT?: number;

    /**发布路径 */
    VITE_BUILD_PUBLIC_PATH?: string;
    /**压缩选项 */
    VITE_BUILD_COMPRESSION?: BuildCompression;

    /**应用代码 */
    VITE_API_PRODUCT_CODE?: string;
    /**应用标题 */
    VITE_APP_TITLE?: string;
    /**应用版本 */
    VITE_APP_VERSION?: string;
    /**路由模式 */
    VITE_ROUTER_MODE?: 'hash' | 'history';
    /**存储命名空间 */
    VITE_STORAGE_NAME_SPACE?: string;

    /**是否启用请求加密 */
    VITE_ENABLE_REQUEST_ENCRYPTION?: string;
    /**请求加密密钥 */
    VITE_REQUEST_ENCRYPTION_KEY?: string;
    /**存储加密总开关，如果设置为 false，则会忽略 StorageOptions 中的加密配置，不对存储进行加密 */
    VITE_ENABLE_STORAGE_ENCRYPTION?: string;
    /**存储加密密钥 */
    VITE_STORAGE_ENCRYPTION_KEY?: string;
    /**请求数据压缩方法 */
    VITE_REQUEST_DATA_COMPRESSION?: 'nozip' | 'br' | 'gzip'; // 不压缩、br压缩、gzip压缩

    /**API基础URL */
    VITE_API_BASE_URL?: string;

    /**Google Play 商店地址，未配置时为空 */
    VITE_APP_GOOGLE_STORE_URL?: string;
    /**Apple App Store 地址，未配置时为空 */
    VITE_APP_APPLE_STORE_URL?: string;
    /**APK 直链地址，未配置时为空 */
    VITE_APP_APK_URL?: string;
    /**macOS 客户端下载地址，未配置时为空 */
    VITE_APP_MACOS_URL?: string;
    /**Windows 客户端下载地址，未配置时为空 */
    VITE_APP_WINDOWS_URL?: string;
    /**deeplink 地址，未配置时为空 */
    VITE_APP_DEEPLINK_URL?: string;
}

interface ImportMeta {
    readonly env: ImportMetaEnv;
}
