import type { GameTrack } from '../gameTrack';
import type { PowerUp } from '../powerUp';
import type { GameStatus } from './GameStatus';
import type { GameType } from './GameType';
import type { KartRankingItem } from './KartRankingItem';
export declare enum GameFinishedReason {
    /** The time set for the game was over */
    TIME_IS_OVER = "TIME_IS_OVER",
    /** There is a winner on the game */
    GAME_KARTS_FINISHED = "GAME_KARTS_FINISHED",
    /** The game was stopped by an emergency */
    EMERGENCY = "EMERGENCY",
    /** The Controller of the game finished the game */
    BY_CONTROLLER = "BY_CONTROLLER"
}
export interface GameKartState {
    coins: number;
}
export interface Game {
    id: number;
    status: GameStatus;
    kartsGuids: string[];
    powerUpsIds: PowerUp['id'][];
    gameTrackId: GameTrack['id'];
    type: GameType;
    coins: number;
    /** Time set in seconds */
    time: number;
    /** Speed % will be the default for the game */
    speedConfig: number;
    createdAt: Date;
    startedAt?: Date;
    finishedAt?: Date;
    finishedReason?: GameFinishedReason;
    /** The key is the kart guid */
    kartsState: Record<string, GameKartState>;
    gameRanking: KartRankingItem[];
}
