import Maybe from '../Maybe'; import { Dict as IDict, Key } from './index'; export declare type Cast = K extends string ? string : K extends number ? number : K extends Date ? Date : K; export declare class Dict implements IDict { private readonly count; private readonly root; static empty: Dict; static singleton(key: K, value: T): Dict, T>; static fromList(toKey: (item: P) => K, toValue: (item: P) => T, items: Array

): Dict, T>; private constructor(); get(key: K): Maybe; min(): Maybe<[K, T]>; max(): Maybe<[K, T]>; member(key: K): boolean; insert(key: K, value: T): Dict; remove(key: K): Dict; update(key: K, fn: (value: Maybe) => Maybe): Dict; size(): number; isEmpty(): boolean; map(fn: (key: K, value: T) => R): Dict; filter(fn: (key: K, value: T) => boolean): Dict; partition(fn: (key: K, value: T) => boolean): [Dict, Dict]; foldl(fn: (key: K, value: T, acc: R) => R, acc: R): R; foldr(fn: (key: K, value: T, acc: R) => R, acc: R): R; union(another: Dict): Dict; intersect(another: Dict): Dict; diff(another: Dict): Dict; merge(onLeft: (key: K, left: T, acc: R) => R, onBoth: (key: K, left: T, right: D, acc: R) => R, onRight: (key: K, right: D, acc: R) => R, right: Dict, acc: R): R; keys(): Array; values(): Array; entries(): Array<[K, T]>; tap(fn: (that: Dict) => R): R; }