Module Belt_internalMapString

type key = string;
module A = Belt_Array;
module S = Belt_SortArray;
type t('a) = N.t(key, 'a);
let add: N.t(key, 'a) => key => 'b => N.t(key, 'c);
let get: N.t(key, 'a) => key => option('b);
let getUndefined: N.t(key, 'a) => key => Js_undefined.t('b);
let getExn: N.t(key, 'a) => key => 'b;
let getWithDefault: N.t(key, 'a) => key => 'b => 'c;
let has: N.t(key, 'a) => key => bool;
let remove: N.t(key, 'a) => key => N.t(key, 'a);
let splitAux: key => N.node(key, 'a) => (t('b), option('c), t('d));
let split: key => option(N.node(key, 'a)) => (t('a), option('b), t('a));
let mergeU: N.t(key, 'a) => t('b) => Js.Fn.arity3((key => option('c) => option('b) => option('d))) => N.t(key, 'e);
let merge: N.t(key, 'a) => t('b) => (key => option('a) => option('b) => option('c)) => N.t(key, 'c);
let compareAux: list(N.node(key, 'a)) => list(N.node(key, 'b)) => Js.Fn.arity2(('c => 'd => int)) => int;
let cmpU: N.t(key, 'a) => N.t(key, 'b) => Js.Fn.arity2(('c => 'd => int)) => int;
let cmp: N.t(key, 'a) => N.t(key, 'b) => ('c => 'd => int) => int;
let eqAux: list(N.node(key, 'a)) => list(N.node(key, 'b)) => Js.Fn.arity2(('c => 'd => bool)) => bool;
let eqU: N.t(key, 'a) => N.t(key, 'b) => Js.Fn.arity2(('c => 'd => bool)) => bool;
let eq: N.t(key, 'a) => N.t(key, 'b) => ('c => 'd => bool) => bool;
let addMutate: t('a) => key => 'b => t('c);
let fromArray: array((key, 'a)) => N.t(key, 'b);