export interface ScanConfig { rootDir: string; translationPaths: string[]; sourceExtensions: string[]; translationFunctionName: string; outputPath: string; ignorePaths: string[]; } export interface LocationRef { file: string; line: number; column: number; } export interface MissingKeyReport { key: string; occurrences: LocationRef[]; } export interface UnusedKeyReport { key: string; definedIn: string[]; } export interface HardCodedTextOccurrence { text: string; file: string; line: number; column: number; suggestion?: string; } export interface TranslationFileSummary { path: string; keyCount: number; } export interface ScanStats { sourceFilesScanned: number; translationFilesLoaded: number; translationKeysTotal: number; usedKeysTotal: number; } export interface ScanReport { rootDir: string; config: { translationFunctionName: string; sourceExtensions: string[]; translationPaths: string[]; ignorePaths: string[]; }; stats: ScanStats; missingKeys: MissingKeyReport[]; unusedKeys: UnusedKeyReport[]; hardCodedText: HardCodedTextOccurrence[]; translationFiles: TranslationFileSummary[]; generatedAt: string; } export interface UserConfig { translationPaths?: string[]; sourceExtensions?: string[]; translationFunctionName?: string; outputPath?: string; ignorePaths?: string[]; } export type ConfigFileExport = UserConfig | (() => UserConfig) | Promise | Promise<() => UserConfig>;