import type { Declaration } from './types';
/**
 * Parse JSDoc comments from a declaration
 */
export declare function parseJSDoc(comments: string[] | undefined): JSDocInfo;
/**
 * Extract documentation from source files
 */
export declare function extractDocumentation(files: string[], config?: Partial<DocsConfig>): Promise<Documentation>;
/**
 * Generate markdown documentation
 */
export declare function generateMarkdown(docs: Documentation, config?: Partial<DocsConfig>): string;
/**
 * Generate HTML documentation
 */
export declare function generateHTML(docs: Documentation, config?: Partial<DocsConfig>): string;
/**
 * Generate JSON documentation
 */
export declare function generateJSON(docs: Documentation, config?: Partial<DocsConfig>): string;
/**
 * Generate documentation in TypeDoc-compatible JSON format
 */
export declare function generateTypeDocJSON(docs: Documentation): string;
/**
 * Generate and write documentation files
 */
export declare function generateDocs(files: string[], config: DocsConfig): Promise<void>;
/**
 * Create a documentation generator with preset configuration
 */
export declare function createDocsGenerator(config?: Partial<DocsConfig>): {
  extract: (files: string[]) => Promise<Documentation>
  generateMarkdown: (docs: Documentation) => string
  generateHTML: (docs: Documentation) => string
  generateJSON: (docs: Documentation) => string
  parseJSDoc: typeof parseJSDoc
};
/**
 * Documentation configuration
 */
export declare interface DocsConfig {
  format: 'markdown' | 'html' | 'json'
  outdir: string
  includePrivate?: boolean
  includeInternal?: boolean
  groupByCategory?: boolean
  title?: string
  description?: string
  includeSourceLinks?: boolean
  sourceBaseUrl?: string
  includeTypes?: boolean
  splitByModule?: boolean
  template?: 'default' | 'minimal' | 'detailed'
  customCss?: string
  includeSidebar?: boolean
}
/**
 * Parsed JSDoc information
 */
export declare interface JSDocInfo {
  description: string
  params: Array<{ name: string, type?: string, description: string, optional?: boolean }>
  returns?: { type?: string, description: string }
  examples: string[]
  tags: Record<string, string[]>
  deprecated?: string
  since?: string
  see: string[]
  throws: Array<{ type?: string, description: string }>
  category?: string
}
/**
 * Documentation entry for a declaration
 */
export declare interface DocEntry {
  name: string
  kind: Declaration['kind']
  signature: string
  jsdoc: JSDocInfo
  isExported: boolean
  isDefault?: boolean
  sourceFile?: string
  sourceLine?: number
  members?: DocEntry[]
}
/**
 * Documentation output structure
 */
export declare interface Documentation {
  title: string
  description?: string
  entries: DocEntry[]
  categories: Map<string, DocEntry[]>
  generatedAt: Date
}
