import { type LiteralInput, type RecalcMetrics } from '@bilig/protocol';
import type { RuntimeDirectLookupDescriptor, RuntimeDirectScalarDescriptor } from '../runtime-state.js';
import type { DirectScalarCurrentOperand } from './direct-formula-index-collection.js';
import type { CreateEngineOperationServiceArgs } from './operation-service-types.js';
export interface OperationDirectFormulaLiteralMutationRequest {
    readonly existingIndex: number;
    readonly formulaCellIndex: number;
    readonly value: LiteralInput;
    readonly oldNumber: number;
    readonly newNumber: number;
    readonly exactLookupValue: number | undefined;
    readonly approximateLookupValue: number | undefined;
}
export interface OperationDirectFormulaLiteralFastPathArgs {
    readonly state: Pick<CreateEngineOperationServiceArgs['state'], 'workbook' | 'strings' | 'formulas' | 'counters' | 'setLastMetrics'>;
    readonly hasNoCellDependents: (formulaCellIndex: number) => boolean;
    readonly tryDirectUniformLookupNumericResultFromDescriptor: (directLookup: RuntimeDirectLookupDescriptor | undefined, exactLookupValue: number | undefined, approximateLookupValue: number | undefined) => number | undefined;
    readonly directScalarNumericResultMatchesCell: (formulaCellIndex: number, result: number) => boolean;
    readonly tryDirectUniformLookupCurrentResultFromNumeric: (formulaCellIndex: number, exactLookupValue: number | undefined, approximateLookupValue: number | undefined) => DirectScalarCurrentOperand | undefined;
    readonly directScalarCurrentResultMatchesCell: (formulaCellIndex: number, result: DirectScalarCurrentOperand) => boolean;
    readonly canUseDirectFormulaPostRecalc: (formulaCellIndex: number) => boolean;
    readonly tryDirectScalarNumericDeltaFromNumbers: (directScalar: RuntimeDirectScalarDescriptor, changedCellIndex: number, oldChangedNumber: number, newChangedNumber: number) => number | undefined;
    readonly writeFastPathLiteralToExistingCell: (existingIndex: number, value: LiteralInput) => void;
    readonly applyTerminalDirectFormulaNumericResult: (formulaCellIndex: number, result: number) => void;
    readonly applyDirectFormulaCurrentResult: (formulaCellIndex: number, result: DirectScalarCurrentOperand) => boolean;
    readonly applyDirectFormulaNumericDelta: (formulaCellIndex: number, delta: number) => boolean;
    readonly cellsShareVersionColumn: (leftCellIndex: number, rightCellIndex: number) => boolean;
    readonly withOptionalColumnVersionBatch: (enabled: boolean, apply: () => void) => void;
    readonly deferSingleCellKernelSync: (cellIndex: number) => void;
    readonly makeSingleLiteralSkipMetrics: () => RecalcMetrics;
}
export declare function tryApplySingleDirectFormulaLiteralMutationWithoutEvents(args: OperationDirectFormulaLiteralFastPathArgs, request: OperationDirectFormulaLiteralMutationRequest): boolean;
