import type { CssColor, ITheme, IThemePalette, ThemeMode } from '@breadstone/mosaik-themes';
import type { Theme2Element } from './Theme2Element';
import { type IEventEmitter, type IEventDetail } from '@breadstone/mosaik-elements';
/**
 * The `Theme2` class.
 *
 * @public
 */
export declare class Theme2 {
    private static readonly _themeElements;
    private readonly _themeChanged;
    private readonly _schemeChanged;
    private readonly _paletteChanged;
    /**
     * Constructs a new instance of the `Theme` class.
     *
     * @public
     */
    constructor();
    /**
     * @public
     * @readonly
     * @eventProperty
     */
    get themeChanged(): IEventEmitter<IEventDetail>;
    /**
     * @public
     * @readonly
     * @eventProperty
     */
    get schemeChanged(): IEventEmitter<IEventDetail>;
    /**
     * @public
     * @readonly
     * @eventProperty
     */
    get paletteChanged(): IEventEmitter<IEventDetail>;
    /**
     * @public
     * @static
     */
    static register(element: Theme2Element): void;
    /**
     * @public
     * @static
     */
    static unregister(element: Theme2Element): void;
    /**
     * @public
     */
    getTheme(): ITheme;
    getDocumentTheme(): string | null;
    getDocumentThemeMode(): ThemeMode | null;
    /**
     * Applies the specified scheme.
     *
     * @public
     */
    applyScheme(scheme: ITheme['scheme']): void;
    /**
     * Replaces the scheme with the specified key.
     * This is useful when you want to replace a specific scheme in the theme.
     *
     * @public
     */
    replaceScheme(key: string, scheme: Record<string, CssColor>): void;
    /**
     * Applies the specified palette.
     *
     * @public
     */
    applyPalette(palette: ITheme['palette']): void;
    /**
     * Replaces the palette with the specified key.
     * This is useful when you want to replace a specific palette in the theme.
     *
     * @public
     */
    replacePalette(key: string, palette: Record<string, IThemePalette | CssColor>): void;
    /**
     * Applies the specified font family.
     *
     * @public
     */
    applyFontFamily(fontFamily: ITheme['fontFamily']): void;
    /**
     * Replaces the font family with the specified value.
     * This is useful when you want to replace the font family in the theme.
     *
     * @public
     */
    replaceFontFamily(fontFamily: string): void;
    /**
     * @public
     */
    applyTypography(typography: ITheme['typography']): void;
    /**
     * Applies the specified layout.
     *
     * @public
     */
    applyLayout(layout: ITheme['layout']): void;
    /**
     * Replaces the layout with the specified value.
     * This is useful when you want to replace the layout in the theme.
     *
     * @public
     */
    replaceLayout(layout: ITheme['layout']): void;
    /**
     * @public
     */
    applyElevation(elevation: ITheme['elevation']): void;
}
/**
 * @public
 */
export declare class Theme2ServiceLocator {
    private static _current;
    static get current(): Theme2;
    static isSet(): boolean;
    static set(current: Theme2): void;
}
//# sourceMappingURL=Theme2.d.ts.map