import type { EngineChangedCell } from '@bilig/protocol';
import type { EngineOpBatch } from '@bilig/workbook';
import type { EngineCellMutationRef } from '../../cell-mutations-at.js';
import type { EngineRuntimeState, TransactionRecord, U32 } from '../runtime-state.js';
type FastPathState = Pick<EngineRuntimeState, 'workbook' | 'strings' | 'events' | 'formulas' | 'counters' | 'replicaState' | 'getLastMetrics' | 'setLastMetrics' | 'getSyncClientConnection'>;
interface OperationDirectScalarRowPairBatchFastPathArgs {
    readonly state: FastPathState;
    readonly emitBatch: (batch: EngineOpBatch) => void;
    readonly hasTrackedExactLookupDependents: (sheetId: number, col: number) => boolean;
    readonly hasTrackedSortedLookupDependents: (sheetId: number, col: number) => boolean;
    readonly hasTrackedDirectRangeDependents: (sheetId: number, col: number) => boolean;
    readonly canFastPathLiteralOverwrite: (cellIndex: number) => boolean;
    readonly canUseDirectFormulaPostRecalc: (cellIndex: number) => boolean;
    readonly canSkipFormulaColumnVersion: (cellIndex: number) => boolean;
    readonly applyTerminalDirectFormulaNumericResults: (cellIndices: readonly number[] | Uint32Array, values: ArrayLike<number>, count?: number) => void;
    readonly getEntityDependents: (entityId: number) => Uint32Array;
    readonly materializeDeferredStructuralFormulaSources: () => void;
    readonly beginMutationCollection: () => void;
    readonly ensureRecalcScratchCapacity: (size: number) => void;
    readonly resetMaterializedCellScratch: (expectedSize: number) => void;
    readonly getBatchMutationDepth: () => number;
    readonly setBatchMutationDepth: (next: number) => void;
    readonly markInputChanged: (cellIndex: number, count: number) => number;
    readonly markExplicitChanged: (cellIndex: number, count: number) => number;
    readonly getChangedInputBuffer: () => U32;
    readonly deferKernelSync: (cellIndices: readonly number[] | U32) => void;
    readonly composeDisjointEventChanges: (recalculated: U32, explicitChangedCount: number) => U32;
    readonly captureChangedCells: (changedCellIndices: readonly number[] | U32) => readonly EngineChangedCell[];
}
export declare function createOperationDirectScalarRowPairBatchFastPaths(args: OperationDirectScalarRowPairBatchFastPathArgs): {
    readonly tryApplyDenseRowPairSimpleDirectScalarLiteralBatch: (refs: readonly EngineCellMutationRef[], batch: EngineOpBatch | null, potentialNewCells?: number) => boolean;
    readonly tryApplyDenseRowPairDirectScalarLiteralBatch: (refs: readonly EngineCellMutationRef[], batch: EngineOpBatch | null, potentialNewCells?: number) => boolean;
    readonly tryApplyDenseRowPairExistingNumericBatch: (record: Extract<TransactionRecord, {
        kind: 'existing-numeric-cell-mutations';
    }>, batch: EngineOpBatch | null) => boolean;
};
export {};
