import { Point } from "../../../Core/Point";
import { Rect } from "../../../Core/Rect";
import { ESurfaceType } from "../../../types/SurfaceType";
import type { ModifierMouseArgs } from "../../ChartModifiers/ModifierMouseArgs";
import type { IRenderContext2D } from "../../Drawing/IRenderContext2D";
import type { CoordinateCalculatorBase } from "../../Numerics/CoordinateCalculators/CoordinateCalculatorBase";
import type { SciChartSurface } from "../SciChartSurface";
import type { TDpiChangedEventArgs } from "../TextureManager/DpiHelper";
import type { IAnnotationBaseOptions } from "./AnnotationBase";
import { EAnnotationType } from "./types/EAnnotationType";
import { RenderContextAnnotationBase } from "./RenderContextAnnotationBase";
/**
 * Options passed to the constructor of a {@link BoxAnnotation}, used to configure it at instantiation time
 */
export interface IBoxAnnotationOptions extends IAnnotationBaseOptions {
    /**
     * The stroke for the outline of the {@link BoxAnnotation}
     * @remarks Acceptable values include RGB format e.g. ```#FF0000```, RGBA format e.g. ```#FF000077`` and RGBA format e.g. ```rgba(255,0,0,0.5)```
     */
    stroke?: string;
    /**
     * The strokeThickness for the outline of the {@link BoxAnnotation}
     */
    strokeThickness?: number;
    /**
     * The fill for the {@link BoxAnnotation}
     * @remarks Acceptable values include RGB format e.g. ```#FF0000```, RGBA format e.g. ```#FF000077`` and RGBA format e.g. ```rgba(255,0,0,0.5)```
     */
    fill?: string;
}
/**
 * @summary The {@link BoxAnnotation} provides an {@link AnnotationBase | Annotation} which draws a rectangle or box over the {@link SciChartSurface}
 * @description
 * To add a {@link BoxAnnotation} to a {@link SciChartSurface}, use the following code:
 * ```ts
 * const sciChartSurface: SciChartSurface;
 * const boxAnnotation = new BoxAnnotation( { x1: 1, x2: 2, y1: 3, y2: 4, fill: "#FF000077", stroke: "#FF0000"});
 * sciChartSurface.annotations.add(boxAnnotation);
 * ```
 * @remarks Uses the fast WebGL/WebAssembly {@link WebGL2RenderingContext} for rendering
 */
export declare class BoxAnnotation extends RenderContextAnnotationBase {
    /** @inheritDoc */
    readonly type = EAnnotationType.RenderContextBoxAnnotation;
    readonly surfaceTypes: ESurfaceType[];
    private strokeThicknessProperty;
    private strokeProperty;
    private fillProperty;
    private nativeDrawingProvider;
    private strokePenCache;
    private fillBrushCache;
    private xValues;
    private yValues;
    /**
     * Create an instance of a BoxAnnotation
     * @param options Optional parameters of type {@link IBoxAnnotationOptions} which configure the annotation upon construction
     */
    constructor(options?: IBoxAnnotationOptions);
    /**
     * Gets stroke for the outline of the {@link BoxAnnotation}
     * @remarks Acceptable values include RGB format e.g. ```#FF0000```, RGBA format e.g. ```#FF000077`` and RGBA format e.g. ```rgba(255,0,0,0.5)```
     */
    get stroke(): string;
    /**
     * Sets the stroke for the outline of the {@link BoxAnnotation}
     * @remarks Acceptable values include RGB format e.g. ```#FF0000```, RGBA format e.g. ```#FF000077`` and RGBA format e.g. ```rgba(255,0,0,0.5)```
     */
    set stroke(htmlColorCode: string);
    /**
     * Gets the strokeThickness for the outline of the {@link BoxAnnotation}
     */
    get strokeThickness(): number;
    /**
     * Sets the strokeThickness for the outline of the {@link BoxAnnotation}
     */
    set strokeThickness(value: number);
    /**
     * Gets the fill for the {@link BoxAnnotation}
     * @remarks Acceptable values include RGB format e.g. ```#FF0000```, RGBA format e.g. ```#FF000077`` and RGBA format e.g. ```rgba(255,0,0,0.5)```
     */
    get fill(): string;
    /**
     * Sets the fill for the {@link BoxAnnotation}
     * @remarks Acceptable values include RGB format e.g. ```#FF0000```, RGBA format e.g. ```#FF000077`` and RGBA format e.g. ```rgba(255,0,0,0.5)```
     */
    set fill(htmlColorCode: string);
    /** @inheritDoc */
    delete(): void;
    /** @inheritDoc */
    drawWithContext(renderContext: IRenderContext2D, xCalc: CoordinateCalculatorBase, yCalc: CoordinateCalculatorBase, seriesViewRect: Rect, surfaceViewRect: Rect, chartViewRect: Rect): void;
    /** @inheritDoc */
    onAttach(scs: SciChartSurface): void;
    onDragStarted(args: ModifierMouseArgs): boolean;
    calcDragDistance(xyValues: Point): void;
    onDpiChanged(args: TDpiChangedEventArgs): void;
    toJSON(): {
        type: EAnnotationType;
        options: Required<Omit<IAnnotationBaseOptions, never>>;
    };
    protected checkIsClickedOnAnnotationInternal(x: number, y: number): boolean;
    protected notifyPropertyChanged(propertyName: string): void;
    protected updateAdornerInner(): void;
    svgStringAdornerTemplate(x1: number, y1: number, x2: number, y2: number): string;
    private drawWithProvider;
}
