import { D3SvgElementSelection } from "../../types";
import { Vec2 } from "../../../../domain/entities";
import { SubChainNode } from "../../../../domain/entities/monomer-chains/types";
import { BaseSequenceRenderer } from "./BaseSequenceRenderer";
import { Chain } from "../../../../domain/entities/monomer-chains/Chain";
import { BackBoneSequenceNode } from "../../../../domain/entities/BackBoneSequenceNode";
import { ITwoStrandedChainItem } from "../../../../domain/entities/monomer-chains/ChainsCollection";
export declare abstract class BaseSequenceItemRenderer extends BaseSequenceRenderer {
    node: SubChainNode | BackBoneSequenceNode;
    private firstNodeInChainPosition;
    private monomerIndexInChain;
    private isLastMonomerInChain;
    private chain;
    private _isEditingSymbol;
    monomerSize: {
        width: number;
        height: number;
    };
    scaledMonomerPosition: Vec2;
    private previousRowsWithAntisense;
    twoStrandedNode: ITwoStrandedChainItem;
    private editorEvents;
    textElement?: D3SvgElementSelection<SVGTextElement, void>;
    counterElement?: D3SvgElementSelection<SVGTextElement, void>;
    private selectionRectangle?;
    spacerElement?: D3SvgElementSelection<SVGGElement, void>;
    backgroundElement?: D3SvgElementSelection<SVGRectElement, void>;
    caretElement?: D3SvgElementSelection<SVGLineElement, void> | D3SvgElementSelection<SVGGElement, void>;
    antisenseNodeRenderer?: this | undefined;
    constructor(node: SubChainNode | BackBoneSequenceNode, firstNodeInChainPosition: Vec2, monomerIndexInChain: number, isLastMonomerInChain: boolean, chain: Chain, _isEditingSymbol: boolean, monomerSize: {
        width: number;
        height: number;
    }, scaledMonomerPosition: Vec2, previousRowsWithAntisense: number, twoStrandedNode: ITwoStrandedChainItem);
    abstract get symbolToDisplay(): string;
    get isEditingSymbol(): boolean;
    set isEditingSymbol(isEditingSymbol: boolean);
    private get isSingleEmptyNode();
    protected abstract drawModification(): void;
    protected appendHover(): D3SvgElementSelection<SVGUseElement, void> | void;
    protected appendHoverAreaElement(): void;
    moveSelection(): void;
    get currentChain(): Chain;
    get currentChainNodesWithoutEmptyNodes(): SubChainNode[];
    get scaledMonomerPositionForSequence(): Vec2;
    get center(): Vec2;
    protected get isSequenceEditModeTurnedOn(): boolean | undefined;
    protected get isSequenceEditInRnaBuilderModeTurnedOn(): boolean | undefined;
    private appendRootElement;
    private appendBackgroundElement;
    private appendSpacerElement;
    private get nthSeparationInRow();
    private get symbolsInRow();
    private get isAntisenseNode();
    private appendCounterElement;
    private get needDisplayCounter();
    private get isBeginningOfChain();
    showCaret(): void;
    removeCaret(): void;
    protected redrawBackgroundElementColor(): void;
    private appendChainStartArrow;
    private drawGreyOverlay;
    show(): void;
    drawSelection(): void;
    appendSelection(): void;
    removeSelection(): void;
    private raiseElement;
    remove(): void;
    setEnumeration(): void;
    redrawEnumeration(): void;
    redrawAttachmentPoints(): void;
    redrawAttachmentPointsCoordinates(): void;
    get enumeration(): null;
    redrawChainBeginning(): void;
    hoverAttachmentPoint(): void;
    updateAttachmentPoints(): void;
    private drawBackgroundElementHover;
    private removeBackgroundElementHover;
    private appendEvents;
    setAntisenseNodeRenderer(antisenseNodeRenderer: this): void;
}
