"""
Модуль оголошення типів даних.
Містить перелік типів змінних та структур даних, які використовуються у коді солвера.
"""

from typing import Dict, List, Union, Set, Tuple

# Типи даних
GraphDict = Dict[int, List[int]]
"""Граф обмежень (які операції мають бути виконані перед початком запитуваної)"""
TimeUnit = Union[int, float]
"""Одиниці часу"""
OperationsCosts = List[TimeUnit]
"""Список вартості (тривалості) операцій"""
ConstraintsGroup = List[str]
"""Формат переліку обмежень"""
EarliestLatestData = Dict[int, int]
"""Найменші та найбільші індекси робочих місць до яких теоретично може бути закріплена операція"""
DepPairsSet = Set[Tuple[int, int]]
"""Пари залежностей послідовності виконання операцій (з графу обмежень послідовності)"""
PrecedenceDict = Dict[int, Set[int]]
"""Словник множин задач (всіх), які мають бути виконані перед запитуваною"""
