from __future__ import annotations

from enum import StrEnum


class ModuleProjectStatusEnum(StrEnum):
    """通用模块项目状态。"""

    PENDING = "pending"
    WAITING_USER = "waiting_user"
    PROCESSING = "processing"
    COMPLETED = "completed"
    FAILED = "failed"
    CANCELLED = "cancelled"


class ModuleStepStatusEnum(StrEnum):
    """通用模块子任务状态。"""

    PENDING = "pending"
    WAITING_USER = "waiting_user"
    PROCESSING = "processing"
    COMPLETED = "completed"
    FAILED = "failed"
    CANCELLED = "cancelled"


class ModuleEventTypeEnum(StrEnum):
    """通用模块事件类型。"""

    PROJECT_CREATED = "PROJECT_CREATED"
    PROJECT_DELETED = "PROJECT_DELETED"
    STEP_CREATED = "STEP_CREATED"
    STEP_UPDATED = "STEP_UPDATED"
    SOFT_DELETE_STEPS = "SOFT_DELETE_STEPS"
    IMAGE_PROMPT_SUBMITTED = "IMAGE_PROMPT_SUBMITTED"
    IMAGE_PROMPT_SUCCESS = "IMAGE_PROMPT_SUCCESS"
    IMAGE_PROMPT_FAILED = "IMAGE_PROMPT_FAILED"
    IMAGE_GENERATE_SUBMITTED = "IMAGE_GENERATE_SUBMITTED"
    IMAGE_GENERATE_SUCCESS = "IMAGE_GENERATE_SUCCESS"
    VIDEO_PROMPT_SUBMITTED = "VIDEO_PROMPT_SUBMITTED"
    VIDEO_PROMPT_SUCCESS = "VIDEO_PROMPT_SUCCESS"
    VIDEO_PROMPT_FAILED = "VIDEO_PROMPT_FAILED"
    VIDEO_GENERATE_SUBMITTED = "VIDEO_GENERATE_SUBMITTED"
    VIDEO_GENERATE_SUCCESS = "VIDEO_GENERATE_SUCCESS"
    CHAT_TASK_FAILED = "CHAT_TASK_FAILED"
    CHAT_TASK_CANCELLED = "CHAT_TASK_CANCELLED"
    MEDIA_REFUND = "MEDIA_REFUND"
    PROMPT_BILLING_SUCCESS = "PROMPT_BILLING_SUCCESS"
    PROMPT_BILLING_FAILED = "PROMPT_BILLING_FAILED"


class ModulePromptTypeEnum(StrEnum):
    """通用模块提词结果类型。"""

    IMAGE_PROMPT = "image_prompt"
    VIDEO_PROMPT = "video_prompt"
