import * as MedsurfDraw from "../../public-api";
import * as Models from '@ascii-dev-user/medsurf-lib/models';
import { BaseGenerator } from "../../bases/generators/BaseGenerator";
import { MarkerGeneratorModel } from "./MarkerGenerator";
export declare enum PrimitiveMarkerGeneratorStates {
    PRIMITIVE = 0,
    MARKER = 1
}
export declare class PrimitiveMarkerGeneratorModel extends MarkerGeneratorModel {
    type: Models.ImageObjectType.ARROW | Models.ImageObjectType.ELLIPSE | Models.ImageObjectType.RECTANGLE | Models.ImageObjectType.TEXT;
    rotateWithLine: boolean;
}
export declare class ArrowMarkerGeneratorModel extends PrimitiveMarkerGeneratorModel {
    hasWedgePoint: boolean;
}
export declare class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, PrimitiveMarkerGeneratorModel> {
    protected _enableKeyEvents: boolean;
    protected _state: PrimitiveMarkerGeneratorStates;
    protected _primitiveGenerator: MedsurfDraw.ArrowPrimitiveGenerator | MedsurfDraw.EllipsePrimitiveGenerator | MedsurfDraw.RectanglePrimitiveGenerator | MedsurfDraw.TextPrimitiveGenerator;
    protected _markerGenerator: MedsurfDraw.MarkerGenerator;
    protected _startPositionPointElement: MedsurfDraw.PositionPoint;
    constructor(model: PrimitiveMarkerGeneratorModel);
    end(): void;
    destroy(options?: {
        children?: boolean;
        texture?: boolean;
        baseTexture?: boolean;
    }): void;
    endGenerator(): void;
    abortGenerator(): void;
    protected _setupGenerator(positionPoint?: MedsurfDraw.PositionPoint): void;
    endPrimitiveGenerator(): void;
    abortPrimitiveGenerator(): void;
    endMarkerGenerator(): void;
    abortMarkerGenerator(): void;
    onKeyPressed(keyCode: string, event: KeyboardEvent): void;
    onKeyReleased(keyCode: string, event: KeyboardEvent): void;
    get drawInteraction(): MedsurfDraw.DrawInteraction<MedsurfDraw.PositionPoint | MedsurfDraw.FillCollection | MedsurfDraw.TextPrimitive>;
    get type(): Models.ImageObjectType.ARROW | Models.ImageObjectType.ELLIPSE | Models.ImageObjectType.RECTANGLE | Models.ImageObjectType.TEXT;
    set type(value: Models.ImageObjectType.ARROW | Models.ImageObjectType.ELLIPSE | Models.ImageObjectType.RECTANGLE | Models.ImageObjectType.TEXT);
}
