interface uea {
    key: string;
    name: string;
}

interface teacherData {
    name: string;
    quality: number;
    takeAgain: number;
    difficulty: number;
    students: number;
}

type hour = `${number}${number}:${number}${number}`;

interface time {
    starts: hour | string;
    ends: hour | string;
}

interface ueaInfo {
    key: string;
    teacher: string | teacherData;
    group: string;
}

interface week {
    monday: time | null;
    tuesday: time | null;
    wednesday: time | null;
    thursday: time | null;
    friday: time | null;
}

type ueaSchedule = ueaInfo & week;

type ueaData = Omit<ueaSchedule, 'teacher'> & { teacher: teacherData };

type day = keyof week;

type perDay = { [K in day]: string | null };

type weekByDay = { [hour: string]: perDay; };

interface schedule {
    subjects_info: {
        key: string;
        teacher: string;
        subject: string;
    }[];
    hours: weekByDay;
}