Module Gluten

module type RUNTIME = sig ... end
type 't runtime = (module RUNTIME with type t = 't)
type impl
val make : 't runtime -> 't -> impl
module Reqd : sig ... end
module Server : sig ... end
module Client : sig ... end
type 'reqd reqd = private 'reqd Reqd.t = {
  1. reqd : 'reqd;
  2. upgrade : impl -> unit;
}
module Buffer : sig ... end