from dataclasses import dataclass


@dataclass
class Data:
    pass


@dataclass
class SingleValue(Data):
    pass

    def __nema_marshall__(self):
        return {"value": self.value}

    @classmethod
    def __nema_unmarshall__(cls, data: dict):
        return cls(value=data["value"])


@dataclass
class BooleanValue(Data):
    value: bool


@dataclass
class StringValue(Data):
    value: str


@dataclass
class IntegerValue(Data):
    value: int


@dataclass
class FloatValue(Data):
    value: float
