sig
  type 'a t
  type chan_endpoint
  type chan =
      Chan : Binary_session.IO.chan_endpoint *
        Binary_session.IO.chan_endpoint -> Binary_session.IO.chan
  val make_channel : unit -> Binary_session.IO.chan
  val read_channel :
    Binary_session.IO.chan_endpoint -> 'Binary_session.IO.t
  val write_channel :
    '->
    flags:Marshal.extern_flags list ->
    Binary_session.IO.chan_endpoint -> unit Binary_session.IO.t
  val close_channel : Binary_session.IO.chan -> unit Binary_session.IO.t
  val return : '-> 'Binary_session.IO.t
  val ( >>= ) :
    'Binary_session.IO.t ->
    ('-> 'Binary_session.IO.t) -> 'Binary_session.IO.t
end