import * as PIXI from "pixi.js-legacy";
import * as MedsurfDraw from "../../public-api";
import * as Models from '@ascii-dev-user/medsurf-lib/models';
import { BaseElementContainer, BaseElementContainerModel, ColorMode, NumberMode } from "../../bases/elements/BaseElementContainer";
export declare enum LineTypes {
    NOT_INITIALIZED = 0,
    LINEAR = 1,
    QUADRATIC = 2,
    BEZIER = 3
}
export declare enum LineDirection {
    START_END = 0,
    END_START = 1
}
export declare class GraphicLine {
    type: LineTypes;
    start: BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>> | null;
    end: BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>> | null;
    direction: LineDirection;
    interactWithLines: boolean;
    controlStart: PIXI.IPoint | null;
    controlEnd: PIXI.IPoint | null;
}
export declare class ControlPoints {
    c1: PIXI.IPoint;
    c2: PIXI.IPoint;
    l1: number;
    l2: number;
}
export declare class Line extends BaseElementContainer<Models.Line, BaseElementContainerModel<Models.Line>> {
    private _type;
    private _direction;
    private _start;
    private _end;
    private _controlStart;
    private _controlEnd;
    private _moveInteraction;
    private _selectInteraction;
    protected _debounceControlSelectItemMethod: any;
    protected _debounceControlUnselectItemMethod: any;
    protected _lineElement: MedsurfDraw.LineObject | undefined;
    protected _lineCornerElement: MedsurfDraw.LineCorner;
    protected _lineControlPointElement: MedsurfDraw.LineControlPoint;
    protected _editButtonElement: MedsurfDraw.RoundButtonElement;
    protected _moveToBackButtonElement: MedsurfDraw.RoundButtonElement;
    protected _moveToFrontButtonElement: MedsurfDraw.RoundSubMenuElement;
    protected _deleteButtonElement: MedsurfDraw.RoundButtonElement;
    protected _degroupButtonElement: MedsurfDraw.RoundButtonElement;
    protected _duplicateButtonElement: MedsurfDraw.RoundButtonElement;
    protected _clipboardButtonElement: MedsurfDraw.RoundButtonElement;
    constructor(image: MedsurfDraw.Image | MedsurfDraw.DeepZoomImage, model: Models.Line);
    init(): void;
    startDrawing(): void;
    stopDrawing(selfheal_timeout: number): void;
    draw(): void;
    destroy(options?: {
        children?: boolean;
        texture?: boolean;
        baseTexture?: boolean;
    }): void;
    static getInstance(image: MedsurfDraw.Image | MedsurfDraw.DeepZoomImage, startPositionPoint: string, endPositionPoint: string, bezierCourve: boolean, imageWidth: number): Line;
    hasPositionPoint(point: MedsurfDraw.PositionPoint | MedsurfDraw.FillCollection): boolean;
    protected _getLineObject(points: MedsurfDraw.StraightLinePointsModel | MedsurfDraw.QuadraticCurvePointsModel | MedsurfDraw.BezierLinePointsModel): MedsurfDraw.LineObject | undefined;
    protected _getLinePointsModel(): MedsurfDraw.StraightLinePointsModel | MedsurfDraw.QuadraticCurvePointsModel | MedsurfDraw.BezierLinePointsModel | undefined;
    protected _getStraightLinePointsModel(start: BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>>, end: BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>>): MedsurfDraw.StraightLinePointsModel | undefined;
    protected _getQuadraticCurvePointsModel(start: BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>>, end: BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>>, startLines: MedsurfDraw.Line[], endLines: MedsurfDraw.Line[]): MedsurfDraw.QuadraticCurvePointsModel;
    protected _getBezierLinePointsModel(start: MedsurfDraw.PositionPoint, end: MedsurfDraw.PositionPoint, startLines: MedsurfDraw.Line[], endLines: MedsurfDraw.Line[]): MedsurfDraw.BezierLinePointsModel;
    protected static _findControlPoints(p1: PIXI.IPoint, p2: PIXI.IPoint, p3: PIXI.IPoint): MedsurfDraw.ControlPoints;
    protected _removeModeInit(): void;
    protected _modeDefault(): void;
    protected _removeModeDefault(): void;
    protected _modeMarker(): void;
    protected _removeModeMarker(): void;
    protected _modeSelftest(): void;
    protected _removeModeSelftest(): void;
    protected _modeAuthor(): void;
    protected _removeModeAuthor(): void;
    protected _modeSelectLayerGroup(): void;
    protected _removeModeSelectLayerGroup(parent: MedsurfDraw.ImageObject, mode: string): void;
    protected _modeSelectGrouping(): void;
    protected _removeModeSelectGrouping(parent: MedsurfDraw.ImageObject, mode: string): void;
    protected _modeSelectItem(): void;
    protected _removeModeSelectItem(parent: MedsurfDraw.ImageObject, mode: string): void;
    protected _modeBlockedItem(): void;
    protected _removeModeBlockedItem(): void;
    protected _modeDrawItem(): void;
    protected _removeModeDrawItem(): void;
    protected _modeChooseSelect(): void;
    protected _removeModeChooseSelect(): void;
    protected _modeChooseUnselect(): void;
    protected _removeModeChooseUnselect(): void;
    protected _modeCloneItem(): void;
    protected _removeModeCloneItem(): void;
    protected _modeDelete(): void;
    collapseAllMenus(event: PIXI.InteractionEvent): void;
    onButtonEdit(): void;
    onButtonMoveToFront(): void;
    onButtonMoveToBack(): void;
    onButtonDelete(event: PIXI.InteractionEvent): void;
    onButtonDegroup(unselectElement?: boolean): void;
    onButtonDuplicate(): void;
    onButtonClipboard(): void;
    onButtonBezier(override?: boolean): void;
    onColor(mode: ColorMode, has: boolean, color: number | undefined, colorAlpha: number | undefined): void;
    onNumber(mode: NumberMode, number: number): void;
    onButtonInteractWithLines(override?: boolean): void;
    onButtonStatic(override?: boolean): void;
    onButtonAddMiddlePoint(image: Models.Image, layerGroup?: Models.LayerGroup): void;
    controlSelectItem(): void;
    controlUnselectItem(image: MedsurfDraw.Image): void;
    externControlSelectItem(): void;
    controlSelectLayerGroup(image: MedsurfDraw.Image): boolean;
    controlUnselectLayerGroup(): void;
    controlDrawItem(isNew: boolean): void;
    controlCloneItem(): void;
    showControlPoints(): void;
    hideControlPoints(): void;
    startMove(): void;
    onMove(event: PIXI.InteractionEvent): void;
    endMove(): void;
    startMovePoint(): void;
    endMovePoint(): void;
    pointStartMove(): void;
    onPointUpdate(): void;
    onHover(): void;
    onOut(): void;
    onSelectStart(event: PIXI.InteractionEvent, preventSelectItem?: boolean): void;
    onSelftest(): void;
    get moveInteraction(): MedsurfDraw.MoveInteraction<Line>;
    set moveInteraction(value: MedsurfDraw.MoveInteraction<Line>);
    get selectInteraction(): MedsurfDraw.SelectInteraction<Line>;
    set selectInteraction(value: MedsurfDraw.SelectInteraction<Line>);
    get type(): LineTypes;
    set type(value: LineTypes);
    get direction(): LineDirection;
    set direction(value: LineDirection);
    get start(): BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>> | null;
    set start(value: BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>> | null);
    get end(): BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>> | null;
    set end(value: BaseElementContainer<Models.ImageObject, BaseElementContainerModel<Models.ImageObject>> | null);
    get controlStart(): PIXI.IPoint | null;
    set controlStart(value: PIXI.IPoint | null);
    get controlEnd(): PIXI.IPoint | null;
    set controlEnd(value: PIXI.IPoint | null);
}
