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

See Also:
    `AWS developer guide for SES
    <https://docs.aws.amazon.com/servicecatalog/latest/dg/index.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__ = [
    "ConfigurationSet",
    "ConfigurationSetProperties",
    "ConfigurationSetEventDestination",
    "ConfigurationSetEventDestinationProperties",
    "ReceiptFilter",
    "ReceiptFilterProperties",
    "ReceiptRule",
    "ReceiptRuleProperties",
    "ReceiptRuleSet",
    "ReceiptRuleSetProperties",
    "Template",
    "TemplateProperties",
]


@attrs(**ATTRSCONFIG)
class ConfigurationSetProperties(ResourceProperties):
    Name = attrib(default=None)


@attrs(**ATTRSCONFIG)
class ConfigurationSet(Resource):
    """A Configuration Set for SES.

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

    RESOURCE_TYPE = "AWS::SES::ConfigurationSet"

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


@attrs(**ATTRSCONFIG)
class ConfigurationSetEventDestinationProperties(ResourceProperties):
    ConfigurationSetName = attrib(default=None)
    EventDestination = attrib(default=None)


@attrs(**ATTRSCONFIG)
class ConfigurationSetEventDestination(Resource):
    """A Configuration Set Event Destination for SES.

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

    RESOURCE_TYPE = "AWS::SES::ConfigurationSetEventDestination"

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


@attrs(**ATTRSCONFIG)
class ReceiptFilterProperties(ResourceProperties):
    Filter = attrib(default=None)


@attrs(**ATTRSCONFIG)
class ReceiptFilter(Resource):
    """A Receipt Filter for SES.

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

    RESOURCE_TYPE = "AWS::SES::ReceiptFilter"

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


@attrs(**ATTRSCONFIG)
class ReceiptRuleProperties(ResourceProperties):
    After = attrib(default=None)
    Rule = attrib(default=None)
    RuleSetName = attrib(default=None)


@attrs(**ATTRSCONFIG)
class ReceiptRule(Resource):
    """A Receipt Rule for SES.

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

    RESOURCE_TYPE = "AWS::SES::ReceiptRule"

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


@attrs(**ATTRSCONFIG)
class ReceiptRuleSetProperties(ResourceProperties):
    RuleSetName = attrib(default=None)


@attrs(**ATTRSCONFIG)
class ReceiptRuleSet(Resource):
    """A Receipt Rule Set for SES.

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

    RESOURCE_TYPE = "AWS::SES::ReceiptRuleSet"

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


@attrs(**ATTRSCONFIG)
class TemplateProperties(ResourceProperties):
    Template = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Template(Resource):
    """A Template for SES.

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

    RESOURCE_TYPE = "AWS::SES::Template"

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