sig
  module StringMap :
    sig
      type key = string
      type +!'a t
      val empty : 'a t
      val is_empty : 'a t -> bool
      val mem : key -> 'a t -> bool
      val add : key -> '-> 'a t -> 'a t
      val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
      val singleton : key -> '-> 'a t
      val remove : key -> 'a t -> 'a t
      val merge :
        (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
      val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t
      val compare : ('-> '-> int) -> 'a t -> 'a t -> int
      val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
      val iter : (key -> '-> unit) -> 'a t -> unit
      val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
      val for_all : (key -> '-> bool) -> 'a t -> bool
      val exists : (key -> '-> bool) -> 'a t -> bool
      val filter : (key -> '-> bool) -> 'a t -> 'a t
      val filter_map : (key -> '-> 'b option) -> 'a t -> 'b t
      val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t
      val cardinal : 'a t -> int
      val bindings : 'a t -> (key * 'a) list
      val min_binding : 'a t -> key * 'a
      val min_binding_opt : 'a t -> (key * 'a) option
      val max_binding : 'a t -> key * 'a
      val max_binding_opt : 'a t -> (key * 'a) option
      val choose : 'a t -> key * 'a
      val choose_opt : 'a t -> (key * 'a) option
      val split : key -> 'a t -> 'a t * 'a option * 'a t
      val find : key -> 'a t -> 'a
      val find_opt : key -> 'a t -> 'a option
      val find_first : (key -> bool) -> 'a t -> key * 'a
      val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
      val find_last : (key -> bool) -> 'a t -> key * 'a
      val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
      val map : ('-> 'b) -> 'a t -> 'b t
      val mapi : (key -> '-> 'b) -> 'a t -> 'b t
    end
  val application_rss_xml : string
  val application_x_www_form_urlencoded : string
  val application_xhtml_xml : string
  val multipart_form_data : string
  val text_html : string
  val text_plain : string
  val text_xml : string
  val encode_date : float -> string
  val decode_date : string -> float
  val encode_uri_path : string -> string
  val decode_uri_path : string -> string
  val encode_uri_query : string -> string
  val decode_uri_query : string -> string
  val encode_query_string : string Web.StringMap.t -> string
  val decode_query_string : string -> string Web.StringMap.t
  val decode_cookie : string -> string Web.StringMap.t
  type post_encoded = [ `multipart_form_data | `unknown | `urlencoded ]
  val decode_content_type : string -> Web.post_encoded
  val decode_multipart_form_data : string -> string Web.StringMap.t
  val header_see_other : (string -> int -> int -> unit) -> string -> unit
  val header_service_unavailable :
    (string -> int -> int -> unit) -> unit -> unit
  val header_content_type : (string -> int -> int -> unit) -> string -> unit
  val header_cookie :
    (string -> int -> int -> unit) ->
    ?expires:float -> string Web.StringMap.t -> unit
  val header_break : (string -> int -> int -> unit) -> unit -> unit
  type query_string_context
  val open_query_string :
    ?append:[ `path | `query ] ->
    (string -> int -> int -> unit) -> Web.query_string_context
  val close_query_string : Web.query_string_context -> unit
  val query_string_output_map :
    Web.query_string_context -> string Web.StringMap.t -> unit
  module CGI = Web.CGI
  module HTML = Web.HTML
  module Locking = Web.Locking
  module RSS = Web.RSS
  module Template = Web.Template
  module XML = Web.XML
end