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

from __future__ import annotations
from .destinationcreateawskinesis import (
    DestinationCreateAWSKinesis,
    DestinationCreateAWSKinesisTypedDict,
)
from .destinationcreateawss3 import (
    DestinationCreateAwss3,
    DestinationCreateAwss3TypedDict,
)
from .destinationcreateawssqs import (
    DestinationCreateAWSSQS,
    DestinationCreateAWSSQSTypedDict,
)
from .destinationcreateazureservicebus import (
    DestinationCreateAzureServiceBus,
    DestinationCreateAzureServiceBusTypedDict,
)
from .destinationcreategcppubsub import (
    DestinationCreateGCPPubSub,
    DestinationCreateGCPPubSubTypedDict,
)
from .destinationcreatehookdeck import (
    DestinationCreateHookdeck,
    DestinationCreateHookdeckTypedDict,
)
from .destinationcreaterabbitmq import (
    DestinationCreateRabbitMQ,
    DestinationCreateRabbitMQTypedDict,
)
from .destinationcreatewebhook import (
    DestinationCreateWebhook,
    DestinationCreateWebhookTypedDict,
)
from outpost_sdk.utils import get_discriminator
from pydantic import Discriminator, Tag
from typing import Union
from typing_extensions import Annotated, TypeAliasType


DestinationCreateTypedDict = TypeAliasType(
    "DestinationCreateTypedDict",
    Union[
        DestinationCreateWebhookTypedDict,
        DestinationCreateAWSSQSTypedDict,
        DestinationCreateRabbitMQTypedDict,
        DestinationCreateHookdeckTypedDict,
        DestinationCreateAWSKinesisTypedDict,
        DestinationCreateAzureServiceBusTypedDict,
        DestinationCreateAwss3TypedDict,
        DestinationCreateGCPPubSubTypedDict,
    ],
)


DestinationCreate = Annotated[
    Union[
        Annotated[DestinationCreateWebhook, Tag("webhook")],
        Annotated[DestinationCreateAWSSQS, Tag("aws_sqs")],
        Annotated[DestinationCreateRabbitMQ, Tag("rabbitmq")],
        Annotated[DestinationCreateHookdeck, Tag("hookdeck")],
        Annotated[DestinationCreateAWSKinesis, Tag("aws_kinesis")],
        Annotated[DestinationCreateAzureServiceBus, Tag("azure_servicebus")],
        Annotated[DestinationCreateAwss3, Tag("aws_s3")],
        Annotated[DestinationCreateGCPPubSub, Tag("gcp_pubsub")],
    ],
    Discriminator(lambda m: get_discriminator(m, "type", "type")),
]
