from yta_general_utils.programming.enum import YTAEnum as Enum


class _Type(Enum):
    """
    Enum class to represent the different types
    that exist in the app in a general context.
    
    For internal use only. Use a more specific
    Enum class to interact with the different
    types.
    """

    CUSTOM_STOCK = 'custom_stock'
    """
    Stock content but for our custom sources.
    """
    STOCK = 'stock'
    """
    Stock content from oficial sources.
    """
    AI_IMAGE = 'ai_image'
    """
    Content generated with AI generated images.
    """
    IMAGE = 'image'
    """
    Content generated with real images.
    """
    AI_VIDEO = 'ai_video'
    """
    Content generated with AI generated videos.
    """
    STICKER = 'sticker'
    """
    Content generated with images that are turned
    into stickers.
    """
    VIDEO = 'video'
    """
    Content generated with real videos.
    """
    SOUND = 'sound'
    """
    Content generated with real sounds.
    """
    YOUTUBE_VIDEO = 'youtube_video'
    """
    Content generated from videos obtained from
    the Youtube platform.
    """
    TEXT = 'text'
    """
    Content generated with text created with our
    own libraries.
    """
    MEME = 'meme'
    """
    Content generated with memes obtained from
    our own Youtube platform channels.
    """
    EFFECT = 'effect'
    """
    Content generated with effects made by 
    ourselves and applied to it.
    """
    PREMADE = 'premade'
    """
    Content generated by our own libraries.
    """
    GREENSCREEN = 'greenscreen'
    """
    Content generated with static and moving
    greenscreens to improve it.
    """

class SegmentType(Enum):
    """
    Enum class to represent the different types
    of a Segment, which means the content that
    will be used to fulfill that segment.
    """

    CUSTOM_STOCK = _Type.CUSTOM_STOCK.value
    """
    Stock content but for our custom sources.
    """
    STOCK = _Type.STOCK.value
    """
    Stock content from oficial sources.
    """
    AI_IMAGE = _Type.AI_IMAGE.value
    """
    Content generated with AI generated images.
    """
    IMAGE = _Type.IMAGE.value
    """
    Content generated with real images.
    """
    AI_VIDEO = _Type.AI_VIDEO.value
    """
    Content generated with AI generated videos.
    """
    STICKER = _Type.STICKER.value
    """
    Content generated with images that are turned
    into stickers.
    """
    VIDEO = _Type.VIDEO.value
    """
    Content generated with real videos.
    """
    SOUND = _Type.SOUND.value
    """
    Content generated with real sounds.
    """
    YOUTUBE_VIDEO = _Type.YOUTUBE_VIDEO.value
    """
    Content generated from videos obtained from
    the Youtube platform.
    """
    TEXT = _Type.TEXT.value
    """
    Content generated with text created with our
    own libraries.
    """
    MEME = _Type.MEME.value
    """
    Content generated with memes obtained from
    our own Youtube platform channels.
    """
    PREMADE = _Type.PREMADE.value
    """
    Content generated by our own libraries.
    """

class ShortcodeType(Enum):
    """
    Enum class to represent the different types
    of a Shortcode, which means the content that
    will be used to generate the content that a
    Shortcode indicates to be built.
    """

    CUSTOM_STOCK = _Type.CUSTOM_STOCK.value
    """
    Stock content but for our custom sources.
    """
    STOCK = _Type.STOCK.value
    """
    Stock content from oficial sources.
    """
    AI_IMAGE = _Type.AI_IMAGE.value
    """
    Content generated with AI generated images.
    """
    IMAGE = _Type.IMAGE.value
    """
    Content generated with real images.
    """
    AI_VIDEO = _Type.AI_VIDEO.value
    """
    Content generated with AI generated videos.
    """
    STICKER = _Type.STICKER.value
    """
    Content generated with images that are turned
    into stickers.
    """
    VIDEO = _Type.VIDEO.value
    """
    Content generated with real videos.
    """
    SOUND = _Type.SOUND.value
    """
    Content generated with real sounds.
    """
    YOUTUBE_VIDEO = _Type.YOUTUBE_VIDEO.value
    """
    Content generated from videos obtained from
    the Youtube platform.
    """
    TEXT = _Type.TEXT.value
    """
    Content generated with text created with our
    own libraries.
    """
    MEME = _Type.MEME.value
    """
    Content generated with memes obtained from
    our own Youtube platform channels.
    """
    PREMADE = _Type.PREMADE.value
    """
    Content generated by our own libraries.
    """
    EFFECT = _Type.EFFECT.value
    """
    Content generated with effects made by 
    ourselves and applied to it.
    """
    GREENSCREEN = _Type.GREENSCREEN.value
    """
    Content generated with static and moving
    greenscreens to improve it.
    """

class EnhancementType(Enum):
    """
    Enum class to represent the different types
    of an Enhancement, which means the content
    that will be used to generate the content
    to fulfill that Enhancement.
    """

    CUSTOM_STOCK = _Type.CUSTOM_STOCK.value
    """
    Stock content but for our custom sources.
    """
    STOCK = _Type.STOCK.value
    """
    Stock content from oficial sources.
    """
    AI_IMAGE = _Type.AI_IMAGE.value
    """
    Content generated with AI generated images.
    """
    IMAGE = _Type.IMAGE.value
    """
    Content generated with real images.
    """
    AI_VIDEO = _Type.AI_VIDEO.value
    """
    Content generated with AI generated videos.
    """
    STICKER = _Type.STICKER.value
    """
    Content generated with images that are turned
    into stickers.
    """
    VIDEO = _Type.VIDEO.value
    """
    Content generated with real videos.
    """
    SOUND = _Type.SOUND.value
    """
    Content generated with real sounds.
    """
    YOUTUBE_VIDEO = _Type.YOUTUBE_VIDEO.value
    """
    Content generated from videos obtained from
    the Youtube platform.
    """
    TEXT = _Type.TEXT.value
    """
    Content generated with text created with our
    own libraries.
    """
    MEME = _Type.MEME.value
    """
    Content generated with memes obtained from
    our own Youtube platform channels.
    """
    PREMADE = _Type.PREMADE.value
    """
    Content generated by our own libraries.
    """
    EFFECT = _Type.EFFECT.value
    """
    Content generated with effects made by 
    ourselves and applied to it.
    """
    GREENSCREEN = _Type.GREENSCREEN.value
    """
    Content generated with static and moving
    greenscreens to improve it.
    """