import type { EngineChangedCell, EngineEvent } from '@bilig/protocol';
import type { EngineOpBatch } from '@bilig/workbook';
import type { EngineSyncClientConnection, U32 } from '../runtime-state.js';
export interface OperationFastPathBatchResultState {
    readonly events: {
        readonly emit: (event: EngineEvent & {
            explicitChangedCount: number;
        }, changedCellIndices: readonly number[] | U32, resolveAddress?: (cellIndex: number) => string) => void;
        readonly emitTracked: (event: {
            kind: EngineEvent['kind'];
            invalidation: EngineEvent['invalidation'];
            changedCellIndices: EngineEvent['changedCellIndices'];
            invalidatedRanges: EngineEvent['invalidatedRanges'];
            invalidatedRows: EngineEvent['invalidatedRows'];
            invalidatedColumns: EngineEvent['invalidatedColumns'];
            metrics: EngineEvent['metrics'];
            explicitChangedCount: number;
        }) => void;
    };
    readonly workbook: {
        readonly getQualifiedAddress: (cellIndex: number) => string;
    };
    readonly getLastMetrics: () => EngineEvent['metrics'];
    readonly setLastMetrics: (metrics: EngineEvent['metrics']) => void;
    readonly getSyncClientConnection: () => EngineSyncClientConnection | null;
}
export interface EmitCellMutationFastPathBatchResultArgs {
    readonly state: OperationFastPathBatchResultState;
    readonly changed: U32;
    readonly changedInputCount: number;
    readonly explicitChangedCount: number;
    readonly hasGeneralEventListeners: boolean;
    readonly hasTrackedEventListeners: boolean;
    readonly hasWatchedCellListeners: boolean;
    readonly captureChangedCells: (changedCellIndices: readonly number[] | U32) => readonly EngineChangedCell[];
    readonly batch: EngineOpBatch | null;
    readonly emitBatch: (batch: EngineOpBatch) => void;
}
export declare function emitCellMutationFastPathBatchResult(args: EmitCellMutationFastPathBatchResultArgs): void;
