"""캔들 인터벌 상수 및 라벨."""

from __future__ import annotations

# 분 단위 인터벌 코드 (DB 테이블명: {SYMBOL}_{코드})
INTERVAL_DAILY = 1440
INTERVAL_WEEKLY = 10080   # 7 * 24 * 60
INTERVAL_MONTHLY = 43200  # 30 * 24 * 60 (월봉 식별용 관례값)

MINUTE_INTERVALS = frozenset({1, 3, 5, 10, 15, 30, 60, 240})
CALENDAR_INTERVALS = frozenset({INTERVAL_DAILY, INTERVAL_WEEKLY, INTERVAL_MONTHLY})

DEFAULT_DOWNLOAD_INTERVALS = [
    3, 5, 10, 15, 30, 60, 240,
    INTERVAL_DAILY, INTERVAL_WEEKLY, INTERVAL_MONTHLY,
]

INTERVAL_LABELS: dict[int, str] = {
    1: "1분",
    3: "3분",
    5: "5분",
    10: "10분",
    15: "15분",
    30: "30분",
    60: "60분",
    240: "240분",
    INTERVAL_DAILY: "일봉",
    INTERVAL_WEEKLY: "주봉",
    INTERVAL_MONTHLY: "월봉",
}


def interval_label(interval_min: int) -> str:
    """인터벌 표시명을 반환한다.

    Args:
        interval_min: 분 단위 인터벌 코드.

    Returns:
        한글 라벨 (예: 일봉, 60분).
    """
    return INTERVAL_LABELS.get(interval_min, f"{interval_min}분")


def is_calendar_interval(interval_min: int) -> bool:
    """일/주/월봉 여부."""
    return interval_min in CALENDAR_INTERVALS
