/** * Port: IRaceResultsProvider * * Provider interface for race results data needed for rating calculations. * This is an application layer port that bridges racing context to identity context. */ export interface RaceResultData { userId: string; startPos: number; finishPos: number; incidents: number; status: 'finished' | 'dnf' | 'dns' | 'dsq' | 'afk'; sof?: number; // Optional strength of field } export interface RaceResultsData { raceId: string; results: RaceResultData[]; } export interface IRaceResultsProvider { /** * Get race results by race ID * Returns null if race not found or no results */ getRaceResults(raceId: string): Promise; /** * Check if race results exist for a race */ hasRaceResults(raceId: string): Promise; }