/**
 * View Generator for V3.4.0 Logical Inference
 * Generates views with relationship-aware components and event subscriptions
 * Now uses dynamic component type resolution from v3.4 rules
 */
import { ModelDefinition, ViewSpec, InferenceContext, InferenceRule, ValidationResult, LogicalGenerator } from '../../core/types.js';
import { type ComponentMappingRules } from './component-type-resolver.js';
import { type SpecialistViewRules } from './specialist-view-expander.js';
import { ExpansionTemplateRuleFile, ConfigurationRuleFile } from '../../core/rule-file-types.js';
export interface ViewGenerationResult {
    views: Record<string, ViewSpec>;
    rulesUsed: number;
    validation: ValidationResult;
}
export declare class ViewGenerator implements LogicalGenerator<ModelDefinition, ViewSpec> {
    private debug;
    name: string;
    private ruleEngine;
    private contextManager;
    private componentResolver;
    private specialistExpander;
    private rulesLoaded;
    constructor(debug?: boolean);
    /**
     * Load component mapping rules from domain-specific format (v3.4.0 Phase 2)
     */
    loadComponentMappingsFromDomainSpecific(ruleFile: ConfigurationRuleFile): void;
    /**
     * Load component mapping rules from legacy format (backward compatibility)
     */
    loadComponentMappings(rules: ComponentMappingRules): void;
    /**
     * Load specialist view rules from domain-specific format (v3.4.0 Phase 3)
     */
    loadSpecialistViewRulesFromDomainSpecific(ruleFile: ExpansionTemplateRuleFile): void;
    /**
     * Load specialist view rules from legacy format (backward compatibility)
     */
    loadSpecialistViewRules(rules: SpecialistViewRules): void;
    /**
     * Load view inference rules
     */
    loadRules(rules: InferenceRule<ModelDefinition, ViewSpec>[]): Promise<ValidationResult>;
    /**
     * Check if this generator supports the given input
     */
    supports(input: ModelDefinition, context: InferenceContext): boolean;
    /**
     * Generate views for all models
     */
    generate(models: ModelDefinition[], baseContext: InferenceContext): Promise<ViewGenerationResult>;
    /**
     * Generate standard views for a model (list, detail, form)
     */
    private generateStandardViews;
    /**
     * Generate specialist views if expander is loaded (v3.4.0 Phase 3)
     * Specialist views include: dashboard, analytics, board, calendar, timeline, etc.
     *
     * DISABLED: Phase 2 - Reduce view generation to essentials only
     * Only list, detail, and form views are generated per model
     * No specialist views (dashboard, analytics, board, timeline, workflow, calendar)
     */
    private generateSpecialistViews;
    /**
     * Process user-specified view from .specly file (Phase 4)
     * User views can be simple (just type) or detailed (full uiComponents)
     */
    private processUserSpecifiedView;
    /**
     * Generate relationship-specific views
     *
     * DISABLED: Phase 2 - master_detail views disabled
     * Only association views for many-to-many relationships are generated
     */
    private generateRelationshipViews;
    /**
     * Generate aggregate views for dashboard and overview purposes
     */
    private generateAggregateViews;
    /**
     * Generate list view event subscriptions
     */
    private generateListViewSubscriptions;
    /**
     * Generate detail view event subscriptions
     */
    private generateDetailViewSubscriptions;
    /**
     * Generate master-detail view subscriptions
     */
    private generateMasterDetailSubscriptions;
    /**
     * Generate list view components
     */
    private generateListViewComponents;
    /**
     * Generate detail view components
     */
    private generateDetailViewComponents;
    /**
     * Generate form view components
     */
    private generateFormViewComponents;
    /**
     * Generate master-detail view components
     */
    private generateMasterDetailComponents;
    /**
     * Generate association view components for many-to-many relationships
     */
    private generateAssociationViewComponents;
    /**
     * Generate dashboard components
     */
    private generateDashboardComponents;
    private generateViewName;
    private getFilterableFields;
    private groupAttributesIntoSections;
    private getInputType;
    private humanize;
    /**
     * Convert string to PascalCase
     */
    private pascalCase;
    /**
     * Validate generated view specification
     */
    private validateViewSpec;
}
//# sourceMappingURL=view-generator.d.ts.map