/**
 * Event Generator for V3.1 Logical Inference
 * Generates events for CURED operations, lifecycle changes, and relationships
 */
import { ModelDefinition, EventSpec, InferenceContext, InferenceRule, ValidationResult, LogicalGenerator } from '../../core/types.js';
export interface EventGenerationResult {
    events: Record<string, EventSpec>;
    rulesUsed: number;
    validation: ValidationResult;
}
export declare class EventGenerator implements LogicalGenerator<ModelDefinition, EventSpec> {
    private debug;
    name: string;
    private ruleEngine;
    private contextManager;
    private rulesLoaded;
    constructor(debug?: boolean);
    /**
     * Load event inference rules
     */
    loadRules(rules: InferenceRule<ModelDefinition, EventSpec>[]): Promise<ValidationResult>;
    /**
     * Check if this generator supports the given input
     */
    supports(input: ModelDefinition, context: InferenceContext): boolean;
    /**
     * Generate events for all models
     */
    generate(models: ModelDefinition[], baseContext: InferenceContext): Promise<EventGenerationResult>;
    /**
     * Generate standard CURED events for a model
     */
    private generateStandardEvents;
    /**
     * Generate relationship-specific events
     */
    private generateRelationshipEvents;
    /**
     * Generate lifecycle events
     */
    private generateLifecycleEvents;
    /**
     * Generate profile-specific events
     */
    private generateProfileEvents;
    /**
     * Generate event attributes based on model attributes
     */
    private generateEventAttributes;
    /**
     * Get display name attribute from model
     */
    private getDisplayNameAttribute;
    /**
     * Generate event name from model and rule
     */
    private generateEventName;
    /**
     * Validate generated event specification
     */
    private validateEventSpec;
    /**
     * Convert string to PascalCase
     */
    private pascalCase;
}
//# sourceMappingURL=event-generator.d.ts.map