type ('query, 'state, 'update, 'error) t
val create : ?client_pushes_back:unit -> name:string -> version:int -> bin_query:'query Bin_prot.Type_class.t -> bin_state:'state Bin_prot.Type_class.t -> bin_update:'update Bin_prot.Type_class.t -> bin_error:'error Bin_prot.Type_class.t -> unit -> ('query, 'state, 'update, 'error) tval bin_query : ('query, _, _, _) t -> 'query Bin_prot.Type_class.tval bin_state : (_, 'state, _, _) t -> 'state Bin_prot.Type_class.tval bin_update : (_, _, 'update, _) t -> 'update Bin_prot.Type_class.tval bin_error : (_, _, _, 'error) t -> 'error Bin_prot.Type_class.tval implement : ('query, 'state, 'update, 'error) t -> ('connection_state -> 'query -> ('state * 'update Async_kernel.Pipe.Reader.t, 'error) Core_kernel.Result.t Async_kernel.Deferred.t) -> 'connection_state Async_rpc_kernel__Rpc.Implementation.tval dispatch : ('query, 'state, 'update, 'error) t -> Async_rpc_kernel__Rpc.Connection.t -> 'query -> ('state * 'update Async_kernel.Pipe.Reader.t * Metadata.t, 'error) Core_kernel.Result.t Core_kernel.Or_error.t Async_kernel.Deferred.tval abort : (_, _, _, _) t -> Async_rpc_kernel__Rpc.Connection.t -> Id.t -> unitval close_reason : Metadata.t -> Async_rpc_kernel__Rpc.Pipe_close_reason.t Async_kernel.Deferred.tval client_pushes_back : (_, _, _, _) t -> boolval name : (_, _, _, _) t -> stringval version : (_, _, _, _) t -> intval description : (_, _, _, _) t -> Async_rpc_kernel__Rpc.Description.t