sig
  type t
  val t_of_sexp : Sexplib.Sexp.t -> Uri.t
  val sexp_of_t : Uri.t -> Sexplib.Sexp.t
  type component =
      [ `Authority
      | `Fragment
      | `Host
      | `Path
      | `Query
      | `Query_key
      | `Query_value
      | `Scheme
      | `Userinfo ]
  val component_of_sexp : Sexplib.Sexp.t -> Uri.component
  val __component_of_sexp__ : Sexplib.Sexp.t -> Uri.component
  val sexp_of_component : Uri.component -> Sexplib.Sexp.t
  val empty : Uri.t
  val compare : Uri.t -> Uri.t -> int
  val equal : Uri.t -> Uri.t -> bool
  val pct_encode :
    ?scheme:string -> ?component:Uri.component -> string -> string
  val pct_decode : string -> string
  val of_string : string -> Uri.t
  val to_string : Uri.t -> string
  val resolve : string -> Uri.t -> Uri.t -> Uri.t
  val canonicalize : Uri.t -> Uri.t
  val make :
    ?scheme:string ->
    ?userinfo:string ->
    ?host:string ->
    ?port:int ->
    ?path:string ->
    ?query:(string * string list) list -> ?fragment:string -> unit -> Uri.t
  val query : Uri.t -> (string * string list) list
  val verbatim_query : Uri.t -> string option
  val encoded_of_query :
    ?scheme:string -> (string * string list) list -> string
  val query_of_encoded : string -> (string * string list) list
  val with_query : Uri.t -> (string * string list) list -> Uri.t
  val with_query' : Uri.t -> (string * string) list -> Uri.t
  val get_query_param' : Uri.t -> string -> string list option
  val get_query_param : Uri.t -> string -> string option
  val add_query_param : Uri.t -> string * string list -> Uri.t
  val add_query_param' : Uri.t -> string * string -> Uri.t
  val add_query_params : Uri.t -> (string * string list) list -> Uri.t
  val add_query_params' : Uri.t -> (string * string) list -> Uri.t
  val remove_query_param : Uri.t -> string -> Uri.t
  val path : Uri.t -> string
  val path_and_query : Uri.t -> string
  val with_path : Uri.t -> string -> Uri.t
  val scheme : Uri.t -> string option
  val with_scheme : Uri.t -> string option -> Uri.t
  val userinfo : Uri.t -> string option
  val with_userinfo : Uri.t -> string option -> Uri.t
  val user : Uri.t -> string option
  val password : Uri.t -> string option
  val with_password : Uri.t -> string option -> Uri.t
  val host : Uri.t -> string option
  val with_host : Uri.t -> string option -> Uri.t
  val host_with_default : ?default:string -> Uri.t -> string
  val port : Uri.t -> int option
  val with_port : Uri.t -> int option -> Uri.t
  val fragment : Uri.t -> string option
  val with_fragment : Uri.t -> string option -> Uri.t
  val pp_hum : Format.formatter -> Uri.t -> unit
end