from typing import Literal

# See
# https://transparency.dsa.ec.europa.eu/page/additional-explanation-for-statement-attributes
# for two-level classification for types of violative activity.

StatementCategoryProtectionOfMinors = "STATEMENT_CATEGORY_PROTECTION_OF_MINORS"

StatementCategory = (
    "STATEMENT_CATEGORY_ANIMAL_WELFARE",
    "STATEMENT_CATEGORY_CONSUMER_INFORMATION",
    "STATEMENT_CATEGORY_CYBER_VIOLENCE",
    "STATEMENT_CATEGORY_CYBER_VIOLENCE_AGAINST_WOMEN",
    "STATEMENT_CATEGORY_DATA_PROTECTION_AND_PRIVACY_VIOLATIONS",
    "STATEMENT_CATEGORY_ILLEGAL_OR_HARMFUL_SPEECH",
    "STATEMENT_CATEGORY_INTELLECTUAL_PROPERTY_INFRINGEMENTS",
    "STATEMENT_CATEGORY_NEGATIVE_EFFECTS_ON_CIVIC_DISCOURSE_OR_ELECTIONS",
    "STATEMENT_CATEGORY_NON_CONSENSUAL_BEHAVIOUR",
    "STATEMENT_CATEGORY_NOT_SPECIFIED_NOTICE",
    "STATEMENT_CATEGORY_OTHER_VIOLATION_TC",
    "STATEMENT_CATEGORY_PORNOGRAPHY_OR_SEXUALIZED_CONTENT",
    StatementCategoryProtectionOfMinors,
    "STATEMENT_CATEGORY_RISK_FOR_PUBLIC_SECURITY",
    "STATEMENT_CATEGORY_SCAMS_AND_FRAUD",
    "STATEMENT_CATEGORY_SELF_HARM",
    "STATEMENT_CATEGORY_SCOPE_OF_PLATFORM_SERVICE",
    "STATEMENT_CATEGORY_UNSAFE_AND_ILLEGAL_PRODUCTS",
    "STATEMENT_CATEGORY_UNSAFE_AND_PROHIBITED_PRODUCTS",
    "STATEMENT_CATEGORY_VIOLENCE",
)


StatementCategoryType = Literal[*StatementCategory]
