/**
 * @file 主题皮肤与明暗模式
 * @module theme/Theme
 *
 * 管理 `penna-theme-*`（皮肤）与 `penna-dark`（明暗）两类 class，
 * 并通过 {@link EventBus} 广播 {@link THEME_EVENT_SKIN} / {@link THEME_EVENT_LIGHT_DARK}。
 *
 * ## class 分工
 *
 * | 元素 | class | 作用 |
 * | ---- | ----- | ---- |
 * | `rootElement`（用户挂载点） | `penna-theme-{id}`、`penna-dark` | 皮肤变量与编辑器 chrome |
 * | 预览内容层（由 Penna 创建） | `penna-render` | 供 `.penna-theme-* .penna-render` 命中渲染样式；外层 `penna-preview` 负责滚动 |
 *
 * Theme 只写 root 上的皮肤 class；`penna-render` 由 Penna 挂在预览滚动壳内侧。
 */
import { EventBus } from "../core/event/EventBus";
import { Log } from "../core/Log";
import { LightDark } from "../theme/event/ThemeLightDarkEvent";
/**
 * 主题状态：皮肤 id + 明暗模式。
 *
 * 不直接操作样式表，仅切换 DOM class 并发出事件，供 Renderer / 编辑器等订阅。
 */
export declare class Theme {
    private readonly bus;
    private readonly logger;
    private readonly rootElement;
    private readonly themes?;
    /** 当前皮肤 id，对应 `penna-theme-{id}` */
    private id;
    /** 当前明暗模式 */
    private mode;
    /**
     * @param bus          实例级事件总线
     * @param logger       日志门面
     * @param rootElement  用户传入的挂载根，承载 `penna-theme-*` / `penna-dark`
     * @param themes       可用主题白名单；省略时使用全部内置主题
     */
    constructor(bus: EventBus, logger: Log, rootElement: HTMLElement, themes?: string[] | undefined);
    /** 可用皮肤 id；未传或空数组视为全部内置主题 */
    list(): string[];
    /**
     * 切换皮肤；未知 id 时打错误日志并跳过。
     *
     * id 变化时发出 {@link THEME_EVENT_SKIN}。
     *
     * @param id 皮肤 id，须出现在 {@link list} 中
     */
    setTheme(id: string): void;
    /** 当前主题快照：id、mode、isDark 及 DOM 引用 */
    getTheme(): {
        id: string;
        mode: LightDark;
        isDark: boolean;
        root: HTMLElement;
    };
    /**
     * 切换明暗模式；相同时 no-op。
     *
     * 发出 {@link THEME_EVENT_LIGHT_DARK}。
     *
     * @param mode `light` | `dark`
     */
    setLightDark(mode: LightDark): void;
    /** 同步皮肤 class：仅 {@link rootElement}，不写 `penna-render` */
    private applyThemeClasses;
    /** 同步明暗 class：`penna-dark` 仅挂在 {@link rootElement} */
    private applyAppearanceClass;
}
//# sourceMappingURL=Theme.d.ts.map