/*! *****************************************************************************
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.
***************************************************************************** */
/// 
/////////////////////////////
/// Window Iterable APIs
/////////////////////////////
interface AudioParam {
    setValueCurveAtTime(values: Iterable, startTime: number, duration: number): AudioParam;
}
interface AudioParamMap extends ReadonlyMap {
}
interface BaseAudioContext {
    createIIRFilter(feedforward: Iterable, feedback: Iterable): IIRFilterNode;
    createPeriodicWave(real: Iterable, imag: Iterable, constraints?: PeriodicWaveConstraints): PeriodicWave;
}
interface CSSRuleList {
    [Symbol.iterator](): IterableIterator;
}
interface CSSStyleDeclaration {
    [Symbol.iterator](): IterableIterator;
}
interface Cache {
    addAll(requests: Iterable): Promise;
}
interface CanvasPathDrawingStyles {
    setLineDash(segments: Iterable): void;
}
interface DOMRectList {
    [Symbol.iterator](): IterableIterator;
}
interface DOMStringList {
    [Symbol.iterator](): IterableIterator;
}
interface DOMTokenList {
    [Symbol.iterator](): IterableIterator;
    entries(): IterableIterator<[number, string]>;
    keys(): IterableIterator;
    values(): IterableIterator;
}
interface DataTransferItemList {
    [Symbol.iterator](): IterableIterator;
}
interface EventCounts extends ReadonlyMap {
}
interface FileList {
    [Symbol.iterator](): IterableIterator;
}
interface FontFaceSet extends Set {
}
interface FormData {
    [Symbol.iterator](): IterableIterator<[string, FormDataEntryValue]>;
    /** Returns an array of key, value pairs for every entry in the list. */
    entries(): IterableIterator<[string, FormDataEntryValue]>;
    /** Returns a list of keys in the list. */
    keys(): IterableIterator;
    /** Returns a list of values in the list. */
    values(): IterableIterator;
}
interface HTMLAllCollection {
    [Symbol.iterator](): IterableIterator;
}
interface HTMLCollectionBase {
    [Symbol.iterator](): IterableIterator;
}
interface HTMLCollectionOf {
    [Symbol.iterator](): IterableIterator;
}
interface HTMLFormElement {
    [Symbol.iterator](): IterableIterator;
}
interface HTMLSelectElement {
    [Symbol.iterator](): IterableIterator;
}
interface Headers {
    [Symbol.iterator](): IterableIterator<[string, string]>;
    /** Returns an iterator allowing to go through all key/value pairs contained in this object. */
    entries(): IterableIterator<[string, string]>;
    /** Returns an iterator allowing to go through all keys of the key/value pairs contained in this object. */
    keys(): IterableIterator;
    /** Returns an iterator allowing to go through all values of the key/value pairs contained in this object. */
    values(): IterableIterator;
}
interface IDBDatabase {
    /** Returns a new transaction with the given mode ("readonly" or "readwrite") and scope which can be a single object store name or an array of names. */
    transaction(storeNames: string | Iterable, mode?: IDBTransactionMode): IDBTransaction;
}
interface IDBObjectStore {
    /**
     * Creates a new index in store with the given name, keyPath and options and returns a new IDBIndex. If the keyPath and options define constraints that cannot be satisfied with the data already in store the upgrade transaction will abort with a "ConstraintError" DOMException.
     *
     * Throws an "InvalidStateError" DOMException if not called within an upgrade transaction.
     */
    createIndex(name: string, keyPath: string | Iterable, options?: IDBIndexParameters): IDBIndex;
}
interface MIDIInputMap extends ReadonlyMap {
}
interface MIDIOutput {
    send(data: Iterable, timestamp?: DOMHighResTimeStamp): void;
}
interface MIDIOutputMap extends ReadonlyMap {
}
interface MediaKeyStatusMap {
    [Symbol.iterator](): IterableIterator<[BufferSource, MediaKeyStatus]>;
    entries(): IterableIterator<[BufferSource, MediaKeyStatus]>;
    keys(): IterableIterator;
    values(): IterableIterator;
}
interface MediaList {
    [Symbol.iterator](): IterableIterator;
}
interface MessageEvent {
    /** @deprecated */
    initMessageEvent(type: string, bubbles?: boolean, cancelable?: boolean, data?: any, origin?: string, lastEventId?: string, source?: MessageEventSource | null, ports?: Iterable): void;
}
interface MimeTypeArray {
    [Symbol.iterator](): IterableIterator;
}
interface NamedNodeMap {
    [Symbol.iterator](): IterableIterator;
}
interface Navigator {
    /** Available only in secure contexts. */
    requestMediaKeySystemAccess(keySystem: string, supportedConfigurations: Iterable): Promise;
    vibrate(pattern: Iterable): boolean;
}
interface NodeList {
    [Symbol.iterator](): IterableIterator;
    /** Returns an array of key, value pairs for every entry in the list. */
    entries(): IterableIterator<[number, Node]>;
    /** Returns an list of keys in the list. */
    keys(): IterableIterator;
    /** Returns an list of values in the list. */
    values(): IterableIterator;
}
interface NodeListOf {
    [Symbol.iterator](): IterableIterator;
    /** Returns an array of key, value pairs for every entry in the list. */
    entries(): IterableIterator<[number, TNode]>;
    /** Returns an list of keys in the list. */
    keys(): IterableIterator;
    /** Returns an list of values in the list. */
    values(): IterableIterator;
}
interface Plugin {
    [Symbol.iterator](): IterableIterator;
}
interface PluginArray {
    [Symbol.iterator](): IterableIterator;
}
interface RTCRtpTransceiver {
    setCodecPreferences(codecs: Iterable): void;
}
interface RTCStatsReport extends ReadonlyMap {
}
interface SVGLengthList {
    [Symbol.iterator](): IterableIterator;
}
interface SVGNumberList {
    [Symbol.iterator](): IterableIterator;
}
interface SVGPointList {
    [Symbol.iterator](): IterableIterator;
}
interface SVGStringList {
    [Symbol.iterator](): IterableIterator;
}
interface SVGTransformList {
    [Symbol.iterator](): IterableIterator;
}
interface SourceBufferList {
    [Symbol.iterator](): IterableIterator;
}
interface SpeechRecognitionResult {
    [Symbol.iterator](): IterableIterator;
}
interface SpeechRecognitionResultList {
    [Symbol.iterator](): IterableIterator;
}
interface StyleSheetList {
    [Symbol.iterator](): IterableIterator;
}
interface SubtleCrypto {
    deriveKey(algorithm: AlgorithmIdentifier | EcdhKeyDeriveParams | HkdfParams | Pbkdf2Params, baseKey: CryptoKey, derivedKeyType: AlgorithmIdentifier | AesDerivedKeyParams | HmacImportParams | HkdfParams | Pbkdf2Params, extractable: boolean, keyUsages: Iterable): Promise;
    generateKey(algorithm: RsaHashedKeyGenParams | EcKeyGenParams, extractable: boolean, keyUsages: ReadonlyArray): Promise;
    generateKey(algorithm: AesKeyGenParams | HmacKeyGenParams | Pbkdf2Params, extractable: boolean, keyUsages: ReadonlyArray): Promise;
    generateKey(algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: Iterable): Promise;
    importKey(format: "jwk", keyData: JsonWebKey, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: ReadonlyArray): Promise;
    importKey(format: Exclude, keyData: BufferSource, algorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: Iterable): Promise;
    unwrapKey(format: KeyFormat, wrappedKey: BufferSource, unwrappingKey: CryptoKey, unwrapAlgorithm: AlgorithmIdentifier | RsaOaepParams | AesCtrParams | AesCbcParams | AesGcmParams, unwrappedKeyAlgorithm: AlgorithmIdentifier | RsaHashedImportParams | EcKeyImportParams | HmacImportParams | AesKeyAlgorithm, extractable: boolean, keyUsages: Iterable): Promise;
}
interface TextTrackCueList {
    [Symbol.iterator](): IterableIterator;
}
interface TextTrackList {
    [Symbol.iterator](): IterableIterator;
}
interface TouchList {
    [Symbol.iterator](): IterableIterator;
}
interface URLSearchParams {
    [Symbol.iterator](): IterableIterator<[string, string]>;
    /** Returns an array of key, value pairs for every entry in the search params. */
    entries(): IterableIterator<[string, string]>;
    /** Returns a list of keys in the search params. */
    keys(): IterableIterator;
    /** Returns a list of values in the search params. */
    values(): IterableIterator;
}
interface WEBGL_draw_buffers {
    drawBuffersWEBGL(buffers: Iterable): void;
}
interface WEBGL_multi_draw {
    multiDrawArraysInstancedWEBGL(mode: GLenum, firstsList: Int32Array | Iterable, firstsOffset: GLuint, countsList: Int32Array | Iterable, countsOffset: GLuint, instanceCountsList: Int32Array | Iterable, instanceCountsOffset: GLuint, drawcount: GLsizei): void;
    multiDrawArraysWEBGL(mode: GLenum, firstsList: Int32Array | Iterable, firstsOffset: GLuint, countsList: Int32Array | Iterable, countsOffset: GLuint, drawcount: GLsizei): void;
    multiDrawElementsInstancedWEBGL(mode: GLenum, countsList: Int32Array | Iterable, countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | Iterable, offsetsOffset: GLuint, instanceCountsList: Int32Array | Iterable, instanceCountsOffset: GLuint, drawcount: GLsizei): void;
    multiDrawElementsWEBGL(mode: GLenum, countsList: Int32Array | Iterable, countsOffset: GLuint, type: GLenum, offsetsList: Int32Array | Iterable, offsetsOffset: GLuint, drawcount: GLsizei): void;
}
interface WebGL2RenderingContextBase {
    clearBufferfv(buffer: GLenum, drawbuffer: GLint, values: Iterable, srcOffset?: GLuint): void;
    clearBufferiv(buffer: GLenum, drawbuffer: GLint, values: Iterable, srcOffset?: GLuint): void;
    clearBufferuiv(buffer: GLenum, drawbuffer: GLint, values: Iterable, srcOffset?: GLuint): void;
    drawBuffers(buffers: Iterable): void;
    getActiveUniforms(program: WebGLProgram, uniformIndices: Iterable, pname: GLenum): any;
    getUniformIndices(program: WebGLProgram, uniformNames: Iterable): Iterable | null;
    invalidateFramebuffer(target: GLenum, attachments: Iterable): void;
    invalidateSubFramebuffer(target: GLenum, attachments: Iterable, x: GLint, y: GLint, width: GLsizei, height: GLsizei): void;
    transformFeedbackVaryings(program: WebGLProgram, varyings: Iterable, bufferMode: GLenum): void;
    uniform1uiv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform2uiv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform3uiv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform4uiv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniformMatrix2x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniformMatrix2x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniformMatrix3x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniformMatrix3x4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniformMatrix4x2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniformMatrix4x3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    vertexAttribI4iv(index: GLuint, values: Iterable): void;
    vertexAttribI4uiv(index: GLuint, values: Iterable): void;
}
interface WebGL2RenderingContextOverloads {
    uniform1fv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform1iv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform2fv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform2iv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform3fv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform3iv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform4fv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniform4iv(location: WebGLUniformLocation | null, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, data: Iterable, srcOffset?: GLuint, srcLength?: GLuint): void;
}
interface WebGLRenderingContextBase {
    vertexAttrib1fv(index: GLuint, values: Iterable): void;
    vertexAttrib2fv(index: GLuint, values: Iterable): void;
    vertexAttrib3fv(index: GLuint, values: Iterable): void;
    vertexAttrib4fv(index: GLuint, values: Iterable): void;
}
interface WebGLRenderingContextOverloads {
    uniform1fv(location: WebGLUniformLocation | null, v: Iterable): void;
    uniform1iv(location: WebGLUniformLocation | null, v: Iterable): void;
    uniform2fv(location: WebGLUniformLocation | null, v: Iterable): void;
    uniform2iv(location: WebGLUniformLocation | null, v: Iterable): void;
    uniform3fv(location: WebGLUniformLocation | null, v: Iterable): void;
    uniform3iv(location: WebGLUniformLocation | null, v: Iterable): void;
    uniform4fv(location: WebGLUniformLocation | null, v: Iterable): void;
    uniform4iv(location: WebGLUniformLocation | null, v: Iterable): void;
    uniformMatrix2fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Iterable): void;
    uniformMatrix3fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Iterable): void;
    uniformMatrix4fv(location: WebGLUniformLocation | null, transpose: GLboolean, value: Iterable): void;
}