sig
  type ('to_hub, 'from_hub) t
  val create :
    ?buffer_age_limit:[ `At_most of Core.Std.Time.Span.t | `Unlimited ] ->
    addr:Async.Std.Unix.Inet_addr.t * int ->
    unit -> ('a, 'b) Channel.t Async.Std.Deferred.t
  val close : ('a, 'b) Channel.t -> unit Async.Std.Deferred.t
  val read : ('a, 'b) Channel.t -> 'Async.Std.Deferred.t
  val read_full :
    ('a, 'b) Channel.t ->
    'Async.Std.Reader.Read_result.t Async.Std.Deferred.t
  val write : ('a, 'b) Channel.t -> '-> unit
  type 'a pre_packed
  val pre_pack : '-> 'Channel.pre_packed
  val write_pre_packed : ('a, 'b) Channel.t -> 'Channel.pre_packed -> unit
  val flushed : ('a, 'b) Channel.t -> unit Async.Std.Deferred.t
  val socket : ('a, 'b) Channel.t -> Async.Std.Unix.Inet_addr.t * int
  val errors : ('a, 'b) Channel.t -> exn Async.Std.Stream.t
end