import { type UserConfig } from 'vite';
import type { Platform, BuildOptions } from '../types.js';
export declare class ViteConfigBuilder {
    private baseBuildDir;
    private platform;
    private options;
    private baseBuildMetadata?;
    private esmBundledScript;
    private finalOutputDir;
    private viteOutputDir;
    constructor(baseBuildDir: string, platform: Platform, options: BuildOptions);
    create(): Promise<UserConfig>;
    /**
     * 获取 Vite 的临时输出目录
     */
    getViteOutputDir(): string;
    /**
     * 获取最终输出目录
     */
    getFinalOutputDir(): string;
    /**
     * 判断是否需要转换为 IIFE
     */
    private shouldConvertToIIFE;
    /**
     * 创建 ESM 打包配置（将 ESM 转为 IIFE）
     *
     * 策略：使用 index.html 作为入口，ESM 脚本已经预先打包到 this.esmBundledScript
     */
    private createESMBundleConfig;
    /**
     * 创建传统配置（Classic 模式或保留 ESM）
     */
    private createClassicConfig;
    private createLogger;
    private createRollupWarnHandler;
    private getPlatformConfig;
    private shouldMinifyCSS;
    private shouldMinifyJS;
    /**
     * 统一的 Terser 混淆配置
     * 方案：开启顶层变量混淆 + 多轮压缩（不做属性混淆，避免破坏引擎运行时）
     *
     * 注意：当 compressJS 启用时，javascript-obfuscator 会做深度混淆，
     * Terser 仍然负责基础的压缩和变量名混淆。
     */
    private getTerserOptions;
    private createPlugins;
    private getPlayableOptions;
    private resolveExternFiles;
}
