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

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


class V3ServicesNotificationDelayConfigFixedTimeslotConfigTypedDict(TypedDict):
    start_time: NotRequired[str]
    end_time: NotRequired[str]
    repeat_days: NotRequired[List[int]]


class V3ServicesNotificationDelayConfigFixedTimeslotConfig(BaseModel):
    start_time: Optional[str] = None

    end_time: Optional[str] = None

    repeat_days: Optional[List[int]] = None


class V3ServicesNotificationDelayConfigCustomTimeslotsTypedDict(TypedDict):
    pass


class V3ServicesNotificationDelayConfigCustomTimeslots(BaseModel):
    pass


class V3ServicesNotificationDelayConfigAssignedToTypedDict(TypedDict):
    id: NotRequired[str]
    type: NotRequired[str]


class V3ServicesNotificationDelayConfigAssignedTo(BaseModel):
    id: Optional[str] = None

    type: Optional[str] = None


class V3ServicesNotificationDelayConfigTypedDict(TypedDict):
    is_enabled: bool
    timezone: NotRequired[str]
    fixed_timeslot_config: NotRequired[
        V3ServicesNotificationDelayConfigFixedTimeslotConfigTypedDict
    ]
    custom_timeslots_enabled: NotRequired[bool]
    custom_timeslots: NotRequired[
        V3ServicesNotificationDelayConfigCustomTimeslotsTypedDict
    ]
    assigned_to: NotRequired[V3ServicesNotificationDelayConfigAssignedToTypedDict]


class V3ServicesNotificationDelayConfig(BaseModel):
    is_enabled: bool

    timezone: Optional[str] = None

    fixed_timeslot_config: Optional[
        V3ServicesNotificationDelayConfigFixedTimeslotConfig
    ] = None

    custom_timeslots_enabled: Optional[bool] = None

    custom_timeslots: Optional[V3ServicesNotificationDelayConfigCustomTimeslots] = None

    assigned_to: Optional[V3ServicesNotificationDelayConfigAssignedTo] = None
