/**
 * Graph Types
 *
 * Type definitions for the plugin dependency graph system.
 */
/**
 * A node in the dependency graph representing a plugin
 */
export interface GraphNode {
    /** Unique identifier for the plugin */
    id: string;
    /** Display name of the plugin */
    name: string;
    /** Current version if known */
    version: string;
    /** Whether the plugin is currently installed */
    isInstalled: boolean;
    /** Whether this is a missing dependency */
    isMissing: boolean;
    /** Plugin category if known */
    category?: string;
}
/**
 * Types of dependency relationships
 */
export type DependencyType = 'required' | 'optional' | 'soft';
/**
 * An edge in the dependency graph representing a dependency relationship
 */
export interface GraphEdge {
    /** ID of the plugin that has the dependency */
    from: string;
    /** ID of the plugin that is depended upon */
    to: string;
    /** Type of dependency */
    type: DependencyType;
    /** Whether the dependency is satisfied (target is installed) */
    isSatisfied: boolean;
}
/**
 * Result of cycle detection
 */
export interface CycleInfo {
    /** Whether cycles were found */
    hasCycles: boolean;
    /** List of cycles, each cycle is an array of plugin IDs */
    cycles: string[][];
}
/**
 * Statistics about the dependency graph
 */
export interface GraphStats {
    /** Total number of nodes (plugins) */
    nodeCount: number;
    /** Total number of edges (dependencies) */
    edgeCount: number;
    /** Number of installed plugins */
    installedCount: number;
    /** Number of missing dependencies */
    missingCount: number;
    /** Number of unsatisfied dependencies */
    unsatisfiedCount: number;
    /** Number of circular dependency cycles */
    cycleCount: number;
}
/**
 * Options for building a graph from plugins
 */
export interface GraphBuildOptions {
    /** Include optional dependencies */
    includeOptional?: boolean;
    /** Include soft dependencies */
    includeSoft?: boolean;
    /** Add missing dependencies as nodes */
    addMissingNodes?: boolean;
}
/**
 * Result of traversing upstream/downstream dependencies
 */
export interface TraversalResult {
    /** IDs of nodes found during traversal */
    nodeIds: string[];
    /** Depth of each node from the starting point */
    depths: Map<string, number>;
    /** Maximum depth reached */
    maxDepth: number;
}
/**
 * View mode for graph rendering
 */
export type GraphViewMode = 'tree' | 'matrix' | 'list';
/**
 * Options for graph rendering
 */
export interface RenderOptions {
    /** View mode */
    mode: GraphViewMode;
    /** Maximum depth to render (-1 for unlimited) */
    maxDepth: number;
    /** Whether to show version numbers */
    showVersions: boolean;
    /** Whether to colorize output */
    colorize: boolean;
    /** Maximum width for rendering */
    maxWidth: number;
    /** Root node ID (for focused views) */
    rootNodeId?: string;
}
/**
 * Export format for the graph
 */
export type ExportFormat = 'dot' | 'mermaid' | 'json';
//# sourceMappingURL=graph-types.d.ts.map