import type { Shape } from "../fields.types.ts"; import { type LongTrackFigures } from "../leagues/skating.ts"; import { LONG_TRACK_RACES } from "./events.ts"; import { addParts, type MBox, type Parts } from "./parts.ts"; import { laneRadius, type Lane, type LongOval } from "./track.ts"; import type { LongTrackRace, SkatingInfield } from "./types.ts"; /** Where a skater starts: the lane (or `both` for a line across both lanes) and the point of the start. */ export interface StartPlacement { lane: Lane | "both"; /** The coordinate along the skater's own way, from the beginning of the finishing straight of the lap the start is in. */ v0: number; x: number; y: number; heading: number; } /** What a race marks: the lines where it starts, the finishing line it ends at, and how its first straight is skated. */ export interface RaceMarks { race: LongTrackRace; /** The finishing line: the 400 m mark at the end of the finishing straight or the 1000 m mark in the middle of it. */ finish: "400m" | "1000m"; /** True when the first straight keeps its lane (the 1000 m and the 1500 m, Rule 254.5b). */ noChange: boolean; /** The starting lines: one for each lane, or one across both. */ starts: StartPlacement[]; } /** The marks of a race on the oval. */ export declare function markRace(o: LongOval, race: LongTrackRace): RaceMarks; /** What the long track adds: everything from the ice to the lines. */ export interface LongOptions { fig: LongTrackFigures; warmUp: boolean; infield: SkatingInfield; blocks: boolean; coaches: boolean; padding: boolean; races: readonly LongTrackRace[]; } export declare const LONG_DEFAULTS: { warmUp: boolean; infield: SkatingInfield; blocks: boolean; coaches: boolean; padding: boolean; }; /** The ice's outer radius: the outer edge of the outer lane and the 3 m the Rules keep clear (Rule 228.2). */ export declare const iceRadius: (o: LongOval, fig?: LongTrackFigures) => number; /** The parts of the long track. */ export declare function longParts(o: LongOval, opt: LongOptions): { parts: Parts; marks: RaceMarks[]; box: MBox; }; export { addParts, laneRadius, LONG_TRACK_RACES }; export type { Shape };