sig
  type version = int * int
  val decode_version : string -> Webs.HTTP.version option
  val encode_version : Webs.HTTP.version -> string
  val pp_version : Format.formatter -> Webs.HTTP.version -> unit
  type meth =
      [ `CONNECT
      | `DELETE
      | `GET
      | `HEAD
      | `OPTIONS
      | `Other of string
      | `PATCH
      | `POST
      | `PUT
      | `TRACE ]
  val decode_meth : string -> Webs.HTTP.meth option
  val encode_meth : Webs.HTTP.meth -> string
  val pp_meth : Format.formatter -> Webs.HTTP.meth -> unit
  type headers
  val pp_headers : Format.formatter -> Webs.HTTP.headers -> unit
  module H :
    sig
      type name
      val name : string -> Webs.HTTP.H.name
      val name_equal : Webs.HTTP.H.name -> Webs.HTTP.H.name -> bool
      val decode_name : string -> Webs.HTTP.H.name option
      val encode_name : Webs.HTTP.H.name -> string
      val pp_name : Format.formatter -> Webs.HTTP.H.name -> unit
      val empty : Webs.HTTP.headers
      val is_empty : Webs.HTTP.headers -> bool
      val is_def : Webs.HTTP.H.name -> Webs.HTTP.headers -> bool
      val undef : Webs.HTTP.H.name -> Webs.HTTP.headers -> Webs.HTTP.headers
      val def :
        Webs.HTTP.H.name -> string -> Webs.HTTP.headers -> Webs.HTTP.headers
      val redef :
        Webs.HTTP.H.name ->
        (string option -> string option) ->
        Webs.HTTP.headers -> Webs.HTTP.headers
      val def_if_undef :
        Webs.HTTP.H.name -> string -> Webs.HTTP.headers -> Webs.HTTP.headers
      val find : Webs.HTTP.H.name -> Webs.HTTP.headers -> string option
      val get : Webs.HTTP.H.name -> Webs.HTTP.headers -> string
      val def_multi :
        Webs.HTTP.H.name ->
        string list -> Webs.HTTP.headers -> Webs.HTTP.headers
      val redef_multi :
        Webs.HTTP.H.name ->
        (string list option -> string list option) ->
        Webs.HTTP.headers -> Webs.HTTP.headers
      val def_if_undef_multi :
        Webs.HTTP.H.name ->
        string list -> Webs.HTTP.headers -> Webs.HTTP.headers
      val find_multi :
        Webs.HTTP.H.name -> Webs.HTTP.headers -> string list option
      val get_multi : Webs.HTTP.H.name -> Webs.HTTP.headers -> string list
      val fold :
        (Webs.HTTP.H.name -> string list -> '-> 'a) ->
        Webs.HTTP.headers -> '-> 'a
      val iter :
        (Webs.HTTP.H.name -> string list -> unit) ->
        Webs.HTTP.headers -> unit
      val for_all :
        (Webs.HTTP.H.name -> string list -> bool) ->
        Webs.HTTP.headers -> bool
      val exists :
        (Webs.HTTP.H.name -> string list -> bool) ->
        Webs.HTTP.headers -> bool
      val keep_if :
        (Webs.HTTP.H.name -> string list -> bool) ->
        Webs.HTTP.headers -> Webs.HTTP.headers
      val partition :
        (Webs.HTTP.H.name -> string list -> bool) ->
        Webs.HTTP.headers -> Webs.HTTP.headers * Webs.HTTP.headers
      val bindings :
        Webs.HTTP.headers -> (Webs.HTTP.H.name * string list) list
      val cardinal : Webs.HTTP.headers -> int
      val decode_multi_value : string -> string list
      val encode_multi_value : string list -> string
      val accept : Webs.HTTP.H.name
      val accept_charset : Webs.HTTP.H.name
      val accept_encoding : Webs.HTTP.H.name
      val accept_language : Webs.HTTP.H.name
      val accept_ranges : Webs.HTTP.H.name
      val age : Webs.HTTP.H.name
      val allow : Webs.HTTP.H.name
      val authorization : Webs.HTTP.H.name
      val cache_control : Webs.HTTP.H.name
      val connection : Webs.HTTP.H.name
      val content_encoding : Webs.HTTP.H.name
      val content_language : Webs.HTTP.H.name
      val content_length : Webs.HTTP.H.name
      val content_location : Webs.HTTP.H.name
      val content_range : Webs.HTTP.H.name
      val content_type : Webs.HTTP.H.name
      val cookie : Webs.HTTP.H.name
      val date : Webs.HTTP.H.name
      val etag : Webs.HTTP.H.name
      val expect : Webs.HTTP.H.name
      val expires : Webs.HTTP.H.name
      val from : Webs.HTTP.H.name
      val host : Webs.HTTP.H.name
      val if_match : Webs.HTTP.H.name
      val if_modified_since : Webs.HTTP.H.name
      val if_none_match : Webs.HTTP.H.name
      val if_range : Webs.HTTP.H.name
      val if_unmodified_since : Webs.HTTP.H.name
      val last_modified : Webs.HTTP.H.name
      val location : Webs.HTTP.H.name
      val max_forwards : Webs.HTTP.H.name
      val pragma : Webs.HTTP.H.name
      val proxy_authenticate : Webs.HTTP.H.name
      val proxy_authorization : Webs.HTTP.H.name
      val range : Webs.HTTP.H.name
      val referer : Webs.HTTP.H.name
      val retry_after : Webs.HTTP.H.name
      val server : Webs.HTTP.H.name
      val set_cookie : Webs.HTTP.H.name
      val te : Webs.HTTP.H.name
      val trailer : Webs.HTTP.H.name
      val transfer_encoding : Webs.HTTP.H.name
      val upgrade : Webs.HTTP.H.name
      val user_agent : Webs.HTTP.H.name
      val vary : Webs.HTTP.H.name
      val via : Webs.HTTP.H.name
      val warning : Webs.HTTP.H.name
      val www_authenticate : Webs.HTTP.H.name
    end
  type status = int
  val status_reason_phrase : Webs.HTTP.status -> string
  val pp_status : Format.formatter -> Webs.HTTP.status -> unit
  val s100_continue : Webs.HTTP.status
  val s101_switching_protocols : Webs.HTTP.status
  val s200_ok : Webs.HTTP.status
  val s201_created : Webs.HTTP.status
  val s202_accepted : Webs.HTTP.status
  val s203_non_authoritative_information : Webs.HTTP.status
  val s204_no_content : Webs.HTTP.status
  val s205_reset_content : Webs.HTTP.status
  val s206_partial_content : Webs.HTTP.status
  val s300_multiple_choices : Webs.HTTP.status
  val s301_moved_permanently : Webs.HTTP.status
  val s302_found : Webs.HTTP.status
  val s303_see_other : Webs.HTTP.status
  val s304_not_modified : Webs.HTTP.status
  val s305_use_proxy : Webs.HTTP.status
  val s307_temporary_redirect : Webs.HTTP.status
  val s400_bad_request : Webs.HTTP.status
  val s401_unauthorized : Webs.HTTP.status
  val s402_payement_required : Webs.HTTP.status
  val s403_forbidden : Webs.HTTP.status
  val s404_not_found : Webs.HTTP.status
  val s405_not_allowed : Webs.HTTP.status
  val s406_not_acceptable : Webs.HTTP.status
  val s407_proxy_authentication_required : Webs.HTTP.status
  val s408_request_time_out : Webs.HTTP.status
  val s409_conflict : Webs.HTTP.status
  val s410_gone : Webs.HTTP.status
  val s411_length_required : Webs.HTTP.status
  val s412_precondition_failed : Webs.HTTP.status
  val s413_payload_too_large : Webs.HTTP.status
  val s414_uri_too_long : Webs.HTTP.status
  val s415_unsupported_media_type : Webs.HTTP.status
  val s416_range_not_satisfiable : Webs.HTTP.status
  val s417_expectation_failed : Webs.HTTP.status
  val s426_upgrade_required : Webs.HTTP.status
  val s500_server_error : Webs.HTTP.status
  val s501_not_implemented : Webs.HTTP.status
  val s502_bad_gateway : Webs.HTTP.status
  val s503_service_unavailable : Webs.HTTP.status
  val s504_gateway_time_out : Webs.HTTP.status
  val s505_http_version_not_supported : Webs.HTTP.status
  type path = string list
  val decode_path : string -> Webs.HTTP.path option
  val encode_path : Webs.HTTP.path -> string
  val pp_path :
    ?human:bool -> unit -> Format.formatter -> Webs.HTTP.path -> unit
  val decode_digits : string -> int option
  val encode_digits : int -> string
  val is_token : string -> bool
end