import uuid
from dataclasses import dataclass
from typing import Literal

from opentrons.protocol_api import TrashBin
from opentrons.protocol_api.protocol_context import ModuleTypes
from opentrons.protocol_engine import ModuleModel
from opentrons.types import DeckSlotName
from opentrons_shared_data.module.types import ModuleType

from ..data import StaticItemsDict, DynamicItemsDict


@dataclass
class TrashBinData:
    deck_location: str
    """Location on the OT deck the module is loaded on"""
    is_fixed: bool

@dataclass
class TrashBinWrapper:
    trash_bin_instance: TrashBin | None
    """The instance used for usage in the Opentrons API"""
    data: TrashBinData
    """Data needed to instantiate the instance"""

    def __eq__(self, other):
        if isinstance(other, TrashBinWrapper):
            return self.trash_bin_instance == other.trash_bin_instance
        if isinstance(other, TrashBin):
            return self.trash_bin_instance == other
        return False