import type { EngineChangedCell, RecalcMetrics } from '@bilig/protocol';
import type { EnginePatch } from '../../patches/patch-types.js';
import type { EngineRuntimeState, U32 } from '../runtime-state.js';
export declare function captureTrackedRecalcPatchesForCells(input: {
    readonly changed: readonly number[] | U32;
    readonly captureChangedPatches: (changedCellIndices: readonly number[] | U32, request?: {
        invalidation?: 'cells' | 'full';
        invalidatedRanges?: readonly {
            sheetName: string;
            startAddress: string;
            endAddress: string;
        }[];
        invalidatedRows?: readonly {
            sheetName: string;
            startIndex: number;
            endIndex: number;
        }[];
        invalidatedColumns?: readonly {
            sheetName: string;
            startIndex: number;
            endIndex: number;
        }[];
    }) => readonly EnginePatch[];
}): readonly EnginePatch[] | undefined;
export declare function emitRecalcBatchEvents(input: {
    readonly state: Pick<EngineRuntimeState, 'events' | 'workbook'>;
    readonly changed: readonly number[] | U32;
    readonly captureChangedCells: (changedCellIndices: readonly number[] | U32) => readonly EngineChangedCell[];
    readonly metrics: RecalcMetrics;
    readonly explicitChangedCount: number;
    readonly captureChangedPatches: Parameters<typeof captureTrackedRecalcPatchesForCells>[0]['captureChangedPatches'];
}): void;
