import type { ChainsCollection, ITwoStrandedChainItem } from "../../../../../domain/entities/monomer-chains/ChainsCollection";
import { SequenceViewModelChain } from "./SequenceViewModelChain";
interface IForEachNodeParams {
    twoStrandedNode: ITwoStrandedChainItem;
    nodeIndex: number;
    nodeIndexOverall: number;
    chain: SequenceViewModelChain;
    chainIndex: number;
}
export declare class SequenceViewModel {
    chainsCollection: ChainsCollection;
    private readonly nodes;
    chains: SequenceViewModelChain[];
    private readonly monomerToTwoStrandedSnakeLayoutNode;
    private readonly chainToHasAntisense;
    constructor(chainsCollection: ChainsCollection);
    private addNode;
    private fillSenseNodes;
    private fillAntisenseNodes;
    private postProcessNodes;
    private fillAdditionalSpacesInAntisense;
    private fillNodes;
    private fillChains;
    get firstTwoStrandedNode(): ITwoStrandedChainItem;
    get lastTwoStrandedNode(): ITwoStrandedChainItem;
    get length(): number;
    get hasOnlyOneNewChain(): boolean;
    addEmptyChain(emptyChainIndex: number): SequenceViewModelChain;
    forEachNode(callback: (params: IForEachNodeParams) => void): void;
    getNodeIndex(node: ITwoStrandedChainItem): number;
}
export {};
