sig
  type mw_version = { mw_major : int; mw_minor : int; }
  val user_agent : string
  module Set :
    sig
      type 'a t
      type 'a enumerable = 'a t
      type 'a mappable = 'a t
      val empty : 'a t
      val create : ('-> '-> int) -> 'a t
      val singleton : ?cmp:('-> '-> int) -> '-> 'a t
      val is_empty : 'a t -> bool
      val mem : '-> 'a t -> bool
      val add : '-> 'a t -> 'a t
      val remove : '-> 'a t -> 'a t
      val iter : ('-> unit) -> 'a t -> unit
      val map : ('-> 'a) -> 'a t -> 'a t
      val filter_map : ('-> 'b option) -> 'a t -> 'b t
      val fold : ('-> '-> 'b) -> 'a t -> '-> 'b
      val exists : ('-> bool) -> 'a t -> bool
      val cardinal : 'a t -> int
      val choose : 'a t -> 'a
      val min_elt : 'a t -> 'a
      val max_elt : 'a t -> 'a
      val enum : 'a t -> 'BatEnum.t
      val of_enum : 'BatEnum.t -> 'a t
      val of_enum_cmp : cmp:('-> '-> int) -> 'BatEnum.t -> 'a t
      val of_list : 'a list -> 'a t
      val for_all : ('-> bool) -> 'a t -> bool
      val partition : ('-> bool) -> 'a t -> 'a t * 'a t
      val split : '-> 'a t -> 'a t * bool * 'a t
      val filter : ('-> bool) -> 'a t -> 'a t
      val pop : 'a t -> 'a * 'a t
      val union : 'a t -> 'a t -> 'a t
      val diff : 'a t -> 'a t -> 'a t
      val intersect : 'a t -> 'a t -> 'a t
      val subset : 'a t -> 'a t -> bool
      val print :
        ?first:string ->
        ?last:string ->
        ?sep:string ->
        ('BatInnerIO.output -> '-> unit) ->
        'BatInnerIO.output -> 'b t -> unit
    end
  module Map :
    sig
      type ('a, 'b) t
      val empty : ('a, 'b) t
      val is_empty : ('a, 'b) t -> bool
      val create : ('-> '-> int) -> ('a, 'b) t
      val singleton : ?cmp:('-> '-> int) -> '-> '-> ('a, 'b) t
      val cardinal : ('a, 'b) t -> int
      val add : '-> '-> ('a, 'b) t -> ('a, 'b) t
      val find : '-> ('a, 'b) t -> 'b
      val remove : '-> ('a, 'b) t -> ('a, 'b) t
      val mem : '-> ('a, 'b) t -> bool
      val exists : '-> ('a, 'b) t -> bool
      val iter : ('-> '-> unit) -> ('a, 'b) t -> unit
      val map : ('-> 'b) -> ('c, 'a) t -> ('c, 'b) t
      val mapi : ('-> '-> 'c) -> ('a, 'b) t -> ('a, 'c) t
      val fold : ('-> '-> 'b) -> ('c, 'a) t -> '-> 'b
      val foldi : ('-> '-> '-> 'c) -> ('a, 'b) t -> '-> 'c
      val filter : ('-> bool) -> ('b, 'a) t -> ('b, 'a) t
      val filteri : ('-> '-> bool) -> ('a, 'b) t -> ('a, 'b) t
      val filter_map : ('-> '-> 'c option) -> ('a, 'b) t -> ('a, 'c) t
      val choose : ('a, 'b) t -> 'a * 'b
      val min_binding : ('a, 'b) t -> 'a * 'b
      val max_binding : ('a, 'b) t -> 'a * 'b
      val enum : ('a, 'b) t -> ('a * 'b) BatEnum.t
      val backwards : ('a, 'b) t -> ('a * 'b) BatEnum.t
      val keys : ('a, 'b) t -> 'BatEnum.t
      val values : ('a, 'b) t -> 'BatEnum.t
      val of_enum :
        ?cmp:('-> '-> int) -> ('a * 'b) BatEnum.t -> ('a, 'b) t
      val for_all : ('-> '-> bool) -> ('a, 'b) t -> bool
      val exists_f : ('-> '-> bool) -> ('a, 'b) t -> bool
      val partition :
        ('-> '-> bool) -> ('a, 'b) t -> ('a, 'b) t * ('a, 'b) t
      val add_carry : '-> '-> ('a, 'b) t -> ('a, 'b) t * 'b option
      val modify : '-> ('-> 'b) -> ('a, 'b) t -> ('a, 'b) t
      val modify_def : '-> '-> ('-> 'a) -> ('b, 'a) t -> ('b, 'a) t
      val extract : '-> ('a, 'b) t -> 'b * ('a, 'b) t
      val pop : ('a, 'b) t -> ('a * 'b) * ('a, 'b) t
      val union : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t
      val diff : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t
      val intersect :
        ('-> '-> 'c) -> ('d, 'a) t -> ('d, 'b) t -> ('d, 'c) t
      val split : '-> ('a, 'b) t -> ('a, 'b) t * 'b option * ('a, 'b) t
      val merge :
        ('-> 'b option -> 'c option -> 'd option) ->
        ('a, 'b) t -> ('a, 'c) t -> ('a, 'd) t
      val merge_unsafe :
        ('-> 'b option -> 'c option -> 'd option) ->
        ('a, 'b) t -> ('a, 'c) t -> ('a, 'd) t
      module Exceptionless : sig val find : '-> ('a, 'b) t -> 'b option end
      module Infix :
        sig
          val ( --> ) : ('a, 'b) t -> '-> 'b
          val ( <-- ) : ('a, 'b) t -> 'a * '-> ('a, 'b) t
        end
      val bindings : ('a, 'b) t -> ('a * 'b) list
      val print :
        ?first:string ->
        ?last:string ->
        ?sep:string ->
        ('BatInnerIO.output -> '-> unit) ->
        ('BatInnerIO.output -> '-> unit) ->
        'BatInnerIO.output -> ('b, 'c) t -> unit
    end
end