import { ValueTag, type CellValue } from '@bilig/protocol';
import { type ExcelDateSystem } from '@bilig/formula';
import type { RuntimeDirectScalarDescriptor } from '../runtime-state.js';
export declare const ROW_PAIR_LEFT_PLUS_RIGHT = 1;
export declare const ROW_PAIR_LEFT_MINUS_RIGHT = 2;
export declare const ROW_PAIR_RIGHT_MINUS_LEFT = 3;
export declare const ROW_PAIR_LEFT_TIMES_RIGHT = 4;
export declare const ROW_PAIR_LEFT_DIV_RIGHT = 5;
export declare const ROW_PAIR_RIGHT_DIV_LEFT = 6;
export declare function directScalarLiteralNumericValue(value: unknown): number | undefined;
export type DirectScalarNumberReader = (cellIndex: number) => number | undefined;
export declare function directScalarValueNumber(value: CellValue, dateSystem?: ExcelDateSystem): number | undefined;
export declare function directScalarCellNumber(cellStore: {
    readonly tags: ArrayLike<ValueTag | undefined>;
    readonly numbers: ArrayLike<number | undefined>;
}, cellIndex: number | undefined): number | undefined;
export declare function evaluateDirectScalarNumber(directScalar: RuntimeDirectScalarDescriptor, changedCellIndex: number, replacementNumber: number, touched: {
    value: boolean;
}, readCellNumber: DirectScalarNumberReader): number | undefined;
export declare function evaluateDirectScalarWithReplacementNumbers(directScalar: RuntimeDirectScalarDescriptor, primaryCellIndex: number, primaryNumber: number, readCellNumber: DirectScalarNumberReader, secondaryCellIndex?: number, secondaryNumber?: number): number | undefined;
export declare function directScalarDeltaFromNumbers(directScalar: RuntimeDirectScalarDescriptor, changedCellIndex: number, oldChangedNumber: number, newChangedNumber: number, readCellNumber: DirectScalarNumberReader): number | undefined;
export declare function directScalarDeltaFromValues(directScalar: RuntimeDirectScalarDescriptor, changedCellIndex: number, oldValue: CellValue, newValue: CellValue, readCellNumber: DirectScalarNumberReader): number | undefined;
export declare function singleInputAffineDirectScalar(directScalar: RuntimeDirectScalarDescriptor, inputCellIndex: number): {
    readonly scale: number;
    readonly offset: number;
} | null;
export declare function writeSingleInputAffineDirectScalar(directScalar: RuntimeDirectScalarDescriptor, inputCellIndex: number, target: {
    scale: number;
    offset: number;
}): boolean;
export declare function rowPairDirectScalarCode(directScalar: RuntimeDirectScalarDescriptor, leftCellIndex: number, rightCellIndex: number): number;
export declare function evaluateRowPairDirectScalarCode(code: number, leftValue: number, rightValue: number): number | undefined;
export declare function rowPairDirectScalarCodeNeedsZeroGuard(code: number): boolean;
