import { type Bounds4, type Point } from 'ag-charts-core';
import type { PointProperties } from '../annotationProperties';
import type { AnnotationContext } from '../annotationTypes';
import { AnnotationScene } from './annotationScene';
export declare abstract class LinearScene<Datum extends {
    start: Pick<PointProperties, 'x' | 'y'>;
    end: Pick<PointProperties, 'x' | 'y'>;
    extendStart?: boolean;
    extendEnd?: boolean;
    isWriteable: () => boolean;
}> extends AnnotationScene {
    protected dragState?: {
        offset: Point;
        start: Point;
        end: Point;
    };
    protected overflowContinuous: number;
    protected extendLine({ x1, y1, x2, y2 }: Bounds4, datum: Datum, context: AnnotationContext): {
        x1: number;
        y1: number;
        x2: number;
        y2: number;
    };
    dragStart(datum: Datum, target: Point, context: AnnotationContext): void;
    drag(datum: Datum, target: Point, context: AnnotationContext, snapping: boolean): void;
    protected abstract dragHandle(datum: Datum, target: Point, context: AnnotationContext, snapping: boolean): void;
    protected dragAll(datum: Datum, target: Point, context: AnnotationContext): void;
    translate(datum: Datum, translation: Point, context: AnnotationContext): void;
    copy(datum: Datum, copiedDatum: Datum, context: AnnotationContext): Datum | undefined;
    protected translatePoints(datum: Datum, start: Point, end: Point, translation: Point, context: AnnotationContext): void;
    protected getTranslatePointsVectors(start: Point, end: Point): {
        start: Point;
        end: Point;
    };
}
