import type { BaseMonomerRenderer } from "./BaseMonomerRenderer";
import type { FlexModePolymerBondRenderer } from "./PolymerBondRenderer/FlexModePolymerBondRenderer";
import type { SnakeModePolymerBondRenderer } from "./PolymerBondRenderer/SnakeModePolymerBondRenderer";
import type { HydrogenBond } from "../../../domain/entities/HydrogenBond";
import type { BaseMonomer } from "../../../domain/entities/BaseMonomer";
import type { Command } from "../../../domain/entities/Command";
import type { DrawingEntity } from "../../../domain/entities/DrawingEntity";
import type { PolymerBond } from "../../../domain/entities/PolymerBond";
import type { AttachmentPointName } from "../../../domain/types";
import { AmbiguousMonomer } from "../../../domain/entities/AmbiguousMonomer";
import { AmbiguousMonomerRenderer } from "./AmbiguousMonomerRenderer";
import { Atom } from "../../../domain/entities/CoreAtom";
import { AtomRenderer } from "./AtomRenderer";
import { BondRenderer } from "./BondRenderer";
import { Bond } from "../../../domain/entities/CoreBond";
import { MonomerToAtomBond } from "../../../domain/entities/MonomerToAtomBond";
import type { RxnArrow } from "../../../domain/entities/CoreRxnArrow";
import type { MultitailArrow } from "../../../domain/entities/CoreMultitailArrow";
import type { RxnPlus } from "../../../domain/entities/CoreRxnPlus";
declare type FlexModeOrSnakeModePolymerBondRenderer = FlexModePolymerBondRenderer | SnakeModePolymerBondRenderer;
export declare class RenderersManager {
    private readonly theme;
    monomers: Map<number, BaseMonomerRenderer | AmbiguousMonomerRenderer>;
    polymerBonds: Map<number, FlexModeOrSnakeModePolymerBondRenderer>;
    atoms: Map<number, AtomRenderer>;
    bonds: Map<number, BondRenderer>;
    private needRecalculateMonomersEnumeration;
    constructor({ theme }: {
        theme: any;
    });
    hoverDrawingEntity(drawingEntity: DrawingEntity): void;
    selectDrawingEntity(drawingEntity: DrawingEntity): void;
    moveDrawingEntity(drawingEntity: DrawingEntity): void;
    private markForReEnumeration;
    addMonomer(monomer: BaseMonomer | AmbiguousMonomer, callback?: () => void): void;
    moveMonomer(monomer: BaseMonomer): void;
    redrawDrawingEntity(drawingEntity: DrawingEntity, force?: boolean, recalculateEnumeration?: boolean): void;
    deleteAllDrawingEntities(): void;
    deleteMonomer(monomer: BaseMonomer): void;
    addPolymerBond(polymerBond: PolymerBond | HydrogenBond, redrawAttachmentPoints?: boolean): void;
    movePolymerBond(polymerBond: PolymerBond): void;
    showPolymerBondInformation(polymerBond: PolymerBond): void;
    deletePolymerBond(polymerBond: PolymerBond | HydrogenBond, recalculateEnumeration?: boolean, redrawAttachmentPoints?: boolean): void;
    private recalculatePeptideChainEnumeration;
    private recalculateRnaChainEnumeration;
    private recalculateMonomersEnumeration;
    finishPolymerBondCreation(polymerBond: PolymerBond): void;
    cancelPolymerBondCreation(polymerBond: PolymerBond, secondMonomer?: BaseMonomer): void;
    hoverMonomer(monomer: BaseMonomer, needRedrawAttachmentPoints: any): void;
    hoverAttachmentPoint(monomer: BaseMonomer, attachmentPointName: AttachmentPointName): void;
    reinitializeViewModel(): void;
    update(modelChanges?: Command): void;
    addAtom(atom: Atom): void;
    deleteAtom(atom: Atom): void;
    addBond(bond: Bond): void;
    deleteBond(bond: Bond): void;
    addMonomerToAtomBond(bond: MonomerToAtomBond): void;
    deleteMonomerToAtomBond(bond: MonomerToAtomBond): void;
    addRxnArrow(arrow: RxnArrow): void;
    deleteRxnArrow(arrow: RxnArrow): void;
    addMultitailArrow(arrow: MultitailArrow): void;
    deleteMultitailArrow(arrow: MultitailArrow): void;
    addRxnPlus(rxnPlus: RxnPlus): void;
    deleteRxnPlus(rxnPlus: RxnPlus): void;
    private renderAromaticCircles;
    private calculateDashedPolygonPath;
    private calculateLoopCenterAndRadius;
    runPostRenderMethods(): void;
    rerenderSideConnectionPolymerBonds(): void;
}
export {};
