/**
 * EventFlowPlugin - Event-driven architecture visualization
 *
 * Supports:
 * - event-flow-layered: 5-layer architecture with dual event bus
 * - event-flow-sequence: Temporal event sequences
 * - event-flow-swimlane: Parallel event flows
 */
import { BaseDiagramPlugin } from '../../core/BaseDiagramPlugin.js';
import { DiagramType, DiagramContext, MermaidDiagram, ValidationResult } from '../../types/index.js';
import { SpecVerseAST } from '@specverse/types';
export declare class EventFlowPlugin extends BaseDiagramPlugin {
    name: string;
    version: string;
    description: string;
    supportedTypes: DiagramType[];
    /**
     * Generate diagram based on type
     */
    generate(context: DiagramContext, type: DiagramType): MermaidDiagram;
    /**
     * Validate AST for event flow diagram generation
     */
    validate(ast: SpecVerseAST): ValidationResult;
    /**
     * Generate layered event flow diagram with topological sorting
     */
    private generateLayeredEventFlow;
    /**
     * Generate sequence diagram for event flows
     */
    private generateSequenceEventFlow;
    /**
     * Generate swimlane diagram for parallel event flows
     *
     * Creates horizontal swimlanes for each component (controller/service)
     * with events flowing across swimlanes showing parallel processing
     */
    private generateSwimlaneEventFlow;
    /**
     * Helper: Get event publishers from models
     */
    private getEventPublishers;
    /**
     * Helper: Get events published by controller
     */
    private getControllerPublishedEvents;
    /**
     * Helper: Get events published by service
     */
    private getServicePublishedEvents;
    /**
     * Helper: Get app event publishers
     */
    private getAppEventPublishers;
    /**
     * Get default options for event flow diagrams
     */
    getDefaultOptions(): {
        includeEvents: boolean;
        includeSubscribers: boolean;
        title: string;
    };
    /**
     * Compute component layers using topological sort
     * Returns a map of component name -> layer number
     */
    private computeComponentLayers;
}
//# sourceMappingURL=EventFlowPlugin.d.ts.map