/**
 * Variant-Specific Configuration Handler
 * Manages per-variant configuration including field exclusions and validation rules
 */
import { VariantType, VariantConfig, VariantManagerConfig } from '../types/variants';
/**
 * Configuration inheritance hierarchy
 */
export declare enum ConfigInheritanceLevel {
    DEFAULT = "default",
    GLOBAL = "global",
    VARIANT = "variant",
    MODEL = "model"
}
/**
 * Configuration validation result
 */
export interface ConfigValidationResult {
    isValid: boolean;
    errors: string[];
    warnings: string[];
    level: ConfigInheritanceLevel;
    appliedConfig: VariantConfig;
}
/**
 * Configuration merger interface
 */
export interface ConfigMerger {
    mergeConfigs<T>(base: T, override: Partial<T>): T;
    validateMergedConfig(config: VariantConfig): ConfigValidationResult;
}
/**
 * Variant Configuration Manager
 * Handles configuration inheritance, validation, and caching
 */
export declare class VariantConfigurationManager implements ConfigMerger {
    private configCache;
    private cacheTimeout;
    private globalConfig;
    constructor(globalConfig?: Partial<VariantManagerConfig>);
    /**
     * Get configuration for a specific model and variant
     */
    getVariantConfig(modelName: string, variantType: VariantType, overrides?: Partial<VariantConfig>): VariantConfig;
    /**
     * Build configuration hierarchy from defaults to model-specific overrides
     */
    private buildConfigurationHierarchy;
    /**
     * Get default configuration for a variant type
     */
    getDefaultVariantConfig(variantType: VariantType): VariantConfig;
    /**
     * Merge configurations with proper deep merging
     */
    mergeConfigs<T>(base: T, override: Partial<T>): T;
    /**
     * Validate merged configuration
     */
    validateMergedConfig(config: VariantConfig): ConfigValidationResult;
    /**
     * Update global configuration
     */
    updateGlobalConfig(updates: Partial<VariantManagerConfig>): void;
    /**
     * Add model-specific override
     */
    addModelOverride(modelName: string, variantType: VariantType, override: Partial<VariantConfig>): void;
    /**
     * Remove model-specific override
     */
    removeModelOverride(modelName: string, variantType?: VariantType): void;
    /**
     * Get effective field exclusions for a model variant
     */
    getEffectiveFieldExclusions(modelName: string, variantType: VariantType, fieldNames: string[]): {
        excludedFields: string[];
        includedFields: string[];
        exclusionReasons: Record<string, string[]>;
    };
    /**
     * Get effective validation customizations
     */
    getEffectiveValidationCustomizations(modelName: string, variantType: VariantType, fieldName: string): {
        validations: string[];
        isInlineDisabled: boolean;
        customTemplate?: string;
    };
    /**
     * Export configuration as JSON
     */
    exportConfiguration(): string;
    /**
     * Import configuration from JSON
     */
    importConfiguration(configJson: string): void;
    /**
     * Private helper methods
     */
    private buildDefaultGlobalConfig;
    private getDefaultPriority;
    private generateCacheKey;
    private getCachedConfig;
    private cacheConfig;
    private clearCache;
    private clearModelCache;
    private getInheritanceChain;
    private isPlainObject;
    private isAutoGeneratedField;
    private hashObject;
}
/**
 * Configuration utility functions
 */
export declare class ConfigurationUtils {
    /**
     * Compare two configurations for differences
     */
    static compareConfigs(config1: VariantConfig, config2: VariantConfig): {
        areSame: boolean;
        differences: Array<{
            path: string;
            value1: unknown;
            value2: unknown;
        }>;
    };
    /**
     * Get configuration summary
     */
    static getConfigSummary(config: VariantConfig): {
        type: VariantType;
        excludedFieldsCount: number;
        customValidationsCount: number;
        hasDocumentation: boolean;
        priority: number;
    };
    /**
     * Validate configuration compatibility
     */
    static validateCompatibility(configs: VariantConfig[]): {
        isCompatible: boolean;
        conflicts: Array<{
            config1: VariantType;
            config2: VariantType;
            issue: string;
        }>;
    };
    private static deepCompare;
}
export default VariantConfigurationManager;
