import { type CellValue, type LiteralInput, type RecalcMetrics } from '@bilig/protocol';
import type { EngineExistingNumericCellMutationResult } from '../../cell-mutations-at.js';
import type { SheetRecord } from '../../workbook-store.js';
import type { RuntimeDirectLookupDescriptor } from '../runtime-state.js';
import type { DirectScalarCurrentOperand } from './direct-formula-index-collection.js';
import type { CreateEngineOperationServiceArgs } from './operation-service-types.js';
export interface OperationDirectLookupOperandMutationRequest {
    readonly existingIndex: number;
    readonly formulaCellIndex: number;
    readonly value: LiteralInput;
    readonly exactLookupValue: number | undefined;
    readonly approximateLookupValue: number | undefined;
    readonly emitTracked: boolean;
    readonly lookupSheetHint?: SheetRecord | undefined;
    readonly trustedInputSheet?: SheetRecord | undefined;
    readonly trustedInputCol?: number | undefined;
}
export interface OperationDirectLookupOperandFastPathArgs {
    readonly state: Pick<CreateEngineOperationServiceArgs['state'], 'workbook' | 'formulas' | 'counters' | 'events' | 'setLastMetrics'>;
    readonly hasNoCellDependents: (cellIndex: number) => boolean;
    readonly directScalarNumericResultMatchesCell: (cellIndex: number, result: number) => boolean;
    readonly directScalarCurrentResultMatchesCell: (cellIndex: number, result: DirectScalarCurrentOperand) => boolean;
    readonly tryDirectUniformLookupNumericResultFromDescriptor: (directLookup: RuntimeDirectLookupDescriptor | undefined, exactLookupValue: number | undefined, approximateLookupValue: number | undefined, lookupSheetHint?: SheetRecord) => number | undefined;
    readonly tryDirectApproximateLookupCurrentResultFromNumeric: (directLookup: Extract<RuntimeDirectLookupDescriptor, {
        kind: 'approximate';
    }>, lookupValue: number) => DirectScalarCurrentOperand | undefined;
    readonly tryDirectExactLookupCurrentResult: (directLookup: Extract<RuntimeDirectLookupDescriptor, {
        kind: 'exact';
    }>, lookupValue: CellValue) => DirectScalarCurrentOperand | undefined;
    readonly tryDirectUniformLookupCurrentResultFromNumeric: (formulaCellIndex: number, exactLookupValue: number | undefined, approximateLookupValue: number | undefined, lookupSheetHint?: SheetRecord) => DirectScalarCurrentOperand | undefined;
    readonly writeTrustedExistingNumericLiteralToCell: (existingIndex: number, sheet: SheetRecord, col: number, value: number) => void;
    readonly writeNumericLiteralToExistingCell: (existingIndex: number, value: number) => void;
    readonly writeFastPathLiteralToExistingCell: (existingIndex: number, value: LiteralInput) => void;
    readonly applyTerminalDirectFormulaNumericResult: (formulaCellIndex: number, result: number) => void;
    readonly applyDirectFormulaCurrentResult: (formulaCellIndex: number, result: DirectScalarCurrentOperand) => boolean;
    readonly cellsShareVersionColumn: (leftCellIndex: number, rightCellIndex: number) => boolean;
    readonly withOptionalColumnVersionBatch: (enabled: boolean, apply: () => void) => void;
    readonly deferSingleCellKernelSync: (cellIndex: number) => void;
    readonly makeSingleLiteralSkipMetrics: () => RecalcMetrics;
    readonly evaluateDirectFormula: (formulaCellIndex: number) => void;
}
export declare function tryApplySingleDirectLookupOperandMutationFastPath(args: OperationDirectLookupOperandFastPathArgs, request: OperationDirectLookupOperandMutationRequest): EngineExistingNumericCellMutationResult | null;
