import { EditorType } from "./editor.types";
import { IEditorEvents } from "./editorEvents";
import { BaseMode } from "./modes/internal";
import { BaseTool, Tool, ToolEventHandlerName } from "./tools/Tool";
import { IKetMacromoleculesContent, IKetMonomerGroupTemplate } from "../formatters";
import { RenderersManager } from "../render/renderers/RenderersManager";
import { SequenceType, Vec2 } from "../../domain/entities";
import { DrawingEntitiesManager } from "../../domain/entities/DrawingEntitiesManager";
import { MonomerItemType } from "../../domain/types";
import { HistoryOperationType } from './EditorHistory';
import ZoomTool from './tools/Zoom';
import { ViewModel } from "../render/view-model/ViewModel";
import { ToolName } from "./tools/types";
import { TransientDrawingView } from "../render/renderers/TransientView/TransientDrawingView";
interface ICoreEditorConstructorParams {
    theme: any;
    canvas: SVGSVGElement;
    mode?: BaseMode;
    monomersLibraryUpdate?: string | JSON;
}
export declare class CoreEditor {
    events: IEditorEvents;
    _type: EditorType;
    renderersContainer: RenderersManager;
    transientDrawingView: TransientDrawingView;
    drawingEntitiesManager: DrawingEntitiesManager;
    viewModel: ViewModel;
    lastCursorPosition: Vec2;
    lastCursorPositionOfCanvas: Vec2;
    private _monomersLibraryParsedJson;
    private _monomersLibrary;
    canvas: SVGSVGElement;
    drawnStructuresWrapperElement: SVGGElement;
    canvasOffset: DOMRect;
    theme: any;
    zoomTool: ZoomTool;
    private tool?;
    get selectedTool(): Tool | BaseTool | undefined;
    mode: BaseMode;
    private previousModes;
    sequenceTypeEnterMode: SequenceType;
    private micromoleculesEditor;
    private hotKeyEventHandler;
    private copyEventHandler;
    private pasteEventHandler;
    private keydownEventHandler;
    constructor({ theme, canvas, monomersLibraryUpdate, mode, }: ICoreEditorConstructorParams);
    private resetCanvasOffset;
    private initializeEventListeners;
    private handleVisibilityChange;
    private handleWindowBlur;
    private cancelActiveDrag;
    static provideEditorInstance(): CoreEditor;
    private setMonomersLibrary;
    updateMonomersLibrary(monomersDataRaw: string | JSON): void;
    get monomersLibraryParsedJson(): IKetMacromoleculesContent | null;
    get monomersLibrary(): MonomerItemType[];
    get defaultRnaPresetsLibraryItems(): IKetMonomerGroupTemplate[];
    private handleHotKeyEvents;
    private setupKeyboardEvents;
    private setupCopyPasteEvent;
    private setupHotKeysEvents;
    private setupContextMenuEvents;
    private subscribeEvents;
    private onEditSequence;
    private onEstablishHydrogenBondSequenceMode;
    private onDeleteHydrogenBondSequenceMode;
    private onTurnOnSequenceEditInRNABuilderMode;
    private onTurnOffSequenceEditInRNABuilderMode;
    private onChangeSequenceTypeEnterMode;
    private onChangeToggleIsSequenceSyncEditMode;
    private onResetSequenceSyncEditMode;
    private onCreateAntisenseChain;
    private onSelectMonomer;
    private onSelectRNAPreset;
    onSelectTool(tool: ToolName, options?: object): void;
    private onCreateBond;
    private onCancelBondCreation;
    private onSelectMode;
    setMode(mode: BaseMode): void;
    get isSequenceMode(): boolean;
    get isSequenceEditMode(): boolean | undefined;
    get isSequenceEditInRNABuilderMode(): boolean | undefined;
    get isSequenceAnyEditMode(): boolean | undefined;
    onSelectHistory(name: HistoryOperationType): void;
    selectTool(name: ToolName, options?: any): void;
    get isHandToolSelected(): boolean;
    unsubscribeEvents(): void;
    get trackedDomEvents(): {
        target: Element | Document;
        eventName: string;
        toolEventHandler: ToolEventHandlerName;
    }[];
    private isMouseMainButtonPressed;
    private domEventSetup;
    private updateLastCursorPosition;
    private useToolIfNeeded;
    private useModeIfNeeded;
    switchToMicromolecules(): void;
    private resetModeIfNeeded;
    switchToMacromolecules(): void;
    isCurrentModeWithAutozoom(): boolean;
    zoomToStructuresIfNeeded(): void;
    scrollToTopLeftCorner(): void;
}
export {};
