import type { CellStore } from './cell-store.js';
export interface FormulaTableDirectScalarDeltaIndex<T> {
    readonly deltaInputCellIndices: Array<number | undefined>;
    readonly singleOutputCellIndicesByInput?: Array<number | undefined>;
    readonly readDeltaInputCellIndex: (record: T) => number | undefined;
}
export declare const MULTIPLE_DIRECT_SCALAR_OUTPUTS = -2;
export declare class FormulaTable<T extends {
    cellIndex: number;
}> {
    private readonly store;
    private readonly directScalarDeltaIndex?;
    private readonly records;
    private readonly freeSlots;
    private activeCount;
    private mutationVersion;
    constructor(store: CellStore, directScalarDeltaIndex?: FormulaTableDirectScalarDeltaIndex<T> | undefined);
    get size(): number;
    get version(): number;
    get(cellIndex: number): T | undefined;
    has(cellIndex: number): boolean;
    set(cellIndex: number, record: T): number;
    refreshTrackedMetadata(cellIndex: number): void;
    delete(cellIndex: number): T | undefined;
    clear(): void;
    forEach(callback: (record: T, cellIndex: number) => void): void;
    keys(): IterableIterator<number>;
    values(): IterableIterator<T>;
    entries(): IterableIterator<[number, T]>;
    private trackDirectScalarDeltaInputCellIndex;
    private clearDirectScalarDeltaInputCellIndex;
}
