export declare module collections { function lookup(collection: { [keys: string]: T; }, key: string): T | null; function insert(collection: { [keys: string]: T; }, key: string, value: T): void; function lookupOrInsert(collection: { [keys: string]: T; }, key: string, value: T): T; function forEach(collection: { [keys: string]: T; }, callback: (entry: { key: string; value: T; }) => void): void; function contains(collection: { [keys: string]: any; }, key: string): boolean; } export declare module strings { /** * The empty string. The one and only. */ const empty = ""; const eolUnix = "\r\n"; function format(value: string, ...rest: any[]): string; } export declare module graph { interface Node { data: T; incoming: { [key: string]: Node; }; outgoing: { [key: string]: Node; }; } function newNode(data: T): Node; class Graph { private _hashFn; private _nodes; constructor(_hashFn: (element: T) => string); traverse(start: T, inwards: boolean, callback: (data: T) => void): void; private _traverse; inertEdge(from: T, to: T): void; removeNode(data: T): void; lookupOrInsertNode(data: T): Node; lookup(data: T): Node | null; } }