sig
  type ('query, 'response) t
  val create :
    name:string ->
    version:int ->
    bin_query:'query Core.Std.Bin_prot.Type_class.t ->
    bin_response:'response Core.Std.Bin_prot.Type_class.t ->
    ('query, 'response) Rpc.Rpc.t
  val name : ('a, 'b) Rpc.Rpc.t -> string
  val version : ('a, 'b) Rpc.Rpc.t -> int
  val implement :
    ('query, 'response) Rpc.Rpc.t ->
    ('connection_state -> 'query -> 'response Import.Deferred.t) ->
    'connection_state Rpc.Implementation.t
  val dispatch :
    ('query, 'response) Rpc.Rpc.t ->
    Rpc.Connection.t ->
    'query -> 'response Core.Std.Or_error.t Import.Deferred.t
  val dispatch_exn :
    ('query, 'response) Rpc.Rpc.t ->
    Rpc.Connection.t -> 'query -> 'response Import.Deferred.t
end