export type Difficulty = 'Low' | 'Medium' | 'High'; export interface ChallengeFile { name: string; url: string; } export interface Challenge { id: string; title: string; category: string; difficulty: Difficulty; description: string; initialPoints: number; flag: string; files: ChallengeFile[]; solves: string[]; // Team IDs port?: number; connectionType?: 'nc' | 'http'; } export interface Team { id: string; name: string; password?: string; isAdmin?: boolean | number; isDisabled?: boolean | number; } export interface Solve { teamId: string; challengeId: string; timestamp: number; pointsEarned: number; // Stored at time of solve, but usually recalculated dynamically } export interface BlogPost { id: string; title: string; content: string; timestamp: number; } export interface CTFState { isStarted: boolean; startTime: number | null; teams: Team[]; challenges: Challenge[]; solves: Solve[]; blogs: BlogPost[]; config: Record; }