import { BaseMonomerRenderer } from "./BaseMonomerRenderer";
import { FlexModePolymerBondRenderer } from "./PolymerBondRenderer/FlexModePolymerBondRenderer";
import { SnakeModePolymerBondRenderer } from "./PolymerBondRenderer/SnakeModePolymerBondRenderer";
import { HydrogenBond } from "../../../domain/entities";
import { BaseMonomer } from "../../../domain/entities/BaseMonomer";
import { Command } from "../../../domain/entities/Command";
import { DrawingEntity } from "../../../domain/entities/DrawingEntity";
import { PolymerBond } from "../../../domain/entities/PolymerBond";
import { 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";
declare type FlexModeOrSnakeModePolymerBondRenderer = FlexModePolymerBondRenderer | SnakeModePolymerBondRenderer;
export declare class RenderersManager {
    private 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;
    runPostRenderMethods(): void;
    static getRenderedStructuresBbox(monomers?: BaseMonomer[]): {
        left: any;
        right: any;
        top: any;
        bottom: any;
        width: number;
        height: number;
    };
    rerenderSideConnectionPolymerBonds(): void;
}
export {};
