import { type ControlsWrapper } from '../../../data/book-entry/book-page/controls-wrapper.js';
import { type BookRouter } from '../../../routing/book-router.js';
import { type ColorTheme } from '../../color-theme/color-theme.js';
import { type ThemeConfig } from '../../color-theme/create-color-theme.js';
import { type ElementBookConfig } from './element-book-config.js';
import { type GlobalValues } from './global-values.js';
/**
 * Current color theme state used inside of {@link ElementBookApp}.
 *
 * @category Internal
 */
export type ColorThemeState = {
    config: ThemeConfig | undefined;
    theme: ColorTheme;
};
/**
 * The element-book app itself. Instantiate one of these where you want your element-book pages to
 * render. Make sure to also provide an array of pages to actually render!
 *
 * @category Main
 */
export declare const ElementBookApp: import("element-vir").DeclarativeElementDefinition<"element-book-app", ElementBookConfig, {
    currentRoute: Readonly<Readonly<Required<import("spa-router-vir").SpaRoute<import("../../../routing/book-routing.js").ValidBookPaths, undefined, undefined>>>>;
    router: undefined | BookRouter;
    loading: boolean;
    colors: {
        config: undefined;
        theme: ColorTheme;
    };
    treeBasedControls: {
        pages: ElementBookConfig["pages"];
        lastGlobalInputs: GlobalValues;
        controls: ControlsWrapper;
    } | undefined;
    originalWindowTitle: string | undefined;
    isDarkMode: boolean;
    /** Cleanup callback for the dark mode media query listener. */
    darkModeCleanup: (() => void) | undefined;
}, {
    pathUpdate: import("element-vir").DefineEvent<readonly string[]>;
}, "element-book-app-", "element-book-app-", readonly ["footer", "navHeader"], readonly []>;
