module Net.Interface where


data Interface m i o
  = Interface { forall (m :: * -> *) i o. Interface m i o -> m i
rx :: m i, forall (m :: * -> *) i o. Interface m i o -> o -> m ()
tx :: o -> m () }

data TimedInterface m i o
  = TimedInterface { forall (m :: * -> *) i o.
TimedInterface m i o -> Maybe Int -> m (Maybe i)
rxT :: Maybe Int -> m (Maybe i), forall (m :: * -> *) i o. TimedInterface m i o -> o -> m ()
txT :: o -> m () }