import { AxiosInstance, CreateAxiosDefaults } from 'axios'; interface TjkResponse { data: TData; checksum: string; updateTime: number; } interface TjkSuccessResponse { success: true; data?: any; stale?: boolean; checksum: string; updatetime: number; } interface TjkFailResponse { success: false; errorCode: number; message: string; } type TjkServiceResponse = TjkSuccessResponse | TjkFailResponse; interface Hippodrome { key: string; name: string; location: string; abroad: boolean; } interface Person { id?: string; name: string; } interface Jockey extends Person { apprentice?: boolean; } interface HorseAgf { rank: number; rate: number; } interface HorseOrigin { id?: string; name: string; } interface BestGrade { timing: string; description: string; anotherHippodrome: boolean; } interface RaceWeather { status?: string; moisture: number; temperature: number; } type TjkRaceWeather = RaceWeather; interface RaceRunway { grass: RaceRunwayVariant; sand: RaceRunwayVariant; } interface RaceRunwayVariant { status?: string; weight: number; } declare namespace TjkAgf { interface Race { key: string; hippodrome: string; location: string; date: string; bets: Bet[]; } interface Bet { name: string; official: boolean; lastUpdateTime: string; runs: Run[]; } interface Run { no: number; horses: Horse[]; } interface Horse { no: number; name: string; jockeyName: string; rank: number; rate: number; outOfRace: boolean | undefined; stablemate: string | undefined; stablemateRate: number | undefined; } } declare namespace TjkProgram { interface Race { key: string; date: string; location: string; hippodrome: string; openingTime: string; closingTime: string; abroad: boolean; isNight: boolean; runway: RaceRunway; weather: RaceWeather; runs: Run[]; } interface Run { no: number; startTime: string; runway: RunRunway; shortedName: string | undefined; groupName: string; groupShortName: string | undefined; condition: string; runName: string | undefined; genderName: string | undefined; specialName: string | undefined; awards: number[]; bonuses: number[]; currencyUnit: string; info: string; betInfo: string; horses: Horse[]; } interface Horse { key: string; no: number; name: string; age: string; agf1: HorseAgf | undefined; agf2: HorseAgf | undefined; foal: string | undefined; position: number; odds: number | undefined; daysOff: string | undefined; weight: number | undefined; extraWeight: number | undefined; missingWeight: number | undefined; last6: string | undefined; last20: string | undefined; equipments: string | undefined; handicap: number | undefined; bestGrade: BestGrade | undefined; stablemate: string | undefined; outOfRace: boolean | undefined; dateOfBirth: string | undefined; jockey: Jockey; owner: Person | undefined; trainer: Person | undefined; grower: Person | undefined; father: HorseOrigin; mother: HorseOrigin; motherOfFather: HorseOrigin | undefined; motherOfMother: HorseOrigin | undefined; fatherOfFather: HorseOrigin | undefined; fatherOfMother: HorseOrigin | undefined; uniformImageUrl: string | undefined; } interface RunRunway { name: string; distance: number; } } declare namespace TjkResults { interface Race { key: string; date: string; location: string; hippodrome: string; openingTime: string; closingTime: string; abroad: boolean; isNight: boolean; runway: RaceRunway; weather: RaceWeather; runs: Run[]; } interface Run { no: number; startTime: string; runway: RunRunway; shortedName: string | undefined; groupName: string; groupShortName: string | undefined; condition: string; timing800: string | undefined; runName: string | undefined; genderName: string | undefined; specialName: string | undefined; awards: number[]; bonuses: number[]; currencyUnit: string; info: string; bets: RunBet[]; videoUrl: string | undefined; photoFinishUrl: string | undefined; horses: Horse[]; } interface Horse { key: string; no: number; name: string; age: string; agf1: HorseAgf | undefined; agf2: HorseAgf | undefined; foal: string | undefined; position: number; resultRank: number | undefined; timing: string | undefined; odds: number | undefined; daysOff: string | undefined; lateStart: string | undefined; difference: string | undefined; weight: number | undefined; extraWeight: number | undefined; missingWeight: number | undefined; last6: string | undefined; last20: string | undefined; equipments: string | undefined; handicap: number | undefined; bestGrade: BestGrade | undefined; stablemate: string | undefined; outOfRace: boolean; jockey: Jockey; owner: Person | undefined; trainer: Person | undefined; grower: Person | undefined; father: HorseOrigin; mother: HorseOrigin; motherOfFather: HorseOrigin | undefined; motherOfMother: HorseOrigin | undefined; fatherOfFather: HorseOrigin | undefined; fatherOfMother: HorseOrigin | undefined; uniformImageUrl: string | undefined; } interface RunBet { name: string; result: string | undefined; amount: string | undefined; description: string | undefined; } interface RunRunway { name: string; distance: number; } } declare namespace TjkBetProgram { interface Race { id: string; cardId: string; key: string; date: string; location: string; hippodrome: string; openingTime: string; closingTime: string; order: number | undefined; abroad: boolean; isNight: boolean; runway: RaceRunway; weather: RaceWeather; runs: Run[]; bets: RaceBet[]; fixedBets: Record>> | undefined; } interface Run { id: string | undefined; no: number; startTime: string; runway: RunRunway; shortedName: string | undefined; groupName: string; groupShortName: string | undefined; condition: string; gender: string | undefined; runName: string | undefined; specialName: string | undefined; awards: number[]; bonuses: number[]; currencyUnit: string; info: string; horses: Horse[]; } interface Horse { id: string | undefined; key: string; no: number; name: string; age: string; agf1: HorseAgf | undefined; agf2: HorseAgf | undefined; foal: string | undefined; position: number; odds: number | undefined; daysOff: string | undefined; weight: number | undefined; extraWeight: number | undefined; missingWeight: number | undefined; last6: string | undefined; last20: string | undefined; equipments: string | undefined; handicap: number | undefined; bestGrade: BestGrade | undefined; stablemate: string | undefined; outOfRace: boolean | undefined; dateOfBirth: string | undefined; jockey: Jockey; owner: Person | undefined; trainer: Person | undefined; grower: Person | undefined; father: HorseOrigin; mother: HorseOrigin; motherOfFather: HorseOrigin | undefined; motherOfMother: HorseOrigin | undefined; fatherOfFather: HorseOrigin | undefined; fatherOfMother: HorseOrigin | undefined; uniformImageUrl: string | undefined; gallopVideoUrl: string | undefined; } interface RaceBet { id: string; name: string; unitPrice: number; runs: number[]; } interface RunRunway { code: string; name: string; distance: number; } interface RaceFixedBet { id: string; no: number; status: string; odds: string; } interface RaceWeather extends TjkRaceWeather { code: string; } } declare namespace TjkProbables { interface Race { key: string; hippodrome: string; location: string; date: string | undefined; runs: Run[]; } interface Run { no: number; startTime: string; status: string; lastUpdateTime: string | undefined; bets: Bet[]; } interface Bet { name: string; status: string; probables: Probable[]; } interface Probable { horseName: string | undefined; odds: string | undefined; runners: number[]; stablemate: string | undefined; agf: boolean | undefined; outOfRace: boolean | undefined; } } declare namespace TjkHorseDetail { interface Horse { key: string; name: string; age: string; gender: string; origin: string; father: HorseOrigin | undefined; mother: HorseOrigin | undefined; isDied: boolean; dateOfBirth: string; dateOfDeath: string | undefined; handicap: number | undefined; totalEarnings: number; growerTotalEarnings: number; sponsorEarnings: number; abroadEarnings: number; ownerName: string; growerName: string | undefined; trainerName: string; trainer: TjkHorseDetail.Person; owners: TjkHorseDetail.Person[]; growers: TjkHorseDetail.Person[]; runs: TjkHorseDetail.Run[]; } interface Run { no: number; date: string; location: string; runway: Runway; groupName: string; groupShortName: string; condition: string; weight: number; result: number | undefined; odds: number | undefined; handicap: number | undefined; grade: string | undefined; last20: string | undefined; earnings: number; equipments: string | undefined; outOfRace: boolean | undefined; jockey: Person | undefined; trainer: Person | undefined; owner: Person | undefined; videoUrl: string | undefined; photoFinishUrl: string | undefined; } interface Runway { id: string; name: string; status: string | undefined; distance: number; } interface Person { key: string | undefined; name: string; rate?: string | undefined; } interface HorseOrigin { key: string | undefined; name: string; dateOfBirth: string | undefined; father: HorseOrigin | undefined; mother: HorseOrigin | undefined; } } declare namespace TjkJockeyChanges { interface Race { key: string; hippodrome: string; location: string; date: string; changes: Change[]; } interface Change { runNumber: number; horseNumber: number; newJockeyName: string; oldJockeyName: string; } } declare namespace TjkDetailedProgram { interface Race { id: string; key: string; hippodrome: string; location: string; date: string; abroad: boolean; openingTime: string; closingTime: string; runway: RaceRunway; weather: RaceWeather; runs: Run[]; bettingUnitPrices: Record | undefined; } interface Run { id: string | undefined; no: number; startTime: string; info: string; runway: RunRunway; timing800: string | undefined; currencyUnit: string; genderName: string | undefined; groupName: string; groupShortName: string | undefined; shortedName: string | undefined; condition: string; runName: string | undefined; specialName: string | undefined; bestGrade: BestGrade | undefined; bets: RunBet[]; betResults: RunBetResult[]; awards: number[]; bonuses: number[]; videoUrl: string | undefined; photoFinishUrl: string | undefined; horses: Horse[]; } interface Horse { id: string | undefined; key: string; no: number; name: string; age: string; agf1: HorseAgf | undefined; agf2: HorseAgf | undefined; foal: string | undefined; position: number; resultRank: number | undefined; timing: string | undefined; odds: number | undefined; weight: number | undefined; extraWeight: number | undefined; last6: string | undefined; last20: string | undefined; equipments: string | undefined; handicap: number | undefined; daysOff: string | undefined; salePrice: string | undefined; lateStart: string | undefined; difference: string | undefined; bestGrade: BestGrade | undefined; stablemate: string | undefined; outOfRace: boolean | undefined; dateOfBirth: string | undefined; jockey: Jockey; owner: Person | undefined; trainer: Person | undefined; grower: Person | undefined; father: HorseOrigin; mother: HorseOrigin; motherOfFather: HorseOrigin | undefined; motherOfMother: HorseOrigin | undefined; fatherOfFather: HorseOrigin | undefined; fatherOfMother: HorseOrigin | undefined; gallopVideoUrl: string | undefined; } interface RunBet { code: string; name: string; order: number; distributionAmount: number; } interface RunRunway { code: string; name: string; distance: number; } interface RunBetResult { code: string; name: string; order: number; amount: number; result: string | undefined; description: string | undefined; rolloverAmount: number; } interface RaceWeather extends TjkRaceWeather { code: string; description: string | undefined; } } declare abstract class Transformer { abstract transform(value: unknown): TReturn; protected isId(value: unknown): value is string; protected transformRunway(value: any): RaceRunway; protected transformWeather(value: any): RaceWeather; protected transformHorseAgf(horse: any, index: 1 | 2, rateKeyPrefix?: string, rankKeyPrefix?: string): HorseAgf | undefined; protected transformBestGrade(value: any): BestGrade | undefined; } declare class AgfTransformer extends Transformer { static create(): AgfTransformer; transform(races: unknown): TjkAgf.Race[]; protected transformRuns(runs: any[]): TjkAgf.Run[]; protected transformBets(bets: any[]): TjkAgf.Bet[]; protected transformHorses(horses: any[]): TjkAgf.Horse[]; } declare class ProgramTransformer extends Transformer { static create(): ProgramTransformer; transform(races: unknown): TjkProgram.Race[]; protected transformRuns(runs: any[]): TjkProgram.Run[]; protected transformHorses(horses: any[]): TjkProgram.Horse[]; } declare class ResultsTransformer extends Transformer { static create(): ResultsTransformer; transform(races: unknown): TjkResults.Race[]; protected transformRuns(runs: any[]): TjkResults.Run[]; protected transformBets(bets: any[]): TjkResults.RunBet[]; protected transformHorses(horses: any[]): TjkResults.Horse[]; } declare class BetProgramTransformer extends Transformer { static create(): BetProgramTransformer; transform(races: unknown): TjkBetProgram.Race[]; protected transformRuns(runs: any[], raceDate: Date): TjkBetProgram.Run[]; protected transformBets(bets: any[]): TjkBetProgram.RaceBet[]; protected transformHorses(horses: any[], runId: string | undefined, raceDate: Date): TjkBetProgram.Horse[]; protected transformWeather(value: any): TjkBetProgram.RaceWeather; } declare class ProbablesTransformer extends Transformer { static create(): ProbablesTransformer; transform(races: unknown): TjkProbables.Race[]; protected transformRuns(runs: any[]): TjkProbables.Run[]; protected transformBets(bets: any[]): TjkProbables.Bet[]; protected transformBetProbables(probables: any[]): TjkProbables.Probable[]; protected transformProbableRunners(probable: any): number[]; } declare class HorseDetailTransformer extends Transformer { static create(): HorseDetailTransformer; transform(horse: any): TjkHorseDetail.Horse; protected transformRuns(runs: any[]): TjkHorseDetail.Run[]; protected transformRunRunway(run: any): TjkHorseDetail.Runway; protected transformRunPerson(person: any): TjkHorseDetail.Person | undefined; protected transformOrigin(value: any): TjkHorseDetail.HorseOrigin | undefined; protected transformPersons(persons: any[], nameKey: string): TjkHorseDetail.Person[]; } declare class JockeyChangesTransformer extends Transformer { static create(): JockeyChangesTransformer; transform(races: unknown): TjkJockeyChanges.Race[]; protected transformChanges(changes: any[]): TjkJockeyChanges.Change[]; } declare class DetailedProgramTransformer extends Transformer { static create(): DetailedProgramTransformer; transform(hippodromes: unknown): TjkDetailedProgram.Race[]; protected transformRuns(runs: any[], raceDate: Date): TjkDetailedProgram.Run[]; protected transformHorses(horses: any[], runId: string | undefined, raceDate: Date): TjkDetailedProgram.Horse[]; protected transformBets(bets: any[]): TjkDetailedProgram.RunBet[]; protected transformBetResults(betResults: any[]): TjkDetailedProgram.RunBetResult[]; protected transformAwardsOrBonuses(run: any, keyPrefix: string): number[]; protected transformRunwayVariant(race: any, prefix: string): RaceRunwayVariant; protected transformRunway(value: any): RaceRunway; protected transformWeather(value: any): TjkDetailedProgram.RaceWeather; } declare enum TjkServices { AGF = "agf", PROGRAM = "program", RESULTS = "sonuclar", BET_PROGRAM = "bahis-programi", PROBABLES = "muhtemeller", PROBABLES_FULL = "muhtemeller-tjk", DETAILED_PROGRAM = "program-cache-tjk", HORSE_DETAIL = "at-detay", HIPPODROMES = "hipodromlar", JOCKEY_CHANGES = "jokey-degisiklikleri" } interface TjkServiceParams { date?: string | Date; hippodrome?: string; runNumber?: number; checksum?: string; } interface TjkJockeyChangesServiceParams { date?: string | Date; hippodrome?: string; checksum?: string; } interface TjkDetailedProgramServiceParams { date?: string | Date; checksum?: string; } interface TjkBetProgramServiceParams { checksum?: string; } interface TjkProbablesServiceParams extends TjkServiceParams { full?: boolean; } type TjkHorseDetailServiceParams = ({ id: string; } | { key: string; }) & { checksum?: string; }; interface TjkHippodromesServiceParams { checksum?: string; } interface TjkApiConstructorOptions { authKey: string; baseURL?: string; axiosDefaults?: CreateAxiosDefaults; agfTransformer?: Transformer; programTransformer?: Transformer; resultsTransformer?: Transformer; betProgramTransformer?: Transformer; probablesTransformer?: Transformer; horseDetailTransformer?: Transformer; jockeyChangesTransformer?: Transformer; detailedProgramTransformer?: Transformer; } declare class TjkApi { readonly client: AxiosInstance; private readonly agfTransformer; private readonly programTransformer; private readonly resultsTransformer; private readonly betProgramTransformer; private readonly probablesTransformer; private readonly horseDetailTransformer; private readonly jockeyChangesTransformer; private readonly detailedProgramTransformer; constructor(options: TjkApiConstructorOptions); getProgram(params?: TjkServiceParams): Promise>; getResults(params?: TjkServiceParams): Promise>; getBetProgram(params?: TjkBetProgramServiceParams): Promise>; getAgf(params?: TjkServiceParams): Promise>; getProbables(params?: TjkProbablesServiceParams): Promise>; getDetailedProgram(params?: TjkDetailedProgramServiceParams): Promise>; getHippodromes(params?: TjkHippodromesServiceParams): Promise>; getHorseDetail(params: TjkHorseDetailServiceParams): Promise>; getJockeyChanges(params?: TjkJockeyChangesServiceParams): Promise>; private getServiceResponse; private getServiceParams; } declare abstract class TjkError extends Error { abstract get name(): string; } declare class TjkApiError extends TjkError { private readonly response; constructor(response: TjkFailResponse); get name(): string; get errorCode(): number; } declare class TjkTypeError extends TjkError { constructor(message: string); get name(): string; } declare const VIDEO_CDN = "https://video-cdn.tjk.org/videoftp"; declare const PHOTO_CDN = "https://foto-cdn.tjk.org/fotoftp"; declare const GALLOP_VIDEO_CDN = "https://video-cdn.tjk.org/videoftp/idmanpisti"; declare const LOCAL_HIPPODROMES: readonly string[]; interface FindActiveRunNumberOptions { runs: Array<{ no: number; startTime: string; }>; raceDate: string; raceClosingTime: string; jumpToLastRun?: boolean; strict?: boolean; } declare function findActiveRunNumber(options: FindActiveRunNumberOptions): number | null; export { AgfTransformer, type BestGrade, BetProgramTransformer, DetailedProgramTransformer, GALLOP_VIDEO_CDN, type Hippodrome, type HorseAgf, HorseDetailTransformer, type HorseOrigin, type Jockey, JockeyChangesTransformer, LOCAL_HIPPODROMES, PHOTO_CDN, type Person, ProbablesTransformer, ProgramTransformer, type RaceRunway, type RaceRunwayVariant, type RaceWeather, ResultsTransformer, TjkAgf, TjkApi, type TjkApiConstructorOptions, TjkApiError, TjkBetProgram, type TjkBetProgramServiceParams, TjkDetailedProgram, type TjkDetailedProgramServiceParams, TjkError, type TjkFailResponse, type TjkHippodromesServiceParams, TjkHorseDetail, type TjkHorseDetailServiceParams, TjkJockeyChanges, type TjkJockeyChangesServiceParams, TjkProbables, type TjkProbablesServiceParams, TjkProgram, type TjkRaceWeather, type TjkResponse, TjkResults, type TjkServiceParams, type TjkServiceResponse, TjkServices, type TjkSuccessResponse, TjkTypeError, Transformer, VIDEO_CDN, TjkApi as default, findActiveRunNumber };