import type { Shape } from "../fields.types.ts"; import { type ShortTrackFigures } from "../leagues/skating.ts"; import { type MBox, type Parts } from "./parts.ts"; import type { ShortTrackRace } from "./types.ts"; /** The oval of the standard track. */ export interface ShortOval { straight: number; radius: number; /** The radius of the blocks, 0.5 m inside the line of the track. */ blocks: number; lap: number; /** The rink: its length and width. */ length: number; width: number; } /** The oval for a rink. */ export declare function shortOval(length?: number, width?: number, fig?: ShortTrackFigures): ShortOval; /** The pose of a skater `v` metres along a lap that begins at the left end of the finishing straight (the bottom one), `out` metres outside the line of the track: the skaters go counter-clockwise. */ export declare function shortPose(o: ShortOval, v: number, out?: number): { x: number; y: number; heading: number; }; /** Where each race starts: the half-lap races (500 m and 1500 m) on the starting lines of the straight opposite the finishing line, the others on the finishing line (the diagram's laps: 4 1/2, 9, 13 1/2, 18, 27 and 45). */ export declare const startsOnOppositeStraight: (race: ShortTrackRace) => boolean; /** The x of the starting line of each of the tracks, from the one at the left: a track moved `shift` along the straight starts 2 x shift on from the standard track's line (the diagram). */ export declare function trackLines(tracks: 5 | 7, fig?: ShortTrackFigures): number[]; /** The starting positions of the 500 m and the 1000 m: five dots every 1.3 m, from 50 cm out from the inner side of the track (Rule 280.2c), on the line at `x` and the side `side` (-1 the top, 1 the bottom). */ export declare function startingPositions(o: ShortOval, x: number, side: 1 | -1, fig?: ShortTrackFigures): { x: number; y: number; }[]; export interface ShortOptions { fig: ShortTrackFigures; tracks: 5 | 7; blocks: boolean; padding: boolean; races: readonly ShortTrackRace[]; /** The corner radius of the rink: ours. */ corner: number; } /** The parts of the short track. */ export declare function shortParts(o: ShortOval, opt: ShortOptions): { parts: Parts; box: MBox; }; export type { Shape };