/**
 * BaseDiagramPlugin - Abstract base class for diagram plugins
 *
 * Provides common functionality and contract for all diagram plugins
 */
import { DiagramPlugin, DiagramType, DiagramOptions, DiagramContext, MermaidDiagram, ValidationResult } from '../types/index.js';
import { SpecVerseAST } from '@specverse/types';
/**
 * Abstract base class for diagram plugins
 */
export declare abstract class BaseDiagramPlugin implements DiagramPlugin {
    abstract name: string;
    abstract version: string;
    abstract description: string;
    abstract supportedTypes: DiagramType[];
    /**
     * Generate diagram - must be implemented by subclasses
     */
    abstract generate(context: DiagramContext, type: DiagramType): MermaidDiagram;
    /**
     * Validate AST - default implementation (can be overridden)
     */
    validate(ast: SpecVerseAST): ValidationResult;
    /**
     * Get default options - can be overridden by subclasses
     */
    getDefaultOptions(): Partial<DiagramOptions>;
    /**
     * Helper: Check if diagram type is supported
     */
    protected isTypeSupported(type: DiagramType): boolean;
    /**
     * Helper: Validate diagram type
     */
    protected validateType(type: DiagramType): void;
    /**
     * Helper: Create empty diagram structure
     */
    protected createEmptyDiagram(type: 'graph' | 'erDiagram' | 'sequenceDiagram' | 'stateDiagram' | 'classDiagram', direction?: 'TB' | 'TD' | 'BT' | 'LR' | 'RL'): MermaidDiagram;
}
//# sourceMappingURL=BaseDiagramPlugin.d.ts.map