import { D3SvgElementSelection } from "../../types";
import { BaseMonomer } from "../../../../domain/entities";
import { PolymerBond } from "../../../../domain/entities/PolymerBond";
import { BaseRenderer } from '../BaseRenderer';
export declare class SnakeModePolymerBondRenderer extends BaseRenderer {
    readonly polymerBond: PolymerBond;
    private editorEvents;
    private isSnakeBond;
    private selectionElement;
    private path;
    private previousStateOfIsMonomersOnSameHorizontalLine;
    private sideConnectionBondTurnPoint?;
    bodyElement?: D3SvgElementSelection<SVGLineElement, this>;
    constructor(polymerBond: PolymerBond);
    get isSnake(): true;
    private get isHydrogenBond();
    get rootBBox(): DOMRect | undefined;
    get width(): number;
    get height(): number;
    private get scaledPosition();
    getSideConnectionEndpointAngle(monomer: BaseMonomer): number;
    moveSelection(): void;
    appendBond(rootElement: any): D3SvgElementSelection<SVGLineElement, this> | undefined;
    appendSnakeBond(rootElement: any): D3SvgElementSelection<SVGLineElement, this> | undefined;
    private drawPartOfSideConnection;
    private appendSideConnectionBond;
    private getMonomerWidth;
    private getMonomerHeight;
    private get isSideChainLikeBackbone();
    private updateSnakeBondPath;
    private isSecondMonomerTopRight;
    private isSecondMonomerBottomRight;
    private isSecondMonomerBottomLeft;
    private isSecondMonomerTopLeft;
    private isSecondMonomerLeft;
    private addLine;
    private addRandomLine;
    appendBondGraph(rootElement: any): D3SvgElementSelection<SVGLineElement, this> | undefined;
    private appendRootElement;
    show(_theme?: unknown, force?: boolean): void;
    private get isSideConnectionBondDrawn();
    drawSelection(): void;
    moveEnd(): void;
    private moveSnakeBondEnd;
    private moveGraphBondEnd;
    moveStart(): void;
    private moveSnakeBondStart;
    private moveGraphBondStart;
    protected appendHoverAreaElement(): void;
    appendHover(): void;
    removeHover(): D3SvgElementSelection<SVGLineElement | SVGGElement, void>;
    private calculateIsSnakeBond;
    remove(): void;
}
