sig
  module Http :
    sig
      type meth =
          [ `CONNECT
          | `DELETE
          | `GET
          | `HEAD
          | `OPTIONS
          | `Other of string
          | `PATCH
          | `POST
          | `PUT
          | `TRACE ]
      val meth_to_string : B0_web.Http.meth -> string
      type headers = (string * string) list
      type req
      val req :
        ?headers:B0_web.Http.headers ->
        ?body:string -> uri:string -> B0_web.Http.meth -> B0_web.Http.req
      val req_uri : B0_web.Http.req -> string
      val req_meth : B0_web.Http.req -> B0_web.Http.meth
      val req_headers : B0_web.Http.req -> B0_web.Http.headers
      val req_body : B0_web.Http.req -> string
      type resp
      val resp_headers : B0_web.Http.resp -> B0_web.Http.headers
      val resp_status : B0_web.Http.resp -> int
      val resp_body : B0_web.Http.resp -> string
      type t
      val curl :
        ?docs:string ->
        ?env:Cmdliner.Arg.env -> unit -> B0_std.Cmd.t Cmdliner.Term.t
      val find_curl :
        ?search:B0_std.Fpath.t list ->
        curl:B0_std.Cmd.t -> unit -> (B0_web.Http.t, string) Stdlib.result
      val perform :
        ?follow:bool ->
        B0_web.Http.t ->
        B0_web.Http.req -> (B0_web.Http.resp, string) Stdlib.result
    end
  module Htmlg :
    sig
      module Att :
        sig
          type name = string
          type t
          val v : B0_web.Htmlg.Att.name -> string -> B0_web.Htmlg.Att.t
          val add_if :
            bool ->
            B0_web.Htmlg.Att.t ->
            B0_web.Htmlg.Att.t list -> B0_web.Htmlg.Att.t list
          val add_some :
            B0_web.Htmlg.Att.name ->
            string option ->
            B0_web.Htmlg.Att.t list -> B0_web.Htmlg.Att.t list
          type 'a cons = '-> B0_web.Htmlg.Att.t
          val autofocus : B0_web.Htmlg.Att.t
          val charset : string B0_web.Htmlg.Att.cons
          val checked : B0_web.Htmlg.Att.t
          val class' : string B0_web.Htmlg.Att.cons
          val content : string B0_web.Htmlg.Att.cons
          val disabled : B0_web.Htmlg.Att.t
          val for' : string B0_web.Htmlg.Att.cons
          val height : int B0_web.Htmlg.Att.cons
          val href : string B0_web.Htmlg.Att.cons
          val id : string B0_web.Htmlg.Att.cons
          val media : string B0_web.Htmlg.Att.cons
          val name : string B0_web.Htmlg.Att.cons
          val placeholder : string B0_web.Htmlg.Att.cons
          val rel : string B0_web.Htmlg.Att.cons
          val src : string B0_web.Htmlg.Att.cons
          val tabindex : int B0_web.Htmlg.Att.cons
          val title : string B0_web.Htmlg.Att.cons
          val type' : string B0_web.Htmlg.Att.cons
          val value : string B0_web.Htmlg.Att.cons
          val width : int B0_web.Htmlg.Att.cons
        end
      module El :
        sig
          type name = string
          type child
          val v :
            B0_web.Htmlg.El.name ->
            ?a:B0_web.Htmlg.Att.t list ->
            B0_web.Htmlg.El.child list -> B0_web.Htmlg.El.child
          val txt : string -> B0_web.Htmlg.El.child
          val splice : B0_web.Htmlg.El.child list -> B0_web.Htmlg.El.child
          val raw : string -> B0_web.Htmlg.El.child
          val buffer_add :
            doc_type:bool -> Stdlib.Buffer.t -> B0_web.Htmlg.El.child -> unit
          val to_string : doc_type:bool -> B0_web.Htmlg.El.child -> string
          type cons =
              ?a:B0_web.Htmlg.Att.t list ->
              B0_web.Htmlg.El.child list -> B0_web.Htmlg.El.child
          type void_cons = a:B0_web.Htmlg.Att.t list -> B0_web.Htmlg.El.child
          val a : B0_web.Htmlg.El.cons
          val abbr : B0_web.Htmlg.El.cons
          val address : B0_web.Htmlg.El.cons
          val area : B0_web.Htmlg.El.void_cons
          val article : B0_web.Htmlg.El.cons
          val aside : B0_web.Htmlg.El.cons
          val audio : B0_web.Htmlg.El.cons
          val b : B0_web.Htmlg.El.cons
          val base : B0_web.Htmlg.El.void_cons
          val bdi : B0_web.Htmlg.El.cons
          val bdo : B0_web.Htmlg.El.cons
          val blockquote : B0_web.Htmlg.El.cons
          val body : B0_web.Htmlg.El.cons
          val br : B0_web.Htmlg.El.void_cons
          val button : B0_web.Htmlg.El.cons
          val canvas : B0_web.Htmlg.El.cons
          val caption : B0_web.Htmlg.El.cons
          val cite : B0_web.Htmlg.El.cons
          val code : B0_web.Htmlg.El.cons
          val col : B0_web.Htmlg.El.void_cons
          val colgroup : B0_web.Htmlg.El.cons
          val command : B0_web.Htmlg.El.cons
          val datalist : B0_web.Htmlg.El.cons
          val dd : B0_web.Htmlg.El.cons
          val del : B0_web.Htmlg.El.cons
          val details : B0_web.Htmlg.El.cons
          val dfn : B0_web.Htmlg.El.cons
          val div : B0_web.Htmlg.El.cons
          val dl : B0_web.Htmlg.El.cons
          val dt : B0_web.Htmlg.El.cons
          val em : B0_web.Htmlg.El.cons
          val embed : B0_web.Htmlg.El.void_cons
          val fieldset : B0_web.Htmlg.El.cons
          val figcaption : B0_web.Htmlg.El.cons
          val figure : B0_web.Htmlg.El.cons
          val footer : B0_web.Htmlg.El.cons
          val form : B0_web.Htmlg.El.cons
          val h1 : B0_web.Htmlg.El.cons
          val h2 : B0_web.Htmlg.El.cons
          val h3 : B0_web.Htmlg.El.cons
          val h4 : B0_web.Htmlg.El.cons
          val h5 : B0_web.Htmlg.El.cons
          val h6 : B0_web.Htmlg.El.cons
          val head : B0_web.Htmlg.El.cons
          val header : B0_web.Htmlg.El.cons
          val hgroup : B0_web.Htmlg.El.cons
          val hr : B0_web.Htmlg.El.void_cons
          val html : B0_web.Htmlg.El.cons
          val i : B0_web.Htmlg.El.cons
          val iframe : B0_web.Htmlg.El.cons
          val img : B0_web.Htmlg.El.void_cons
          val input : B0_web.Htmlg.El.void_cons
          val ins : B0_web.Htmlg.El.cons
          val kbd : B0_web.Htmlg.El.cons
          val keygen : B0_web.Htmlg.El.cons
          val label : B0_web.Htmlg.El.cons
          val legend : B0_web.Htmlg.El.cons
          val li : B0_web.Htmlg.El.cons
          val link : B0_web.Htmlg.El.void_cons
          val map : B0_web.Htmlg.El.cons
          val mark : B0_web.Htmlg.El.cons
          val menu : B0_web.Htmlg.El.cons
          val meta : B0_web.Htmlg.El.void_cons
          val meter : B0_web.Htmlg.El.cons
          val nav : B0_web.Htmlg.El.cons
          val noscript : B0_web.Htmlg.El.cons
          val object' : B0_web.Htmlg.El.cons
          val ol : B0_web.Htmlg.El.cons
          val optgroup : B0_web.Htmlg.El.cons
          val option : B0_web.Htmlg.El.cons
          val output : B0_web.Htmlg.El.cons
          val p : B0_web.Htmlg.El.cons
          val param : B0_web.Htmlg.El.void_cons
          val pre : B0_web.Htmlg.El.cons
          val progress : B0_web.Htmlg.El.cons
          val q : B0_web.Htmlg.El.cons
          val rp : B0_web.Htmlg.El.cons
          val rt : B0_web.Htmlg.El.cons
          val ruby : B0_web.Htmlg.El.cons
          val s : B0_web.Htmlg.El.cons
          val samp : B0_web.Htmlg.El.cons
          val script : B0_web.Htmlg.El.cons
          val section : B0_web.Htmlg.El.cons
          val select : B0_web.Htmlg.El.cons
          val small : B0_web.Htmlg.El.cons
          val source : B0_web.Htmlg.El.void_cons
          val span : B0_web.Htmlg.El.cons
          val strong : B0_web.Htmlg.El.cons
          val style : B0_web.Htmlg.El.cons
          val sub : B0_web.Htmlg.El.cons
          val summary : B0_web.Htmlg.El.cons
          val sup : B0_web.Htmlg.El.cons
          val table : B0_web.Htmlg.El.cons
          val tbody : B0_web.Htmlg.El.cons
          val td : B0_web.Htmlg.El.cons
          val textarea : B0_web.Htmlg.El.cons
          val tfoot : B0_web.Htmlg.El.cons
          val th : B0_web.Htmlg.El.cons
          val thead : B0_web.Htmlg.El.cons
          val time : B0_web.Htmlg.El.cons
          val title : B0_web.Htmlg.El.cons
          val tr : B0_web.Htmlg.El.cons
          val track : B0_web.Htmlg.El.void_cons
          val u : B0_web.Htmlg.El.cons
          val ul : B0_web.Htmlg.El.cons
          val var : B0_web.Htmlg.El.cons
          val video : B0_web.Htmlg.El.cons
          val wbr : B0_web.Htmlg.El.void_cons
        end
    end
  module Json :
    sig
      type t =
          [ `A of B0_web.Json.t list
          | `Bool of bool
          | `Float of float
          | `Null
          | `O of (string * B0_web.Json.t) list
          | `String of string ]
      val of_string : string -> (B0_web.Json.t, string) Stdlib.result
      val to_string : B0_web.Json.t -> string
    end
  module Jsong :
    sig
      type t
      val null : B0_web.Jsong.t
      val bool : bool -> B0_web.Jsong.t
      val int : int -> B0_web.Jsong.t
      val float : float -> B0_web.Jsong.t
      val string : string -> B0_web.Jsong.t
      type arr
      val arr : B0_web.Jsong.arr
      val arr_end : B0_web.Jsong.arr -> B0_web.Jsong.t
      val el : B0_web.Jsong.t -> B0_web.Jsong.arr -> B0_web.Jsong.arr
      val el_if :
        bool ->
        (unit -> B0_web.Jsong.t) -> B0_web.Jsong.arr -> B0_web.Jsong.arr
      type obj
      val obj : B0_web.Jsong.obj
      val obj_end : B0_web.Jsong.obj -> B0_web.Jsong.t
      val mem :
        string -> B0_web.Jsong.t -> B0_web.Jsong.obj -> B0_web.Jsong.obj
      val mem_if :
        bool ->
        string ->
        (unit -> B0_web.Jsong.t) -> B0_web.Jsong.obj -> B0_web.Jsong.obj
      val json : B0_web.Json.t -> B0_web.Jsong.t
      val path : B0_std.Fpath.t -> B0_web.Jsong.t
      val cmd : B0_std.Cmd.t -> B0_web.Jsong.t
      val list : ('-> B0_web.Jsong.t) -> 'a list -> B0_web.Jsong.t
      val strf :
        ('a, Stdlib.Format.formatter, unit, B0_web.Jsong.t) Stdlib.format4 ->
        'a
      val buffer_add : Stdlib.Buffer.t -> B0_web.Jsong.t -> unit
      val to_string : B0_web.Jsong.t -> string
    end
  module Jsonq :
    sig
      type 'a t
      val null : unit B0_web.Jsonq.t
      val nullable : 'B0_web.Jsonq.t -> 'a option B0_web.Jsonq.t
      val bool : bool B0_web.Jsonq.t
      val int : int B0_web.Jsonq.t
      val float : float B0_web.Jsonq.t
      val string : string B0_web.Jsonq.t
      val array : 'B0_web.Jsonq.t -> 'a list B0_web.Jsonq.t
      val mem :
        string ->
        'B0_web.Jsonq.t -> ('-> 'b) B0_web.Jsonq.t -> 'B0_web.Jsonq.t
      val mem_opt :
        string ->
        'B0_web.Jsonq.t ->
        ('a option -> 'b) B0_web.Jsonq.t -> 'B0_web.Jsonq.t
      val obj : '-> 'B0_web.Jsonq.t
      val json : B0_web.Json.t B0_web.Jsonq.t
      val get : '-> 'a
      val sel : string -> 'B0_web.Jsonq.t -> 'B0_web.Jsonq.t
      val query :
        'B0_web.Jsonq.t -> B0_web.Json.t -> ('a, string) Stdlib.result
    end
end