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

from __future__ import annotations
from .destinationawskinesis import DestinationAWSKinesis, DestinationAWSKinesisTypedDict
from .destinationawss3 import DestinationAwss3, DestinationAwss3TypedDict
from .destinationawssqs import DestinationAWSSQS, DestinationAWSSQSTypedDict
from .destinationazureservicebus import (
    DestinationAzureServiceBus,
    DestinationAzureServiceBusTypedDict,
)
from .destinationgcppubsub import DestinationGCPPubSub, DestinationGCPPubSubTypedDict
from .destinationhookdeck import DestinationHookdeck, DestinationHookdeckTypedDict
from .destinationrabbitmq import DestinationRabbitMQ, DestinationRabbitMQTypedDict
from .destinationwebhook import DestinationWebhook, DestinationWebhookTypedDict
from outpost_sdk.utils import get_discriminator
from pydantic import Discriminator, Tag
from typing import Union
from typing_extensions import Annotated, TypeAliasType


DestinationTypedDict = TypeAliasType(
    "DestinationTypedDict",
    Union[
        DestinationWebhookTypedDict,
        DestinationAWSSQSTypedDict,
        DestinationRabbitMQTypedDict,
        DestinationHookdeckTypedDict,
        DestinationAWSKinesisTypedDict,
        DestinationAzureServiceBusTypedDict,
        DestinationAwss3TypedDict,
        DestinationGCPPubSubTypedDict,
    ],
)


Destination = Annotated[
    Union[
        Annotated[DestinationWebhook, Tag("webhook")],
        Annotated[DestinationAWSSQS, Tag("aws_sqs")],
        Annotated[DestinationRabbitMQ, Tag("rabbitmq")],
        Annotated[DestinationHookdeck, Tag("hookdeck")],
        Annotated[DestinationAWSKinesis, Tag("aws_kinesis")],
        Annotated[DestinationAzureServiceBus, Tag("azure_servicebus")],
        Annotated[DestinationAwss3, Tag("aws_s3")],
        Annotated[DestinationGCPPubSub, Tag("gcp_pubsub")],
    ],
    Discriminator(lambda m: get_discriminator(m, "type", "type")),
]
