/// <reference types="node" />
import type { Plugin } from 'vite';
import viteCompression from 'vite-plugin-compression';
import type { IAddCodeAtEndOptions } from '@plugin-light/vite-plugin-add-code-at-end';
import type { IAliasForLibraryOptions } from '@plugin-light/vite-plugin-alias-for-library';
import type { Options as LegacyOptions } from '@vitejs/plugin-legacy';
import type { Server } from 'node:https';
import type { ElementPlusResolverOptions, TDesignResolverOptions, VantResolverOptions } from 'unplugin-vue-components/resolvers';
import type { MkcertPluginOptions } from 'vite-plugin-mkcert';
export type GetViteConfigOptions = {
    /**
     * 模式，对应 Vite 中 defineConfig 的 mode 参数
     */
    mode: string;
    /**
     * 本地开发端口
     *
     * 不传会取 process.env.VUE_APP_PORT，或 443
     */
    serverPort?: number;
    /**
     * 本地开发是否是 https
     */
    serverHttps?: Server;
    /**
     * 传给 server.host
     *
     * 参考 https://cn.vitejs.dev/config/server-options.html#server-host
     */
    serverHost?: string | boolean;
    /**
     * 对应 optimizeDeps.include
     */
    optimizeDepsIncludes?: Array<string>;
    /**
     * 对应 optimizeDeps.exclude
     */
    optimizeDepsExcludes?: Array<string>;
    /**
     * add-code-at-end 插件参数
     */
    addCodeAtEndOptions?: IAddCodeAtEndOptions | boolean;
    /**
     * press-ui 本地的 alias 配置
     * @default 'src/library/press-ui'
     */
    pressUiAlias?: string;
    /**
     * press-plus 本地的 alias 配置
     * @default 'src/library/press-plus'
     */
    pressPlusAlias?: string;
    /**
     * alias-for-library 插件参数
     */
    aliasForLibraryOptions?: IAliasForLibraryOptions;
    /**
     * pmd-tools 之类的别名映射
     */
    pmdAliasMap?: Record<string, string>;
    customElements?: Array<string>;
    /**
     * 三方库是否使用 cdn 链接，比如 vue，vue-router
     * @default false
     */
    useCdn?: boolean;
    /**
     * 是否使用 element-plus 的 cdn
     * @default false
     */
    useElementPlusCDN?: boolean;
    /**
     * vite-plugin-mkcert 参数
     */
    mkcertOptions?: boolean | MkcertPluginOptions;
    /**
     * 前置插件
     */
    prePlugins?: Array<Plugin>;
    /**
     * 后置插件
     */
    postPlugins?: Array<Plugin>;
    /**
     * 自动导入 vant
     * @default true
     */
    autoImportVant?: boolean | VantResolverOptions;
    /**
     * 自动导入 element-plus
     * @default true
     */
    autoImportElementPlus?: boolean | ElementPlusResolverOptions;
    /**
     * 自动导入 tdesign
     * @default { library: 'vue-next' }
     */
    autoImportTDesign?: boolean | TDesignResolverOptions;
    /**
     * vite-plugin-compression 插件参数
     * @default true
     */
    compressionOptions?: boolean | Parameters<typeof viteCompression>[0];
    /**
     * @vitejs/plugin-legacy 插件参数
     * @default true
     */
    legacyOptions?: boolean | LegacyOptions;
    /**
     * 是否使用 pmd-network-v2
     * @default false
     */
    usePMDNetworkV2?: boolean;
};
