from cython cimport Py_ssize_t
from numpy cimport (
    int32_t,
    int64_t,
)

ctypedef (int32_t, int32_t, int32_t) iso_calendar_t

cdef int dayofweek(int y, int m, int d) noexcept nogil
cdef bint is_leapyear(int64_t year) noexcept nogil
cpdef int32_t get_days_in_month(int year, Py_ssize_t month) noexcept nogil
cpdef int32_t get_week_of_year(int year, int month, int day) noexcept nogil
cpdef iso_calendar_t get_iso_calendar(int year, int month, int day) noexcept nogil
cpdef int32_t get_day_of_year(int year, int month, int day) noexcept nogil
cpdef int get_lastbday(int year, int month) noexcept nogil
cpdef int get_firstbday(int year, int month) noexcept nogil

cdef dict c_MONTH_NUMBERS, MONTH_TO_CAL_NUM

cdef int32_t* month_offset
