from enum import Enum


class UserPermission(str, Enum):
    ACCESS_OTHERS_BOT = "access_others_bot"
    ACCESS_OTHERS_WEBHOOK = "access_others_webhook"
    ADD_MESSAGE_STAMP = "add_message_stamp"
    BOT_ACTION_JOIN_CHANNEL = "bot_action_join_channel"
    BOT_ACTION_LEAVE_CHANNEL = "bot_action_leave_channel"
    CHANGE_MY_ICON = "change_my_icon"
    CHANGE_MY_PASSWORD = "change_my_password"
    CHANGE_PARENT_CHANNEL = "change_parent_channel"
    CONNECT_NOTIFICATION_STREAM = "connect_notification_stream"
    CREATE_BOT = "create_bot"
    CREATE_CHANNEL = "create_channel"
    CREATE_CLIENT = "create_client"
    CREATE_CLIP_FOLDER = "create_clip_folder"
    CREATE_MESSAGE_PIN = "create_message_pin"
    CREATE_SPECIAL_USER_GROUP = "create_special_user_group"
    CREATE_STAMP = "create_stamp"
    CREATE_STAMP_PALETTE = "create_stamp_palette"
    CREATE_USER_GROUP = "create_user_group"
    CREATE_WEBHOOK = "create_webhook"
    DELETE_BOT = "delete_bot"
    DELETE_CHANNEL = "delete_channel"
    DELETE_CLIP_FOLDER = "delete_clip_folder"
    DELETE_FILE = "delete_file"
    DELETE_MESSAGE = "delete_message"
    DELETE_MESSAGE_PIN = "delete_message_pin"
    DELETE_MY_CLIENT = "delete_my_client"
    DELETE_MY_SESSIONS = "delete_my_sessions"
    DELETE_STAMP = "delete_stamp"
    DELETE_STAMP_PALETTE = "delete_stamp_palette"
    DELETE_UNREAD = "delete_unread"
    DELETE_USER_GROUP = "delete_user_group"
    DELETE_WEBHOOK = "delete_webhook"
    DOWNLOAD_FILE = "download_file"
    EDIT_BOT = "edit_bot"
    EDIT_CHANNEL = "edit_channel"
    EDIT_CHANNEL_STAR = "edit_channel_star"
    EDIT_CHANNEL_SUBSCRIPTION = "edit_channel_subscription"
    EDIT_CHANNEL_TOPIC = "edit_channel_topic"
    EDIT_CLIP_FOLDER = "edit_clip_folder"
    EDIT_ME = "edit_me"
    EDIT_MESSAGE = "edit_message"
    EDIT_MY_CLIENT = "edit_my_client"
    EDIT_MY_EXTERNAL_ACCOUNT = "edit_my_external_account"
    EDIT_OTHERS_USER_GROUP = "edit_others_user_group"
    EDIT_OTHER_USERS = "edit_other_users"
    EDIT_STAMP = "edit_stamp"
    EDIT_STAMP_CREATED_BY_OTHERS = "edit_stamp_created_by_others"
    EDIT_STAMP_PALETTE = "edit_stamp_palette"
    EDIT_USER_GROUP = "edit_user_group"
    EDIT_USER_TAG = "edit_user_tag"
    EDIT_WEBHOOK = "edit_webhook"
    GET_BOT = "get_bot"
    GET_CHANNEL = "get_channel"
    GET_CHANNEL_STAR = "get_channel_star"
    GET_CHANNEL_SUBSCRIPTION = "get_channel_subscription"
    GET_CLIENTS = "get_clients"
    GET_CLIP_FOLDER = "get_clip_folder"
    GET_ME = "get_me"
    GET_MESSAGE = "get_message"
    GET_MESSAGE_REPORTS = "get_message_reports"
    GET_MY_EXTERNAL_ACCOUNT = "get_my_external_account"
    GET_MY_SESSIONS = "get_my_sessions"
    GET_MY_STAMP_HISTORY = "get_my_stamp_history"
    GET_MY_TOKENS = "get_my_tokens"
    GET_OIDC_USERINFO = "get_oidc_userinfo"
    GET_STAMP = "get_stamp"
    GET_STAMP_PALETTE = "get_stamp_palette"
    GET_UNREAD = "get_unread"
    GET_USER = "get_user"
    GET_USER_GROUP = "get_user_group"
    GET_USER_QR_CODE = "get_user_qr_code"
    GET_USER_TAG = "get_user_tag"
    GET_WEBHOOK = "get_webhook"
    MANAGE_OTHERS_CLIENT = "manage_others_client"
    POST_MESSAGE = "post_message"
    REGISTER_FCM_DEVICE = "register_fcm_device"
    REGISTER_USER = "register_user"
    REMOVE_MESSAGE_STAMP = "remove_message_stamp"
    REPORT_MESSAGE = "report_message"
    REVOKE_MY_TOKEN = "revoke_my_token"
    UPLOAD_FILE = "upload_file"
    WEB_RTC = "web_rtc"

    def __str__(self) -> str:
        return str(self.value)
