import type { BaseBuildOptions, BaseBuildOutput, PlayableScriptsConfig } from '../types.js';
/**
 * PlayableScripts 构建工具适配器
 *
 * 职责：作为 PlayCraft 和 @playcraft/devkit 之间的中间层
 * - @playcraft/devkit 是 PlayCraft 平台内置的构建工具（已集成到 @playcraft/cli）
 * - 用户项目只需依赖 @playcraft/adsdk（运行时 SDK），不需要安装构建工具
 * - 通过平台内置的 devkit 调用 playable-scripts build/builds 命令
 * - 将 playcraft.config.json 的参数转换为 playable-scripts CLI 参数
 * - 收集构建产物并标记 skipChannelBuild
 *
 * 注意：产物已是最终格式（单 HTML），无需 ViteBuilder 二次处理
 */
export declare class PlayableScriptsAdapter {
    private projectDir;
    private options;
    private config?;
    private static readonly DEFAULTS;
    constructor(projectDir: string, options: BaseBuildOptions, config?: PlayableScriptsConfig);
    /**
     * 执行 playable-scripts 构建
     *
     * 流程:
     * 1. 合并配置（playcraft.config.json → builds.config.js）
     * 2. 构建 CLI 参数
     * 3. 调用平台内置的 playable-scripts build/builds
     * 4. 收集构建产物
     * 5. 复制到输出目录
     * 6. 写入元数据（skipChannelBuild: true）
     *
     * 注意：不再在用户项目中执行 npm install，
     * devkit 是 PlayCraft 平台内置的构建工具。
     */
    baseBuild(): Promise<BaseBuildOutput>;
    /**
     * 扫描项目中的可用主题
     * 主题目录: src/theme/ 下的子目录（排除 index.ts 等文件）
     */
    private scanThemes;
    /**
     * 将 playcraft.config.json 的参数注入到项目的 builds.config.js
     * - storeUrls → googlePlayUrl / appStoreUrl
     * - naming → naming
     * - themes.enabled → 批量构建时自动禁用主题
     * - build.outputDir → 强制与 PlayCraft 输出目录一致
     */
    private mergeConfig;
    /**
     * 将 PlayCraft 配置转换为 playable-scripts CLI 参数
     * ★ 始终显式传递 --obfuscate-level 和 --fflate-compression
     */
    private buildCLIArgs;
    private logBuildParams;
    /**
     * 包名迁移映射表
     * 旧包名 -> 新包名
     */
    private static readonly PACKAGE_MIGRATIONS;
    /**
     * 自动迁移用户项目中的旧包名引用
     * 将源码中的旧包名替换为新包名
     */
    private migratePackageNames;
    /**
     * 递归查找源码文件
     */
    private findSourceFiles;
    /**
     * 准备构建环境
     * - 执行包名迁移
     * - 确保项目本地 devkit 和 loader 可用
     */
    private prepareBuildEnvironment;
    /**
     * 调用 playable-scripts 命令
     *
     * 流程:
     * 1. 准备构建环境（包名迁移、安装本地 devkit 和 loader）
     * 2. 执行构建（使用项目本地 devkit）
     *
     * 单渠道模式: <local-devkit> build <channel> [options]
     * 批量模式:   <local-devkit> builds [options]
     */
    private executePlayableScripts;
    /**
     * 从参数列表中移除指定参数及其值
     */
    private removeArg;
    /**
     * 查找项目本地的 playable-scripts 可执行文件
     * 优先查找项目 node_modules 中的版本，确保 webpack 能正确解析 loader
     */
    private findLocalPlayableScripts;
    /**
     * 确保项目本地存在 playable-scripts（@playcraft/devkit）
     * 若缺失则执行 npm install 安装 package.json 中定义的所有依赖
     */
    private ensureLocalDevkit;
    /**
     * 检查构建所需 loader 是否存在（babel-loader）
     * 注意：babel-loader 是必须的，esbuild-loader/esbuild 是 devkit 内部可选依赖
     */
    private ensureBuildLoaders;
    /**
     * 确保 package.json 中有 build/builds 脚本
     * devkit 必须通过 npm script 调用，不能直接执行 .js 文件
     */
    private ensureBuildScripts;
    /**
     * 扫描 playable-scripts 的输出目录，收集构建产物
     *
     * 单渠道输出: dist/<file>.html
     * 批量输出: dist/<theme>/<channel>/<file>.html
     */
    private collectOutputs;
    /**
     * 递归扫描输出目录，收集 HTML/ZIP 文件
     *
     * devkit 的输出结构:
     * - 批量构建: dist/<theme>/<channel>/<file>.html|zip
     * - 单渠道:   dist/<file>.html|zip
     *
     * 注意：只收集目标渠道的产物，过滤掉其他渠道
     */
    private scanOutputDir;
    /**
     * 清理输出目录，删除所有旧产物
     */
    private cleanOutputDir;
    /**
     * 递归删除目录
     */
    private removeDirRecursive;
    private copyToOutputDir;
    /**
     * 是否对 playable-scripts 使用 --zip。
     * Google/Facebook 等双格式渠道默认 HTML，与 CLI、Portal、GoogleAdapter 一致；仅 ZIP 的渠道仍强制 ZIP。
     */
    private isZipOutput;
    /**
     * 获取平台默认的文件名格式
     */
    private getPlatformFilename;
    private saveBuildMetadata;
    /**
     * 执行命令并设置超时
     */
    private runCommandWithTimeout;
}
