age-grade-tables
Version:
Age grading tables for races like Ironman in compact array format
40 lines • 1.71 kB
TypeScript
import { AgeGradeCompactEntry, AgeGradeObjectEntry } from './types';
/**
* Get age grade factor for a specific age and gender
* @param table - Age grade table in array format
* @param gender - Athlete gender ('M' or 'F')
* @param age - Athlete age
* @returns Age grade factor or null if not found
*/
export declare function getFactorByAgeAndGender(table: AgeGradeCompactEntry[] | AgeGradeObjectEntry[], gender: string, age: number): number | null;
/**
* Creates a fast lookup map for bulk age grade factor retrieval
* @param table - Age grade table in array or object format
* @returns Map with key format: "gender_age" -> factor
*/
export declare function createAgeGradeLookup(table: AgeGradeCompactEntry[] | AgeGradeObjectEntry[]): Map<string, number>;
/**
* Get age grade factor for a single athlete using a pre-built lookup map
* @param lookup - Pre-built lookup map from createAgeGradeLookup
* @param gender - Athlete gender ('M' or 'F')
* @param age - Athlete age
* @returns Age grade factor or null if not found
*/
export declare function getFactorFromLookup(lookup: Map<string, number>, gender: string, age: number): number | null;
/**
* Process multiple athletes efficiently using a pre-built lookup map
* @param lookup - Pre-built lookup map from createAgeGradeLookup
* @param athletes - Array of athletes with age and gender
* @returns Array of athletes with their age grade factors
*/
export declare function processAthletesBulk(lookup: Map<string, number>, athletes: Array<{
age: number;
gender: string;
[key: string]: any;
}>): Array<{
age: number;
gender: string;
factor: number | null;
[key: string]: any;
}>;
//# sourceMappingURL=helpers.d.ts.map