type ScoringMode = "committed" | "code-coverage" | "weighted"; type ExpirationPolicyType = "never" | "time" | "change" | "combined"; interface ExpirationConfig { policy: ExpirationPolicyType; duration?: number; threshold?: number; } interface WeightConfig { blame: number; commit: number; } type HotspotMode = "personal" | "team"; interface CliOptions { mode: ScoringMode; user?: string | string[]; expiration: ExpirationConfig; html: boolean; weights: WeightConfig; repoPath: string; team?: boolean; contributorsPerFile?: boolean; hotspot?: HotspotMode; since?: number; demo?: boolean; } interface FileScore { type: "file"; path: string; lines: number; score: number; isWritten?: boolean; blameScore?: number; commitScore?: number; isExpired?: boolean; lastTouchDate?: Date; } interface FolderScore { type: "folder"; path: string; lines: number; score: number; fileCount: number; readCount?: number; children: TreeNode[]; } type TreeNode = FileScore | FolderScore; interface FamiliarityResult { tree: FolderScore; repoName: string; userName: string; mode: string; writtenCount: number; totalFiles: number; } declare function computeFamiliarity(options: CliOptions): Promise; export { type CliOptions, type ExpirationConfig, type FamiliarityResult, type FileScore, type FolderScore, type ScoringMode, type TreeNode, type WeightConfig, computeFamiliarity };