import { z } from 'zod';
import { colorNameSchema } from '../../color';
import { checkpointTypeSchema } from '../../checkpoint';
import { FLAG_MEDIA_NAME, FLAG_STATUS } from './Flag.const';

export const flagStatusSchema = z.enum(FLAG_STATUS);

export const flagMediaNameSchema = z.enum(FLAG_MEDIA_NAME);

export const flagModuleStatusSchema = z.object({
  flagStatus: flagStatusSchema,
  lastCheckpointAddress: z.number(),
  lastCheckpointType: checkpointTypeSchema,
});

export const flagConfigurationOptionsSchema = z.object({
  kartId: z.number(),
  kartNumber: z.number(),
  kartColor: colorNameSchema, // ensure colorNameSchema is imported
  screenBrightness: z.number().min(0).max(100),
  animationTime: z.number().min(1).max(25),
});

export const flagShowMediaOptionsSchema = z.object({
  screens: z.object({
    left: z.boolean(),
    right: z.boolean(),
    front: z.boolean(),
    back: z.boolean(),
  }),
  mediaSourceName: flagMediaNameSchema,
});
