from enum import IntEnum


class CaptureStatus(IntEnum):
    Unknown = -1
    Stop = 0
    Running = 1

    def __str__(self):
        if self.value == CaptureStatus.Unknown:
            return f"Capture status: {self.value}"
        elif self.value == CaptureStatus.Stop:
            return f"Capture status: is not working"
        elif self.value == CaptureStatus.Running:
            return f"Capture status: working"
        else:
            return f"Capture status: Unknown state"


class BulkCaptureStatus(IntEnum):
    Unknown = -1
    Idle = 0
    Waiting = 1
    Capturing = 2
    Transferring = 3

    def __str__(self):
        if self.value == BulkCaptureStatus.Unknown:
            return f"Bulk capture status: {self.value}"
        elif self.value == BulkCaptureStatus.Idle:
            return f"Bulk capture status: Doing nothing"
        elif self.value == BulkCaptureStatus.Waiting:
            return f"Bulk capture status: Waiting"
        elif self.value == BulkCaptureStatus.Capturing:
            return f"Bulk capture status: Capturing in progress"
        elif self.value == BulkCaptureStatus.Transferring:
            return f"Bulk capture status: Transferring"
        else:
            return f"Bulk capture status: Unknown state"


class AudioCaptureStatus(IntEnum):
    Unknown = -1
    Stop = 0
    Running = 1

    def __str__(self):
        if self.value == AudioCaptureStatus.Unknown:
            return f"Audio capture status: {self.value}"
        elif self.value == AudioCaptureStatus.Stop:
            return f"Audio capture status: is not working"
        elif self.value == AudioCaptureStatus.Running:
            return f"Audio capture status: working"
        else:
            return f"Video capture status: Unknown state"


class VideoCaptureStatus(IntEnum):
    Unknown = -1
    Idle = 0  # Doing nothing
    Capturing = 1  # Capturing in progress
    Transferring = 2  # Transferring in progress
    LiveModeActive = 3  # Live mode active
    Malfunction = 4  # Malfunction (requires restart)
    Done = 7  # Capturing and transferring done

    def __str__(self):
        if self.value == VideoCaptureStatus.Unknown:
            return f"Video capture status: {self.value}"
        elif self.value == VideoCaptureStatus.Idle:
            return f"Video capture status: Doing nothing"
        elif self.value == VideoCaptureStatus.Capturing:
            return f"Video capture status: Capturing in progress"
        elif self.value == VideoCaptureStatus.Transferring:
            return f"Video capture status: Transferring in progress"
        elif self.value == VideoCaptureStatus.LiveModeActive:
            return f"Video capture status: Live mode active"
        elif self.value == VideoCaptureStatus.Malfunction:
            return f"Video capture status: Malfunction (requires restart)"
        elif self.value == VideoCaptureStatus.Done:
            return f"Video capture status: Capturing and transferring done"
        else:
            return f"Video capture status: Unknown state"


class EventCaptureStatus(IntEnum):
    Unknown = -1
    Stop = 0
    Running = 1
    Invalid = 0xFF

    def __str__(self):
        if self.value == EventCaptureStatus.Unknown:
            return f"Event capture status: {self.value}"
        elif self.value == EventCaptureStatus.Stop:
            return f"Event capture status: is not working"
        elif self.value == EventCaptureStatus.Running:
            return f"Event capture status: working"
        else:
            return f"Video capture status: Unknown state"
