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

from __future__ import annotations
from .phoneendpointdto import PhoneEndpointDto, PhoneEndpointDtoTypedDict
from .slackchannelendpointdto import (
    SlackChannelEndpointDto,
    SlackChannelEndpointDtoTypedDict,
)
from .slackuserendpointdto import SlackUserEndpointDto, SlackUserEndpointDtoTypedDict
from .webhookendpointdto import WebhookEndpointDto, WebhookEndpointDtoTypedDict
from novu_py.types import BaseModel
from typing import Union
from typing_extensions import TypeAliasType, TypedDict


UpdateChannelEndpointRequestDtoEndpointTypedDict = TypeAliasType(
    "UpdateChannelEndpointRequestDtoEndpointTypedDict",
    Union[
        SlackChannelEndpointDtoTypedDict,
        SlackUserEndpointDtoTypedDict,
        PhoneEndpointDtoTypedDict,
        WebhookEndpointDtoTypedDict,
    ],
)
r"""Updated endpoint data. The structure must match the existing channel endpoint type."""


UpdateChannelEndpointRequestDtoEndpoint = TypeAliasType(
    "UpdateChannelEndpointRequestDtoEndpoint",
    Union[
        SlackChannelEndpointDto,
        SlackUserEndpointDto,
        PhoneEndpointDto,
        WebhookEndpointDto,
    ],
)
r"""Updated endpoint data. The structure must match the existing channel endpoint type."""


class UpdateChannelEndpointRequestDtoTypedDict(TypedDict):
    endpoint: UpdateChannelEndpointRequestDtoEndpointTypedDict
    r"""Updated endpoint data. The structure must match the existing channel endpoint type."""


class UpdateChannelEndpointRequestDto(BaseModel):
    endpoint: UpdateChannelEndpointRequestDtoEndpoint
    r"""Updated endpoint data. The structure must match the existing channel endpoint type."""
