import type { RNABase } from "./RNABase";
import type { Phosphate } from "./Phosphate";
import { Sugar } from "./Sugar";
import type { SubChainNode } from "./monomer-chains/types";
import { Vec2 } from "./vec2";
import { RNA_DNA_NON_MODIFIED_PART } from "../constants/monomers";
import type { BaseMonomer } from "./BaseMonomer";
import type { AmbiguousMonomer } from "./AmbiguousMonomer";
export declare class Nucleotide {
    readonly sugar: Sugar | AmbiguousMonomer;
    readonly rnaBase: RNABase | AmbiguousMonomer;
    readonly phosphate: Phosphate;
    private readonly monomersCache;
    constructor(sugar: Sugar | AmbiguousMonomer, rnaBase: RNABase | AmbiguousMonomer, phosphate: Phosphate);
    toString(): string;
    static fromSugar(sugar: Sugar | AmbiguousMonomer, needValidation?: boolean): Nucleotide;
    static createOnCanvas(rnaBaseName: string, position: Vec2, sugarName?: RNA_DNA_NON_MODIFIED_PART): {
        modelChanges: import("./Command").Command;
        node: Nucleotide;
    };
    isMonomerTypeDifferentForChaining(monomerToChain: SubChainNode): any;
    get SubChainConstructor(): any;
    get monomer(): Sugar | AmbiguousMonomer | Phosphate;
    get monomers(): BaseMonomer[];
    get firstMonomerInNode(): Sugar | AmbiguousMonomer | Phosphate;
    get lastMonomerInNode(): Sugar | AmbiguousMonomer | Phosphate;
    get renderer(): import("../..").BaseMonomerRenderer | import("../..").BaseSequenceItemRenderer | undefined;
    get modified(): boolean;
    get isFiveEndPhosphate(): boolean;
}
