import { type CellValue } from '@bilig/protocol';
import type { EngineRuntimeState, RuntimeDirectCriteriaDescriptor } from '../runtime-state.js';
export interface OperationLookupAccess {
    readonly readCellValueForLookup: (cellIndex: number | undefined) => {
        value: CellValue;
        stringId: number | undefined;
    };
    readonly readApproximateNumericValueForLookup: (cellIndex: number | undefined) => number | undefined;
    readonly readExactNumericValueForLookup: (cellIndex: number | undefined) => number | undefined;
    readonly readCellValueAtForLookup: (sheetName: string, row: number, col: number) => {
        value: CellValue;
        stringId: number | undefined;
    };
    readonly readDirectCriteriaOperandValue: (operand: RuntimeDirectCriteriaDescriptor['criteriaPairs'][number]['criterion']) => CellValue;
    readonly directCriteriaMatchesChangedAggregateRow: (directCriteria: RuntimeDirectCriteriaDescriptor, aggregateRange: NonNullable<RuntimeDirectCriteriaDescriptor['aggregateRange']>, requestRow: number) => boolean | undefined;
    readonly tryDirectCriteriaSumDelta: (directCriteria: RuntimeDirectCriteriaDescriptor, request: {
        sheetName: string;
        row: number;
        col: number;
        oldValue?: CellValue;
        newValue?: CellValue;
    }) => number | undefined;
    readonly readApproximateNumericValueAtForLookup: (sheetName: string, row: number, col: number) => number | undefined;
    readonly isLocallySortedNumericWrite: (sheetName: string, row: number, col: number, rowStart: number, rowEnd: number, matchMode: 1 | -1, current: number) => boolean;
    readonly isLocallySortedTextWrite: (sheetName: string, row: number, col: number, rowStart: number, rowEnd: number, matchMode: 1 | -1, current: string) => boolean;
}
export declare function createOperationLookupAccess(args: {
    readonly workbook: EngineRuntimeState['workbook'];
    readonly strings: EngineRuntimeState['strings'];
}): OperationLookupAccess;
