UNPKG

iracing-api

Version:

Javascript client for iracing API

249 lines (248 loc) 11.9 kB
import { API } from './api'; import { GetResultParams, GetResultResponse, GetResultsEventLogParams, GetResultsLapChartDataParams, GetResultsLapDataOptions, GetResultsLapDataParams, GetResultsLapDataResponse, GetResultsLapDataWithChunksResponse, GetSeasonResultsParams, SearchSeriesParams, SearchHostedParams, SearchHostedResponse, GetResultsEventLogResponse, GetResultsEventLogWithChunksResponse } from '../types/results'; /** * Provides methods for interacting with session result endpoints. */ export declare class ResultsAPI extends API { /** * Get the results of a specific subsession. * * Note: `series_logo` image paths in response are relative to `https://images-static.iracing.com/img/logos/series/`. * * @param {GetResultParams} params - Parameters for the request. * @param {number} params.subsessionId - The ID of the subsession. * @param {boolean} [params.includeLicenses=false] - Include license information in the response. * * @returns A promise resolving to the race result data, or undefined on error. */ getResult: (params: GetResultParams) => Promise<GetResultResponse | undefined>; /** * Get the event log for a specific subsession and simsession. * * @param {GetResultsEventLogParams} params - Parameters for the request. * @param {number} params.subsessionId - The ID of the subsession. * @param {number} params.simsessionNumber - The simsession number (0 for main event, -1 for preceding, etc.). * @param {Object} [options] - Options for fetching data. * @param {boolean} [options.getAllChunks=false] - If true, fetch and combine data from all chunks (if applicable). * * @returns A promise resolving to the event log data, potentially combined from chunks, or throws an error if fetching fails. */ getResultsEventLog: (params: GetResultsEventLogParams, options?: { getAllChunks?: boolean; }) => Promise<GetResultsEventLogResponse | GetResultsEventLogWithChunksResponse>; /** * Get lap chart data for a specific subsession and simsession. * * @param {GetResultsLapChartDataParams} params - Parameters for the request. * @param {number} params.subsessionId - The ID of the subsession. * @param {number} params.simsessionNumber - The simsession number (0 for main event, -1 for preceding, etc.). * @param {Object} [options] - Options for fetching data. * @param {boolean} [options.getAllChunks=false] - If true, fetch and combine data from all chunks (if applicable). * * @returns A promise resolving to the lap chart data, potentially combined from chunks, or throws an error if fetching fails. */ getResultsLapChartData: (params: GetResultsLapChartDataParams, options?: { getAllChunks?: boolean; }) => Promise<{ success: boolean; bestLapTime: number; bestLapNum: number; bestNlapsNum: number; bestNlapsTime: number; bestQualLapAt: string | null; bestQualLapNum: number; bestQualLapTime: number; sessionInfo: { startTime: string; track: { configName: string; trackId: number; trackName: string; }; eventType: number; privateSessionId: number; sessionId: number; subsessionId: number; seriesName: string; simsessionType: number; simsessionNumber: number; simsessionName: string; eventTypeName: string; numLapsForQualAverage: number; numLapsForSoloAverage: number; seasonName: string; seasonShortName: string; seriesShortName: string; }; chunkInfo: { chunkSize: number; numChunks: number; rows: number; baseDownloadUrl: string; chunkFileNames: string[]; }; lapChartData?: { interval: number | null; name: string; displayName: string; custId: number; helmet: { pattern: number; color1: string; color2: string; color3: string; faceType: number; helmetType: number; }; carNumber: string; licenseLevel: number; groupId: number; flags: number; ai: boolean; lapNumber: number; incident: boolean; sessionTime: number; sessionStartTime: string | null; lapTime: number; teamFastestLap: boolean; personalBestLap: boolean; lapEvents: string[]; lapPosition: number; intervalUnits: string | null; fastestLap: boolean; }[] | undefined; }>; /** * Get lap data for a driver or team in a specific subsession and simsession. * * @param {GetResultsLapDataParams} params - Parameters for the request. * @param {number} params.subsessionId - The ID of the subsession. * @param {number} params.simsessionNumber - The simsession number (0 for main event, -1 for preceding, etc.). * @param {number} [params.customerId] - Required for single-driver events. Optional for team events (returns all team laps if omitted). * @param {number} [params.teamId] - Required for team events. * * @param {GetResultsLapDataOptions} [options] - Options for fetching data. * @param {boolean} [options.getAllChunks=false] - If true, fetch and combine data from all chunks (if applicable). * * @returns A promise resolving to the lap data, potentially combined from chunks, or throws an error if fetching fails. */ getResultsLapData: (params: GetResultsLapDataParams, options?: GetResultsLapDataOptions) => Promise<GetResultsLapDataResponse | GetResultsLapDataWithChunksResponse>; /** * Search for hosted and league session results. * * Note: Maximum time frame is 90 days. Results may be split into chunks. * Requires one time range (`start_range_begin` or `finish_range_begin`). * Requires one identifier (`custId`, `teamId`, `hostCustId`, `sessionName`). * * @param {SearchHostedParams} [params] - Search parameters. * @param {string} [params.startRangeBegin] - Session start time range begin (ISO-8601 UTC). * @param {string} [params.startRangeEnd] - Session start time range end (ISO-8601 UTC, exclusive). * @param {string} [params.finishRangeBegin] - Session finish time range begin (ISO-8601 UTC). * @param {string} [params.finishRangeEnd] - Session finish time range end (ISO-8601 UTC, exclusive). * @param {number} [params.custId] - Participant's customer ID (ignored if `teamId` provided). * @param {number} [params.teamId] - Team ID (takes priority over `custId`). * @param {number} [params.hostCustId] - Host's customer ID. * @param {string} [params.sessionName] - Partial or full session name. * @param {number} [params.leagueId] - Filter by league ID. * @param {number} [params.leagueSeasonId] - Filter by league season ID. * @param {number} [params.carId] - Filter by car ID used in the session. * @param {number} [params.trackId] - Filter by track ID used in the session. * @param {number[]} [params.categoryIds] - Filter by track category IDs (defaults to all). * * @returns A promise resolving to the search results (possibly chunked), or undefined on error. */ searchHosted: (params?: SearchHostedParams) => Promise<SearchHostedResponse | undefined>; /** * Search for official series results. * * Note: Maximum time frame is 90 days. Results may be split into chunks. * Requires at least one time filter (`season_year`/`season_quarter`, `start_range_begin`, or `finish_range_begin`). * * @param {SearchSeriesParams} [params] - Search parameters. * @param {number} [params.seasonYear] - Season year (requires `seasonQuarter`). * @param {number} [params.seasonQuarter] - Season quarter (requires `seasonYear`). * @param {string} [params.startRangeBegin] - Session start time range begin (ISO-8601 UTC). * @param {string} [params.startRangeEnd] - Session start time range end (ISO-8601 UTC, exclusive). * @param {string} [params.finishRangeBegin] - Session finish time range begin (ISO-8601 UTC). * @param {string} [params.finishRangeEnd] - Session finish time range end (ISO-8601 UTC, exclusive). * @param {number} [params.customerId] - Participant's customer ID (ignored if `teamId` provided). * @param {number} [params.teamId] - Team ID (takes priority over `customerId`). * @param {number} [params.seriesId] - Filter by series ID. * @param {number} [params.raceWeekNum] - Filter by race week number (0-based). * @param {boolean} [params.officialOnly=false] - Include only official sessions earning points. * @param {number[]} [params.eventTypes] - Filter by event type IDs (defaults to all). * @param {number[]} [params.categoryIds] - Filter by license category IDs (defaults to all). * * @returns A promise resolving to the search results (potentially combined from chunks), or the raw chunk info response if chunk fetching is not implemented/fails. */ searchSeries: (params?: SearchSeriesParams) => Promise<unknown[] | { data: { success: boolean; chunk_info: { base_download_url: string; chunk_file_names: string[]; }; }; } | undefined>; /** * Get results for a specific season, optionally filtered by event type and race week. * * @param {GetSeasonResultsParams} params - Parameters for the request. * @param {number} params.seasonId - The ID of the season. * @param {number} [params.eventType] - Filter by event type ID (2=Practice, 3=Qualify, 4=Time Trial, 5=Race). * @param {number} [params.raceWeekNumber] - Filter by race week number (0-based). * * @returns A promise resolving to the season results data, or undefined on error. */ getSeasonResults: (params: GetSeasonResultsParams) => Promise<{ success: boolean; eventType: number; seasonId: number; raceWeekNum: number; resultsList: { startTime: string; track: { configName: string; trackId: number; trackName: string; }; eventType: number; driverChanges: boolean; farm: { farmId: number; displayName: string; imagePath: string; displayed: boolean; }; sessionId: number; subsessionId: number; numDrivers: number; numCautions: number; numCautionLaps: number; numLeadChanges: number; eventStrengthOfField: number; carClasses: { name: string; carClassId: number; shortName: string; strengthOfField: number; numEntries: number; }[]; eventBestLapTime: number; eventTypeName: string; officialSession: boolean; raceWeekNum: number; winnerHelmet: { pattern: number; color1: string; color2: string; color3: string; faceType: number; helmetType: number; }; winnerId: number; winnerLicenseLevel: number; winnerName: string; }[]; } | undefined>; }