import type { AgCoreBeanCollection } from '../interfaces/agCoreBeanCollection';
import type { BaseEvents } from '../interfaces/baseEvents';
import type { BaseProperties } from '../interfaces/baseProperties';
import type { IEnvironment } from '../interfaces/iEnvironment';
import type { IPropertiesService } from '../interfaces/iProperties';
import type { Theme } from '../theming/theme';
import { ThemeImpl } from '../theming/themeImpl';
import type { ParamType } from '../theming/themeTypeUtils';
import { AgBeanStub } from './agBeanStub';
export declare abstract class BaseEnvironment<TBeanCollection extends AgCoreBeanCollection<TProperties, TGlobalEvents, TCommon, TPropertiesService>, TProperties extends BaseProperties, TGlobalEvents extends BaseEvents, TCommon, TPropertiesService extends IPropertiesService<TProperties, TCommon>, TChangeKeys extends BaseCssChangeKeys = BaseCssChangeKeys> extends AgBeanStub<TBeanCollection, TProperties, TGlobalEvents, TCommon, TPropertiesService> implements IEnvironment {
    beanName: "environment";
    protected eRootDiv: HTMLElement;
    eStyleContainer: HTMLElement;
    cssLayer: string | undefined;
    styleNonce: string | undefined;
    private mutationObserver;
    private readonly sizeEls;
    private readonly lastKnownValues;
    private eMeasurementContainer;
    sizesMeasured: boolean;
    wireBeans(beans: TBeanCollection): void;
    private theme;
    private readonly globalCSS;
    protected abstract initVariables(): void;
    protected abstract getAdditionalCss(): Map<string, string[]>;
    protected abstract postProcessThemeChange(newTheme: ThemeImpl | undefined, themeProperty?: Theme | 'legacy'): void;
    protected abstract getDefaultTheme(): Theme;
    protected abstract themeError(theme: Theme | 'legacy'): void;
    protected abstract shadowRootError(): void;
    protected abstract varError(cssName: string, defaultValue: number): void;
    postConstruct(): void;
    applyThemeClasses(el: HTMLElement, extraClasses?: string[]): void;
    private applyLegacyThemeClasses;
    addGlobalCSS(css: string, debugId: string): void;
    getDefaultListItemHeight(): number;
    protected getCSSVariablePixelValue(variable: CssVariable<TChangeKeys>): number;
    private measureSizeEl;
    protected getMeasurementContainer(): HTMLElement;
    protected getSizeEl(variable: CssVariable<TChangeKeys>): HTMLElement;
    protected setSizeElStyles(sizeEl: HTMLElement, variable: CssVariable<TChangeKeys>): string;
    private handleThemeChange;
    private handleNewTheme;
    protected fireStylesChangedEvent(change: keyof TChangeKeys & string): void;
}
export type CssVariable<TChangeKeys extends BaseCssChangeKeys> = {
    changeKey: keyof TChangeKeys & string;
    type: ParamType;
    defaultValue: number;
    noWarn?: boolean;
    cacheDefault?: boolean;
};
export interface BaseCssChangeKeys {
    theme: true;
    listItemHeight: true;
}
