"""Raw representations of every data type in the AWS MediaLive service.

See Also:
    `AWS developer guide for MediaLive
    <https://docs.aws.amazon.com/pinpoint/latest/userguide/welcome.html>`_

This file is automatically generated, and should not be directly edited.
"""

from attr import attrib
from attr import attrs

from ..core import ATTRSCONFIG
from ..core import Resource
from ..core import ResourceProperties
from ..core import create_object_converter

__all__ = [
    "Channel",
    "ChannelProperties",
    "Input",
    "InputProperties",
    "InputSecurityGroup",
    "InputSecurityGroupProperties",
]


@attrs(**ATTRSCONFIG)
class ChannelProperties(ResourceProperties):
    ChannelClass = attrib(default=None)
    Destinations = attrib(default=None)
    EncoderSettings = attrib(default=None)
    InputAttachments = attrib(default=None)
    InputSpecification = attrib(default=None)
    LogLevel = attrib(default=None)
    Name = attrib(default=None)
    RoleArn = attrib(default=None)
    Tags = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Channel(Resource):
    """A Channel for MediaLive.

    See Also:
        `AWS Cloud Formation documentation for Channel
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-channel.html>`_
    """

    RESOURCE_TYPE = "AWS::MediaLive::Channel"

    Properties: ChannelProperties = attrib(
        factory=ChannelProperties, converter=create_object_converter(ChannelProperties)
    )


@attrs(**ATTRSCONFIG)
class InputProperties(ResourceProperties):
    Destinations = attrib(default=None)
    InputSecurityGroups = attrib(default=None)
    MediaConnectFlows = attrib(default=None)
    Name = attrib(default=None)
    RoleArn = attrib(default=None)
    Sources = attrib(default=None)
    Tags = attrib(default=None)
    Type = attrib(default=None)
    Vpc = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Input(Resource):
    """A Input for MediaLive.

    See Also:
        `AWS Cloud Formation documentation for Input
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-input.html>`_
    """

    RESOURCE_TYPE = "AWS::MediaLive::Input"

    Properties: InputProperties = attrib(
        factory=InputProperties, converter=create_object_converter(InputProperties)
    )


@attrs(**ATTRSCONFIG)
class InputSecurityGroupProperties(ResourceProperties):
    Tags = attrib(default=None)
    WhitelistRules = attrib(default=None)


@attrs(**ATTRSCONFIG)
class InputSecurityGroup(Resource):
    """A Input Security Group for MediaLive.

    See Also:
        `AWS Cloud Formation documentation for InputSecurityGroup
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-inputsecuritygroup.html>`_
    """

    RESOURCE_TYPE = "AWS::MediaLive::InputSecurityGroup"

    Properties: InputSecurityGroupProperties = attrib(
        factory=InputSecurityGroupProperties,
        converter=create_object_converter(InputSecurityGroupProperties),
    )
