--- /dev/null
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+
+
+/// <reference no-default-lib="true"/>\r
+
+
+interface Map<K, V> {\r
+ clear(): void;\r
+ delete(key: K): boolean;\r
+ forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;\r
+ get(key: K): V | undefined;\r
+ has(key: K): boolean;\r
+ set(key: K, value: V): this;\r
+ readonly size: number;\r
+}\r
+\r
+interface MapConstructor {\r
+ new(): Map<any, any>;\r
+ new<K, V>(entries?: readonly (readonly [K, V])[] | null): Map<K, V>;\r
+ readonly prototype: Map<any, any>;\r
+}\r
+declare var Map: MapConstructor;\r
+\r
+interface ReadonlyMap<K, V> {\r
+ forEach(callbackfn: (value: V, key: K, map: ReadonlyMap<K, V>) => void, thisArg?: any): void;\r
+ get(key: K): V | undefined;\r
+ has(key: K): boolean;\r
+ readonly size: number;\r
+}\r
+\r
+interface WeakMap<K extends object, V> {\r
+ delete(key: K): boolean;\r
+ get(key: K): V | undefined;\r
+ has(key: K): boolean;\r
+ set(key: K, value: V): this;\r
+}\r
+\r
+interface WeakMapConstructor {\r
+ new <K extends object = object, V = any>(entries?: readonly [K, V][] | null): WeakMap<K, V>;\r
+ readonly prototype: WeakMap<object, any>;\r
+}\r
+declare var WeakMap: WeakMapConstructor;\r
+\r
+interface Set<T> {\r
+ add(value: T): this;\r
+ clear(): void;\r
+ delete(value: T): boolean;\r
+ forEach(callbackfn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void;\r
+ has(value: T): boolean;\r
+ readonly size: number;\r
+}\r
+\r
+interface SetConstructor {\r
+ new <T = any>(values?: readonly T[] | null): Set<T>;\r
+ readonly prototype: Set<any>;\r
+}\r
+declare var Set: SetConstructor;\r
+\r
+interface ReadonlySet<T> {\r
+ forEach(callbackfn: (value: T, value2: T, set: ReadonlySet<T>) => void, thisArg?: any): void;\r
+ has(value: T): boolean;\r
+ readonly size: number;\r
+}\r
+\r
+interface WeakSet<T extends object> {\r
+ add(value: T): this;\r
+ delete(value: T): boolean;\r
+ has(value: T): boolean;\r
+}\r
+\r
+interface WeakSetConstructor {\r
+ new <T extends object = object>(values?: readonly T[] | null): WeakSet<T>;\r
+ readonly prototype: WeakSet<object>;\r
+}\r
+declare var WeakSet: WeakSetConstructor;\r