/**
 * Component Type Resolver for v3.4.0
 *
 * Dynamically resolves component types based on v3.4 inference rules
 * instead of hardcoded switch statements.
 *
 * Updated for Phase 2: Uses domain-specific ConfigurationRuleFile format directly
 */
import { ConfigurationRuleFile, AttributeComponentMapping, RelationshipComponentMapping } from '../../core/rule-file-types.js';
export type AttributeRule = AttributeComponentMapping;
export type RelationshipRule = RelationshipComponentMapping;
export interface ViewPattern {
    pattern: string;
    priority: number;
    components: Record<string, {
        type: string;
        [key: string]: any;
    }>;
}
export interface ComponentMappingRules {
    version: string;
    description: string;
    logical_inference: {
        component_type_mapping: {
            description: string;
            attribute_rules: AttributeComponentMapping[];
            relationship_mapping: RelationshipComponentMapping[];
        };
        automatic_crud_views?: {
            description: string;
            list_view?: ViewPattern;
            detail_view?: ViewPattern;
            form_view?: ViewPattern;
        };
    };
}
export declare class ComponentTypeResolver {
    private mappings;
    private version;
    /**
     * Load component mappings from domain-specific format
     */
    loadRulesFromDomainSpecific(ruleFile: ConfigurationRuleFile): void;
    /**
     * Load component mapping rules from legacy JSON format (backward compatibility)
     */
    loadRules(rules: ComponentMappingRules): void;
    /**
     * Resolve component type for an attribute
     */
    resolveAttributeComponentType(attribute: any): {
        type: string;
        properties?: Record<string, any>;
    };
    /**
     * Resolve component type for a relationship
     */
    resolveRelationshipComponentType(relationship: any): {
        type: string;
        properties?: Record<string, any>;
    };
    /**
     * Get CRUD view pattern components
     * TODO: Update to use domain-specific format view patterns
     */
    getListViewPattern(): Record<string, any> | null;
    getDetailViewPattern(): Record<string, any> | null;
    getFormViewPattern(): Record<string, any> | null;
    /**
     * Check if attribute matches a rule
     */
    private matchesAttributeRule;
    /**
     * Check if rules are loaded
     */
    isLoaded(): boolean;
    /**
     * Get loaded rules version
     */
    getVersion(): string | null;
}
//# sourceMappingURL=component-type-resolver.d.ts.map