import type { ITheme } from '@breadstone/mosaik-themes';
import { CustomElement } from '../Controls/Components/Abstracts/CustomElement';
import { IThemeElementProps } from './IThemeElementProps';
import type { IThemeProvider } from './IThemeService';
/**
 * The `{@link Theme2Element}` element.
 *
 * This element delegates all theme application logic to {@link ThemeService},
 * which can also be used independently without this element.
 *
 * @public
 */
export declare class Theme2Element extends CustomElement implements IThemeElementProps, IThemeProvider {
    private _name;
    private _theme;
    private _global;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `name` property.
     * When set, this element will only respond to theme changes for this specific name.
     * When null (default), responds to global/default theme changes.
     *
     * @public
     */
    get name(): string | null;
    set name(value: string | null);
    /**
     * Gets or sets the `theme` property.
     * If no local theme is set, returns the theme from ThemeService for this element's name.
     *
     * @public
     */
    get theme(): ITheme | null;
    set theme(value: ITheme | null);
    /**
     * Gets or sets the `global` property.
     * When true, CSS variables are applied both locally and globally.
     * When false (default), CSS variables are only applied locally to this element.
     *
     * @public
     */
    get global(): boolean;
    set global(value: boolean);
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * Applies the complete theme.
     * Called by ThemeService to update this provider's internal state.
     * CSS variables are handled by ThemeService directly.
     *
     * @public
     * @param theme The theme to apply.
     */
    applyTheme(theme: ITheme | null): void;
    /**
     * Applies the scheme (light/dark mode color roles) from the theme.
     * Called by ThemeService to update this provider's internal state.
     *
     * @public
     * @param scheme The scheme to apply.
     */
    applyScheme(scheme: ITheme['scheme']): void;
    /**
     * Applies the color palette from the theme.
     * Called by ThemeService to update this provider's internal state.
     *
     * @public
     * @param palette The palette to apply.
     */
    applyPalette(palette: ITheme['palette']): void;
    /**
     * Applies the font family from the theme.
     * Called by ThemeService to update this provider's internal state.
     *
     * @public
     * @param fontFamily The font family to apply.
     */
    applyFontFamily(fontFamily: ITheme['fontFamily']): void;
    /**
     * Applies the typography settings from the theme.
     * Called by ThemeService to update this provider's internal state.
     *
     * @public
     * @param typography The typography settings to apply.
     */
    applyTypography(typography: ITheme['typography']): void;
    /**
     * Applies the layout settings from the theme.
     * Called by ThemeService to update this provider's internal state.
     *
     * @public
     * @param layout The layout settings to apply.
     */
    applyLayout(layout: ITheme['layout']): void;
    /**
     * Applies the elevation (shadow) settings from the theme.
     * Called by ThemeService to update this provider's internal state.
     *
     * @public
     * @param elevation The elevation settings to apply.
     */
    applyElevation(elevation: ITheme['elevation']): void;
    /**
     * Called when the theme property changes.
     * Delegates to ThemeService for CSS variable management.
     *
     * @protected
     */
    protected onThemePropertyChanged(prev?: ITheme, next?: ITheme): void;
}
export declare namespace Theme2Element {
    type Props = IThemeElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-theme2': Theme2Element;
    }
}
//# sourceMappingURL=Theme2Element.d.ts.map