"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from apideck_unify.types import BaseModel
from typing import Optional
from typing_extensions import NotRequired, TypedDict


class OddWeeksTypedDict(TypedDict):
    hours_monday: NotRequired[float]
    hours_tuesday: NotRequired[float]
    hours_wednesday: NotRequired[float]
    hours_thursday: NotRequired[float]
    hours_friday: NotRequired[float]
    hours_saturday: NotRequired[float]
    hours_sunday: NotRequired[float]


class OddWeeks(BaseModel):
    hours_monday: Optional[float] = None

    hours_tuesday: Optional[float] = None

    hours_wednesday: Optional[float] = None

    hours_thursday: Optional[float] = None

    hours_friday: Optional[float] = None

    hours_saturday: Optional[float] = None

    hours_sunday: Optional[float] = None


class EvenWeeksTypedDict(TypedDict):
    hours_monday: NotRequired[float]
    hours_tuesday: NotRequired[float]
    hours_wednesday: NotRequired[float]
    hours_thursday: NotRequired[float]
    hours_friday: NotRequired[float]
    hours_saturday: NotRequired[float]
    hours_sunday: NotRequired[float]


class EvenWeeks(BaseModel):
    hours_monday: Optional[float] = None

    hours_tuesday: Optional[float] = None

    hours_wednesday: Optional[float] = None

    hours_thursday: Optional[float] = None

    hours_friday: Optional[float] = None

    hours_saturday: Optional[float] = None

    hours_sunday: Optional[float] = None


class WorkPatternTypedDict(TypedDict):
    odd_weeks: NotRequired[OddWeeksTypedDict]
    even_weeks: NotRequired[EvenWeeksTypedDict]


class WorkPattern(BaseModel):
    odd_weeks: Optional[OddWeeks] = None

    even_weeks: Optional[EvenWeeks] = None


class ScheduleTypedDict(TypedDict):
    id: str
    r"""A unique identifier for an object."""
    start_date: str
    r"""The start date, inclusive, of the schedule period."""
    end_date: str
    r"""The end date, inclusive, of the schedule period."""
    work_pattern: WorkPatternTypedDict


class Schedule(BaseModel):
    id: str
    r"""A unique identifier for an object."""

    start_date: str
    r"""The start date, inclusive, of the schedule period."""

    end_date: str
    r"""The end date, inclusive, of the schedule period."""

    work_pattern: WorkPattern
