/**
 * Copyright 2017 Google Inc. 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
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */ import { puppeteerErrors , PuppeteerErrors } from './Errors.js' ; import { ConnectionTransport } from './ConnectionTransport.js' ; import { devicesMap , DevicesMap } from './DeviceDescriptors.js' ; import { Browser } from './Browser.js' ; import { registerCustomQueryHandler , unregisterCustomQueryHandler , customQueryHandlerNames , clearCustomQueryHandlers , CustomQueryHandler , } from './QueryHandler.js' ; import { Product } from './Product.js' ; import { connectToBrowser , BrowserConnectOptions } from './BrowserConnector.js' ; import { PredefinedNetworkConditions , networkConditions , } from './NetworkConditions.js' ; internal export interface CommonPuppeteerSettings { isPuppeteerCore : boolean ; } public export interface ConnectOptions extends BrowserConnectOptions { browserWSEndpoint ? : string ; browserURL ? : string ; transport ? : ConnectionTransport ; product ? : Product ; } /**
 * The main Puppeteer class.
 *
 * IMPORTANT: if you are using Puppeteer in a Node environment, you will get an
 * instance of  PuppeteerNode when you import or require `puppeteer`.
 * That class extends `Puppeteer`, so has all the methods documented below as
 * well as all that are defined on  PuppeteerNode .
 *  public export class Puppeteer { protected _isPuppeteerCore : boolean ; protected _changedProduct = false ; internal constructor ( settings ) { this . _isPuppeteerCore = settings . isPuppeteerCore ; } remarks param options returns connect ( options ) { return connectToBrowser ( options ) ; } remarks A list of devices to be used with `page.emulate(options)`. Actual list of devices can be found in  https .
     *
     *  example get devices ( ) : DevicesMap { return devicesMap ; } remarks example get errors ( ) : PuppeteerErrors { return puppeteerErrors ; } remarks Returns a list of network conditions to be used with `page.emulateNetworkConditions(networkConditions)`. Actual list of predefined conditions can be found in  https .
     *
     *  example get networkConditions ( ) : PredefinedNetworkConditions { return networkConditions ; } /**
     * Registers a  CustomQueryHandler . After
     * registration, the handler can be used everywhere where a selector is
     * expected by prepending the selection string with `<name>/`. The name is
     * only allowed to consist of lower- and upper case latin letters.
     *  example param name param queryHandler - The  CustomQueryHandler to
     * register.
      registerCustomQueryHandler ( name , queryHandler ) { registerCustomQueryHandler ( name , queryHandler ) ; } param name unregisterCustomQueryHandler ( name ) { unregisterCustomQueryHandler ( name ) ; } returns customQueryHandlerNames ( ) { return customQueryHandlerNames ( ) ; } /**
     * Clears all registered handlers.
     */ clearCustomQueryHandlers ( ) { clearCustomQueryHandlers ( ) ; } }