UNPKG

iracing-api

Version:

Javascript client for iracing API

332 lines (331 loc) 14.2 kB
import { API } from './api'; import { GetDriverSeasonStandingsParams, GetMemberBestsParams, GetMemberCareerParams, GetMemberDivisionParams, GetMemberRecapParams, GetMemberRecentRacesParams, GetMemberSummaryParams, GetMemberYearlyStatsParams, GetQualifySeasonResultsParams, GetSupersessionSeasonStandingsParams, GetTeamSeasonStandingsParams, GetTimeTrialSeasonResultsParams, GetTimeTrialSeasonStandingsParams, GetWorldRecordsParams } from '../types'; /** * Provides methods for interacting with member statistics endpoints. */ export declare class StatsAPI extends API { /** * Get member's best lap times for specified car at various tracks. * * @param {GetMemberBestsParams} [params] - Optional parameters. * @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member. * @param {number} [params.carId] - Car ID. First call should omit this; use `carsDriven` list in response for subsequent calls. * * @returns A promise resolving to the member's best lap times data, or undefined on error. */ getMemberBests: (params?: GetMemberBestsParams) => Promise<{ custId: number; carId: number; carsDriven: { carId: number; carName: string; }[]; bests: { endTime: string; track: { configName: string; trackId: number; trackName: string; }; eventType: string; subsessionId: number; seasonYear: number; seasonQuarter: number; bestLapTime: number; }[]; } | undefined>; /** * Get career statistics for a member across different categories. * * @param {GetMemberCareerParams} [params] - Optional parameters. * @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member. * * @returns A promise resolving to the member's career stats, or undefined on error. */ getMemberCareer: (params?: GetMemberCareerParams) => Promise<{ custId: number; stats: { category: string; categoryId: number; laps: number; lapsLed: number; starts: number; wins: number; top5: number; poles: number; avgStartPosition: number; avgFinishPosition: number; avgIncidents: number; avgPoints: number; winPercentage: number; top5Percentage: number; lapsLedPercentage: number; totalClubPoints: number; }[]; } | undefined>; /** * Get the division for the **authenticated** member in a specific season and event type. * * Note: Divisions are 0-based (0=Division 1, 10=Rookie). * * @param {GetMemberDivisionParams} params - Parameters for the request. * @param {number} params.seasonId - The ID of the season. * @param {number} params.eventType - Event type code (4=Time Trial, 5=Race). * * @returns A promise resolving to the member's division data, or undefined on error. */ getMemberDivision: (params: GetMemberDivisionParams) => Promise<{ success: boolean; eventType: number; seasonId: number; division: number; projected: boolean; } | undefined>; /** * Get a list of the member's most recent races. * * @param {GetMemberRecentRacesParams} [params] - Optional parameters. * @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member. * * @returns A promise resolving to the list of recent races, or undefined on error. */ getMemberRecentRaces: (params?: GetMemberRecentRacesParams) => Promise<{ custId: number; races: { track: { trackId: number; trackName: string; }; carId: number; carClassId: number; subsessionId: number; seasonId: number; seasonYear: number; seasonQuarter: number; licenseLevel: number; seriesId: number; seriesName: string; finishPosition: number; strengthOfField: number; clubPoints: number; dropRace: boolean; incidents: number; livery: { pattern: number; color1: string; color2: string; color3: string; carId: number; }; newSubLevel: number; newiRating: number; oldSubLevel: number; oldiRating: number; raceWeekNum: number; winnerHelmet: { pattern: number; color1: string; color2: string; color3: string; faceType: number; helmetType: number; }; winnerLicenseLevel: number; winnerName: string; sessionStartTime: string; winnerGroupId: number; startPosition: number; qualifyingTime: number; laps: number; lapsLed: number; points: number; }[]; } | undefined>; /** * Get a recap of a member's statistics for a specific year or season. * * @param {GetMemberRecapParams} [params] - Optional parameters. * @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member. * @param {number} [params.year] - Year for the recap. Defaults to the current calendar year (UTC). * @param {number} [params.season] - Season (quarter) within the year. If omitted, recap is for the entire year. * * @returns A promise resolving to the member recap data, or undefined on error. */ getMemberRecap: (params?: GetMemberRecapParams) => Promise<{ success: boolean; year: number; custId: number; stats: { laps: number; lapsLed: number; starts: number; wins: number; top5: number; avgStartPosition: number; avgFinishPosition: number; favoriteCar: { carId: number; carName: string; carImage: string; }; favoriteTrack: { configName: string; trackId: number; trackName: string; trackLogo: string; }; }; season: null; } | undefined>; /** * Get a summary of a member's participation (official vs. league) for the current year. * * @param {GetMemberSummaryParams} [params] - Optional parameters. * @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member. * * @returns A promise resolving to the member summary data, or undefined on error. */ getMemberSummary: (params?: GetMemberSummaryParams) => Promise<{ custId: number; thisYear: { numOfficialSessions: number; numLeagueSessions: number; numOfficialWins: number; numLeagueWins: number; }; } | undefined>; /** * Get yearly statistics for a member. * * @param {GetMemberYearlyStatsParams} [params] - Optional parameters. * @param {number} [params.customerId] - Customer ID. Defaults to the authenticated member. * * @returns A promise resolving to the member's yearly stats, or undefined on error. */ getMemberYearlyStats: (params?: GetMemberYearlyStatsParams) => Promise<{ custId: number; stats: ({ category: string; categoryId: number; laps: number; lapsLed: number; starts: number; wins: number; top5: number; poles: number; avgStartPosition: number; avgFinishPosition: number; avgIncidents: number; avgPoints: number; winPercentage: number; top5Percentage: number; lapsLedPercentage: number; totalClubPoints: number; } & { year: number; })[]; } | undefined>; /** * Get the driver standings for a specific season. * * @param {GetDriverSeasonStandingsParams} params - Parameters for the request. * @param {number} params.seasonId - The ID of the season. * @param {number} params.carClassId - The ID of the car class. * @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all. * @param {number} [params.division] - Filter by division (0-based). Defaults to all. * @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week. * * @returns A promise resolving to the driver season standings data, or undefined on error. */ getDriverSeasonStandings: (params: GetDriverSeasonStandingsParams) => Promise<Record<string, unknown> | undefined>; /** * Get the supersession standings for a specific season. * * @param {GetSupersessionSeasonStandingsParams} params - Parameters for the request. * @param {number} params.seasonId - The ID of the season. * @param {number} params.carClassId - The ID of the car class. * @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all. * @param {number} [params.division] - Filter by division (0-based). Defaults to all. * @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week. * * @returns A promise resolving to the supersession standings data, or undefined on error. */ getSupersessionSeasonStandings: (params: GetSupersessionSeasonStandingsParams) => Promise<Record<string, unknown> | undefined>; /** * Get the team standings for a specific season. * * @param {GetTeamSeasonStandingsParams} params - Parameters for the request. * @param {number} params.seasonId - The ID of the season. * @param {number} params.carClassId - The ID of the car class. * @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week. * * @returns A promise resolving to the team season standings data, or undefined on error. */ getTeamSeasonStandings: (params: GetTeamSeasonStandingsParams) => Promise<Record<string, unknown> | undefined>; /** * Get the time trial results for a specific season. * * @param {GetTimeTrialSeasonResultsParams} params - Parameters for the request. * @param {number} params.seasonId - The ID of the season. * @param {number} params.carClassId - The ID of the car class. * @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all. * @param {number} [params.division] - Filter by division (0-based). Defaults to all. * @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week. * * @returns A promise resolving to the time trial results data, or undefined on error. */ getTimeTrialSeasonResults: (params: GetTimeTrialSeasonResultsParams) => Promise<Record<string, unknown> | undefined>; /** * Get the time trial season standings. * * @param {GetTimeTrialSeasonStandingsParams} params - Parameters for the request. * @param {number} params.seasonId - The season ID to get the standings for. * @param {number} params.carClassId - The car class ID to get the standings for. * @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all. * @param {number} [params.division] - Filter by division (0-based). Defaults to all. * @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). * * @returns A promise resolving to the time trial season standings, or undefined on error. */ getTimeTrialSeasonStandings: (params: GetTimeTrialSeasonStandingsParams) => Promise<Record<string, unknown> | undefined>; /** * Get the qualify results for a specific season. * * @param {GetQualifySeasonResultsParams} params - Parameters for the request. * @param {number} params.seasonId - The ID of the season. * @param {number} params.carClassId - The ID of the car class. * @param {number} [params.clubId=-1] - Filter by club ID. Defaults to all. * @param {number} [params.division] - Filter by division (0-based). Defaults to all. * @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). Defaults to the latest completed week. * * @returns A promise resolving to the qualify results data, or undefined on error. */ getQualifySeasonStandings: (params: GetQualifySeasonResultsParams) => Promise<Record<string, unknown> | undefined>; /** * Get world records for a specific car and track combination. * * @param {GetWorldRecordsParams} params - Parameters for the request. * @param {number} params.carId - The ID of the car. * @param {number} params.trackId - The ID of the track. * @param {number} [params.seasonYear] - Optional year to limit results. * @param {number} [params.seasonQuarter] - Optional quarter (1-4) to limit results (requires `seasonYear`). * * @returns A promise resolving to the world records data (chunked), or undefined on error. */ getWorldRecords: (params: GetWorldRecordsParams) => Promise<{ type: "stats_world_records"; data: { success: boolean; chunk_info: { base_download_url: string; chunk_file_names: string[]; rows: number; chunk_size: number; num_chunks: number; }; car_id: number; track_id: number; last_updated: string; }; } | undefined>; }