interface IHashtable { put(key: TKey, value: TValue): TValue; putAll( hashtable: IHashtable, conflictCallback?: (key: TKey, thisValue: TValue, value: TValue) => TValue, ): void; get(key: TKey): TValue; containsKey(key: TKey): boolean; containsValue(value: TValue): boolean; clear(): void; isEmpty(): boolean; keys(): TKey[]; values(): TValue[]; entries(): any[][]; remove(key: TKey): TValue; size(): number; clone(): IHashtable; each(callback: (key: TKey, value: TValue) => void): void; equals(hashtable: IHashtable): boolean; toQueryString(): string; } interface IHashtableOptions { hashCode?: ((key: TKey) => any) | undefined; equals?: ((key1: TKey, key2: TKey) => boolean) | undefined; replaceDuplicateKey?: boolean | undefined; } interface IHashtableStatic { new(): IHashtable; new(options: IHashtableOptions): IHashtable; new( hashCode?: (value: TValue) => any, equals?: (value1: TValue, value2: TValue) => boolean, ): IHashtable; } declare var Hashtable: IHashtableStatic; declare module "hashtable" { export = Hashtable; }