import { z } from 'zod';
import {
  countDownNextViewBattleSchema,
  countDownNextViewRaceSchema,
  screenBattleViewConfigSchema,
  screenCountdownParamsSchema,
  screenFinishViewInputSchema,
  screenGameTimeLeftSchema,
  screenHomeViewInputSchema,
  screenModuleStatusSchema,
  screenRaceViewConfigSchema,
  screenStatusSchema,
  screenUpdateGameViewInputSchema,
  screenViewBaseConfigSchema,
  screenViewSchema,
  updateBattleViewInputSchema,
  updateRaceViewInputSchema,
} from './Screen.schema';

import { screenDebugViewInputSchema } from './ScreenDebug.schema';

export type ScreenStatus = z.infer<typeof screenStatusSchema>;
export type ScreenView = z.infer<typeof screenViewSchema>;
export type ScreenModuleStatus = z.infer<typeof screenModuleStatusSchema>;

export type ScreenViewBaseConfig = z.infer<typeof screenViewBaseConfigSchema>;
export type ScreenRaceViewConfig = z.infer<typeof screenRaceViewConfigSchema>;
export type ScreenBattleViewConfig = z.infer<typeof screenBattleViewConfigSchema>;

export type ScreenGameTimeLeft = z.infer<typeof screenGameTimeLeftSchema>;
export type CountDownNextViewRace = z.infer<typeof countDownNextViewRaceSchema>;
export type CountDownNextViewBattle = z.infer<typeof countDownNextViewBattleSchema>;
export type ScreenCountdownParams = z.infer<typeof screenCountdownParamsSchema>;

export type UpdateRaceViewInput = z.infer<typeof updateRaceViewInputSchema>;
export type UpdateBattleViewInput = z.infer<typeof updateBattleViewInputSchema>;
export type ScreenUpdateGameViewInput = z.infer<typeof screenUpdateGameViewInputSchema>;
export type ScreenFinishViewInput = z.infer<typeof screenFinishViewInputSchema>;
export type ScreenDebugViewInput = z.infer<typeof screenDebugViewInputSchema>;
export type ScreenHomeViewInput = z.infer<typeof screenHomeViewInputSchema>;
