import type { AthleteState, OwlcmsAthleteList } from './athlete';
import type { ClockState } from './clock';
import Athlete from './athlete';
import Clock from './clock';
export type BreakType = string;
export type CeremonyType = string;
export type Decision = 'bad' | 'good';
export type FopState = string;
export type LiftTypeKey = 'CLEAN_AND_JERK' | 'SNATCH';
export type Mode = 'BEFORE_INTRODUCTION' | 'FIRST_CJ' | 'FIRST_SNATCH' | 'INTRODUCTION' | 'LIFT_COUNTDOWN_CEREMONY' | 'LIFTING' | 'MARSHAL' | 'TECHNICAL' | 'WAIT';
export type OwlcmsLiftType = 'Clean_and_Jerk' | 'Snatch';
export interface PlatformState {
    athlete: AthleteState | null;
    athleteClock: ClockState;
    breakClock: ClockState;
    breakType: BreakType | null;
    centerReferee: Decision | null;
    ceremonyType: CeremonyType | null;
    downSignal: boolean;
    fopState: FopState | null;
    leftReferee: Decision | null;
    liftType: string | null;
    liftTypeKey: LiftTypeKey | null;
    mode: Mode | null;
    name: string;
    rightReferee: Decision | null;
    sessionDescription: string | null;
    sessionInfo: string | null;
    sessionName: string | null;
}
export interface Session {
    description: string;
    info: string;
    name: string;
}
export default class Platform {
    private static platforms;
    private athletes;
    private athleteClock;
    private breakClock;
    private breakType;
    private centerReferee;
    private ceremonyType;
    private currentAthlete;
    private currentSession;
    private downSignal;
    private fopState;
    private leftReferee;
    private liftingOrder;
    private liftType;
    private liftTypeKey;
    private mode;
    private name;
    private rightReferee;
    static getPlatform(name: string): Platform;
    static getPlatforms(): string[];
    constructor({ name, }: {
        name: string;
    });
    getAthleteClock(): Clock;
    getBreakClock(): Clock;
    getCurrentAthlete(): Athlete | null;
    getLiftingOrder(): Athlete[];
    getState(): PlatformState;
    resetDecisions(): void;
    setBreakType(breakType: BreakType | null): void;
    setCeremonyType(ceremonyType: CeremonyType | null): void;
    setFopState(fopState: FopState): void;
    setLiftType({ key, name, }: {
        key: OwlcmsLiftType;
        name: string | null;
    }): void;
    setMode(mode: Mode): void;
    setCurrentAthlete(startNumber: number): void;
    setDecisions({ centerReferee, leftReferee, rightReferee, }: {
        centerReferee: Decision | null;
        leftReferee: Decision | null;
        rightReferee: Decision | null;
    }): void;
    setDownSignal(state: boolean): void;
    setSession(session: {
        description: string;
        info: string;
        name: string;
    }): void;
    private updateAthlete;
    updateAthletes(athletes: OwlcmsAthleteList): void;
}
