import ts from 'typescript';
import type { DtsGenerationConfig } from './types';
/**
 * Load TypeScript compiler options from tsconfig.json
 */
export declare function loadCompilerOptions(tsconfigPath: string, overrides?: Partial<ts.CompilerOptions>): ts.CompilerOptions;
/**
 * Type check TypeScript/declaration files
 */
export declare function typeCheck(files: string[], config?: TypeCheckConfig): Promise<TypeCheckResult>;
/**
 * Validate that generated .d.ts files are valid TypeScript
 */
export declare function validateDeclarations(dtsFiles: string[], config?: TypeCheckConfig): Promise<TypeCheckResult>;
/**
 * Check if source files are compatible with TypeScript's isolatedDeclarations mode
 */
export declare function checkIsolatedDeclarations(files: string[], tsconfigPath?: string): Promise<Map<string, IsolatedDeclarationsResult>>;
/**
 * Get type information for a specific position in a file
 */
export declare function getTypeAtPosition(filePath: string, line: number, column: number, tsconfigPath?: string): string | null;
/**
 * Get quick info (hover information) for a position
 */
export declare function getQuickInfo(filePath: string, line: number, column: number, tsconfigPath?: string): { type: string, documentation?: string } | null;
/**
 * Format type check results as a human-readable string
 */
export declare function formatTypeCheckResults(result: TypeCheckResult): string;
/**
 * Integrate type checking into DTS generation config
 */
export declare function typeCheckWithConfig(config: DtsGenerationConfig): Promise<TypeCheckResult>;
/**
 * Validate generated declarations match the source types
 */
export declare function validateGeneratedDeclarations(_sourceFiles: string[], _dtsFiles: string[], _tsconfigPath?: string): Promise<{
    valid: boolean
    mismatches: Array<{
      sourceName: string
      sourceType: string
      dtsType: string
    }>
  }>;
/**
 * A diagnostic message from type checking
 */
export declare interface TypeDiagnostic {
  file: string
  line: number
  column: number
  message: string
  code: number
  severity: DiagnosticSeverity
  source?: string
  suggestion?: string
  category: string
}
/**
 * Result of type checking
 */
export declare interface TypeCheckResult {
  success: boolean
  diagnostics: TypeDiagnostic[]
  errorCount: number
  warningCount: number
  infoCount: number
  filesChecked: string[]
  durationMs: number
}
/**
 * Type checking configuration
 */
export declare interface TypeCheckConfig {
  tsconfigPath?: string
  rootDir?: string
  strict?: boolean
  declarationsOnly?: boolean
  skipLibCheck?: boolean
  include?: string[]
  exclude?: string[]
  warningsAsErrors?: boolean
  maxErrors?: number
  compilerOptions?: Partial<ts.CompilerOptions>
}
/**
 * Isolated declarations checking result
 */
export declare interface IsolatedDeclarationsResult {
  compatible: boolean
  issues: IsolatedDeclarationsIssue[]
}
/**
 * An issue found during isolated declarations checking
 */
export declare interface IsolatedDeclarationsIssue {
  line: number
  column: number
  message: string
  declarationName?: string
  missingAnnotation?: 'return' | 'parameter' | 'variable' | 'property'
}
/**
 * Diagnostic severity levels
 */
export type DiagnosticSeverity = 'error' | 'warning' | 'info' | 'hint';
