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