import type { EdgeArena } from '../../edge-arena.js';
import type { RangeMaterializer, RetargetedRangeDependencies } from '../../range-registry.js';
import type { StructuralTransaction } from '../structural-transaction.js';
import { type FormulaBindingReverseEdgeState } from './formula-binding-reverse-edges.js';
export interface FormulaBindingRangeDependencyUpdater {
    readonly refreshRangeDependenciesNow: (rangeIndices: readonly number[]) => void;
    readonly retargetRangeDependenciesNow: (transaction: StructuralTransaction, rangeIndices: readonly number[]) => void;
}
export interface FormulaBindingRangeDependencyUpdaterArgs {
    readonly state: {
        readonly workbook: {
            readonly cellStore: {
                readonly formulaIds: {
                    readonly [cellIndex: number]: number | undefined;
                };
            };
        };
        readonly ranges: {
            readonly refresh: (rangeIndex: number, materializer: RangeMaterializer) => {
                oldDependencySources: Uint32Array;
                newDependencySources: Uint32Array;
            };
            readonly applyStructuralTransaction: (transaction: StructuralTransaction, rangeIndices: readonly number[], materializer: RangeMaterializer) => RetargetedRangeDependencies[];
        };
    };
    readonly edgeArena: EdgeArena;
    readonly reverseState: FormulaBindingReverseEdgeState;
    readonly ensureCellTrackedByCoords: (sheetId: number, row: number, col: number) => number;
    readonly forEachSheetCell: (sheetId: number, fn: (cellIndex: number, row: number, col: number) => void) => void;
    readonly scheduleWasmProgramSync: () => void;
}
export declare function createFormulaBindingRangeDependencyUpdater(args: FormulaBindingRangeDependencyUpdaterArgs): FormulaBindingRangeDependencyUpdater;
