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

See Also:
    `AWS developer guide for SNS
    <https://docs.aws.amazon.com/sns/latest/dg/welcome.html>`_

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

from ..core import Resource

__all__ = [
    "Subscription",
    "Topic",
    "TopicPolicy",
]


class Subscription(Resource):
    """A Subscription for SNS.

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

    RESOURCE_TYPE = "AWS::SNS::Subscription"

    RESOURCE_PROPERTIES = {
        "DeliveryPolicy",
        "Endpoint",
        "FilterPolicy",
        "Protocol",
        "RawMessageDelivery",
        "Region",
        "TopicArn",
    }


class Topic(Resource):
    """A Topic for SNS.

    See Also:
        `AWS Cloud Formation documentation for Topic
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html>`_
    """

    RESOURCE_TYPE = "AWS::SNS::Topic"

    RESOURCE_PROPERTIES = {
        "DisplayName",
        "Subscription",
        "TopicName",
    }


class TopicPolicy(Resource):
    """A Topic Policy for SNS.

    See Also:
        `AWS Cloud Formation documentation for TopicPolicy
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html>`_
    """

    RESOURCE_TYPE = "AWS::SNS::TopicPolicy"

    RESOURCE_PROPERTIES = {
        "PolicyDocument",
        "Topics",
    }
