this is my current draft for `StreamSignature`: ``` from amaranth import * from amaranth.lib import enum, data, wiring class StreamSignature(wiring.Signature): def __init__(self, data_shape, *, lanes=None): try: Shape.cast(data_shape) except: raise TypeError(f"Stream data shape must be a shape-castable value, " f"not {data_shape!r}") if lanes is not None and not (isinstance(lanes, int) and lanes >= 1): raise TypeError(f"Stream lane count must be a positive integer, " f"not {lanes!r}") if lanes is None: dimensions = () else: dimensions = (lanes,) super().__init__({ "data": Out(data_shape).array(*dimensions), "valid": Out(1).array(*dimensions), "ready": In(1) }) ```