const lines = ['red', 'blue', 'green', 'orange', 'violet'] as const
type Lines = typeof lines[number]

const stations: Record<Lines, Set<string>> = {
    red: new Set([
        'Девяткино',
        'Гражданский проспект',
        'Академическая',
        'Политехническая',
        'Площадь Мужества',
        'Лесная',
        'Выборгская',
        'Площадь Ленина',
        'Чернышевская',
        'Площадь Восстания',
        'Владимирская',
        'Пушкинская',
        'Технологический институт',
        'Балтийская',
        'Нарвская',
        'Кировский завод',
        'Автово',
        'Ленинский проспект',
        'Проспект Ветеранов'
    ]),
    blue: new Set([
        'Парнас',
        'Проспект Просвещения',
        'Озерки',
        'Удельная',
        'Пионерская',
        'Чёрная речка',
        'Петроградская',
        'Горьковская',
        'Невский проспект',
        'Сенная площадь',
        'Технологический институт',
        'Фрунзенская',
        'Московские ворота',
        'Электросила',
        'Парк Победы',
        'Московская',
        'Звёздная',
        'Купчино'
    ]),
    green: new Set([
        'Приморская',
        'Беговая',
        'Василеостровская',
        'Гостиный двор',
        'Маяковская',
        'Площадь Александра Невского',
        'Елизаровская',
        'Ломоносовская',
        'Пролетарская',
        'Обухово',
        'Рыбацкое'
    ]),
    orange: new Set([
        'Спасская',
        'Достоевская',
        'Лиговский проспект',
        'Площадь Александра Невского',
        'Новочеркасская',
        'Ладожская',
        'Проспект Большевиков',
        'Улица Дыбенко'
    ]),
    violet: new Set([
        'Комендантский проспект',
        'Старая Деревня',
        'Крестовский остров',
        'Чкаловская',
        'Спортивная',
        'Адмиралтейская',
        'Садовая',
        'Звенигородская',
        'Обводный канал',
        'Волковская',
        'Бухарестская',
        'Международная',
        'Проспект славы',
        'Дунайскай',
        'Шушары'
    ]),
}

const colors: Record<Lines, string> = {
    red: '#D6083B',
    blue: '#0078C9',
    green: '#009A49',
    orange: '#EA7125',
    violet: '#702785',
}

const lineNames: Record<Lines, string> = {
    red: 'Красная',
    blue: 'Синяя',
    green: 'Зелёная',
    orange: 'Оранжевая',
    violet: 'Фиолетовая',
}

const lineByName = (name: string) =>
    lines.find(line => stations[line].has(name))


export type { Lines }
export { lines, stations, colors, lineNames, lineByName }
