// Type definitions for jshashtable 3.0
// Project: http://www.timdown.co.uk/jshashtable/
// Definitions by: Sergey Gerasimov
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
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;
equals?: (key1: TKey, key2: TKey) => boolean;
replaceDuplicateKey?: boolean;
}
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;
}