import { type CellValue } from '@bilig/protocol';
import { type EngineCounters } from '../../perf/engine-counters.js';
import type { RuntimeDirectCriteriaDescriptor, U32 } from '../runtime-state.js';
import type { DirectFormulaIndexCollection } from './direct-formula-index-collection.js';
export type DirectFormulaRecalcRecord = {
    readonly directAggregate?: unknown;
    readonly directCriteria?: unknown;
    readonly directLookup?: unknown;
    readonly directScalar?: unknown;
};
export declare function directAggregateNumericContribution(value: CellValue): number | undefined;
export declare function directCriteriaValueString(value: CellValue): string;
export declare function collectTrackedDependents<Key extends string | number>(registry: Map<Key, Set<number>>, keys: readonly Key[]): number[];
export declare function directCriteriaTouchesPoint(directCriteria: RuntimeDirectCriteriaDescriptor, request: {
    sheetName: string;
    row: number;
    col: number;
    inputCellIndex?: number;
}): boolean;
export declare function composeSingleDisjointExplicitEventChanges(explicitCellIndex: number, recalculated: U32): U32;
export declare function hasCompleteDirectFormulaDeltas(postRecalcDirectFormulaIndices: DirectFormulaIndexCollection): boolean;
export declare function directFormulaChangesAreDisjointFromInputs(changedInputArray: U32, changedInputCount: number, postRecalcDirectFormulaIndices: DirectFormulaIndexCollection): boolean;
export declare function countDirectFormulaDeltaSkip(formulas: {
    get(cellIndex: number): DirectFormulaRecalcRecord | undefined;
}, postRecalcDirectFormulaIndices: DirectFormulaIndexCollection, counters: EngineCounters): void;
export declare function canEvaluatePostRecalcDirectFormulasWithoutKernel(formulas: {
    get(cellIndex: number): DirectFormulaRecalcRecord | undefined;
}, postRecalcDirectFormulaIndices: DirectFormulaIndexCollection): boolean;
export declare function lookupImpactCacheKey(sheetId: number, col: number): string;
export declare function aggregateColumnDependencyKey(sheetId: number, col: number): number;
