/** Scores candidate media against a taste profile with natural-language explanations */ import type { AniListMedia } from "../types.js"; import type { TasteProfile } from "./taste.js"; import type { MoodModifiers } from "./mood.js"; export interface MatchResult { media: AniListMedia; score: number; reasons: string[]; moodFit: string | null; } export interface ScoreBreakdown { genreScore: number; tagScore: number; communityScore: number; popularityFactor: number; moodMultiplier: number; finalScore: number; } export interface ExplainResult { media: AniListMedia; breakdown: ScoreBreakdown; matchedGenres: string[]; unmatchedGenres: string[]; matchedTags: string[]; unmatchedTags: string[]; reasons: string[]; moodFit: string | null; } /** Score and rank candidates against a user's taste profile */ export declare function matchCandidates(candidates: AniListMedia[], profile: TasteProfile, mood?: MoodModifiers): MatchResult[]; /** Score a single title against a taste profile with a detailed breakdown */ export declare function explainMatch(media: AniListMedia, profile: TasteProfile, mood?: MoodModifiers): ExplainResult;