type t(!'a) = Stdlib.Hashtbl.Make(T).t('a);
let create: int => t('a);
let clear: t('a) => unit;
let reset: t('a) => unit;
let copy: t('a) => t('a);
let add: t('a) => key => 'a => unit;
let remove: t('a) => key => unit;
let find: t('a) => key => 'a;
let find_opt: t('a) => key => option('a);
let find_all: t('a) => key => list('a);
let replace: t('a) => key => 'a => unit;
let mem: t('a) => key => bool;
let iter: (key => 'a => unit) => t('a) => unit;
let filter_map_inplace: (key => 'a => option('a)) => t('a) => unit;
let fold: (key => 'a => 'acc => 'acc) => t('a) => 'acc => 'acc;
let length: t('a) => int;
let stats: t('a) => Stdlib__Hashtbl.statistics;
let to_seq: t('a) => Stdlib.Seq.t((key, 'a));
let to_seq_keys: t('a) => Stdlib.Seq.t(key);
let to_seq_values: t('a) => Stdlib.Seq.t('a);
let add_seq: t('a) => Stdlib.Seq.t((key, 'a)) => unit;
let replace_seq: t('a) => Stdlib.Seq.t((key, 'a)) => unit;
let of_seq: Stdlib.Seq.t((key, 'a)) => t('a);
let to_list: t('a) => list((T.t, 'a));
let of_list: list((T.t, 'a)) => t('a);
let to_map: t('a) => Stdlib.Map.Make(T).t('a);
let of_map: Stdlib.Map.Make(T).t('a) => t('a);
let memoize: t('a) => (key => 'a) => key => 'a;
let map: t('a) => ('a => 'b) => t('b);