from datetime import datetime
from dataclasses import dataclass
from typing import List, Optional

from numpy import float_
from numpy.typing import NDArray


@dataclass
class Measurement:
    """Measurement is a dataclass for storing a set of waveforms generated by a single acquisition, with a timestamp."""

    waveforms: List[NDArray[float_]]
    """Contains the acquired waveforms as a list of 1D NumPy arrays"""
    timestamp: Optional[datetime]
    """The time at which the acquisition was triggered, as a datetime.datetime object"""
