/**
 * UnifiedDiagramGenerator - Core diagram generation engine
 *
 * Orchestrates diagram generation using plugins and provides unified API
 */
import { SpecVerseAST } from '@specverse/types';
import { DiagramType, DiagramOptions, DiagramGeneratorConfig, DiagramPlugin, ThemeConfig, ValidationResult } from '../types/index.js';
import { DiagramContext } from './DiagramContext.js';
/**
 * UnifiedDiagramGenerator - Main entry point for diagram generation
 */
export declare class UnifiedDiagramGenerator {
    private plugins;
    private styleManager;
    private renderer;
    private defaultTheme;
    constructor(config?: DiagramGeneratorConfig);
    /**
     * Register a diagram plugin
     */
    registerPlugin(plugin: DiagramPlugin): void;
    /**
     * Unregister a plugin for a specific diagram type
     */
    unregisterPlugin(type: DiagramType): boolean;
    /**
     * Get all available diagram types
     */
    getAvailableTypes(): DiagramType[];
    /**
     * Check if a diagram type is supported
     */
    isTypeSupported(type: DiagramType): boolean;
    /**
     * Get plugin for a specific diagram type
     */
    getPlugin(type: DiagramType): DiagramPlugin | undefined;
    /**
     * Validate AST before diagram generation
     */
    validate(ast: SpecVerseAST, type: DiagramType): ValidationResult;
    /**
     * Generate a single diagram
     */
    generate(ast: SpecVerseAST, type: DiagramType, options?: DiagramOptions): string;
    /**
     * Generate all diagram types
     */
    generateAll(ast: SpecVerseAST, options?: DiagramOptions): Map<DiagramType, string>;
    /**
     * Generate diagrams for a specific plugin
     */
    generateForPlugin(ast: SpecVerseAST, pluginName: string, options?: DiagramOptions): Map<DiagramType, string>;
    /**
     * Get diagram metadata (for documentation)
     */
    getMetadata(): Array<{
        type: DiagramType;
        plugin: string;
        description: string;
    }>;
    /**
     * Get options documentation for a diagram type
     */
    getOptionsForType(type: DiagramType): Partial<DiagramOptions> | undefined;
    /**
     * Get all available themes
     */
    getAvailableThemes(): string[];
    /**
     * Register a custom theme
     */
    registerTheme(theme: ThemeConfig): void;
    /**
     * Set default theme for all diagrams
     */
    setDefaultTheme(theme: string | ThemeConfig): void;
    /**
     * Generate diagram with custom context (advanced usage)
     */
    generateWithContext(context: DiagramContext, type: DiagramType): string;
}
//# sourceMappingURL=UnifiedDiagramGenerator.d.ts.map