sig
  type ('key, 'value, 'id) t
  type ('key, 'id) cmp = ('key, 'id) Belt_Id.cmp
  val empty : ('k, 'v, 'id) Belt_MapDict.t
  val isEmpty : ('k, 'v, 'id) Belt_MapDict.t -> bool
  val has :
    ('k, 'a, 'id) Belt_MapDict.t ->
    '-> cmp:('k, 'id) Belt_MapDict.cmp -> bool
  val cmpU :
    ('k, 'v, 'id) Belt_MapDict.t ->
    ('k, 'v, 'id) Belt_MapDict.t ->
    kcmp:('k, 'id) Belt_MapDict.cmp -> vcmp:('-> '-> int [@bs]) -> int
  val cmp :
    ('k, 'v, 'id) Belt_MapDict.t ->
    ('k, 'v, 'id) Belt_MapDict.t ->
    kcmp:('k, 'id) Belt_MapDict.cmp -> vcmp:('-> '-> int) -> int
  val eqU :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('k, 'a, 'id) Belt_MapDict.t ->
    kcmp:('k, 'id) Belt_MapDict.cmp -> veq:('-> '-> bool [@bs]) -> bool
  val eq :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('k, 'a, 'id) Belt_MapDict.t ->
    kcmp:('k, 'id) Belt_MapDict.cmp -> veq:('-> '-> bool) -> bool
  val findFirstByU :
    ('k, 'v, 'id) Belt_MapDict.t ->
    ('-> '-> bool [@bs]) -> ('k * 'v) option
  val findFirstBy :
    ('k, 'v, 'id) Belt_MapDict.t -> ('-> '-> bool) -> ('k * 'v) option
  val forEachU :
    ('k, 'a, 'id) Belt_MapDict.t -> ('-> '-> unit [@bs]) -> unit
  val forEach : ('k, 'a, 'id) Belt_MapDict.t -> ('-> '-> unit) -> unit
  val reduceU :
    ('k, 'a, 'id) Belt_MapDict.t -> '-> ('-> '-> '-> 'b [@bs]) -> 'b
  val reduce :
    ('k, 'a, 'id) Belt_MapDict.t -> '-> ('-> '-> '-> 'b) -> 'b
  val everyU :
    ('k, 'a, 'id) Belt_MapDict.t -> ('-> '-> bool [@bs]) -> bool
  val every : ('k, 'a, 'id) Belt_MapDict.t -> ('-> '-> bool) -> bool
  val someU :
    ('k, 'a, 'id) Belt_MapDict.t -> ('-> '-> bool [@bs]) -> bool
  val some : ('k, 'a, 'id) Belt_MapDict.t -> ('-> '-> bool) -> bool
  val size : ('k, 'a, 'id) Belt_MapDict.t -> int
  val toList : ('k, 'a, 'id) Belt_MapDict.t -> ('k * 'a) list
  val toArray : ('k, 'a, 'id) Belt_MapDict.t -> ('k * 'a) array
  val fromArray :
    ('k * 'a) array ->
    cmp:('k, 'id) Belt_MapDict.cmp -> ('k, 'a, 'id) Belt_MapDict.t
  val keysToArray : ('k, 'a, 'id) Belt_MapDict.t -> 'k array
  val valuesToArray : ('k, 'a, 'id) Belt_MapDict.t -> 'a array
  val minKey : ('k, 'a, 'b) Belt_MapDict.t -> 'k option
  val minKeyUndefined : ('k, 'a, 'b) Belt_MapDict.t -> 'Js.undefined
  val maxKey : ('k, 'a, 'b) Belt_MapDict.t -> 'k option
  val maxKeyUndefined : ('k, 'a, 'b) Belt_MapDict.t -> 'Js.undefined
  val minimum : ('k, 'a, 'b) Belt_MapDict.t -> ('k * 'a) option
  val minUndefined : ('k, 'a, 'b) Belt_MapDict.t -> ('k * 'a) Js.undefined
  val maximum : ('k, 'a, 'b) Belt_MapDict.t -> ('k * 'a) option
  val maxUndefined : ('k, 'a, 'b) Belt_MapDict.t -> ('k * 'a) Js.undefined
  val get :
    ('k, 'a, 'id) Belt_MapDict.t ->
    '-> cmp:('k, 'id) Belt_MapDict.cmp -> 'a option
  val getUndefined :
    ('k, 'a, 'id) Belt_MapDict.t ->
    '-> cmp:('k, 'id) Belt_MapDict.cmp -> 'Js.undefined
  val getWithDefault :
    ('k, 'a, 'id) Belt_MapDict.t ->
    '-> '-> cmp:('k, 'id) Belt_MapDict.cmp -> 'a
  val getExn :
    ('k, 'a, 'id) Belt_MapDict.t ->
    '-> cmp:('k, 'id) Belt_MapDict.cmp -> 'a
  val checkInvariantInternal : ('a, 'b, 'c) Belt_MapDict.t -> unit
  val remove :
    ('a, 'b, 'id) Belt_MapDict.t ->
    '-> cmp:('a, 'id) Belt_MapDict.cmp -> ('a, 'b, 'id) Belt_MapDict.t
  val removeMany :
    ('a, 'b, 'id) Belt_MapDict.t ->
    'a array ->
    cmp:('a, 'id) Belt_MapDict.cmp -> ('a, 'b, 'id) Belt_MapDict.t
  val set :
    ('a, 'b, 'id) Belt_MapDict.t ->
    '->
    '-> cmp:('a, 'id) Belt_MapDict.cmp -> ('a, 'b, 'id) Belt_MapDict.t
  val updateU :
    ('a, 'b, 'id) Belt_MapDict.t ->
    '->
    ('b option -> 'b option [@bs]) ->
    cmp:('a, 'id) Belt_MapDict.cmp -> ('a, 'b, 'id) Belt_MapDict.t
  val update :
    ('a, 'b, 'id) Belt_MapDict.t ->
    '->
    ('b option -> 'b option) ->
    cmp:('a, 'id) Belt_MapDict.cmp -> ('a, 'b, 'id) Belt_MapDict.t
  val mergeU :
    ('a, 'b, 'id) Belt_MapDict.t ->
    ('a, 'c, 'id) Belt_MapDict.t ->
    ('-> 'b option -> 'c option -> 'd option [@bs]) ->
    cmp:('a, 'id) Belt_MapDict.cmp -> ('a, 'd, 'id) Belt_MapDict.t
  val merge :
    ('a, 'b, 'id) Belt_MapDict.t ->
    ('a, 'c, 'id) Belt_MapDict.t ->
    ('-> 'b option -> 'c option -> 'd option) ->
    cmp:('a, 'id) Belt_MapDict.cmp -> ('a, 'd, 'id) Belt_MapDict.t
  val mergeMany :
    ('a, 'b, 'id) Belt_MapDict.t ->
    ('a * 'b) array ->
    cmp:('a, 'id) Belt_MapDict.cmp -> ('a, 'b, 'id) Belt_MapDict.t
  val keepU :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('-> '-> bool [@bs]) -> ('k, 'a, 'id) Belt_MapDict.t
  val keep :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('-> '-> bool) -> ('k, 'a, 'id) Belt_MapDict.t
  val partitionU :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('-> '-> bool [@bs]) ->
    ('k, 'a, 'id) Belt_MapDict.t * ('k, 'a, 'id) Belt_MapDict.t
  val partition :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('-> '-> bool) ->
    ('k, 'a, 'id) Belt_MapDict.t * ('k, 'a, 'id) Belt_MapDict.t
  val split :
    ('a, 'b, 'id) Belt_MapDict.t ->
    '->
    cmp:('a, 'id) Belt_MapDict.cmp ->
    (('a, 'b, 'id) Belt_MapDict.t * ('a, 'b, 'id) Belt_MapDict.t) * 'b option
  val mapU :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('-> 'b [@bs]) -> ('k, 'b, 'id) Belt_MapDict.t
  val map :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('-> 'b) -> ('k, 'b, 'id) Belt_MapDict.t
  val mapWithKeyU :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('-> '-> 'b [@bs]) -> ('k, 'b, 'id) Belt_MapDict.t
  val mapWithKey :
    ('k, 'a, 'id) Belt_MapDict.t ->
    ('-> '-> 'b) -> ('k, 'b, 'id) Belt_MapDict.t
end