import type { MouseManager } from "../../Core/Mouse/MouseManager";
import type { ObservableArray } from "../../Core/ObservableArray";
import type { Rect } from "../../Core/Rect";
import type { IChartModifierBase } from "../ChartModifiers/ChartModifierBase";
import type { IAnnotation } from "./Annotations/IAnnotation";
import type { ISciChartSurfaceBase } from "./ISciChartSurfaceBase";
import type { INotifyOnDpiChanged } from "./TextureManager/DpiHelper";
import type { ISuspendable } from "./UpdateSuspender";
export interface ISciChartSurfaceNative extends ISciChartSurfaceBase, ISuspendable, INotifyOnDpiChanged {
    /**
     * The {@link HTMLCanvasElement} which is the WebGL canvas that SciChart draws to
     */
    domCanvasWebGL: HTMLCanvasElement;
    /**
     * Gets Chart Modifier Groups, is used for sharing events between chart modifiers
     */
    readonly chartModifierGroups: string[];
    /**
     * Gets the Series View {@link Rect}, a rectangle relative to the entire size of the {@link SciChartSurfaceBase}
     */
    readonly seriesViewRect: Rect;
    readonly clipRect: Rect;
    /**
     * @summary Gets the collection of {@link IAnnotation} - annotations, markers or shapes drawn over the top of a {@link SciChartSurface}
     * @description A {@link SciChartSurface} can have zero to many {@link IAnnotation | Annotations}.
     *
     * The Annotations are drawn using our WebGL / WebAssembly rendering engine, but some use SVG for maximum configurability.
     * See derived types of {@link IAnnotation} such as {@link BoxAnnotation}, {@link LineAnnotation} etc...
     *
     * Use this collection to add and remove Annotations to the chart.
     */
    readonly annotations: ObservableArray<IAnnotation>;
    /**
     * An {@link ObservableArray} of {@link IChartModifierBase} derived types. Chart Modifiers provide behavior such as zooming, panning,
     * tooltips, legends and more in SciChart's High Performance Realtime
     * {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}.
     * You can use our built in modifiers (see derived types of {@link ChartModifierBase}, or create your own for custom interaction behavior.
     */
    readonly chartModifiers: ObservableArray<IChartModifierBase>;
    /**
     * Used internally, the flag is set after {@link SciChartSurfaceBase} is initialized
     */
    setIsInitialized(): void;
    /**
     * Gets the main WebGL or 2D canvas
     */
    getMainCanvas(): HTMLCanvasElement;
    /** Used internally to prevent redraw attamps if the webGL context ahs been lost */
    isWebGLContextActive: boolean;
    /**
     * Gets the SciChartSurface Background as an HTML color code
     */
    background: string;
    /**
     * The {@link MouseManager} subscribes to mouse events on the {@link domChartRoot} and routes them to components within SciChart
     */
    mouseManager: MouseManager;
}
