import type { AstNode } from "@/types";
/**
 * Configuration options for tree-shaking
 */
export interface TreeShakeOptions {
    /**
     * If true, enables tree-shaking. Default: true
     */
    enabled?: boolean;
    /**
     * If true, provides verbose logging of tree-shaking decisions
     */
    verbose?: boolean;
}
/**
 * Result of tree-shaking analysis
 */
export interface TreeShakeResult {
    /**
     * The filtered AST body with unused nodes removed
     */
    body: AstNode[];
    /**
     * Statistics about what was removed
     */
    stats: {
        originalCount: number;
        retainedCount: number;
        removedCount: number;
        removedNodes: string[];
    };
}
/**
 * Internal type for tracking dependencies
 */
export interface DependencyGraph {
    /**
     * Map of symbol name to the nodes that depend on it
     */
    dependencies: Map<string, Set<AstNode>>;
    /**
     * Set of all retained node references
     */
    retained: Set<AstNode>;
    /**
     * Map of symbol name to its declaration node
     */
    declarations: Map<string, AstNode>;
}
//# sourceMappingURL=types.d.ts.map