sig
  module Rpc :
    sig
      module type S =
        sig
          type query
          type response
          val deprecated_dispatch_multi :
            version:int ->
            Rpc.Connection.t ->
            Versioned_rpc.Caller_converts.Rpc.S.query ->
            Versioned_rpc.Caller_converts.Rpc.S.response Core.Std.Or_error.t
            Import.Deferred.t
          val dispatch_multi :
            Versioned_rpc.Connection_with_menu.t ->
            Versioned_rpc.Caller_converts.Rpc.S.query ->
            Versioned_rpc.Caller_converts.Rpc.S.response Core.Std.Or_error.t
            Import.Deferred.t
          val versions : unit -> Core.Std.Int.Set.t
        end
      module Make :
        functor
          (Model : sig val name : string type query type response end->
          sig
            module Register :
              functor
                (Version_i : sig
                               val version : int
                               type query
                               type response
                               val query_of_model :
                                 Model.query ->
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.query
                               val model_of_response :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.response ->
                                 Model.response
                               val bin_query :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.query
                                 Core.Std.Bin_prot.Type_class.t
                               val bin_read_query :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.query
                                 Core.Std.Bin_prot.Read_ml.reader
                               val bin_read_query_ :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.query
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_read_query__ :
                                 (int ->
                                  Versioned_rpc.Caller_converts.Rpc.Make.Register.query)
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_reader_query :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.query
                                 Core.Std.Bin_prot.Type_class.reader
                               val bin_size_query :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.query
                                 Core.Std.Bin_prot.Size.sizer
                               val bin_write_query :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.query
                                 Core.Std.Bin_prot.Write_ml.writer
                               val bin_write_query_ :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.query
                                 Core.Std.Bin_prot.Unsafe_write_c.writer
                               val bin_writer_query :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.query
                                 Core.Std.Bin_prot.Type_class.writer
                               val bin_response :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.response
                                 Core.Std.Bin_prot.Type_class.t
                               val bin_read_response :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.response
                                 Core.Std.Bin_prot.Read_ml.reader
                               val bin_read_response_ :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.response
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_read_response__ :
                                 (int ->
                                  Versioned_rpc.Caller_converts.Rpc.Make.Register.response)
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_reader_response :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.response
                                 Core.Std.Bin_prot.Type_class.reader
                               val bin_size_response :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.response
                                 Core.Std.Bin_prot.Size.sizer
                               val bin_write_response :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.response
                                 Core.Std.Bin_prot.Write_ml.writer
                               val bin_write_response_ :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.response
                                 Core.Std.Bin_prot.Unsafe_write_c.writer
                               val bin_writer_response :
                                 Versioned_rpc.Caller_converts.Rpc.Make.Register.response
                                 Core.Std.Bin_prot.Type_class.writer
                             end->
                sig
                  val rpc : (Version_i.query, Version_i.response) Rpc.Rpc.t
                end
            val deprecated_dispatch_multi :
              version:int ->
              Rpc.Connection.t ->
              Model.query ->
              Model.response Core.Std.Or_error.t Import.Deferred.t
            val dispatch_multi :
              Connection_with_menu.t ->
              Model.query ->
              Model.response Core.Std.Or_error.t Import.Deferred.t
            val versions : unit -> Core.Std.Int.Set.t
          end
    end
  module Pipe_rpc :
    sig
      module type S =
        sig
          type query
          type response
          type error
          val deprecated_dispatch_multi :
            version:int ->
            Rpc.Connection.t ->
            Versioned_rpc.Caller_converts.Pipe_rpc.S.query ->
            (Versioned_rpc.Caller_converts.Pipe_rpc.S.response
             Core.Std.Or_error.t Import.Pipe.Reader.t * Rpc.Pipe_rpc.Id.t,
             Versioned_rpc.Caller_converts.Pipe_rpc.S.error)
            Core.Std.Result.t Core.Std.Or_error.t Import.Deferred.t
          val dispatch_multi :
            Versioned_rpc.Connection_with_menu.t ->
            Versioned_rpc.Caller_converts.Pipe_rpc.S.query ->
            (Versioned_rpc.Caller_converts.Pipe_rpc.S.response
             Core.Std.Or_error.t Import.Pipe.Reader.t * Rpc.Pipe_rpc.Id.t,
             Versioned_rpc.Caller_converts.Pipe_rpc.S.error)
            Core.Std.Result.t Core.Std.Or_error.t Import.Deferred.t
          val versions : unit -> Core.Std.Int.Set.t
        end
      module Make :
        functor
          (Model : sig
                     val name : string
                     type query
                     type response
                     type error
                   end->
          sig
            module Register :
              functor
                (Version_i : sig
                               val version : int
                               type query
                               type response
                               type error
                               val query_of_model :
                                 Model.query ->
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query
                               val model_of_response :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response ->
                                 Model.response
                               val model_of_error :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error ->
                                 Model.error
                               val bin_query :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query
                                 Core.Std.Bin_prot.Type_class.t
                               val bin_read_query :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query
                                 Core.Std.Bin_prot.Read_ml.reader
                               val bin_read_query_ :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_read_query__ :
                                 (int ->
                                  Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query)
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_reader_query :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query
                                 Core.Std.Bin_prot.Type_class.reader
                               val bin_size_query :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query
                                 Core.Std.Bin_prot.Size.sizer
                               val bin_write_query :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query
                                 Core.Std.Bin_prot.Write_ml.writer
                               val bin_write_query_ :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query
                                 Core.Std.Bin_prot.Unsafe_write_c.writer
                               val bin_writer_query :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.query
                                 Core.Std.Bin_prot.Type_class.writer
                               val bin_response :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response
                                 Core.Std.Bin_prot.Type_class.t
                               val bin_read_response :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response
                                 Core.Std.Bin_prot.Read_ml.reader
                               val bin_read_response_ :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_read_response__ :
                                 (int ->
                                  Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response)
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_reader_response :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response
                                 Core.Std.Bin_prot.Type_class.reader
                               val bin_size_response :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response
                                 Core.Std.Bin_prot.Size.sizer
                               val bin_write_response :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response
                                 Core.Std.Bin_prot.Write_ml.writer
                               val bin_write_response_ :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response
                                 Core.Std.Bin_prot.Unsafe_write_c.writer
                               val bin_writer_response :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.response
                                 Core.Std.Bin_prot.Type_class.writer
                               val bin_error :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error
                                 Core.Std.Bin_prot.Type_class.t
                               val bin_read_error :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error
                                 Core.Std.Bin_prot.Read_ml.reader
                               val bin_read_error_ :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_read_error__ :
                                 (int ->
                                  Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error)
                                 Core.Std.Bin_prot.Unsafe_read_c.reader
                               val bin_reader_error :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error
                                 Core.Std.Bin_prot.Type_class.reader
                               val bin_size_error :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error
                                 Core.Std.Bin_prot.Size.sizer
                               val bin_write_error :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error
                                 Core.Std.Bin_prot.Write_ml.writer
                               val bin_write_error_ :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error
                                 Core.Std.Bin_prot.Unsafe_write_c.writer
                               val bin_writer_error :
                                 Versioned_rpc.Caller_converts.Pipe_rpc.Make.Register.error
                                 Core.Std.Bin_prot.Type_class.writer
                             end->
                sig
                  val rpc :
                    (Version_i.query, Version_i.response, Version_i.error)
                    Rpc.Pipe_rpc.t
                end
            val deprecated_dispatch_multi :
              version:int ->
              Rpc.Connection.t ->
              Model.query ->
              (Model.response Core.Std.Or_error.t Import.Pipe.Reader.t *
               Rpc.Pipe_rpc.Id.t, Model.error)
              Core.Std.Result.t Core.Std.Or_error.t Import.Deferred.t
            val dispatch_multi :
              Connection_with_menu.t ->
              Model.query ->
              (Model.response Core.Std.Or_error.t Import.Pipe.Reader.t *
               Rpc.Pipe_rpc.Id.t, Model.error)
              Core.Std.Result.t Core.Std.Or_error.t Import.Deferred.t
            val versions : unit -> Core.Std.Int.Set.t
          end
    end
end