import type { IDataDomain } from '../../dataDomain';
import type { InternalDatumPropertyDefinition, ProcessedValue, ProcessorFn } from '../../dataModelTypes';
import type { DataModelContext } from '../dataModelContext';
/**
 * Specialized function type for processing property values.
 * Generated per property definition to eliminate branching and optimize hot paths.
 */
export type SpecializedProcessValueFn = (datum: unknown, idx: number, valueScopes: string | string[]) => ProcessedValue;
/**
 * Factory responsible for generating optimized processValue functions per property definition.
 * Encapsulates the specialized variants to keep DomainManager focused on orchestration.
 */
export declare class ProcessValueFactory<D extends object, K extends keyof D & string> {
    private readonly ctx;
    constructor(ctx: DataModelContext<D, K>);
    createProcessValueFn(def: InternalDatumPropertyDefinition<K>, accessor: ((datum: any) => any) | undefined, domain: IDataDomain, reusableResult: ProcessedValue, processorFns: Map<InternalDatumPropertyDefinition<K>, ProcessorFn>, domainMode: 'extend' | 'skip'): SpecializedProcessValueFn;
    private createSpecializedProcessValue;
    private createValidationMeta;
    /**
     * Creates a specialized processValue function optimized for key properties with validation.
     * Eliminates all branching for the most common key property case (~30% of calls).
     */
    private createSpecializedProcessValueKeyValidation;
    /**
     * Creates a specialized processValue function optimized for value properties with validation.
     * Eliminates branching for the most common value property case (~50% of calls).
     */
    private createSpecializedProcessValueValueValidation;
    /**
     * Creates a specialized processValue function for properties with forceValue.
     * Optimized for invisible series (~5-10% of calls).
     */
    private createSpecializedProcessValueForceValue;
    /**
     * Creates a specialized processValue function for properties with processors.
     * Optimized for data transformations (~5-10% of calls).
     */
    private createSpecializedProcessValueProcessor;
    /**
     * Creates the generic fallback processValue implementation used for edge cases
     * and for skip mode (no domain extension). Generates a per-definition function
     * so callers can resolve it once and reuse it without additional branching.
     */
    private createGenericProcessValue;
}
