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

from __future__ import annotations
from .hookdeckcredentials import HookdeckCredentials, HookdeckCredentialsTypedDict
from .topics_union import TopicsUnion, TopicsUnionTypedDict
from enum import Enum
from outpost_sdk.types import BaseModel
from typing import Any, Optional
from typing_extensions import NotRequired, TypedDict


class DestinationCreateHookdeckType(str, Enum):
    r"""Type of the destination. Must be 'hookdeck'."""

    HOOKDECK = "hookdeck"


class DestinationCreateHookdeckTypedDict(TypedDict):
    type: DestinationCreateHookdeckType
    r"""Type of the destination. Must be 'hookdeck'."""
    topics: TopicsUnionTypedDict
    r"""\"*\" or an array of enabled topics."""
    credentials: HookdeckCredentialsTypedDict
    id: NotRequired[str]
    r"""Optional user-provided ID. A UUID will be generated if empty."""
    config: NotRequired[Any]


class DestinationCreateHookdeck(BaseModel):
    type: DestinationCreateHookdeckType
    r"""Type of the destination. Must be 'hookdeck'."""

    topics: TopicsUnion
    r"""\"*\" or an array of enabled topics."""

    credentials: HookdeckCredentials

    id: Optional[str] = None
    r"""Optional user-provided ID. A UUID will be generated if empty."""

    config: Optional[Any] = None
