sig
  module Control :
    sig
      type 'name t =
          Unauthorized of string
        | Duplicate of 'name
        | Wrong_mode of 'name
        | Too_many_clients of string
        | Almost_full of int
        | Connect of 'name
        | Disconnect of 'name * Core.Std.Sexp.t
        | Parse_error of 'name * string
        | Protocol_error of string
      val bin_size_t :
        ('-> int) -> 'Versioned_typed_tcp.Server_msg.Control.t -> int
      val bin_write_t_ :
        (Core.Std.Bin_prot.Unsafe_common.sptr ->
         Core.Std.Bin_prot.Unsafe_common.eptr ->
         '-> Bin_prot.Unsafe_common.sptr) ->
        Core.Std.Bin_prot.Unsafe_common.sptr ->
        Core.Std.Bin_prot.Unsafe_common.eptr ->
        'Versioned_typed_tcp.Server_msg.Control.t ->
        Bin_prot.Unsafe_common.sptr
      val bin_write_t :
        (Core.Std.Bin_prot.Unsafe_common.sptr ->
         Core.Std.Bin_prot.Unsafe_common.eptr ->
         '-> Core.Std.Bin_prot.Unsafe_common.sptr) ->
        Core.Std.Bin_prot.Common.buf ->
        pos:Core.Std.Bin_prot.Common.pos ->
        'Versioned_typed_tcp.Server_msg.Control.t ->
        Core.Std.Bin_prot.Common.pos
      val bin_writer_t :
        'Core.Std.Bin_prot.Type_class.writer ->
        'Versioned_typed_tcp.Server_msg.Control.t
        Core.Std.Bin_prot.Type_class.writer
      val bin_read_t__ : '-> '-> '-> '-> 'e
      val bin_read_t_ :
        (Core.Std.Bin_prot.Unsafe_common.sptr_ptr ->
         Core.Std.Bin_prot.Unsafe_common.eptr -> 'a) ->
        Core.Std.Bin_prot.Unsafe_common.sptr_ptr ->
        Core.Std.Bin_prot.Unsafe_common.eptr ->
        'Versioned_typed_tcp.Server_msg.Control.t
      val bin_read_t :
        (Core.Std.Bin_prot.Unsafe_common.sptr_ptr ->
         Core.Std.Bin_prot.Unsafe_common.eptr -> 'name) ->
        Core.Std.Bin_prot.Common.buf ->
        pos_ref:Core.Std.Bin_prot.Common.pos Pervasives.ref ->
        'name Versioned_typed_tcp.Server_msg.Control.t
      val bin_reader_t :
        'Core.Std.Bin_prot.Type_class.reader ->
        'Versioned_typed_tcp.Server_msg.Control.t
        Core.Std.Bin_prot.Type_class.reader
      val bin_t :
        'Core.Std.Bin_prot.Type_class.t ->
        'Versioned_typed_tcp.Server_msg.Control.t
        Core.Std.Bin_prot.Type_class.t
      val __t_of_sexp__ :
        (Sexplib.Sexp.t -> 'name) -> Sexplib.Sexp.t -> 'name t
      val t_of_sexp : (Sexplib.Sexp.t -> 'name) -> Sexplib.Sexp.t -> 'name t
      val sexp_of_t : ('name -> Sexplib.Sexp.t) -> 'name t -> Sexplib.Sexp.t
    end
  type ('name, 'data) t =
      Control of 'name Versioned_typed_tcp.Server_msg.Control.t
    | Data of ('name, 'data) Versioned_typed_tcp.Read_result.t
end