import { Event } from "../../../base/common/event.js";
import { Disposable } from "../../../base/common/lifecycle.js";
import { ConfigurationChangedEvent, EditorOption, FindComputedEditorOptionValueById, IComputedEditorOptions, IEditorOptions, IEnvironmentalOptions } from "../../common/config/editorOptions.js";
import { BareFontInfo, FontInfo, IValidatedEditorOptions } from "../../common/config/fontInfo.js";
import { IDimension } from "../../common/core/dimension.js";
import { IEditorConfiguration } from "../../common/config/editorConfiguration.js";
import { AccessibilitySupport } from "../../../platform/accessibility/common/accessibility.js";
import { IAccessibilityService } from "../../../platform/accessibility/common/accessibility.service.js";
import { MenuId } from "../../../platform/actions/common/actions.js";
export interface IEditorConstructionOptions extends IEditorOptions {
    dimension?: IDimension;
    overflowWidgetsDomNode?: HTMLElement;
}
export declare class EditorConfiguration extends Disposable implements IEditorConfiguration {
    private readonly _accessibilityService;
    private _onDidChange;
    readonly onDidChange: Event<ConfigurationChangedEvent>;
    private _onDidChangeFast;
    readonly onDidChangeFast: Event<ConfigurationChangedEvent>;
    readonly isSimpleWidget: boolean;
    readonly contextMenuId: MenuId;
    readonly isStandaloneEditor: boolean;
    private readonly _containerObserver;
    private _isDominatedByLongLines;
    private _viewLineCount;
    private _lineNumbersDigitCount;
    private _reservedHeight;
    private _glyphMarginDecorationLaneCount;
    private _targetWindowId;
    private readonly _computeOptionsMemory;
    private readonly _rawOptions;
    private _validatedOptions;
    options: ComputedEditorOptions;
    constructor(isSimpleWidget: boolean, contextMenuId: MenuId, isStandaloneEditor: boolean, options: Readonly<IEditorConstructionOptions>, container: HTMLElement | null, _accessibilityService: IAccessibilityService);
    private _recomputeOptions;
    private _computeOptions;
    protected _readEnvConfiguration(): IEnvConfiguration;
    protected _readFontInfo(bareFontInfo: BareFontInfo): FontInfo;
    getRawOptions(): IEditorOptions;
    updateOptions(_newOptions: Readonly<IEditorOptions>): void;
    observeContainer(dimension?: IDimension): void;
    setIsDominatedByLongLines(isDominatedByLongLines: boolean): void;
    setModelLineCount(modelLineCount: number): void;
    setViewLineCount(viewLineCount: number): void;
    setReservedHeight(reservedHeight: number): void;
    setGlyphMarginDecorationLaneCount(decorationLaneCount: number): void;
}
export interface IEnvConfiguration {
    extraEditorClassName: string;
    outerWidth: number;
    outerHeight: number;
    emptySelectionClipboard: boolean;
    pixelRatio: number;
    accessibilitySupport: AccessibilitySupport;
    editContextSupported: boolean;
}
declare class ValidatedEditorOptions implements IValidatedEditorOptions {
    private readonly _values;
    _read<T>(option: EditorOption): T;
    get<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;
    _write<T>(option: EditorOption, value: T): void;
}
export declare class ComputedEditorOptions implements IComputedEditorOptions {
    private readonly _values;
    _read<T>(id: EditorOption): T;
    get<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;
    _write<T>(id: EditorOption, value: T): void;
}
export declare class EditorOptionsUtil {
    static validateOptions(options: IEditorOptions): ValidatedEditorOptions;
    static computeOptions(options: ValidatedEditorOptions, env: IEnvironmentalOptions): ComputedEditorOptions;
    private static _deepEquals;
    static checkEquals(a: ComputedEditorOptions, b: ComputedEditorOptions): ConfigurationChangedEvent | null;
    static applyUpdate(options: IEditorOptions, update: Readonly<IEditorOptions>): boolean;
}
export {};
