sig
  type 'a t
  type key = string
  external get : 'Js_dict.t -> Js_dict.key -> 'a option = "" "BS-EXTERNAL"
  external unsafeGet : 'Js_dict.t -> Js_dict.key -> 'a = "" "BS-EXTERNAL"
  external set : 'Js_dict.t -> Js_dict.key -> '-> unit = "" "BS-EXTERNAL"
  external keys : 'Js_dict.t -> string array = "Object.keys" "BS-EXTERNAL"
  external empty : unit -> 'Js_dict.t = "" "BS-EXTERNAL"
  val unsafeDeleteKey : (string Js_dict.t -> string -> unit [@bs])
  val entries : 'Js_dict.t -> (Js_dict.key * 'a) array
  val values : 'Js_dict.t -> 'a array
  val fromList : (Js_dict.key * 'a) list -> 'Js_dict.t
  val fromArray : (Js_dict.key * 'a) array -> 'Js_dict.t
  val map : ('-> 'b [@bs]) -> 'Js_dict.t -> 'Js_dict.t
end