import type { resolveRuntimeDirectLookupBinding } from '../direct-vector-lookup.js';
import { type MaterializedDependencies, type RuntimeDirectAggregateDescriptor, type RuntimeDirectCriteriaDescriptor, type RuntimeDirectScalarDescriptor } from '../runtime-state.js';
import type { ParsedCompiledFormula } from './formula-binding-direct-descriptors.js';
import type { CreateEngineFormulaBindingServiceArgs } from './formula-binding-service-types.js';
interface FormulaBindingDependencyMaterializerArgs {
    readonly serviceArgs: CreateEngineFormulaBindingServiceArgs;
    readonly hasFormulaColumnMembers: (sheetId: number, col: number) => boolean;
    readonly isFormulaCell: (cellIndex: number) => boolean;
    readonly ensureDependencyBuildCapacity: (cellCapacity: number, dependencyCapacity: number, symbolicRefCapacity?: number, symbolicRangeCapacity?: number) => void;
}
export interface FormulaBindingDependencyMaterializer {
    readonly materializeDependencies: (currentSheetName: string, compiled: ParsedCompiledFormula, directAggregate: RuntimeDirectAggregateDescriptor | undefined, directLookupBinding: ReturnType<typeof resolveRuntimeDirectLookupBinding> | undefined) => MaterializedDependencies;
    readonly materializeDirectScalarDependencies: (compiled: ParsedCompiledFormula, directScalar: RuntimeDirectScalarDescriptor | undefined) => MaterializedDependencies | undefined;
    readonly materializeDirectAggregateDependencies: (compiled: ParsedCompiledFormula, directAggregate: RuntimeDirectAggregateDescriptor | undefined, options?: {
        readonly assumeFreshLiteralInputs?: boolean;
    }) => MaterializedDependencies | undefined;
    readonly materializeDirectCriteriaDependencies: (compiled: ParsedCompiledFormula, directCriteria: RuntimeDirectCriteriaDescriptor | undefined) => MaterializedDependencies | undefined;
}
export declare function createFormulaBindingDependencyMaterializer(materializerArgs: FormulaBindingDependencyMaterializerArgs): FormulaBindingDependencyMaterializer;
export {};
