import { _ModuleSupport } from 'ag-charts-community';
import { type Bounds4, type Point } from 'ag-charts-core';
import type { AnnotationContext } from '../annotationTypes';
import type { FibonacciProperties } from '../properties/fibonacciProperties';
import type { FibonacciRangeDatum } from '../utils/fibonacci';
import { AnnotationScene } from './annotationScene';
import { CollidableLine } from './collidableLineScene';
import { CollidableText } from './collidableTextScene';
export declare abstract class FibonacciScene<Datum extends FibonacciProperties> extends AnnotationScene {
    protected readonly trendLine: CollidableLine;
    text?: CollidableText;
    private readonly rangeFillsGroup;
    private readonly rangeFillsGroupSelection;
    private readonly rangeStrokesGroup;
    private readonly rangeStrokesGroupSelection;
    private readonly labelsGroup;
    private readonly labelsGroupSelection;
    protected anchor: _ModuleSupport.FloatingToolbarAnchor;
    constructor();
    update(datum: Datum, context: AnnotationContext): void;
    protected extendLine({ x1, y1, x2, y2 }: Bounds4, datum: Datum, context: AnnotationContext): {
        x1: number;
        y1: number;
        x2: number;
        y2: number;
    };
    protected updateLine(datum: Datum, coords?: Bounds4, line?: CollidableLine): void;
    private updateRangeStrokes;
    protected updateRanges(datum: Datum, data: FibonacciRangeDatum[], context: AnnotationContext): void;
    private updateRangeFills;
    private updateRangeLabels;
    private checkWithinBounds;
    protected updateText(datum: Datum, coords: Bounds4): void;
    updateAnchor(_datum: Datum, coords: Bounds4, _context: AnnotationContext, _bbox?: _ModuleSupport.BBox): void;
    containsPoint(x: number, y: number): boolean;
    getNodeAtCoords(x: number, y: number): string | undefined;
    protected getHandleStyles(datum: Datum): {
        fill: string | undefined;
        stroke: string | undefined;
        strokeOpacity: number | undefined;
        strokeWidth: number | undefined;
    };
    drag(datum: Datum, target: Point, context: AnnotationContext, snapping: boolean): void;
    protected abstract dragHandle(datum: Datum, target: Point, context: AnnotationContext, snapping: boolean): void;
    protected abstract dragAll(datum: Datum, target: Point, context: AnnotationContext): void;
    abstract translatePoints({ datum, start, end, translation, context, }: {
        datum: Datum;
        start: Point;
        end: Point;
        translation: Point;
        context: AnnotationContext;
    }): void;
    abstract translate(datum: Datum, translation: Point, context: AnnotationContext): void;
    abstract copy(datum: Datum, copiedDatum: Datum, context: AnnotationContext): void;
    abstract snapToAngle(datum: Datum, coords: Point, context: AnnotationContext): void;
    getAnchor(): _ModuleSupport.FloatingToolbarAnchor;
    getCursor(): string;
    protected abstract updateHandles(datum: Datum, coords1: Bounds4, coords2?: Bounds4, bbox?: _ModuleSupport.BBox): void;
}
