import { AgDocument, type StrictHTMLElement } from 'ag-charts-core';
import type { AgChartThemeParams } from 'ag-charts-types';
import type { EventsHub } from '../core/eventsHub';
import { BBox } from '../scene/bbox';
import { BaseManager } from '../util/baseManager';
import { type Size } from '../util/sizeMonitor';
import { DOMElementProxy } from './domElementProxy';
declare const DOM_ELEMENT_CLASSES: readonly ["styles", "canvas", "canvas-background", "canvas-center", "canvas-container", "canvas-overlay", "canvas-proxy", "series-area", "tooltip-container"];
type DOMElementClass = (typeof DOM_ELEMENT_CLASSES)[number];
type DOMInsertOption = {
    where: InsertPosition;
    query: string;
};
export declare class DOMManager extends BaseManager {
    private readonly eventsHub;
    private readonly chart;
    private readonly agDocument;
    private readonly styleContainer?;
    private readonly skipCss?;
    readonly mode: 'normal' | 'minimal';
    static readonly className = "DOMManager";
    private static readonly batchedUpdateContainer;
    private static readonly headStyles;
    readonly anchorName: string;
    private readonly rootElements;
    private readonly styles;
    private readonly element;
    private pendingContainer?;
    private container?;
    private documentRoot?;
    private initiallyConnected?;
    containerSize?: Size;
    private readonly tabGuards?;
    private readonly observer?;
    private readonly sizeMonitor;
    private readonly cursorState;
    private _lastCursor;
    private _lastCenterSize;
    private readonly deferredProxies;
    private readonly elementProxy;
    private readonly deferredMode;
    private minWidth;
    private minHeight;
    private enableRtl?;
    private _isRtl;
    private _cachedCanvasRect;
    private _cachedRawOverlayRect;
    private _cachedScrollableContainer;
    private _pendingFlush?;
    private _deferring;
    constructor(eventsHub: EventsHub, chart: {
        styleNonce?: string;
    }, agDocument: AgDocument, initialContainer?: HTMLElement, styleContainer?: HTMLElement | undefined, skipCss?: boolean | undefined, mode?: 'normal' | 'minimal');
    private initDOM;
    private initRootElements;
    destroy(): void;
    private scheduleFlush;
    private flushDeferredProxies;
    private applyBatchedUpdateContainer;
    private updateStylesLocation;
    setSizeOptions(minWidth?: number, minHeight?: number, optionsWidth?: number, optionsHeight?: number): void;
    private updateContainerSize;
    setTabGuardIndex(tabIndex: number): void;
    setContainer(newContainer?: HTMLElement): void;
    updateContainer(): void;
    setThemeClass(themeClassName: string): void;
    setThemeParameters(params: AgChartThemeParams): void;
    setModuleCSSVariables(module: string, component: string | undefined, modifier: string | undefined, variables: Record<string, string | number>, numericKeys?: string[]): void;
    private setCSSVariables;
    updateCanvasLabel(ariaLabel: string): void;
    private getEventElement;
    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): () => void;
    removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
    /** Get the main chart area client bound rect. */
    getBoundingClientRect(): DOMRect;
    /**
     * Get the client bounding rect for overlay elements that might float outside the bounds of the
     * main chart area.
     */
    getOverlayClientRect(): DOMRect;
    private findScrollableContainer;
    private getRawOverlayClientRect;
    private getShadowDocumentRoot;
    getParent(domElementClass: DOMElementClass): HTMLElement;
    getChildBoundingClientRect(type: DOMElementClass): BBox;
    isManagedChildDOMElement(el: HTMLElement, domElementClass: DOMElementClass, id: string): boolean;
    contains(element: HTMLElement, domElementClass?: DOMElementClass): boolean;
    addStyles(id: string, styles: string): void;
    removeStyles(id: string): void;
    updateCursor(callerId: string, style?: string): void;
    getCursor(): string;
    get isRtl(): boolean;
    setEnableRtl(enableRtl?: boolean): void;
    private updateRtl;
    addChild(domElementClass: DOMElementClass, id: string, child?: HTMLElement, insert?: DOMInsertOption): StrictHTMLElement;
    addProxyChild(domElementClass: DOMElementClass, id: string): DOMElementProxy;
    addDeferredProxyChild(domElementClass: DOMElementClass, id: string): DOMElementProxy;
    setDeferring(active: boolean): void;
    removeChild(domElementClass: DOMElementClass, id: string): void;
    incrementDataCounter(name: string): void;
    setDataBoolean(name: string, value: boolean): void;
    setDataNumber(name: string, value: number): void;
    getDocument(): AgDocument;
    private invalidateRectCaches;
    private invalidateAllCaches;
    private setupGlobalListeners;
    private updateContainerClassName;
}
export {};
