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

from __future__ import annotations
from .awskinesisconfig import AWSKinesisConfig, AWSKinesisConfigTypedDict
from .awskinesiscredentials import AWSKinesisCredentials, AWSKinesisCredentialsTypedDict
from .topics_union import TopicsUnion, TopicsUnionTypedDict
from enum import Enum
from outpost_sdk.types import BaseModel
from typing import Optional
from typing_extensions import NotRequired, TypedDict


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

    AWS_KINESIS = "aws_kinesis"


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


class DestinationCreateAWSKinesis(BaseModel):
    type: DestinationCreateAWSKinesisType
    r"""Type of the destination. Must be 'aws_kinesis'."""

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

    config: AWSKinesisConfig

    credentials: AWSKinesisCredentials

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