/**
 * Analyze which directives are used in a template.
 */
export declare function analyzeDirectiveUsage(template: string): DirectiveUsage[];
/**
 * Get list of unused directives for tree-shaking.
 */
export declare function getUnusedDirectives(template: string, preserveDirectives?: string[]): string[];
/**
 * Generate tree-shaken directive loader code.
 */
export declare function generateTreeShakenBundle(usedDirectives: string[]): string;
/**
 * Find dead code branches that can be eliminated.
 */
export declare function findDeadBranches(template: string, constants?: Record<string, unknown>): DeadBranch[];
/**
 * Remove dead code branches from template.
 */
export declare function eliminateDeadCode(template: string, constants?: Record<string, unknown>): { content: string, removed: string[] };
/**
 * Evaluate a constant expression at compile time.
 */
export declare function evaluateConstant(expression: string, constants: Record<string, unknown>): unknown;
/**
 * Fold constant expressions in template.
 */
export declare function foldConstants(template: string, constants: Record<string, unknown>): { content: string, folded: string[] };
/**
 * Minify HTML content while preserving template directives.
 */
export declare function minifyHtml(template: string): string;
/**
 * Pool repeated string literals in template.
 */
export declare function poolStrings(template: string): {
  content: string
  pool: Map<string, string>
  count: number
};
/**
 * Optimize a single template with all available optimizations.
 */
export declare function optimizeTemplate(template: string, options?: OptimizationOptions): OptimizationResult;
/**
 * Create optimized build for multiple templates.
 */
export declare function createOptimizedBuild(templates: Map<string, string>, options?: OptimizationOptions): Promise<BuildResult>;
/** Optimization options */
export declare interface OptimizationOptions {
  treeShake?: boolean
  deadCodeElimination?: boolean
  constantFolding?: boolean
  stringPooling?: boolean
  minifyHtml?: boolean
  removeDevCode?: boolean
  constants?: Record<string, unknown>
  preserveDirectives?: string[]
  target?: 'production' | 'development'
}
/** Optimization result */
export declare interface OptimizationResult {
  content: string
  originalSize: number
  optimizedSize: number
  reduction: number
  appliedOptimizations: string[]
  removedDirectives: string[]
  foldedConstants: string[]
  pooledStrings: number
  warnings: string[]
}
/** Build result for multiple templates */
export declare interface BuildResult {
  templates: Map<string, OptimizationResult>
  directiveBundle?: string
  stringPool?: Map<string, string>
  totalOriginalSize: number
  totalOptimizedSize: number
  overallReduction: number
  warnings: string[]
}
/** Directive usage info */
declare interface DirectiveUsage {
  name: string
  count: number
  locations: Array<{ line: number, column: number }>
}
/** Dead code branch */
declare interface DeadBranch {
  start: number
  end: number
  reason: string
}
// =============================================================================
// Export Analysis Functions
// =============================================================================
export {
  analyzeDirectiveUsage as analyzeUsage,
  findDeadBranches as findDeadCode,
};
