import { Comparable } from '../Basics'; import Maybe from '../Maybe'; import { Cast } from './Dict'; export interface Dict { 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; } export declare namespace Dict { type Key = string | number | Date | Comparable; const empty: Dict; const singleton: (key: K, value: T) => Dict, T>; function fromList(pairs: Array<[K, T]>): Dict, T>; function fromList(toKey: (item: P) => K, toValue: (item: P) => T, items: Array

): Dict, T>; } export declare type Key = Dict.Key; export declare const empty: Dict; export declare const singleton: (key: K, value: T) => Dict, T>; export declare const fromList: typeof Dict.fromList; export default Dict;