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.Exn.t) Core.Std.Result.t Import.Deferred.t
  val dispatch_exn :
    ('query, 'response) Rpc.Rpc.t ->
    Rpc.Connection.t -> 'query -> 'response Import.Deferred.t
end