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

See Also:
    `AWS developer guide for Cognito
    <https://docs.aws.amazon.com/cognito/latest/developerguide/index.html>`_

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

from ..core import Resource

__all__ = [
    "IdentityPool",
    "IdentityPoolRoleAttachment",
    "UserPool",
    "UserPoolClient",
    "UserPoolGroup",
    "UserPoolUser",
    "UserPoolUserToGroupAttachment",
]


class IdentityPool(Resource):
    """A Identity Pool for Cognito.

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

    RESOURCE_TYPE = "AWS::Cognito::IdentityPool"

    RESOURCE_PROPERTIES = {
        "AllowUnauthenticatedIdentities",
        "CognitoEvents",
        "CognitoIdentityProviders",
        "CognitoStreams",
        "DeveloperProviderName",
        "IdentityPoolName",
        "OpenIdConnectProviderARNs",
        "PushSync",
        "SamlProviderARNs",
        "SupportedLoginProviders",
    }


class IdentityPoolRoleAttachment(Resource):
    """A Identity Pool Role Attachment for Cognito.

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

    RESOURCE_TYPE = "AWS::Cognito::IdentityPoolRoleAttachment"

    RESOURCE_PROPERTIES = {
        "IdentityPoolId",
        "RoleMappings",
        "Roles",
    }


class UserPool(Resource):
    """A User Pool for Cognito.

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

    RESOURCE_TYPE = "AWS::Cognito::UserPool"

    RESOURCE_PROPERTIES = {
        "AdminCreateUserConfig",
        "AliasAttributes",
        "AutoVerifiedAttributes",
        "DeviceConfiguration",
        "EmailConfiguration",
        "EmailVerificationMessage",
        "EmailVerificationSubject",
        "LambdaConfig",
        "MfaConfiguration",
        "Policies",
        "Schema",
        "SmsAuthenticationMessage",
        "SmsConfiguration",
        "SmsVerificationMessage",
        "UsernameAttributes",
        "UserPoolName",
        "UserPoolTags",
    }


class UserPoolClient(Resource):
    """A User Pool Client for Cognito.

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

    RESOURCE_TYPE = "AWS::Cognito::UserPoolClient"

    RESOURCE_PROPERTIES = {
        "ClientName",
        "ExplicitAuthFlows",
        "GenerateSecret",
        "ReadAttributes",
        "RefreshTokenValidity",
        "UserPoolId",
        "WriteAttributes",
    }


class UserPoolGroup(Resource):
    """A User Pool Group for Cognito.

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

    RESOURCE_TYPE = "AWS::Cognito::UserPoolGroup"

    RESOURCE_PROPERTIES = {
        "Description",
        "GroupName",
        "Precedence",
        "RoleArn",
        "UserPoolId",
    }


class UserPoolUser(Resource):
    """A User Pool User for Cognito.

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

    RESOURCE_TYPE = "AWS::Cognito::UserPoolUser"

    RESOURCE_PROPERTIES = {
        "DesiredDeliveryMediums",
        "ForceAliasCreation",
        "MessageAction",
        "UserAttributes",
        "Username",
        "UserPoolId",
        "ValidationData",
    }


class UserPoolUserToGroupAttachment(Resource):
    """A User Pool User To Group Attachment for Cognito.

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

    RESOURCE_TYPE = "AWS::Cognito::UserPoolUserToGroupAttachment"

    RESOURCE_PROPERTIES = {
        "GroupName",
        "Username",
        "UserPoolId",
    }
