// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// There is way too much stuff Closure Compiler currently doesn't understand
// in JavaScript bindings auto-generated by wasm-bindgen, so we exclude them
// from compilation and redefine types manually here.

/**
 * @type {function((!RequestInfo | !BufferSource)): !Promise<*>}
 */
self.wasm_bindgen;

/** @interface */
// eslint-disable-next-line no-unused-vars
class Resolver {
  /**
   * @param {!Uint8Array} src
   */
  constructor(src) {
  }

  /**
   * @return {void}
   */
  free() {
  }

  /**
   * @return {!Array<string>}
   */
  listFiles() {
  }

  /**
   * @return {!Array<!SDK.SourceMapEntry>}
   */
  listMappings() {
  }

  /**
   * @param {number} addr
   * @return {?SDK.SourceMapEntry}
   */
  resolve(addr) {
  }

  /**
   * @param {string} file
   * @param {number} line
   * @param {number} column
   * @return {?SDK.SourceMapEntry}
   */
  resolveReverse(file, line, column) {
  }
}

/** @type {!Resolver} */
self.wasm_bindgen.Resolver;
