import type { CellStore } from './cell-store.js';
import type { EngineCounters } from './perf/engine-counters.js';
type U32 = Uint32Array;
export interface SchedulerReverseGraph {
    getDependents(entityId: number): U32;
}
export interface SchedulerResult {
    orderedFormulaCellIndices: U32;
    orderedFormulaCount: number;
    rangeNodeVisits: number;
}
export declare class RecalcScheduler {
    private readonly dirtyFrontier;
    private readonly calcChain;
    constructor(counters?: EngineCounters);
    rebuildChain(formulaCellIndices: Iterable<number> | readonly number[] | U32, cellStore: CellStore): void;
    collectDirty(changedRoots: readonly number[] | U32, graph: SchedulerReverseGraph, cellStore: CellStore, formulaCellIndices: Iterable<number>, formulaCount: number, hasFormula: (cellIndex: number) => boolean, rangeCount: number): SchedulerResult;
    collectAll(formulaCellIndices: Iterable<number> | readonly number[] | U32, formulaCount: number, cellStore: CellStore): SchedulerResult;
}
export {};
