import type { CellStore } from '../cell-store.js';
import { type EngineCounters } from '../perf/engine-counters.js';
type U32 = Uint32Array;
export interface CalcChainResult {
    orderedFormulaCellIndices: U32;
    orderedFormulaCount: number;
}
export declare class CalcChain {
    private readonly counters?;
    private rankCounts;
    private formulaIds;
    private orderedChain;
    private chainIndexByCell;
    private orderedDirty;
    private dirtySeen;
    private dirtyEpoch;
    private chainFormulaCount;
    constructor(counters?: EngineCounters | undefined);
    rebuild(formulaCellIndices: Iterable<number> | readonly number[] | U32, cellStore: CellStore): void;
    hasChainFor(formulaCount: number): boolean;
    coversDirty(dirtyFormulaCellIndices: U32, dirtyFormulaCount: number): boolean;
    orderDirty(dirtyFormulaCellIndices: U32, dirtyFormulaCount: number): CalcChainResult;
    orderAll(): CalcChainResult;
    private ensureRankCapacity;
    private ensureCellCapacity;
    private ensureFormulaCapacity;
}
export {};
