import { BrowserConfig as BrowserConfig$1, BrowserRecordingOptions, BrowserState, BrowserTabState, BrowserToolError, KeyboardEventParams, MastraBrowser, MouseEventParams, ScreencastOptions, ScreencastStream, ThreadManager, ThreadManagerConfig, ThreadSession } from "@mastra/core/browser";
import { BrowserManager } from "agent-browser";
import { Tool as Tool$1 } from "@mastra/core/tools";
import { z } from "zod";
import { ChildProcess } from "child_process";
import { Readable } from "stream";
import { ReadStream } from "fs";
import "zod/v3";
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/playwright-core/1.61.1/18c2a23d26543584ecd378a964afb75fb452e07c662808f689f8ccf7073b2238/node_modules/playwright-core/types/protocol.d.ts
// This is generated from /utils/protocol-types-generator/index.js
type binary = string;
declare namespace Protocol {
  export namespace Accessibility {
    /**
     * Unique accessibility node identifier.
     */
    export type AXNodeId = string;
    /**
     * Enum of possible property types.
     */
    export type AXValueType = "boolean" | "tristate" | "booleanOrUndefined" | "idref" | "idrefList" | "integer" | "node" | "nodeList" | "number" | "string" | "computedString" | "token" | "tokenList" | "domRelation" | "role" | "internalRole" | "valueUndefined";
    /**
     * Enum of possible property sources.
     */
    export type AXValueSourceType = "attribute" | "implicit" | "style" | "contents" | "placeholder" | "relatedElement";
    /**
     * Enum of possible native property sources (as a subtype of a particular AXValueSourceType).
     */
    export type AXValueNativeSourceType = "description" | "figcaption" | "label" | "labelfor" | "labelwrapped" | "legend" | "rubyannotation" | "tablecaption" | "title" | "other";
    /**
     * A single source for a computed AX property.
     */
    export interface AXValueSource {
      /**
       * What type of source this is.
       */
      type: AXValueSourceType;
      /**
       * The value of this property source.
       */
      value?: AXValue;
      /**
       * The name of the relevant attribute, if any.
       */
      attribute?: string;
      /**
       * The value of the relevant attribute, if any.
       */
      attributeValue?: AXValue;
      /**
       * Whether this source is superseded by a higher priority source.
       */
      superseded?: boolean;
      /**
       * The native markup source for this value, e.g. a `<label>` element.
       */
      nativeSource?: AXValueNativeSourceType;
      /**
       * The value, such as a node or node list, of the native source.
       */
      nativeSourceValue?: AXValue;
      /**
       * Whether the value for this property is invalid.
       */
      invalid?: boolean;
      /**
       * Reason for the value being invalid, if it is.
       */
      invalidReason?: string;
    }
    export interface AXRelatedNode {
      /**
       * The BackendNodeId of the related DOM node.
       */
      backendDOMNodeId: DOM.BackendNodeId;
      /**
       * The IDRef value provided, if any.
       */
      idref?: string;
      /**
       * The text alternative of this node in the current context.
       */
      text?: string;
    }
    export interface AXProperty {
      /**
       * The name of this property.
       */
      name: AXPropertyName;
      /**
       * The value of this property.
       */
      value: AXValue;
    }
    /**
     * A single computed AX property.
     */
    export interface AXValue {
      /**
       * The type of this value.
       */
      type: AXValueType;
      /**
       * The computed value of this property.
       */
      value?: any;
      /**
       * One or more related nodes, if applicable.
       */
      relatedNodes?: AXRelatedNode[];
      /**
       * The sources which contributed to the computation of this property.
       */
      sources?: AXValueSource[];
    }
    /**
     * Values of AXProperty name:
- from 'busy' to 'roledescription': states which apply to every AX node
- from 'live' to 'root': attributes which apply to nodes in live regions
- from 'autocomplete' to 'valuetext': attributes which apply to widgets
- from 'checked' to 'selected': states which apply to widgets
- from 'activedescendant' to 'owns': relationships between elements other than parent/child/sibling
- from 'activeFullscreenElement' to 'uninteresting': reasons why this noode is hidden
     */
    export type AXPropertyName = "actions" | "busy" | "disabled" | "editable" | "focusable" | "focused" | "hidden" | "hiddenRoot" | "invalid" | "keyshortcuts" | "settable" | "roledescription" | "live" | "atomic" | "relevant" | "root" | "autocomplete" | "hasPopup" | "level" | "multiselectable" | "orientation" | "multiline" | "readonly" | "required" | "valuemin" | "valuemax" | "valuetext" | "checked" | "expanded" | "modal" | "pressed" | "selected" | "activedescendant" | "controls" | "describedby" | "details" | "errormessage" | "flowto" | "labelledby" | "owns" | "url" | "activeFullscreenElement" | "activeModalDialog" | "activeAriaModalDialog" | "ariaHiddenElement" | "ariaHiddenSubtree" | "emptyAlt" | "emptyText" | "inertElement" | "inertSubtree" | "labelContainer" | "labelFor" | "notRendered" | "notVisible" | "presentationalRole" | "probablyPresentational" | "inactiveCarouselTabContent" | "uninteresting";
    /**
     * A node in the accessibility tree.
     */
    export interface AXNode {
      /**
       * Unique identifier for this node.
       */
      nodeId: AXNodeId;
      /**
       * Whether this node is ignored for accessibility
       */
      ignored: boolean;
      /**
       * Collection of reasons why this node is hidden.
       */
      ignoredReasons?: AXProperty[];
      /**
       * This `Node`'s role, whether explicit or implicit.
       */
      role?: AXValue;
      /**
       * This `Node`'s Chrome raw role.
       */
      chromeRole?: AXValue;
      /**
       * The accessible name for this `Node`.
       */
      name?: AXValue;
      /**
       * The accessible description for this `Node`.
       */
      description?: AXValue;
      /**
       * The value for this `Node`.
       */
      value?: AXValue;
      /**
       * All other properties
       */
      properties?: AXProperty[];
      /**
       * ID for this node's parent.
       */
      parentId?: AXNodeId;
      /**
       * IDs for each of this node's child nodes.
       */
      childIds?: AXNodeId[];
      /**
       * The backend ID for the associated DOM node, if any.
       */
      backendDOMNodeId?: DOM.BackendNodeId;
      /**
       * The frame ID for the frame associated with this nodes document.
       */
      frameId?: Page.FrameId;
    }
    /**
     * The loadComplete event mirrors the load complete event sent by the browser to assistive
technology when the web page has finished loading.
     */
    export type loadCompletePayload = {
      /**
       * New document root node.
       */
      root: AXNode;
    };
    /**
     * The nodesUpdated event is sent every time a previously requested node has changed the in tree.
     */
    export type nodesUpdatedPayload = {
      /**
       * Updated node data.
       */
      nodes: AXNode[];
    };
    /**
     * Disables the accessibility domain.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables the accessibility domain which causes `AXNodeId`s to remain consistent between method calls.
This turns on accessibility for the page, which can impact performance until accessibility is disabled.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Fetches the accessibility node and partial accessibility tree for this DOM node, if it exists.
     */
    export type getPartialAXTreeParameters = {
      /**
       * Identifier of the node to get the partial accessibility tree for.
       */
      nodeId?: DOM.NodeId;
      /**
       * Identifier of the backend node to get the partial accessibility tree for.
       */
      backendNodeId?: DOM.BackendNodeId;
      /**
       * JavaScript object id of the node wrapper to get the partial accessibility tree for.
       */
      objectId?: Runtime.RemoteObjectId;
      /**
       * Whether to fetch this node's ancestors, siblings and children. Defaults to true.
       */
      fetchRelatives?: boolean;
    };
    export type getPartialAXTreeReturnValue = {
      /**
       * The `Accessibility.AXNode` for this DOM node, if it exists, plus its ancestors, siblings and
children, if requested.
       */
      nodes: AXNode[];
    };
    /**
     * Fetches the entire accessibility tree for the root Document
     */
    export type getFullAXTreeParameters = {
      /**
       * The maximum depth at which descendants of the root node should be retrieved.
If omitted, the full tree is returned.
       */
      depth?: number;
      /**
       * The frame for whose document the AX tree should be retrieved.
If omitted, the root frame is used.
       */
      frameId?: Page.FrameId;
    };
    export type getFullAXTreeReturnValue = {
      nodes: AXNode[];
    };
    /**
     * Fetches the root node.
Requires `enable()` to have been called previously.
     */
    export type getRootAXNodeParameters = {
      /**
       * The frame in whose document the node resides.
If omitted, the root frame is used.
       */
      frameId?: Page.FrameId;
    };
    export type getRootAXNodeReturnValue = {
      node: AXNode;
    };
    /**
     * Fetches a node and all ancestors up to and including the root.
Requires `enable()` to have been called previously.
     */
    export type getAXNodeAndAncestorsParameters = {
      /**
       * Identifier of the node to get.
       */
      nodeId?: DOM.NodeId;
      /**
       * Identifier of the backend node to get.
       */
      backendNodeId?: DOM.BackendNodeId;
      /**
       * JavaScript object id of the node wrapper to get.
       */
      objectId?: Runtime.RemoteObjectId;
    };
    export type getAXNodeAndAncestorsReturnValue = {
      nodes: AXNode[];
    };
    /**
     * Fetches a particular accessibility node by AXNodeId.
Requires `enable()` to have been called previously.
     */
    export type getChildAXNodesParameters = {
      id: AXNodeId;
      /**
       * The frame in whose document the node resides.
If omitted, the root frame is used.
       */
      frameId?: Page.FrameId;
    };
    export type getChildAXNodesReturnValue = {
      nodes: AXNode[];
    };
    /**
     * Query a DOM node's accessibility subtree for accessible name and role.
This command computes the name and role for all nodes in the subtree, including those that are
ignored for accessibility, and returns those that match the specified name and role. If no DOM
node is specified, or the DOM node does not exist, the command returns an error. If neither
`accessibleName` or `role` is specified, it returns all the accessibility nodes in the subtree.
     */
    export type queryAXTreeParameters = {
      /**
       * Identifier of the node for the root to query.
       */
      nodeId?: DOM.NodeId;
      /**
       * Identifier of the backend node for the root to query.
       */
      backendNodeId?: DOM.BackendNodeId;
      /**
       * JavaScript object id of the node wrapper for the root to query.
       */
      objectId?: Runtime.RemoteObjectId;
      /**
       * Find nodes with this computed name.
       */
      accessibleName?: string;
      /**
       * Find nodes with this computed role.
       */
      role?: string;
    };
    export type queryAXTreeReturnValue = {
      /**
       * A list of `Accessibility.AXNode` matching the specified attributes,
including nodes that are ignored for accessibility.
       */
      nodes: AXNode[];
    };
  }
  export namespace Animation {
    /**
     * Animation instance.
     */
    export interface Animation {
      /**
       * `Animation`'s id.
       */
      id: string;
      /**
       * `Animation`'s name.
       */
      name: string;
      /**
       * `Animation`'s internal paused state.
       */
      pausedState: boolean;
      /**
       * `Animation`'s play state.
       */
      playState: string;
      /**
       * `Animation`'s playback rate.
       */
      playbackRate: number;
      /**
       * `Animation`'s start time.
Milliseconds for time based animations and
percentage [0 - 100] for scroll driven animations
(i.e. when viewOrScrollTimeline exists).
       */
      startTime: number;
      /**
       * `Animation`'s current time.
       */
      currentTime: number;
      /**
       * Animation type of `Animation`.
       */
      type: "CSSTransition" | "CSSAnimation" | "WebAnimation";
      /**
       * `Animation`'s source animation node.
       */
      source?: AnimationEffect;
      /**
       * A unique ID for `Animation` representing the sources that triggered this CSS
animation/transition.
       */
      cssId?: string;
      /**
       * View or scroll timeline
       */
      viewOrScrollTimeline?: ViewOrScrollTimeline;
    }
    /**
     * Timeline instance
     */
    export interface ViewOrScrollTimeline {
      /**
       * Scroll container node
       */
      sourceNodeId?: DOM.BackendNodeId;
      /**
       * Represents the starting scroll position of the timeline
as a length offset in pixels from scroll origin.
       */
      startOffset?: number;
      /**
       * Represents the ending scroll position of the timeline
as a length offset in pixels from scroll origin.
       */
      endOffset?: number;
      /**
       * The element whose principal box's visibility in the
scrollport defined the progress of the timeline.
Does not exist for animations with ScrollTimeline
       */
      subjectNodeId?: DOM.BackendNodeId;
      /**
       * Orientation of the scroll
       */
      axis: DOM.ScrollOrientation;
    }
    /**
     * AnimationEffect instance
     */
    export interface AnimationEffect {
      /**
       * `AnimationEffect`'s delay.
       */
      delay: number;
      /**
       * `AnimationEffect`'s end delay.
       */
      endDelay: number;
      /**
       * `AnimationEffect`'s iteration start.
       */
      iterationStart: number;
      /**
       * `AnimationEffect`'s iterations. Omitted if the value is infinite.
       */
      iterations?: number;
      /**
       * `AnimationEffect`'s iteration duration.
Milliseconds for time based animations and
percentage [0 - 100] for scroll driven animations
(i.e. when viewOrScrollTimeline exists).
       */
      duration: number;
      /**
       * `AnimationEffect`'s playback direction.
       */
      direction: string;
      /**
       * `AnimationEffect`'s fill mode.
       */
      fill: string;
      /**
       * `AnimationEffect`'s target node.
       */
      backendNodeId?: DOM.BackendNodeId;
      /**
       * `AnimationEffect`'s keyframes.
       */
      keyframesRule?: KeyframesRule;
      /**
       * `AnimationEffect`'s timing function.
       */
      easing: string;
    }
    /**
     * Keyframes Rule
     */
    export interface KeyframesRule {
      /**
       * CSS keyframed animation's name.
       */
      name?: string;
      /**
       * List of animation keyframes.
       */
      keyframes: KeyframeStyle[];
    }
    /**
     * Keyframe Style
     */
    export interface KeyframeStyle {
      /**
       * Keyframe's time offset.
       */
      offset: string;
      /**
       * `AnimationEffect`'s timing function.
       */
      easing: string;
    }
    /**
     * Event for when an animation has been cancelled.
     */
    export type animationCanceledPayload = {
      /**
       * Id of the animation that was cancelled.
       */
      id: string;
    };
    /**
     * Event for each animation that has been created.
     */
    export type animationCreatedPayload = {
      /**
       * Id of the animation that was created.
       */
      id: string;
    };
    /**
     * Event for animation that has been started.
     */
    export type animationStartedPayload = {
      /**
       * Animation that was started.
       */
      animation: Animation;
    };
    /**
     * Event for animation that has been updated.
     */
    export type animationUpdatedPayload = {
      /**
       * Animation that was updated.
       */
      animation: Animation;
    };
    /**
     * Disables animation domain notifications.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables animation domain notifications.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Returns the current time of the an animation.
     */
    export type getCurrentTimeParameters = {
      /**
       * Id of animation.
       */
      id: string;
    };
    export type getCurrentTimeReturnValue = {
      /**
       * Current time of the page.
       */
      currentTime: number;
    };
    /**
     * Gets the playback rate of the document timeline.
     */
    export type getPlaybackRateParameters = {};
    export type getPlaybackRateReturnValue = {
      /**
       * Playback rate for animations on page.
       */
      playbackRate: number;
    };
    /**
     * Releases a set of animations to no longer be manipulated.
     */
    export type releaseAnimationsParameters = {
      /**
       * List of animation ids to seek.
       */
      animations: string[];
    };
    export type releaseAnimationsReturnValue = {};
    /**
     * Gets the remote object of the Animation.
     */
    export type resolveAnimationParameters = {
      /**
       * Animation id.
       */
      animationId: string;
    };
    export type resolveAnimationReturnValue = {
      /**
       * Corresponding remote object.
       */
      remoteObject: Runtime.RemoteObject;
    };
    /**
     * Seek a set of animations to a particular time within each animation.
     */
    export type seekAnimationsParameters = {
      /**
       * List of animation ids to seek.
       */
      animations: string[];
      /**
       * Set the current time of each animation.
       */
      currentTime: number;
    };
    export type seekAnimationsReturnValue = {};
    /**
     * Sets the paused state of a set of animations.
     */
    export type setPausedParameters = {
      /**
       * Animations to set the pause state of.
       */
      animations: string[];
      /**
       * Paused state to set to.
       */
      paused: boolean;
    };
    export type setPausedReturnValue = {};
    /**
     * Sets the playback rate of the document timeline.
     */
    export type setPlaybackRateParameters = {
      /**
       * Playback rate for animations on page
       */
      playbackRate: number;
    };
    export type setPlaybackRateReturnValue = {};
    /**
     * Sets the timing of an animation node.
     */
    export type setTimingParameters = {
      /**
       * Animation id.
       */
      animationId: string;
      /**
       * Duration of the animation.
       */
      duration: number;
      /**
       * Delay of the animation.
       */
      delay: number;
    };
    export type setTimingReturnValue = {};
  }
  /**
   * Audits domain allows investigation of page violations and possible improvements.
   */
  export namespace Audits {
    /**
     * Information about a cookie that is affected by an inspector issue.
     */
    export interface AffectedCookie {
      /**
       * The following three properties uniquely identify a cookie
       */
      name: string;
      path: string;
      domain: string;
    }
    /**
     * Information about a request that is affected by an inspector issue.
     */
    export interface AffectedRequest {
      /**
       * The unique request id.
       */
      requestId?: Network.RequestId;
      url: string;
    }
    /**
     * Information about the frame affected by an inspector issue.
     */
    export interface AffectedFrame {
      frameId: Page.FrameId;
    }
    export type CookieExclusionReason = "ExcludeSameSiteUnspecifiedTreatedAsLax" | "ExcludeSameSiteNoneInsecure" | "ExcludeSameSiteLax" | "ExcludeSameSiteStrict" | "ExcludeDomainNonASCII" | "ExcludeThirdPartyCookieBlockedInFirstPartySet" | "ExcludeThirdPartyPhaseout" | "ExcludePortMismatch" | "ExcludeSchemeMismatch";
    export type CookieWarningReason = "WarnSameSiteUnspecifiedCrossSiteContext" | "WarnSameSiteNoneInsecure" | "WarnSameSiteUnspecifiedLaxAllowUnsafe" | "WarnSameSiteStrictLaxDowngradeStrict" | "WarnSameSiteStrictCrossDowngradeStrict" | "WarnSameSiteStrictCrossDowngradeLax" | "WarnSameSiteLaxCrossDowngradeStrict" | "WarnSameSiteLaxCrossDowngradeLax" | "WarnAttributeValueExceedsMaxSize" | "WarnDomainNonASCII" | "WarnThirdPartyPhaseout" | "WarnCrossSiteRedirectDowngradeChangesInclusion" | "WarnDeprecationTrialMetadata" | "WarnThirdPartyCookieHeuristic";
    export type CookieOperation = "SetCookie" | "ReadCookie";
    /**
     * Represents the category of insight that a cookie issue falls under.
     */
    export type InsightType = "GitHubResource" | "GracePeriod" | "Heuristics";
    /**
     * Information about the suggested solution to a cookie issue.
     */
    export interface CookieIssueInsight {
      type: InsightType;
      /**
       * Link to table entry in third-party cookie migration readiness list.
       */
      tableEntryUrl?: string;
    }
    /**
     * This information is currently necessary, as the front-end has a difficult
time finding a specific cookie. With this, we can convey specific error
information without the cookie.
     */
    export interface CookieIssueDetails {
      /**
       * If AffectedCookie is not set then rawCookieLine contains the raw
Set-Cookie header string. This hints at a problem where the
cookie line is syntactically or semantically malformed in a way
that no valid cookie could be created.
       */
      cookie?: AffectedCookie;
      rawCookieLine?: string;
      cookieWarningReasons: CookieWarningReason[];
      cookieExclusionReasons: CookieExclusionReason[];
      /**
       * Optionally identifies the site-for-cookies and the cookie url, which
may be used by the front-end as additional context.
       */
      operation: CookieOperation;
      siteForCookies?: string;
      cookieUrl?: string;
      request?: AffectedRequest;
      /**
       * The recommended solution to the issue.
       */
      insight?: CookieIssueInsight;
    }
    export type PerformanceIssueType = "DocumentCookie";
    /**
     * Details for a performance issue.
     */
    export interface PerformanceIssueDetails {
      performanceIssueType: PerformanceIssueType;
      sourceCodeLocation?: SourceCodeLocation;
    }
    export type MixedContentResolutionStatus = "MixedContentBlocked" | "MixedContentAutomaticallyUpgraded" | "MixedContentWarning";
    export type MixedContentResourceType = "AttributionSrc" | "Audio" | "Beacon" | "CSPReport" | "Download" | "EventSource" | "Favicon" | "Font" | "Form" | "Frame" | "Image" | "Import" | "JSON" | "Manifest" | "Ping" | "PluginData" | "PluginResource" | "Prefetch" | "Resource" | "Script" | "ServiceWorker" | "SharedWorker" | "SpeculationRules" | "Stylesheet" | "Track" | "Video" | "Worker" | "XMLHttpRequest" | "XSLT";
    export interface MixedContentIssueDetails {
      /**
       * The type of resource causing the mixed content issue (css, js, iframe,
form,...). Marked as optional because it is mapped to from
blink::mojom::RequestContextType, which will be replaced
by network::mojom::RequestDestination
       */
      resourceType?: MixedContentResourceType;
      /**
       * The way the mixed content issue is being resolved.
       */
      resolutionStatus: MixedContentResolutionStatus;
      /**
       * The unsafe http url causing the mixed content issue.
       */
      insecureURL: string;
      /**
       * The url responsible for the call to an unsafe url.
       */
      mainResourceURL: string;
      /**
       * The mixed content request.
Does not always exist (e.g. for unsafe form submission urls).
       */
      request?: AffectedRequest;
      /**
       * Optional because not every mixed content issue is necessarily linked to a frame.
       */
      frame?: AffectedFrame;
    }
    /**
     * Enum indicating the reason a response has been blocked. These reasons are
refinements of the net error BLOCKED_BY_RESPONSE.
     */
    export type BlockedByResponseReason = "CoepFrameResourceNeedsCoepHeader" | "CoopSandboxedIFrameCannotNavigateToCoopPage" | "CorpNotSameOrigin" | "CorpNotSameOriginAfterDefaultedToSameOriginByCoep" | "CorpNotSameOriginAfterDefaultedToSameOriginByDip" | "CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip" | "CorpNotSameSite" | "SRIMessageSignatureMismatch";
    /**
     * Details for a request that has been blocked with the BLOCKED_BY_RESPONSE
code. Currently only used for COEP/COOP, but may be extended to include
some CSP errors in the future.
     */
    export interface BlockedByResponseIssueDetails {
      request: AffectedRequest;
      parentFrame?: AffectedFrame;
      blockedFrame?: AffectedFrame;
      reason: BlockedByResponseReason;
    }
    export type HeavyAdResolutionStatus = "HeavyAdBlocked" | "HeavyAdWarning";
    export type HeavyAdReason = "NetworkTotalLimit" | "CpuTotalLimit" | "CpuPeakLimit";
    export interface HeavyAdIssueDetails {
      /**
       * The resolution status, either blocking the content or warning.
       */
      resolution: HeavyAdResolutionStatus;
      /**
       * The reason the ad was blocked, total network or cpu or peak cpu.
       */
      reason: HeavyAdReason;
      /**
       * The frame that was blocked.
       */
      frame: AffectedFrame;
    }
    export type ContentSecurityPolicyViolationType = "kInlineViolation" | "kEvalViolation" | "kURLViolation" | "kSRIViolation" | "kTrustedTypesSinkViolation" | "kTrustedTypesPolicyViolation" | "kWasmEvalViolation";
    export interface SourceCodeLocation {
      scriptId?: Runtime.ScriptId;
      url: string;
      lineNumber: number;
      columnNumber: number;
    }
    export interface ContentSecurityPolicyIssueDetails {
      /**
       * The url not included in allowed sources.
       */
      blockedURL?: string;
      /**
       * Specific directive that is violated, causing the CSP issue.
       */
      violatedDirective: string;
      isReportOnly: boolean;
      contentSecurityPolicyViolationType: ContentSecurityPolicyViolationType;
      frameAncestor?: AffectedFrame;
      sourceCodeLocation?: SourceCodeLocation;
      violatingNodeId?: DOM.BackendNodeId;
    }
    export type SharedArrayBufferIssueType = "TransferIssue" | "CreationIssue";
    /**
     * Details for a issue arising from an SAB being instantiated in, or
transferred to a context that is not cross-origin isolated.
     */
    export interface SharedArrayBufferIssueDetails {
      sourceCodeLocation: SourceCodeLocation;
      isWarning: boolean;
      type: SharedArrayBufferIssueType;
    }
    /**
     * Details for a CORS related issue, e.g. a warning or error related to
CORS RFC1918 enforcement.
     */
    export interface CorsIssueDetails {
      corsErrorStatus: Network.CorsErrorStatus;
      isWarning: boolean;
      request: AffectedRequest;
      location?: SourceCodeLocation;
      initiatorOrigin?: string;
      resourceIPAddressSpace?: Network.IPAddressSpace;
      clientSecurityState?: Network.ClientSecurityState;
    }
    export type AttributionReportingIssueType = "PermissionPolicyDisabled" | "UntrustworthyReportingOrigin" | "InsecureContext" | "InvalidHeader" | "InvalidRegisterTriggerHeader" | "SourceAndTriggerHeaders" | "SourceIgnored" | "TriggerIgnored" | "OsSourceIgnored" | "OsTriggerIgnored" | "InvalidRegisterOsSourceHeader" | "InvalidRegisterOsTriggerHeader" | "WebAndOsHeaders" | "NoWebOrOsSupport" | "NavigationRegistrationWithoutTransientUserActivation" | "InvalidInfoHeader" | "NoRegisterSourceHeader" | "NoRegisterTriggerHeader" | "NoRegisterOsSourceHeader" | "NoRegisterOsTriggerHeader" | "NavigationRegistrationUniqueScopeAlreadySet";
    export type SharedDictionaryError = "UseErrorCrossOriginNoCorsRequest" | "UseErrorDictionaryLoadFailure" | "UseErrorMatchingDictionaryNotUsed" | "UseErrorUnexpectedContentDictionaryHeader" | "WriteErrorCossOriginNoCorsRequest" | "WriteErrorDisallowedBySettings" | "WriteErrorExpiredResponse" | "WriteErrorFeatureDisabled" | "WriteErrorInsufficientResources" | "WriteErrorInvalidMatchField" | "WriteErrorInvalidStructuredHeader" | "WriteErrorInvalidTTLField" | "WriteErrorNavigationRequest" | "WriteErrorNoMatchField" | "WriteErrorNonIntegerTTLField" | "WriteErrorNonListMatchDestField" | "WriteErrorNonSecureContext" | "WriteErrorNonStringIdField" | "WriteErrorNonStringInMatchDestList" | "WriteErrorNonStringMatchField" | "WriteErrorNonTokenTypeField" | "WriteErrorRequestAborted" | "WriteErrorShuttingDown" | "WriteErrorTooLongIdField" | "WriteErrorUnsupportedType";
    export type SRIMessageSignatureError = "MissingSignatureHeader" | "MissingSignatureInputHeader" | "InvalidSignatureHeader" | "InvalidSignatureInputHeader" | "SignatureHeaderValueIsNotByteSequence" | "SignatureHeaderValueIsParameterized" | "SignatureHeaderValueIsIncorrectLength" | "SignatureInputHeaderMissingLabel" | "SignatureInputHeaderValueNotInnerList" | "SignatureInputHeaderValueMissingComponents" | "SignatureInputHeaderInvalidComponentType" | "SignatureInputHeaderInvalidComponentName" | "SignatureInputHeaderInvalidHeaderComponentParameter" | "SignatureInputHeaderInvalidDerivedComponentParameter" | "SignatureInputHeaderKeyIdLength" | "SignatureInputHeaderInvalidParameter" | "SignatureInputHeaderMissingRequiredParameters" | "ValidationFailedSignatureExpired" | "ValidationFailedInvalidLength" | "ValidationFailedSignatureMismatch" | "ValidationFailedIntegrityMismatch";
    export type UnencodedDigestError = "MalformedDictionary" | "UnknownAlgorithm" | "IncorrectDigestType" | "IncorrectDigestLength";
    export type ConnectionAllowlistError = "InvalidHeader" | "MoreThanOneList" | "ItemNotInnerList" | "InvalidAllowlistItemType" | "ReportingEndpointNotToken" | "InvalidUrlPattern";
    /**
     * Details for issues around "Attribution Reporting API" usage.
Explainer: https://github.com/WICG/attribution-reporting-api
     */
    export interface AttributionReportingIssueDetails {
      violationType: AttributionReportingIssueType;
      request?: AffectedRequest;
      violatingNodeId?: DOM.BackendNodeId;
      invalidParameter?: string;
    }
    /**
     * Details for issues about documents in Quirks Mode
or Limited Quirks Mode that affects page layouting.
     */
    export interface QuirksModeIssueDetails {
      /**
       * If false, it means the document's mode is "quirks"
instead of "limited-quirks".
       */
      isLimitedQuirksMode: boolean;
      documentNodeId: DOM.BackendNodeId;
      url: string;
      frameId: Page.FrameId;
      loaderId: Network.LoaderId;
    }
    export interface NavigatorUserAgentIssueDetails {
      url: string;
      location?: SourceCodeLocation;
    }
    export interface SharedDictionaryIssueDetails {
      sharedDictionaryError: SharedDictionaryError;
      request: AffectedRequest;
    }
    export interface SRIMessageSignatureIssueDetails {
      error: SRIMessageSignatureError;
      signatureBase: string;
      integrityAssertions: string[];
      request: AffectedRequest;
    }
    export interface UnencodedDigestIssueDetails {
      error: UnencodedDigestError;
      request: AffectedRequest;
    }
    export interface ConnectionAllowlistIssueDetails {
      error: ConnectionAllowlistError;
      request: AffectedRequest;
    }
    export type GenericIssueErrorType = "FormLabelForNameError" | "FormDuplicateIdForInputError" | "FormInputWithNoLabelError" | "FormAutocompleteAttributeEmptyError" | "FormEmptyIdAndNameAttributesForInputError" | "FormAriaLabelledByToNonExistingIdError" | "FormInputAssignedAutocompleteValueToIdOrNameAttributeError" | "FormLabelHasNeitherForNorNestedInputError" | "FormLabelForMatchesNonExistingIdError" | "FormInputHasWrongButWellIntendedAutocompleteValueError" | "ResponseWasBlockedByORB" | "NavigationEntryMarkedSkippable" | "AutofillAndManualTextPolicyControlledFeaturesInfo" | "AutofillPolicyControlledFeatureInfo" | "ManualTextPolicyControlledFeatureInfo" | "FormModelContextParameterMissingTitleAndDescription" | "FormModelContextMissingToolName" | "FormModelContextMissingToolDescription" | "FormModelContextRequiredParameterMissingName" | "FormModelContextParameterMissingName";
    /**
     * Depending on the concrete errorType, different properties are set.
     */
    export interface GenericIssueDetails {
      /**
       * Issues with the same errorType are aggregated in the frontend.
       */
      errorType: GenericIssueErrorType;
      frameId?: Page.FrameId;
      violatingNodeId?: DOM.BackendNodeId;
      violatingNodeAttribute?: string;
      request?: AffectedRequest;
    }
    /**
     * This issue tracks information needed to print a deprecation message.
https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/frame/third_party/blink/renderer/core/frame/deprecation/README.md
     */
    export interface DeprecationIssueDetails {
      affectedFrame?: AffectedFrame;
      sourceCodeLocation: SourceCodeLocation;
      /**
       * One of the deprecation names from third_party/blink/renderer/core/frame/deprecation/deprecation.json5
       */
      type: string;
    }
    /**
     * This issue warns about sites in the redirect chain of a finished navigation
that may be flagged as trackers and have their state cleared if they don't
receive a user interaction. Note that in this context 'site' means eTLD+1.
For example, if the URL `https://example.test:80/bounce` was in the
redirect chain, the site reported would be `example.test`.
     */
    export interface BounceTrackingIssueDetails {
      trackingSites: string[];
    }
    /**
     * This issue warns about third-party sites that are accessing cookies on the
current page, and have been permitted due to having a global metadata grant.
Note that in this context 'site' means eTLD+1. For example, if the URL
`https://example.test:80/web_page` was accessing cookies, the site reported
would be `example.test`.
     */
    export interface CookieDeprecationMetadataIssueDetails {
      allowedSites: string[];
      optOutPercentage: number;
      isOptOutTopLevel: boolean;
      operation: CookieOperation;
    }
    export type ClientHintIssueReason = "MetaTagAllowListInvalidOrigin" | "MetaTagModifiedHTML";
    export interface FederatedAuthRequestIssueDetails {
      federatedAuthRequestIssueReason: FederatedAuthRequestIssueReason;
    }
    /**
     * Represents the failure reason when a federated authentication reason fails.
Should be updated alongside RequestIdTokenStatus in
third_party/blink/public/mojom/devtools/inspector_issue.mojom to include
all cases except for success.
     */
    export type FederatedAuthRequestIssueReason = "ShouldEmbargo" | "TooManyRequests" | "WellKnownHttpNotFound" | "WellKnownNoResponse" | "WellKnownInvalidResponse" | "WellKnownListEmpty" | "WellKnownInvalidContentType" | "ConfigNotInWellKnown" | "WellKnownTooBig" | "ConfigHttpNotFound" | "ConfigNoResponse" | "ConfigInvalidResponse" | "ConfigInvalidContentType" | "IdpNotPotentiallyTrustworthy" | "DisabledInSettings" | "DisabledInFlags" | "ErrorFetchingSignin" | "InvalidSigninResponse" | "AccountsHttpNotFound" | "AccountsNoResponse" | "AccountsInvalidResponse" | "AccountsListEmpty" | "AccountsInvalidContentType" | "IdTokenHttpNotFound" | "IdTokenNoResponse" | "IdTokenInvalidResponse" | "IdTokenIdpErrorResponse" | "IdTokenCrossSiteIdpErrorResponse" | "IdTokenInvalidRequest" | "IdTokenInvalidContentType" | "ErrorIdToken" | "Canceled" | "RpPageNotVisible" | "SilentMediationFailure" | "NotSignedInWithIdp" | "MissingTransientUserActivation" | "ReplacedByActiveMode" | "RelyingPartyOriginIsOpaque" | "TypeNotMatching" | "UiDismissedNoEmbargo" | "CorsError" | "SuppressedBySegmentationPlatform";
    export interface FederatedAuthUserInfoRequestIssueDetails {
      federatedAuthUserInfoRequestIssueReason: FederatedAuthUserInfoRequestIssueReason;
    }
    /**
     * Represents the failure reason when a getUserInfo() call fails.
Should be updated alongside FederatedAuthUserInfoRequestResult in
third_party/blink/public/mojom/devtools/inspector_issue.mojom.
     */
    export type FederatedAuthUserInfoRequestIssueReason = "NotSameOrigin" | "NotIframe" | "NotPotentiallyTrustworthy" | "NoApiPermission" | "NotSignedInWithIdp" | "NoAccountSharingPermission" | "InvalidConfigOrWellKnown" | "InvalidAccountsResponse" | "NoReturningUserFromFetchedAccounts";
    /**
     * This issue tracks client hints related issues. It's used to deprecate old
features, encourage the use of new ones, and provide general guidance.
     */
    export interface ClientHintIssueDetails {
      sourceCodeLocation: SourceCodeLocation;
      clientHintIssueReason: ClientHintIssueReason;
    }
    export interface FailedRequestInfo {
      /**
       * The URL that failed to load.
       */
      url: string;
      /**
       * The failure message for the failed request.
       */
      failureMessage: string;
      requestId?: Network.RequestId;
    }
    export type PartitioningBlobURLInfo = "BlockedCrossPartitionFetching" | "EnforceNoopenerForNavigation";
    export interface PartitioningBlobURLIssueDetails {
      /**
       * The BlobURL that failed to load.
       */
      url: string;
      /**
       * Additional information about the Partitioning Blob URL issue.
       */
      partitioningBlobURLInfo: PartitioningBlobURLInfo;
    }
    export type ElementAccessibilityIssueReason = "DisallowedSelectChild" | "DisallowedOptGroupChild" | "NonPhrasingContentOptionChild" | "InteractiveContentOptionChild" | "InteractiveContentLegendChild" | "InteractiveContentSummaryDescendant";
    /**
     * This issue warns about errors in the select or summary element content model.
     */
    export interface ElementAccessibilityIssueDetails {
      nodeId: DOM.BackendNodeId;
      elementAccessibilityIssueReason: ElementAccessibilityIssueReason;
      hasDisallowedAttributes: boolean;
    }
    export type StyleSheetLoadingIssueReason = "LateImportRule" | "RequestFailed";
    /**
     * This issue warns when a referenced stylesheet couldn't be loaded.
     */
    export interface StylesheetLoadingIssueDetails {
      /**
       * Source code position that referenced the failing stylesheet.
       */
      sourceCodeLocation: SourceCodeLocation;
      /**
       * Reason why the stylesheet couldn't be loaded.
       */
      styleSheetLoadingIssueReason: StyleSheetLoadingIssueReason;
      /**
       * Contains additional info when the failure was due to a request.
       */
      failedRequestInfo?: FailedRequestInfo;
    }
    export type PropertyRuleIssueReason = "InvalidSyntax" | "InvalidInitialValue" | "InvalidInherits" | "InvalidName";
    /**
     * This issue warns about errors in property rules that lead to property
registrations being ignored.
     */
    export interface PropertyRuleIssueDetails {
      /**
       * Source code position of the property rule.
       */
      sourceCodeLocation: SourceCodeLocation;
      /**
       * Reason why the property rule was discarded.
       */
      propertyRuleIssueReason: PropertyRuleIssueReason;
      /**
       * The value of the property rule property that failed to parse
       */
      propertyValue?: string;
    }
    export type UserReidentificationIssueType = "BlockedFrameNavigation" | "BlockedSubresource" | "NoisedCanvasReadback";
    /**
     * This issue warns about uses of APIs that may be considered misuse to
re-identify users.
     */
    export interface UserReidentificationIssueDetails {
      type: UserReidentificationIssueType;
      /**
       * Applies to BlockedFrameNavigation and BlockedSubresource issue types.
       */
      request?: AffectedRequest;
      /**
       * Applies to NoisedCanvasReadback issue type.
       */
      sourceCodeLocation?: SourceCodeLocation;
    }
    export type PermissionElementIssueType = "InvalidType" | "FencedFrameDisallowed" | "CspFrameAncestorsMissing" | "PermissionsPolicyBlocked" | "PaddingRightUnsupported" | "PaddingBottomUnsupported" | "InsetBoxShadowUnsupported" | "RequestInProgress" | "UntrustedEvent" | "RegistrationFailed" | "TypeNotSupported" | "InvalidTypeActivation" | "SecurityChecksFailed" | "ActivationDisabled" | "GeolocationDeprecated" | "InvalidDisplayStyle" | "NonOpaqueColor" | "LowContrast" | "FontSizeTooSmall" | "FontSizeTooLarge" | "InvalidSizeValue";
    /**
     * This issue warns about improper usage of the <permission> element.
     */
    export interface PermissionElementIssueDetails {
      issueType: PermissionElementIssueType;
      /**
       * The value of the type attribute.
       */
      type?: string;
      /**
       * The node ID of the <permission> element.
       */
      nodeId?: DOM.BackendNodeId;
      /**
       * True if the issue is a warning, false if it is an error.
       */
      isWarning?: boolean;
      /**
       * Fields for message construction:
Used for messages that reference a specific permission name
       */
      permissionName?: string;
      /**
       * Used for messages about occlusion
       */
      occluderNodeInfo?: string;
      /**
       * Used for messages about occluder's parent
       */
      occluderParentNodeInfo?: string;
      /**
       * Used for messages about activation disabled reason
       */
      disableReason?: string;
    }
    /**
     * The issue warns about blocked calls to privacy sensitive APIs via the
Selective Permissions Intervention.
     */
    export interface SelectivePermissionsInterventionIssueDetails {
      /**
       * Which API was intervened on.
       */
      apiName: string;
      /**
       * Why the ad script using the API is considered an ad.
       */
      adAncestry: Network.AdAncestry;
      /**
       * The stack trace at the time of the intervention.
       */
      stackTrace?: Runtime.StackTrace;
    }
    /**
     * A unique identifier for the type of issue. Each type may use one of the
optional fields in InspectorIssueDetails to convey more specific
information about the kind of issue.
     */
    export type InspectorIssueCode = "CookieIssue" | "MixedContentIssue" | "BlockedByResponseIssue" | "HeavyAdIssue" | "ContentSecurityPolicyIssue" | "SharedArrayBufferIssue" | "CorsIssue" | "AttributionReportingIssue" | "QuirksModeIssue" | "PartitioningBlobURLIssue" | "NavigatorUserAgentIssue" | "GenericIssue" | "DeprecationIssue" | "ClientHintIssue" | "FederatedAuthRequestIssue" | "BounceTrackingIssue" | "CookieDeprecationMetadataIssue" | "StylesheetLoadingIssue" | "FederatedAuthUserInfoRequestIssue" | "PropertyRuleIssue" | "SharedDictionaryIssue" | "ElementAccessibilityIssue" | "SRIMessageSignatureIssue" | "UnencodedDigestIssue" | "ConnectionAllowlistIssue" | "UserReidentificationIssue" | "PermissionElementIssue" | "PerformanceIssue" | "SelectivePermissionsInterventionIssue";
    /**
     * This struct holds a list of optional fields with additional information
specific to the kind of issue. When adding a new issue code, please also
add a new optional field to this type.
     */
    export interface InspectorIssueDetails {
      cookieIssueDetails?: CookieIssueDetails;
      mixedContentIssueDetails?: MixedContentIssueDetails;
      blockedByResponseIssueDetails?: BlockedByResponseIssueDetails;
      heavyAdIssueDetails?: HeavyAdIssueDetails;
      contentSecurityPolicyIssueDetails?: ContentSecurityPolicyIssueDetails;
      sharedArrayBufferIssueDetails?: SharedArrayBufferIssueDetails;
      corsIssueDetails?: CorsIssueDetails;
      attributionReportingIssueDetails?: AttributionReportingIssueDetails;
      quirksModeIssueDetails?: QuirksModeIssueDetails;
      partitioningBlobURLIssueDetails?: PartitioningBlobURLIssueDetails;
      navigatorUserAgentIssueDetails?: NavigatorUserAgentIssueDetails;
      genericIssueDetails?: GenericIssueDetails;
      deprecationIssueDetails?: DeprecationIssueDetails;
      clientHintIssueDetails?: ClientHintIssueDetails;
      federatedAuthRequestIssueDetails?: FederatedAuthRequestIssueDetails;
      bounceTrackingIssueDetails?: BounceTrackingIssueDetails;
      cookieDeprecationMetadataIssueDetails?: CookieDeprecationMetadataIssueDetails;
      stylesheetLoadingIssueDetails?: StylesheetLoadingIssueDetails;
      propertyRuleIssueDetails?: PropertyRuleIssueDetails;
      federatedAuthUserInfoRequestIssueDetails?: FederatedAuthUserInfoRequestIssueDetails;
      sharedDictionaryIssueDetails?: SharedDictionaryIssueDetails;
      elementAccessibilityIssueDetails?: ElementAccessibilityIssueDetails;
      sriMessageSignatureIssueDetails?: SRIMessageSignatureIssueDetails;
      unencodedDigestIssueDetails?: UnencodedDigestIssueDetails;
      connectionAllowlistIssueDetails?: ConnectionAllowlistIssueDetails;
      userReidentificationIssueDetails?: UserReidentificationIssueDetails;
      permissionElementIssueDetails?: PermissionElementIssueDetails;
      performanceIssueDetails?: PerformanceIssueDetails;
      selectivePermissionsInterventionIssueDetails?: SelectivePermissionsInterventionIssueDetails;
    }
    /**
     * A unique id for a DevTools inspector issue. Allows other entities (e.g.
exceptions, CDP message, console messages, etc.) to reference an issue.
     */
    export type IssueId = string;
    /**
     * An inspector issue reported from the back-end.
     */
    export interface InspectorIssue {
      code: InspectorIssueCode;
      details: InspectorIssueDetails;
      /**
       * A unique id for this issue. May be omitted if no other entity (e.g.
exception, CDP message, etc.) is referencing this issue.
       */
      issueId?: IssueId;
    }
    export type issueAddedPayload = {
      issue: InspectorIssue;
    };
    /**
     * Returns the response body and size if it were re-encoded with the specified settings. Only
applies to images.
     */
    export type getEncodedResponseParameters = {
      /**
       * Identifier of the network request to get content for.
       */
      requestId: Network.RequestId;
      /**
       * The encoding to use.
       */
      encoding: "webp" | "jpeg" | "png";
      /**
       * The quality of the encoding (0-1). (defaults to 1)
       */
      quality?: number;
      /**
       * Whether to only return the size information (defaults to false).
       */
      sizeOnly?: boolean;
    };
    export type getEncodedResponseReturnValue = {
      /**
       * The encoded body as a base64 string. Omitted if sizeOnly is true.
       */
      body?: binary;
      /**
       * Size before re-encoding.
       */
      originalSize: number;
      /**
       * Size after re-encoding.
       */
      encodedSize: number;
    };
    /**
     * Disables issues domain, prevents further issues from being reported to the client.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables issues domain, sends the issues collected so far to the client by means of the
`issueAdded` event.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Runs the form issues check for the target page. Found issues are reported
using Audits.issueAdded event.
     */
    export type checkFormsIssuesParameters = {};
    export type checkFormsIssuesReturnValue = {
      formIssues: GenericIssueDetails[];
    };
  }
  /**
   * Defines commands and events for Autofill.
   */
  export namespace Autofill {
    export interface CreditCard {
      /**
       * 16-digit credit card number.
       */
      number: string;
      /**
       * Name of the credit card owner.
       */
      name: string;
      /**
       * 2-digit expiry month.
       */
      expiryMonth: string;
      /**
       * 4-digit expiry year.
       */
      expiryYear: string;
      /**
       * 3-digit card verification code.
       */
      cvc: string;
    }
    export interface AddressField {
      /**
       * address field name, for example GIVEN_NAME.
The full list of supported field names:
https://source.chromium.org/chromium/chromium/src/+/main:components/autofill/core/browser/field_types.cc;l=38
       */
      name: string;
      /**
       * address field value, for example Jon Doe.
       */
      value: string;
    }
    /**
     * A list of address fields.
     */
    export interface AddressFields {
      fields: AddressField[];
    }
    export interface Address {
      /**
       * fields and values defining an address.
       */
      fields: AddressField[];
    }
    /**
     * Defines how an address can be displayed like in chrome://settings/addresses.
Address UI is a two dimensional array, each inner array is an "address information line", and when rendered in a UI surface should be displayed as such.
The following address UI for instance:
[[{name: "GIVE_NAME", value: "Jon"}, {name: "FAMILY_NAME", value: "Doe"}], [{name: "CITY", value: "Munich"}, {name: "ZIP", value: "81456"}]]
should allow the receiver to render:
Jon Doe
Munich 81456
     */
    export interface AddressUI {
      /**
       * A two dimension array containing the representation of values from an address profile.
       */
      addressFields: AddressFields[];
    }
    /**
     * Specified whether a filled field was done so by using the html autocomplete attribute or autofill heuristics.
     */
    export type FillingStrategy = "autocompleteAttribute" | "autofillInferred";
    export interface FilledField {
      /**
       * The type of the field, e.g text, password etc.
       */
      htmlType: string;
      /**
       * the html id
       */
      id: string;
      /**
       * the html name
       */
      name: string;
      /**
       * the field value
       */
      value: string;
      /**
       * The actual field type, e.g FAMILY_NAME
       */
      autofillType: string;
      /**
       * The filling strategy
       */
      fillingStrategy: FillingStrategy;
      /**
       * The frame the field belongs to
       */
      frameId: Page.FrameId;
      /**
       * The form field's DOM node
       */
      fieldId: DOM.BackendNodeId;
    }
    /**
     * Emitted when an address form is filled.
     */
    export type addressFormFilledPayload = {
      /**
       * Information about the fields that were filled
       */
      filledFields: FilledField[];
      /**
       * An UI representation of the address used to fill the form.
Consists of a 2D array where each child represents an address/profile line.
       */
      addressUi: AddressUI;
    };
    /**
     * Trigger autofill on a form identified by the fieldId.
If the field and related form cannot be autofilled, returns an error.
     */
    export type triggerParameters = {
      /**
       * Identifies a field that serves as an anchor for autofill.
       */
      fieldId: DOM.BackendNodeId;
      /**
       * Identifies the frame that field belongs to.
       */
      frameId?: Page.FrameId;
      /**
       * Credit card information to fill out the form. Credit card data is not saved.  Mutually exclusive with `address`.
       */
      card?: CreditCard;
      /**
       * Address to fill out the form. Address data is not saved. Mutually exclusive with `card`.
       */
      address?: Address;
    };
    export type triggerReturnValue = {};
    /**
     * Set addresses so that developers can verify their forms implementation.
     */
    export type setAddressesParameters = {
      addresses: Address[];
    };
    export type setAddressesReturnValue = {};
    /**
     * Disables autofill domain notifications.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables autofill domain notifications.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
  }
  /**
   * Defines events for background web platform features.
   */
  export namespace BackgroundService {
    /**
     * The Background Service that will be associated with the commands/events.
Every Background Service operates independently, but they share the same
API.
     */
    export type ServiceName = "backgroundFetch" | "backgroundSync" | "pushMessaging" | "notifications" | "paymentHandler" | "periodicBackgroundSync";
    /**
     * A key-value pair for additional event information to pass along.
     */
    export interface EventMetadata {
      key: string;
      value: string;
    }
    export interface BackgroundServiceEvent {
      /**
       * Timestamp of the event (in seconds).
       */
      timestamp: Network.TimeSinceEpoch;
      /**
       * The origin this event belongs to.
       */
      origin: string;
      /**
       * The Service Worker ID that initiated the event.
       */
      serviceWorkerRegistrationId: ServiceWorker.RegistrationID;
      /**
       * The Background Service this event belongs to.
       */
      service: ServiceName;
      /**
       * A description of the event.
       */
      eventName: string;
      /**
       * An identifier that groups related events together.
       */
      instanceId: string;
      /**
       * A list of event-specific information.
       */
      eventMetadata: EventMetadata[];
      /**
       * Storage key this event belongs to.
       */
      storageKey: string;
    }
    /**
     * Called when the recording state for the service has been updated.
     */
    export type recordingStateChangedPayload = {
      isRecording: boolean;
      service: ServiceName;
    };
    /**
     * Called with all existing backgroundServiceEvents when enabled, and all new
events afterwards if enabled and recording.
     */
    export type backgroundServiceEventReceivedPayload = {
      backgroundServiceEvent: BackgroundServiceEvent;
    };
    /**
     * Enables event updates for the service.
     */
    export type startObservingParameters = {
      service: ServiceName;
    };
    export type startObservingReturnValue = {};
    /**
     * Disables event updates for the service.
     */
    export type stopObservingParameters = {
      service: ServiceName;
    };
    export type stopObservingReturnValue = {};
    /**
     * Set the recording state for the service.
     */
    export type setRecordingParameters = {
      shouldRecord: boolean;
      service: ServiceName;
    };
    export type setRecordingReturnValue = {};
    /**
     * Clears all stored data for the service.
     */
    export type clearEventsParameters = {
      service: ServiceName;
    };
    export type clearEventsReturnValue = {};
  }
  /**
   * This domain allows configuring virtual Bluetooth devices to test
the web-bluetooth API.
   */
  export namespace BluetoothEmulation {
    /**
     * Indicates the various states of Central.
     */
    export type CentralState = "absent" | "powered-off" | "powered-on";
    /**
     * Indicates the various types of GATT event.
     */
    export type GATTOperationType = "connection" | "discovery";
    /**
     * Indicates the various types of characteristic write.
     */
    export type CharacteristicWriteType = "write-default-deprecated" | "write-with-response" | "write-without-response";
    /**
     * Indicates the various types of characteristic operation.
     */
    export type CharacteristicOperationType = "read" | "write" | "subscribe-to-notifications" | "unsubscribe-from-notifications";
    /**
     * Indicates the various types of descriptor operation.
     */
    export type DescriptorOperationType = "read" | "write";
    /**
     * Stores the manufacturer data
     */
    export interface ManufacturerData {
      /**
       * Company identifier
https://bitbucket.org/bluetooth-SIG/public/src/main/assigned_numbers/company_identifiers/company_identifiers.yaml
https://usb.org/developers
       */
      key: number;
      /**
       * Manufacturer-specific data
       */
      data: binary;
    }
    /**
     * Stores the byte data of the advertisement packet sent by a Bluetooth device.
     */
    export interface ScanRecord {
      name?: string;
      uuids?: string[];
      /**
       * Stores the external appearance description of the device.
       */
      appearance?: number;
      /**
       * Stores the transmission power of a broadcasting device.
       */
      txPower?: number;
      /**
       * Key is the company identifier and the value is an array of bytes of
manufacturer specific data.
       */
      manufacturerData?: ManufacturerData[];
    }
    /**
     * Stores the advertisement packet information that is sent by a Bluetooth device.
     */
    export interface ScanEntry {
      deviceAddress: string;
      rssi: number;
      scanRecord: ScanRecord;
    }
    /**
     * Describes the properties of a characteristic. This follows Bluetooth Core
Specification BT 4.2 Vol 3 Part G 3.3.1. Characteristic Properties.
     */
    export interface CharacteristicProperties {
      broadcast?: boolean;
      read?: boolean;
      writeWithoutResponse?: boolean;
      write?: boolean;
      notify?: boolean;
      indicate?: boolean;
      authenticatedSignedWrites?: boolean;
      extendedProperties?: boolean;
    }
    /**
     * Event for when a GATT operation of |type| to the peripheral with |address|
happened.
     */
    export type gattOperationReceivedPayload = {
      address: string;
      type: GATTOperationType;
    };
    /**
     * Event for when a characteristic operation of |type| to the characteristic
respresented by |characteristicId| happened. |data| and |writeType| is
expected to exist when |type| is write.
     */
    export type characteristicOperationReceivedPayload = {
      characteristicId: string;
      type: CharacteristicOperationType;
      data?: binary;
      writeType?: CharacteristicWriteType;
    };
    /**
     * Event for when a descriptor operation of |type| to the descriptor
respresented by |descriptorId| happened. |data| is expected to exist when
|type| is write.
     */
    export type descriptorOperationReceivedPayload = {
      descriptorId: string;
      type: DescriptorOperationType;
      data?: binary;
    };
    /**
     * Enable the BluetoothEmulation domain.
     */
    export type enableParameters = {
      /**
       * State of the simulated central.
       */
      state: CentralState;
      /**
       * If the simulated central supports low-energy.
       */
      leSupported: boolean;
    };
    export type enableReturnValue = {};
    /**
     * Set the state of the simulated central.
     */
    export type setSimulatedCentralStateParameters = {
      /**
       * State of the simulated central.
       */
      state: CentralState;
    };
    export type setSimulatedCentralStateReturnValue = {};
    /**
     * Disable the BluetoothEmulation domain.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Simulates a peripheral with |address|, |name| and |knownServiceUuids|
that has already been connected to the system.
     */
    export type simulatePreconnectedPeripheralParameters = {
      address: string;
      name: string;
      manufacturerData: ManufacturerData[];
      knownServiceUuids: string[];
    };
    export type simulatePreconnectedPeripheralReturnValue = {};
    /**
     * Simulates an advertisement packet described in |entry| being received by
the central.
     */
    export type simulateAdvertisementParameters = {
      entry: ScanEntry;
    };
    export type simulateAdvertisementReturnValue = {};
    /**
     * Simulates the response code from the peripheral with |address| for a
GATT operation of |type|. The |code| value follows the HCI Error Codes from
Bluetooth Core Specification Vol 2 Part D 1.3 List Of Error Codes.
     */
    export type simulateGATTOperationResponseParameters = {
      address: string;
      type: GATTOperationType;
      code: number;
    };
    export type simulateGATTOperationResponseReturnValue = {};
    /**
     * Simulates the response from the characteristic with |characteristicId| for a
characteristic operation of |type|. The |code| value follows the Error
Codes from Bluetooth Core Specification Vol 3 Part F 3.4.1.1 Error Response.
The |data| is expected to exist when simulating a successful read operation
response.
     */
    export type simulateCharacteristicOperationResponseParameters = {
      characteristicId: string;
      type: CharacteristicOperationType;
      code: number;
      data?: binary;
    };
    export type simulateCharacteristicOperationResponseReturnValue = {};
    /**
     * Simulates the response from the descriptor with |descriptorId| for a
descriptor operation of |type|. The |code| value follows the Error
Codes from Bluetooth Core Specification Vol 3 Part F 3.4.1.1 Error Response.
The |data| is expected to exist when simulating a successful read operation
response.
     */
    export type simulateDescriptorOperationResponseParameters = {
      descriptorId: string;
      type: DescriptorOperationType;
      code: number;
      data?: binary;
    };
    export type simulateDescriptorOperationResponseReturnValue = {};
    /**
     * Adds a service with |serviceUuid| to the peripheral with |address|.
     */
    export type addServiceParameters = {
      address: string;
      serviceUuid: string;
    };
    export type addServiceReturnValue = {
      /**
       * An identifier that uniquely represents this service.
       */
      serviceId: string;
    };
    /**
     * Removes the service respresented by |serviceId| from the simulated central.
     */
    export type removeServiceParameters = {
      serviceId: string;
    };
    export type removeServiceReturnValue = {};
    /**
     * Adds a characteristic with |characteristicUuid| and |properties| to the
service represented by |serviceId|.
     */
    export type addCharacteristicParameters = {
      serviceId: string;
      characteristicUuid: string;
      properties: CharacteristicProperties;
    };
    export type addCharacteristicReturnValue = {
      /**
       * An identifier that uniquely represents this characteristic.
       */
      characteristicId: string;
    };
    /**
     * Removes the characteristic respresented by |characteristicId| from the
simulated central.
     */
    export type removeCharacteristicParameters = {
      characteristicId: string;
    };
    export type removeCharacteristicReturnValue = {};
    /**
     * Adds a descriptor with |descriptorUuid| to the characteristic respresented
by |characteristicId|.
     */
    export type addDescriptorParameters = {
      characteristicId: string;
      descriptorUuid: string;
    };
    export type addDescriptorReturnValue = {
      /**
       * An identifier that uniquely represents this descriptor.
       */
      descriptorId: string;
    };
    /**
     * Removes the descriptor with |descriptorId| from the simulated central.
     */
    export type removeDescriptorParameters = {
      descriptorId: string;
    };
    export type removeDescriptorReturnValue = {};
    /**
     * Simulates a GATT disconnection from the peripheral with |address|.
     */
    export type simulateGATTDisconnectionParameters = {
      address: string;
    };
    export type simulateGATTDisconnectionReturnValue = {};
  }
  /**
   * The Browser domain defines methods and events for browser managing.
   */
  export namespace Browser {
    export type BrowserContextID = string;
    export type WindowID = number;
    /**
     * The state of the browser window.
     */
    export type WindowState = "normal" | "minimized" | "maximized" | "fullscreen";
    /**
     * Browser window bounds information
     */
    export interface Bounds {
      /**
       * The offset from the left edge of the screen to the window in pixels.
       */
      left?: number;
      /**
       * The offset from the top edge of the screen to the window in pixels.
       */
      top?: number;
      /**
       * The window width in pixels.
       */
      width?: number;
      /**
       * The window height in pixels.
       */
      height?: number;
      /**
       * The window state. Default to normal.
       */
      windowState?: WindowState;
    }
    export type PermissionType = "ar" | "audioCapture" | "automaticFullscreen" | "backgroundFetch" | "backgroundSync" | "cameraPanTiltZoom" | "capturedSurfaceControl" | "clipboardReadWrite" | "clipboardSanitizedWrite" | "displayCapture" | "durableStorage" | "geolocation" | "handTracking" | "idleDetection" | "keyboardLock" | "localFonts" | "localNetwork" | "localNetworkAccess" | "loopbackNetwork" | "midi" | "midiSysex" | "nfc" | "notifications" | "paymentHandler" | "periodicBackgroundSync" | "pointerLock" | "protectedMediaIdentifier" | "sensors" | "smartCard" | "speakerSelection" | "storageAccess" | "topLevelStorageAccess" | "videoCapture" | "vr" | "wakeLockScreen" | "wakeLockSystem" | "webAppInstallation" | "webPrinting" | "windowManagement";
    export type PermissionSetting = "granted" | "denied" | "prompt";
    /**
     * Definition of PermissionDescriptor defined in the Permissions API:
https://w3c.github.io/permissions/#dom-permissiondescriptor.
     */
    export interface PermissionDescriptor {
      /**
       * Name of permission.
See https://cs.chromium.org/chromium/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl for valid permission names.
       */
      name: string;
      /**
       * For "midi" permission, may also specify sysex control.
       */
      sysex?: boolean;
      /**
       * For "push" permission, may specify userVisibleOnly.
Note that userVisibleOnly = true is the only currently supported type.
       */
      userVisibleOnly?: boolean;
      /**
       * For "clipboard" permission, may specify allowWithoutSanitization.
       */
      allowWithoutSanitization?: boolean;
      /**
       * For "fullscreen" permission, must specify allowWithoutGesture:true.
       */
      allowWithoutGesture?: boolean;
      /**
       * For "camera" permission, may specify panTiltZoom.
       */
      panTiltZoom?: boolean;
    }
    /**
     * Browser command ids used by executeBrowserCommand.
     */
    export type BrowserCommandId = "openTabSearch" | "closeTabSearch" | "openGlic";
    /**
     * Chrome histogram bucket.
     */
    export interface Bucket {
      /**
       * Minimum value (inclusive).
       */
      low: number;
      /**
       * Maximum value (exclusive).
       */
      high: number;
      /**
       * Number of samples.
       */
      count: number;
    }
    /**
     * Chrome histogram.
     */
    export interface Histogram {
      /**
       * Name.
       */
      name: string;
      /**
       * Sum of sample values.
       */
      sum: number;
      /**
       * Total number of samples.
       */
      count: number;
      /**
       * Buckets.
       */
      buckets: Bucket[];
    }
    export type PrivacySandboxAPI = "BiddingAndAuctionServices" | "TrustedKeyValue";
    /**
     * Fired when page is about to start a download.
     */
    export type downloadWillBeginPayload = {
      /**
       * Id of the frame that caused the download to begin.
       */
      frameId: Page.FrameId;
      /**
       * Global unique identifier of the download.
       */
      guid: string;
      /**
       * URL of the resource being downloaded.
       */
      url: string;
      /**
       * Suggested file name of the resource (the actual name of the file saved on disk may differ).
       */
      suggestedFilename: string;
    };
    /**
     * Fired when download makes progress. Last call has |done| == true.
     */
    export type downloadProgressPayload = {
      /**
       * Global unique identifier of the download.
       */
      guid: string;
      /**
       * Total expected bytes to download.
       */
      totalBytes: number;
      /**
       * Total bytes received.
       */
      receivedBytes: number;
      /**
       * Download status.
       */
      state: "inProgress" | "completed" | "canceled";
      /**
       * If download is "completed", provides the path of the downloaded file.
Depending on the platform, it is not guaranteed to be set, nor the file
is guaranteed to exist.
       */
      filePath?: string;
    };
    /**
     * Set permission settings for given embedding and embedded origins.
     */
    export type setPermissionParameters = {
      /**
       * Descriptor of permission to override.
       */
      permission: PermissionDescriptor;
      /**
       * Setting of the permission.
       */
      setting: PermissionSetting;
      /**
       * Embedding origin the permission applies to, all origins if not specified.
       */
      origin?: string;
      /**
       * Embedded origin the permission applies to. It is ignored unless the embedding origin is
present and valid. If the embedding origin is provided but the embedded origin isn't, the
embedding origin is used as the embedded origin.
       */
      embeddedOrigin?: string;
      /**
       * Context to override. When omitted, default browser context is used.
       */
      browserContextId?: BrowserContextID;
    };
    export type setPermissionReturnValue = {};
    /**
     * Grant specific permissions to the given origin and reject all others. Deprecated. Use
setPermission instead.
     */
    export type grantPermissionsParameters = {
      permissions: PermissionType[];
      /**
       * Origin the permission applies to, all origins if not specified.
       */
      origin?: string;
      /**
       * BrowserContext to override permissions. When omitted, default browser context is used.
       */
      browserContextId?: BrowserContextID;
    };
    export type grantPermissionsReturnValue = {};
    /**
     * Reset all permission management for all origins.
     */
    export type resetPermissionsParameters = {
      /**
       * BrowserContext to reset permissions. When omitted, default browser context is used.
       */
      browserContextId?: BrowserContextID;
    };
    export type resetPermissionsReturnValue = {};
    /**
     * Set the behavior when downloading a file.
     */
    export type setDownloadBehaviorParameters = {
      /**
       * Whether to allow all or deny all download requests, or use default Chrome behavior if
available (otherwise deny). |allowAndName| allows download and names files according to
their download guids.
       */
      behavior: "deny" | "allow" | "allowAndName" | "default";
      /**
       * BrowserContext to set download behavior. When omitted, default browser context is used.
       */
      browserContextId?: BrowserContextID;
      /**
       * The default path to save downloaded files to. This is required if behavior is set to 'allow'
or 'allowAndName'.
       */
      downloadPath?: string;
      /**
       * Whether to emit download events (defaults to false).
       */
      eventsEnabled?: boolean;
    };
    export type setDownloadBehaviorReturnValue = {};
    /**
     * Cancel a download if in progress
     */
    export type cancelDownloadParameters = {
      /**
       * Global unique identifier of the download.
       */
      guid: string;
      /**
       * BrowserContext to perform the action in. When omitted, default browser context is used.
       */
      browserContextId?: BrowserContextID;
    };
    export type cancelDownloadReturnValue = {};
    /**
     * Close browser gracefully.
     */
    export type closeParameters = {};
    export type closeReturnValue = {};
    /**
     * Crashes browser on the main thread.
     */
    export type crashParameters = {};
    export type crashReturnValue = {};
    /**
     * Crashes GPU process.
     */
    export type crashGpuProcessParameters = {};
    export type crashGpuProcessReturnValue = {};
    /**
     * Returns version information.
     */
    export type getVersionParameters = {};
    export type getVersionReturnValue = {
      /**
       * Protocol version.
       */
      protocolVersion: string;
      /**
       * Product name.
       */
      product: string;
      /**
       * Product revision.
       */
      revision: string;
      /**
       * User-Agent.
       */
      userAgent: string;
      /**
       * V8 version.
       */
      jsVersion: string;
    };
    /**
     * Returns the command line switches for the browser process if, and only if
--enable-automation is on the commandline.
     */
    export type getBrowserCommandLineParameters = {};
    export type getBrowserCommandLineReturnValue = {
      /**
       * Commandline parameters
       */
      arguments: string[];
    };
    /**
     * Get Chrome histograms.
     */
    export type getHistogramsParameters = {
      /**
       * Requested substring in name. Only histograms which have query as a
substring in their name are extracted. An empty or absent query returns
all histograms.
       */
      query?: string;
      /**
       * If true, retrieve delta since last delta call.
       */
      delta?: boolean;
    };
    export type getHistogramsReturnValue = {
      /**
       * Histograms.
       */
      histograms: Histogram[];
    };
    /**
     * Get a Chrome histogram by name.
     */
    export type getHistogramParameters = {
      /**
       * Requested histogram name.
       */
      name: string;
      /**
       * If true, retrieve delta since last delta call.
       */
      delta?: boolean;
    };
    export type getHistogramReturnValue = {
      /**
       * Histogram.
       */
      histogram: Histogram;
    };
    /**
     * Get position and size of the browser window.
     */
    export type getWindowBoundsParameters = {
      /**
       * Browser window id.
       */
      windowId: WindowID;
    };
    export type getWindowBoundsReturnValue = {
      /**
       * Bounds information of the window. When window state is 'minimized', the restored window
position and size are returned.
       */
      bounds: Bounds;
    };
    /**
     * Get the browser window that contains the devtools target.
     */
    export type getWindowForTargetParameters = {
      /**
       * Devtools agent host id. If called as a part of the session, associated targetId is used.
       */
      targetId?: Target.TargetID;
    };
    export type getWindowForTargetReturnValue = {
      /**
       * Browser window id.
       */
      windowId: WindowID;
      /**
       * Bounds information of the window. When window state is 'minimized', the restored window
position and size are returned.
       */
      bounds: Bounds;
    };
    /**
     * Set position and/or size of the browser window.
     */
    export type setWindowBoundsParameters = {
      /**
       * Browser window id.
       */
      windowId: WindowID;
      /**
       * New window bounds. The 'minimized', 'maximized' and 'fullscreen' states cannot be combined
with 'left', 'top', 'width' or 'height'. Leaves unspecified fields unchanged.
       */
      bounds: Bounds;
    };
    export type setWindowBoundsReturnValue = {};
    /**
     * Set size of the browser contents resizing browser window as necessary.
     */
    export type setContentsSizeParameters = {
      /**
       * Browser window id.
       */
      windowId: WindowID;
      /**
       * The window contents width in DIP. Assumes current width if omitted.
Must be specified if 'height' is omitted.
       */
      width?: number;
      /**
       * The window contents height in DIP. Assumes current height if omitted.
Must be specified if 'width' is omitted.
       */
      height?: number;
    };
    export type setContentsSizeReturnValue = {};
    /**
     * Set dock tile details, platform-specific.
     */
    export type setDockTileParameters = {
      badgeLabel?: string;
      /**
       * Png encoded image.
       */
      image?: binary;
    };
    export type setDockTileReturnValue = {};
    /**
     * Invoke custom browser commands used by telemetry.
     */
    export type executeBrowserCommandParameters = {
      commandId: BrowserCommandId;
    };
    export type executeBrowserCommandReturnValue = {};
    /**
     * Allows a site to use privacy sandbox features that require enrollment
without the site actually being enrolled. Only supported on page targets.
     */
    export type addPrivacySandboxEnrollmentOverrideParameters = {
      url: string;
    };
    export type addPrivacySandboxEnrollmentOverrideReturnValue = {};
    /**
     * Configures encryption keys used with a given privacy sandbox API to talk
to a trusted coordinator.  Since this is intended for test automation only,
coordinatorOrigin must be a .test domain. No existing coordinator
configuration for the origin may exist.
     */
    export type addPrivacySandboxCoordinatorKeyConfigParameters = {
      api: PrivacySandboxAPI;
      coordinatorOrigin: string;
      keyConfig: string;
      /**
       * BrowserContext to perform the action in. When omitted, default browser
context is used.
       */
      browserContextId?: BrowserContextID;
    };
    export type addPrivacySandboxCoordinatorKeyConfigReturnValue = {};
  }
  /**
   * This domain exposes CSS read/write operations. All CSS objects (stylesheets, rules, and styles)
have an associated `id` used in subsequent operations on the related object. Each object type has
a specific `id` structure, and those are not interchangeable between objects of different kinds.
CSS objects can be loaded using the `get*ForNode()` calls (which accept a DOM node id). A client
can also keep track of stylesheets via the `styleSheetAdded`/`styleSheetRemoved` events and
subsequently load the required stylesheet contents using the `getStyleSheet[Text]()` methods.
   */
  export namespace CSS {
    /**
     * Stylesheet type: "injected" for stylesheets injected via extension, "user-agent" for user-agent
stylesheets, "inspector" for stylesheets created by the inspector (i.e. those holding the "via
inspector" rules), "regular" for regular stylesheets.
     */
    export type StyleSheetOrigin = "injected" | "user-agent" | "inspector" | "regular";
    /**
     * CSS rule collection for a single pseudo style.
     */
    export interface PseudoElementMatches {
      /**
       * Pseudo element type.
       */
      pseudoType: DOM.PseudoType;
      /**
       * Pseudo element custom ident.
       */
      pseudoIdentifier?: string;
      /**
       * Matches of CSS rules applicable to the pseudo style.
       */
      matches: RuleMatch[];
    }
    /**
     * CSS style coming from animations with the name of the animation.
     */
    export interface CSSAnimationStyle {
      /**
       * The name of the animation.
       */
      name?: string;
      /**
       * The style coming from the animation.
       */
      style: CSSStyle;
    }
    /**
     * Inherited CSS rule collection from ancestor node.
     */
    export interface InheritedStyleEntry {
      /**
       * The ancestor node's inline style, if any, in the style inheritance chain.
       */
      inlineStyle?: CSSStyle;
      /**
       * Matches of CSS rules matching the ancestor node in the style inheritance chain.
       */
      matchedCSSRules: RuleMatch[];
    }
    /**
     * Inherited CSS style collection for animated styles from ancestor node.
     */
    export interface InheritedAnimatedStyleEntry {
      /**
       * Styles coming from the animations of the ancestor, if any, in the style inheritance chain.
       */
      animationStyles?: CSSAnimationStyle[];
      /**
       * The style coming from the transitions of the ancestor, if any, in the style inheritance chain.
       */
      transitionsStyle?: CSSStyle;
    }
    /**
     * Inherited pseudo element matches from pseudos of an ancestor node.
     */
    export interface InheritedPseudoElementMatches {
      /**
       * Matches of pseudo styles from the pseudos of an ancestor node.
       */
      pseudoElements: PseudoElementMatches[];
    }
    /**
     * Match data for a CSS rule.
     */
    export interface RuleMatch {
      /**
       * CSS rule in the match.
       */
      rule: CSSRule;
      /**
       * Matching selector indices in the rule's selectorList selectors (0-based).
       */
      matchingSelectors: number[];
    }
    /**
     * Data for a simple selector (these are delimited by commas in a selector list).
     */
    export interface Value {
      /**
       * Value text.
       */
      text: string;
      /**
       * Value range in the underlying resource (if available).
       */
      range?: SourceRange;
      /**
       * Specificity of the selector.
       */
      specificity?: Specificity;
    }
    /**
     * Specificity:
https://drafts.csswg.org/selectors/#specificity-rules
     */
    export interface Specificity {
      /**
       * The a component, which represents the number of ID selectors.
       */
      a: number;
      /**
       * The b component, which represents the number of class selectors, attributes selectors, and
pseudo-classes.
       */
      b: number;
      /**
       * The c component, which represents the number of type selectors and pseudo-elements.
       */
      c: number;
    }
    /**
     * Selector list data.
     */
    export interface SelectorList {
      /**
       * Selectors in the list.
       */
      selectors: Value[];
      /**
       * Rule selector text.
       */
      text: string;
    }
    /**
     * CSS stylesheet metainformation.
     */
    export interface CSSStyleSheetHeader {
      /**
       * The stylesheet identifier.
       */
      styleSheetId: DOM.StyleSheetId;
      /**
       * Owner frame identifier.
       */
      frameId: Page.FrameId;
      /**
       * Stylesheet resource URL. Empty if this is a constructed stylesheet created using
new CSSStyleSheet() (but non-empty if this is a constructed stylesheet imported
as a CSS module script).
       */
      sourceURL: string;
      /**
       * URL of source map associated with the stylesheet (if any).
       */
      sourceMapURL?: string;
      /**
       * Stylesheet origin.
       */
      origin: StyleSheetOrigin;
      /**
       * Stylesheet title.
       */
      title: string;
      /**
       * The backend id for the owner node of the stylesheet.
       */
      ownerNode?: DOM.BackendNodeId;
      /**
       * Denotes whether the stylesheet is disabled.
       */
      disabled: boolean;
      /**
       * Whether the sourceURL field value comes from the sourceURL comment.
       */
      hasSourceURL?: boolean;
      /**
       * Whether this stylesheet is created for STYLE tag by parser. This flag is not set for
document.written STYLE tags.
       */
      isInline: boolean;
      /**
       * Whether this stylesheet is mutable. Inline stylesheets become mutable
after they have been modified via CSSOM API.
`<link>` element's stylesheets become mutable only if DevTools modifies them.
Constructed stylesheets (new CSSStyleSheet()) are mutable immediately after creation.
       */
      isMutable: boolean;
      /**
       * True if this stylesheet is created through new CSSStyleSheet() or imported as a
CSS module script.
       */
      isConstructed: boolean;
      /**
       * Line offset of the stylesheet within the resource (zero based).
       */
      startLine: number;
      /**
       * Column offset of the stylesheet within the resource (zero based).
       */
      startColumn: number;
      /**
       * Size of the content (in characters).
       */
      length: number;
      /**
       * Line offset of the end of the stylesheet within the resource (zero based).
       */
      endLine: number;
      /**
       * Column offset of the end of the stylesheet within the resource (zero based).
       */
      endColumn: number;
      /**
       * If the style sheet was loaded from a network resource, this indicates when the resource failed to load
       */
      loadingFailed?: boolean;
    }
    /**
     * CSS rule representation.
     */
    export interface CSSRule {
      /**
       * The css style sheet identifier (absent for user agent stylesheet and user-specified
stylesheet rules) this rule came from.
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * Rule selector data.
       */
      selectorList: SelectorList;
      /**
       * Array of selectors from ancestor style rules, sorted by distance from the current rule.
       */
      nestingSelectors?: string[];
      /**
       * Parent stylesheet's origin.
       */
      origin: StyleSheetOrigin;
      /**
       * Associated style declaration.
       */
      style: CSSStyle;
      /**
       * The BackendNodeId of the DOM node that constitutes the origin tree scope of this rule.
       */
      originTreeScopeNodeId?: DOM.BackendNodeId;
      /**
       * Media list array (for rules involving media queries). The array enumerates media queries
starting with the innermost one, going outwards.
       */
      media?: CSSMedia[];
      /**
       * Container query list array (for rules involving container queries).
The array enumerates container queries starting with the innermost one, going outwards.
       */
      containerQueries?: CSSContainerQuery[];
      /**
       * @supports CSS at-rule array.
The array enumerates @supports at-rules starting with the innermost one, going outwards.
       */
      supports?: CSSSupports[];
      /**
       * Cascade layer array. Contains the layer hierarchy that this rule belongs to starting
with the innermost layer and going outwards.
       */
      layers?: CSSLayer[];
      /**
       * @scope CSS at-rule array.
The array enumerates @scope at-rules starting with the innermost one, going outwards.
       */
      scopes?: CSSScope[];
      /**
       * The array keeps the types of ancestor CSSRules from the innermost going outwards.
       */
      ruleTypes?: CSSRuleType[];
      /**
       * @starting-style CSS at-rule array.
The array enumerates @starting-style at-rules starting with the innermost one, going outwards.
       */
      startingStyles?: CSSStartingStyle[];
      /**
       * @navigation CSS at-rule array.
The array enumerates @navigation at-rules starting with the innermost one, going outwards.
       */
      navigations?: CSSNavigation[];
    }
    /**
     * Enum indicating the type of a CSS rule, used to represent the order of a style rule's ancestors.
This list only contains rule types that are collected during the ancestor rule collection.
     */
    export type CSSRuleType = "MediaRule" | "SupportsRule" | "ContainerRule" | "LayerRule" | "ScopeRule" | "StyleRule" | "StartingStyleRule" | "NavigationRule";
    /**
     * CSS coverage information.
     */
    export interface RuleUsage {
      /**
       * The css style sheet identifier (absent for user agent stylesheet and user-specified
stylesheet rules) this rule came from.
       */
      styleSheetId: DOM.StyleSheetId;
      /**
       * Offset of the start of the rule (including selector) from the beginning of the stylesheet.
       */
      startOffset: number;
      /**
       * Offset of the end of the rule body from the beginning of the stylesheet.
       */
      endOffset: number;
      /**
       * Indicates whether the rule was actually used by some element in the page.
       */
      used: boolean;
    }
    /**
     * Text range within a resource. All numbers are zero-based.
     */
    export interface SourceRange {
      /**
       * Start line of range.
       */
      startLine: number;
      /**
       * Start column of range (inclusive).
       */
      startColumn: number;
      /**
       * End line of range
       */
      endLine: number;
      /**
       * End column of range (exclusive).
       */
      endColumn: number;
    }
    export interface ShorthandEntry {
      /**
       * Shorthand name.
       */
      name: string;
      /**
       * Shorthand value.
       */
      value: string;
      /**
       * Whether the property has "!important" annotation (implies `false` if absent).
       */
      important?: boolean;
    }
    export interface CSSComputedStyleProperty {
      /**
       * Computed style property name.
       */
      name: string;
      /**
       * Computed style property value.
       */
      value: string;
    }
    export interface ComputedStyleExtraFields {
      /**
       * Returns whether or not this node is being rendered with base appearance,
which happens when it has its appearance property set to base/base-select
or it is in the subtree of an element being rendered with base appearance.
       */
      isAppearanceBase: boolean;
    }
    /**
     * CSS style representation.
     */
    export interface CSSStyle {
      /**
       * The css style sheet identifier (absent for user agent stylesheet and user-specified
stylesheet rules) this rule came from.
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * CSS properties in the style.
       */
      cssProperties: CSSProperty[];
      /**
       * Computed values for all shorthands found in the style.
       */
      shorthandEntries: ShorthandEntry[];
      /**
       * Style declaration text (if available).
       */
      cssText?: string;
      /**
       * Style declaration range in the enclosing stylesheet (if available).
       */
      range?: SourceRange;
    }
    /**
     * CSS property declaration data.
     */
    export interface CSSProperty {
      /**
       * The property name.
       */
      name: string;
      /**
       * The property value.
       */
      value: string;
      /**
       * Whether the property has "!important" annotation (implies `false` if absent).
       */
      important?: boolean;
      /**
       * Whether the property is implicit (implies `false` if absent).
       */
      implicit?: boolean;
      /**
       * The full property text as specified in the style.
       */
      text?: string;
      /**
       * Whether the property is understood by the browser (implies `true` if absent).
       */
      parsedOk?: boolean;
      /**
       * Whether the property is disabled by the user (present for source-based properties only).
       */
      disabled?: boolean;
      /**
       * The entire property range in the enclosing style declaration (if available).
       */
      range?: SourceRange;
      /**
       * Parsed longhand components of this property if it is a shorthand.
This field will be empty if the given property is not a shorthand.
       */
      longhandProperties?: CSSProperty[];
    }
    /**
     * CSS media rule descriptor.
     */
    export interface CSSMedia {
      /**
       * Media query text.
       */
      text: string;
      /**
       * Source of the media query: "mediaRule" if specified by a @media rule, "importRule" if
specified by an @import rule, "linkedSheet" if specified by a "media" attribute in a linked
stylesheet's LINK tag, "inlineSheet" if specified by a "media" attribute in an inline
stylesheet's STYLE tag.
       */
      source: "mediaRule" | "importRule" | "linkedSheet" | "inlineSheet";
      /**
       * URL of the document containing the media query description.
       */
      sourceURL?: string;
      /**
       * The associated rule (@media or @import) header range in the enclosing stylesheet (if
available).
       */
      range?: SourceRange;
      /**
       * Identifier of the stylesheet containing this object (if exists).
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * Array of media queries.
       */
      mediaList?: MediaQuery[];
    }
    /**
     * Media query descriptor.
     */
    export interface MediaQuery {
      /**
       * Array of media query expressions.
       */
      expressions: MediaQueryExpression[];
      /**
       * Whether the media query condition is satisfied.
       */
      active: boolean;
    }
    /**
     * Media query expression descriptor.
     */
    export interface MediaQueryExpression {
      /**
       * Media query expression value.
       */
      value: number;
      /**
       * Media query expression units.
       */
      unit: string;
      /**
       * Media query expression feature.
       */
      feature: string;
      /**
       * The associated range of the value text in the enclosing stylesheet (if available).
       */
      valueRange?: SourceRange;
      /**
       * Computed length of media query expression (if applicable).
       */
      computedLength?: number;
    }
    /**
     * CSS container query rule descriptor.
     */
    export interface CSSContainerQuery {
      /**
       * Container query text.
       */
      text: string;
      /**
       * The associated rule header range in the enclosing stylesheet (if
available).
       */
      range?: SourceRange;
      /**
       * Identifier of the stylesheet containing this object (if exists).
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * Optional name for the container.
       */
      name?: string;
      /**
       * Optional physical axes queried for the container.
       */
      physicalAxes?: DOM.PhysicalAxes;
      /**
       * Optional logical axes queried for the container.
       */
      logicalAxes?: DOM.LogicalAxes;
      /**
       * true if the query contains scroll-state() queries.
       */
      queriesScrollState?: boolean;
      /**
       * true if the query contains anchored() queries.
       */
      queriesAnchored?: boolean;
    }
    /**
     * CSS Supports at-rule descriptor.
     */
    export interface CSSSupports {
      /**
       * Supports rule text.
       */
      text: string;
      /**
       * Whether the supports condition is satisfied.
       */
      active: boolean;
      /**
       * The associated rule header range in the enclosing stylesheet (if
available).
       */
      range?: SourceRange;
      /**
       * Identifier of the stylesheet containing this object (if exists).
       */
      styleSheetId?: DOM.StyleSheetId;
    }
    /**
     * CSS Navigation at-rule descriptor.
     */
    export interface CSSNavigation {
      /**
       * Navigation rule text.
       */
      text: string;
      /**
       * Whether the navigation condition is satisfied.
       */
      active?: boolean;
      /**
       * The associated rule header range in the enclosing stylesheet (if
available).
       */
      range?: SourceRange;
      /**
       * Identifier of the stylesheet containing this object (if exists).
       */
      styleSheetId?: DOM.StyleSheetId;
    }
    /**
     * CSS Scope at-rule descriptor.
     */
    export interface CSSScope {
      /**
       * Scope rule text.
       */
      text: string;
      /**
       * The associated rule header range in the enclosing stylesheet (if
available).
       */
      range?: SourceRange;
      /**
       * Identifier of the stylesheet containing this object (if exists).
       */
      styleSheetId?: DOM.StyleSheetId;
    }
    /**
     * CSS Layer at-rule descriptor.
     */
    export interface CSSLayer {
      /**
       * Layer name.
       */
      text: string;
      /**
       * The associated rule header range in the enclosing stylesheet (if
available).
       */
      range?: SourceRange;
      /**
       * Identifier of the stylesheet containing this object (if exists).
       */
      styleSheetId?: DOM.StyleSheetId;
    }
    /**
     * CSS Starting Style at-rule descriptor.
     */
    export interface CSSStartingStyle {
      /**
       * The associated rule header range in the enclosing stylesheet (if
available).
       */
      range?: SourceRange;
      /**
       * Identifier of the stylesheet containing this object (if exists).
       */
      styleSheetId?: DOM.StyleSheetId;
    }
    /**
     * CSS Layer data.
     */
    export interface CSSLayerData {
      /**
       * Layer name.
       */
      name: string;
      /**
       * Direct sub-layers
       */
      subLayers?: CSSLayerData[];
      /**
       * Layer order. The order determines the order of the layer in the cascade order.
A higher number has higher priority in the cascade order.
       */
      order: number;
    }
    /**
     * Information about amount of glyphs that were rendered with given font.
     */
    export interface PlatformFontUsage {
      /**
       * Font's family name reported by platform.
       */
      familyName: string;
      /**
       * Font's PostScript name reported by platform.
       */
      postScriptName: string;
      /**
       * Indicates if the font was downloaded or resolved locally.
       */
      isCustomFont: boolean;
      /**
       * Amount of glyphs that were rendered with this font.
       */
      glyphCount: number;
    }
    /**
     * Information about font variation axes for variable fonts
     */
    export interface FontVariationAxis {
      /**
       * The font-variation-setting tag (a.k.a. "axis tag").
       */
      tag: string;
      /**
       * Human-readable variation name in the default language (normally, "en").
       */
      name: string;
      /**
       * The minimum value (inclusive) the font supports for this tag.
       */
      minValue: number;
      /**
       * The maximum value (inclusive) the font supports for this tag.
       */
      maxValue: number;
      /**
       * The default value.
       */
      defaultValue: number;
    }
    /**
     * Properties of a web font: https://www.w3.org/TR/2008/REC-CSS2-20080411/fonts.html#font-descriptions
and additional information such as platformFontFamily and fontVariationAxes.
     */
    export interface FontFace {
      /**
       * The font-family.
       */
      fontFamily: string;
      /**
       * The font-style.
       */
      fontStyle: string;
      /**
       * The font-variant.
       */
      fontVariant: string;
      /**
       * The font-weight.
       */
      fontWeight: string;
      /**
       * The font-stretch.
       */
      fontStretch: string;
      /**
       * The font-display.
       */
      fontDisplay: string;
      /**
       * The unicode-range.
       */
      unicodeRange: string;
      /**
       * The src.
       */
      src: string;
      /**
       * The resolved platform font family
       */
      platformFontFamily: string;
      /**
       * Available variation settings (a.k.a. "axes").
       */
      fontVariationAxes?: FontVariationAxis[];
    }
    /**
     * CSS try rule representation.
     */
    export interface CSSTryRule {
      /**
       * The css style sheet identifier (absent for user agent stylesheet and user-specified
stylesheet rules) this rule came from.
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * Parent stylesheet's origin.
       */
      origin: StyleSheetOrigin;
      /**
       * Associated style declaration.
       */
      style: CSSStyle;
    }
    /**
     * CSS @position-try rule representation.
     */
    export interface CSSPositionTryRule {
      /**
       * The prelude dashed-ident name
       */
      name: Value;
      /**
       * The css style sheet identifier (absent for user agent stylesheet and user-specified
stylesheet rules) this rule came from.
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * Parent stylesheet's origin.
       */
      origin: StyleSheetOrigin;
      /**
       * Associated style declaration.
       */
      style: CSSStyle;
      active: boolean;
    }
    /**
     * CSS keyframes rule representation.
     */
    export interface CSSKeyframesRule {
      /**
       * Animation name.
       */
      animationName: Value;
      /**
       * List of keyframes.
       */
      keyframes: CSSKeyframeRule[];
    }
    /**
     * Representation of a custom property registration through CSS.registerProperty
     */
    export interface CSSPropertyRegistration {
      propertyName: string;
      initialValue?: Value;
      inherits: boolean;
      syntax: string;
    }
    /**
     * CSS generic @rule representation.
     */
    export interface CSSAtRule {
      /**
       * Type of at-rule.
       */
      type: "font-face" | "font-feature-values" | "font-palette-values";
      /**
       * Subsection of font-feature-values, if this is a subsection.
       */
      subsection?: "swash" | "annotation" | "ornaments" | "stylistic" | "styleset" | "character-variant";
      /**
       * LINT.ThenChange(//third_party/blink/renderer/core/inspector/inspector_style_sheet.cc:FontVariantAlternatesFeatureType,//third_party/blink/renderer/core/inspector/inspector_css_agent.cc:FontVariantAlternatesFeatureType)
Associated name, if applicable.
       */
      name?: Value;
      /**
       * The css style sheet identifier (absent for user agent stylesheet and user-specified
stylesheet rules) this rule came from.
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * Parent stylesheet's origin.
       */
      origin: StyleSheetOrigin;
      /**
       * Associated style declaration.
       */
      style: CSSStyle;
    }
    /**
     * CSS property at-rule representation.
     */
    export interface CSSPropertyRule {
      /**
       * The css style sheet identifier (absent for user agent stylesheet and user-specified
stylesheet rules) this rule came from.
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * Parent stylesheet's origin.
       */
      origin: StyleSheetOrigin;
      /**
       * Associated property name.
       */
      propertyName: Value;
      /**
       * Associated style declaration.
       */
      style: CSSStyle;
    }
    /**
     * CSS function argument representation.
     */
    export interface CSSFunctionParameter {
      /**
       * The parameter name.
       */
      name: string;
      /**
       * The parameter type.
       */
      type: string;
    }
    /**
     * CSS function conditional block representation.
     */
    export interface CSSFunctionConditionNode {
      /**
       * Media query for this conditional block. Only one type of condition should be set.
       */
      media?: CSSMedia;
      /**
       * Container query for this conditional block. Only one type of condition should be set.
       */
      containerQueries?: CSSContainerQuery;
      /**
       * @supports CSS at-rule condition. Only one type of condition should be set.
       */
      supports?: CSSSupports;
      /**
       * @navigation condition. Only one type of condition should be set.
       */
      navigation?: CSSNavigation;
      /**
       * Block body.
       */
      children: CSSFunctionNode[];
      /**
       * The condition text.
       */
      conditionText: string;
    }
    /**
     * Section of the body of a CSS function rule.
     */
    export interface CSSFunctionNode {
      /**
       * A conditional block. If set, style should not be set.
       */
      condition?: CSSFunctionConditionNode;
      /**
       * Values set by this node. If set, condition should not be set.
       */
      style?: CSSStyle;
    }
    /**
     * CSS function at-rule representation.
     */
    export interface CSSFunctionRule {
      /**
       * Name of the function.
       */
      name: Value;
      /**
       * The css style sheet identifier (absent for user agent stylesheet and user-specified
stylesheet rules) this rule came from.
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * Parent stylesheet's origin.
       */
      origin: StyleSheetOrigin;
      /**
       * List of parameters.
       */
      parameters: CSSFunctionParameter[];
      /**
       * Function body.
       */
      children: CSSFunctionNode[];
      /**
       * The BackendNodeId of the DOM node that constitutes the origin tree scope of this rule.
       */
      originTreeScopeNodeId?: DOM.BackendNodeId;
    }
    /**
     * CSS keyframe rule representation.
     */
    export interface CSSKeyframeRule {
      /**
       * The css style sheet identifier (absent for user agent stylesheet and user-specified
stylesheet rules) this rule came from.
       */
      styleSheetId?: DOM.StyleSheetId;
      /**
       * Parent stylesheet's origin.
       */
      origin: StyleSheetOrigin;
      /**
       * Associated key text.
       */
      keyText: Value;
      /**
       * Associated style declaration.
       */
      style: CSSStyle;
    }
    /**
     * A descriptor of operation to mutate style declaration text.
     */
    export interface StyleDeclarationEdit {
      /**
       * The css style sheet identifier.
       */
      styleSheetId: DOM.StyleSheetId;
      /**
       * The range of the style text in the enclosing stylesheet.
       */
      range: SourceRange;
      /**
       * New style text.
       */
      text: string;
    }
    /**
     * Fires whenever a web font is updated.  A non-empty font parameter indicates a successfully loaded
web font.
     */
    export type fontsUpdatedPayload = {
      /**
       * The web font that has loaded.
       */
      font?: FontFace;
    };
    /**
     * Fires whenever a MediaQuery result changes (for example, after a browser window has been
resized.) The current implementation considers only viewport-dependent media features.
     */
    export type mediaQueryResultChangedPayload = void;
    /**
     * Fired whenever an active document stylesheet is added.
     */
    export type styleSheetAddedPayload = {
      /**
       * Added stylesheet metainfo.
       */
      header: CSSStyleSheetHeader;
    };
    /**
     * Fired whenever a stylesheet is changed as a result of the client operation.
     */
    export type styleSheetChangedPayload = {
      styleSheetId: DOM.StyleSheetId;
    };
    /**
     * Fired whenever an active document stylesheet is removed.
     */
    export type styleSheetRemovedPayload = {
      /**
       * Identifier of the removed stylesheet.
       */
      styleSheetId: DOM.StyleSheetId;
    };
    export type computedStyleUpdatedPayload = {
      /**
       * The node id that has updated computed styles.
       */
      nodeId: DOM.NodeId;
    };
    /**
     * Inserts a new rule with the given `ruleText` in a stylesheet with given `styleSheetId`, at the
position specified by `location`.
     */
    export type addRuleParameters = {
      /**
       * The css style sheet identifier where a new rule should be inserted.
       */
      styleSheetId: DOM.StyleSheetId;
      /**
       * The text of a new rule.
       */
      ruleText: string;
      /**
       * Text position of a new rule in the target style sheet.
       */
      location: SourceRange;
      /**
       * NodeId for the DOM node in whose context custom property declarations for registered properties should be
validated. If omitted, declarations in the new rule text can only be validated statically, which may produce
incorrect results if the declaration contains a var() for example.
       */
      nodeForPropertySyntaxValidation?: DOM.NodeId;
    };
    export type addRuleReturnValue = {
      /**
       * The newly created rule.
       */
      rule: CSSRule;
    };
    /**
     * Returns all class names from specified stylesheet.
     */
    export type collectClassNamesParameters = {
      styleSheetId: DOM.StyleSheetId;
    };
    export type collectClassNamesReturnValue = {
      /**
       * Class name list.
       */
      classNames: string[];
    };
    /**
     * Creates a new special "via-inspector" stylesheet in the frame with given `frameId`.
     */
    export type createStyleSheetParameters = {
      /**
       * Identifier of the frame where "via-inspector" stylesheet should be created.
       */
      frameId: Page.FrameId;
      /**
       * If true, creates a new stylesheet for every call. If false,
returns a stylesheet previously created by a call with force=false
for the frame's document if it exists or creates a new stylesheet
(default: false).
       */
      force?: boolean;
    };
    export type createStyleSheetReturnValue = {
      /**
       * Identifier of the created "via-inspector" stylesheet.
       */
      styleSheetId: DOM.StyleSheetId;
    };
    /**
     * Disables the CSS agent for the given page.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been
enabled until the result of this command is received.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Ensures that the given node will have specified pseudo-classes whenever its style is computed by
the browser.
     */
    export type forcePseudoStateParameters = {
      /**
       * The element id for which to force the pseudo state.
       */
      nodeId: DOM.NodeId;
      /**
       * Element pseudo classes to force when computing the element's style.
       */
      forcedPseudoClasses: string[];
    };
    export type forcePseudoStateReturnValue = {};
    /**
     * Ensures that the given node is in its starting-style state.
     */
    export type forceStartingStyleParameters = {
      /**
       * The element id for which to force the starting-style state.
       */
      nodeId: DOM.NodeId;
      /**
       * Boolean indicating if this is on or off.
       */
      forced: boolean;
    };
    export type forceStartingStyleReturnValue = {};
    export type getBackgroundColorsParameters = {
      /**
       * Id of the node to get background colors for.
       */
      nodeId: DOM.NodeId;
    };
    export type getBackgroundColorsReturnValue = {
      /**
       * The range of background colors behind this element, if it contains any visible text. If no
visible text is present, this will be undefined. In the case of a flat background color,
this will consist of simply that color. In the case of a gradient, this will consist of each
of the color stops. For anything more complicated, this will be an empty array. Images will
be ignored (as if the image had failed to load).
       */
      backgroundColors?: string[];
      /**
       * The computed font size for this node, as a CSS computed value string (e.g. '12px').
       */
      computedFontSize?: string;
      /**
       * The computed font weight for this node, as a CSS computed value string (e.g. 'normal' or
'100').
       */
      computedFontWeight?: string;
    };
    /**
     * Returns the computed style for a DOM node identified by `nodeId`.
     */
    export type getComputedStyleForNodeParameters = {
      nodeId: DOM.NodeId;
    };
    export type getComputedStyleForNodeReturnValue = {
      /**
       * Computed style for the specified DOM node.
       */
      computedStyle: CSSComputedStyleProperty[];
      /**
       * A list of non-standard "extra fields" which blink stores alongside each
computed style.
       */
      extraFields: ComputedStyleExtraFields;
    };
    /**
     * Resolve the specified values in the context of the provided element.
For example, a value of '1em' is evaluated according to the computed
'font-size' of the element and a value 'calc(1px + 2px)' will be
resolved to '3px'.
If the `propertyName` was specified the `values` are resolved as if
they were property's declaration. If a value cannot be parsed according
to the provided property syntax, the value is parsed using combined
syntax as if null `propertyName` was provided. If the value cannot be
resolved even then, return the provided value without any changes.
Note: this function currently does not resolve CSS random() function,
it returns unmodified random() function parts.`
     */
    export type resolveValuesParameters = {
      /**
       * Cascade-dependent keywords (revert/revert-layer) do not work.
       */
      values: string[];
      /**
       * Id of the node in whose context the expression is evaluated
       */
      nodeId: DOM.NodeId;
      /**
       * Only longhands and custom property names are accepted.
       */
      propertyName?: string;
      /**
       * Pseudo element type, only works for pseudo elements that generate
elements in the tree, such as ::before and ::after.
       */
      pseudoType?: DOM.PseudoType;
      /**
       * Pseudo element custom ident.
       */
      pseudoIdentifier?: string;
    };
    export type resolveValuesReturnValue = {
      results: string[];
    };
    export type getLonghandPropertiesParameters = {
      shorthandName: string;
      value: string;
    };
    export type getLonghandPropertiesReturnValue = {
      longhandProperties: CSSProperty[];
    };
    /**
     * Returns the styles defined inline (explicitly in the "style" attribute and implicitly, using DOM
attributes) for a DOM node identified by `nodeId`.
     */
    export type getInlineStylesForNodeParameters = {
      nodeId: DOM.NodeId;
    };
    export type getInlineStylesForNodeReturnValue = {
      /**
       * Inline style for the specified DOM node.
       */
      inlineStyle?: CSSStyle;
      /**
       * Attribute-defined element style (e.g. resulting from "width=20 height=100%").
       */
      attributesStyle?: CSSStyle;
    };
    /**
     * Returns the styles coming from animations & transitions
including the animation & transition styles coming from inheritance chain.
     */
    export type getAnimatedStylesForNodeParameters = {
      nodeId: DOM.NodeId;
    };
    export type getAnimatedStylesForNodeReturnValue = {
      /**
       * Styles coming from animations.
       */
      animationStyles?: CSSAnimationStyle[];
      /**
       * Style coming from transitions.
       */
      transitionsStyle?: CSSStyle;
      /**
       * Inherited style entries for animationsStyle and transitionsStyle from
the inheritance chain of the element.
       */
      inherited?: InheritedAnimatedStyleEntry[];
    };
    /**
     * Returns requested styles for a DOM node identified by `nodeId`.
     */
    export type getMatchedStylesForNodeParameters = {
      nodeId: DOM.NodeId;
    };
    export type getMatchedStylesForNodeReturnValue = {
      /**
       * Inline style for the specified DOM node.
       */
      inlineStyle?: CSSStyle;
      /**
       * Attribute-defined element style (e.g. resulting from "width=20 height=100%").
       */
      attributesStyle?: CSSStyle;
      /**
       * CSS rules matching this node, from all applicable stylesheets.
       */
      matchedCSSRules?: RuleMatch[];
      /**
       * Pseudo style matches for this node.
       */
      pseudoElements?: PseudoElementMatches[];
      /**
       * A chain of inherited styles (from the immediate node parent up to the DOM tree root).
       */
      inherited?: InheritedStyleEntry[];
      /**
       * A chain of inherited pseudo element styles (from the immediate node parent up to the DOM tree root).
       */
      inheritedPseudoElements?: InheritedPseudoElementMatches[];
      /**
       * A list of CSS keyframed animations matching this node.
       */
      cssKeyframesRules?: CSSKeyframesRule[];
      /**
       * A list of CSS @position-try rules matching this node, based on the position-try-fallbacks property.
       */
      cssPositionTryRules?: CSSPositionTryRule[];
      /**
       * Index of the active fallback in the applied position-try-fallback property,
will not be set if there is no active position-try fallback.
       */
      activePositionFallbackIndex?: number;
      /**
       * A list of CSS at-property rules matching this node.
       */
      cssPropertyRules?: CSSPropertyRule[];
      /**
       * A list of CSS property registrations matching this node.
       */
      cssPropertyRegistrations?: CSSPropertyRegistration[];
      /**
       * A list of simple @rules matching this node or its pseudo-elements.
       */
      cssAtRules?: CSSAtRule[];
      /**
       * Id of the first parent element that does not have display: contents.
       */
      parentLayoutNodeId?: DOM.NodeId;
      /**
       * A list of CSS at-function rules referenced by styles of this node.
       */
      cssFunctionRules?: CSSFunctionRule[];
    };
    /**
     * Returns the values of the default UA-defined environment variables used in env()
     */
    export type getEnvironmentVariablesParameters = {};
    export type getEnvironmentVariablesReturnValue = {
      environmentVariables: {
        [key: string]: string;
      };
    };
    /**
     * Returns all media queries parsed by the rendering engine.
     */
    export type getMediaQueriesParameters = {};
    export type getMediaQueriesReturnValue = {
      medias: CSSMedia[];
    };
    /**
     * Requests information about platform fonts which we used to render child TextNodes in the given
node.
     */
    export type getPlatformFontsForNodeParameters = {
      nodeId: DOM.NodeId;
    };
    export type getPlatformFontsForNodeReturnValue = {
      /**
       * Usage statistics for every employed platform font.
       */
      fonts: PlatformFontUsage[];
    };
    /**
     * Returns the current textual content for a stylesheet.
     */
    export type getStyleSheetTextParameters = {
      styleSheetId: DOM.StyleSheetId;
    };
    export type getStyleSheetTextReturnValue = {
      /**
       * The stylesheet text.
       */
      text: string;
    };
    /**
     * Returns all layers parsed by the rendering engine for the tree scope of a node.
Given a DOM element identified by nodeId, getLayersForNode returns the root
layer for the nearest ancestor document or shadow root. The layer root contains
the full layer tree for the tree scope and their ordering.
     */
    export type getLayersForNodeParameters = {
      nodeId: DOM.NodeId;
    };
    export type getLayersForNodeReturnValue = {
      rootLayer: CSSLayerData;
    };
    /**
     * Given a CSS selector text and a style sheet ID, getLocationForSelector
returns an array of locations of the CSS selector in the style sheet.
     */
    export type getLocationForSelectorParameters = {
      styleSheetId: DOM.StyleSheetId;
      selectorText: string;
    };
    export type getLocationForSelectorReturnValue = {
      ranges: SourceRange[];
    };
    /**
     * Starts tracking the given node for the computed style updates
and whenever the computed style is updated for node, it queues
a `computedStyleUpdated` event with throttling.
There can only be 1 node tracked for computed style updates
so passing a new node id removes tracking from the previous node.
Pass `undefined` to disable tracking.
     */
    export type trackComputedStyleUpdatesForNodeParameters = {
      nodeId?: DOM.NodeId;
    };
    export type trackComputedStyleUpdatesForNodeReturnValue = {};
    /**
     * Starts tracking the given computed styles for updates. The specified array of properties
replaces the one previously specified. Pass empty array to disable tracking.
Use takeComputedStyleUpdates to retrieve the list of nodes that had properties modified.
The changes to computed style properties are only tracked for nodes pushed to the front-end
by the DOM agent. If no changes to the tracked properties occur after the node has been pushed
to the front-end, no updates will be issued for the node.
     */
    export type trackComputedStyleUpdatesParameters = {
      propertiesToTrack: CSSComputedStyleProperty[];
    };
    export type trackComputedStyleUpdatesReturnValue = {};
    /**
     * Polls the next batch of computed style updates.
     */
    export type takeComputedStyleUpdatesParameters = {};
    export type takeComputedStyleUpdatesReturnValue = {
      /**
       * The list of node Ids that have their tracked computed styles updated.
       */
      nodeIds: DOM.NodeId[];
    };
    /**
     * Find a rule with the given active property for the given node and set the new value for this
property
     */
    export type setEffectivePropertyValueForNodeParameters = {
      /**
       * The element id for which to set property.
       */
      nodeId: DOM.NodeId;
      propertyName: string;
      value: string;
    };
    export type setEffectivePropertyValueForNodeReturnValue = {};
    /**
     * Modifies the property rule property name.
     */
    export type setPropertyRulePropertyNameParameters = {
      styleSheetId: DOM.StyleSheetId;
      range: SourceRange;
      propertyName: string;
    };
    export type setPropertyRulePropertyNameReturnValue = {
      /**
       * The resulting key text after modification.
       */
      propertyName: Value;
    };
    /**
     * Modifies the keyframe rule key text.
     */
    export type setKeyframeKeyParameters = {
      styleSheetId: DOM.StyleSheetId;
      range: SourceRange;
      keyText: string;
    };
    export type setKeyframeKeyReturnValue = {
      /**
       * The resulting key text after modification.
       */
      keyText: Value;
    };
    /**
     * Modifies the rule selector.
     */
    export type setMediaTextParameters = {
      styleSheetId: DOM.StyleSheetId;
      range: SourceRange;
      text: string;
    };
    export type setMediaTextReturnValue = {
      /**
       * The resulting CSS media rule after modification.
       */
      media: CSSMedia;
    };
    /**
     * Modifies the expression of a container query.
     */
    export type setContainerQueryTextParameters = {
      styleSheetId: DOM.StyleSheetId;
      range: SourceRange;
      text: string;
    };
    export type setContainerQueryTextReturnValue = {
      /**
       * The resulting CSS container query rule after modification.
       */
      containerQuery: CSSContainerQuery;
    };
    /**
     * Modifies the expression of a supports at-rule.
     */
    export type setSupportsTextParameters = {
      styleSheetId: DOM.StyleSheetId;
      range: SourceRange;
      text: string;
    };
    export type setSupportsTextReturnValue = {
      /**
       * The resulting CSS Supports rule after modification.
       */
      supports: CSSSupports;
    };
    /**
     * Modifies the expression of a navigation at-rule.
     */
    export type setNavigationTextParameters = {
      styleSheetId: DOM.StyleSheetId;
      range: SourceRange;
      text: string;
    };
    export type setNavigationTextReturnValue = {
      /**
       * The resulting CSS Navigation rule after modification.
       */
      navigation: CSSNavigation;
    };
    /**
     * Modifies the expression of a scope at-rule.
     */
    export type setScopeTextParameters = {
      styleSheetId: DOM.StyleSheetId;
      range: SourceRange;
      text: string;
    };
    export type setScopeTextReturnValue = {
      /**
       * The resulting CSS Scope rule after modification.
       */
      scope: CSSScope;
    };
    /**
     * Modifies the rule selector.
     */
    export type setRuleSelectorParameters = {
      styleSheetId: DOM.StyleSheetId;
      range: SourceRange;
      selector: string;
    };
    export type setRuleSelectorReturnValue = {
      /**
       * The resulting selector list after modification.
       */
      selectorList: SelectorList;
    };
    /**
     * Sets the new stylesheet text.
     */
    export type setStyleSheetTextParameters = {
      styleSheetId: DOM.StyleSheetId;
      text: string;
    };
    export type setStyleSheetTextReturnValue = {
      /**
       * URL of source map associated with script (if any).
       */
      sourceMapURL?: string;
    };
    /**
     * Applies specified style edits one after another in the given order.
     */
    export type setStyleTextsParameters = {
      edits: StyleDeclarationEdit[];
      /**
       * NodeId for the DOM node in whose context custom property declarations for registered properties should be
validated. If omitted, declarations in the new rule text can only be validated statically, which may produce
incorrect results if the declaration contains a var() for example.
       */
      nodeForPropertySyntaxValidation?: DOM.NodeId;
    };
    export type setStyleTextsReturnValue = {
      /**
       * The resulting styles after modification.
       */
      styles: CSSStyle[];
    };
    /**
     * Enables the selector recording.
     */
    export type startRuleUsageTrackingParameters = {};
    export type startRuleUsageTrackingReturnValue = {};
    /**
     * Stop tracking rule usage and return the list of rules that were used since last call to
`takeCoverageDelta` (or since start of coverage instrumentation).
     */
    export type stopRuleUsageTrackingParameters = {};
    export type stopRuleUsageTrackingReturnValue = {
      ruleUsage: RuleUsage[];
    };
    /**
     * Obtain list of rules that became used since last call to this method (or since start of coverage
instrumentation).
     */
    export type takeCoverageDeltaParameters = {};
    export type takeCoverageDeltaReturnValue = {
      coverage: RuleUsage[];
      /**
       * Monotonically increasing time, in seconds.
       */
      timestamp: number;
    };
    /**
     * Enables/disables rendering of local CSS fonts (enabled by default).
     */
    export type setLocalFontsEnabledParameters = {
      /**
       * Whether rendering of local fonts is enabled.
       */
      enabled: boolean;
    };
    export type setLocalFontsEnabledReturnValue = {};
  }
  export namespace CacheStorage {
    /**
     * Unique identifier of the Cache object.
     */
    export type CacheId = string;
    /**
     * type of HTTP response cached
     */
    export type CachedResponseType = "basic" | "cors" | "default" | "error" | "opaqueResponse" | "opaqueRedirect";
    /**
     * Data entry.
     */
    export interface DataEntry {
      /**
       * Request URL.
       */
      requestURL: string;
      /**
       * Request method.
       */
      requestMethod: string;
      /**
       * Request headers
       */
      requestHeaders: Header[];
      /**
       * Number of seconds since epoch.
       */
      responseTime: number;
      /**
       * HTTP response status code.
       */
      responseStatus: number;
      /**
       * HTTP response status text.
       */
      responseStatusText: string;
      /**
       * HTTP response type
       */
      responseType: CachedResponseType;
      /**
       * Response headers
       */
      responseHeaders: Header[];
    }
    /**
     * Cache identifier.
     */
    export interface Cache {
      /**
       * An opaque unique id of the cache.
       */
      cacheId: CacheId;
      /**
       * Security origin of the cache.
       */
      securityOrigin: string;
      /**
       * Storage key of the cache.
       */
      storageKey: string;
      /**
       * Storage bucket of the cache.
       */
      storageBucket?: Storage.StorageBucket;
      /**
       * The name of the cache.
       */
      cacheName: string;
    }
    export interface Header {
      name: string;
      value: string;
    }
    /**
     * Cached response
     */
    export interface CachedResponse {
      /**
       * Entry content, base64-encoded.
       */
      body: binary;
    }
    /**
     * Deletes a cache.
     */
    export type deleteCacheParameters = {
      /**
       * Id of cache for deletion.
       */
      cacheId: CacheId;
    };
    export type deleteCacheReturnValue = {};
    /**
     * Deletes a cache entry.
     */
    export type deleteEntryParameters = {
      /**
       * Id of cache where the entry will be deleted.
       */
      cacheId: CacheId;
      /**
       * URL spec of the request.
       */
      request: string;
    };
    export type deleteEntryReturnValue = {};
    /**
     * Requests cache names.
     */
    export type requestCacheNamesParameters = {
      /**
       * At least and at most one of securityOrigin, storageKey, storageBucket must be specified.
Security origin.
       */
      securityOrigin?: string;
      /**
       * Storage key.
       */
      storageKey?: string;
      /**
       * Storage bucket. If not specified, it uses the default bucket.
       */
      storageBucket?: Storage.StorageBucket;
    };
    export type requestCacheNamesReturnValue = {
      /**
       * Caches for the security origin.
       */
      caches: Cache[];
    };
    /**
     * Fetches cache entry.
     */
    export type requestCachedResponseParameters = {
      /**
       * Id of cache that contains the entry.
       */
      cacheId: CacheId;
      /**
       * URL spec of the request.
       */
      requestURL: string;
      /**
       * headers of the request.
       */
      requestHeaders: Header[];
    };
    export type requestCachedResponseReturnValue = {
      /**
       * Response read from the cache.
       */
      response: CachedResponse;
    };
    /**
     * Requests data from cache.
     */
    export type requestEntriesParameters = {
      /**
       * ID of cache to get entries from.
       */
      cacheId: CacheId;
      /**
       * Number of records to skip.
       */
      skipCount?: number;
      /**
       * Number of records to fetch.
       */
      pageSize?: number;
      /**
       * If present, only return the entries containing this substring in the path
       */
      pathFilter?: string;
    };
    export type requestEntriesReturnValue = {
      /**
       * Array of object store data entries.
       */
      cacheDataEntries: DataEntry[];
      /**
       * Count of returned entries from this storage. If pathFilter is empty, it
is the count of all entries from this storage.
       */
      returnCount: number;
    };
  }
  /**
   * A domain for interacting with Cast, Presentation API, and Remote Playback API
functionalities.
   */
  export namespace Cast {
    export interface Sink {
      name: string;
      id: string;
      /**
       * Text describing the current session. Present only if there is an active
session on the sink.
       */
      session?: string;
    }
    /**
     * This is fired whenever the list of available sinks changes. A sink is a
device or a software surface that you can cast to.
     */
    export type sinksUpdatedPayload = {
      sinks: Sink[];
    };
    /**
     * This is fired whenever the outstanding issue/error message changes.
|issueMessage| is empty if there is no issue.
     */
    export type issueUpdatedPayload = {
      issueMessage: string;
    };
    /**
     * Starts observing for sinks that can be used for tab mirroring, and if set,
sinks compatible with |presentationUrl| as well. When sinks are found, a
|sinksUpdated| event is fired.
Also starts observing for issue messages. When an issue is added or removed,
an |issueUpdated| event is fired.
     */
    export type enableParameters = {
      presentationUrl?: string;
    };
    export type enableReturnValue = {};
    /**
     * Stops observing for sinks and issues.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Sets a sink to be used when the web page requests the browser to choose a
sink via Presentation API, Remote Playback API, or Cast SDK.
     */
    export type setSinkToUseParameters = {
      sinkName: string;
    };
    export type setSinkToUseReturnValue = {};
    /**
     * Starts mirroring the desktop to the sink.
     */
    export type startDesktopMirroringParameters = {
      sinkName: string;
    };
    export type startDesktopMirroringReturnValue = {};
    /**
     * Starts mirroring the tab to the sink.
     */
    export type startTabMirroringParameters = {
      sinkName: string;
    };
    export type startTabMirroringReturnValue = {};
    /**
     * Stops the active Cast session on the sink.
     */
    export type stopCastingParameters = {
      sinkName: string;
    };
    export type stopCastingReturnValue = {};
  }
  /**
   * This domain exposes the current state of the CrashReportContext API.
   */
  export namespace CrashReportContext {
    /**
     * Key-value pair in CrashReportContext.
     */
    export interface CrashReportContextEntry {
      key: string;
      value: string;
      /**
       * The ID of the frame where the key-value pair was set.
       */
      frameId: Page.FrameId;
    }
    /**
     * Returns all entries in the CrashReportContext across all frames in the page.
     */
    export type getEntriesParameters = {};
    export type getEntriesReturnValue = {
      entries: CrashReportContextEntry[];
    };
  }
  /**
   * This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object
that has an `id`. This `id` can be used to get additional information on the Node, resolve it into
the JavaScript object wrapper, etc. It is important that client receives DOM events only for the
nodes that are known to the client. Backend keeps track of the nodes that were sent to the client
and never sends the same node twice. It is client's responsibility to collect information about
the nodes that were sent to the client. Note that `iframe` owner elements will return
corresponding document elements as their child nodes.
   */
  export namespace DOM {
    /**
     * Unique DOM node identifier.
     */
    export type NodeId = number;
    /**
     * Unique DOM node identifier used to reference a node that may not have been pushed to the
front-end.
     */
    export type BackendNodeId = number;
    /**
     * Unique identifier for a CSS stylesheet.
     */
    export type StyleSheetId = string;
    /**
     * Backend node with a friendly name.
     */
    export interface BackendNode {
      /**
       * `Node`'s nodeType.
       */
      nodeType: number;
      /**
       * `Node`'s nodeName.
       */
      nodeName: string;
      backendNodeId: BackendNodeId;
    }
    /**
     * Pseudo element type.
     */
    export type PseudoType = "first-line" | "first-letter" | "checkmark" | "before" | "after" | "expand-icon" | "picker-icon" | "interest-button" | "marker" | "backdrop" | "column" | "selection" | "search-text" | "target-text" | "spelling-error" | "grammar-error" | "highlight" | "first-line-inherited" | "scroll-marker" | "scroll-marker-group" | "scroll-button" | "scrollbar" | "scrollbar-thumb" | "scrollbar-button" | "scrollbar-track" | "scrollbar-track-piece" | "scrollbar-corner" | "resizer" | "input-list-button" | "view-transition" | "view-transition-group" | "view-transition-image-pair" | "view-transition-group-children" | "view-transition-old" | "view-transition-new" | "placeholder" | "file-selector-button" | "details-content" | "picker" | "permission-icon" | "overscroll-area-parent";
    /**
     * Shadow root type.
     */
    export type ShadowRootType = "user-agent" | "open" | "closed";
    /**
     * Document compatibility mode.
     */
    export type CompatibilityMode = "QuirksMode" | "LimitedQuirksMode" | "NoQuirksMode";
    /**
     * ContainerSelector physical axes
     */
    export type PhysicalAxes = "Horizontal" | "Vertical" | "Both";
    /**
     * ContainerSelector logical axes
     */
    export type LogicalAxes = "Inline" | "Block" | "Both";
    /**
     * Physical scroll orientation
     */
    export type ScrollOrientation = "horizontal" | "vertical";
    /**
     * DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes.
DOMNode is a base node mirror type.
     */
    export interface Node {
      /**
       * Node identifier that is passed into the rest of the DOM messages as the `nodeId`. Backend
will only push node with given `id` once. It is aware of all requested nodes and will only
fire DOM events for nodes known to the client.
       */
      nodeId: NodeId;
      /**
       * The id of the parent node if any.
       */
      parentId?: NodeId;
      /**
       * The BackendNodeId for this node.
       */
      backendNodeId: BackendNodeId;
      /**
       * `Node`'s nodeType.
       */
      nodeType: number;
      /**
       * `Node`'s nodeName.
       */
      nodeName: string;
      /**
       * `Node`'s localName.
       */
      localName: string;
      /**
       * `Node`'s nodeValue.
       */
      nodeValue: string;
      /**
       * Child count for `Container` nodes.
       */
      childNodeCount?: number;
      /**
       * Child nodes of this node when requested with children.
       */
      children?: Node[];
      /**
       * Attributes of the `Element` node in the form of flat array `[name1, value1, name2, value2]`.
       */
      attributes?: string[];
      /**
       * Document URL that `Document` or `FrameOwner` node points to.
       */
      documentURL?: string;
      /**
       * Base URL that `Document` or `FrameOwner` node uses for URL completion.
       */
      baseURL?: string;
      /**
       * `DocumentType`'s publicId.
       */
      publicId?: string;
      /**
       * `DocumentType`'s systemId.
       */
      systemId?: string;
      /**
       * `DocumentType`'s internalSubset.
       */
      internalSubset?: string;
      /**
       * `Document`'s XML version in case of XML documents.
       */
      xmlVersion?: string;
      /**
       * `Attr`'s name.
       */
      name?: string;
      /**
       * `Attr`'s value.
       */
      value?: string;
      /**
       * Pseudo element type for this node.
       */
      pseudoType?: PseudoType;
      /**
       * Pseudo element identifier for this node. Only present if there is a
valid pseudoType.
       */
      pseudoIdentifier?: string;
      /**
       * Shadow root type.
       */
      shadowRootType?: ShadowRootType;
      /**
       * Frame ID for frame owner elements.
       */
      frameId?: Page.FrameId;
      /**
       * Content document for frame owner elements.
       */
      contentDocument?: Node;
      /**
       * Shadow root list for given element host.
       */
      shadowRoots?: Node[];
      /**
       * Content document fragment for template elements.
       */
      templateContent?: Node;
      /**
       * Pseudo elements associated with this node.
       */
      pseudoElements?: Node[];
      /**
       * Deprecated, as the HTML Imports API has been removed (crbug.com/937746).
This property used to return the imported document for the HTMLImport links.
The property is always undefined now.
       */
      importedDocument?: Node;
      /**
       * Distributed nodes for given insertion point.
       */
      distributedNodes?: BackendNode[];
      /**
       * Whether the node is SVG.
       */
      isSVG?: boolean;
      compatibilityMode?: CompatibilityMode;
      assignedSlot?: BackendNode;
      isScrollable?: boolean;
      affectedByStartingStyles?: boolean;
      adoptedStyleSheets?: StyleSheetId[];
      adProvenance?: Network.AdProvenance;
    }
    /**
     * A structure to hold the top-level node of a detached tree and an array of its retained descendants.
     */
    export interface DetachedElementInfo {
      treeNode: Node;
      retainedNodeIds: NodeId[];
    }
    /**
     * A structure holding an RGBA color.
     */
    export interface RGBA {
      /**
       * The red component, in the [0-255] range.
       */
      r: number;
      /**
       * The green component, in the [0-255] range.
       */
      g: number;
      /**
       * The blue component, in the [0-255] range.
       */
      b: number;
      /**
       * The alpha component, in the [0-1] range (default: 1).
       */
      a?: number;
    }
    /**
     * An array of quad vertices, x immediately followed by y for each point, points clock-wise.
     */
    export type Quad = number[];
    /**
     * Box model.
     */
    export interface BoxModel {
      /**
       * Content box
       */
      content: Quad;
      /**
       * Padding box
       */
      padding: Quad;
      /**
       * Border box
       */
      border: Quad;
      /**
       * Margin box
       */
      margin: Quad;
      /**
       * Node width
       */
      width: number;
      /**
       * Node height
       */
      height: number;
      /**
       * Shape outside coordinates
       */
      shapeOutside?: ShapeOutsideInfo;
    }
    /**
     * CSS Shape Outside details.
     */
    export interface ShapeOutsideInfo {
      /**
       * Shape bounds
       */
      bounds: Quad;
      /**
       * Shape coordinate details
       */
      shape: any[];
      /**
       * Margin shape bounds
       */
      marginShape: any[];
    }
    /**
     * Rectangle.
     */
    export interface Rect {
      /**
       * X coordinate
       */
      x: number;
      /**
       * Y coordinate
       */
      y: number;
      /**
       * Rectangle width
       */
      width: number;
      /**
       * Rectangle height
       */
      height: number;
    }
    export interface CSSComputedStyleProperty {
      /**
       * Computed style property name.
       */
      name: string;
      /**
       * Computed style property value.
       */
      value: string;
    }
    /**
     * Fired when `Element`'s attribute is modified.
     */
    export type attributeModifiedPayload = {
      /**
       * Id of the node that has changed.
       */
      nodeId: NodeId;
      /**
       * Attribute name.
       */
      name: string;
      /**
       * Attribute value.
       */
      value: string;
    };
    /**
     * Fired when `Element`'s adoptedStyleSheets are modified.
     */
    export type adoptedStyleSheetsModifiedPayload = {
      /**
       * Id of the node that has changed.
       */
      nodeId: NodeId;
      /**
       * New adoptedStyleSheets array.
       */
      adoptedStyleSheets: StyleSheetId[];
    };
    /**
     * Fired when `Element`'s attribute is removed.
     */
    export type attributeRemovedPayload = {
      /**
       * Id of the node that has changed.
       */
      nodeId: NodeId;
      /**
       * A ttribute name.
       */
      name: string;
    };
    /**
     * Mirrors `DOMCharacterDataModified` event.
     */
    export type characterDataModifiedPayload = {
      /**
       * Id of the node that has changed.
       */
      nodeId: NodeId;
      /**
       * New text value.
       */
      characterData: string;
    };
    /**
     * Fired when `Container`'s child node count has changed.
     */
    export type childNodeCountUpdatedPayload = {
      /**
       * Id of the node that has changed.
       */
      nodeId: NodeId;
      /**
       * New node count.
       */
      childNodeCount: number;
    };
    /**
     * Mirrors `DOMNodeInserted` event.
     */
    export type childNodeInsertedPayload = {
      /**
       * Id of the node that has changed.
       */
      parentNodeId: NodeId;
      /**
       * Id of the previous sibling.
       */
      previousNodeId: NodeId;
      /**
       * Inserted node data.
       */
      node: Node;
    };
    /**
     * Mirrors `DOMNodeRemoved` event.
     */
    export type childNodeRemovedPayload = {
      /**
       * Parent id.
       */
      parentNodeId: NodeId;
      /**
       * Id of the node that has been removed.
       */
      nodeId: NodeId;
    };
    /**
     * Called when distribution is changed.
     */
    export type distributedNodesUpdatedPayload = {
      /**
       * Insertion point where distributed nodes were updated.
       */
      insertionPointId: NodeId;
      /**
       * Distributed nodes for given insertion point.
       */
      distributedNodes: BackendNode[];
    };
    /**
     * Fired when `Document` has been totally updated. Node ids are no longer valid.
     */
    export type documentUpdatedPayload = void;
    /**
     * Fired when `Element`'s inline style is modified via a CSS property modification.
     */
    export type inlineStyleInvalidatedPayload = {
      /**
       * Ids of the nodes for which the inline styles have been invalidated.
       */
      nodeIds: NodeId[];
    };
    /**
     * Called when a pseudo element is added to an element.
     */
    export type pseudoElementAddedPayload = {
      /**
       * Pseudo element's parent element id.
       */
      parentId: NodeId;
      /**
       * The added pseudo element.
       */
      pseudoElement: Node;
    };
    /**
     * Called when top layer elements are changed.
     */
    export type topLayerElementsUpdatedPayload = void;
    /**
     * Fired when a node's scrollability state changes.
     */
    export type scrollableFlagUpdatedPayload = {
      /**
       * The id of the node.
       */
      nodeId: DOM.NodeId;
      /**
       * If the node is scrollable.
       */
      isScrollable: boolean;
    };
    /**
     * Fired when a node's ad related state changes.
     */
    export type adRelatedStateUpdatedPayload = {
      /**
       * The id of the node.
       */
      nodeId: DOM.NodeId;
      /**
       * The provenance of the ad related node, if it is ad related.
       */
      adProvenance?: Network.AdProvenance;
    };
    /**
     * Fired when a node's starting styles changes.
     */
    export type affectedByStartingStylesFlagUpdatedPayload = {
      /**
       * The id of the node.
       */
      nodeId: DOM.NodeId;
      /**
       * If the node has starting styles.
       */
      affectedByStartingStyles: boolean;
    };
    /**
     * Called when a pseudo element is removed from an element.
     */
    export type pseudoElementRemovedPayload = {
      /**
       * Pseudo element's parent element id.
       */
      parentId: NodeId;
      /**
       * The removed pseudo element id.
       */
      pseudoElementId: NodeId;
    };
    /**
     * Fired when backend wants to provide client with the missing DOM structure. This happens upon
most of the calls requesting node ids.
     */
    export type setChildNodesPayload = {
      /**
       * Parent node id to populate with children.
       */
      parentId: NodeId;
      /**
       * Child nodes array.
       */
      nodes: Node[];
    };
    /**
     * Called when shadow root is popped from the element.
     */
    export type shadowRootPoppedPayload = {
      /**
       * Host element id.
       */
      hostId: NodeId;
      /**
       * Shadow root id.
       */
      rootId: NodeId;
    };
    /**
     * Called when shadow root is pushed into the element.
     */
    export type shadowRootPushedPayload = {
      /**
       * Host element id.
       */
      hostId: NodeId;
      /**
       * Shadow root.
       */
      root: Node;
    };
    /**
     * Collects class names for the node with given id and all of it's child nodes.
     */
    export type collectClassNamesFromSubtreeParameters = {
      /**
       * Id of the node to collect class names.
       */
      nodeId: NodeId;
    };
    export type collectClassNamesFromSubtreeReturnValue = {
      /**
       * Class name list.
       */
      classNames: string[];
    };
    /**
     * Creates a deep copy of the specified node and places it into the target container before the
given anchor.
     */
    export type copyToParameters = {
      /**
       * Id of the node to copy.
       */
      nodeId: NodeId;
      /**
       * Id of the element to drop the copy into.
       */
      targetNodeId: NodeId;
      /**
       * Drop the copy before this node (if absent, the copy becomes the last child of
`targetNodeId`).
       */
      insertBeforeNodeId?: NodeId;
    };
    export type copyToReturnValue = {
      /**
       * Id of the node clone.
       */
      nodeId: NodeId;
    };
    /**
     * Describes node given its id, does not require domain to be enabled. Does not start tracking any
objects, can be used for automation.
     */
    export type describeNodeParameters = {
      /**
       * Identifier of the node.
       */
      nodeId?: NodeId;
      /**
       * Identifier of the backend node.
       */
      backendNodeId?: BackendNodeId;
      /**
       * JavaScript object id of the node wrapper.
       */
      objectId?: Runtime.RemoteObjectId;
      /**
       * The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the
entire subtree or provide an integer larger than 0.
       */
      depth?: number;
      /**
       * Whether or not iframes and shadow roots should be traversed when returning the subtree
(default is false).
       */
      pierce?: boolean;
    };
    export type describeNodeReturnValue = {
      /**
       * Node description.
       */
      node: Node;
    };
    /**
     * Scrolls the specified rect of the given node into view if not already visible.
Note: exactly one between nodeId, backendNodeId and objectId should be passed
to identify the node.
     */
    export type scrollIntoViewIfNeededParameters = {
      /**
       * Identifier of the node.
       */
      nodeId?: NodeId;
      /**
       * Identifier of the backend node.
       */
      backendNodeId?: BackendNodeId;
      /**
       * JavaScript object id of the node wrapper.
       */
      objectId?: Runtime.RemoteObjectId;
      /**
       * The rect to be scrolled into view, relative to the node's border box, in CSS pixels.
When omitted, center of the node will be used, similar to Element.scrollIntoView.
       */
      rect?: Rect;
    };
    export type scrollIntoViewIfNeededReturnValue = {};
    /**
     * Disables DOM agent for the given page.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Discards search results from the session with the given id. `getSearchResults` should no longer
be called for that search.
     */
    export type discardSearchResultsParameters = {
      /**
       * Unique search session identifier.
       */
      searchId: string;
    };
    export type discardSearchResultsReturnValue = {};
    /**
     * Enables DOM agent for the given page.
     */
    export type enableParameters = {
      /**
       * Whether to include whitespaces in the children array of returned Nodes.
       */
      includeWhitespace?: "none" | "all";
    };
    export type enableReturnValue = {};
    /**
     * Focuses the given element.
     */
    export type focusParameters = {
      /**
       * Identifier of the node.
       */
      nodeId?: NodeId;
      /**
       * Identifier of the backend node.
       */
      backendNodeId?: BackendNodeId;
      /**
       * JavaScript object id of the node wrapper.
       */
      objectId?: Runtime.RemoteObjectId;
    };
    export type focusReturnValue = {};
    /**
     * Returns attributes for the specified node.
     */
    export type getAttributesParameters = {
      /**
       * Id of the node to retrieve attributes for.
       */
      nodeId: NodeId;
    };
    export type getAttributesReturnValue = {
      /**
       * An interleaved array of node attribute names and values.
       */
      attributes: string[];
    };
    /**
     * Returns boxes for the given node.
     */
    export type getBoxModelParameters = {
      /**
       * Identifier of the node.
       */
      nodeId?: NodeId;
      /**
       * Identifier of the backend node.
       */
      backendNodeId?: BackendNodeId;
      /**
       * JavaScript object id of the node wrapper.
       */
      objectId?: Runtime.RemoteObjectId;
    };
    export type getBoxModelReturnValue = {
      /**
       * Box model for the node.
       */
      model: BoxModel;
    };
    /**
     * Returns quads that describe node position on the page. This method
might return multiple quads for inline nodes.
     */
    export type getContentQuadsParameters = {
      /**
       * Identifier of the node.
       */
      nodeId?: NodeId;
      /**
       * Identifier of the backend node.
       */
      backendNodeId?: BackendNodeId;
      /**
       * JavaScript object id of the node wrapper.
       */
      objectId?: Runtime.RemoteObjectId;
    };
    export type getContentQuadsReturnValue = {
      /**
       * Quads that describe node layout relative to viewport.
       */
      quads: Quad[];
    };
    /**
     * Returns the root DOM node (and optionally the subtree) to the caller.
Implicitly enables the DOM domain events for the current target.
     */
    export type getDocumentParameters = {
      /**
       * The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the
entire subtree or provide an integer larger than 0.
       */
      depth?: number;
      /**
       * Whether or not iframes and shadow roots should be traversed when returning the subtree
(default is false).
       */
      pierce?: boolean;
    };
    export type getDocumentReturnValue = {
      /**
       * Resulting node.
       */
      root: Node;
    };
    /**
     * Returns the root DOM node (and optionally the subtree) to the caller.
Deprecated, as it is not designed to work well with the rest of the DOM agent.
Use DOMSnapshot.captureSnapshot instead.
     */
    export type getFlattenedDocumentParameters = {
      /**
       * The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the
entire subtree or provide an integer larger than 0.
       */
      depth?: number;
      /**
       * Whether or not iframes and shadow roots should be traversed when returning the subtree
(default is false).
       */
      pierce?: boolean;
    };
    export type getFlattenedDocumentReturnValue = {
      /**
       * Resulting node.
       */
      nodes: Node[];
    };
    /**
     * Finds nodes with a given computed style in a subtree.
     */
    export type getNodesForSubtreeByStyleParameters = {
      /**
       * Node ID pointing to the root of a subtree.
       */
      nodeId: NodeId;
      /**
       * The style to filter nodes by (includes nodes if any of properties matches).
       */
      computedStyles: CSSComputedStyleProperty[];
      /**
       * Whether or not iframes and shadow roots in the same target should be traversed when returning the
results (default is false).
       */
      pierce?: boolean;
    };
    export type getNodesForSubtreeByStyleReturnValue = {
      /**
       * Resulting nodes.
       */
      nodeIds: NodeId[];
    };
    /**
     * Returns node id at given location. Depending on whether DOM domain is enabled, nodeId is
either returned or not.
     */
    export type getNodeForLocationParameters = {
      /**
       * X coordinate.
       */
      x: number;
      /**
       * Y coordinate.
       */
      y: number;
      /**
       * False to skip to the nearest non-UA shadow root ancestor (default: false).
       */
      includeUserAgentShadowDOM?: boolean;
      /**
       * Whether to ignore pointer-events: none on elements and hit test them.
       */
      ignorePointerEventsNone?: boolean;
    };
    export type getNodeForLocationReturnValue = {
      /**
       * Resulting node.
       */
      backendNodeId: BackendNodeId;
      /**
       * Frame this node belongs to.
       */
      frameId: Page.FrameId;
      /**
       * Id of the node at given coordinates, only when enabled and requested document.
       */
      nodeId?: NodeId;
    };
    /**
     * Returns node's HTML markup.
     */
    export type getOuterHTMLParameters = {
      /**
       * Identifier of the node.
       */
      nodeId?: NodeId;
      /**
       * Identifier of the backend node.
       */
      backendNodeId?: BackendNodeId;
      /**
       * JavaScript object id of the node wrapper.
       */
      objectId?: Runtime.RemoteObjectId;
      /**
       * Include all shadow roots. Equals to false if not specified.
       */
      includeShadowDOM?: boolean;
    };
    export type getOuterHTMLReturnValue = {
      /**
       * Outer HTML markup.
       */
      outerHTML: string;
    };
    /**
     * Returns the id of the nearest ancestor that is a relayout boundary.
     */
    export type getRelayoutBoundaryParameters = {
      /**
       * Id of the node.
       */
      nodeId: NodeId;
    };
    export type getRelayoutBoundaryReturnValue = {
      /**
       * Relayout boundary node id for the given node.
       */
      nodeId: NodeId;
    };
    /**
     * Returns search results from given `fromIndex` to given `toIndex` from the search with the given
identifier.
     */
    export type getSearchResultsParameters = {
      /**
       * Unique search session identifier.
       */
      searchId: string;
      /**
       * Start index of the search result to be returned.
       */
      fromIndex: number;
      /**
       * End index of the search result to be returned.
       */
      toIndex: number;
    };
    export type getSearchResultsReturnValue = {
      /**
       * Ids of the search result nodes.
       */
      nodeIds: NodeId[];
    };
    /**
     * Hides any highlight.
     */
    export type hideHighlightParameters = {};
    export type hideHighlightReturnValue = {};
    /**
     * Highlights DOM node.
     */
    export type highlightNodeParameters = {};
    export type highlightNodeReturnValue = {};
    /**
     * Highlights given rectangle.
     */
    export type highlightRectParameters = {};
    export type highlightRectReturnValue = {};
    /**
     * Marks last undoable state.
     */
    export type markUndoableStateParameters = {};
    export type markUndoableStateReturnValue = {};
    /**
     * Moves node into the new container, places it before the given anchor.
     */
    export type moveToParameters = {
      /**
       * Id of the node to move.
       */
      nodeId: NodeId;
      /**
       * Id of the element to drop the moved node into.
       */
      targetNodeId: NodeId;
      /**
       * Drop node before this one (if absent, the moved node becomes the last child of
`targetNodeId`).
       */
      insertBeforeNodeId?: NodeId;
    };
    export type moveToReturnValue = {
      /**
       * New id of the moved node.
       */
      nodeId: NodeId;
    };
    /**
     * Searches for a given string in the DOM tree. Use `getSearchResults` to access search results or
`cancelSearch` to end this search session.
     */
    export type performSearchParameters = {
      /**
       * Plain text or query selector or XPath search query.
       */
      query: string;
      /**
       * True to search in user agent shadow DOM.
       */
      includeUserAgentShadowDOM?: boolean;
    };
    export type performSearchReturnValue = {
      /**
       * Unique search session identifier.
       */
      searchId: string;
      /**
       * Number of search results.
       */
      resultCount: number;
    };
    /**
     * Requests that the node is sent to the caller given its path. // FIXME, use XPath
     */
    export type pushNodeByPathToFrontendParameters = {
      /**
       * Path to node in the proprietary format.
       */
      path: string;
    };
    export type pushNodeByPathToFrontendReturnValue = {
      /**
       * Id of the node for given path.
       */
      nodeId: NodeId;
    };
    /**
     * Requests that a batch of nodes is sent to the caller given their backend node ids.
     */
    export type pushNodesByBackendIdsToFrontendParameters = {
      /**
       * The array of backend node ids.
       */
      backendNodeIds: BackendNodeId[];
    };
    export type pushNodesByBackendIdsToFrontendReturnValue = {
      /**
       * The array of ids of pushed nodes that correspond to the backend ids specified in
backendNodeIds.
       */
      nodeIds: NodeId[];
    };
    /**
     * Executes `querySelector` on a given node.
     */
    export type querySelectorParameters = {
      /**
       * Id of the node to query upon.
       */
      nodeId: NodeId;
      /**
       * Selector string.
       */
      selector: string;
    };
    export type querySelectorReturnValue = {
      /**
       * Query selector result.
       */
      nodeId: NodeId;
    };
    /**
     * Executes `querySelectorAll` on a given node.
     */
    export type querySelectorAllParameters = {
      /**
       * Id of the node to query upon.
       */
      nodeId: NodeId;
      /**
       * Selector string.
       */
      selector: string;
    };
    export type querySelectorAllReturnValue = {
      /**
       * Query selector result.
       */
      nodeIds: NodeId[];
    };
    /**
     * Returns NodeIds of current top layer elements.
Top layer is rendered closest to the user within a viewport, therefore its elements always
appear on top of all other content.
     */
    export type getTopLayerElementsParameters = {};
    export type getTopLayerElementsReturnValue = {
      /**
       * NodeIds of top layer elements
       */
      nodeIds: NodeId[];
    };
    /**
     * Returns the NodeId of the matched element according to certain relations.
     */
    export type getElementByRelationParameters = {
      /**
       * Id of the node from which to query the relation.
       */
      nodeId: NodeId;
      /**
       * Type of relation to get.
       */
      relation: "PopoverTarget" | "InterestTarget" | "CommandFor";
    };
    export type getElementByRelationReturnValue = {
      /**
       * NodeId of the element matching the queried relation.
       */
      nodeId: NodeId;
    };
    /**
     * Re-does the last undone action.
     */
    export type redoParameters = {};
    export type redoReturnValue = {};
    /**
     * Removes attribute with given name from an element with given id.
     */
    export type removeAttributeParameters = {
      /**
       * Id of the element to remove attribute from.
       */
      nodeId: NodeId;
      /**
       * Name of the attribute to remove.
       */
      name: string;
    };
    export type removeAttributeReturnValue = {};
    /**
     * Removes node with given id.
     */
    export type removeNodeParameters = {
      /**
       * Id of the node to remove.
       */
      nodeId: NodeId;
    };
    export type removeNodeReturnValue = {};
    /**
     * Requests that children of the node with given id are returned to the caller in form of
`setChildNodes` events where not only immediate children are retrieved, but all children down to
the specified depth.
     */
    export type requestChildNodesParameters = {
      /**
       * Id of the node to get children for.
       */
      nodeId: NodeId;
      /**
       * The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the
entire subtree or provide an integer larger than 0.
       */
      depth?: number;
      /**
       * Whether or not iframes and shadow roots should be traversed when returning the sub-tree
(default is false).
       */
      pierce?: boolean;
    };
    export type requestChildNodesReturnValue = {};
    /**
     * Requests that the node is sent to the caller given the JavaScript node object reference. All
nodes that form the path from the node to the root are also sent to the client as a series of
`setChildNodes` notifications.
     */
    export type requestNodeParameters = {
      /**
       * JavaScript object id to convert into node.
       */
      objectId: Runtime.RemoteObjectId;
    };
    export type requestNodeReturnValue = {
      /**
       * Node id for given object.
       */
      nodeId: NodeId;
    };
    /**
     * Resolves the JavaScript node object for a given NodeId or BackendNodeId.
     */
    export type resolveNodeParameters = {
      /**
       * Id of the node to resolve.
       */
      nodeId?: NodeId;
      /**
       * Backend identifier of the node to resolve.
       */
      backendNodeId?: DOM.BackendNodeId;
      /**
       * Symbolic group name that can be used to release multiple objects.
       */
      objectGroup?: string;
      /**
       * Execution context in which to resolve the node.
       */
      executionContextId?: Runtime.ExecutionContextId;
    };
    export type resolveNodeReturnValue = {
      /**
       * JavaScript object wrapper for given node.
       */
      object: Runtime.RemoteObject;
    };
    /**
     * Sets attribute for an element with given id.
     */
    export type setAttributeValueParameters = {
      /**
       * Id of the element to set attribute for.
       */
      nodeId: NodeId;
      /**
       * Attribute name.
       */
      name: string;
      /**
       * Attribute value.
       */
      value: string;
    };
    export type setAttributeValueReturnValue = {};
    /**
     * Sets attributes on element with given id. This method is useful when user edits some existing
attribute value and types in several attribute name/value pairs.
     */
    export type setAttributesAsTextParameters = {
      /**
       * Id of the element to set attributes for.
       */
      nodeId: NodeId;
      /**
       * Text with a number of attributes. Will parse this text using HTML parser.
       */
      text: string;
      /**
       * Attribute name to replace with new attributes derived from text in case text parsed
successfully.
       */
      name?: string;
    };
    export type setAttributesAsTextReturnValue = {};
    /**
     * Sets files for the given file input element.
     */
    export type setFileInputFilesParameters = {
      /**
       * Array of file paths to set.
       */
      files: string[];
      /**
       * Identifier of the node.
       */
      nodeId?: NodeId;
      /**
       * Identifier of the backend node.
       */
      backendNodeId?: BackendNodeId;
      /**
       * JavaScript object id of the node wrapper.
       */
      objectId?: Runtime.RemoteObjectId;
    };
    export type setFileInputFilesReturnValue = {};
    /**
     * Sets if stack traces should be captured for Nodes. See `Node.getNodeStackTraces`. Default is disabled.
     */
    export type setNodeStackTracesEnabledParameters = {
      /**
       * Enable or disable.
       */
      enable: boolean;
    };
    export type setNodeStackTracesEnabledReturnValue = {};
    /**
     * Gets stack traces associated with a Node. As of now, only provides stack trace for Node creation.
     */
    export type getNodeStackTracesParameters = {
      /**
       * Id of the node to get stack traces for.
       */
      nodeId: NodeId;
    };
    export type getNodeStackTracesReturnValue = {
      /**
       * Creation stack trace, if available.
       */
      creation?: Runtime.StackTrace;
    };
    /**
     * Returns file information for the given
File wrapper.
     */
    export type getFileInfoParameters = {
      /**
       * JavaScript object id of the node wrapper.
       */
      objectId: Runtime.RemoteObjectId;
    };
    export type getFileInfoReturnValue = {
      path: string;
    };
    /**
     * Returns list of detached nodes
     */
    export type getDetachedDomNodesParameters = {};
    export type getDetachedDomNodesReturnValue = {
      /**
       * The list of detached nodes
       */
      detachedNodes: DetachedElementInfo[];
    };
    /**
     * Enables console to refer to the node with given id via $x (see Command Line API for more details
$x functions).
     */
    export type setInspectedNodeParameters = {
      /**
       * DOM node id to be accessible by means of $x command line API.
       */
      nodeId: NodeId;
    };
    export type setInspectedNodeReturnValue = {};
    /**
     * Sets node name for a node with given id.
     */
    export type setNodeNameParameters = {
      /**
       * Id of the node to set name for.
       */
      nodeId: NodeId;
      /**
       * New node's name.
       */
      name: string;
    };
    export type setNodeNameReturnValue = {
      /**
       * New node's id.
       */
      nodeId: NodeId;
    };
    /**
     * Sets node value for a node with given id.
     */
    export type setNodeValueParameters = {
      /**
       * Id of the node to set value for.
       */
      nodeId: NodeId;
      /**
       * New node's value.
       */
      value: string;
    };
    export type setNodeValueReturnValue = {};
    /**
     * Sets node HTML markup, returns new node id.
     */
    export type setOuterHTMLParameters = {
      /**
       * Id of the node to set markup for.
       */
      nodeId: NodeId;
      /**
       * Outer HTML markup to set.
       */
      outerHTML: string;
    };
    export type setOuterHTMLReturnValue = {};
    /**
     * Undoes the last performed action.
     */
    export type undoParameters = {};
    export type undoReturnValue = {};
    /**
     * Returns iframe node that owns iframe with the given domain.
     */
    export type getFrameOwnerParameters = {
      frameId: Page.FrameId;
    };
    export type getFrameOwnerReturnValue = {
      /**
       * Resulting node.
       */
      backendNodeId: BackendNodeId;
      /**
       * Id of the node at given coordinates, only when enabled and requested document.
       */
      nodeId?: NodeId;
    };
    /**
     * Returns the query container of the given node based on container query
conditions: containerName, physical and logical axes, and whether it queries
scroll-state or anchored elements. If no axes are provided and
queriesScrollState is false, the style container is returned, which is the
direct parent or the closest element with a matching container-name.
     */
    export type getContainerForNodeParameters = {
      nodeId: NodeId;
      containerName?: string;
      physicalAxes?: PhysicalAxes;
      logicalAxes?: LogicalAxes;
      queriesScrollState?: boolean;
      queriesAnchored?: boolean;
    };
    export type getContainerForNodeReturnValue = {
      /**
       * The container node for the given node, or null if not found.
       */
      nodeId?: NodeId;
    };
    /**
     * Returns the descendants of a container query container that have
container queries against this container.
     */
    export type getQueryingDescendantsForContainerParameters = {
      /**
       * Id of the container node to find querying descendants from.
       */
      nodeId: NodeId;
    };
    export type getQueryingDescendantsForContainerReturnValue = {
      /**
       * Descendant nodes with container queries against the given container.
       */
      nodeIds: NodeId[];
    };
    /**
     * Returns the target anchor element of the given anchor query according to
https://www.w3.org/TR/css-anchor-position-1/#target.
     */
    export type getAnchorElementParameters = {
      /**
       * Id of the positioned element from which to find the anchor.
       */
      nodeId: NodeId;
      /**
       * An optional anchor specifier, as defined in
https://www.w3.org/TR/css-anchor-position-1/#anchor-specifier.
If not provided, it will return the implicit anchor element for
the given positioned element.
       */
      anchorSpecifier?: string;
    };
    export type getAnchorElementReturnValue = {
      /**
       * The anchor element of the given anchor query.
       */
      nodeId: NodeId;
    };
    /**
     * When enabling, this API force-opens the popover identified by nodeId
and keeps it open until disabled.
     */
    export type forceShowPopoverParameters = {
      /**
       * Id of the popover HTMLElement
       */
      nodeId: NodeId;
      /**
       * If true, opens the popover and keeps it open. If false, closes the
popover if it was previously force-opened.
       */
      enable: boolean;
    };
    export type forceShowPopoverReturnValue = {
      /**
       * List of popovers that were closed in order to respect popover stacking order.
       */
      nodeIds: NodeId[];
    };
  }
  /**
   * DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript
execution will stop on these operations as if there was a regular breakpoint set.
   */
  export namespace DOMDebugger {
    /**
     * DOM breakpoint type.
     */
    export type DOMBreakpointType = "subtree-modified" | "attribute-modified" | "node-removed";
    /**
     * CSP Violation type.
     */
    export type CSPViolationType = "trustedtype-sink-violation" | "trustedtype-policy-violation";
    /**
     * Object event listener.
     */
    export interface EventListener {
      /**
       * `EventListener`'s type.
       */
      type: string;
      /**
       * `EventListener`'s useCapture.
       */
      useCapture: boolean;
      /**
       * `EventListener`'s passive flag.
       */
      passive: boolean;
      /**
       * `EventListener`'s once flag.
       */
      once: boolean;
      /**
       * Script id of the handler code.
       */
      scriptId: Runtime.ScriptId;
      /**
       * Line number in the script (0-based).
       */
      lineNumber: number;
      /**
       * Column number in the script (0-based).
       */
      columnNumber: number;
      /**
       * Event handler function value.
       */
      handler?: Runtime.RemoteObject;
      /**
       * Event original handler function value.
       */
      originalHandler?: Runtime.RemoteObject;
      /**
       * Node the listener is added to (if any).
       */
      backendNodeId?: DOM.BackendNodeId;
    }
    /**
     * Returns event listeners of the given object.
     */
    export type getEventListenersParameters = {
      /**
       * Identifier of the object to return listeners for.
       */
      objectId: Runtime.RemoteObjectId;
      /**
       * The maximum depth at which Node children should be retrieved, defaults to 1. Use -1 for the
entire subtree or provide an integer larger than 0.
       */
      depth?: number;
      /**
       * Whether or not iframes and shadow roots should be traversed when returning the subtree
(default is false). Reports listeners for all contexts if pierce is enabled.
       */
      pierce?: boolean;
    };
    export type getEventListenersReturnValue = {
      /**
       * Array of relevant listeners.
       */
      listeners: EventListener[];
    };
    /**
     * Removes DOM breakpoint that was set using `setDOMBreakpoint`.
     */
    export type removeDOMBreakpointParameters = {
      /**
       * Identifier of the node to remove breakpoint from.
       */
      nodeId: DOM.NodeId;
      /**
       * Type of the breakpoint to remove.
       */
      type: DOMBreakpointType;
    };
    export type removeDOMBreakpointReturnValue = {};
    /**
     * Removes breakpoint on particular DOM event.
     */
    export type removeEventListenerBreakpointParameters = {
      /**
       * Event name.
       */
      eventName: string;
      /**
       * EventTarget interface name.
       */
      targetName?: string;
    };
    export type removeEventListenerBreakpointReturnValue = {};
    /**
     * Removes breakpoint on particular native event.
     */
    export type removeInstrumentationBreakpointParameters = {
      /**
       * Instrumentation name to stop on.
       */
      eventName: string;
    };
    export type removeInstrumentationBreakpointReturnValue = {};
    /**
     * Removes breakpoint from XMLHttpRequest.
     */
    export type removeXHRBreakpointParameters = {
      /**
       * Resource URL substring.
       */
      url: string;
    };
    export type removeXHRBreakpointReturnValue = {};
    /**
     * Sets breakpoint on particular CSP violations.
     */
    export type setBreakOnCSPViolationParameters = {
      /**
       * CSP Violations to stop upon.
       */
      violationTypes: CSPViolationType[];
    };
    export type setBreakOnCSPViolationReturnValue = {};
    /**
     * Sets breakpoint on particular operation with DOM.
     */
    export type setDOMBreakpointParameters = {
      /**
       * Identifier of the node to set breakpoint on.
       */
      nodeId: DOM.NodeId;
      /**
       * Type of the operation to stop upon.
       */
      type: DOMBreakpointType;
    };
    export type setDOMBreakpointReturnValue = {};
    /**
     * Sets breakpoint on particular DOM event.
     */
    export type setEventListenerBreakpointParameters = {
      /**
       * DOM Event name to stop on (any DOM event will do).
       */
      eventName: string;
      /**
       * EventTarget interface name to stop on. If equal to `"*"` or not provided, will stop on any
EventTarget.
       */
      targetName?: string;
    };
    export type setEventListenerBreakpointReturnValue = {};
    /**
     * Sets breakpoint on particular native event.
     */
    export type setInstrumentationBreakpointParameters = {
      /**
       * Instrumentation name to stop on.
       */
      eventName: string;
    };
    export type setInstrumentationBreakpointReturnValue = {};
    /**
     * Sets breakpoint on XMLHttpRequest.
     */
    export type setXHRBreakpointParameters = {
      /**
       * Resource URL substring. All XHRs having this substring in the URL will get stopped upon.
       */
      url: string;
    };
    export type setXHRBreakpointReturnValue = {};
  }
  /**
   * This domain facilitates obtaining document snapshots with DOM, layout, and style information.
   */
  export namespace DOMSnapshot {
    /**
     * A Node in the DOM tree.
     */
    export interface DOMNode {
      /**
       * `Node`'s nodeType.
       */
      nodeType: number;
      /**
       * `Node`'s nodeName.
       */
      nodeName: string;
      /**
       * `Node`'s nodeValue.
       */
      nodeValue: string;
      /**
       * Only set for textarea elements, contains the text value.
       */
      textValue?: string;
      /**
       * Only set for input elements, contains the input's associated text value.
       */
      inputValue?: string;
      /**
       * Only set for radio and checkbox input elements, indicates if the element has been checked
       */
      inputChecked?: boolean;
      /**
       * Only set for option elements, indicates if the element has been selected
       */
      optionSelected?: boolean;
      /**
       * `Node`'s id, corresponds to DOM.Node.backendNodeId.
       */
      backendNodeId: DOM.BackendNodeId;
      /**
       * The indexes of the node's child nodes in the `domNodes` array returned by `getSnapshot`, if
any.
       */
      childNodeIndexes?: number[];
      /**
       * Attributes of an `Element` node.
       */
      attributes?: NameValue[];
      /**
       * Indexes of pseudo elements associated with this node in the `domNodes` array returned by
`getSnapshot`, if any.
       */
      pseudoElementIndexes?: number[];
      /**
       * The index of the node's related layout tree node in the `layoutTreeNodes` array returned by
`getSnapshot`, if any.
       */
      layoutNodeIndex?: number;
      /**
       * Document URL that `Document` or `FrameOwner` node points to.
       */
      documentURL?: string;
      /**
       * Base URL that `Document` or `FrameOwner` node uses for URL completion.
       */
      baseURL?: string;
      /**
       * Only set for documents, contains the document's content language.
       */
      contentLanguage?: string;
      /**
       * Only set for documents, contains the document's character set encoding.
       */
      documentEncoding?: string;
      /**
       * `DocumentType` node's publicId.
       */
      publicId?: string;
      /**
       * `DocumentType` node's systemId.
       */
      systemId?: string;
      /**
       * Frame ID for frame owner elements and also for the document node.
       */
      frameId?: Page.FrameId;
      /**
       * The index of a frame owner element's content document in the `domNodes` array returned by
`getSnapshot`, if any.
       */
      contentDocumentIndex?: number;
      /**
       * Type of a pseudo element node.
       */
      pseudoType?: DOM.PseudoType;
      /**
       * Shadow root type.
       */
      shadowRootType?: DOM.ShadowRootType;
      /**
       * Whether this DOM node responds to mouse clicks. This includes nodes that have had click
event listeners attached via JavaScript as well as anchor tags that naturally navigate when
clicked.
       */
      isClickable?: boolean;
      /**
       * Details of the node's event listeners, if any.
       */
      eventListeners?: DOMDebugger.EventListener[];
      /**
       * The selected url for nodes with a srcset attribute.
       */
      currentSourceURL?: string;
      /**
       * The url of the script (if any) that generates this node.
       */
      originURL?: string;
      /**
       * Scroll offsets, set when this node is a Document.
       */
      scrollOffsetX?: number;
      scrollOffsetY?: number;
    }
    /**
     * Details of post layout rendered text positions. The exact layout should not be regarded as
stable and may change between versions.
     */
    export interface InlineTextBox {
      /**
       * The bounding box in document coordinates. Note that scroll offset of the document is ignored.
       */
      boundingBox: DOM.Rect;
      /**
       * The starting index in characters, for this post layout textbox substring. Characters that
would be represented as a surrogate pair in UTF-16 have length 2.
       */
      startCharacterIndex: number;
      /**
       * The number of characters in this post layout textbox substring. Characters that would be
represented as a surrogate pair in UTF-16 have length 2.
       */
      numCharacters: number;
    }
    /**
     * Details of an element in the DOM tree with a LayoutObject.
     */
    export interface LayoutTreeNode {
      /**
       * The index of the related DOM node in the `domNodes` array returned by `getSnapshot`.
       */
      domNodeIndex: number;
      /**
       * The bounding box in document coordinates. Note that scroll offset of the document is ignored.
       */
      boundingBox: DOM.Rect;
      /**
       * Contents of the LayoutText, if any.
       */
      layoutText?: string;
      /**
       * The post-layout inline text nodes, if any.
       */
      inlineTextNodes?: InlineTextBox[];
      /**
       * Index into the `computedStyles` array returned by `getSnapshot`.
       */
      styleIndex?: number;
      /**
       * Global paint order index, which is determined by the stacking order of the nodes. Nodes
that are painted together will have the same index. Only provided if includePaintOrder in
getSnapshot was true.
       */
      paintOrder?: number;
      /**
       * Set to true to indicate the element begins a new stacking context.
       */
      isStackingContext?: boolean;
    }
    /**
     * A subset of the full ComputedStyle as defined by the request whitelist.
     */
    export interface ComputedStyle {
      /**
       * Name/value pairs of computed style properties.
       */
      properties: NameValue[];
    }
    /**
     * A name/value pair.
     */
    export interface NameValue {
      /**
       * Attribute/property name.
       */
      name: string;
      /**
       * Attribute/property value.
       */
      value: string;
    }
    /**
     * Index of the string in the strings table.
     */
    export type StringIndex = number;
    /**
     * Index of the string in the strings table.
     */
    export type ArrayOfStrings = StringIndex[];
    /**
     * Data that is only present on rare nodes.
     */
    export interface RareStringData {
      index: number[];
      value: StringIndex[];
    }
    export interface RareBooleanData {
      index: number[];
    }
    export interface RareIntegerData {
      index: number[];
      value: number[];
    }
    export type Rectangle = number[];
    /**
     * Document snapshot.
     */
    export interface DocumentSnapshot {
      /**
       * Document URL that `Document` or `FrameOwner` node points to.
       */
      documentURL: StringIndex;
      /**
       * Document title.
       */
      title: StringIndex;
      /**
       * Base URL that `Document` or `FrameOwner` node uses for URL completion.
       */
      baseURL: StringIndex;
      /**
       * Contains the document's content language.
       */
      contentLanguage: StringIndex;
      /**
       * Contains the document's character set encoding.
       */
      encodingName: StringIndex;
      /**
       * `DocumentType` node's publicId.
       */
      publicId: StringIndex;
      /**
       * `DocumentType` node's systemId.
       */
      systemId: StringIndex;
      /**
       * Frame ID for frame owner elements and also for the document node.
       */
      frameId: StringIndex;
      /**
       * A table with dom nodes.
       */
      nodes: NodeTreeSnapshot;
      /**
       * The nodes in the layout tree.
       */
      layout: LayoutTreeSnapshot;
      /**
       * The post-layout inline text nodes.
       */
      textBoxes: TextBoxSnapshot;
      /**
       * Horizontal scroll offset.
       */
      scrollOffsetX?: number;
      /**
       * Vertical scroll offset.
       */
      scrollOffsetY?: number;
      /**
       * Document content width.
       */
      contentWidth?: number;
      /**
       * Document content height.
       */
      contentHeight?: number;
    }
    /**
     * Table containing nodes.
     */
    export interface NodeTreeSnapshot {
      /**
       * Parent node index.
       */
      parentIndex?: number[];
      /**
       * `Node`'s nodeType.
       */
      nodeType?: number[];
      /**
       * Type of the shadow root the `Node` is in. String values are equal to the `ShadowRootType` enum.
       */
      shadowRootType?: RareStringData;
      /**
       * `Node`'s nodeName.
       */
      nodeName?: StringIndex[];
      /**
       * `Node`'s nodeValue.
       */
      nodeValue?: StringIndex[];
      /**
       * `Node`'s id, corresponds to DOM.Node.backendNodeId.
       */
      backendNodeId?: DOM.BackendNodeId[];
      /**
       * Attributes of an `Element` node. Flatten name, value pairs.
       */
      attributes?: ArrayOfStrings[];
      /**
       * Only set for textarea elements, contains the text value.
       */
      textValue?: RareStringData;
      /**
       * Only set for input elements, contains the input's associated text value.
       */
      inputValue?: RareStringData;
      /**
       * Only set for radio and checkbox input elements, indicates if the element has been checked
       */
      inputChecked?: RareBooleanData;
      /**
       * Only set for option elements, indicates if the element has been selected
       */
      optionSelected?: RareBooleanData;
      /**
       * The index of the document in the list of the snapshot documents.
       */
      contentDocumentIndex?: RareIntegerData;
      /**
       * Type of a pseudo element node.
       */
      pseudoType?: RareStringData;
      /**
       * Pseudo element identifier for this node. Only present if there is a
valid pseudoType.
       */
      pseudoIdentifier?: RareStringData;
      /**
       * Whether this DOM node responds to mouse clicks. This includes nodes that have had click
event listeners attached via JavaScript as well as anchor tags that naturally navigate when
clicked.
       */
      isClickable?: RareBooleanData;
      /**
       * The selected url for nodes with a srcset attribute.
       */
      currentSourceURL?: RareStringData;
      /**
       * The url of the script (if any) that generates this node.
       */
      originURL?: RareStringData;
    }
    /**
     * Table of details of an element in the DOM tree with a LayoutObject.
     */
    export interface LayoutTreeSnapshot {
      /**
       * Index of the corresponding node in the `NodeTreeSnapshot` array returned by `captureSnapshot`.
       */
      nodeIndex: number[];
      /**
       * Array of indexes specifying computed style strings, filtered according to the `computedStyles` parameter passed to `captureSnapshot`.
       */
      styles: ArrayOfStrings[];
      /**
       * The absolute position bounding box.
       */
      bounds: Rectangle[];
      /**
       * Contents of the LayoutText, if any.
       */
      text: StringIndex[];
      /**
       * Stacking context information.
       */
      stackingContexts: RareBooleanData;
      /**
       * Global paint order index, which is determined by the stacking order of the nodes. Nodes
that are painted together will have the same index. Only provided if includePaintOrder in
captureSnapshot was true.
       */
      paintOrders?: number[];
      /**
       * The offset rect of nodes. Only available when includeDOMRects is set to true
       */
      offsetRects?: Rectangle[];
      /**
       * The scroll rect of nodes. Only available when includeDOMRects is set to true
       */
      scrollRects?: Rectangle[];
      /**
       * The client rect of nodes. Only available when includeDOMRects is set to true
       */
      clientRects?: Rectangle[];
      /**
       * The list of background colors that are blended with colors of overlapping elements.
       */
      blendedBackgroundColors?: StringIndex[];
      /**
       * The list of computed text opacities.
       */
      textColorOpacities?: number[];
    }
    /**
     * Table of details of the post layout rendered text positions. The exact layout should not be regarded as
stable and may change between versions.
     */
    export interface TextBoxSnapshot {
      /**
       * Index of the layout tree node that owns this box collection.
       */
      layoutIndex: number[];
      /**
       * The absolute position bounding box.
       */
      bounds: Rectangle[];
      /**
       * The starting index in characters, for this post layout textbox substring. Characters that
would be represented as a surrogate pair in UTF-16 have length 2.
       */
      start: number[];
      /**
       * The number of characters in this post layout textbox substring. Characters that would be
represented as a surrogate pair in UTF-16 have length 2.
       */
      length: number[];
    }
    /**
     * Disables DOM snapshot agent for the given page.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables DOM snapshot agent for the given page.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Returns a document snapshot, including the full DOM tree of the root node (including iframes,
template contents, and imported documents) in a flattened array, as well as layout and
white-listed computed style information for the nodes. Shadow DOM in the returned DOM tree is
flattened.
     */
    export type getSnapshotParameters = {
      /**
       * Whitelist of computed styles to return.
       */
      computedStyleWhitelist: string[];
      /**
       * Whether or not to retrieve details of DOM listeners (default false).
       */
      includeEventListeners?: boolean;
      /**
       * Whether to determine and include the paint order index of LayoutTreeNodes (default false).
       */
      includePaintOrder?: boolean;
      /**
       * Whether to include UA shadow tree in the snapshot (default false).
       */
      includeUserAgentShadowTree?: boolean;
    };
    export type getSnapshotReturnValue = {
      /**
       * The nodes in the DOM tree. The DOMNode at index 0 corresponds to the root document.
       */
      domNodes: DOMNode[];
      /**
       * The nodes in the layout tree.
       */
      layoutTreeNodes: LayoutTreeNode[];
      /**
       * Whitelisted ComputedStyle properties for each node in the layout tree.
       */
      computedStyles: ComputedStyle[];
    };
    /**
     * Returns a document snapshot, including the full DOM tree of the root node (including iframes,
template contents, and imported documents) in a flattened array, as well as layout and
white-listed computed style information for the nodes. Shadow DOM in the returned DOM tree is
flattened.
     */
    export type captureSnapshotParameters = {
      /**
       * Whitelist of computed styles to return.
       */
      computedStyles: string[];
      /**
       * Whether to include layout object paint orders into the snapshot.
       */
      includePaintOrder?: boolean;
      /**
       * Whether to include DOM rectangles (offsetRects, clientRects, scrollRects) into the snapshot
       */
      includeDOMRects?: boolean;
      /**
       * Whether to include blended background colors in the snapshot (default: false).
Blended background color is achieved by blending background colors of all elements
that overlap with the current element.
       */
      includeBlendedBackgroundColors?: boolean;
      /**
       * Whether to include text color opacity in the snapshot (default: false).
An element might have the opacity property set that affects the text color of the element.
The final text color opacity is computed based on the opacity of all overlapping elements.
       */
      includeTextColorOpacities?: boolean;
    };
    export type captureSnapshotReturnValue = {
      /**
       * The nodes in the DOM tree. The DOMNode at index 0 corresponds to the root document.
       */
      documents: DocumentSnapshot[];
      /**
       * Shared string table that all string properties refer to with indexes.
       */
      strings: string[];
    };
  }
  /**
   * Query and modify DOM storage.
   */
  export namespace DOMStorage {
    export type SerializedStorageKey = string;
    /**
     * DOM Storage identifier.
     */
    export interface StorageId {
      /**
       * Security origin for the storage.
       */
      securityOrigin?: string;
      /**
       * Represents a key by which DOM Storage keys its CachedStorageAreas
       */
      storageKey?: SerializedStorageKey;
      /**
       * Whether the storage is local storage (not session storage).
       */
      isLocalStorage: boolean;
    }
    /**
     * DOM Storage item.
     */
    export type Item = string[];
    export type domStorageItemAddedPayload = {
      storageId: StorageId;
      key: string;
      newValue: string;
    };
    export type domStorageItemRemovedPayload = {
      storageId: StorageId;
      key: string;
    };
    export type domStorageItemUpdatedPayload = {
      storageId: StorageId;
      key: string;
      oldValue: string;
      newValue: string;
    };
    export type domStorageItemsClearedPayload = {
      storageId: StorageId;
    };
    export type clearParameters = {
      storageId: StorageId;
    };
    export type clearReturnValue = {};
    /**
     * Disables storage tracking, prevents storage events from being sent to the client.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables storage tracking, storage events will now be delivered to the client.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    export type getDOMStorageItemsParameters = {
      storageId: StorageId;
    };
    export type getDOMStorageItemsReturnValue = {
      entries: Item[];
    };
    export type removeDOMStorageItemParameters = {
      storageId: StorageId;
      key: string;
    };
    export type removeDOMStorageItemReturnValue = {};
    export type setDOMStorageItemParameters = {
      storageId: StorageId;
      key: string;
      value: string;
    };
    export type setDOMStorageItemReturnValue = {};
  }
  export namespace DeviceAccess {
    /**
     * Device request id.
     */
    export type RequestId = string;
    /**
     * A device id.
     */
    export type DeviceId = string;
    /**
     * Device information displayed in a user prompt to select a device.
     */
    export interface PromptDevice {
      id: DeviceId;
      /**
       * Display name as it appears in a device request user prompt.
       */
      name: string;
    }
    /**
     * A device request opened a user prompt to select a device. Respond with the
selectPrompt or cancelPrompt command.
     */
    export type deviceRequestPromptedPayload = {
      id: RequestId;
      devices: PromptDevice[];
    };
    /**
     * Enable events in this domain.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Disable events in this domain.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Select a device in response to a DeviceAccess.deviceRequestPrompted event.
     */
    export type selectPromptParameters = {
      id: RequestId;
      deviceId: DeviceId;
    };
    export type selectPromptReturnValue = {};
    /**
     * Cancel a prompt in response to a DeviceAccess.deviceRequestPrompted event.
     */
    export type cancelPromptParameters = {
      id: RequestId;
    };
    export type cancelPromptReturnValue = {};
  }
  export namespace DeviceOrientation {
    /**
     * Clears the overridden Device Orientation.
     */
    export type clearDeviceOrientationOverrideParameters = {};
    export type clearDeviceOrientationOverrideReturnValue = {};
    /**
     * Overrides the Device Orientation.
     */
    export type setDeviceOrientationOverrideParameters = {
      /**
       * Mock alpha
       */
      alpha: number;
      /**
       * Mock beta
       */
      beta: number;
      /**
       * Mock gamma
       */
      gamma: number;
    };
    export type setDeviceOrientationOverrideReturnValue = {};
  }
  /**
   * This domain emulates different environments for the page.
   */
  export namespace Emulation {
    export interface SafeAreaInsets {
      /**
       * Overrides safe-area-inset-top.
       */
      top?: number;
      /**
       * Overrides safe-area-max-inset-top.
       */
      topMax?: number;
      /**
       * Overrides safe-area-inset-left.
       */
      left?: number;
      /**
       * Overrides safe-area-max-inset-left.
       */
      leftMax?: number;
      /**
       * Overrides safe-area-inset-bottom.
       */
      bottom?: number;
      /**
       * Overrides safe-area-max-inset-bottom.
       */
      bottomMax?: number;
      /**
       * Overrides safe-area-inset-right.
       */
      right?: number;
      /**
       * Overrides safe-area-max-inset-right.
       */
      rightMax?: number;
    }
    /**
     * Screen orientation.
     */
    export interface ScreenOrientation {
      /**
       * Orientation type.
       */
      type: "portraitPrimary" | "portraitSecondary" | "landscapePrimary" | "landscapeSecondary";
      /**
       * Orientation angle.
       */
      angle: number;
    }
    export interface DisplayFeature {
      /**
       * Orientation of a display feature in relation to screen
       */
      orientation: "vertical" | "horizontal";
      /**
       * The offset from the screen origin in either the x (for vertical
orientation) or y (for horizontal orientation) direction.
       */
      offset: number;
      /**
       * A display feature may mask content such that it is not physically
displayed - this length along with the offset describes this area.
A display feature that only splits content will have a 0 mask_length.
       */
      maskLength: number;
    }
    export interface DevicePosture {
      /**
       * Current posture of the device
       */
      type: "continuous" | "folded";
    }
    export interface MediaFeature {
      name: string;
      value: string;
    }
    /**
     * advance: If the scheduler runs out of immediate work, the virtual time base may fast forward to
allow the next delayed task (if any) to run; pause: The virtual time base may not advance;
pauseIfNetworkFetchesPending: The virtual time base may not advance if there are any pending
resource fetches.
     */
    export type VirtualTimePolicy = "advance" | "pause" | "pauseIfNetworkFetchesPending";
    /**
     * Used to specify User Agent Client Hints to emulate. See https://wicg.github.io/ua-client-hints
     */
    export interface UserAgentBrandVersion {
      brand: string;
      version: string;
    }
    /**
     * Used to specify User Agent Client Hints to emulate. See https://wicg.github.io/ua-client-hints
Missing optional values will be filled in by the target with what it would normally use.
     */
    export interface UserAgentMetadata {
      /**
       * Brands appearing in Sec-CH-UA.
       */
      brands?: UserAgentBrandVersion[];
      /**
       * Brands appearing in Sec-CH-UA-Full-Version-List.
       */
      fullVersionList?: UserAgentBrandVersion[];
      fullVersion?: string;
      platform: string;
      platformVersion: string;
      architecture: string;
      model: string;
      mobile: boolean;
      bitness?: string;
      wow64?: boolean;
      /**
       * Used to specify User Agent form-factor values.
See https://wicg.github.io/ua-client-hints/#sec-ch-ua-form-factors
       */
      formFactors?: string[];
    }
    /**
     * Used to specify sensor types to emulate.
See https://w3c.github.io/sensors/#automation for more information.
     */
    export type SensorType = "absolute-orientation" | "accelerometer" | "ambient-light" | "gravity" | "gyroscope" | "linear-acceleration" | "magnetometer" | "relative-orientation";
    export interface SensorMetadata {
      available?: boolean;
      minimumFrequency?: number;
      maximumFrequency?: number;
    }
    export interface SensorReadingSingle {
      value: number;
    }
    export interface SensorReadingXYZ {
      x: number;
      y: number;
      z: number;
    }
    export interface SensorReadingQuaternion {
      x: number;
      y: number;
      z: number;
      w: number;
    }
    export interface SensorReading {
      single?: SensorReadingSingle;
      xyz?: SensorReadingXYZ;
      quaternion?: SensorReadingQuaternion;
    }
    export type PressureSource = "cpu";
    export type PressureState = "nominal" | "fair" | "serious" | "critical";
    export interface PressureMetadata {
      available?: boolean;
    }
    export interface WorkAreaInsets {
      /**
       * Work area top inset in pixels. Default is 0;
       */
      top?: number;
      /**
       * Work area left inset in pixels. Default is 0;
       */
      left?: number;
      /**
       * Work area bottom inset in pixels. Default is 0;
       */
      bottom?: number;
      /**
       * Work area right inset in pixels. Default is 0;
       */
      right?: number;
    }
    export type ScreenId = string;
    /**
     * Screen information similar to the one returned by window.getScreenDetails() method,
see https://w3c.github.io/window-management/#screendetailed.
     */
    export interface ScreenInfo {
      /**
       * Offset of the left edge of the screen.
       */
      left: number;
      /**
       * Offset of the top edge of the screen.
       */
      top: number;
      /**
       * Width of the screen.
       */
      width: number;
      /**
       * Height of the screen.
       */
      height: number;
      /**
       * Offset of the left edge of the available screen area.
       */
      availLeft: number;
      /**
       * Offset of the top edge of the available screen area.
       */
      availTop: number;
      /**
       * Width of the available screen area.
       */
      availWidth: number;
      /**
       * Height of the available screen area.
       */
      availHeight: number;
      /**
       * Specifies the screen's device pixel ratio.
       */
      devicePixelRatio: number;
      /**
       * Specifies the screen's orientation.
       */
      orientation: ScreenOrientation;
      /**
       * Specifies the screen's color depth in bits.
       */
      colorDepth: number;
      /**
       * Indicates whether the device has multiple screens.
       */
      isExtended: boolean;
      /**
       * Indicates whether the screen is internal to the device or external, attached to the device.
       */
      isInternal: boolean;
      /**
       * Indicates whether the screen is set as the the operating system primary screen.
       */
      isPrimary: boolean;
      /**
       * Specifies the descriptive label for the screen.
       */
      label: string;
      /**
       * Specifies the unique identifier of the screen.
       */
      id: ScreenId;
    }
    /**
     * Enum of image types that can be disabled.
     */
    export type DisabledImageType = "avif" | "jxl" | "webp";
    /**
     * Notification sent after the virtual time budget for the current VirtualTimePolicy has run out.
     */
    export type virtualTimeBudgetExpiredPayload = void;
    /**
     * Fired when a page calls screen.orientation.lock() or screen.orientation.unlock()
while device emulation is enabled. This allows the DevTools frontend to update the
emulated device orientation accordingly.
     */
    export type screenOrientationLockChangedPayload = {
      /**
       * Whether the screen orientation is currently locked.
       */
      locked: boolean;
      /**
       * The orientation lock type requested by the page. Only set when locked is true.
       */
      orientation?: ScreenOrientation;
    };
    /**
     * Tells whether emulation is supported.
     */
    export type canEmulateParameters = {};
    export type canEmulateReturnValue = {
      /**
       * True if emulation is supported.
       */
      result: boolean;
    };
    /**
     * Clears the overridden device metrics.
     */
    export type clearDeviceMetricsOverrideParameters = {};
    export type clearDeviceMetricsOverrideReturnValue = {};
    /**
     * Clears the overridden Geolocation Position and Error.
     */
    export type clearGeolocationOverrideParameters = {};
    export type clearGeolocationOverrideReturnValue = {};
    /**
     * Requests that page scale factor is reset to initial values.
     */
    export type resetPageScaleFactorParameters = {};
    export type resetPageScaleFactorReturnValue = {};
    /**
     * Enables or disables simulating a focused and active page.
     */
    export type setFocusEmulationEnabledParameters = {
      /**
       * Whether to enable to disable focus emulation.
       */
      enabled: boolean;
    };
    export type setFocusEmulationEnabledReturnValue = {};
    /**
     * Automatically render all web contents using a dark theme.
     */
    export type setAutoDarkModeOverrideParameters = {
      /**
       * Whether to enable or disable automatic dark mode.
If not specified, any existing override will be cleared.
       */
      enabled?: boolean;
    };
    export type setAutoDarkModeOverrideReturnValue = {};
    /**
     * Enables CPU throttling to emulate slow CPUs.
     */
    export type setCPUThrottlingRateParameters = {
      /**
       * Throttling rate as a slowdown factor (1 is no throttle, 2 is 2x slowdown, etc).
       */
      rate: number;
    };
    export type setCPUThrottlingRateReturnValue = {};
    /**
     * Sets or clears an override of the default background color of the frame. This override is used
if the content does not specify one.
     */
    export type setDefaultBackgroundColorOverrideParameters = {
      /**
       * RGBA of the default background color. If not specified, any existing override will be
cleared.
       */
      color?: DOM.RGBA;
    };
    export type setDefaultBackgroundColorOverrideReturnValue = {};
    /**
     * Overrides the values for env(safe-area-inset-*) and env(safe-area-max-inset-*). Unset values will cause the
respective variables to be undefined, even if previously overridden.
     */
    export type setSafeAreaInsetsOverrideParameters = {
      insets: SafeAreaInsets;
    };
    export type setSafeAreaInsetsOverrideReturnValue = {};
    /**
     * Overrides the values of device screen dimensions (window.screen.width, window.screen.height,
window.innerWidth, window.innerHeight, and "device-width"/"device-height"-related CSS media
query results).
     */
    export type setDeviceMetricsOverrideParameters = {
      /**
       * Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override.
       */
      width: number;
      /**
       * Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override.
       */
      height: number;
      /**
       * Overriding device scale factor value. 0 disables the override.
       */
      deviceScaleFactor: number;
      /**
       * Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text
autosizing and more.
       */
      mobile: boolean;
      /**
       * Scale to apply to resulting view image.
       */
      scale?: number;
      /**
       * Overriding screen width value in pixels (minimum 0, maximum 10000000).
       */
      screenWidth?: number;
      /**
       * Overriding screen height value in pixels (minimum 0, maximum 10000000).
       */
      screenHeight?: number;
      /**
       * Overriding view X position on screen in pixels (minimum 0, maximum 10000000).
       */
      positionX?: number;
      /**
       * Overriding view Y position on screen in pixels (minimum 0, maximum 10000000).
       */
      positionY?: number;
      /**
       * Do not set visible view size, rely upon explicit setVisibleSize call.
       */
      dontSetVisibleSize?: boolean;
      /**
       * Screen orientation override.
       */
      screenOrientation?: ScreenOrientation;
      /**
       * If set, the visible area of the page will be overridden to this viewport. This viewport
change is not observed by the page, e.g. viewport-relative elements do not change positions.
       */
      viewport?: Page.Viewport;
      /**
       * If set, the display feature of a multi-segment screen. If not set, multi-segment support
is turned-off.
Deprecated, use Emulation.setDisplayFeaturesOverride.
       */
      displayFeature?: DisplayFeature;
      /**
       * If set, the posture of a foldable device. If not set the posture is set
to continuous.
Deprecated, use Emulation.setDevicePostureOverride.
       */
      devicePosture?: DevicePosture;
      /**
       * Scrollbar type. Default: `default`.
       */
      scrollbarType?: "overlay" | "default";
      /**
       * If set to true, enables screen orientation lock emulation, which
intercepts screen.orientation.lock() calls from the page and reports
orientation changes via screenOrientationLockChanged events. This is
useful for emulating mobile device orientation lock behavior in
responsive design mode.
       */
      screenOrientationLockEmulation?: boolean;
    };
    export type setDeviceMetricsOverrideReturnValue = {};
    /**
     * Start reporting the given posture value to the Device Posture API.
This override can also be set in setDeviceMetricsOverride().
     */
    export type setDevicePostureOverrideParameters = {
      posture: DevicePosture;
    };
    export type setDevicePostureOverrideReturnValue = {};
    /**
     * Clears a device posture override set with either setDeviceMetricsOverride()
or setDevicePostureOverride() and starts using posture information from the
platform again.
Does nothing if no override is set.
     */
    export type clearDevicePostureOverrideParameters = {};
    export type clearDevicePostureOverrideReturnValue = {};
    /**
     * Start using the given display features to pupulate the Viewport Segments API.
This override can also be set in setDeviceMetricsOverride().
     */
    export type setDisplayFeaturesOverrideParameters = {
      features: DisplayFeature[];
    };
    export type setDisplayFeaturesOverrideReturnValue = {};
    /**
     * Clears the display features override set with either setDeviceMetricsOverride()
or setDisplayFeaturesOverride() and starts using display features from the
platform again.
Does nothing if no override is set.
     */
    export type clearDisplayFeaturesOverrideParameters = {};
    export type clearDisplayFeaturesOverrideReturnValue = {};
    export type setScrollbarsHiddenParameters = {
      /**
       * Whether scrollbars should be always hidden.
       */
      hidden: boolean;
    };
    export type setScrollbarsHiddenReturnValue = {};
    export type setDocumentCookieDisabledParameters = {
      /**
       * Whether document.coookie API should be disabled.
       */
      disabled: boolean;
    };
    export type setDocumentCookieDisabledReturnValue = {};
    export type setEmitTouchEventsForMouseParameters = {
      /**
       * Whether touch emulation based on mouse input should be enabled.
       */
      enabled: boolean;
      /**
       * Touch/gesture events configuration. Default: current platform.
       */
      configuration?: "mobile" | "desktop";
    };
    export type setEmitTouchEventsForMouseReturnValue = {};
    /**
     * Emulates the given media type or media feature for CSS media queries.
     */
    export type setEmulatedMediaParameters = {
      /**
       * Media type to emulate. Empty string disables the override.
       */
      media?: string;
      /**
       * Media features to emulate.
       */
      features?: MediaFeature[];
    };
    export type setEmulatedMediaReturnValue = {};
    /**
     * Emulates the given vision deficiency.
     */
    export type setEmulatedVisionDeficiencyParameters = {
      /**
       * Vision deficiency to emulate. Order: best-effort emulations come first, followed by any
physiologically accurate emulations for medically recognized color vision deficiencies.
       */
      type: "none" | "blurredVision" | "reducedContrast" | "achromatopsia" | "deuteranopia" | "protanopia" | "tritanopia";
    };
    export type setEmulatedVisionDeficiencyReturnValue = {};
    /**
     * Emulates the given OS text scale.
     */
    export type setEmulatedOSTextScaleParameters = {
      scale?: number;
    };
    export type setEmulatedOSTextScaleReturnValue = {};
    /**
     * Overrides the Geolocation Position or Error. Omitting latitude, longitude or
accuracy emulates position unavailable.
     */
    export type setGeolocationOverrideParameters = {
      /**
       * Mock latitude
       */
      latitude?: number;
      /**
       * Mock longitude
       */
      longitude?: number;
      /**
       * Mock accuracy
       */
      accuracy?: number;
      /**
       * Mock altitude
       */
      altitude?: number;
      /**
       * Mock altitudeAccuracy
       */
      altitudeAccuracy?: number;
      /**
       * Mock heading
       */
      heading?: number;
      /**
       * Mock speed
       */
      speed?: number;
    };
    export type setGeolocationOverrideReturnValue = {};
    export type getOverriddenSensorInformationParameters = {
      type: SensorType;
    };
    export type getOverriddenSensorInformationReturnValue = {
      requestedSamplingFrequency: number;
    };
    /**
     * Overrides a platform sensor of a given type. If |enabled| is true, calls to
Sensor.start() will use a virtual sensor as backend rather than fetching
data from a real hardware sensor. Otherwise, existing virtual
sensor-backend Sensor objects will fire an error event and new calls to
Sensor.start() will attempt to use a real sensor instead.
     */
    export type setSensorOverrideEnabledParameters = {
      enabled: boolean;
      type: SensorType;
      metadata?: SensorMetadata;
    };
    export type setSensorOverrideEnabledReturnValue = {};
    /**
     * Updates the sensor readings reported by a sensor type previously overridden
by setSensorOverrideEnabled.
     */
    export type setSensorOverrideReadingsParameters = {
      type: SensorType;
      reading: SensorReading;
    };
    export type setSensorOverrideReadingsReturnValue = {};
    /**
     * Overrides a pressure source of a given type, as used by the Compute
Pressure API, so that updates to PressureObserver.observe() are provided
via setPressureStateOverride instead of being retrieved from
platform-provided telemetry data.
     */
    export type setPressureSourceOverrideEnabledParameters = {
      enabled: boolean;
      source: PressureSource;
      metadata?: PressureMetadata;
    };
    export type setPressureSourceOverrideEnabledReturnValue = {};
    /**
     * TODO: OBSOLETE: To remove when setPressureDataOverride is merged.
Provides a given pressure state that will be processed and eventually be
delivered to PressureObserver users. |source| must have been previously
overridden by setPressureSourceOverrideEnabled.
     */
    export type setPressureStateOverrideParameters = {
      source: PressureSource;
      state: PressureState;
    };
    export type setPressureStateOverrideReturnValue = {};
    /**
     * Provides a given pressure data set that will be processed and eventually be
delivered to PressureObserver users. |source| must have been previously
overridden by setPressureSourceOverrideEnabled.
     */
    export type setPressureDataOverrideParameters = {
      source: PressureSource;
      state: PressureState;
      ownContributionEstimate?: number;
    };
    export type setPressureDataOverrideReturnValue = {};
    /**
     * Overrides the Idle state.
     */
    export type setIdleOverrideParameters = {
      /**
       * Mock isUserActive
       */
      isUserActive: boolean;
      /**
       * Mock isScreenUnlocked
       */
      isScreenUnlocked: boolean;
    };
    export type setIdleOverrideReturnValue = {};
    /**
     * Clears Idle state overrides.
     */
    export type clearIdleOverrideParameters = {};
    export type clearIdleOverrideReturnValue = {};
    /**
     * Overrides value returned by the javascript navigator object.
     */
    export type setNavigatorOverridesParameters = {
      /**
       * The platform navigator.platform should return.
       */
      platform: string;
    };
    export type setNavigatorOverridesReturnValue = {};
    /**
     * Sets a specified page scale factor.
     */
    export type setPageScaleFactorParameters = {
      /**
       * Page scale factor.
       */
      pageScaleFactor: number;
    };
    export type setPageScaleFactorReturnValue = {};
    /**
     * Switches script execution in the page.
     */
    export type setScriptExecutionDisabledParameters = {
      /**
       * Whether script execution should be disabled in the page.
       */
      value: boolean;
    };
    export type setScriptExecutionDisabledReturnValue = {};
    /**
     * Enables touch on platforms which do not support them.
     */
    export type setTouchEmulationEnabledParameters = {
      /**
       * Whether the touch event emulation should be enabled.
       */
      enabled: boolean;
      /**
       * Maximum touch points supported. Defaults to one.
       */
      maxTouchPoints?: number;
    };
    export type setTouchEmulationEnabledReturnValue = {};
    /**
     * Turns on virtual time for all frames (replacing real-time with a synthetic time source) and sets
the current virtual time policy.  Note this supersedes any previous time budget.
     */
    export type setVirtualTimePolicyParameters = {
      policy: VirtualTimePolicy;
      /**
       * If set, after this many virtual milliseconds have elapsed virtual time will be paused and a
virtualTimeBudgetExpired event is sent.
       */
      budget?: number;
      /**
       * If set this specifies the maximum number of tasks that can be run before virtual is forced
forwards to prevent deadlock.
       */
      maxVirtualTimeTaskStarvationCount?: number;
      /**
       * If set, base::Time::Now will be overridden to initially return this value.
       */
      initialVirtualTime?: Network.TimeSinceEpoch;
    };
    export type setVirtualTimePolicyReturnValue = {
      /**
       * Absolute timestamp at which virtual time was first enabled (up time in milliseconds).
       */
      virtualTimeTicksBase: number;
    };
    /**
     * Overrides default host system locale with the specified one.
     */
    export type setLocaleOverrideParameters = {
      /**
       * ICU style C locale (e.g. "en_US"). If not specified or empty, disables the override and
restores default host system locale.
       */
      locale?: string;
    };
    export type setLocaleOverrideReturnValue = {};
    /**
     * Overrides default host system timezone with the specified one.
     */
    export type setTimezoneOverrideParameters = {
      /**
       * The timezone identifier. List of supported timezones:
https://source.chromium.org/chromium/chromium/deps/icu.git/+/faee8bc70570192d82d2978a71e2a615788597d1:source/data/misc/metaZones.txt
If empty, disables the override and restores default host system timezone.
       */
      timezoneId: string;
    };
    export type setTimezoneOverrideReturnValue = {};
    /**
     * Resizes the frame/viewport of the page. Note that this does not affect the frame's container
(e.g. browser window). Can be used to produce screenshots of the specified size. Not supported
on Android.
     */
    export type setVisibleSizeParameters = {
      /**
       * Frame width (DIP).
       */
      width: number;
      /**
       * Frame height (DIP).
       */
      height: number;
    };
    export type setVisibleSizeReturnValue = {};
    export type setDisabledImageTypesParameters = {
      /**
       * Image types to disable.
       */
      imageTypes: DisabledImageType[];
    };
    export type setDisabledImageTypesReturnValue = {};
    /**
     * Override the value of navigator.connection.saveData
     */
    export type setDataSaverOverrideParameters = {
      /**
       * Override value. Omitting the parameter disables the override.
       */
      dataSaverEnabled?: boolean;
    };
    export type setDataSaverOverrideReturnValue = {};
    export type setHardwareConcurrencyOverrideParameters = {
      /**
       * Hardware concurrency to report
       */
      hardwareConcurrency: number;
    };
    export type setHardwareConcurrencyOverrideReturnValue = {};
    /**
     * Allows overriding user agent with the given string.
`userAgentMetadata` must be set for Client Hint headers to be sent.
     */
    export type setUserAgentOverrideParameters = {
      /**
       * User agent to use.
       */
      userAgent: string;
      /**
       * Browser language to emulate.
       */
      acceptLanguage?: string;
      /**
       * The platform navigator.platform should return.
       */
      platform?: string;
      /**
       * To be sent in Sec-CH-UA-* headers and returned in navigator.userAgentData
       */
      userAgentMetadata?: UserAgentMetadata;
    };
    export type setUserAgentOverrideReturnValue = {};
    /**
     * Allows overriding the automation flag.
     */
    export type setAutomationOverrideParameters = {
      /**
       * Whether the override should be enabled.
       */
      enabled: boolean;
    };
    export type setAutomationOverrideReturnValue = {};
    /**
     * Allows overriding the difference between the small and large viewport sizes, which determine the
value of the `svh` and `lvh` unit, respectively. Only supported for top-level frames.
     */
    export type setSmallViewportHeightDifferenceOverrideParameters = {
      /**
       * This will cause an element of size 100svh to be `difference` pixels smaller than an element
of size 100lvh.
       */
      difference: number;
    };
    export type setSmallViewportHeightDifferenceOverrideReturnValue = {};
    /**
     * Returns device's screen configuration. In headful mode, the physical screens configuration is returned,
whereas in headless mode, a virtual headless screen configuration is provided instead.
     */
    export type getScreenInfosParameters = {};
    export type getScreenInfosReturnValue = {
      screenInfos: ScreenInfo[];
    };
    /**
     * Add a new screen to the device. Only supported in headless mode.
     */
    export type addScreenParameters = {
      /**
       * Offset of the left edge of the screen in pixels.
       */
      left: number;
      /**
       * Offset of the top edge of the screen in pixels.
       */
      top: number;
      /**
       * The width of the screen in pixels.
       */
      width: number;
      /**
       * The height of the screen in pixels.
       */
      height: number;
      /**
       * Specifies the screen's work area. Default is entire screen.
       */
      workAreaInsets?: WorkAreaInsets;
      /**
       * Specifies the screen's device pixel ratio. Default is 1.
       */
      devicePixelRatio?: number;
      /**
       * Specifies the screen's rotation angle. Available values are 0, 90, 180 and 270. Default is 0.
       */
      rotation?: number;
      /**
       * Specifies the screen's color depth in bits. Default is 24.
       */
      colorDepth?: number;
      /**
       * Specifies the descriptive label for the screen. Default is none.
       */
      label?: string;
      /**
       * Indicates whether the screen is internal to the device or external, attached to the device. Default is false.
       */
      isInternal?: boolean;
    };
    export type addScreenReturnValue = {
      screenInfo: ScreenInfo;
    };
    /**
     * Updates specified screen parameters. Only supported in headless mode.
     */
    export type updateScreenParameters = {
      /**
       * Target screen identifier.
       */
      screenId: ScreenId;
      /**
       * Offset of the left edge of the screen in pixels.
       */
      left?: number;
      /**
       * Offset of the top edge of the screen in pixels.
       */
      top?: number;
      /**
       * The width of the screen in pixels.
       */
      width?: number;
      /**
       * The height of the screen in pixels.
       */
      height?: number;
      /**
       * Specifies the screen's work area.
       */
      workAreaInsets?: WorkAreaInsets;
      /**
       * Specifies the screen's device pixel ratio.
       */
      devicePixelRatio?: number;
      /**
       * Specifies the screen's rotation angle. Available values are 0, 90, 180 and 270.
       */
      rotation?: number;
      /**
       * Specifies the screen's color depth in bits.
       */
      colorDepth?: number;
      /**
       * Specifies the descriptive label for the screen.
       */
      label?: string;
      /**
       * Indicates whether the screen is internal to the device or external, attached to the device. Default is false.
       */
      isInternal?: boolean;
    };
    export type updateScreenReturnValue = {
      screenInfo: ScreenInfo;
    };
    /**
     * Remove screen from the device. Only supported in headless mode.
     */
    export type removeScreenParameters = {
      screenId: ScreenId;
    };
    export type removeScreenReturnValue = {};
    /**
     * Set primary screen. Only supported in headless mode.
Note that this changes the coordinate system origin to the top-left
of the new primary screen, updating the bounds and work areas
of all existing screens accordingly.
     */
    export type setPrimaryScreenParameters = {
      screenId: ScreenId;
    };
    export type setPrimaryScreenReturnValue = {};
  }
  /**
   * EventBreakpoints permits setting JavaScript breakpoints on operations and events
occurring in native code invoked from JavaScript. Once breakpoint is hit, it is
reported through Debugger domain, similarly to regular breakpoints being hit.
   */
  export namespace EventBreakpoints {
    /**
     * Sets breakpoint on particular native event.
     */
    export type setInstrumentationBreakpointParameters = {
      /**
       * Instrumentation name to stop on.
       */
      eventName: string;
    };
    export type setInstrumentationBreakpointReturnValue = {};
    /**
     * Removes breakpoint on particular native event.
     */
    export type removeInstrumentationBreakpointParameters = {
      /**
       * Instrumentation name to stop on.
       */
      eventName: string;
    };
    export type removeInstrumentationBreakpointReturnValue = {};
    /**
     * Removes all breakpoints
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
  }
  /**
   * Defines commands and events for browser extensions.
   */
  export namespace Extensions {
    /**
     * Storage areas.
     */
    export type StorageArea = "session" | "local" | "sync" | "managed";
    /**
     * Detailed information about an extension.
     */
    export interface ExtensionInfo {
      /**
       * Extension id.
       */
      id: string;
      /**
       * Extension name.
       */
      name: string;
      /**
       * Extension version.
       */
      version: string;
      /**
       * The path from which the extension was loaded.
       */
      path: string;
      /**
       * Extension enabled status.
       */
      enabled: boolean;
    }
    /**
     * Runs an extension default action.
     */
    export type triggerActionParameters = {
      /**
       * Extension id.
       */
      id: string;
      /**
       * A tab target ID to trigger the default extension action on.
       */
      targetId: string;
    };
    export type triggerActionReturnValue = {};
    /**
     * Installs an unpacked extension from the filesystem similar to
--load-extension CLI flags. Returns extension ID once the extension
has been installed.
     */
    export type loadUnpackedParameters = {
      /**
       * Absolute file path.
       */
      path: string;
      /**
       * Enable the extension in incognito
       */
      enableInIncognito?: boolean;
    };
    export type loadUnpackedReturnValue = {
      /**
       * Extension id.
       */
      id: string;
    };
    /**
     * Gets a list of all unpacked extensions.
     */
    export type getExtensionsParameters = {};
    export type getExtensionsReturnValue = {
      extensions: ExtensionInfo[];
    };
    /**
     * Uninstalls an unpacked extension (others not supported) from the profile.
     */
    export type uninstallParameters = {
      /**
       * Extension id.
       */
      id: string;
    };
    export type uninstallReturnValue = {};
    /**
     * Gets data from extension storage in the given `storageArea`. If `keys` is
specified, these are used to filter the result.
     */
    export type getStorageItemsParameters = {
      /**
       * ID of extension.
       */
      id: string;
      /**
       * StorageArea to retrieve data from.
       */
      storageArea: StorageArea;
      /**
       * Keys to retrieve.
       */
      keys?: string[];
    };
    export type getStorageItemsReturnValue = {
      data: {
        [key: string]: string;
      };
    };
    /**
     * Removes `keys` from extension storage in the given `storageArea`.
     */
    export type removeStorageItemsParameters = {
      /**
       * ID of extension.
       */
      id: string;
      /**
       * StorageArea to remove data from.
       */
      storageArea: StorageArea;
      /**
       * Keys to remove.
       */
      keys: string[];
    };
    export type removeStorageItemsReturnValue = {};
    /**
     * Clears extension storage in the given `storageArea`.
     */
    export type clearStorageItemsParameters = {
      /**
       * ID of extension.
       */
      id: string;
      /**
       * StorageArea to remove data from.
       */
      storageArea: StorageArea;
    };
    export type clearStorageItemsReturnValue = {};
    /**
     * Sets `values` in extension storage in the given `storageArea`. The provided `values`
will be merged with existing values in the storage area.
     */
    export type setStorageItemsParameters = {
      /**
       * ID of extension.
       */
      id: string;
      /**
       * StorageArea to set data in.
       */
      storageArea: StorageArea;
      /**
       * Values to set.
       */
      values: {
        [key: string]: string;
      };
    };
    export type setStorageItemsReturnValue = {};
  }
  /**
   * This domain allows interacting with the FedCM dialog.
   */
  export namespace FedCm {
    /**
     * Whether this is a sign-up or sign-in action for this account, i.e.
whether this account has ever been used to sign in to this RP before.
     */
    export type LoginState = "SignIn" | "SignUp";
    /**
     * The types of FedCM dialogs.
     */
    export type DialogType = "AccountChooser" | "AutoReauthn" | "ConfirmIdpLogin" | "Error";
    /**
     * The buttons on the FedCM dialog.
     */
    export type DialogButton = "ConfirmIdpLoginContinue" | "ErrorGotIt" | "ErrorMoreDetails";
    /**
     * The URLs that each account has
     */
    export type AccountUrlType = "TermsOfService" | "PrivacyPolicy";
    /**
     * Corresponds to IdentityRequestAccount
     */
    export interface Account {
      accountId: string;
      email: string;
      name: string;
      givenName: string;
      pictureUrl: string;
      idpConfigUrl: string;
      idpLoginUrl: string;
      loginState: LoginState;
      /**
       * These two are only set if the loginState is signUp
       */
      termsOfServiceUrl?: string;
      privacyPolicyUrl?: string;
    }
    export type dialogShownPayload = {
      dialogId: string;
      dialogType: DialogType;
      accounts: Account[];
      /**
       * These exist primarily so that the caller can verify the
RP context was used appropriately.
       */
      title: string;
      subtitle?: string;
    };
    /**
     * Triggered when a dialog is closed, either by user action, JS abort,
or a command below.
     */
    export type dialogClosedPayload = {
      dialogId: string;
    };
    export type enableParameters = {
      /**
       * Allows callers to disable the promise rejection delay that would
normally happen, if this is unimportant to what's being tested.
(step 4 of https://fedidcg.github.io/FedCM/#browser-api-rp-sign-in)
       */
      disableRejectionDelay?: boolean;
    };
    export type enableReturnValue = {};
    export type disableParameters = {};
    export type disableReturnValue = {};
    export type selectAccountParameters = {
      dialogId: string;
      accountIndex: number;
    };
    export type selectAccountReturnValue = {};
    export type clickDialogButtonParameters = {
      dialogId: string;
      dialogButton: DialogButton;
    };
    export type clickDialogButtonReturnValue = {};
    export type openUrlParameters = {
      dialogId: string;
      accountIndex: number;
      accountUrlType: AccountUrlType;
    };
    export type openUrlReturnValue = {};
    export type dismissDialogParameters = {
      dialogId: string;
      triggerCooldown?: boolean;
    };
    export type dismissDialogReturnValue = {};
    /**
     * Resets the cooldown time, if any, to allow the next FedCM call to show
a dialog even if one was recently dismissed by the user.
     */
    export type resetCooldownParameters = {};
    export type resetCooldownReturnValue = {};
  }
  /**
   * A domain for letting clients substitute browser's network layer with client code.
   */
  export namespace Fetch {
    /**
     * Unique request identifier.
Note that this does not identify individual HTTP requests that are part of
a network request.
     */
    export type RequestId = string;
    /**
     * Stages of the request to handle. Request will intercept before the request is
sent. Response will intercept after the response is received (but before response
body is received).
     */
    export type RequestStage = "Request" | "Response";
    export interface RequestPattern {
      /**
       * Wildcards (`'*'` -> zero or more, `'?'` -> exactly one) are allowed. Escape character is
backslash. Omitting is equivalent to `"*"`.
       */
      urlPattern?: string;
      /**
       * If set, only requests for matching resource types will be intercepted.
       */
      resourceType?: Network.ResourceType;
      /**
       * Stage at which to begin intercepting requests. Default is Request.
       */
      requestStage?: RequestStage;
    }
    /**
     * Response HTTP header entry
     */
    export interface HeaderEntry {
      name: string;
      value: string;
    }
    /**
     * Authorization challenge for HTTP status code 401 or 407.
     */
    export interface AuthChallenge {
      /**
       * Source of the authentication challenge.
       */
      source?: "Server" | "Proxy";
      /**
       * Origin of the challenger.
       */
      origin: string;
      /**
       * The authentication scheme used, such as basic or digest
       */
      scheme: string;
      /**
       * The realm of the challenge. May be empty.
       */
      realm: string;
    }
    /**
     * Response to an AuthChallenge.
     */
    export interface AuthChallengeResponse {
      /**
       * The decision on what to do in response to the authorization challenge.  Default means
deferring to the default behavior of the net stack, which will likely either the Cancel
authentication or display a popup dialog box.
       */
      response: "Default" | "CancelAuth" | "ProvideCredentials";
      /**
       * The username to provide, possibly empty. Should only be set if response is
ProvideCredentials.
       */
      username?: string;
      /**
       * The password to provide, possibly empty. Should only be set if response is
ProvideCredentials.
       */
      password?: string;
    }
    /**
     * Issued when the domain is enabled and the request URL matches the
specified filter. The request is paused until the client responds
with one of continueRequest, failRequest or fulfillRequest.
The stage of the request can be determined by presence of responseErrorReason
and responseStatusCode -- the request is at the response stage if either
of these fields is present and in the request stage otherwise.
Redirect responses and subsequent requests are reported similarly to regular
responses and requests. Redirect responses may be distinguished by the value
of `responseStatusCode` (which is one of 301, 302, 303, 307, 308) along with
presence of the `location` header. Requests resulting from a redirect will
have `redirectedRequestId` field set.
     */
    export type requestPausedPayload = {
      /**
       * Each request the page makes will have a unique id.
       */
      requestId: RequestId;
      /**
       * The details of the request.
       */
      request: Network.Request;
      /**
       * The id of the frame that initiated the request.
       */
      frameId: Page.FrameId;
      /**
       * How the requested resource will be used.
       */
      resourceType: Network.ResourceType;
      /**
       * Response error if intercepted at response stage.
       */
      responseErrorReason?: Network.ErrorReason;
      /**
       * Response code if intercepted at response stage.
       */
      responseStatusCode?: number;
      /**
       * Response status text if intercepted at response stage.
       */
      responseStatusText?: string;
      /**
       * Response headers if intercepted at the response stage.
       */
      responseHeaders?: HeaderEntry[];
      /**
       * If the intercepted request had a corresponding Network.requestWillBeSent event fired for it,
then this networkId will be the same as the requestId present in the requestWillBeSent event.
       */
      networkId?: Network.RequestId;
      /**
       * If the request is due to a redirect response from the server, the id of the request that
has caused the redirect.
       */
      redirectedRequestId?: RequestId;
    };
    /**
     * Issued when the domain is enabled with handleAuthRequests set to true.
The request is paused until client responds with continueWithAuth.
     */
    export type authRequiredPayload = {
      /**
       * Each request the page makes will have a unique id.
       */
      requestId: RequestId;
      /**
       * The details of the request.
       */
      request: Network.Request;
      /**
       * The id of the frame that initiated the request.
       */
      frameId: Page.FrameId;
      /**
       * How the requested resource will be used.
       */
      resourceType: Network.ResourceType;
      /**
       * Details of the Authorization Challenge encountered.
If this is set, client should respond with continueRequest that
contains AuthChallengeResponse.
       */
      authChallenge: AuthChallenge;
    };
    /**
     * Disables the fetch domain.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables issuing of requestPaused events. A request will be paused until client
calls one of failRequest, fulfillRequest or continueRequest/continueWithAuth.
     */
    export type enableParameters = {
      /**
       * If specified, only requests matching any of these patterns will produce
fetchRequested event and will be paused until clients response. If not set,
all requests will be affected.
       */
      patterns?: RequestPattern[];
      /**
       * If true, authRequired events will be issued and requests will be paused
expecting a call to continueWithAuth.
       */
      handleAuthRequests?: boolean;
    };
    export type enableReturnValue = {};
    /**
     * Causes the request to fail with specified reason.
     */
    export type failRequestParameters = {
      /**
       * An id the client received in requestPaused event.
       */
      requestId: RequestId;
      /**
       * Causes the request to fail with the given reason.
       */
      errorReason: Network.ErrorReason;
    };
    export type failRequestReturnValue = {};
    /**
     * Provides response to the request.
     */
    export type fulfillRequestParameters = {
      /**
       * An id the client received in requestPaused event.
       */
      requestId: RequestId;
      /**
       * An HTTP response code.
       */
      responseCode: number;
      /**
       * Response headers.
       */
      responseHeaders?: HeaderEntry[];
      /**
       * Alternative way of specifying response headers as a \0-separated
series of name: value pairs. Prefer the above method unless you
need to represent some non-UTF8 values that can't be transmitted
over the protocol as text.
       */
      binaryResponseHeaders?: binary;
      /**
       * A response body. If absent, original response body will be used if
the request is intercepted at the response stage and empty body
will be used if the request is intercepted at the request stage.
       */
      body?: binary;
      /**
       * A textual representation of responseCode.
If absent, a standard phrase matching responseCode is used.
       */
      responsePhrase?: string;
    };
    export type fulfillRequestReturnValue = {};
    /**
     * Continues the request, optionally modifying some of its parameters.
     */
    export type continueRequestParameters = {
      /**
       * An id the client received in requestPaused event.
       */
      requestId: RequestId;
      /**
       * If set, the request url will be modified in a way that's not observable by page.
       */
      url?: string;
      /**
       * If set, the request method is overridden.
       */
      method?: string;
      /**
       * If set, overrides the post data in the request.
       */
      postData?: binary;
      /**
       * If set, overrides the request headers. Note that the overrides do not
extend to subsequent redirect hops, if a redirect happens. Another override
may be applied to a different request produced by a redirect.
       */
      headers?: HeaderEntry[];
      /**
       * If set, overrides response interception behavior for this request.
       */
      interceptResponse?: boolean;
    };
    export type continueRequestReturnValue = {};
    /**
     * Continues a request supplying authChallengeResponse following authRequired event.
     */
    export type continueWithAuthParameters = {
      /**
       * An id the client received in authRequired event.
       */
      requestId: RequestId;
      /**
       * Response to  with an authChallenge.
       */
      authChallengeResponse: AuthChallengeResponse;
    };
    export type continueWithAuthReturnValue = {};
    /**
     * Continues loading of the paused response, optionally modifying the
response headers. If either responseCode or headers are modified, all of them
must be present.
     */
    export type continueResponseParameters = {
      /**
       * An id the client received in requestPaused event.
       */
      requestId: RequestId;
      /**
       * An HTTP response code. If absent, original response code will be used.
       */
      responseCode?: number;
      /**
       * A textual representation of responseCode.
If absent, a standard phrase matching responseCode is used.
       */
      responsePhrase?: string;
      /**
       * Response headers. If absent, original response headers will be used.
       */
      responseHeaders?: HeaderEntry[];
      /**
       * Alternative way of specifying response headers as a \0-separated
series of name: value pairs. Prefer the above method unless you
need to represent some non-UTF8 values that can't be transmitted
over the protocol as text.
       */
      binaryResponseHeaders?: binary;
    };
    export type continueResponseReturnValue = {};
    /**
     * Causes the body of the response to be received from the server and
returned as a single string. May only be issued for a request that
is paused in the Response stage and is mutually exclusive with
takeResponseBodyForInterceptionAsStream. Calling other methods that
affect the request or disabling fetch domain before body is received
results in an undefined behavior.
Note that the response body is not available for redirects. Requests
paused in the _redirect received_ state may be differentiated by
`responseCode` and presence of `location` response header, see
comments to `requestPaused` for details.
     */
    export type getResponseBodyParameters = {
      /**
       * Identifier for the intercepted request to get body for.
       */
      requestId: RequestId;
    };
    export type getResponseBodyReturnValue = {
      /**
       * Response body.
       */
      body: string;
      /**
       * True, if content was sent as base64.
       */
      base64Encoded: boolean;
    };
    /**
     * Returns a handle to the stream representing the response body.
The request must be paused in the HeadersReceived stage.
Note that after this command the request can't be continued
as is -- client either needs to cancel it or to provide the
response body.
The stream only supports sequential read, IO.read will fail if the position
is specified.
This method is mutually exclusive with getResponseBody.
Calling other methods that affect the request or disabling fetch
domain before body is received results in an undefined behavior.
     */
    export type takeResponseBodyAsStreamParameters = {
      requestId: RequestId;
    };
    export type takeResponseBodyAsStreamReturnValue = {
      stream: IO.StreamHandle;
    };
  }
  export namespace FileSystem {
    export interface File {
      name: string;
      /**
       * Timestamp
       */
      lastModified: Network.TimeSinceEpoch;
      /**
       * Size in bytes
       */
      size: number;
      type: string;
    }
    export interface Directory {
      name: string;
      nestedDirectories: string[];
      /**
       * Files that are directly nested under this directory.
       */
      nestedFiles: File[];
    }
    export interface BucketFileSystemLocator {
      /**
       * Storage key
       */
      storageKey: Storage.SerializedStorageKey;
      /**
       * Bucket name. Not passing a `bucketName` will retrieve the default Bucket. (https://developer.mozilla.org/en-US/docs/Web/API/Storage_API#storage_buckets)
       */
      bucketName?: string;
      /**
       * Path to the directory using each path component as an array item.
       */
      pathComponents: string[];
    }
    export type getDirectoryParameters = {
      bucketFileSystemLocator: BucketFileSystemLocator;
    };
    export type getDirectoryReturnValue = {
      /**
       * Returns the directory object at the path.
       */
      directory: Directory;
    };
  }
  /**
   * This domain provides experimental commands only supported in headless mode.
   */
  export namespace HeadlessExperimental {
    /**
     * Encoding options for a screenshot.
     */
    export interface ScreenshotParams {
      /**
       * Image compression format (defaults to png).
       */
      format?: "jpeg" | "png" | "webp";
      /**
       * Compression quality from range [0..100] (jpeg and webp only).
       */
      quality?: number;
      /**
       * Optimize image encoding for speed, not for resulting size (defaults to false)
       */
      optimizeForSpeed?: boolean;
    }
    /**
     * Sends a BeginFrame to the target and returns when the frame was completed. Optionally captures a
screenshot from the resulting frame. Requires that the target was created with enabled
BeginFrameControl. Designed for use with --run-all-compositor-stages-before-draw, see also
https://goo.gle/chrome-headless-rendering for more background.
     */
    export type beginFrameParameters = {
      /**
       * Timestamp of this BeginFrame in Renderer TimeTicks (milliseconds of uptime). If not set,
the current time will be used.
       */
      frameTimeTicks?: number;
      /**
       * The interval between BeginFrames that is reported to the compositor, in milliseconds.
Defaults to a 60 frames/second interval, i.e. about 16.666 milliseconds.
       */
      interval?: number;
      /**
       * Whether updates should not be committed and drawn onto the display. False by default. If
true, only side effects of the BeginFrame will be run, such as layout and animations, but
any visual updates may not be visible on the display or in screenshots.
       */
      noDisplayUpdates?: boolean;
      /**
       * If set, a screenshot of the frame will be captured and returned in the response. Otherwise,
no screenshot will be captured. Note that capturing a screenshot can fail, for example,
during renderer initialization. In such a case, no screenshot data will be returned.
       */
      screenshot?: ScreenshotParams;
    };
    export type beginFrameReturnValue = {
      /**
       * Whether the BeginFrame resulted in damage and, thus, a new frame was committed to the
display. Reported for diagnostic uses, may be removed in the future.
       */
      hasDamage: boolean;
      /**
       * Base64-encoded image data of the screenshot, if one was requested and successfully taken.
       */
      screenshotData?: binary;
    };
    /**
     * Disables headless events for the target.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables headless events for the target.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
  }
  /**
   * Input/Output operations for streams produced by DevTools.
   */
  export namespace IO {
    /**
     * This is either obtained from another method or specified as `blob:<uuid>` where
`<uuid>` is an UUID of a Blob.
     */
    export type StreamHandle = string;
    /**
     * Close the stream, discard any temporary backing storage.
     */
    export type closeParameters = {
      /**
       * Handle of the stream to close.
       */
      handle: StreamHandle;
    };
    export type closeReturnValue = {};
    /**
     * Read a chunk of the stream
     */
    export type readParameters = {
      /**
       * Handle of the stream to read.
       */
      handle: StreamHandle;
      /**
       * Seek to the specified offset before reading (if not specified, proceed with offset
following the last read). Some types of streams may only support sequential reads.
       */
      offset?: number;
      /**
       * Maximum number of bytes to read (left upon the agent discretion if not specified).
       */
      size?: number;
    };
    export type readReturnValue = {
      /**
       * Set if the data is base64-encoded
       */
      base64Encoded?: boolean;
      /**
       * Data that were read.
       */
      data: string;
      /**
       * Set if the end-of-file condition occurred while reading.
       */
      eof: boolean;
    };
    /**
     * Return UUID of Blob object specified by a remote object id.
     */
    export type resolveBlobParameters = {
      /**
       * Object id of a Blob object wrapper.
       */
      objectId: Runtime.RemoteObjectId;
    };
    export type resolveBlobReturnValue = {
      /**
       * UUID of the specified Blob.
       */
      uuid: string;
    };
  }
  export namespace IndexedDB {
    /**
     * Database with an array of object stores.
     */
    export interface DatabaseWithObjectStores {
      /**
       * Database name.
       */
      name: string;
      /**
       * Database version (type is not 'integer', as the standard
requires the version number to be 'unsigned long long')
       */
      version: number;
      /**
       * Object stores in this database.
       */
      objectStores: ObjectStore[];
    }
    /**
     * Object store.
     */
    export interface ObjectStore {
      /**
       * Object store name.
       */
      name: string;
      /**
       * Object store key path.
       */
      keyPath: KeyPath;
      /**
       * If true, object store has auto increment flag set.
       */
      autoIncrement: boolean;
      /**
       * Indexes in this object store.
       */
      indexes: ObjectStoreIndex[];
    }
    /**
     * Object store index.
     */
    export interface ObjectStoreIndex {
      /**
       * Index name.
       */
      name: string;
      /**
       * Index key path.
       */
      keyPath: KeyPath;
      /**
       * If true, index is unique.
       */
      unique: boolean;
      /**
       * If true, index allows multiple entries for a key.
       */
      multiEntry: boolean;
    }
    /**
     * Key.
     */
    export interface Key {
      /**
       * Key type.
       */
      type: "number" | "string" | "date" | "array";
      /**
       * Number value.
       */
      number?: number;
      /**
       * String value.
       */
      string?: string;
      /**
       * Date value.
       */
      date?: number;
      /**
       * Array value.
       */
      array?: Key[];
    }
    /**
     * Key range.
     */
    export interface KeyRange {
      /**
       * Lower bound.
       */
      lower?: Key;
      /**
       * Upper bound.
       */
      upper?: Key;
      /**
       * If true lower bound is open.
       */
      lowerOpen: boolean;
      /**
       * If true upper bound is open.
       */
      upperOpen: boolean;
    }
    /**
     * Data entry.
     */
    export interface DataEntry {
      /**
       * Key object.
       */
      key: Runtime.RemoteObject;
      /**
       * Primary key object.
       */
      primaryKey: Runtime.RemoteObject;
      /**
       * Value object.
       */
      value: Runtime.RemoteObject;
    }
    /**
     * Key path.
     */
    export interface KeyPath {
      /**
       * Key path type.
       */
      type: "null" | "string" | "array";
      /**
       * String value.
       */
      string?: string;
      /**
       * Array value.
       */
      array?: string[];
    }
    /**
     * Clears all entries from an object store.
     */
    export type clearObjectStoreParameters = {
      /**
       * At least and at most one of securityOrigin, storageKey, or storageBucket must be specified.
Security origin.
       */
      securityOrigin?: string;
      /**
       * Storage key.
       */
      storageKey?: string;
      /**
       * Storage bucket. If not specified, it uses the default bucket.
       */
      storageBucket?: Storage.StorageBucket;
      /**
       * Database name.
       */
      databaseName: string;
      /**
       * Object store name.
       */
      objectStoreName: string;
    };
    export type clearObjectStoreReturnValue = {};
    /**
     * Deletes a database.
     */
    export type deleteDatabaseParameters = {
      /**
       * At least and at most one of securityOrigin, storageKey, or storageBucket must be specified.
Security origin.
       */
      securityOrigin?: string;
      /**
       * Storage key.
       */
      storageKey?: string;
      /**
       * Storage bucket. If not specified, it uses the default bucket.
       */
      storageBucket?: Storage.StorageBucket;
      /**
       * Database name.
       */
      databaseName: string;
    };
    export type deleteDatabaseReturnValue = {};
    /**
     * Delete a range of entries from an object store
     */
    export type deleteObjectStoreEntriesParameters = {
      /**
       * At least and at most one of securityOrigin, storageKey, or storageBucket must be specified.
Security origin.
       */
      securityOrigin?: string;
      /**
       * Storage key.
       */
      storageKey?: string;
      /**
       * Storage bucket. If not specified, it uses the default bucket.
       */
      storageBucket?: Storage.StorageBucket;
      databaseName: string;
      objectStoreName: string;
      /**
       * Range of entry keys to delete
       */
      keyRange: KeyRange;
    };
    export type deleteObjectStoreEntriesReturnValue = {};
    /**
     * Disables events from backend.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables events from backend.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Requests data from object store or index.
     */
    export type requestDataParameters = {
      /**
       * At least and at most one of securityOrigin, storageKey, or storageBucket must be specified.
Security origin.
       */
      securityOrigin?: string;
      /**
       * Storage key.
       */
      storageKey?: string;
      /**
       * Storage bucket. If not specified, it uses the default bucket.
       */
      storageBucket?: Storage.StorageBucket;
      /**
       * Database name.
       */
      databaseName: string;
      /**
       * Object store name.
       */
      objectStoreName: string;
      /**
       * Index name. If not specified, it performs an object store data request.
       */
      indexName?: string;
      /**
       * Number of records to skip.
       */
      skipCount: number;
      /**
       * Number of records to fetch.
       */
      pageSize: number;
      /**
       * Key range.
       */
      keyRange?: KeyRange;
    };
    export type requestDataReturnValue = {
      /**
       * Array of object store data entries.
       */
      objectStoreDataEntries: DataEntry[];
      /**
       * If true, there are more entries to fetch in the given range.
       */
      hasMore: boolean;
    };
    /**
     * Gets metadata of an object store.
     */
    export type getMetadataParameters = {
      /**
       * At least and at most one of securityOrigin, storageKey, or storageBucket must be specified.
Security origin.
       */
      securityOrigin?: string;
      /**
       * Storage key.
       */
      storageKey?: string;
      /**
       * Storage bucket. If not specified, it uses the default bucket.
       */
      storageBucket?: Storage.StorageBucket;
      /**
       * Database name.
       */
      databaseName: string;
      /**
       * Object store name.
       */
      objectStoreName: string;
    };
    export type getMetadataReturnValue = {
      /**
       * the entries count
       */
      entriesCount: number;
      /**
       * the current value of key generator, to become the next inserted
key into the object store. Valid if objectStore.autoIncrement
is true.
       */
      keyGeneratorValue: number;
    };
    /**
     * Requests database with given name in given frame.
     */
    export type requestDatabaseParameters = {
      /**
       * At least and at most one of securityOrigin, storageKey, or storageBucket must be specified.
Security origin.
       */
      securityOrigin?: string;
      /**
       * Storage key.
       */
      storageKey?: string;
      /**
       * Storage bucket. If not specified, it uses the default bucket.
       */
      storageBucket?: Storage.StorageBucket;
      /**
       * Database name.
       */
      databaseName: string;
    };
    export type requestDatabaseReturnValue = {
      /**
       * Database with an array of object stores.
       */
      databaseWithObjectStores: DatabaseWithObjectStores;
    };
    /**
     * Requests database names for given security origin.
     */
    export type requestDatabaseNamesParameters = {
      /**
       * At least and at most one of securityOrigin, storageKey, or storageBucket must be specified.
Security origin.
       */
      securityOrigin?: string;
      /**
       * Storage key.
       */
      storageKey?: string;
      /**
       * Storage bucket. If not specified, it uses the default bucket.
       */
      storageBucket?: Storage.StorageBucket;
    };
    export type requestDatabaseNamesReturnValue = {
      /**
       * Database names for origin.
       */
      databaseNames: string[];
    };
  }
  export namespace Input {
    export interface TouchPoint {
      /**
       * X coordinate of the event relative to the main frame's viewport in CSS pixels.
       */
      x: number;
      /**
       * Y coordinate of the event relative to the main frame's viewport in CSS pixels. 0 refers to
the top of the viewport and Y increases as it proceeds towards the bottom of the viewport.
       */
      y: number;
      /**
       * X radius of the touch area (default: 1.0).
       */
      radiusX?: number;
      /**
       * Y radius of the touch area (default: 1.0).
       */
      radiusY?: number;
      /**
       * Rotation angle (default: 0.0).
       */
      rotationAngle?: number;
      /**
       * Force (default: 1.0).
       */
      force?: number;
      /**
       * The normalized tangential pressure, which has a range of [-1,1] (default: 0).
       */
      tangentialPressure?: number;
      /**
       * The plane angle between the Y-Z plane and the plane containing both the stylus axis and the Y axis, in degrees of the range [-90,90], a positive tiltX is to the right (default: 0)
       */
      tiltX?: number;
      /**
       * The plane angle between the X-Z plane and the plane containing both the stylus axis and the X axis, in degrees of the range [-90,90], a positive tiltY is towards the user (default: 0).
       */
      tiltY?: number;
      /**
       * The clockwise rotation of a pen stylus around its own major axis, in degrees in the range [0,359] (default: 0).
       */
      twist?: number;
      /**
       * Identifier used to track touch sources between events, must be unique within an event.
       */
      id?: number;
    }
    export type GestureSourceType = "default" | "touch" | "mouse";
    export type MouseButton = "none" | "left" | "middle" | "right" | "back" | "forward";
    /**
     * UTC time in seconds, counted from January 1, 1970.
     */
    export type TimeSinceEpoch = number;
    export interface DragDataItem {
      /**
       * Mime type of the dragged data.
       */
      mimeType: string;
      /**
       * Depending of the value of `mimeType`, it contains the dragged link,
text, HTML markup or any other data.
       */
      data: string;
      /**
       * Title associated with a link. Only valid when `mimeType` == "text/uri-list".
       */
      title?: string;
      /**
       * Stores the base URL for the contained markup. Only valid when `mimeType`
== "text/html".
       */
      baseURL?: string;
    }
    export interface DragData {
      items: DragDataItem[];
      /**
       * List of filenames that should be included when dropping
       */
      files?: string[];
      /**
       * Bit field representing allowed drag operations. Copy = 1, Link = 2, Move = 16
       */
      dragOperationsMask: number;
    }
    /**
     * Emitted only when `Input.setInterceptDrags` is enabled. Use this data with `Input.dispatchDragEvent` to
restore normal drag and drop behavior.
     */
    export type dragInterceptedPayload = {
      data: DragData;
    };
    /**
     * Dispatches a drag event into the page.
     */
    export type dispatchDragEventParameters = {
      /**
       * Type of the drag event.
       */
      type: "dragEnter" | "dragOver" | "drop" | "dragCancel";
      /**
       * X coordinate of the event relative to the main frame's viewport in CSS pixels.
       */
      x: number;
      /**
       * Y coordinate of the event relative to the main frame's viewport in CSS pixels. 0 refers to
the top of the viewport and Y increases as it proceeds towards the bottom of the viewport.
       */
      y: number;
      data: DragData;
      /**
       * Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8
(default: 0).
       */
      modifiers?: number;
    };
    export type dispatchDragEventReturnValue = {};
    /**
     * Dispatches a key event to the page.
     */
    export type dispatchKeyEventParameters = {
      /**
       * Type of the key event.
       */
      type: "keyDown" | "keyUp" | "rawKeyDown" | "char";
      /**
       * Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8
(default: 0).
       */
      modifiers?: number;
      /**
       * Time at which the event occurred.
       */
      timestamp?: TimeSinceEpoch;
      /**
       * Text as generated by processing a virtual key code with a keyboard layout. Not needed for
for `keyUp` and `rawKeyDown` events (default: "")
       */
      text?: string;
      /**
       * Text that would have been generated by the keyboard if no modifiers were pressed (except for
shift). Useful for shortcut (accelerator) key handling (default: "").
       */
      unmodifiedText?: string;
      /**
       * Unique key identifier (e.g., 'U+0041') (default: "").
       */
      keyIdentifier?: string;
      /**
       * Unique DOM defined string value for each physical key (e.g., 'KeyA') (default: "").
       */
      code?: string;
      /**
       * Unique DOM defined string value describing the meaning of the key in the context of active
modifiers, keyboard layout, etc (e.g., 'AltGr') (default: "").
       */
      key?: string;
      /**
       * Windows virtual key code (default: 0).
       */
      windowsVirtualKeyCode?: number;
      /**
       * Native virtual key code (default: 0).
       */
      nativeVirtualKeyCode?: number;
      /**
       * Whether the event was generated from auto repeat (default: false).
       */
      autoRepeat?: boolean;
      /**
       * Whether the event was generated from the keypad (default: false).
       */
      isKeypad?: boolean;
      /**
       * Whether the event was a system key event (default: false).
       */
      isSystemKey?: boolean;
      /**
       * Whether the event was from the left or right side of the keyboard. 1=Left, 2=Right (default:
0).
       */
      location?: number;
      /**
       * Editing commands to send with the key event (e.g., 'selectAll') (default: []).
These are related to but not equal the command names used in `document.execCommand` and NSStandardKeyBindingResponding.
See https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/editing/commands/editor_command_names.h for valid command names.
       */
      commands?: string[];
    };
    export type dispatchKeyEventReturnValue = {};
    /**
     * This method emulates inserting text that doesn't come from a key press,
for example an emoji keyboard or an IME.
     */
    export type insertTextParameters = {
      /**
       * The text to insert.
       */
      text: string;
    };
    export type insertTextReturnValue = {};
    /**
     * This method sets the current candidate text for IME.
Use imeCommitComposition to commit the final text.
Use imeSetComposition with empty string as text to cancel composition.
     */
    export type imeSetCompositionParameters = {
      /**
       * The text to insert
       */
      text: string;
      /**
       * selection start
       */
      selectionStart: number;
      /**
       * selection end
       */
      selectionEnd: number;
      /**
       * replacement start
       */
      replacementStart?: number;
      /**
       * replacement end
       */
      replacementEnd?: number;
    };
    export type imeSetCompositionReturnValue = {};
    /**
     * Dispatches a mouse event to the page.
     */
    export type dispatchMouseEventParameters = {
      /**
       * Type of the mouse event.
       */
      type: "mousePressed" | "mouseReleased" | "mouseMoved" | "mouseWheel";
      /**
       * X coordinate of the event relative to the main frame's viewport in CSS pixels.
       */
      x: number;
      /**
       * Y coordinate of the event relative to the main frame's viewport in CSS pixels. 0 refers to
the top of the viewport and Y increases as it proceeds towards the bottom of the viewport.
       */
      y: number;
      /**
       * Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8
(default: 0).
       */
      modifiers?: number;
      /**
       * Time at which the event occurred.
       */
      timestamp?: TimeSinceEpoch;
      /**
       * Mouse button (default: "none").
       */
      button?: MouseButton;
      /**
       * A number indicating which buttons are pressed on the mouse when a mouse event is triggered.
Left=1, Right=2, Middle=4, Back=8, Forward=16, None=0.
       */
      buttons?: number;
      /**
       * Number of times the mouse button was clicked (default: 0).
       */
      clickCount?: number;
      /**
       * The normalized pressure, which has a range of [0,1] (default: 0).
       */
      force?: number;
      /**
       * The normalized tangential pressure, which has a range of [-1,1] (default: 0).
       */
      tangentialPressure?: number;
      /**
       * The plane angle between the Y-Z plane and the plane containing both the stylus axis and the Y axis, in degrees of the range [-90,90], a positive tiltX is to the right (default: 0).
       */
      tiltX?: number;
      /**
       * The plane angle between the X-Z plane and the plane containing both the stylus axis and the X axis, in degrees of the range [-90,90], a positive tiltY is towards the user (default: 0).
       */
      tiltY?: number;
      /**
       * The clockwise rotation of a pen stylus around its own major axis, in degrees in the range [0,359] (default: 0).
       */
      twist?: number;
      /**
       * X delta in CSS pixels for mouse wheel event (default: 0).
       */
      deltaX?: number;
      /**
       * Y delta in CSS pixels for mouse wheel event (default: 0).
       */
      deltaY?: number;
      /**
       * Pointer type (default: "mouse").
       */
      pointerType?: "mouse" | "pen";
    };
    export type dispatchMouseEventReturnValue = {};
    /**
     * Dispatches a touch event to the page.
     */
    export type dispatchTouchEventParameters = {
      /**
       * Type of the touch event. TouchEnd and TouchCancel must not contain any touch points, while
TouchStart and TouchMove must contains at least one.
       */
      type: "touchStart" | "touchEnd" | "touchMove" | "touchCancel";
      /**
       * Active touch points on the touch device. One event per any changed point (compared to
previous touch event in a sequence) is generated, emulating pressing/moving/releasing points
one by one.
       */
      touchPoints: TouchPoint[];
      /**
       * Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8
(default: 0).
       */
      modifiers?: number;
      /**
       * Time at which the event occurred.
       */
      timestamp?: TimeSinceEpoch;
    };
    export type dispatchTouchEventReturnValue = {};
    /**
     * Cancels any active dragging in the page.
     */
    export type cancelDraggingParameters = {};
    export type cancelDraggingReturnValue = {};
    /**
     * Emulates touch event from the mouse event parameters.
     */
    export type emulateTouchFromMouseEventParameters = {
      /**
       * Type of the mouse event.
       */
      type: "mousePressed" | "mouseReleased" | "mouseMoved" | "mouseWheel";
      /**
       * X coordinate of the mouse pointer in DIP.
       */
      x: number;
      /**
       * Y coordinate of the mouse pointer in DIP.
       */
      y: number;
      /**
       * Mouse button. Only "none", "left", "right" are supported.
       */
      button: MouseButton;
      /**
       * Time at which the event occurred (default: current time).
       */
      timestamp?: TimeSinceEpoch;
      /**
       * X delta in DIP for mouse wheel event (default: 0).
       */
      deltaX?: number;
      /**
       * Y delta in DIP for mouse wheel event (default: 0).
       */
      deltaY?: number;
      /**
       * Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8
(default: 0).
       */
      modifiers?: number;
      /**
       * Number of times the mouse button was clicked (default: 0).
       */
      clickCount?: number;
    };
    export type emulateTouchFromMouseEventReturnValue = {};
    /**
     * Ignores input events (useful while auditing page).
     */
    export type setIgnoreInputEventsParameters = {
      /**
       * Ignores input events processing when set to true.
       */
      ignore: boolean;
    };
    export type setIgnoreInputEventsReturnValue = {};
    /**
     * Prevents default drag and drop behavior and instead emits `Input.dragIntercepted` events.
Drag and drop behavior can be directly controlled via `Input.dispatchDragEvent`.
     */
    export type setInterceptDragsParameters = {
      enabled: boolean;
    };
    export type setInterceptDragsReturnValue = {};
    /**
     * Synthesizes a pinch gesture over a time period by issuing appropriate touch events.
     */
    export type synthesizePinchGestureParameters = {
      /**
       * X coordinate of the start of the gesture in CSS pixels.
       */
      x: number;
      /**
       * Y coordinate of the start of the gesture in CSS pixels.
       */
      y: number;
      /**
       * Relative scale factor after zooming (>1.0 zooms in, <1.0 zooms out).
       */
      scaleFactor: number;
      /**
       * Relative pointer speed in pixels per second (default: 800).
       */
      relativeSpeed?: number;
      /**
       * Which type of input events to be generated (default: 'default', which queries the platform
for the preferred input type).
       */
      gestureSourceType?: GestureSourceType;
    };
    export type synthesizePinchGestureReturnValue = {};
    /**
     * Synthesizes a scroll gesture over a time period by issuing appropriate touch events.
     */
    export type synthesizeScrollGestureParameters = {
      /**
       * X coordinate of the start of the gesture in CSS pixels.
       */
      x: number;
      /**
       * Y coordinate of the start of the gesture in CSS pixels.
       */
      y: number;
      /**
       * The distance to scroll along the X axis (positive to scroll left).
       */
      xDistance?: number;
      /**
       * The distance to scroll along the Y axis (positive to scroll up).
       */
      yDistance?: number;
      /**
       * The number of additional pixels to scroll back along the X axis, in addition to the given
distance.
       */
      xOverscroll?: number;
      /**
       * The number of additional pixels to scroll back along the Y axis, in addition to the given
distance.
       */
      yOverscroll?: number;
      /**
       * Prevent fling (default: true).
       */
      preventFling?: boolean;
      /**
       * Swipe speed in pixels per second (default: 800).
       */
      speed?: number;
      /**
       * Which type of input events to be generated (default: 'default', which queries the platform
for the preferred input type).
       */
      gestureSourceType?: GestureSourceType;
      /**
       * The number of times to repeat the gesture (default: 0).
       */
      repeatCount?: number;
      /**
       * The number of milliseconds delay between each repeat. (default: 250).
       */
      repeatDelayMs?: number;
      /**
       * The name of the interaction markers to generate, if not empty (default: "").
       */
      interactionMarkerName?: string;
    };
    export type synthesizeScrollGestureReturnValue = {};
    /**
     * Synthesizes a tap gesture over a time period by issuing appropriate touch events.
     */
    export type synthesizeTapGestureParameters = {
      /**
       * X coordinate of the start of the gesture in CSS pixels.
       */
      x: number;
      /**
       * Y coordinate of the start of the gesture in CSS pixels.
       */
      y: number;
      /**
       * Duration between touchdown and touchup events in ms (default: 50).
       */
      duration?: number;
      /**
       * Number of times to perform the tap (e.g. 2 for double tap, default: 1).
       */
      tapCount?: number;
      /**
       * Which type of input events to be generated (default: 'default', which queries the platform
for the preferred input type).
       */
      gestureSourceType?: GestureSourceType;
    };
    export type synthesizeTapGestureReturnValue = {};
  }
  export namespace Inspector {
    /**
     * Fired when remote debugging connection is about to be terminated. Contains detach reason.
     */
    export type detachedPayload = {
      /**
       * The reason why connection has been terminated.
       */
      reason: string;
    };
    /**
     * Fired when debugging target has crashed
     */
    export type targetCrashedPayload = void;
    /**
     * Fired when debugging target has reloaded after crash
     */
    export type targetReloadedAfterCrashPayload = void;
    /**
     * Fired on worker targets when main worker script and any imported scripts have been evaluated.
     */
    export type workerScriptLoadedPayload = void;
    /**
     * Disables inspector domain notifications.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables inspector domain notifications.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
  }
  export namespace LayerTree {
    /**
     * Unique Layer identifier.
     */
    export type LayerId = string;
    /**
     * Unique snapshot identifier.
     */
    export type SnapshotId = string;
    /**
     * Rectangle where scrolling happens on the main thread.
     */
    export interface ScrollRect {
      /**
       * Rectangle itself.
       */
      rect: DOM.Rect;
      /**
       * Reason for rectangle to force scrolling on the main thread
       */
      type: "RepaintsOnScroll" | "TouchEventHandler" | "WheelEventHandler";
    }
    /**
     * Sticky position constraints.
     */
    export interface StickyPositionConstraint {
      /**
       * Layout rectangle of the sticky element before being shifted
       */
      stickyBoxRect: DOM.Rect;
      /**
       * Layout rectangle of the containing block of the sticky element
       */
      containingBlockRect: DOM.Rect;
      /**
       * The nearest sticky layer that shifts the sticky box
       */
      nearestLayerShiftingStickyBox?: LayerId;
      /**
       * The nearest sticky layer that shifts the containing block
       */
      nearestLayerShiftingContainingBlock?: LayerId;
    }
    /**
     * Serialized fragment of layer picture along with its offset within the layer.
     */
    export interface PictureTile {
      /**
       * Offset from owning layer left boundary
       */
      x: number;
      /**
       * Offset from owning layer top boundary
       */
      y: number;
      /**
       * Base64-encoded snapshot data.
       */
      picture: binary;
    }
    /**
     * Information about a compositing layer.
     */
    export interface Layer {
      /**
       * The unique id for this layer.
       */
      layerId: LayerId;
      /**
       * The id of parent (not present for root).
       */
      parentLayerId?: LayerId;
      /**
       * The backend id for the node associated with this layer.
       */
      backendNodeId?: DOM.BackendNodeId;
      /**
       * Offset from parent layer, X coordinate.
       */
      offsetX: number;
      /**
       * Offset from parent layer, Y coordinate.
       */
      offsetY: number;
      /**
       * Layer width.
       */
      width: number;
      /**
       * Layer height.
       */
      height: number;
      /**
       * Transformation matrix for layer, default is identity matrix
       */
      transform?: number[];
      /**
       * Transform anchor point X, absent if no transform specified
       */
      anchorX?: number;
      /**
       * Transform anchor point Y, absent if no transform specified
       */
      anchorY?: number;
      /**
       * Transform anchor point Z, absent if no transform specified
       */
      anchorZ?: number;
      /**
       * Indicates how many time this layer has painted.
       */
      paintCount: number;
      /**
       * Indicates whether this layer hosts any content, rather than being used for
transform/scrolling purposes only.
       */
      drawsContent: boolean;
      /**
       * Set if layer is not visible.
       */
      invisible?: boolean;
      /**
       * Rectangles scrolling on main thread only.
       */
      scrollRects?: ScrollRect[];
      /**
       * Sticky position constraint information
       */
      stickyPositionConstraint?: StickyPositionConstraint;
    }
    /**
     * Array of timings, one per paint step.
     */
    export type PaintProfile = number[];
    export type layerPaintedPayload = {
      /**
       * The id of the painted layer.
       */
      layerId: LayerId;
      /**
       * Clip rectangle.
       */
      clip: DOM.Rect;
    };
    export type layerTreeDidChangePayload = {
      /**
       * Layer tree, absent if not in the compositing mode.
       */
      layers?: Layer[];
    };
    /**
     * Provides the reasons why the given layer was composited.
     */
    export type compositingReasonsParameters = {
      /**
       * The id of the layer for which we want to get the reasons it was composited.
       */
      layerId: LayerId;
    };
    export type compositingReasonsReturnValue = {
      /**
       * A list of strings specifying reasons for the given layer to become composited.
       */
      compositingReasons: string[];
      /**
       * A list of strings specifying reason IDs for the given layer to become composited.
       */
      compositingReasonIds: string[];
    };
    /**
     * Disables compositing tree inspection.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables compositing tree inspection.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Returns the snapshot identifier.
     */
    export type loadSnapshotParameters = {
      /**
       * An array of tiles composing the snapshot.
       */
      tiles: PictureTile[];
    };
    export type loadSnapshotReturnValue = {
      /**
       * The id of the snapshot.
       */
      snapshotId: SnapshotId;
    };
    /**
     * Returns the layer snapshot identifier.
     */
    export type makeSnapshotParameters = {
      /**
       * The id of the layer.
       */
      layerId: LayerId;
    };
    export type makeSnapshotReturnValue = {
      /**
       * The id of the layer snapshot.
       */
      snapshotId: SnapshotId;
    };
    export type profileSnapshotParameters = {
      /**
       * The id of the layer snapshot.
       */
      snapshotId: SnapshotId;
      /**
       * The maximum number of times to replay the snapshot (1, if not specified).
       */
      minRepeatCount?: number;
      /**
       * The minimum duration (in seconds) to replay the snapshot.
       */
      minDuration?: number;
      /**
       * The clip rectangle to apply when replaying the snapshot.
       */
      clipRect?: DOM.Rect;
    };
    export type profileSnapshotReturnValue = {
      /**
       * The array of paint profiles, one per run.
       */
      timings: PaintProfile[];
    };
    /**
     * Releases layer snapshot captured by the back-end.
     */
    export type releaseSnapshotParameters = {
      /**
       * The id of the layer snapshot.
       */
      snapshotId: SnapshotId;
    };
    export type releaseSnapshotReturnValue = {};
    /**
     * Replays the layer snapshot and returns the resulting bitmap.
     */
    export type replaySnapshotParameters = {
      /**
       * The id of the layer snapshot.
       */
      snapshotId: SnapshotId;
      /**
       * The first step to replay from (replay from the very start if not specified).
       */
      fromStep?: number;
      /**
       * The last step to replay to (replay till the end if not specified).
       */
      toStep?: number;
      /**
       * The scale to apply while replaying (defaults to 1).
       */
      scale?: number;
    };
    export type replaySnapshotReturnValue = {
      /**
       * A data: URL for resulting image.
       */
      dataURL: string;
    };
    /**
     * Replays the layer snapshot and returns canvas log.
     */
    export type snapshotCommandLogParameters = {
      /**
       * The id of the layer snapshot.
       */
      snapshotId: SnapshotId;
    };
    export type snapshotCommandLogReturnValue = {
      /**
       * The array of canvas function calls.
       */
      commandLog: {
        [key: string]: string;
      }[];
    };
  }
  /**
   * Provides access to log entries.
   */
  export namespace Log {
    /**
     * Log entry.
     */
    export interface LogEntry {
      /**
       * Log entry source.
       */
      source: "xml" | "javascript" | "network" | "storage" | "appcache" | "rendering" | "security" | "deprecation" | "worker" | "violation" | "intervention" | "recommendation" | "other";
      /**
       * Log entry severity.
       */
      level: "verbose" | "info" | "warning" | "error";
      /**
       * Logged text.
       */
      text: string;
      category?: "cors";
      /**
       * Timestamp when this entry was added.
       */
      timestamp: Runtime.Timestamp;
      /**
       * URL of the resource if known.
       */
      url?: string;
      /**
       * Line number in the resource.
       */
      lineNumber?: number;
      /**
       * JavaScript stack trace.
       */
      stackTrace?: Runtime.StackTrace;
      /**
       * Identifier of the network request associated with this entry.
       */
      networkRequestId?: Network.RequestId;
      /**
       * Identifier of the worker associated with this entry.
       */
      workerId?: string;
      /**
       * Call arguments.
       */
      args?: Runtime.RemoteObject[];
    }
    /**
     * Violation configuration setting.
     */
    export interface ViolationSetting {
      /**
       * Violation type.
       */
      name: "longTask" | "longLayout" | "blockedEvent" | "blockedParser" | "discouragedAPIUse" | "handler" | "recurringHandler";
      /**
       * Time threshold to trigger upon.
       */
      threshold: number;
    }
    /**
     * Issued when new message was logged.
     */
    export type entryAddedPayload = {
      /**
       * The entry.
       */
      entry: LogEntry;
    };
    /**
     * Clears the log.
     */
    export type clearParameters = {};
    export type clearReturnValue = {};
    /**
     * Disables log domain, prevents further log entries from being reported to the client.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables log domain, sends the entries collected so far to the client by means of the
`entryAdded` notification.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * start violation reporting.
     */
    export type startViolationsReportParameters = {
      /**
       * Configuration for violations.
       */
      config: ViolationSetting[];
    };
    export type startViolationsReportReturnValue = {};
    /**
     * Stop violation reporting.
     */
    export type stopViolationsReportParameters = {};
    export type stopViolationsReportReturnValue = {};
  }
  /**
   * This domain allows detailed inspection of media elements.
   */
  export namespace Media {
    /**
     * Players will get an ID that is unique within the agent context.
     */
    export type PlayerId = string;
    export type Timestamp = number;
    /**
     * Have one type per entry in MediaLogRecord::Type
Corresponds to kMessage
     */
    export interface PlayerMessage {
      /**
       * Keep in sync with MediaLogMessageLevel
We are currently keeping the message level 'error' separate from the
PlayerError type because right now they represent different things,
this one being a DVLOG(ERROR) style log message that gets printed
based on what log level is selected in the UI, and the other is a
representation of a media::PipelineStatus object. Soon however we're
going to be moving away from using PipelineStatus for errors and
introducing a new error type which should hopefully let us integrate
the error log level into the PlayerError type.
       */
      level: "error" | "warning" | "info" | "debug";
      message: string;
    }
    /**
     * Corresponds to kMediaPropertyChange
     */
    export interface PlayerProperty {
      name: string;
      value: string;
    }
    /**
     * Corresponds to kMediaEventTriggered
     */
    export interface PlayerEvent {
      timestamp: Timestamp;
      value: string;
    }
    /**
     * Represents logged source line numbers reported in an error.
NOTE: file and line are from chromium c++ implementation code, not js.
     */
    export interface PlayerErrorSourceLocation {
      file: string;
      line: number;
    }
    /**
     * Corresponds to kMediaError
     */
    export interface PlayerError {
      errorType: string;
      /**
       * Code is the numeric enum entry for a specific set of error codes, such
as PipelineStatusCodes in media/base/pipeline_status.h
       */
      code: number;
      /**
       * A trace of where this error was caused / where it passed through.
       */
      stack: PlayerErrorSourceLocation[];
      /**
       * Errors potentially have a root cause error, ie, a DecoderError might be
caused by an WindowsError
       */
      cause: PlayerError[];
      /**
       * Extra data attached to an error, such as an HRESULT, Video Codec, etc.
       */
      data: {
        [key: string]: string;
      };
    }
    export interface Player {
      playerId: PlayerId;
      domNodeId?: DOM.BackendNodeId;
    }
    /**
     * This can be called multiple times, and can be used to set / override /
remove player properties. A null propValue indicates removal.
     */
    export type playerPropertiesChangedPayload = {
      playerId: PlayerId;
      properties: PlayerProperty[];
    };
    /**
     * Send events as a list, allowing them to be batched on the browser for less
congestion. If batched, events must ALWAYS be in chronological order.
     */
    export type playerEventsAddedPayload = {
      playerId: PlayerId;
      events: PlayerEvent[];
    };
    /**
     * Send a list of any messages that need to be delivered.
     */
    export type playerMessagesLoggedPayload = {
      playerId: PlayerId;
      messages: PlayerMessage[];
    };
    /**
     * Send a list of any errors that need to be delivered.
     */
    export type playerErrorsRaisedPayload = {
      playerId: PlayerId;
      errors: PlayerError[];
    };
    /**
     * Called whenever a player is created, or when a new agent joins and receives
a list of active players. If an agent is restored, it will receive one
event for each active player.
     */
    export type playerCreatedPayload = {
      player: Player;
    };
    /**
     * Enables the Media domain
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Disables the Media domain.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
  }
  export namespace Memory {
    /**
     * Memory pressure level.
     */
    export type PressureLevel = "moderate" | "critical";
    /**
     * Heap profile sample.
     */
    export interface SamplingProfileNode {
      /**
       * Size of the sampled allocation.
       */
      size: number;
      /**
       * Total bytes attributed to this sample.
       */
      total: number;
      /**
       * Execution stack at the point of allocation.
       */
      stack: string[];
    }
    /**
     * Array of heap profile samples.
     */
    export interface SamplingProfile {
      samples: SamplingProfileNode[];
      modules: Module[];
    }
    /**
     * Executable module information
     */
    export interface Module {
      /**
       * Name of the module.
       */
      name: string;
      /**
       * UUID of the module.
       */
      uuid: string;
      /**
       * Base address where the module is loaded into memory. Encoded as a decimal
or hexadecimal (0x prefixed) string.
       */
      baseAddress: string;
      /**
       * Size of the module in bytes.
       */
      size: number;
    }
    /**
     * DOM object counter data.
     */
    export interface DOMCounter {
      /**
       * Object name. Note: object names should be presumed volatile and clients should not expect
the returned names to be consistent across runs.
       */
      name: string;
      /**
       * Object count.
       */
      count: number;
    }
    /**
     * Retruns current DOM object counters.
     */
    export type getDOMCountersParameters = {};
    export type getDOMCountersReturnValue = {
      documents: number;
      nodes: number;
      jsEventListeners: number;
    };
    /**
     * Retruns DOM object counters after preparing renderer for leak detection.
     */
    export type getDOMCountersForLeakDetectionParameters = {};
    export type getDOMCountersForLeakDetectionReturnValue = {
      /**
       * DOM object counters.
       */
      counters: DOMCounter[];
    };
    /**
     * Prepares for leak detection by terminating workers, stopping spellcheckers,
dropping non-essential internal caches, running garbage collections, etc.
     */
    export type prepareForLeakDetectionParameters = {};
    export type prepareForLeakDetectionReturnValue = {};
    /**
     * Simulate OomIntervention by purging V8 memory.
     */
    export type forciblyPurgeJavaScriptMemoryParameters = {};
    export type forciblyPurgeJavaScriptMemoryReturnValue = {};
    /**
     * Enable/disable suppressing memory pressure notifications in all processes.
     */
    export type setPressureNotificationsSuppressedParameters = {
      /**
       * If true, memory pressure notifications will be suppressed.
       */
      suppressed: boolean;
    };
    export type setPressureNotificationsSuppressedReturnValue = {};
    /**
     * Simulate a memory pressure notification in all processes.
     */
    export type simulatePressureNotificationParameters = {
      /**
       * Memory pressure level of the notification.
       */
      level: PressureLevel;
    };
    export type simulatePressureNotificationReturnValue = {};
    /**
     * Start collecting native memory profile.
     */
    export type startSamplingParameters = {
      /**
       * Average number of bytes between samples.
       */
      samplingInterval?: number;
      /**
       * Do not randomize intervals between samples.
       */
      suppressRandomness?: boolean;
    };
    export type startSamplingReturnValue = {};
    /**
     * Stop collecting native memory profile.
     */
    export type stopSamplingParameters = {};
    export type stopSamplingReturnValue = {};
    /**
     * Retrieve native memory allocations profile
collected since renderer process startup.
     */
    export type getAllTimeSamplingProfileParameters = {};
    export type getAllTimeSamplingProfileReturnValue = {
      profile: SamplingProfile;
    };
    /**
     * Retrieve native memory allocations profile
collected since browser process startup.
     */
    export type getBrowserSamplingProfileParameters = {};
    export type getBrowserSamplingProfileReturnValue = {
      profile: SamplingProfile;
    };
    /**
     * Retrieve native memory allocations profile collected since last
`startSampling` call.
     */
    export type getSamplingProfileParameters = {};
    export type getSamplingProfileReturnValue = {
      profile: SamplingProfile;
    };
  }
  /**
   * Network domain allows tracking network activities of the page. It exposes information about http,
file, data and other requests and responses, their headers, bodies, timing, etc.
   */
  export namespace Network {
    /**
     * Resource type as it was perceived by the rendering engine.
     */
    export type ResourceType = "Document" | "Stylesheet" | "Image" | "Media" | "Font" | "Script" | "TextTrack" | "XHR" | "Fetch" | "Prefetch" | "EventSource" | "WebSocket" | "Manifest" | "SignedExchange" | "Ping" | "CSPViolationReport" | "Preflight" | "FedCM" | "Other";
    /**
     * Unique loader identifier.
     */
    export type LoaderId = string;
    /**
     * Unique network request identifier.
Note that this does not identify individual HTTP requests that are part of
a network request.
     */
    export type RequestId = string;
    /**
     * Unique intercepted request identifier.
     */
    export type InterceptionId = string;
    /**
     * Network level fetch failure reason.
     */
    export type ErrorReason = "Failed" | "Aborted" | "TimedOut" | "AccessDenied" | "ConnectionClosed" | "ConnectionReset" | "ConnectionRefused" | "ConnectionAborted" | "ConnectionFailed" | "NameNotResolved" | "InternetDisconnected" | "AddressUnreachable" | "BlockedByClient" | "BlockedByResponse";
    /**
     * UTC time in seconds, counted from January 1, 1970.
     */
    export type TimeSinceEpoch = number;
    /**
     * Monotonically increasing time in seconds since an arbitrary point in the past.
     */
    export type MonotonicTime = number;
    /**
     * Request / response headers as keys / values of JSON object.
     */
    export type Headers = {
      [key: string]: string;
    };
    /**
     * The underlying connection technology that the browser is supposedly using.
     */
    export type ConnectionType = "none" | "cellular2g" | "cellular3g" | "cellular4g" | "bluetooth" | "ethernet" | "wifi" | "wimax" | "other";
    /**
     * Represents the cookie's 'SameSite' status:
https://tools.ietf.org/html/draft-west-first-party-cookies
     */
    export type CookieSameSite = "Strict" | "Lax" | "None";
    /**
     * Represents the cookie's 'Priority' status:
https://tools.ietf.org/html/draft-west-cookie-priority-00
     */
    export type CookiePriority = "Low" | "Medium" | "High";
    /**
     * Represents the source scheme of the origin that originally set the cookie.
A value of "Unset" allows protocol clients to emulate legacy cookie scope for the scheme.
This is a temporary ability and it will be removed in the future.
     */
    export type CookieSourceScheme = "Unset" | "NonSecure" | "Secure";
    /**
     * Timing information for the request.
     */
    export interface ResourceTiming {
      /**
       * Timing's requestTime is a baseline in seconds, while the other numbers are ticks in
milliseconds relatively to this requestTime.
       */
      requestTime: number;
      /**
       * Started resolving proxy.
       */
      proxyStart: number;
      /**
       * Finished resolving proxy.
       */
      proxyEnd: number;
      /**
       * Started DNS address resolve.
       */
      dnsStart: number;
      /**
       * Finished DNS address resolve.
       */
      dnsEnd: number;
      /**
       * Started connecting to the remote host.
       */
      connectStart: number;
      /**
       * Connected to the remote host.
       */
      connectEnd: number;
      /**
       * Started SSL handshake.
       */
      sslStart: number;
      /**
       * Finished SSL handshake.
       */
      sslEnd: number;
      /**
       * Started running ServiceWorker.
       */
      workerStart: number;
      /**
       * Finished Starting ServiceWorker.
       */
      workerReady: number;
      /**
       * Started fetch event.
       */
      workerFetchStart: number;
      /**
       * Settled fetch event respondWith promise.
       */
      workerRespondWithSettled: number;
      /**
       * Started ServiceWorker static routing source evaluation.
       */
      workerRouterEvaluationStart?: number;
      /**
       * Started cache lookup when the source was evaluated to `cache`.
       */
      workerCacheLookupStart?: number;
      /**
       * Started sending request.
       */
      sendStart: number;
      /**
       * Finished sending request.
       */
      sendEnd: number;
      /**
       * Time the server started pushing request.
       */
      pushStart: number;
      /**
       * Time the server finished pushing request.
       */
      pushEnd: number;
      /**
       * Started receiving response headers.
       */
      receiveHeadersStart: number;
      /**
       * Finished receiving response headers.
       */
      receiveHeadersEnd: number;
    }
    /**
     * Loading priority of a resource request.
     */
    export type ResourcePriority = "VeryLow" | "Low" | "Medium" | "High" | "VeryHigh";
    /**
     * The render-blocking behavior of a resource request.
     */
    export type RenderBlockingBehavior = "Blocking" | "InBodyParserBlocking" | "NonBlocking" | "NonBlockingDynamic" | "PotentiallyBlocking";
    /**
     * Post data entry for HTTP request
     */
    export interface PostDataEntry {
      bytes?: binary;
    }
    /**
     * HTTP request data.
     */
    export interface Request {
      /**
       * Request URL (without fragment).
       */
      url: string;
      /**
       * Fragment of the requested URL starting with hash, if present.
       */
      urlFragment?: string;
      /**
       * HTTP request method.
       */
      method: string;
      /**
       * HTTP request headers.
       */
      headers: Headers;
      /**
       * HTTP POST request data.
Use postDataEntries instead.
       */
      postData?: string;
      /**
       * True when the request has POST data. Note that postData might still be omitted when this flag is true when the data is too long.
       */
      hasPostData?: boolean;
      /**
       * Request body elements (post data broken into individual entries).
       */
      postDataEntries?: PostDataEntry[];
      /**
       * The mixed content type of the request.
       */
      mixedContentType?: Security.MixedContentType;
      /**
       * Priority of the resource request at the time request is sent.
       */
      initialPriority: ResourcePriority;
      /**
       * The referrer policy of the request, as defined in https://www.w3.org/TR/referrer-policy/
       */
      referrerPolicy: "unsafe-url" | "no-referrer-when-downgrade" | "no-referrer" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin";
      /**
       * Whether is loaded via link preload.
       */
      isLinkPreload?: boolean;
      /**
       * Set for requests when the TrustToken API is used. Contains the parameters
passed by the developer (e.g. via "fetch") as understood by the backend.
       */
      trustTokenParams?: TrustTokenParams;
      /**
       * True if this resource request is considered to be the 'same site' as the
request corresponding to the main frame.
       */
      isSameSite?: boolean;
      /**
       * True when the resource request is ad-related.
       */
      isAdRelated?: boolean;
    }
    /**
     * Details of a signed certificate timestamp (SCT).
     */
    export interface SignedCertificateTimestamp {
      /**
       * Validation status.
       */
      status: string;
      /**
       * Origin.
       */
      origin: string;
      /**
       * Log name / description.
       */
      logDescription: string;
      /**
       * Log ID.
       */
      logId: string;
      /**
       * Issuance date. Unlike TimeSinceEpoch, this contains the number of
milliseconds since January 1, 1970, UTC, not the number of seconds.
       */
      timestamp: number;
      /**
       * Hash algorithm.
       */
      hashAlgorithm: string;
      /**
       * Signature algorithm.
       */
      signatureAlgorithm: string;
      /**
       * Signature data.
       */
      signatureData: string;
    }
    /**
     * Security details about a request.
     */
    export interface SecurityDetails {
      /**
       * Protocol name (e.g. "TLS 1.2" or "QUIC").
       */
      protocol: string;
      /**
       * Key Exchange used by the connection, or the empty string if not applicable.
       */
      keyExchange: string;
      /**
       * (EC)DH group used by the connection, if applicable.
       */
      keyExchangeGroup?: string;
      /**
       * Cipher name.
       */
      cipher: string;
      /**
       * TLS MAC. Note that AEAD ciphers do not have separate MACs.
       */
      mac?: string;
      /**
       * Certificate ID value.
       */
      certificateId: Security.CertificateId;
      /**
       * Certificate subject name.
       */
      subjectName: string;
      /**
       * Subject Alternative Name (SAN) DNS names and IP addresses.
       */
      sanList: string[];
      /**
       * Name of the issuing CA.
       */
      issuer: string;
      /**
       * Certificate valid from date.
       */
      validFrom: TimeSinceEpoch;
      /**
       * Certificate valid to (expiration) date
       */
      validTo: TimeSinceEpoch;
      /**
       * List of signed certificate timestamps (SCTs).
       */
      signedCertificateTimestampList: SignedCertificateTimestamp[];
      /**
       * Whether the request complied with Certificate Transparency policy
       */
      certificateTransparencyCompliance: CertificateTransparencyCompliance;
      /**
       * The signature algorithm used by the server in the TLS server signature,
represented as a TLS SignatureScheme code point. Omitted if not
applicable or not known.
       */
      serverSignatureAlgorithm?: number;
      /**
       * Whether the connection used Encrypted ClientHello
       */
      encryptedClientHello: boolean;
    }
    /**
     * Whether the request complied with Certificate Transparency policy.
     */
    export type CertificateTransparencyCompliance = "unknown" | "not-compliant" | "compliant";
    /**
     * The reason why request was blocked.
     */
    export type BlockedReason = "other" | "csp" | "mixed-content" | "origin" | "inspector" | "integrity" | "subresource-filter" | "content-type" | "coep-frame-resource-needs-coep-header" | "coop-sandboxed-iframe-cannot-navigate-to-coop-page" | "corp-not-same-origin" | "corp-not-same-origin-after-defaulted-to-same-origin-by-coep" | "corp-not-same-origin-after-defaulted-to-same-origin-by-dip" | "corp-not-same-origin-after-defaulted-to-same-origin-by-coep-and-dip" | "corp-not-same-site" | "sri-message-signature-mismatch";
    /**
     * The reason why request was blocked.
     */
    export type CorsError = "DisallowedByMode" | "InvalidResponse" | "WildcardOriginNotAllowed" | "MissingAllowOriginHeader" | "MultipleAllowOriginValues" | "InvalidAllowOriginValue" | "AllowOriginMismatch" | "InvalidAllowCredentials" | "CorsDisabledScheme" | "PreflightInvalidStatus" | "PreflightDisallowedRedirect" | "PreflightWildcardOriginNotAllowed" | "PreflightMissingAllowOriginHeader" | "PreflightMultipleAllowOriginValues" | "PreflightInvalidAllowOriginValue" | "PreflightAllowOriginMismatch" | "PreflightInvalidAllowCredentials" | "PreflightMissingAllowExternal" | "PreflightInvalidAllowExternal" | "InvalidAllowMethodsPreflightResponse" | "InvalidAllowHeadersPreflightResponse" | "MethodDisallowedByPreflightResponse" | "HeaderDisallowedByPreflightResponse" | "RedirectContainsCredentials" | "InsecureLocalNetwork" | "InvalidLocalNetworkAccess" | "NoCorsRedirectModeNotFollow" | "LocalNetworkAccessPermissionDenied";
    export interface CorsErrorStatus {
      corsError: CorsError;
      failedParameter: string;
    }
    /**
     * Source of serviceworker response.
     */
    export type ServiceWorkerResponseSource = "cache-storage" | "http-cache" | "fallback-code" | "network";
    /**
     * Determines what type of Trust Token operation is executed and
depending on the type, some additional parameters. The values
are specified in third_party/blink/renderer/core/fetch/trust_token.idl.
     */
    export interface TrustTokenParams {
      operation: TrustTokenOperationType;
      /**
       * Only set for "token-redemption" operation and determine whether
to request a fresh SRR or use a still valid cached SRR.
       */
      refreshPolicy: "UseCached" | "Refresh";
      /**
       * Origins of issuers from whom to request tokens or redemption
records.
       */
      issuers?: string[];
    }
    export type TrustTokenOperationType = "Issuance" | "Redemption" | "Signing";
    /**
     * The reason why Chrome uses a specific transport protocol for HTTP semantics.
     */
    export type AlternateProtocolUsage = "alternativeJobWonWithoutRace" | "alternativeJobWonRace" | "mainJobWonRace" | "mappingMissing" | "broken" | "dnsAlpnH3JobWonWithoutRace" | "dnsAlpnH3JobWonRace" | "unspecifiedReason";
    /**
     * Source of service worker router.
     */
    export type ServiceWorkerRouterSource = "network" | "cache" | "fetch-event" | "race-network-and-fetch-handler" | "race-network-and-cache";
    export interface ServiceWorkerRouterInfo {
      /**
       * ID of the rule matched. If there is a matched rule, this field will
be set, otherwiser no value will be set.
       */
      ruleIdMatched?: number;
      /**
       * The router source of the matched rule. If there is a matched rule, this
field will be set, otherwise no value will be set.
       */
      matchedSourceType?: ServiceWorkerRouterSource;
      /**
       * The actual router source used.
       */
      actualSourceType?: ServiceWorkerRouterSource;
    }
    /**
     * HTTP response data.
     */
    export interface Response {
      /**
       * Response URL. This URL can be different from CachedResource.url in case of redirect.
       */
      url: string;
      /**
       * HTTP response status code.
       */
      status: number;
      /**
       * HTTP response status text.
       */
      statusText: string;
      /**
       * HTTP response headers.
       */
      headers: Headers;
      /**
       * HTTP response headers text. This has been replaced by the headers in Network.responseReceivedExtraInfo.
       */
      headersText?: string;
      /**
       * Resource mimeType as determined by the browser.
       */
      mimeType: string;
      /**
       * Resource charset as determined by the browser (if applicable).
       */
      charset: string;
      /**
       * Refined HTTP request headers that were actually transmitted over the network.
       */
      requestHeaders?: Headers;
      /**
       * HTTP request headers text. This has been replaced by the headers in Network.requestWillBeSentExtraInfo.
       */
      requestHeadersText?: string;
      /**
       * Specifies whether physical connection was actually reused for this request.
       */
      connectionReused: boolean;
      /**
       * Physical connection id that was actually used for this request.
       */
      connectionId: number;
      /**
       * Remote IP address.
       */
      remoteIPAddress?: string;
      /**
       * Remote port.
       */
      remotePort?: number;
      /**
       * Specifies that the request was served from the disk cache.
       */
      fromDiskCache?: boolean;
      /**
       * Specifies that the request was served from the ServiceWorker.
       */
      fromServiceWorker?: boolean;
      /**
       * Specifies that the request was served from the prefetch cache.
       */
      fromPrefetchCache?: boolean;
      /**
       * Specifies that the request was served from the prefetch cache.
       */
      fromEarlyHints?: boolean;
      /**
       * Information about how ServiceWorker Static Router API was used. If this
field is set with `matchedSourceType` field, a matching rule is found.
If this field is set without `matchedSource`, no matching rule is found.
Otherwise, the API is not used.
       */
      serviceWorkerRouterInfo?: ServiceWorkerRouterInfo;
      /**
       * Total number of bytes received for this request so far.
       */
      encodedDataLength: number;
      /**
       * Timing information for the given request.
       */
      timing?: ResourceTiming;
      /**
       * Response source of response from ServiceWorker.
       */
      serviceWorkerResponseSource?: ServiceWorkerResponseSource;
      /**
       * The time at which the returned response was generated.
       */
      responseTime?: TimeSinceEpoch;
      /**
       * Cache Storage Cache Name.
       */
      cacheStorageCacheName?: string;
      /**
       * Protocol used to fetch this request.
       */
      protocol?: string;
      /**
       * The reason why Chrome uses a specific transport protocol for HTTP semantics.
       */
      alternateProtocolUsage?: AlternateProtocolUsage;
      /**
       * Security state of the request resource.
       */
      securityState: Security.SecurityState;
      /**
       * Security details for the request.
       */
      securityDetails?: SecurityDetails;
    }
    /**
     * WebSocket request data.
     */
    export interface WebSocketRequest {
      /**
       * HTTP request headers.
       */
      headers: Headers;
    }
    /**
     * WebSocket response data.
     */
    export interface WebSocketResponse {
      /**
       * HTTP response status code.
       */
      status: number;
      /**
       * HTTP response status text.
       */
      statusText: string;
      /**
       * HTTP response headers.
       */
      headers: Headers;
      /**
       * HTTP response headers text.
       */
      headersText?: string;
      /**
       * HTTP request headers.
       */
      requestHeaders?: Headers;
      /**
       * HTTP request headers text.
       */
      requestHeadersText?: string;
    }
    /**
     * WebSocket message data. This represents an entire WebSocket message, not just a fragmented frame as the name suggests.
     */
    export interface WebSocketFrame {
      /**
       * WebSocket message opcode.
       */
      opcode: number;
      /**
       * WebSocket message mask.
       */
      mask: boolean;
      /**
       * WebSocket message payload data.
If the opcode is 1, this is a text message and payloadData is a UTF-8 string.
If the opcode isn't 1, then payloadData is a base64 encoded string representing binary data.
       */
      payloadData: string;
    }
    /**
     * Information about the cached resource.
     */
    export interface CachedResource {
      /**
       * Resource URL. This is the url of the original network request.
       */
      url: string;
      /**
       * Type of this resource.
       */
      type: ResourceType;
      /**
       * Cached response data.
       */
      response?: Response;
      /**
       * Cached response body size.
       */
      bodySize: number;
    }
    /**
     * Information about the request initiator.
     */
    export interface Initiator {
      /**
       * Type of this initiator.
       */
      type: "parser" | "script" | "preload" | "SignedExchange" | "preflight" | "FedCM" | "other";
      /**
       * Initiator JavaScript stack trace, set for Script only.
Requires the Debugger domain to be enabled.
       */
      stack?: Runtime.StackTrace;
      /**
       * Initiator URL, set for Parser type or for Script type (when script is importing module) or for SignedExchange type.
       */
      url?: string;
      /**
       * Initiator line number, set for Parser type or for Script type (when script is importing
module) (0-based).
       */
      lineNumber?: number;
      /**
       * Initiator column number, set for Parser type or for Script type (when script is importing
module) (0-based).
       */
      columnNumber?: number;
      /**
       * Set if another request triggered this request (e.g. preflight).
       */
      requestId?: RequestId;
    }
    /**
     * cookiePartitionKey object
The representation of the components of the key that are created by the cookiePartitionKey class contained in net/cookies/cookie_partition_key.h.
     */
    export interface CookiePartitionKey {
      /**
       * The site of the top-level URL the browser was visiting at the start
of the request to the endpoint that set the cookie.
       */
      topLevelSite: string;
      /**
       * Indicates if the cookie has any ancestors that are cross-site to the topLevelSite.
       */
      hasCrossSiteAncestor: boolean;
    }
    /**
     * Cookie object
     */
    export interface Cookie {
      /**
       * Cookie name.
       */
      name: string;
      /**
       * Cookie value.
       */
      value: string;
      /**
       * Cookie domain.
       */
      domain: string;
      /**
       * Cookie path.
       */
      path: string;
      /**
       * Cookie expiration date as the number of seconds since the UNIX epoch.
The value is set to -1 if the expiry date is not set.
The value can be null for values that cannot be represented in
JSON (±Inf).
       */
      expires: number;
      /**
       * Cookie size.
       */
      size: number;
      /**
       * True if cookie is http-only.
       */
      httpOnly: boolean;
      /**
       * True if cookie is secure.
       */
      secure: boolean;
      /**
       * True in case of session cookie.
       */
      session: boolean;
      /**
       * Cookie SameSite type.
       */
      sameSite?: CookieSameSite;
      /**
       * Cookie Priority
       */
      priority: CookiePriority;
      /**
       * Cookie source scheme type.
       */
      sourceScheme: CookieSourceScheme;
      /**
       * Cookie source port. Valid values are {-1, [1, 65535]}, -1 indicates an unspecified port.
An unspecified port value allows protocol clients to emulate legacy cookie scope for the port.
This is a temporary ability and it will be removed in the future.
       */
      sourcePort: number;
      /**
       * Cookie partition key.
       */
      partitionKey?: CookiePartitionKey;
      /**
       * True if cookie partition key is opaque.
       */
      partitionKeyOpaque?: boolean;
    }
    /**
     * Types of reasons why a cookie may not be stored from a response.
     */
    export type SetCookieBlockedReason = "SecureOnly" | "SameSiteStrict" | "SameSiteLax" | "SameSiteUnspecifiedTreatedAsLax" | "SameSiteNoneInsecure" | "UserPreferences" | "ThirdPartyPhaseout" | "ThirdPartyBlockedInFirstPartySet" | "SyntaxError" | "SchemeNotSupported" | "OverwriteSecure" | "InvalidDomain" | "InvalidPrefix" | "UnknownError" | "SchemefulSameSiteStrict" | "SchemefulSameSiteLax" | "SchemefulSameSiteUnspecifiedTreatedAsLax" | "NameValuePairExceedsMaxSize" | "DisallowedCharacter" | "NoCookieContent";
    /**
     * Types of reasons why a cookie may not be sent with a request.
     */
    export type CookieBlockedReason = "SecureOnly" | "NotOnPath" | "DomainMismatch" | "SameSiteStrict" | "SameSiteLax" | "SameSiteUnspecifiedTreatedAsLax" | "SameSiteNoneInsecure" | "UserPreferences" | "ThirdPartyPhaseout" | "ThirdPartyBlockedInFirstPartySet" | "UnknownError" | "SchemefulSameSiteStrict" | "SchemefulSameSiteLax" | "SchemefulSameSiteUnspecifiedTreatedAsLax" | "NameValuePairExceedsMaxSize" | "PortMismatch" | "SchemeMismatch" | "AnonymousContext";
    /**
     * Types of reasons why a cookie should have been blocked by 3PCD but is exempted for the request.
     */
    export type CookieExemptionReason = "None" | "UserSetting" | "TPCDMetadata" | "TPCDDeprecationTrial" | "TopLevelTPCDDeprecationTrial" | "TPCDHeuristics" | "EnterprisePolicy" | "StorageAccess" | "TopLevelStorageAccess" | "Scheme" | "SameSiteNoneCookiesInSandbox";
    /**
     * A cookie which was not stored from a response with the corresponding reason.
     */
    export interface BlockedSetCookieWithReason {
      /**
       * The reason(s) this cookie was blocked.
       */
      blockedReasons: SetCookieBlockedReason[];
      /**
       * The string representing this individual cookie as it would appear in the header.
This is not the entire "cookie" or "set-cookie" header which could have multiple cookies.
       */
      cookieLine: string;
      /**
       * The cookie object which represents the cookie which was not stored. It is optional because
sometimes complete cookie information is not available, such as in the case of parsing
errors.
       */
      cookie?: Cookie;
    }
    /**
     * A cookie should have been blocked by 3PCD but is exempted and stored from a response with the
corresponding reason. A cookie could only have at most one exemption reason.
     */
    export interface ExemptedSetCookieWithReason {
      /**
       * The reason the cookie was exempted.
       */
      exemptionReason: CookieExemptionReason;
      /**
       * The string representing this individual cookie as it would appear in the header.
       */
      cookieLine: string;
      /**
       * The cookie object representing the cookie.
       */
      cookie: Cookie;
    }
    /**
     * A cookie associated with the request which may or may not be sent with it.
Includes the cookies itself and reasons for blocking or exemption.
     */
    export interface AssociatedCookie {
      /**
       * The cookie object representing the cookie which was not sent.
       */
      cookie: Cookie;
      /**
       * The reason(s) the cookie was blocked. If empty means the cookie is included.
       */
      blockedReasons: CookieBlockedReason[];
      /**
       * The reason the cookie should have been blocked by 3PCD but is exempted. A cookie could
only have at most one exemption reason.
       */
      exemptionReason?: CookieExemptionReason;
    }
    /**
     * Cookie parameter object
     */
    export interface CookieParam {
      /**
       * Cookie name.
       */
      name: string;
      /**
       * Cookie value.
       */
      value: string;
      /**
       * The request-URI to associate with the setting of the cookie. This value can affect the
default domain, path, source port, and source scheme values of the created cookie.
       */
      url?: string;
      /**
       * Cookie domain.
       */
      domain?: string;
      /**
       * Cookie path.
       */
      path?: string;
      /**
       * True if cookie is secure.
       */
      secure?: boolean;
      /**
       * True if cookie is http-only.
       */
      httpOnly?: boolean;
      /**
       * Cookie SameSite type.
       */
      sameSite?: CookieSameSite;
      /**
       * Cookie expiration date, session cookie if not set
       */
      expires?: TimeSinceEpoch;
      /**
       * Cookie Priority.
       */
      priority?: CookiePriority;
      /**
       * Cookie source scheme type.
       */
      sourceScheme?: CookieSourceScheme;
      /**
       * Cookie source port. Valid values are {-1, [1, 65535]}, -1 indicates an unspecified port.
An unspecified port value allows protocol clients to emulate legacy cookie scope for the port.
This is a temporary ability and it will be removed in the future.
       */
      sourcePort?: number;
      /**
       * Cookie partition key. If not set, the cookie will be set as not partitioned.
       */
      partitionKey?: CookiePartitionKey;
    }
    /**
     * Authorization challenge for HTTP status code 401 or 407.
     */
    export interface AuthChallenge {
      /**
       * Source of the authentication challenge.
       */
      source?: "Server" | "Proxy";
      /**
       * Origin of the challenger.
       */
      origin: string;
      /**
       * The authentication scheme used, such as basic or digest
       */
      scheme: string;
      /**
       * The realm of the challenge. May be empty.
       */
      realm: string;
    }
    /**
     * Response to an AuthChallenge.
     */
    export interface AuthChallengeResponse {
      /**
       * The decision on what to do in response to the authorization challenge.  Default means
deferring to the default behavior of the net stack, which will likely either the Cancel
authentication or display a popup dialog box.
       */
      response: "Default" | "CancelAuth" | "ProvideCredentials";
      /**
       * The username to provide, possibly empty. Should only be set if response is
ProvideCredentials.
       */
      username?: string;
      /**
       * The password to provide, possibly empty. Should only be set if response is
ProvideCredentials.
       */
      password?: string;
    }
    /**
     * Stages of the interception to begin intercepting. Request will intercept before the request is
sent. Response will intercept after the response is received.
     */
    export type InterceptionStage = "Request" | "HeadersReceived";
    /**
     * Request pattern for interception.
     */
    export interface RequestPattern {
      /**
       * Wildcards (`'*'` -> zero or more, `'?'` -> exactly one) are allowed. Escape character is
backslash. Omitting is equivalent to `"*"`.
       */
      urlPattern?: string;
      /**
       * If set, only requests for matching resource types will be intercepted.
       */
      resourceType?: ResourceType;
      /**
       * Stage at which to begin intercepting requests. Default is Request.
       */
      interceptionStage?: InterceptionStage;
    }
    /**
     * Information about a signed exchange signature.
https://wicg.github.io/webpackage/draft-yasskin-httpbis-origin-signed-exchanges-impl.html#rfc.section.3.1
     */
    export interface SignedExchangeSignature {
      /**
       * Signed exchange signature label.
       */
      label: string;
      /**
       * The hex string of signed exchange signature.
       */
      signature: string;
      /**
       * Signed exchange signature integrity.
       */
      integrity: string;
      /**
       * Signed exchange signature cert Url.
       */
      certUrl?: string;
      /**
       * The hex string of signed exchange signature cert sha256.
       */
      certSha256?: string;
      /**
       * Signed exchange signature validity Url.
       */
      validityUrl: string;
      /**
       * Signed exchange signature date.
       */
      date: number;
      /**
       * Signed exchange signature expires.
       */
      expires: number;
      /**
       * The encoded certificates.
       */
      certificates?: string[];
    }
    /**
     * Information about a signed exchange header.
https://wicg.github.io/webpackage/draft-yasskin-httpbis-origin-signed-exchanges-impl.html#cbor-representation
     */
    export interface SignedExchangeHeader {
      /**
       * Signed exchange request URL.
       */
      requestUrl: string;
      /**
       * Signed exchange response code.
       */
      responseCode: number;
      /**
       * Signed exchange response headers.
       */
      responseHeaders: Headers;
      /**
       * Signed exchange response signature.
       */
      signatures: SignedExchangeSignature[];
      /**
       * Signed exchange header integrity hash in the form of `sha256-<base64-hash-value>`.
       */
      headerIntegrity: string;
    }
    /**
     * Field type for a signed exchange related error.
     */
    export type SignedExchangeErrorField = "signatureSig" | "signatureIntegrity" | "signatureCertUrl" | "signatureCertSha256" | "signatureValidityUrl" | "signatureTimestamps";
    /**
     * Information about a signed exchange response.
     */
    export interface SignedExchangeError {
      /**
       * Error message.
       */
      message: string;
      /**
       * The index of the signature which caused the error.
       */
      signatureIndex?: number;
      /**
       * The field which caused the error.
       */
      errorField?: SignedExchangeErrorField;
    }
    /**
     * Information about a signed exchange response.
     */
    export interface SignedExchangeInfo {
      /**
       * The outer response of signed HTTP exchange which was received from network.
       */
      outerResponse: Response;
      /**
       * Whether network response for the signed exchange was accompanied by
extra headers.
       */
      hasExtraInfo: boolean;
      /**
       * Information about the signed exchange header.
       */
      header?: SignedExchangeHeader;
      /**
       * Security details for the signed exchange header.
       */
      securityDetails?: SecurityDetails;
      /**
       * Errors occurred while handling the signed exchange.
       */
      errors?: SignedExchangeError[];
    }
    /**
     * List of content encodings supported by the backend.
     */
    export type ContentEncoding = "deflate" | "gzip" | "br" | "zstd";
    export interface NetworkConditions {
      /**
       * Only matching requests will be affected by these conditions. Patterns use the URLPattern constructor string
syntax (https://urlpattern.spec.whatwg.org/) and must be absolute. If the pattern is empty, all requests are
matched (including p2p connections).
       */
      urlPattern: string;
      /**
       * Minimum latency from request sent to response headers received (ms).
       */
      latency: number;
      /**
       * Maximal aggregated download throughput (bytes/sec). -1 disables download throttling.
       */
      downloadThroughput: number;
      /**
       * Maximal aggregated upload throughput (bytes/sec).  -1 disables upload throttling.
       */
      uploadThroughput: number;
      /**
       * Connection type if known.
       */
      connectionType?: ConnectionType;
      /**
       * WebRTC packet loss (percent, 0-100). 0 disables packet loss emulation, 100 drops all the packets.
       */
      packetLoss?: number;
      /**
       * WebRTC packet queue length (packet). 0 removes any queue length limitations.
       */
      packetQueueLength?: number;
      /**
       * WebRTC packetReordering feature.
       */
      packetReordering?: boolean;
      /**
       * True to emulate internet disconnection.
       */
      offline?: boolean;
    }
    export interface BlockPattern {
      /**
       * URL pattern to match. Patterns use the URLPattern constructor string syntax
(https://urlpattern.spec.whatwg.org/) and must be absolute. Example: `<example>`.
       */
      urlPattern: string;
      /**
       * Whether or not to block the pattern. If false, a matching request will not be blocked even if it matches a later
`BlockPattern`.
       */
      block: boolean;
    }
    export type DirectSocketDnsQueryType = "ipv4" | "ipv6";
    export interface DirectTCPSocketOptions {
      /**
       * TCP_NODELAY option
       */
      noDelay: boolean;
      /**
       * Expected to be unsigned integer.
       */
      keepAliveDelay?: number;
      /**
       * Expected to be unsigned integer.
       */
      sendBufferSize?: number;
      /**
       * Expected to be unsigned integer.
       */
      receiveBufferSize?: number;
      dnsQueryType?: DirectSocketDnsQueryType;
    }
    export interface DirectUDPSocketOptions {
      remoteAddr?: string;
      /**
       * Unsigned int 16.
       */
      remotePort?: number;
      localAddr?: string;
      /**
       * Unsigned int 16.
       */
      localPort?: number;
      dnsQueryType?: DirectSocketDnsQueryType;
      /**
       * Expected to be unsigned integer.
       */
      sendBufferSize?: number;
      /**
       * Expected to be unsigned integer.
       */
      receiveBufferSize?: number;
      multicastLoopback?: boolean;
      /**
       * Unsigned int 8.
       */
      multicastTimeToLive?: number;
      multicastAllowAddressSharing?: boolean;
    }
    export interface DirectUDPMessage {
      data: binary;
      /**
       * Null for connected mode.
       */
      remoteAddr?: string;
      /**
       * Null for connected mode.
Expected to be unsigned integer.
       */
      remotePort?: number;
    }
    export type LocalNetworkAccessRequestPolicy = "Allow" | "BlockFromInsecureToMorePrivate" | "WarnFromInsecureToMorePrivate" | "PermissionBlock" | "PermissionWarn";
    export type IPAddressSpace = "Loopback" | "Local" | "Public" | "Unknown";
    export interface ConnectTiming {
      /**
       * Timing's requestTime is a baseline in seconds, while the other numbers are ticks in
milliseconds relatively to this requestTime. Matches ResourceTiming's requestTime for
the same request (but not for redirected requests).
       */
      requestTime: number;
    }
    export interface ClientSecurityState {
      initiatorIsSecureContext: boolean;
      initiatorIPAddressSpace: IPAddressSpace;
      localNetworkAccessRequestPolicy: LocalNetworkAccessRequestPolicy;
    }
    /**
     * Identifies the script on the stack that caused a resource or element to be
labeled as an ad. For resources, this indicates the context that triggered
the fetch. For elements, this indicates the context that caused the element
to be appended to the DOM.
     */
    export interface AdScriptIdentifier {
      /**
       * The script's V8 identifier.
       */
      scriptId: Runtime.ScriptId;
      /**
       * V8's debugging ID for the v8::Context.
       */
      debuggerId: Runtime.UniqueDebuggerId;
      /**
       * The script's url (or generated name based on id if inline script).
       */
      name: string;
    }
    /**
     * Encapsulates the script ancestry and the root script filter list rule that
caused the resource or element to be labeled as an ad.
     */
    export interface AdAncestry {
      /**
       * A chain of `AdScriptIdentifier`s representing the ancestry of an ad
script that led to the creation of a resource or element. The chain is
ordered from the script itself (lowest level) up to its root ancestor
that was flagged by a filter list.
       */
      ancestryChain: AdScriptIdentifier[];
      /**
       * The filter list rule that caused the root (last) script in
`ancestryChain` to be tagged as an ad.
       */
      rootScriptFilterlistRule?: string;
    }
    /**
     * Represents the provenance of an ad resource or element. Only one of
`filterlistRule` or `adScriptAncestry` can be set. If `filterlistRule`
is provided, the resource URL directly matches a filter list rule. If
`adScriptAncestry` is provided, an ad script initiated the resource fetch or
appended the element to the DOM. If neither is provided, the entity is
known to be an ad, but provenance tracking information is unavailable.
     */
    export interface AdProvenance {
      /**
       * The filterlist rule that matched, if any.
       */
      filterlistRule?: string;
      /**
       * The script ancestry that created the ad, if any.
       */
      adScriptAncestry?: AdAncestry;
    }
    export type CrossOriginOpenerPolicyValue = "SameOrigin" | "SameOriginAllowPopups" | "RestrictProperties" | "UnsafeNone" | "SameOriginPlusCoep" | "RestrictPropertiesPlusCoep" | "NoopenerAllowPopups";
    export interface CrossOriginOpenerPolicyStatus {
      value: CrossOriginOpenerPolicyValue;
      reportOnlyValue: CrossOriginOpenerPolicyValue;
      reportingEndpoint?: string;
      reportOnlyReportingEndpoint?: string;
    }
    export type CrossOriginEmbedderPolicyValue = "None" | "Credentialless" | "RequireCorp";
    export interface CrossOriginEmbedderPolicyStatus {
      value: CrossOriginEmbedderPolicyValue;
      reportOnlyValue: CrossOriginEmbedderPolicyValue;
      reportingEndpoint?: string;
      reportOnlyReportingEndpoint?: string;
    }
    export type ContentSecurityPolicySource = "HTTP" | "Meta";
    export interface ContentSecurityPolicyStatus {
      effectiveDirectives: string;
      isEnforced: boolean;
      source: ContentSecurityPolicySource;
    }
    export interface SecurityIsolationStatus {
      coop?: CrossOriginOpenerPolicyStatus;
      coep?: CrossOriginEmbedderPolicyStatus;
      csp?: ContentSecurityPolicyStatus[];
    }
    /**
     * The status of a Reporting API report.
     */
    export type ReportStatus = "Queued" | "Pending" | "MarkedForRemoval" | "Success";
    export type ReportId = string;
    /**
     * An object representing a report generated by the Reporting API.
     */
    export interface ReportingApiReport {
      id: ReportId;
      /**
       * The URL of the document that triggered the report.
       */
      initiatorUrl: string;
      /**
       * The name of the endpoint group that should be used to deliver the report.
       */
      destination: string;
      /**
       * The type of the report (specifies the set of data that is contained in the report body).
       */
      type: string;
      /**
       * When the report was generated.
       */
      timestamp: Network.TimeSinceEpoch;
      /**
       * How many uploads deep the related request was.
       */
      depth: number;
      /**
       * The number of delivery attempts made so far, not including an active attempt.
       */
      completedAttempts: number;
      body: {
        [key: string]: string;
      };
      status: ReportStatus;
    }
    export interface ReportingApiEndpoint {
      /**
       * The URL of the endpoint to which reports may be delivered.
       */
      url: string;
      /**
       * Name of the endpoint group.
       */
      groupName: string;
    }
    /**
     * Unique identifier for a device bound session.
     */
    export interface DeviceBoundSessionKey {
      /**
       * The site the session is set up for.
       */
      site: string;
      /**
       * The id of the session.
       */
      id: string;
    }
    /**
     * How a device bound session was used during a request.
     */
    export interface DeviceBoundSessionWithUsage {
      /**
       * The key for the session.
       */
      sessionKey: DeviceBoundSessionKey;
      /**
       * How the session was used (or not used).
       */
      usage: "NotInScope" | "InScopeRefreshNotYetNeeded" | "InScopeRefreshNotAllowed" | "ProactiveRefreshNotPossible" | "ProactiveRefreshAttempted" | "Deferred";
    }
    /**
     * A device bound session's cookie craving.
     */
    export interface DeviceBoundSessionCookieCraving {
      /**
       * The name of the craving.
       */
      name: string;
      /**
       * The domain of the craving.
       */
      domain: string;
      /**
       * The path of the craving.
       */
      path: string;
      /**
       * The `Secure` attribute of the craving attributes.
       */
      secure: boolean;
      /**
       * The `HttpOnly` attribute of the craving attributes.
       */
      httpOnly: boolean;
      /**
       * The `SameSite` attribute of the craving attributes.
       */
      sameSite?: CookieSameSite;
    }
    /**
     * A device bound session's inclusion URL rule.
     */
    export interface DeviceBoundSessionUrlRule {
      /**
       * See comments on `net::device_bound_sessions::SessionInclusionRules::UrlRule::rule_type`.
       */
      ruleType: "Exclude" | "Include";
      /**
       * See comments on `net::device_bound_sessions::SessionInclusionRules::UrlRule::host_pattern`.
       */
      hostPattern: string;
      /**
       * See comments on `net::device_bound_sessions::SessionInclusionRules::UrlRule::path_prefix`.
       */
      pathPrefix: string;
    }
    /**
     * A device bound session's inclusion rules.
     */
    export interface DeviceBoundSessionInclusionRules {
      /**
       * See comments on `net::device_bound_sessions::SessionInclusionRules::origin_`.
       */
      origin: string;
      /**
       * Whether the whole site is included. See comments on
`net::device_bound_sessions::SessionInclusionRules::include_site_` for more
details; this boolean is true if that value is populated.
       */
      includeSite: boolean;
      /**
       * See comments on `net::device_bound_sessions::SessionInclusionRules::url_rules_`.
       */
      urlRules: DeviceBoundSessionUrlRule[];
    }
    /**
     * A device bound session.
     */
    export interface DeviceBoundSession {
      /**
       * The site and session ID of the session.
       */
      key: DeviceBoundSessionKey;
      /**
       * See comments on `net::device_bound_sessions::Session::refresh_url_`.
       */
      refreshUrl: string;
      /**
       * See comments on `net::device_bound_sessions::Session::inclusion_rules_`.
       */
      inclusionRules: DeviceBoundSessionInclusionRules;
      /**
       * See comments on `net::device_bound_sessions::Session::cookie_cravings_`.
       */
      cookieCravings: DeviceBoundSessionCookieCraving[];
      /**
       * See comments on `net::device_bound_sessions::Session::expiry_date_`.
       */
      expiryDate: Network.TimeSinceEpoch;
      /**
       * See comments on `net::device_bound_sessions::Session::cached_challenge__`.
       */
      cachedChallenge?: string;
      /**
       * See comments on `net::device_bound_sessions::Session::allowed_refresh_initiators_`.
       */
      allowedRefreshInitiators: string[];
    }
    /**
     * A unique identifier for a device bound session event.
     */
    export type DeviceBoundSessionEventId = string;
    /**
     * A fetch result for a device bound session creation or refresh.
     */
    export type DeviceBoundSessionFetchResult = "Success" | "KeyError" | "SigningError" | "TransientSigningError" | "ServerRequestedTermination" | "InvalidSessionId" | "InvalidChallenge" | "TooManyChallenges" | "InvalidFetcherUrl" | "InvalidRefreshUrl" | "TransientHttpError" | "ScopeOriginSameSiteMismatch" | "RefreshUrlSameSiteMismatch" | "MismatchedSessionId" | "MissingScope" | "NoCredentials" | "SubdomainRegistrationWellKnownUnavailable" | "SubdomainRegistrationUnauthorized" | "SubdomainRegistrationWellKnownMalformed" | "SessionProviderWellKnownUnavailable" | "RelyingPartyWellKnownUnavailable" | "FederatedKeyThumbprintMismatch" | "InvalidFederatedSessionUrl" | "InvalidFederatedKey" | "TooManyRelyingOriginLabels" | "BoundCookieSetForbidden" | "NetError" | "ProxyError" | "EmptySessionConfig" | "InvalidCredentialsConfig" | "InvalidCredentialsType" | "InvalidCredentialsEmptyName" | "InvalidCredentialsCookie" | "PersistentHttpError" | "RegistrationAttemptedChallenge" | "InvalidScopeOrigin" | "ScopeOriginContainsPath" | "RefreshInitiatorNotString" | "RefreshInitiatorInvalidHostPattern" | "InvalidScopeSpecification" | "MissingScopeSpecificationType" | "EmptyScopeSpecificationDomain" | "EmptyScopeSpecificationPath" | "InvalidScopeSpecificationType" | "InvalidScopeIncludeSite" | "MissingScopeIncludeSite" | "FederatedNotAuthorizedByProvider" | "FederatedNotAuthorizedByRelyingParty" | "SessionProviderWellKnownMalformed" | "SessionProviderWellKnownHasProviderOrigin" | "RelyingPartyWellKnownMalformed" | "RelyingPartyWellKnownHasRelyingOrigins" | "InvalidFederatedSessionProviderSessionMissing" | "InvalidFederatedSessionWrongProviderOrigin" | "InvalidCredentialsCookieCreationTime" | "InvalidCredentialsCookieName" | "InvalidCredentialsCookieParsing" | "InvalidCredentialsCookieUnpermittedAttribute" | "InvalidCredentialsCookieInvalidDomain" | "InvalidCredentialsCookiePrefix" | "InvalidScopeRulePath" | "InvalidScopeRuleHostPattern" | "ScopeRuleOriginScopedHostPatternMismatch" | "ScopeRuleSiteScopedHostPatternMismatch" | "SigningQuotaExceeded" | "InvalidConfigJson" | "InvalidFederatedSessionProviderFailedToRestoreKey" | "FailedToUnwrapKey" | "SessionDeletedDuringRefresh";
    /**
     * Details about a failed device bound session network request.
     */
    export interface DeviceBoundSessionFailedRequest {
      /**
       * The failed request URL.
       */
      requestUrl: string;
      /**
       * The net error of the response if it was not OK.
       */
      netError?: string;
      /**
       * The response code if the net error was OK and the response code was not
200.
       */
      responseError?: number;
      /**
       * The body of the response if the net error was OK, the response code was
not 200, and the response body was not empty.
       */
      responseErrorBody?: string;
    }
    /**
     * Session event details specific to creation.
     */
    export interface CreationEventDetails {
      /**
       * The result of the fetch attempt.
       */
      fetchResult: DeviceBoundSessionFetchResult;
      /**
       * The session if there was a newly created session. This is populated for
all successful creation events.
       */
      newSession?: DeviceBoundSession;
      /**
       * Details about a failed device bound session network request if there was
one.
       */
      failedRequest?: DeviceBoundSessionFailedRequest;
    }
    /**
     * Session event details specific to refresh.
     */
    export interface RefreshEventDetails {
      /**
       * The result of a refresh.
       */
      refreshResult: "Refreshed" | "InitializedService" | "Unreachable" | "ServerError" | "RefreshQuotaExceeded" | "FatalError" | "SigningQuotaExceeded" | "RefreshedAsWaiter" | "TransientSigningError";
      /**
       * If there was a fetch attempt, the result of that.
       */
      fetchResult?: DeviceBoundSessionFetchResult;
      /**
       * The session display if there was a newly created session. This is populated
for any refresh event that modifies the session config.
       */
      newSession?: DeviceBoundSession;
      /**
       * See comments on `net::device_bound_sessions::RefreshEventResult::was_fully_proactive_refresh`.
       */
      wasFullyProactiveRefresh: boolean;
      /**
       * Details about a failed device bound session network request if there was
one.
       */
      failedRequest?: DeviceBoundSessionFailedRequest;
    }
    /**
     * Session event details specific to termination.
     */
    export interface TerminationEventDetails {
      /**
       * The reason for a session being deleted.
       */
      deletionReason: "Expired" | "FailedToRestoreKey" | "FailedToUnwrapKey" | "StoragePartitionCleared" | "ClearBrowsingData" | "ServerRequested" | "InvalidSessionParams" | "RefreshFatalError" | "DevTools";
    }
    /**
     * Session event details specific to challenges.
     */
    export interface ChallengeEventDetails {
      /**
       * The result of a challenge.
       */
      challengeResult: "Success" | "NoSessionId" | "NoSessionMatch" | "CantSetBoundCookie";
      /**
       * The challenge set.
       */
      challenge: string;
    }
    /**
     * An object providing the result of a network resource load.
     */
    export interface LoadNetworkResourcePageResult {
      success: boolean;
      /**
       * Optional values used for error reporting.
       */
      netError?: number;
      netErrorName?: string;
      httpStatusCode?: number;
      /**
       * If successful, one of the following two fields holds the result.
       */
      stream?: IO.StreamHandle;
      /**
       * Response headers.
       */
      headers?: Network.Headers;
    }
    /**
     * An options object that may be extended later to better support CORS,
CORB and streaming.
     */
    export interface LoadNetworkResourceOptions {
      disableCache: boolean;
      includeCredentials: boolean;
    }
    /**
     * Fired when data chunk was received over the network.
     */
    export type dataReceivedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * Data chunk length.
       */
      dataLength: number;
      /**
       * Actual bytes received (might be less than dataLength for compressed encodings).
       */
      encodedDataLength: number;
      /**
       * Data that was received.
       */
      data?: binary;
    };
    /**
     * Fired when EventSource message is received.
     */
    export type eventSourceMessageReceivedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * Message type.
       */
      eventName: string;
      /**
       * Message identifier.
       */
      eventId: string;
      /**
       * Message content.
       */
      data: string;
    };
    /**
     * Fired when HTTP request has failed to load.
     */
    export type loadingFailedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * Resource type.
       */
      type: ResourceType;
      /**
       * Error message. List of network errors: https://cs.chromium.org/chromium/src/net/base/net_error_list.h
       */
      errorText: string;
      /**
       * True if loading was canceled.
       */
      canceled?: boolean;
      /**
       * The reason why loading was blocked, if any.
       */
      blockedReason?: BlockedReason;
      /**
       * The reason why loading was blocked by CORS, if any.
       */
      corsErrorStatus?: CorsErrorStatus;
    };
    /**
     * Fired when HTTP request has finished loading.
     */
    export type loadingFinishedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * Total number of bytes received for this request.
       */
      encodedDataLength: number;
    };
    /**
     * Details of an intercepted HTTP request, which must be either allowed, blocked, modified or
mocked.
Deprecated, use Fetch.requestPaused instead.
     */
    export type requestInterceptedPayload = {
      /**
       * Each request the page makes will have a unique id, however if any redirects are encountered
while processing that fetch, they will be reported with the same id as the original fetch.
Likewise if HTTP authentication is needed then the same fetch id will be used.
       */
      interceptionId: InterceptionId;
      request: Request;
      /**
       * The id of the frame that initiated the request.
       */
      frameId: Page.FrameId;
      /**
       * How the requested resource will be used.
       */
      resourceType: ResourceType;
      /**
       * Whether this is a navigation request, which can abort the navigation completely.
       */
      isNavigationRequest: boolean;
      /**
       * Set if the request is a navigation that will result in a download.
Only present after response is received from the server (i.e. HeadersReceived stage).
       */
      isDownload?: boolean;
      /**
       * Redirect location, only sent if a redirect was intercepted.
       */
      redirectUrl?: string;
      /**
       * Details of the Authorization Challenge encountered. If this is set then
continueInterceptedRequest must contain an authChallengeResponse.
       */
      authChallenge?: AuthChallenge;
      /**
       * Response error if intercepted at response stage or if redirect occurred while intercepting
request.
       */
      responseErrorReason?: ErrorReason;
      /**
       * Response code if intercepted at response stage or if redirect occurred while intercepting
request or auth retry occurred.
       */
      responseStatusCode?: number;
      /**
       * Response headers if intercepted at the response stage or if redirect occurred while
intercepting request or auth retry occurred.
       */
      responseHeaders?: Headers;
      /**
       * If the intercepted request had a corresponding requestWillBeSent event fired for it, then
this requestId will be the same as the requestId present in the requestWillBeSent event.
       */
      requestId?: RequestId;
    };
    /**
     * Fired if request ended up loading from cache.
     */
    export type requestServedFromCachePayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
    };
    /**
     * Fired when page is about to send HTTP request.
     */
    export type requestWillBeSentPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Loader identifier. Empty string if the request is fetched from worker.
       */
      loaderId: LoaderId;
      /**
       * URL of the document this request is loaded for.
       */
      documentURL: string;
      /**
       * Request data.
       */
      request: Request;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * Timestamp.
       */
      wallTime: TimeSinceEpoch;
      /**
       * Request initiator.
       */
      initiator: Initiator;
      /**
       * In the case that redirectResponse is populated, this flag indicates whether
requestWillBeSentExtraInfo and responseReceivedExtraInfo events will be or were emitted
for the request which was just redirected.
       */
      redirectHasExtraInfo: boolean;
      /**
       * Redirect response data.
       */
      redirectResponse?: Response;
      /**
       * Type of this resource.
       */
      type?: ResourceType;
      /**
       * Frame identifier.
       */
      frameId?: Page.FrameId;
      /**
       * Whether the request is initiated by a user gesture. Defaults to false.
       */
      hasUserGesture?: boolean;
      /**
       * The render-blocking behavior of the request.
       */
      renderBlockingBehavior?: RenderBlockingBehavior;
    };
    /**
     * Fired when resource loading priority is changed
     */
    export type resourceChangedPriorityPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * New priority
       */
      newPriority: ResourcePriority;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
    };
    /**
     * Fired when a signed exchange was received over the network
     */
    export type signedExchangeReceivedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Information about the signed exchange response.
       */
      info: SignedExchangeInfo;
    };
    /**
     * Fired when HTTP response is available.
     */
    export type responseReceivedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Loader identifier. Empty string if the request is fetched from worker.
       */
      loaderId: LoaderId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * Resource type.
       */
      type: ResourceType;
      /**
       * Response data.
       */
      response: Response;
      /**
       * Indicates whether requestWillBeSentExtraInfo and responseReceivedExtraInfo events will be
or were emitted for this request.
       */
      hasExtraInfo: boolean;
      /**
       * Frame identifier.
       */
      frameId?: Page.FrameId;
    };
    /**
     * Fired when WebSocket is closed.
     */
    export type webSocketClosedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
    };
    /**
     * Fired upon WebSocket creation.
     */
    export type webSocketCreatedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * WebSocket request URL.
       */
      url: string;
      /**
       * Request initiator.
       */
      initiator?: Initiator;
    };
    /**
     * Fired when WebSocket message error occurs.
     */
    export type webSocketFrameErrorPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * WebSocket error message.
       */
      errorMessage: string;
    };
    /**
     * Fired when WebSocket message is received.
     */
    export type webSocketFrameReceivedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * WebSocket response data.
       */
      response: WebSocketFrame;
    };
    /**
     * Fired when WebSocket message is sent.
     */
    export type webSocketFrameSentPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * WebSocket response data.
       */
      response: WebSocketFrame;
    };
    /**
     * Fired when WebSocket handshake response becomes available.
     */
    export type webSocketHandshakeResponseReceivedPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * WebSocket response data.
       */
      response: WebSocketResponse;
    };
    /**
     * Fired when WebSocket is about to initiate handshake.
     */
    export type webSocketWillSendHandshakeRequestPayload = {
      /**
       * Request identifier.
       */
      requestId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * UTC Timestamp.
       */
      wallTime: TimeSinceEpoch;
      /**
       * WebSocket request data.
       */
      request: WebSocketRequest;
    };
    /**
     * Fired upon WebTransport creation.
     */
    export type webTransportCreatedPayload = {
      /**
       * WebTransport identifier.
       */
      transportId: RequestId;
      /**
       * WebTransport request URL.
       */
      url: string;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
      /**
       * Request initiator.
       */
      initiator?: Initiator;
    };
    /**
     * Fired when WebTransport handshake is finished.
     */
    export type webTransportConnectionEstablishedPayload = {
      /**
       * WebTransport identifier.
       */
      transportId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
    };
    /**
     * Fired when WebTransport is disposed.
     */
    export type webTransportClosedPayload = {
      /**
       * WebTransport identifier.
       */
      transportId: RequestId;
      /**
       * Timestamp.
       */
      timestamp: MonotonicTime;
    };
    /**
     * Fired upon direct_socket.TCPSocket creation.
     */
    export type directTCPSocketCreatedPayload = {
      identifier: RequestId;
      remoteAddr: string;
      /**
       * Unsigned int 16.
       */
      remotePort: number;
      options: DirectTCPSocketOptions;
      timestamp: MonotonicTime;
      initiator?: Initiator;
    };
    /**
     * Fired when direct_socket.TCPSocket connection is opened.
     */
    export type directTCPSocketOpenedPayload = {
      identifier: RequestId;
      remoteAddr: string;
      /**
       * Expected to be unsigned integer.
       */
      remotePort: number;
      timestamp: MonotonicTime;
      localAddr?: string;
      /**
       * Expected to be unsigned integer.
       */
      localPort?: number;
    };
    /**
     * Fired when direct_socket.TCPSocket is aborted.
     */
    export type directTCPSocketAbortedPayload = {
      identifier: RequestId;
      errorMessage: string;
      timestamp: MonotonicTime;
    };
    /**
     * Fired when direct_socket.TCPSocket is closed.
     */
    export type directTCPSocketClosedPayload = {
      identifier: RequestId;
      timestamp: MonotonicTime;
    };
    /**
     * Fired when data is sent to tcp direct socket stream.
     */
    export type directTCPSocketChunkSentPayload = {
      identifier: RequestId;
      data: binary;
      timestamp: MonotonicTime;
    };
    /**
     * Fired when data is received from tcp direct socket stream.
     */
    export type directTCPSocketChunkReceivedPayload = {
      identifier: RequestId;
      data: binary;
      timestamp: MonotonicTime;
    };
    export type directUDPSocketJoinedMulticastGroupPayload = {
      identifier: RequestId;
      IPAddress: string;
    };
    export type directUDPSocketLeftMulticastGroupPayload = {
      identifier: RequestId;
      IPAddress: string;
    };
    /**
     * Fired upon direct_socket.UDPSocket creation.
     */
    export type directUDPSocketCreatedPayload = {
      identifier: RequestId;
      options: DirectUDPSocketOptions;
      timestamp: MonotonicTime;
      initiator?: Initiator;
    };
    /**
     * Fired when direct_socket.UDPSocket connection is opened.
     */
    export type directUDPSocketOpenedPayload = {
      identifier: RequestId;
      localAddr: string;
      /**
       * Expected to be unsigned integer.
       */
      localPort: number;
      timestamp: MonotonicTime;
      remoteAddr?: string;
      /**
       * Expected to be unsigned integer.
       */
      remotePort?: number;
    };
    /**
     * Fired when direct_socket.UDPSocket is aborted.
     */
    export type directUDPSocketAbortedPayload = {
      identifier: RequestId;
      errorMessage: string;
      timestamp: MonotonicTime;
    };
    /**
     * Fired when direct_socket.UDPSocket is closed.
     */
    export type directUDPSocketClosedPayload = {
      identifier: RequestId;
      timestamp: MonotonicTime;
    };
    /**
     * Fired when message is sent to udp direct socket stream.
     */
    export type directUDPSocketChunkSentPayload = {
      identifier: RequestId;
      message: DirectUDPMessage;
      timestamp: MonotonicTime;
    };
    /**
     * Fired when message is received from udp direct socket stream.
     */
    export type directUDPSocketChunkReceivedPayload = {
      identifier: RequestId;
      message: DirectUDPMessage;
      timestamp: MonotonicTime;
    };
    /**
     * Fired when additional information about a requestWillBeSent event is available from the
network stack. Not every requestWillBeSent event will have an additional
requestWillBeSentExtraInfo fired for it, and there is no guarantee whether requestWillBeSent
or requestWillBeSentExtraInfo will be fired first for the same request.
     */
    export type requestWillBeSentExtraInfoPayload = {
      /**
       * Request identifier. Used to match this information to an existing requestWillBeSent event.
       */
      requestId: RequestId;
      /**
       * A list of cookies potentially associated to the requested URL. This includes both cookies sent with
the request and the ones not sent; the latter are distinguished by having blockedReasons field set.
       */
      associatedCookies: AssociatedCookie[];
      /**
       * Raw request headers as they will be sent over the wire.
       */
      headers: Headers;
      /**
       * Connection timing information for the request.
       */
      connectTiming: ConnectTiming;
      /**
       * How the request site's device bound sessions were used during this request.
       */
      deviceBoundSessionUsages?: DeviceBoundSessionWithUsage[];
      /**
       * The client security state set for the request.
       */
      clientSecurityState?: ClientSecurityState;
      /**
       * Whether the site has partitioned cookies stored in a partition different than the current one.
       */
      siteHasCookieInOtherPartition?: boolean;
      /**
       * The network conditions id if this request was affected by network conditions configured via
emulateNetworkConditionsByRule.
       */
      appliedNetworkConditionsId?: string;
    };
    /**
     * Fired when additional information about a responseReceived event is available from the network
stack. Not every responseReceived event will have an additional responseReceivedExtraInfo for
it, and responseReceivedExtraInfo may be fired before or after responseReceived.
     */
    export type responseReceivedExtraInfoPayload = {
      /**
       * Request identifier. Used to match this information to another responseReceived event.
       */
      requestId: RequestId;
      /**
       * A list of cookies which were not stored from the response along with the corresponding
reasons for blocking. The cookies here may not be valid due to syntax errors, which
are represented by the invalid cookie line string instead of a proper cookie.
       */
      blockedCookies: BlockedSetCookieWithReason[];
      /**
       * Raw response headers as they were received over the wire.
Duplicate headers in the response are represented as a single key with their values
concatentated using `\n` as the separator.
See also `headersText` that contains verbatim text for HTTP/1.*.
       */
      headers: Headers;
      /**
       * The IP address space of the resource. The address space can only be determined once the transport
established the connection, so we can't send it in `requestWillBeSentExtraInfo`.
       */
      resourceIPAddressSpace: IPAddressSpace;
      /**
       * The status code of the response. This is useful in cases the request failed and no responseReceived
event is triggered, which is the case for, e.g., CORS errors. This is also the correct status code
for cached requests, where the status in responseReceived is a 200 and this will be 304.
       */
      statusCode: number;
      /**
       * Raw response header text as it was received over the wire. The raw text may not always be
available, such as in the case of HTTP/2 or QUIC.
       */
      headersText?: string;
      /**
       * The cookie partition key that will be used to store partitioned cookies set in this response.
Only sent when partitioned cookies are enabled.
       */
      cookiePartitionKey?: CookiePartitionKey;
      /**
       * True if partitioned cookies are enabled, but the partition key is not serializable to string.
       */
      cookiePartitionKeyOpaque?: boolean;
      /**
       * A list of cookies which should have been blocked by 3PCD but are exempted and stored from
the response with the corresponding reason.
       */
      exemptedCookies?: ExemptedSetCookieWithReason[];
    };
    /**
     * Fired when 103 Early Hints headers is received in addition to the common response.
Not every responseReceived event will have an responseReceivedEarlyHints fired.
Only one responseReceivedEarlyHints may be fired for eached responseReceived event.
     */
    export type responseReceivedEarlyHintsPayload = {
      /**
       * Request identifier. Used to match this information to another responseReceived event.
       */
      requestId: RequestId;
      /**
       * Raw response headers as they were received over the wire.
Duplicate headers in the response are represented as a single key with their values
concatentated using `\n` as the separator.
See also `headersText` that contains verbatim text for HTTP/1.*.
       */
      headers: Headers;
    };
    /**
     * Fired exactly once for each Trust Token operation. Depending on
the type of the operation and whether the operation succeeded or
failed, the event is fired before the corresponding request was sent
or after the response was received.
     */
    export type trustTokenOperationDonePayload = {
      /**
       * Detailed success or error status of the operation.
'AlreadyExists' also signifies a successful operation, as the result
of the operation already exists und thus, the operation was abort
preemptively (e.g. a cache hit).
       */
      status: "Ok" | "InvalidArgument" | "MissingIssuerKeys" | "FailedPrecondition" | "ResourceExhausted" | "AlreadyExists" | "ResourceLimited" | "Unauthorized" | "BadResponse" | "InternalError" | "UnknownError" | "FulfilledLocally" | "SiteIssuerLimit";
      type: TrustTokenOperationType;
      requestId: RequestId;
      /**
       * Top level origin. The context in which the operation was attempted.
       */
      topLevelOrigin?: string;
      /**
       * Origin of the issuer in case of a "Issuance" or "Redemption" operation.
       */
      issuerOrigin?: string;
      /**
       * The number of obtained Trust Tokens on a successful "Issuance" operation.
       */
      issuedTokenCount?: number;
    };
    /**
     * Fired once security policy has been updated.
     */
    export type policyUpdatedPayload = void;
    /**
     * Is sent whenever a new report is added.
And after 'enableReportingApi' for all existing reports.
     */
    export type reportingApiReportAddedPayload = {
      report: ReportingApiReport;
    };
    export type reportingApiReportUpdatedPayload = {
      report: ReportingApiReport;
    };
    export type reportingApiEndpointsChangedForOriginPayload = {
      /**
       * Origin of the document(s) which configured the endpoints.
       */
      origin: string;
      endpoints: ReportingApiEndpoint[];
    };
    /**
     * Triggered when the initial set of device bound sessions is added.
     */
    export type deviceBoundSessionsAddedPayload = {
      /**
       * The device bound sessions.
       */
      sessions: DeviceBoundSession[];
    };
    /**
     * Triggered when a device bound session event occurs.
     */
    export type deviceBoundSessionEventOccurredPayload = {
      /**
       * A unique identifier for this session event.
       */
      eventId: DeviceBoundSessionEventId;
      /**
       * The site this session event is associated with.
       */
      site: string;
      /**
       * Whether this event was considered successful.
       */
      succeeded: boolean;
      /**
       * The session ID this event is associated with. May not be populated for
failed events.
       */
      sessionId?: string;
      /**
       * The below are the different session event type details. Exactly one is populated.
       */
      creationEventDetails?: CreationEventDetails;
      refreshEventDetails?: RefreshEventDetails;
      terminationEventDetails?: TerminationEventDetails;
      challengeEventDetails?: ChallengeEventDetails;
    };
    /**
     * Sets a list of content encodings that will be accepted. Empty list means no encoding is accepted.
     */
    export type setAcceptedEncodingsParameters = {
      /**
       * List of accepted content encodings.
       */
      encodings: ContentEncoding[];
    };
    export type setAcceptedEncodingsReturnValue = {};
    /**
     * Clears accepted encodings set by setAcceptedEncodings
     */
    export type clearAcceptedEncodingsOverrideParameters = {};
    export type clearAcceptedEncodingsOverrideReturnValue = {};
    /**
     * Tells whether clearing browser cache is supported.
     */
    export type canClearBrowserCacheParameters = {};
    export type canClearBrowserCacheReturnValue = {
      /**
       * True if browser cache can be cleared.
       */
      result: boolean;
    };
    /**
     * Tells whether clearing browser cookies is supported.
     */
    export type canClearBrowserCookiesParameters = {};
    export type canClearBrowserCookiesReturnValue = {
      /**
       * True if browser cookies can be cleared.
       */
      result: boolean;
    };
    /**
     * Tells whether emulation of network conditions is supported.
     */
    export type canEmulateNetworkConditionsParameters = {};
    export type canEmulateNetworkConditionsReturnValue = {
      /**
       * True if emulation of network conditions is supported.
       */
      result: boolean;
    };
    /**
     * Clears browser cache.
     */
    export type clearBrowserCacheParameters = {};
    export type clearBrowserCacheReturnValue = {};
    /**
     * Clears browser cookies.
     */
    export type clearBrowserCookiesParameters = {};
    export type clearBrowserCookiesReturnValue = {};
    /**
     * Response to Network.requestIntercepted which either modifies the request to continue with any
modifications, or blocks it, or completes it with the provided response bytes. If a network
fetch occurs as a result which encounters a redirect an additional Network.requestIntercepted
event will be sent with the same InterceptionId.
Deprecated, use Fetch.continueRequest, Fetch.fulfillRequest and Fetch.failRequest instead.
     */
    export type continueInterceptedRequestParameters = {
      interceptionId: InterceptionId;
      /**
       * If set this causes the request to fail with the given reason. Passing `Aborted` for requests
marked with `isNavigationRequest` also cancels the navigation. Must not be set in response
to an authChallenge.
       */
      errorReason?: ErrorReason;
      /**
       * If set the requests completes using with the provided base64 encoded raw response, including
HTTP status line and headers etc... Must not be set in response to an authChallenge.
       */
      rawResponse?: binary;
      /**
       * If set the request url will be modified in a way that's not observable by page. Must not be
set in response to an authChallenge.
       */
      url?: string;
      /**
       * If set this allows the request method to be overridden. Must not be set in response to an
authChallenge.
       */
      method?: string;
      /**
       * If set this allows postData to be set. Must not be set in response to an authChallenge.
       */
      postData?: string;
      /**
       * If set this allows the request headers to be changed. Must not be set in response to an
authChallenge.
       */
      headers?: Headers;
      /**
       * Response to a requestIntercepted with an authChallenge. Must not be set otherwise.
       */
      authChallengeResponse?: AuthChallengeResponse;
    };
    export type continueInterceptedRequestReturnValue = {};
    /**
     * Deletes browser cookies with matching name and url or domain/path/partitionKey pair.
     */
    export type deleteCookiesParameters = {
      /**
       * Name of the cookies to remove.
       */
      name: string;
      /**
       * If specified, deletes all the cookies with the given name where domain and path match
provided URL.
       */
      url?: string;
      /**
       * If specified, deletes only cookies with the exact domain.
       */
      domain?: string;
      /**
       * If specified, deletes only cookies with the exact path.
       */
      path?: string;
      /**
       * If specified, deletes only cookies with the the given name and partitionKey where
all partition key attributes match the cookie partition key attribute.
       */
      partitionKey?: CookiePartitionKey;
    };
    export type deleteCookiesReturnValue = {};
    /**
     * Disables network tracking, prevents network events from being sent to the client.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Activates emulation of network conditions. This command is deprecated in favor of the emulateNetworkConditionsByRule
and overrideNetworkState commands, which can be used together to the same effect.
     */
    export type emulateNetworkConditionsParameters = {
      /**
       * True to emulate internet disconnection.
       */
      offline: boolean;
      /**
       * Minimum latency from request sent to response headers received (ms).
       */
      latency: number;
      /**
       * Maximal aggregated download throughput (bytes/sec). -1 disables download throttling.
       */
      downloadThroughput: number;
      /**
       * Maximal aggregated upload throughput (bytes/sec).  -1 disables upload throttling.
       */
      uploadThroughput: number;
      /**
       * Connection type if known.
       */
      connectionType?: ConnectionType;
      /**
       * WebRTC packet loss (percent, 0-100). 0 disables packet loss emulation, 100 drops all the packets.
       */
      packetLoss?: number;
      /**
       * WebRTC packet queue length (packet). 0 removes any queue length limitations.
       */
      packetQueueLength?: number;
      /**
       * WebRTC packetReordering feature.
       */
      packetReordering?: boolean;
    };
    export type emulateNetworkConditionsReturnValue = {};
    /**
     * Activates emulation of network conditions for individual requests using URL match patterns. Unlike the deprecated
Network.emulateNetworkConditions this method does not affect `navigator` state. Use Network.overrideNetworkState to
explicitly modify `navigator` behavior.
     */
    export type emulateNetworkConditionsByRuleParameters = {
      /**
       * True to emulate internet disconnection. Deprecated, use the offline property in matchedNetworkConditions
or emulateOfflineServiceWorker instead.
       */
      offline?: boolean;
      /**
       * True to emulate offline service worker.
       */
      emulateOfflineServiceWorker?: boolean;
      /**
       * Configure conditions for matching requests. If multiple entries match a request, the first entry wins.  Global
conditions can be configured by leaving the urlPattern for the conditions empty. These global conditions are
also applied for throttling of p2p connections.
       */
      matchedNetworkConditions: NetworkConditions[];
    };
    export type emulateNetworkConditionsByRuleReturnValue = {
      /**
       * An id for each entry in matchedNetworkConditions. The id will be included in the requestWillBeSentExtraInfo for
requests affected by a rule.
       */
      ruleIds: string[];
    };
    /**
     * Override the state of navigator.onLine and navigator.connection.
     */
    export type overrideNetworkStateParameters = {
      /**
       * True to emulate internet disconnection.
       */
      offline: boolean;
      /**
       * Minimum latency from request sent to response headers received (ms).
       */
      latency: number;
      /**
       * Maximal aggregated download throughput (bytes/sec). -1 disables download throttling.
       */
      downloadThroughput: number;
      /**
       * Maximal aggregated upload throughput (bytes/sec).  -1 disables upload throttling.
       */
      uploadThroughput: number;
      /**
       * Connection type if known.
       */
      connectionType?: ConnectionType;
    };
    export type overrideNetworkStateReturnValue = {};
    /**
     * Enables network tracking, network events will now be delivered to the client.
     */
    export type enableParameters = {
      /**
       * Buffer size in bytes to use when preserving network payloads (XHRs, etc).
This is the maximum number of bytes that will be collected by this
DevTools session.
       */
      maxTotalBufferSize?: number;
      /**
       * Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).
       */
      maxResourceBufferSize?: number;
      /**
       * Longest post body size (in bytes) that would be included in requestWillBeSent notification
       */
      maxPostDataSize?: number;
      /**
       * Whether DirectSocket chunk send/receive events should be reported.
       */
      reportDirectSocketTraffic?: boolean;
      /**
       * Enable storing response bodies outside of renderer, so that these survive
a cross-process navigation. Requires maxTotalBufferSize to be set.
Currently defaults to false. This field is being deprecated in favor of the dedicated
configureDurableMessages command, due to the possibility of deadlocks when awaiting
Network.enable before issuing Runtime.runIfWaitingForDebugger.
       */
      enableDurableMessages?: boolean;
    };
    export type enableReturnValue = {};
    /**
     * Configures storing response bodies outside of renderer, so that these survive
a cross-process navigation.
If maxTotalBufferSize is not set, durable messages are disabled.
     */
    export type configureDurableMessagesParameters = {
      /**
       * Buffer size in bytes to use when preserving network payloads (XHRs, etc).
       */
      maxTotalBufferSize?: number;
      /**
       * Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).
       */
      maxResourceBufferSize?: number;
    };
    export type configureDurableMessagesReturnValue = {};
    /**
     * Returns all browser cookies. Depending on the backend support, will return detailed cookie
information in the `cookies` field.
Deprecated. Use Storage.getCookies instead.
     */
    export type getAllCookiesParameters = {};
    export type getAllCookiesReturnValue = {
      /**
       * Array of cookie objects.
       */
      cookies: Cookie[];
    };
    /**
     * Returns the DER-encoded certificate.
     */
    export type getCertificateParameters = {
      /**
       * Origin to get certificate for.
       */
      origin: string;
    };
    export type getCertificateReturnValue = {
      tableNames: string[];
    };
    /**
     * Returns all browser cookies for the current URL. Depending on the backend support, will return
detailed cookie information in the `cookies` field.
     */
    export type getCookiesParameters = {
      /**
       * The list of URLs for which applicable cookies will be fetched.
If not specified, it's assumed to be set to the list containing
the URLs of the page and all of its subframes.
       */
      urls?: string[];
    };
    export type getCookiesReturnValue = {
      /**
       * Array of cookie objects.
       */
      cookies: Cookie[];
    };
    /**
     * Returns content served for the given request.
     */
    export type getResponseBodyParameters = {
      /**
       * Identifier of the network request to get content for.
       */
      requestId: RequestId;
    };
    export type getResponseBodyReturnValue = {
      /**
       * Response body.
       */
      body: string;
      /**
       * True, if content was sent as base64.
       */
      base64Encoded: boolean;
    };
    /**
     * Returns post data sent with the request. Returns an error when no data was sent with the request.
     */
    export type getRequestPostDataParameters = {
      /**
       * Identifier of the network request to get content for.
       */
      requestId: RequestId;
    };
    export type getRequestPostDataReturnValue = {
      /**
       * Request body string, omitting files from multipart requests
       */
      postData: string;
      /**
       * True, if content was sent as base64.
       */
      base64Encoded: boolean;
    };
    /**
     * Returns content served for the given currently intercepted request.
     */
    export type getResponseBodyForInterceptionParameters = {
      /**
       * Identifier for the intercepted request to get body for.
       */
      interceptionId: InterceptionId;
    };
    export type getResponseBodyForInterceptionReturnValue = {
      /**
       * Response body.
       */
      body: string;
      /**
       * True, if content was sent as base64.
       */
      base64Encoded: boolean;
    };
    /**
     * Returns a handle to the stream representing the response body. Note that after this command,
the intercepted request can't be continued as is -- you either need to cancel it or to provide
the response body. The stream only supports sequential read, IO.read will fail if the position
is specified.
     */
    export type takeResponseBodyForInterceptionAsStreamParameters = {
      interceptionId: InterceptionId;
    };
    export type takeResponseBodyForInterceptionAsStreamReturnValue = {
      stream: IO.StreamHandle;
    };
    /**
     * This method sends a new XMLHttpRequest which is identical to the original one. The following
parameters should be identical: method, url, async, request body, extra headers, withCredentials
attribute, user, password.
     */
    export type replayXHRParameters = {
      /**
       * Identifier of XHR to replay.
       */
      requestId: RequestId;
    };
    export type replayXHRReturnValue = {};
    /**
     * Searches for given string in response content.
     */
    export type searchInResponseBodyParameters = {
      /**
       * Identifier of the network response to search.
       */
      requestId: RequestId;
      /**
       * String to search for.
       */
      query: string;
      /**
       * If true, search is case sensitive.
       */
      caseSensitive?: boolean;
      /**
       * If true, treats string parameter as regex.
       */
      isRegex?: boolean;
    };
    export type searchInResponseBodyReturnValue = {
      /**
       * List of search matches.
       */
      result: Debugger.SearchMatch[];
    };
    /**
     * Blocks URLs from loading.
     */
    export type setBlockedURLsParameters = {
      /**
       * Patterns to match in the order in which they are given. These patterns
also take precedence over any wildcard patterns defined in `urls`.
       */
      urlPatterns?: BlockPattern[];
      /**
       * URL patterns to block. Wildcards ('*') are allowed.
       */
      urls?: string[];
    };
    export type setBlockedURLsReturnValue = {};
    /**
     * Toggles ignoring of service worker for each request.
     */
    export type setBypassServiceWorkerParameters = {
      /**
       * Bypass service worker and load from network.
       */
      bypass: boolean;
    };
    export type setBypassServiceWorkerReturnValue = {};
    /**
     * Toggles ignoring cache for each request. If `true`, cache will not be used.
     */
    export type setCacheDisabledParameters = {
      /**
       * Cache disabled state.
       */
      cacheDisabled: boolean;
    };
    export type setCacheDisabledReturnValue = {};
    /**
     * Sets a cookie with the given cookie data; may overwrite equivalent cookies if they exist.
     */
    export type setCookieParameters = {
      /**
       * Cookie name.
       */
      name: string;
      /**
       * Cookie value.
       */
      value: string;
      /**
       * The request-URI to associate with the setting of the cookie. This value can affect the
default domain, path, source port, and source scheme values of the created cookie.
       */
      url?: string;
      /**
       * Cookie domain.
       */
      domain?: string;
      /**
       * Cookie path.
       */
      path?: string;
      /**
       * True if cookie is secure.
       */
      secure?: boolean;
      /**
       * True if cookie is http-only.
       */
      httpOnly?: boolean;
      /**
       * Cookie SameSite type.
       */
      sameSite?: CookieSameSite;
      /**
       * Cookie expiration date, session cookie if not set
       */
      expires?: TimeSinceEpoch;
      /**
       * Cookie Priority type.
       */
      priority?: CookiePriority;
      /**
       * Cookie source scheme type.
       */
      sourceScheme?: CookieSourceScheme;
      /**
       * Cookie source port. Valid values are {-1, [1, 65535]}, -1 indicates an unspecified port.
An unspecified port value allows protocol clients to emulate legacy cookie scope for the port.
This is a temporary ability and it will be removed in the future.
       */
      sourcePort?: number;
      /**
       * Cookie partition key. If not set, the cookie will be set as not partitioned.
       */
      partitionKey?: CookiePartitionKey;
    };
    export type setCookieReturnValue = {
      /**
       * Always set to true. If an error occurs, the response indicates protocol error.
       */
      success: boolean;
    };
    /**
     * Sets given cookies.
     */
    export type setCookiesParameters = {
      /**
       * Cookies to be set.
       */
      cookies: CookieParam[];
    };
    export type setCookiesReturnValue = {};
    /**
     * Specifies whether to always send extra HTTP headers with the requests from this page.
     */
    export type setExtraHTTPHeadersParameters = {
      /**
       * Map with extra HTTP headers.
       */
      headers: Headers;
    };
    export type setExtraHTTPHeadersReturnValue = {};
    /**
     * Specifies whether to attach a page script stack id in requests
     */
    export type setAttachDebugStackParameters = {
      /**
       * Whether to attach a page script stack for debugging purpose.
       */
      enabled: boolean;
    };
    export type setAttachDebugStackReturnValue = {};
    /**
     * Sets the requests to intercept that match the provided patterns and optionally resource types.
Deprecated, please use Fetch.enable instead.
     */
    export type setRequestInterceptionParameters = {
      /**
       * Requests matching any of these patterns will be forwarded and wait for the corresponding
continueInterceptedRequest call.
       */
      patterns: RequestPattern[];
    };
    export type setRequestInterceptionReturnValue = {};
    /**
     * Allows overriding user agent with the given string.
     */
    export type setUserAgentOverrideParameters = {
      /**
       * User agent to use.
       */
      userAgent: string;
      /**
       * Browser language to emulate.
       */
      acceptLanguage?: string;
      /**
       * The platform navigator.platform should return.
       */
      platform?: string;
      /**
       * To be sent in Sec-CH-UA-* headers and returned in navigator.userAgentData
       */
      userAgentMetadata?: Emulation.UserAgentMetadata;
    };
    export type setUserAgentOverrideReturnValue = {};
    /**
     * Enables streaming of the response for the given requestId.
If enabled, the dataReceived event contains the data that was received during streaming.
     */
    export type streamResourceContentParameters = {
      /**
       * Identifier of the request to stream.
       */
      requestId: RequestId;
    };
    export type streamResourceContentReturnValue = {
      /**
       * Data that has been buffered until streaming is enabled.
       */
      bufferedData: binary;
    };
    /**
     * Returns information about the COEP/COOP isolation status.
     */
    export type getSecurityIsolationStatusParameters = {
      /**
       * If no frameId is provided, the status of the target is provided.
       */
      frameId?: Page.FrameId;
    };
    export type getSecurityIsolationStatusReturnValue = {
      status: SecurityIsolationStatus;
    };
    /**
     * Enables tracking for the Reporting API, events generated by the Reporting API will now be delivered to the client.
Enabling triggers 'reportingApiReportAdded' for all existing reports.
     */
    export type enableReportingApiParameters = {
      /**
       * Whether to enable or disable events for the Reporting API
       */
      enable: boolean;
    };
    export type enableReportingApiReturnValue = {};
    /**
     * Sets up tracking device bound sessions and fetching of initial set of sessions.
     */
    export type enableDeviceBoundSessionsParameters = {
      /**
       * Whether to enable or disable events.
       */
      enable: boolean;
    };
    export type enableDeviceBoundSessionsReturnValue = {};
    /**
     * Deletes a device bound session.
     */
    export type deleteDeviceBoundSessionParameters = {
      key: DeviceBoundSessionKey;
    };
    export type deleteDeviceBoundSessionReturnValue = {};
    /**
     * Fetches the schemeful site for a specific origin.
     */
    export type fetchSchemefulSiteParameters = {
      /**
       * The URL origin.
       */
      origin: string;
    };
    export type fetchSchemefulSiteReturnValue = {
      /**
       * The corresponding schemeful site.
       */
      schemefulSite: string;
    };
    /**
     * Fetches the resource and returns the content.
     */
    export type loadNetworkResourceParameters = {
      /**
       * Frame id to get the resource for. Mandatory for frame targets, and
should be omitted for worker targets.
       */
      frameId?: Page.FrameId;
      /**
       * URL of the resource to get content for.
       */
      url: string;
      /**
       * Options for the request.
       */
      options: LoadNetworkResourceOptions;
    };
    export type loadNetworkResourceReturnValue = {
      resource: LoadNetworkResourcePageResult;
    };
    /**
     * Sets Controls for third-party cookie access
Page reload is required before the new cookie behavior will be observed
     */
    export type setCookieControlsParameters = {
      /**
       * Whether 3pc restriction is enabled.
       */
      enableThirdPartyCookieRestriction: boolean;
    };
    export type setCookieControlsReturnValue = {};
  }
  /**
   * This domain provides various functionality related to drawing atop the inspected page.
   */
  export namespace Overlay {
    /**
     * Configuration data for drawing the source order of an elements children.
     */
    export interface SourceOrderConfig {
      /**
       * the color to outline the given element in.
       */
      parentOutlineColor: DOM.RGBA;
      /**
       * the color to outline the child elements in.
       */
      childOutlineColor: DOM.RGBA;
    }
    /**
     * Configuration data for the highlighting of Grid elements.
     */
    export interface GridHighlightConfig {
      /**
       * Whether the extension lines from grid cells to the rulers should be shown (default: false).
       */
      showGridExtensionLines?: boolean;
      /**
       * Show Positive line number labels (default: false).
       */
      showPositiveLineNumbers?: boolean;
      /**
       * Show Negative line number labels (default: false).
       */
      showNegativeLineNumbers?: boolean;
      /**
       * Show area name labels (default: false).
       */
      showAreaNames?: boolean;
      /**
       * Show line name labels (default: false).
       */
      showLineNames?: boolean;
      /**
       * Show track size labels (default: false).
       */
      showTrackSizes?: boolean;
      /**
       * The grid container border highlight color (default: transparent).
       */
      gridBorderColor?: DOM.RGBA;
      /**
       * The cell border color (default: transparent). Deprecated, please use rowLineColor and columnLineColor instead.
       */
      cellBorderColor?: DOM.RGBA;
      /**
       * The row line color (default: transparent).
       */
      rowLineColor?: DOM.RGBA;
      /**
       * The column line color (default: transparent).
       */
      columnLineColor?: DOM.RGBA;
      /**
       * Whether the grid border is dashed (default: false).
       */
      gridBorderDash?: boolean;
      /**
       * Whether the cell border is dashed (default: false). Deprecated, please us rowLineDash and columnLineDash instead.
       */
      cellBorderDash?: boolean;
      /**
       * Whether row lines are dashed (default: false).
       */
      rowLineDash?: boolean;
      /**
       * Whether column lines are dashed (default: false).
       */
      columnLineDash?: boolean;
      /**
       * The row gap highlight fill color (default: transparent).
       */
      rowGapColor?: DOM.RGBA;
      /**
       * The row gap hatching fill color (default: transparent).
       */
      rowHatchColor?: DOM.RGBA;
      /**
       * The column gap highlight fill color (default: transparent).
       */
      columnGapColor?: DOM.RGBA;
      /**
       * The column gap hatching fill color (default: transparent).
       */
      columnHatchColor?: DOM.RGBA;
      /**
       * The named grid areas border color (Default: transparent).
       */
      areaBorderColor?: DOM.RGBA;
      /**
       * The grid container background color (Default: transparent).
       */
      gridBackgroundColor?: DOM.RGBA;
    }
    /**
     * Configuration data for the highlighting of Flex container elements.
     */
    export interface FlexContainerHighlightConfig {
      /**
       * The style of the container border
       */
      containerBorder?: LineStyle;
      /**
       * The style of the separator between lines
       */
      lineSeparator?: LineStyle;
      /**
       * The style of the separator between items
       */
      itemSeparator?: LineStyle;
      /**
       * Style of content-distribution space on the main axis (justify-content).
       */
      mainDistributedSpace?: BoxStyle;
      /**
       * Style of content-distribution space on the cross axis (align-content).
       */
      crossDistributedSpace?: BoxStyle;
      /**
       * Style of empty space caused by row gaps (gap/row-gap).
       */
      rowGapSpace?: BoxStyle;
      /**
       * Style of empty space caused by columns gaps (gap/column-gap).
       */
      columnGapSpace?: BoxStyle;
      /**
       * Style of the self-alignment line (align-items).
       */
      crossAlignment?: LineStyle;
    }
    /**
     * Configuration data for the highlighting of Flex item elements.
     */
    export interface FlexItemHighlightConfig {
      /**
       * Style of the box representing the item's base size
       */
      baseSizeBox?: BoxStyle;
      /**
       * Style of the border around the box representing the item's base size
       */
      baseSizeBorder?: LineStyle;
      /**
       * Style of the arrow representing if the item grew or shrank
       */
      flexibilityArrow?: LineStyle;
    }
    /**
     * Style information for drawing a line.
     */
    export interface LineStyle {
      /**
       * The color of the line (default: transparent)
       */
      color?: DOM.RGBA;
      /**
       * The line pattern (default: solid)
       */
      pattern?: "dashed" | "dotted";
    }
    /**
     * Style information for drawing a box.
     */
    export interface BoxStyle {
      /**
       * The background color for the box (default: transparent)
       */
      fillColor?: DOM.RGBA;
      /**
       * The hatching color for the box (default: transparent)
       */
      hatchColor?: DOM.RGBA;
    }
    export type ContrastAlgorithm = "aa" | "aaa" | "apca";
    /**
     * Configuration data for the highlighting of page elements.
     */
    export interface HighlightConfig {
      /**
       * Whether the node info tooltip should be shown (default: false).
       */
      showInfo?: boolean;
      /**
       * Whether the node styles in the tooltip (default: false).
       */
      showStyles?: boolean;
      /**
       * Whether the rulers should be shown (default: false).
       */
      showRulers?: boolean;
      /**
       * Whether the a11y info should be shown (default: true).
       */
      showAccessibilityInfo?: boolean;
      /**
       * Whether the extension lines from node to the rulers should be shown (default: false).
       */
      showExtensionLines?: boolean;
      /**
       * The content box highlight fill color (default: transparent).
       */
      contentColor?: DOM.RGBA;
      /**
       * The padding highlight fill color (default: transparent).
       */
      paddingColor?: DOM.RGBA;
      /**
       * The border highlight fill color (default: transparent).
       */
      borderColor?: DOM.RGBA;
      /**
       * The margin highlight fill color (default: transparent).
       */
      marginColor?: DOM.RGBA;
      /**
       * The event target element highlight fill color (default: transparent).
       */
      eventTargetColor?: DOM.RGBA;
      /**
       * The shape outside fill color (default: transparent).
       */
      shapeColor?: DOM.RGBA;
      /**
       * The shape margin fill color (default: transparent).
       */
      shapeMarginColor?: DOM.RGBA;
      /**
       * The grid layout color (default: transparent).
       */
      cssGridColor?: DOM.RGBA;
      /**
       * The color format used to format color styles (default: hex).
       */
      colorFormat?: ColorFormat;
      /**
       * The grid layout highlight configuration (default: all transparent).
       */
      gridHighlightConfig?: GridHighlightConfig;
      /**
       * The flex container highlight configuration (default: all transparent).
       */
      flexContainerHighlightConfig?: FlexContainerHighlightConfig;
      /**
       * The flex item highlight configuration (default: all transparent).
       */
      flexItemHighlightConfig?: FlexItemHighlightConfig;
      /**
       * The contrast algorithm to use for the contrast ratio (default: aa).
       */
      contrastAlgorithm?: ContrastAlgorithm;
      /**
       * The container query container highlight configuration (default: all transparent).
       */
      containerQueryContainerHighlightConfig?: ContainerQueryContainerHighlightConfig;
    }
    export type ColorFormat = "rgb" | "hsl" | "hwb" | "hex";
    /**
     * Configurations for Persistent Grid Highlight
     */
    export interface GridNodeHighlightConfig {
      /**
       * A descriptor for the highlight appearance.
       */
      gridHighlightConfig: GridHighlightConfig;
      /**
       * Identifier of the node to highlight.
       */
      nodeId: DOM.NodeId;
    }
    export interface FlexNodeHighlightConfig {
      /**
       * A descriptor for the highlight appearance of flex containers.
       */
      flexContainerHighlightConfig: FlexContainerHighlightConfig;
      /**
       * Identifier of the node to highlight.
       */
      nodeId: DOM.NodeId;
    }
    export interface ScrollSnapContainerHighlightConfig {
      /**
       * The style of the snapport border (default: transparent)
       */
      snapportBorder?: LineStyle;
      /**
       * The style of the snap area border (default: transparent)
       */
      snapAreaBorder?: LineStyle;
      /**
       * The margin highlight fill color (default: transparent).
       */
      scrollMarginColor?: DOM.RGBA;
      /**
       * The padding highlight fill color (default: transparent).
       */
      scrollPaddingColor?: DOM.RGBA;
    }
    export interface ScrollSnapHighlightConfig {
      /**
       * A descriptor for the highlight appearance of scroll snap containers.
       */
      scrollSnapContainerHighlightConfig: ScrollSnapContainerHighlightConfig;
      /**
       * Identifier of the node to highlight.
       */
      nodeId: DOM.NodeId;
    }
    /**
     * Configuration for dual screen hinge
     */
    export interface HingeConfig {
      /**
       * A rectangle represent hinge
       */
      rect: DOM.Rect;
      /**
       * The content box highlight fill color (default: a dark color).
       */
      contentColor?: DOM.RGBA;
      /**
       * The content box highlight outline color (default: transparent).
       */
      outlineColor?: DOM.RGBA;
    }
    /**
     * Configuration for Window Controls Overlay
     */
    export interface WindowControlsOverlayConfig {
      /**
       * Whether the title bar CSS should be shown when emulating the Window Controls Overlay.
       */
      showCSS: boolean;
      /**
       * Selected platforms to show the overlay.
       */
      selectedPlatform: string;
      /**
       * The theme color defined in app manifest.
       */
      themeColor: string;
    }
    export interface ContainerQueryHighlightConfig {
      /**
       * A descriptor for the highlight appearance of container query containers.
       */
      containerQueryContainerHighlightConfig: ContainerQueryContainerHighlightConfig;
      /**
       * Identifier of the container node to highlight.
       */
      nodeId: DOM.NodeId;
    }
    export interface ContainerQueryContainerHighlightConfig {
      /**
       * The style of the container border.
       */
      containerBorder?: LineStyle;
      /**
       * The style of the descendants' borders.
       */
      descendantBorder?: LineStyle;
    }
    export interface IsolatedElementHighlightConfig {
      /**
       * A descriptor for the highlight appearance of an element in isolation mode.
       */
      isolationModeHighlightConfig: IsolationModeHighlightConfig;
      /**
       * Identifier of the isolated element to highlight.
       */
      nodeId: DOM.NodeId;
    }
    export interface IsolationModeHighlightConfig {
      /**
       * The fill color of the resizers (default: transparent).
       */
      resizerColor?: DOM.RGBA;
      /**
       * The fill color for resizer handles (default: transparent).
       */
      resizerHandleColor?: DOM.RGBA;
      /**
       * The fill color for the mask covering non-isolated elements (default: transparent).
       */
      maskColor?: DOM.RGBA;
    }
    export type InspectMode = "searchForNode" | "searchForUAShadowDOM" | "captureAreaScreenshot" | "none";
    export interface InspectedElementAnchorConfig {
      /**
       * Identifier of the node to highlight.
       */
      nodeId?: DOM.NodeId;
      /**
       * Identifier of the backend node to highlight.
       */
      backendNodeId?: DOM.BackendNodeId;
    }
    /**
     * Fired when the node should be inspected. This happens after call to `setInspectMode` or when
user manually inspects an element.
     */
    export type inspectNodeRequestedPayload = {
      /**
       * Id of the node to inspect.
       */
      backendNodeId: DOM.BackendNodeId;
    };
    /**
     * Fired when the node should be highlighted. This happens after call to `setInspectMode`.
     */
    export type nodeHighlightRequestedPayload = {
      nodeId: DOM.NodeId;
    };
    /**
     * Fired when user asks to capture screenshot of some area on the page.
     */
    export type screenshotRequestedPayload = {
      /**
       * Viewport to capture, in device independent pixels (dip).
       */
      viewport: Page.Viewport;
    };
    /**
     * Fired when user asks to show the Inspect panel.
     */
    export type inspectPanelShowRequestedPayload = {
      /**
       * Id of the node to show in the panel.
       */
      backendNodeId: DOM.BackendNodeId;
    };
    /**
     * Fired when user asks to restore the Inspected Element floating window.
     */
    export type inspectedElementWindowRestoredPayload = {
      /**
       * Id of the node to restore the floating window for.
       */
      backendNodeId: DOM.BackendNodeId;
    };
    /**
     * Fired when user cancels the inspect mode.
     */
    export type inspectModeCanceledPayload = void;
    /**
     * Disables domain notifications.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables domain notifications.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * For testing.
     */
    export type getHighlightObjectForTestParameters = {
      /**
       * Id of the node to get highlight object for.
       */
      nodeId: DOM.NodeId;
      /**
       * Whether to include distance info.
       */
      includeDistance?: boolean;
      /**
       * Whether to include style info.
       */
      includeStyle?: boolean;
      /**
       * The color format to get config with (default: hex).
       */
      colorFormat?: ColorFormat;
      /**
       * Whether to show accessibility info (default: true).
       */
      showAccessibilityInfo?: boolean;
    };
    export type getHighlightObjectForTestReturnValue = {
      /**
       * Highlight data for the node.
       */
      highlight: {
        [key: string]: string;
      };
    };
    /**
     * For Persistent Grid testing.
     */
    export type getGridHighlightObjectsForTestParameters = {
      /**
       * Ids of the node to get highlight object for.
       */
      nodeIds: DOM.NodeId[];
    };
    export type getGridHighlightObjectsForTestReturnValue = {
      /**
       * Grid Highlight data for the node ids provided.
       */
      highlights: {
        [key: string]: string;
      };
    };
    /**
     * For Source Order Viewer testing.
     */
    export type getSourceOrderHighlightObjectForTestParameters = {
      /**
       * Id of the node to highlight.
       */
      nodeId: DOM.NodeId;
    };
    export type getSourceOrderHighlightObjectForTestReturnValue = {
      /**
       * Source order highlight data for the node id provided.
       */
      highlight: {
        [key: string]: string;
      };
    };
    /**
     * Hides any highlight.
     */
    export type hideHighlightParameters = {};
    export type hideHighlightReturnValue = {};
    /**
     * Highlights owner element of the frame with given id.
Deprecated: Doesn't work reliably and cannot be fixed due to process
separation (the owner node might be in a different process). Determine
the owner node in the client and use highlightNode.
     */
    export type highlightFrameParameters = {
      /**
       * Identifier of the frame to highlight.
       */
      frameId: Page.FrameId;
      /**
       * The content box highlight fill color (default: transparent).
       */
      contentColor?: DOM.RGBA;
      /**
       * The content box highlight outline color (default: transparent).
       */
      contentOutlineColor?: DOM.RGBA;
    };
    export type highlightFrameReturnValue = {};
    /**
     * Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or
objectId must be specified.
     */
    export type highlightNodeParameters = {
      /**
       * A descriptor for the highlight appearance.
       */
      highlightConfig: HighlightConfig;
      /**
       * Identifier of the node to highlight.
       */
      nodeId?: DOM.NodeId;
      /**
       * Identifier of the backend node to highlight.
       */
      backendNodeId?: DOM.BackendNodeId;
      /**
       * JavaScript object id of the node to be highlighted.
       */
      objectId?: Runtime.RemoteObjectId;
      /**
       * Selectors to highlight relevant nodes.
       */
      selector?: string;
    };
    export type highlightNodeReturnValue = {};
    /**
     * Highlights given quad. Coordinates are absolute with respect to the main frame viewport.
     */
    export type highlightQuadParameters = {
      /**
       * Quad to highlight
       */
      quad: DOM.Quad;
      /**
       * The highlight fill color (default: transparent).
       */
      color?: DOM.RGBA;
      /**
       * The highlight outline color (default: transparent).
       */
      outlineColor?: DOM.RGBA;
    };
    export type highlightQuadReturnValue = {};
    /**
     * Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.
Issue: the method does not handle device pixel ratio (DPR) correctly.
The coordinates currently have to be adjusted by the client
if DPR is not 1 (see crbug.com/437807128).
     */
    export type highlightRectParameters = {
      /**
       * X coordinate
       */
      x: number;
      /**
       * Y coordinate
       */
      y: number;
      /**
       * Rectangle width
       */
      width: number;
      /**
       * Rectangle height
       */
      height: number;
      /**
       * The highlight fill color (default: transparent).
       */
      color?: DOM.RGBA;
      /**
       * The highlight outline color (default: transparent).
       */
      outlineColor?: DOM.RGBA;
    };
    export type highlightRectReturnValue = {};
    /**
     * Highlights the source order of the children of the DOM node with given id or with the given
JavaScript object wrapper. Either nodeId or objectId must be specified.
     */
    export type highlightSourceOrderParameters = {
      /**
       * A descriptor for the appearance of the overlay drawing.
       */
      sourceOrderConfig: SourceOrderConfig;
      /**
       * Identifier of the node to highlight.
       */
      nodeId?: DOM.NodeId;
      /**
       * Identifier of the backend node to highlight.
       */
      backendNodeId?: DOM.BackendNodeId;
      /**
       * JavaScript object id of the node to be highlighted.
       */
      objectId?: Runtime.RemoteObjectId;
    };
    export type highlightSourceOrderReturnValue = {};
    /**
     * Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted.
Backend then generates 'inspectNodeRequested' event upon element selection.
     */
    export type setInspectModeParameters = {
      /**
       * Set an inspection mode.
       */
      mode: InspectMode;
      /**
       * A descriptor for the highlight appearance of hovered-over nodes. May be omitted if `enabled
== false`.
       */
      highlightConfig?: HighlightConfig;
    };
    export type setInspectModeReturnValue = {};
    /**
     * Highlights owner element of all frames detected to be ads.
     */
    export type setShowAdHighlightsParameters = {
      /**
       * True for showing ad highlights
       */
      show: boolean;
    };
    export type setShowAdHighlightsReturnValue = {};
    export type setPausedInDebuggerMessageParameters = {
      /**
       * The message to display, also triggers resume and step over controls.
       */
      message?: string;
    };
    export type setPausedInDebuggerMessageReturnValue = {};
    /**
     * Requests that backend shows debug borders on layers
     */
    export type setShowDebugBordersParameters = {
      /**
       * True for showing debug borders
       */
      show: boolean;
    };
    export type setShowDebugBordersReturnValue = {};
    /**
     * Requests that backend shows the FPS counter
     */
    export type setShowFPSCounterParameters = {
      /**
       * True for showing the FPS counter
       */
      show: boolean;
    };
    export type setShowFPSCounterReturnValue = {};
    /**
     * Highlight multiple elements with the CSS Grid overlay.
     */
    export type setShowGridOverlaysParameters = {
      /**
       * An array of node identifiers and descriptors for the highlight appearance.
       */
      gridNodeHighlightConfigs: GridNodeHighlightConfig[];
    };
    export type setShowGridOverlaysReturnValue = {};
    export type setShowFlexOverlaysParameters = {
      /**
       * An array of node identifiers and descriptors for the highlight appearance.
       */
      flexNodeHighlightConfigs: FlexNodeHighlightConfig[];
    };
    export type setShowFlexOverlaysReturnValue = {};
    export type setShowScrollSnapOverlaysParameters = {
      /**
       * An array of node identifiers and descriptors for the highlight appearance.
       */
      scrollSnapHighlightConfigs: ScrollSnapHighlightConfig[];
    };
    export type setShowScrollSnapOverlaysReturnValue = {};
    export type setShowContainerQueryOverlaysParameters = {
      /**
       * An array of node identifiers and descriptors for the highlight appearance.
       */
      containerQueryHighlightConfigs: ContainerQueryHighlightConfig[];
    };
    export type setShowContainerQueryOverlaysReturnValue = {};
    export type setShowInspectedElementAnchorParameters = {
      /**
       * Node identifier for which to show an anchor for.
       */
      inspectedElementAnchorConfig: InspectedElementAnchorConfig;
    };
    export type setShowInspectedElementAnchorReturnValue = {};
    /**
     * Requests that backend shows paint rectangles
     */
    export type setShowPaintRectsParameters = {
      /**
       * True for showing paint rectangles
       */
      result: boolean;
    };
    export type setShowPaintRectsReturnValue = {};
    /**
     * Requests that backend shows layout shift regions
     */
    export type setShowLayoutShiftRegionsParameters = {
      /**
       * True for showing layout shift regions
       */
      result: boolean;
    };
    export type setShowLayoutShiftRegionsReturnValue = {};
    /**
     * Requests that backend shows scroll bottleneck rects
     */
    export type setShowScrollBottleneckRectsParameters = {
      /**
       * True for showing scroll bottleneck rects
       */
      show: boolean;
    };
    export type setShowScrollBottleneckRectsReturnValue = {};
    /**
     * Deprecated, no longer has any effect.
     */
    export type setShowHitTestBordersParameters = {
      /**
       * True for showing hit-test borders
       */
      show: boolean;
    };
    export type setShowHitTestBordersReturnValue = {};
    /**
     * Deprecated, no longer has any effect.
     */
    export type setShowWebVitalsParameters = {
      show: boolean;
    };
    export type setShowWebVitalsReturnValue = {};
    /**
     * Paints viewport size upon main frame resize.
     */
    export type setShowViewportSizeOnResizeParameters = {
      /**
       * Whether to paint size or not.
       */
      show: boolean;
    };
    export type setShowViewportSizeOnResizeReturnValue = {};
    /**
     * Add a dual screen device hinge
     */
    export type setShowHingeParameters = {
      /**
       * hinge data, null means hideHinge
       */
      hingeConfig?: HingeConfig;
    };
    export type setShowHingeReturnValue = {};
    /**
     * Show elements in isolation mode with overlays.
     */
    export type setShowIsolatedElementsParameters = {
      /**
       * An array of node identifiers and descriptors for the highlight appearance.
       */
      isolatedElementHighlightConfigs: IsolatedElementHighlightConfig[];
    };
    export type setShowIsolatedElementsReturnValue = {};
    /**
     * Show Window Controls Overlay for PWA
     */
    export type setShowWindowControlsOverlayParameters = {
      /**
       * Window Controls Overlay data, null means hide Window Controls Overlay
       */
      windowControlsOverlayConfig?: WindowControlsOverlayConfig;
    };
    export type setShowWindowControlsOverlayReturnValue = {};
  }
  /**
   * This domain allows interacting with the browser to control PWAs.
   */
  export namespace PWA {
    /**
     * The following types are the replica of
https://crsrc.org/c/chrome/browser/web_applications/proto/web_app_os_integration_state.proto;drc=9910d3be894c8f142c977ba1023f30a656bc13fc;l=67
     */
    export interface FileHandlerAccept {
      /**
       * New name of the mimetype according to
https://www.iana.org/assignments/media-types/media-types.xhtml
       */
      mediaType: string;
      fileExtensions: string[];
    }
    export interface FileHandler {
      action: string;
      accepts: FileHandlerAccept[];
      displayName: string;
    }
    /**
     * If user prefers opening the app in browser or an app window.
     */
    export type DisplayMode = "standalone" | "browser";
    /**
     * Returns the following OS state for the given manifest id.
     */
    export type getOsAppStateParameters = {
      /**
       * The id from the webapp's manifest file, commonly it's the url of the
site installing the webapp. See
https://web.dev/learn/pwa/web-app-manifest.
       */
      manifestId: string;
    };
    export type getOsAppStateReturnValue = {
      badgeCount: number;
      fileHandlers: FileHandler[];
    };
    /**
     * Installs the given manifest identity, optionally using the given installUrlOrBundleUrl

IWA-specific install description:
manifestId corresponds to isolated-app:// + web_package::SignedWebBundleId

File installation mode:
The installUrlOrBundleUrl can be either file:// or http(s):// pointing
to a signed web bundle (.swbn). In this case SignedWebBundleId must correspond to
The .swbn file's signing key.

Dev proxy installation mode:
installUrlOrBundleUrl must be http(s):// that serves dev mode IWA.
web_package::SignedWebBundleId must be of type dev proxy.

The advantage of dev proxy mode is that all changes to IWA
automatically will be reflected in the running app without
reinstallation.

To generate bundle id for proxy mode:
1. Generate 32 random bytes.
2. Add a specific suffix at the end following the documentation
   https://github.com/WICG/isolated-web-apps/blob/main/Scheme.md#suffix
3. Encode the entire sequence using Base32 without padding.

If Chrome is not in IWA dev
mode, the installation will fail, regardless of the state of the allowlist.
     */
    export type installParameters = {
      manifestId: string;
      /**
       * The location of the app or bundle overriding the one derived from the
manifestId.
       */
      installUrlOrBundleUrl?: string;
    };
    export type installReturnValue = {};
    /**
     * Uninstalls the given manifest_id and closes any opened app windows.
     */
    export type uninstallParameters = {
      manifestId: string;
    };
    export type uninstallReturnValue = {};
    /**
     * Launches the installed web app, or an url in the same web app instead of the
default start url if it is provided. Returns a page Target.TargetID which
can be used to attach to via Target.attachToTarget or similar APIs.
     */
    export type launchParameters = {
      manifestId: string;
      url?: string;
    };
    export type launchReturnValue = {
      /**
       * ID of the tab target created as a result.
       */
      targetId: Target.TargetID;
    };
    /**
     * Opens one or more local files from an installed web app identified by its
manifestId. The web app needs to have file handlers registered to process
the files. The API returns one or more page Target.TargetIDs which can be
used to attach to via Target.attachToTarget or similar APIs.
If some files in the parameters cannot be handled by the web app, they will
be ignored. If none of the files can be handled, this API returns an error.
If no files are provided as the parameter, this API also returns an error.

According to the definition of the file handlers in the manifest file, one
Target.TargetID may represent a page handling one or more files. The order
of the returned Target.TargetIDs is not guaranteed.

TODO(crbug.com/339454034): Check the existences of the input files.
     */
    export type launchFilesInAppParameters = {
      manifestId: string;
      files: string[];
    };
    export type launchFilesInAppReturnValue = {
      /**
       * IDs of the tab targets created as the result.
       */
      targetIds: Target.TargetID[];
    };
    /**
     * Opens the current page in its web app identified by the manifest id, needs
to be called on a page target. This function returns immediately without
waiting for the app to finish loading.
     */
    export type openCurrentPageInAppParameters = {
      manifestId: string;
    };
    export type openCurrentPageInAppReturnValue = {};
    /**
     * Changes user settings of the web app identified by its manifestId. If the
app was not installed, this command returns an error. Unset parameters will
be ignored; unrecognized values will cause an error.

Unlike the ones defined in the manifest files of the web apps, these
settings are provided by the browser and controlled by the users, they
impact the way the browser handling the web apps.

See the comment of each parameter.
     */
    export type changeAppUserSettingsParameters = {
      manifestId: string;
      /**
       * If user allows the links clicked on by the user in the app's scope, or
extended scope if the manifest has scope extensions and the flags
`DesktopPWAsLinkCapturingWithScopeExtensions` and
`WebAppEnableScopeExtensions` are enabled.

Note, the API does not support resetting the linkCapturing to the
initial value, uninstalling and installing the web app again will reset
it.

TODO(crbug.com/339453269): Setting this value on ChromeOS is not
supported yet.
       */
      linkCapturing?: boolean;
      displayMode?: DisplayMode;
    };
    export type changeAppUserSettingsReturnValue = {};
  }
  /**
   * Actions and events related to the inspected page belong to the page domain.
   */
  export namespace Page {
    /**
     * Unique frame identifier.
     */
    export type FrameId = string;
    /**
     * Indicates whether a frame has been identified as an ad.
     */
    export type AdFrameType = "none" | "child" | "root";
    export type AdFrameExplanation = "ParentIsAd" | "CreatedByAdScript" | "MatchedBlockingRule";
    /**
     * Indicates whether a frame has been identified as an ad and why.
     */
    export interface AdFrameStatus {
      adFrameType: AdFrameType;
      explanations?: AdFrameExplanation[];
    }
    /**
     * Indicates whether the frame is a secure context and why it is the case.
     */
    export type SecureContextType = "Secure" | "SecureLocalhost" | "InsecureScheme" | "InsecureAncestor";
    /**
     * Indicates whether the frame is cross-origin isolated and why it is the case.
     */
    export type CrossOriginIsolatedContextType = "Isolated" | "NotIsolated" | "NotIsolatedFeatureDisabled";
    export type GatedAPIFeatures = "SharedArrayBuffers" | "SharedArrayBuffersTransferAllowed" | "PerformanceMeasureMemory" | "PerformanceProfile";
    /**
     * All Permissions Policy features. This enum should match the one defined
in services/network/public/cpp/permissions_policy/permissions_policy_features.json5.
LINT.IfChange(PermissionsPolicyFeature)
     */
    export type PermissionsPolicyFeature = "accelerometer" | "all-screens-capture" | "ambient-light-sensor" | "aria-notify" | "attribution-reporting" | "autofill" | "autoplay" | "bluetooth" | "browsing-topics" | "camera" | "captured-surface-control" | "ch-dpr" | "ch-device-memory" | "ch-downlink" | "ch-ect" | "ch-prefers-color-scheme" | "ch-prefers-reduced-motion" | "ch-prefers-reduced-transparency" | "ch-rtt" | "ch-save-data" | "ch-ua" | "ch-ua-arch" | "ch-ua-bitness" | "ch-ua-high-entropy-values" | "ch-ua-platform" | "ch-ua-model" | "ch-ua-mobile" | "ch-ua-form-factors" | "ch-ua-full-version" | "ch-ua-full-version-list" | "ch-ua-platform-version" | "ch-ua-wow64" | "ch-viewport-height" | "ch-viewport-width" | "ch-width" | "clipboard-read" | "clipboard-write" | "compute-pressure" | "controlled-frame" | "cross-origin-isolated" | "deferred-fetch" | "deferred-fetch-minimal" | "device-attributes" | "digital-credentials-create" | "digital-credentials-get" | "direct-sockets" | "direct-sockets-multicast" | "direct-sockets-private" | "display-capture" | "document-domain" | "encrypted-media" | "execution-while-out-of-viewport" | "execution-while-not-rendered" | "focus-without-user-activation" | "fullscreen" | "frobulate" | "gamepad" | "geolocation" | "gyroscope" | "hid" | "identity-credentials-get" | "idle-detection" | "interest-cohort" | "join-ad-interest-group" | "keyboard-map" | "language-detector" | "language-model" | "local-fonts" | "local-network" | "local-network-access" | "loopback-network" | "magnetometer" | "manual-text" | "media-playback-while-not-visible" | "microphone" | "midi" | "on-device-speech-recognition" | "otp-credentials" | "payment" | "picture-in-picture" | "private-aggregation" | "private-state-token-issuance" | "private-state-token-redemption" | "publickey-credentials-create" | "publickey-credentials-get" | "record-ad-auction-events" | "rewriter" | "run-ad-auction" | "screen-wake-lock" | "serial" | "shared-storage" | "shared-storage-select-url" | "smart-card" | "speaker-selection" | "storage-access" | "sub-apps" | "summarizer" | "sync-xhr" | "tools" | "translator" | "unload" | "usb" | "usb-unrestricted" | "vertical-scroll" | "web-app-installation" | "web-printing" | "web-share" | "window-management" | "writer" | "xr-spatial-tracking";
    /**
     * Reason for a permissions policy feature to be disabled.
     */
    export type PermissionsPolicyBlockReason = "Header" | "IframeAttribute" | "InFencedFrameTree" | "InIsolatedApp";
    export interface PermissionsPolicyBlockLocator {
      frameId: FrameId;
      blockReason: PermissionsPolicyBlockReason;
    }
    export interface PermissionsPolicyFeatureState {
      feature: PermissionsPolicyFeature;
      allowed: boolean;
      locator?: PermissionsPolicyBlockLocator;
    }
    /**
     * Origin Trial(https://www.chromium.org/blink/origin-trials) support.
Status for an Origin Trial token.
     */
    export type OriginTrialTokenStatus = "Success" | "NotSupported" | "Insecure" | "Expired" | "WrongOrigin" | "InvalidSignature" | "Malformed" | "WrongVersion" | "FeatureDisabled" | "TokenDisabled" | "FeatureDisabledForUser" | "UnknownTrial";
    /**
     * Status for an Origin Trial.
     */
    export type OriginTrialStatus = "Enabled" | "ValidTokenNotProvided" | "OSNotSupported" | "TrialNotAllowed";
    export type OriginTrialUsageRestriction = "None" | "Subset";
    export interface OriginTrialToken {
      origin: string;
      matchSubDomains: boolean;
      trialName: string;
      expiryTime: Network.TimeSinceEpoch;
      isThirdParty: boolean;
      usageRestriction: OriginTrialUsageRestriction;
    }
    export interface OriginTrialTokenWithStatus {
      rawTokenText: string;
      /**
       * `parsedToken` is present only when the token is extractable and
parsable.
       */
      parsedToken?: OriginTrialToken;
      status: OriginTrialTokenStatus;
    }
    export interface OriginTrial {
      trialName: string;
      status: OriginTrialStatus;
      tokensWithStatus: OriginTrialTokenWithStatus[];
    }
    /**
     * Additional information about the frame document's security origin.
     */
    export interface SecurityOriginDetails {
      /**
       * Indicates whether the frame document's security origin is one
of the local hostnames (e.g. "localhost") or IP addresses (IPv4
127.0.0.0/8 or IPv6 ::1).
       */
      isLocalhost: boolean;
    }
    /**
     * Information about the Frame on the page.
     */
    export interface Frame {
      /**
       * Frame unique identifier.
       */
      id: FrameId;
      /**
       * Parent frame identifier.
       */
      parentId?: FrameId;
      /**
       * Identifier of the loader associated with this frame.
       */
      loaderId: Network.LoaderId;
      /**
       * Frame's name as specified in the tag.
       */
      name?: string;
      /**
       * Frame document's URL without fragment.
       */
      url: string;
      /**
       * Frame document's URL fragment including the '#'.
       */
      urlFragment?: string;
      /**
       * Frame document's registered domain, taking the public suffixes list into account.
Extracted from the Frame's url.
Example URLs: http://www.google.com/file.html -> "google.com"
              http://a.b.co.uk/file.html      -> "b.co.uk"
       */
      domainAndRegistry: string;
      /**
       * Frame document's security origin.
       */
      securityOrigin: string;
      /**
       * Additional details about the frame document's security origin.
       */
      securityOriginDetails?: SecurityOriginDetails;
      /**
       * Frame document's mimeType as determined by the browser.
       */
      mimeType: string;
      /**
       * If the frame failed to load, this contains the URL that could not be loaded. Note that unlike url above, this URL may contain a fragment.
       */
      unreachableUrl?: string;
      /**
       * Indicates whether this frame was tagged as an ad and why.
       */
      adFrameStatus?: AdFrameStatus;
      /**
       * Indicates whether the main document is a secure context and explains why that is the case.
       */
      secureContextType: SecureContextType;
      /**
       * Indicates whether this is a cross origin isolated context.
       */
      crossOriginIsolatedContextType: CrossOriginIsolatedContextType;
      /**
       * Indicated which gated APIs / features are available.
       */
      gatedAPIFeatures: GatedAPIFeatures[];
    }
    /**
     * Information about the Resource on the page.
     */
    export interface FrameResource {
      /**
       * Resource URL.
       */
      url: string;
      /**
       * Type of this resource.
       */
      type: Network.ResourceType;
      /**
       * Resource mimeType as determined by the browser.
       */
      mimeType: string;
      /**
       * last-modified timestamp as reported by server.
       */
      lastModified?: Network.TimeSinceEpoch;
      /**
       * Resource content size.
       */
      contentSize?: number;
      /**
       * True if the resource failed to load.
       */
      failed?: boolean;
      /**
       * True if the resource was canceled during loading.
       */
      canceled?: boolean;
    }
    /**
     * Information about the Frame hierarchy along with their cached resources.
     */
    export interface FrameResourceTree {
      /**
       * Frame information for this tree item.
       */
      frame: Frame;
      /**
       * Child frames.
       */
      childFrames?: FrameResourceTree[];
      /**
       * Information about frame resources.
       */
      resources: FrameResource[];
    }
    /**
     * Information about the Frame hierarchy.
     */
    export interface FrameTree {
      /**
       * Frame information for this tree item.
       */
      frame: Frame;
      /**
       * Child frames.
       */
      childFrames?: FrameTree[];
    }
    /**
     * Unique script identifier.
     */
    export type ScriptIdentifier = string;
    /**
     * Transition type.
     */
    export type TransitionType = "link" | "typed" | "address_bar" | "auto_bookmark" | "auto_subframe" | "manual_subframe" | "generated" | "auto_toplevel" | "form_submit" | "reload" | "keyword" | "keyword_generated" | "other";
    /**
     * Navigation history entry.
     */
    export interface NavigationEntry {
      /**
       * Unique id of the navigation history entry.
       */
      id: number;
      /**
       * URL of the navigation history entry.
       */
      url: string;
      /**
       * URL that the user typed in the url bar.
       */
      userTypedURL: string;
      /**
       * Title of the navigation history entry.
       */
      title: string;
      /**
       * Transition type.
       */
      transitionType: TransitionType;
    }
    /**
     * Screencast frame metadata.
     */
    export interface ScreencastFrameMetadata {
      /**
       * Top offset in DIP.
       */
      offsetTop: number;
      /**
       * Page scale factor.
       */
      pageScaleFactor: number;
      /**
       * Device screen width in DIP.
       */
      deviceWidth: number;
      /**
       * Device screen height in DIP.
       */
      deviceHeight: number;
      /**
       * Position of horizontal scroll in CSS pixels.
       */
      scrollOffsetX: number;
      /**
       * Position of vertical scroll in CSS pixels.
       */
      scrollOffsetY: number;
      /**
       * Frame swap timestamp.
       */
      timestamp?: Network.TimeSinceEpoch;
    }
    /**
     * Javascript dialog type.
     */
    export type DialogType = "alert" | "confirm" | "prompt" | "beforeunload";
    /**
     * Error while paring app manifest.
     */
    export interface AppManifestError {
      /**
       * Error message.
       */
      message: string;
      /**
       * If critical, this is a non-recoverable parse error.
       */
      critical: number;
      /**
       * Error line.
       */
      line: number;
      /**
       * Error column.
       */
      column: number;
    }
    /**
     * Parsed app manifest properties.
     */
    export interface AppManifestParsedProperties {
      /**
       * Computed scope value
       */
      scope: string;
    }
    /**
     * Layout viewport position and dimensions.
     */
    export interface LayoutViewport {
      /**
       * Horizontal offset relative to the document (CSS pixels).
       */
      pageX: number;
      /**
       * Vertical offset relative to the document (CSS pixels).
       */
      pageY: number;
      /**
       * Width (CSS pixels), excludes scrollbar if present.
       */
      clientWidth: number;
      /**
       * Height (CSS pixels), excludes scrollbar if present.
       */
      clientHeight: number;
    }
    /**
     * Visual viewport position, dimensions, and scale.
     */
    export interface VisualViewport {
      /**
       * Horizontal offset relative to the layout viewport (CSS pixels).
       */
      offsetX: number;
      /**
       * Vertical offset relative to the layout viewport (CSS pixels).
       */
      offsetY: number;
      /**
       * Horizontal offset relative to the document (CSS pixels).
       */
      pageX: number;
      /**
       * Vertical offset relative to the document (CSS pixels).
       */
      pageY: number;
      /**
       * Width (CSS pixels), excludes scrollbar if present.
       */
      clientWidth: number;
      /**
       * Height (CSS pixels), excludes scrollbar if present.
       */
      clientHeight: number;
      /**
       * Scale relative to the ideal viewport (size at width=device-width).
       */
      scale: number;
      /**
       * Page zoom factor (CSS to device independent pixels ratio).
       */
      zoom?: number;
    }
    /**
     * Viewport for capturing screenshot.
     */
    export interface Viewport {
      /**
       * X offset in device independent pixels (dip).
       */
      x: number;
      /**
       * Y offset in device independent pixels (dip).
       */
      y: number;
      /**
       * Rectangle width in device independent pixels (dip).
       */
      width: number;
      /**
       * Rectangle height in device independent pixels (dip).
       */
      height: number;
      /**
       * Page scale factor.
       */
      scale: number;
    }
    /**
     * Generic font families collection.
     */
    export interface FontFamilies {
      /**
       * The standard font-family.
       */
      standard?: string;
      /**
       * The fixed font-family.
       */
      fixed?: string;
      /**
       * The serif font-family.
       */
      serif?: string;
      /**
       * The sansSerif font-family.
       */
      sansSerif?: string;
      /**
       * The cursive font-family.
       */
      cursive?: string;
      /**
       * The fantasy font-family.
       */
      fantasy?: string;
      /**
       * The math font-family.
       */
      math?: string;
    }
    /**
     * Font families collection for a script.
     */
    export interface ScriptFontFamilies {
      /**
       * Name of the script which these font families are defined for.
       */
      script: string;
      /**
       * Generic font families collection for the script.
       */
      fontFamilies: FontFamilies;
    }
    /**
     * Default font sizes.
     */
    export interface FontSizes {
      /**
       * Default standard font size.
       */
      standard?: number;
      /**
       * Default fixed font size.
       */
      fixed?: number;
    }
    export type ClientNavigationReason = "anchorClick" | "formSubmissionGet" | "formSubmissionPost" | "httpHeaderRefresh" | "initialFrameNavigation" | "metaTagRefresh" | "other" | "pageBlockInterstitial" | "reload" | "scriptInitiated";
    export type ClientNavigationDisposition = "currentTab" | "newTab" | "newWindow" | "download";
    export interface InstallabilityErrorArgument {
      /**
       * Argument name (e.g. name:'minimum-icon-size-in-pixels').
       */
      name: string;
      /**
       * Argument value (e.g. value:'64').
       */
      value: string;
    }
    /**
     * The installability error
     */
    export interface InstallabilityError {
      /**
       * The error id (e.g. 'manifest-missing-suitable-icon').
       */
      errorId: string;
      /**
       * The list of error arguments (e.g. {name:'minimum-icon-size-in-pixels', value:'64'}).
       */
      errorArguments: InstallabilityErrorArgument[];
    }
    /**
     * The referring-policy used for the navigation.
     */
    export type ReferrerPolicy = "noReferrer" | "noReferrerWhenDowngrade" | "origin" | "originWhenCrossOrigin" | "sameOrigin" | "strictOrigin" | "strictOriginWhenCrossOrigin" | "unsafeUrl";
    /**
     * Per-script compilation cache parameters for `Page.produceCompilationCache`
     */
    export interface CompilationCacheParams {
      /**
       * The URL of the script to produce a compilation cache entry for.
       */
      url: string;
      /**
       * A hint to the backend whether eager compilation is recommended.
(the actual compilation mode used is upon backend discretion).
       */
      eager?: boolean;
    }
    export interface FileFilter {
      name?: string;
      accepts?: string[];
    }
    export interface FileHandler {
      action: string;
      name: string;
      icons?: ImageResource[];
      /**
       * Mimic a map, name is the key, accepts is the value.
       */
      accepts?: FileFilter[];
      /**
       * Won't repeat the enums, using string for easy comparison. Same as the
other enums below.
       */
      launchType: string;
    }
    /**
     * The image definition used in both icon and screenshot.
     */
    export interface ImageResource {
      /**
       * The src field in the definition, but changing to url in favor of
consistency.
       */
      url: string;
      sizes?: string;
      type?: string;
    }
    export interface LaunchHandler {
      clientMode: string;
    }
    export interface ProtocolHandler {
      protocol: string;
      url: string;
    }
    export interface RelatedApplication {
      id?: string;
      url: string;
    }
    export interface ScopeExtension {
      /**
       * Instead of using tuple, this field always returns the serialized string
for easy understanding and comparison.
       */
      origin: string;
      hasOriginWildcard: boolean;
    }
    export interface Screenshot {
      image: ImageResource;
      formFactor: string;
      label?: string;
    }
    export interface ShareTarget {
      action: string;
      method: string;
      enctype: string;
      /**
       * Embed the ShareTargetParams
       */
      title?: string;
      text?: string;
      url?: string;
      files?: FileFilter[];
    }
    export interface Shortcut {
      name: string;
      url: string;
    }
    export interface WebAppManifest {
      backgroundColor?: string;
      /**
       * The extra description provided by the manifest.
       */
      description?: string;
      dir?: string;
      display?: string;
      /**
       * The overrided display mode controlled by the user.
       */
      displayOverrides?: string[];
      /**
       * The handlers to open files.
       */
      fileHandlers?: FileHandler[];
      icons?: ImageResource[];
      id?: string;
      lang?: string;
      /**
       * TODO(crbug.com/1231886): This field is non-standard and part of a Chrome
experiment. See:
https://github.com/WICG/web-app-launch/blob/main/launch_handler.md
       */
      launchHandler?: LaunchHandler;
      name?: string;
      orientation?: string;
      preferRelatedApplications?: boolean;
      /**
       * The handlers to open protocols.
       */
      protocolHandlers?: ProtocolHandler[];
      relatedApplications?: RelatedApplication[];
      scope?: string;
      /**
       * Non-standard, see
https://github.com/WICG/manifest-incubations/blob/gh-pages/scope_extensions-explainer.md
       */
      scopeExtensions?: ScopeExtension[];
      /**
       * The screenshots used by chromium.
       */
      screenshots?: Screenshot[];
      shareTarget?: ShareTarget;
      shortName?: string;
      shortcuts?: Shortcut[];
      startUrl?: string;
      themeColor?: string;
    }
    /**
     * The type of a frameNavigated event.
     */
    export type NavigationType = "Navigation" | "BackForwardCacheRestore";
    /**
     * List of not restored reasons for back-forward cache.
     */
    export type BackForwardCacheNotRestoredReason = "NotPrimaryMainFrame" | "BackForwardCacheDisabled" | "RelatedActiveContentsExist" | "HTTPStatusNotOK" | "SchemeNotHTTPOrHTTPS" | "Loading" | "WasGrantedMediaAccess" | "DisableForRenderFrameHostCalled" | "DomainNotAllowed" | "HTTPMethodNotGET" | "SubframeIsNavigating" | "Timeout" | "CacheLimit" | "JavaScriptExecution" | "RendererProcessKilled" | "RendererProcessCrashed" | "SchedulerTrackedFeatureUsed" | "ConflictingBrowsingInstance" | "CacheFlushed" | "ServiceWorkerVersionActivation" | "SessionRestored" | "ServiceWorkerPostMessage" | "EnteredBackForwardCacheBeforeServiceWorkerHostAdded" | "RenderFrameHostReused_SameSite" | "RenderFrameHostReused_CrossSite" | "ServiceWorkerClaim" | "IgnoreEventAndEvict" | "HaveInnerContents" | "TimeoutPuttingInCache" | "BackForwardCacheDisabledByLowMemory" | "BackForwardCacheDisabledByCommandLine" | "NetworkRequestDatapipeDrainedAsBytesConsumer" | "NetworkRequestRedirected" | "NetworkRequestTimeout" | "NetworkExceedsBufferLimit" | "NavigationCancelledWhileRestoring" | "NotMostRecentNavigationEntry" | "BackForwardCacheDisabledForPrerender" | "UserAgentOverrideDiffers" | "ForegroundCacheLimit" | "ForwardCacheDisabled" | "BrowsingInstanceNotSwapped" | "BackForwardCacheDisabledForDelegate" | "UnloadHandlerExistsInMainFrame" | "UnloadHandlerExistsInSubFrame" | "ServiceWorkerUnregistration" | "CacheControlNoStore" | "CacheControlNoStoreCookieModified" | "CacheControlNoStoreHTTPOnlyCookieModified" | "NoResponseHead" | "Unknown" | "ActivationNavigationsDisallowedForBug1234857" | "ErrorDocument" | "FencedFramesEmbedder" | "CookieDisabled" | "HTTPAuthRequired" | "CookieFlushed" | "BroadcastChannelOnMessage" | "WebViewSettingsChanged" | "WebViewJavaScriptObjectChanged" | "WebViewMessageListenerInjected" | "WebViewSafeBrowsingAllowlistChanged" | "WebViewDocumentStartJavascriptChanged" | "WebSocket" | "WebTransport" | "WebRTC" | "MainResourceHasCacheControlNoStore" | "MainResourceHasCacheControlNoCache" | "SubresourceHasCacheControlNoStore" | "SubresourceHasCacheControlNoCache" | "ContainsPlugins" | "DocumentLoaded" | "OutstandingNetworkRequestOthers" | "RequestedMIDIPermission" | "RequestedAudioCapturePermission" | "RequestedVideoCapturePermission" | "RequestedBackForwardCacheBlockedSensors" | "RequestedBackgroundWorkPermission" | "BroadcastChannel" | "WebXR" | "SharedWorker" | "SharedWorkerMessage" | "SharedWorkerWithNoActiveClient" | "WebLocks" | "WebLocksContention" | "WebHID" | "WebBluetooth" | "WebShare" | "RequestedStorageAccessGrant" | "WebNfc" | "OutstandingNetworkRequestFetch" | "OutstandingNetworkRequestXHR" | "AppBanner" | "Printing" | "WebDatabase" | "PictureInPicture" | "SpeechRecognizer" | "IdleManager" | "PaymentManager" | "SpeechSynthesis" | "KeyboardLock" | "WebOTPService" | "OutstandingNetworkRequestDirectSocket" | "InjectedJavascript" | "InjectedStyleSheet" | "KeepaliveRequest" | "IndexedDBEvent" | "Dummy" | "JsNetworkRequestReceivedCacheControlNoStoreResource" | "WebRTCUsedWithCCNS" | "WebTransportUsedWithCCNS" | "WebSocketUsedWithCCNS" | "SmartCard" | "LiveMediaStreamTrack" | "UnloadHandler" | "ParserAborted" | "ContentSecurityHandler" | "ContentWebAuthenticationAPI" | "ContentFileChooser" | "ContentSerial" | "ContentFileSystemAccess" | "ContentMediaDevicesDispatcherHost" | "ContentWebBluetooth" | "ContentWebUSB" | "ContentMediaSessionService" | "ContentScreenReader" | "ContentDiscarded" | "EmbedderPopupBlockerTabHelper" | "EmbedderSafeBrowsingTriggeredPopupBlocker" | "EmbedderSafeBrowsingThreatDetails" | "EmbedderAppBannerManager" | "EmbedderDomDistillerViewerSource" | "EmbedderDomDistillerSelfDeletingRequestDelegate" | "EmbedderOomInterventionTabHelper" | "EmbedderOfflinePage" | "EmbedderChromePasswordManagerClientBindCredentialManager" | "EmbedderPermissionRequestManager" | "EmbedderModalDialog" | "EmbedderExtensions" | "EmbedderExtensionMessaging" | "EmbedderExtensionMessagingForOpenPort" | "EmbedderExtensionSentMessageToCachedFrame" | "EmbedderExtensionFrame" | "RequestedByWebViewClient" | "PostMessageByWebViewClient" | "CacheControlNoStoreDeviceBoundSessionTerminated" | "CacheLimitPrunedOnModerateMemoryPressure" | "CacheLimitPrunedOnCriticalMemoryPressure";
    /**
     * Types of not restored reasons for back-forward cache.
     */
    export type BackForwardCacheNotRestoredReasonType = "SupportPending" | "PageSupportNeeded" | "Circumstantial";
    export interface BackForwardCacheBlockingDetails {
      /**
       * Url of the file where blockage happened. Optional because of tests.
       */
      url?: string;
      /**
       * Function name where blockage happened. Optional because of anonymous functions and tests.
       */
      function?: string;
      /**
       * Line number in the script (0-based).
       */
      lineNumber: number;
      /**
       * Column number in the script (0-based).
       */
      columnNumber: number;
    }
    export interface BackForwardCacheNotRestoredExplanation {
      /**
       * Type of the reason
       */
      type: BackForwardCacheNotRestoredReasonType;
      /**
       * Not restored reason
       */
      reason: BackForwardCacheNotRestoredReason;
      /**
       * Context associated with the reason. The meaning of this context is
dependent on the reason:
- EmbedderExtensionSentMessageToCachedFrame: the extension ID.
       */
      context?: string;
      details?: BackForwardCacheBlockingDetails[];
    }
    export interface BackForwardCacheNotRestoredExplanationTree {
      /**
       * URL of each frame
       */
      url: string;
      /**
       * Not restored reasons of each frame
       */
      explanations: BackForwardCacheNotRestoredExplanation[];
      /**
       * Array of children frame
       */
      children: BackForwardCacheNotRestoredExplanationTree[];
    }
    export type domContentEventFiredPayload = {
      timestamp: Network.MonotonicTime;
    };
    /**
     * Emitted only when `page.interceptFileChooser` is enabled.
     */
    export type fileChooserOpenedPayload = {
      /**
       * Id of the frame containing input node.
       */
      frameId: FrameId;
      /**
       * Input mode.
       */
      mode: "selectSingle" | "selectMultiple";
      /**
       * Input node id. Only present for file choosers opened via an `<input type="file">` element.
       */
      backendNodeId?: DOM.BackendNodeId;
    };
    /**
     * Fired when frame has been attached to its parent.
     */
    export type frameAttachedPayload = {
      /**
       * Id of the frame that has been attached.
       */
      frameId: FrameId;
      /**
       * Parent frame identifier.
       */
      parentFrameId: FrameId;
      /**
       * JavaScript stack trace of when frame was attached, only set if frame initiated from script.
       */
      stack?: Runtime.StackTrace;
    };
    /**
     * Fired when frame no longer has a scheduled navigation.
     */
    export type frameClearedScheduledNavigationPayload = {
      /**
       * Id of the frame that has cleared its scheduled navigation.
       */
      frameId: FrameId;
    };
    /**
     * Fired when frame has been detached from its parent.
     */
    export type frameDetachedPayload = {
      /**
       * Id of the frame that has been detached.
       */
      frameId: FrameId;
      reason: "remove" | "swap";
    };
    /**
     * Fired before frame subtree is detached. Emitted before any frame of the
subtree is actually detached.
     */
    export type frameSubtreeWillBeDetachedPayload = {
      /**
       * Id of the frame that is the root of the subtree that will be detached.
       */
      frameId: FrameId;
    };
    /**
     * Fired once navigation of the frame has completed. Frame is now associated with the new loader.
     */
    export type frameNavigatedPayload = {
      /**
       * Frame object.
       */
      frame: Frame;
      type: NavigationType;
    };
    /**
     * Fired when opening document to write to.
     */
    export type documentOpenedPayload = {
      /**
       * Frame object.
       */
      frame: Frame;
    };
    export type frameResizedPayload = void;
    /**
     * Fired when a navigation starts. This event is fired for both
renderer-initiated and browser-initiated navigations. For renderer-initiated
navigations, the event is fired after `frameRequestedNavigation`.
Navigation may still be cancelled after the event is issued. Multiple events
can be fired for a single navigation, for example, when a same-document
navigation becomes a cross-document navigation (such as in the case of a
frameset).
     */
    export type frameStartedNavigatingPayload = {
      /**
       * ID of the frame that is being navigated.
       */
      frameId: FrameId;
      /**
       * The URL the navigation started with. The final URL can be different.
       */
      url: string;
      /**
       * Loader identifier. Even though it is present in case of same-document
navigation, the previously committed loaderId would not change unless
the navigation changes from a same-document to a cross-document
navigation.
       */
      loaderId: Network.LoaderId;
      navigationType: "reload" | "reloadBypassingCache" | "restore" | "restoreWithPost" | "historySameDocument" | "historyDifferentDocument" | "sameDocument" | "differentDocument";
    };
    /**
     * Fired when a renderer-initiated navigation is requested.
Navigation may still be cancelled after the event is issued.
     */
    export type frameRequestedNavigationPayload = {
      /**
       * Id of the frame that is being navigated.
       */
      frameId: FrameId;
      /**
       * The reason for the navigation.
       */
      reason: ClientNavigationReason;
      /**
       * The destination URL for the requested navigation.
       */
      url: string;
      /**
       * The disposition for the navigation.
       */
      disposition: ClientNavigationDisposition;
    };
    /**
     * Fired when frame schedules a potential navigation.
     */
    export type frameScheduledNavigationPayload = {
      /**
       * Id of the frame that has scheduled a navigation.
       */
      frameId: FrameId;
      /**
       * Delay (in seconds) until the navigation is scheduled to begin. The navigation is not
guaranteed to start.
       */
      delay: number;
      /**
       * The reason for the navigation.
       */
      reason: ClientNavigationReason;
      /**
       * The destination URL for the scheduled navigation.
       */
      url: string;
    };
    /**
     * Fired when frame has started loading.
     */
    export type frameStartedLoadingPayload = {
      /**
       * Id of the frame that has started loading.
       */
      frameId: FrameId;
    };
    /**
     * Fired when frame has stopped loading.
     */
    export type frameStoppedLoadingPayload = {
      /**
       * Id of the frame that has stopped loading.
       */
      frameId: FrameId;
    };
    /**
     * Fired when page is about to start a download.
Deprecated. Use Browser.downloadWillBegin instead.
     */
    export type downloadWillBeginPayload = {
      /**
       * Id of the frame that caused download to begin.
       */
      frameId: FrameId;
      /**
       * Global unique identifier of the download.
       */
      guid: string;
      /**
       * URL of the resource being downloaded.
       */
      url: string;
      /**
       * Suggested file name of the resource (the actual name of the file saved on disk may differ).
       */
      suggestedFilename: string;
    };
    /**
     * Fired when download makes progress. Last call has |done| == true.
Deprecated. Use Browser.downloadProgress instead.
     */
    export type downloadProgressPayload = {
      /**
       * Global unique identifier of the download.
       */
      guid: string;
      /**
       * Total expected bytes to download.
       */
      totalBytes: number;
      /**
       * Total bytes received.
       */
      receivedBytes: number;
      /**
       * Download status.
       */
      state: "inProgress" | "completed" | "canceled";
    };
    /**
     * Fired when interstitial page was hidden
     */
    export type interstitialHiddenPayload = void;
    /**
     * Fired when interstitial page was shown
     */
    export type interstitialShownPayload = void;
    /**
     * Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been
closed.
     */
    export type javascriptDialogClosedPayload = {
      /**
       * Frame id.
       */
      frameId: FrameId;
      /**
       * Whether dialog was confirmed.
       */
      result: boolean;
      /**
       * User input in case of prompt.
       */
      userInput: string;
    };
    /**
     * Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to
open.
     */
    export type javascriptDialogOpeningPayload = {
      /**
       * Frame url.
       */
      url: string;
      /**
       * Frame id.
       */
      frameId: FrameId;
      /**
       * Message that will be displayed by the dialog.
       */
      message: string;
      /**
       * Dialog type.
       */
      type: DialogType;
      /**
       * True iff browser is capable showing or acting on the given dialog. When browser has no
dialog handler for given target, calling alert while Page domain is engaged will stall
the page execution. Execution can be resumed via calling Page.handleJavaScriptDialog.
       */
      hasBrowserHandler: boolean;
      /**
       * Default dialog prompt.
       */
      defaultPrompt?: string;
    };
    /**
     * Fired for lifecycle events (navigation, load, paint, etc) in the current
target (including local frames).
     */
    export type lifecycleEventPayload = {
      /**
       * Id of the frame.
       */
      frameId: FrameId;
      /**
       * Loader identifier. Empty string if the request is fetched from worker.
       */
      loaderId: Network.LoaderId;
      name: string;
      timestamp: Network.MonotonicTime;
    };
    /**
     * Fired for failed bfcache history navigations if BackForwardCache feature is enabled. Do
not assume any ordering with the Page.frameNavigated event. This event is fired only for
main-frame history navigation where the document changes (non-same-document navigations),
when bfcache navigation fails.
     */
    export type backForwardCacheNotUsedPayload = {
      /**
       * The loader id for the associated navigation.
       */
      loaderId: Network.LoaderId;
      /**
       * The frame id of the associated frame.
       */
      frameId: FrameId;
      /**
       * Array of reasons why the page could not be cached. This must not be empty.
       */
      notRestoredExplanations: BackForwardCacheNotRestoredExplanation[];
      /**
       * Tree structure of reasons why the page could not be cached for each frame.
       */
      notRestoredExplanationsTree?: BackForwardCacheNotRestoredExplanationTree;
    };
    export type loadEventFiredPayload = {
      timestamp: Network.MonotonicTime;
    };
    /**
     * Fired when same-document navigation happens, e.g. due to history API usage or anchor navigation.
     */
    export type navigatedWithinDocumentPayload = {
      /**
       * Id of the frame.
       */
      frameId: FrameId;
      /**
       * Frame's new url.
       */
      url: string;
      /**
       * Navigation type
       */
      navigationType: "fragment" | "historyApi" | "other";
    };
    /**
     * Compressed image data requested by the `startScreencast`.
     */
    export type screencastFramePayload = {
      /**
       * Base64-encoded compressed image.
       */
      data: binary;
      /**
       * Screencast frame metadata.
       */
      metadata: ScreencastFrameMetadata;
      /**
       * Frame number.
       */
      sessionId: number;
    };
    /**
     * Fired when the page with currently enabled screencast was shown or hidden `.
     */
    export type screencastVisibilityChangedPayload = {
      /**
       * True if the page is visible.
       */
      visible: boolean;
    };
    /**
     * Fired when a new window is going to be opened, via window.open(), link click, form submission,
etc.
     */
    export type windowOpenPayload = {
      /**
       * The URL for the new window.
       */
      url: string;
      /**
       * Window name.
       */
      windowName: string;
      /**
       * An array of enabled window features.
       */
      windowFeatures: string[];
      /**
       * Whether or not it was triggered by user gesture.
       */
      userGesture: boolean;
    };
    /**
     * Issued for every compilation cache generated.
     */
    export type compilationCacheProducedPayload = {
      url: string;
      /**
       * Base64-encoded data
       */
      data: binary;
    };
    /**
     * Deprecated, please use addScriptToEvaluateOnNewDocument instead.
     */
    export type addScriptToEvaluateOnLoadParameters = {
      scriptSource: string;
    };
    export type addScriptToEvaluateOnLoadReturnValue = {
      /**
       * Identifier of the added script.
       */
      identifier: ScriptIdentifier;
    };
    /**
     * Evaluates given script in every frame upon creation (before loading frame's scripts).
     */
    export type addScriptToEvaluateOnNewDocumentParameters = {
      source: string;
      /**
       * If specified, creates an isolated world with the given name and evaluates given script in it.
This world name will be used as the ExecutionContextDescription::name when the corresponding
event is emitted.
       */
      worldName?: string;
      /**
       * Specifies whether command line API should be available to the script, defaults
to false.
       */
      includeCommandLineAPI?: boolean;
      /**
       * If true, runs the script immediately on existing execution contexts or worlds.
Default: false.
       */
      runImmediately?: boolean;
    };
    export type addScriptToEvaluateOnNewDocumentReturnValue = {
      /**
       * Identifier of the added script.
       */
      identifier: ScriptIdentifier;
    };
    /**
     * Brings page to front (activates tab).
     */
    export type bringToFrontParameters = {};
    export type bringToFrontReturnValue = {};
    /**
     * Capture page screenshot.
     */
    export type captureScreenshotParameters = {
      /**
       * Image compression format (defaults to png).
       */
      format?: "jpeg" | "png" | "webp";
      /**
       * Compression quality from range [0..100] (jpeg only).
       */
      quality?: number;
      /**
       * Capture the screenshot of a given region only.
       */
      clip?: Viewport;
      /**
       * Capture the screenshot from the surface, rather than the view. Defaults to true.
       */
      fromSurface?: boolean;
      /**
       * Capture the screenshot beyond the viewport. Defaults to false.
       */
      captureBeyondViewport?: boolean;
      /**
       * Optimize image encoding for speed, not for resulting size (defaults to false)
       */
      optimizeForSpeed?: boolean;
    };
    export type captureScreenshotReturnValue = {
      /**
       * Base64-encoded image data.
       */
      data: binary;
    };
    /**
     * Returns a snapshot of the page as a string. For MHTML format, the serialization includes
iframes, shadow DOM, external resources, and element-inline styles.
     */
    export type captureSnapshotParameters = {
      /**
       * Format (defaults to mhtml).
       */
      format?: "mhtml";
    };
    export type captureSnapshotReturnValue = {
      /**
       * Serialized page data.
       */
      data: string;
    };
    /**
     * Clears the overridden device metrics.
     */
    export type clearDeviceMetricsOverrideParameters = {};
    export type clearDeviceMetricsOverrideReturnValue = {};
    /**
     * Clears the overridden Device Orientation.
     */
    export type clearDeviceOrientationOverrideParameters = {};
    export type clearDeviceOrientationOverrideReturnValue = {};
    /**
     * Clears the overridden Geolocation Position and Error.
     */
    export type clearGeolocationOverrideParameters = {};
    export type clearGeolocationOverrideReturnValue = {};
    /**
     * Creates an isolated world for the given frame.
     */
    export type createIsolatedWorldParameters = {
      /**
       * Id of the frame in which the isolated world should be created.
       */
      frameId: FrameId;
      /**
       * An optional name which is reported in the Execution Context.
       */
      worldName?: string;
      /**
       * Whether or not universal access should be granted to the isolated world. This is a powerful
option, use with caution.
       */
      grantUniveralAccess?: boolean;
    };
    export type createIsolatedWorldReturnValue = {
      /**
       * Execution context of the isolated world.
       */
      executionContextId: Runtime.ExecutionContextId;
    };
    /**
     * Deletes browser cookie with given name, domain and path.
     */
    export type deleteCookieParameters = {
      /**
       * Name of the cookie to remove.
       */
      cookieName: string;
      /**
       * URL to match cooke domain and path.
       */
      url: string;
    };
    export type deleteCookieReturnValue = {};
    /**
     * Disables page domain notifications.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables page domain notifications.
     */
    export type enableParameters = {
      /**
       * If true, the `Page.fileChooserOpened` event will be emitted regardless of the state set by
`Page.setInterceptFileChooserDialog` command (default: false).
       */
      enableFileChooserOpenedEvent?: boolean;
    };
    export type enableReturnValue = {};
    /**
     * Gets the processed manifest for this current document.
  This API always waits for the manifest to be loaded.
  If manifestId is provided, and it does not match the manifest of the
    current document, this API errors out.
  If there is not a loaded page, this API errors out immediately.
     */
    export type getAppManifestParameters = {
      manifestId?: string;
    };
    export type getAppManifestReturnValue = {
      /**
       * Manifest location.
       */
      url: string;
      errors: AppManifestError[];
      /**
       * Manifest content.
       */
      data?: string;
      /**
       * Parsed manifest properties. Deprecated, use manifest instead.
       */
      parsed?: AppManifestParsedProperties;
      manifest: WebAppManifest;
    };
    export type getInstallabilityErrorsParameters = {};
    export type getInstallabilityErrorsReturnValue = {
      installabilityErrors: InstallabilityError[];
    };
    /**
     * Deprecated because it's not guaranteed that the returned icon is in fact the one used for PWA installation.
     */
    export type getManifestIconsParameters = {};
    export type getManifestIconsReturnValue = {
      primaryIcon?: binary;
    };
    /**
     * Returns the unique (PWA) app id.
Only returns values if the feature flag 'WebAppEnableManifestId' is enabled
     */
    export type getAppIdParameters = {};
    export type getAppIdReturnValue = {
      /**
       * App id, either from manifest's id attribute or computed from start_url
       */
      appId?: string;
      /**
       * Recommendation for manifest's id attribute to match current id computed from start_url
       */
      recommendedId?: string;
    };
    export type getAdScriptAncestryParameters = {
      frameId: FrameId;
    };
    export type getAdScriptAncestryReturnValue = {
      /**
       * The ancestry chain of ad script identifiers leading to this frame's
creation, along with the root script's filterlist rule. The ancestry
chain is ordered from the most immediate script (in the frame creation
stack) to more distant ancestors (that created the immediately preceding
script). Only sent if frame is labelled as an ad and ids are available.
       */
      adScriptAncestry?: Network.AdAncestry;
    };
    /**
     * Returns present frame tree structure.
     */
    export type getFrameTreeParameters = {};
    export type getFrameTreeReturnValue = {
      /**
       * Present frame tree structure.
       */
      frameTree: FrameTree;
    };
    /**
     * Returns metrics relating to the layouting of the page, such as viewport bounds/scale.
     */
    export type getLayoutMetricsParameters = {};
    export type getLayoutMetricsReturnValue = {
      /**
       * Deprecated metrics relating to the layout viewport. Is in device pixels. Use `cssLayoutViewport` instead.
       */
      layoutViewport: LayoutViewport;
      /**
       * Deprecated metrics relating to the visual viewport. Is in device pixels. Use `cssVisualViewport` instead.
       */
      visualViewport: VisualViewport;
      /**
       * Deprecated size of scrollable area. Is in DP. Use `cssContentSize` instead.
       */
      contentSize: DOM.Rect;
      /**
       * Metrics relating to the layout viewport in CSS pixels.
       */
      cssLayoutViewport: LayoutViewport;
      /**
       * Metrics relating to the visual viewport in CSS pixels.
       */
      cssVisualViewport: VisualViewport;
      /**
       * Size of scrollable area in CSS pixels.
       */
      cssContentSize: DOM.Rect;
    };
    /**
     * Returns navigation history for the current page.
     */
    export type getNavigationHistoryParameters = {};
    export type getNavigationHistoryReturnValue = {
      /**
       * Index of the current navigation history entry.
       */
      currentIndex: number;
      /**
       * Array of navigation history entries.
       */
      entries: NavigationEntry[];
    };
    /**
     * Resets navigation history for the current page.
     */
    export type resetNavigationHistoryParameters = {};
    export type resetNavigationHistoryReturnValue = {};
    /**
     * Returns content of the given resource.
     */
    export type getResourceContentParameters = {
      /**
       * Frame id to get resource for.
       */
      frameId: FrameId;
      /**
       * URL of the resource to get content for.
       */
      url: string;
    };
    export type getResourceContentReturnValue = {
      /**
       * Resource content.
       */
      content: string;
      /**
       * True, if content was served as base64.
       */
      base64Encoded: boolean;
    };
    /**
     * Returns present frame / resource tree structure.
     */
    export type getResourceTreeParameters = {};
    export type getResourceTreeReturnValue = {
      /**
       * Present frame / resource tree structure.
       */
      frameTree: FrameResourceTree;
    };
    /**
     * Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).
     */
    export type handleJavaScriptDialogParameters = {
      /**
       * Whether to accept or dismiss the dialog.
       */
      accept: boolean;
      /**
       * The text to enter into the dialog prompt before accepting. Used only if this is a prompt
dialog.
       */
      promptText?: string;
    };
    export type handleJavaScriptDialogReturnValue = {};
    /**
     * Navigates current page to the given URL.
     */
    export type navigateParameters = {
      /**
       * URL to navigate the page to.
       */
      url: string;
      /**
       * Referrer URL.
       */
      referrer?: string;
      /**
       * Intended transition type.
       */
      transitionType?: TransitionType;
      /**
       * Frame id to navigate, if not specified navigates the top frame.
       */
      frameId?: FrameId;
      /**
       * Referrer-policy used for the navigation.
       */
      referrerPolicy?: ReferrerPolicy;
    };
    export type navigateReturnValue = {
      /**
       * Frame id that has navigated (or failed to navigate)
       */
      frameId: FrameId;
      /**
       * Loader identifier. This is omitted in case of same-document navigation,
as the previously committed loaderId would not change.
       */
      loaderId?: Network.LoaderId;
      /**
       * User friendly error message, present if and only if navigation has failed.
       */
      errorText?: string;
      /**
       * Whether the navigation resulted in a download.
       */
      isDownload?: boolean;
    };
    /**
     * Navigates current page to the given history entry.
     */
    export type navigateToHistoryEntryParameters = {
      /**
       * Unique id of the entry to navigate to.
       */
      entryId: number;
    };
    export type navigateToHistoryEntryReturnValue = {};
    /**
     * Print page as PDF.
     */
    export type printToPDFParameters = {
      /**
       * Paper orientation. Defaults to false.
       */
      landscape?: boolean;
      /**
       * Display header and footer. Defaults to false.
       */
      displayHeaderFooter?: boolean;
      /**
       * Print background graphics. Defaults to false.
       */
      printBackground?: boolean;
      /**
       * Scale of the webpage rendering. Defaults to 1.
       */
      scale?: number;
      /**
       * Paper width in inches. Defaults to 8.5 inches.
       */
      paperWidth?: number;
      /**
       * Paper height in inches. Defaults to 11 inches.
       */
      paperHeight?: number;
      /**
       * Top margin in inches. Defaults to 1cm (~0.4 inches).
       */
      marginTop?: number;
      /**
       * Bottom margin in inches. Defaults to 1cm (~0.4 inches).
       */
      marginBottom?: number;
      /**
       * Left margin in inches. Defaults to 1cm (~0.4 inches).
       */
      marginLeft?: number;
      /**
       * Right margin in inches. Defaults to 1cm (~0.4 inches).
       */
      marginRight?: number;
      /**
       * Paper ranges to print, one based, e.g., '1-5, 8, 11-13'. Pages are
printed in the document order, not in the order specified, and no
more than once.
Defaults to empty string, which implies the entire document is printed.
The page numbers are quietly capped to actual page count of the
document, and ranges beyond the end of the document are ignored.
If this results in no pages to print, an error is reported.
It is an error to specify a range with start greater than end.
       */
      pageRanges?: string;
      /**
       * HTML template for the print header. Should be valid HTML markup with following
classes used to inject printing values into them:
- `date`: formatted print date
- `title`: document title
- `url`: document location
- `pageNumber`: current page number
- `totalPages`: total pages in the document

For example, `<span class=title></span>` would generate span containing the title.
       */
      headerTemplate?: string;
      /**
       * HTML template for the print footer. Should use the same format as the `headerTemplate`.
       */
      footerTemplate?: string;
      /**
       * Whether or not to prefer page size as defined by css. Defaults to false,
in which case the content will be scaled to fit the paper size.
       */
      preferCSSPageSize?: boolean;
      /**
       * return as stream
       */
      transferMode?: "ReturnAsBase64" | "ReturnAsStream";
      /**
       * Whether or not to generate tagged (accessible) PDF. Defaults to embedder choice.
       */
      generateTaggedPDF?: boolean;
      /**
       * Whether or not to embed the document outline into the PDF.
       */
      generateDocumentOutline?: boolean;
    };
    export type printToPDFReturnValue = {
      /**
       * Base64-encoded pdf data. Empty if |returnAsStream| is specified.
       */
      data: binary;
      /**
       * A handle of the stream that holds resulting PDF data.
       */
      stream?: IO.StreamHandle;
    };
    /**
     * Reloads given page optionally ignoring the cache.
     */
    export type reloadParameters = {
      /**
       * If true, browser cache is ignored (as if the user pressed Shift+refresh).
       */
      ignoreCache?: boolean;
      /**
       * If set, the script will be injected into all frames of the inspected page after reload.
Argument will be ignored if reloading dataURL origin.
       */
      scriptToEvaluateOnLoad?: string;
      /**
       * If set, an error will be thrown if the target page's main frame's
loader id does not match the provided id. This prevents accidentally
reloading an unintended target in case there's a racing navigation.
       */
      loaderId?: Network.LoaderId;
    };
    export type reloadReturnValue = {};
    /**
     * Deprecated, please use removeScriptToEvaluateOnNewDocument instead.
     */
    export type removeScriptToEvaluateOnLoadParameters = {
      identifier: ScriptIdentifier;
    };
    export type removeScriptToEvaluateOnLoadReturnValue = {};
    /**
     * Removes given script from the list.
     */
    export type removeScriptToEvaluateOnNewDocumentParameters = {
      identifier: ScriptIdentifier;
    };
    export type removeScriptToEvaluateOnNewDocumentReturnValue = {};
    /**
     * Acknowledges that a screencast frame has been received by the frontend.
     */
    export type screencastFrameAckParameters = {
      /**
       * Frame number.
       */
      sessionId: number;
    };
    export type screencastFrameAckReturnValue = {};
    /**
     * Searches for given string in resource content.
     */
    export type searchInResourceParameters = {
      /**
       * Frame id for resource to search in.
       */
      frameId: FrameId;
      /**
       * URL of the resource to search in.
       */
      url: string;
      /**
       * String to search for.
       */
      query: string;
      /**
       * If true, search is case sensitive.
       */
      caseSensitive?: boolean;
      /**
       * If true, treats string parameter as regex.
       */
      isRegex?: boolean;
    };
    export type searchInResourceReturnValue = {
      /**
       * List of search matches.
       */
      result: Debugger.SearchMatch[];
    };
    /**
     * Enable Chrome's experimental ad filter on all sites.
     */
    export type setAdBlockingEnabledParameters = {
      /**
       * Whether to block ads.
       */
      enabled: boolean;
    };
    export type setAdBlockingEnabledReturnValue = {};
    /**
     * Enable page Content Security Policy by-passing.
     */
    export type setBypassCSPParameters = {
      /**
       * Whether to bypass page CSP.
       */
      enabled: boolean;
    };
    export type setBypassCSPReturnValue = {};
    /**
     * Get Permissions Policy state on given frame.
     */
    export type getPermissionsPolicyStateParameters = {
      frameId: FrameId;
    };
    export type getPermissionsPolicyStateReturnValue = {
      states: PermissionsPolicyFeatureState[];
    };
    /**
     * Get Origin Trials on given frame.
     */
    export type getOriginTrialsParameters = {
      frameId: FrameId;
    };
    export type getOriginTrialsReturnValue = {
      originTrials: OriginTrial[];
    };
    /**
     * Overrides the values of device screen dimensions (window.screen.width, window.screen.height,
window.innerWidth, window.innerHeight, and "device-width"/"device-height"-related CSS media
query results).
     */
    export type setDeviceMetricsOverrideParameters = {
      /**
       * Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override.
       */
      width: number;
      /**
       * Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override.
       */
      height: number;
      /**
       * Overriding device scale factor value. 0 disables the override.
       */
      deviceScaleFactor: number;
      /**
       * Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text
autosizing and more.
       */
      mobile: boolean;
      /**
       * Scale to apply to resulting view image.
       */
      scale?: number;
      /**
       * Overriding screen width value in pixels (minimum 0, maximum 10000000).
       */
      screenWidth?: number;
      /**
       * Overriding screen height value in pixels (minimum 0, maximum 10000000).
       */
      screenHeight?: number;
      /**
       * Overriding view X position on screen in pixels (minimum 0, maximum 10000000).
       */
      positionX?: number;
      /**
       * Overriding view Y position on screen in pixels (minimum 0, maximum 10000000).
       */
      positionY?: number;
      /**
       * Do not set visible view size, rely upon explicit setVisibleSize call.
       */
      dontSetVisibleSize?: boolean;
      /**
       * Screen orientation override.
       */
      screenOrientation?: Emulation.ScreenOrientation;
      /**
       * The viewport dimensions and scale. If not set, the override is cleared.
       */
      viewport?: Viewport;
    };
    export type setDeviceMetricsOverrideReturnValue = {};
    /**
     * Overrides the Device Orientation.
     */
    export type setDeviceOrientationOverrideParameters = {
      /**
       * Mock alpha
       */
      alpha: number;
      /**
       * Mock beta
       */
      beta: number;
      /**
       * Mock gamma
       */
      gamma: number;
    };
    export type setDeviceOrientationOverrideReturnValue = {};
    /**
     * Set generic font families.
     */
    export type setFontFamiliesParameters = {
      /**
       * Specifies font families to set. If a font family is not specified, it won't be changed.
       */
      fontFamilies: FontFamilies;
      /**
       * Specifies font families to set for individual scripts.
       */
      forScripts?: ScriptFontFamilies[];
    };
    export type setFontFamiliesReturnValue = {};
    /**
     * Set default font sizes.
     */
    export type setFontSizesParameters = {
      /**
       * Specifies font sizes to set. If a font size is not specified, it won't be changed.
       */
      fontSizes: FontSizes;
    };
    export type setFontSizesReturnValue = {};
    /**
     * Sets given markup as the document's HTML.
     */
    export type setDocumentContentParameters = {
      /**
       * Frame id to set HTML for.
       */
      frameId: FrameId;
      /**
       * HTML content to set.
       */
      html: string;
    };
    export type setDocumentContentReturnValue = {};
    /**
     * Set the behavior when downloading a file.
     */
    export type setDownloadBehaviorParameters = {
      /**
       * Whether to allow all or deny all download requests, or use default Chrome behavior if
available (otherwise deny).
       */
      behavior: "deny" | "allow" | "default";
      /**
       * The default path to save downloaded files to. This is required if behavior is set to 'allow'
       */
      downloadPath?: string;
    };
    export type setDownloadBehaviorReturnValue = {};
    /**
     * Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position
unavailable.
     */
    export type setGeolocationOverrideParameters = {
      /**
       * Mock latitude
       */
      latitude?: number;
      /**
       * Mock longitude
       */
      longitude?: number;
      /**
       * Mock accuracy
       */
      accuracy?: number;
    };
    export type setGeolocationOverrideReturnValue = {};
    /**
     * Controls whether page will emit lifecycle events.
     */
    export type setLifecycleEventsEnabledParameters = {
      /**
       * If true, starts emitting lifecycle events.
       */
      enabled: boolean;
    };
    export type setLifecycleEventsEnabledReturnValue = {};
    /**
     * Toggles mouse event-based touch event emulation.
     */
    export type setTouchEmulationEnabledParameters = {
      /**
       * Whether the touch event emulation should be enabled.
       */
      enabled: boolean;
      /**
       * Touch/gesture events configuration. Default: current platform.
       */
      configuration?: "mobile" | "desktop";
    };
    export type setTouchEmulationEnabledReturnValue = {};
    /**
     * Starts sending each frame using the `screencastFrame` event.
     */
    export type startScreencastParameters = {
      /**
       * Image compression format.
       */
      format?: "jpeg" | "png";
      /**
       * Compression quality from range [0..100].
       */
      quality?: number;
      /**
       * Maximum screenshot width.
       */
      maxWidth?: number;
      /**
       * Maximum screenshot height.
       */
      maxHeight?: number;
      /**
       * Send every n-th frame.
       */
      everyNthFrame?: number;
    };
    export type startScreencastReturnValue = {};
    /**
     * Force the page stop all navigations and pending resource fetches.
     */
    export type stopLoadingParameters = {};
    export type stopLoadingReturnValue = {};
    /**
     * Crashes renderer on the IO thread, generates minidumps.
     */
    export type crashParameters = {};
    export type crashReturnValue = {};
    /**
     * Tries to close page, running its beforeunload hooks, if any.
     */
    export type closeParameters = {};
    export type closeReturnValue = {};
    /**
     * Tries to update the web lifecycle state of the page.
It will transition the page to the given state according to:
https://github.com/WICG/web-lifecycle/
     */
    export type setWebLifecycleStateParameters = {
      /**
       * Target lifecycle state
       */
      state: "frozen" | "active";
    };
    export type setWebLifecycleStateReturnValue = {};
    /**
     * Stops sending each frame in the `screencastFrame`.
     */
    export type stopScreencastParameters = {};
    export type stopScreencastReturnValue = {};
    /**
     * Requests backend to produce compilation cache for the specified scripts.
`scripts` are appended to the list of scripts for which the cache
would be produced. The list may be reset during page navigation.
When script with a matching URL is encountered, the cache is optionally
produced upon backend discretion, based on internal heuristics.
See also: `Page.compilationCacheProduced`.
     */
    export type produceCompilationCacheParameters = {
      scripts: CompilationCacheParams[];
    };
    export type produceCompilationCacheReturnValue = {};
    /**
     * Seeds compilation cache for given url. Compilation cache does not survive
cross-process navigation.
     */
    export type addCompilationCacheParameters = {
      url: string;
      /**
       * Base64-encoded data
       */
      data: binary;
    };
    export type addCompilationCacheReturnValue = {};
    /**
     * Clears seeded compilation cache.
     */
    export type clearCompilationCacheParameters = {};
    export type clearCompilationCacheReturnValue = {};
    /**
     * Sets the Secure Payment Confirmation transaction mode.
https://w3c.github.io/secure-payment-confirmation/#sctn-automation-set-spc-transaction-mode
     */
    export type setSPCTransactionModeParameters = {
      mode: "none" | "autoAccept" | "autoChooseToAuthAnotherWay" | "autoReject" | "autoOptOut";
    };
    export type setSPCTransactionModeReturnValue = {};
    /**
     * Extensions for Custom Handlers API:
https://html.spec.whatwg.org/multipage/system-state.html#rph-automation
     */
    export type setRPHRegistrationModeParameters = {
      mode: "none" | "autoAccept" | "autoReject";
    };
    export type setRPHRegistrationModeReturnValue = {};
    /**
     * Generates a report for testing.
     */
    export type generateTestReportParameters = {
      /**
       * Message to be displayed in the report.
       */
      message: string;
      /**
       * Specifies the endpoint group to deliver the report to.
       */
      group?: string;
    };
    export type generateTestReportReturnValue = {};
    /**
     * Pauses page execution. Can be resumed using generic Runtime.runIfWaitingForDebugger.
     */
    export type waitForDebuggerParameters = {};
    export type waitForDebuggerReturnValue = {};
    /**
     * Intercept file chooser requests and transfer control to protocol clients.
When file chooser interception is enabled, native file chooser dialog is not shown.
Instead, a protocol event `Page.fileChooserOpened` is emitted.
     */
    export type setInterceptFileChooserDialogParameters = {
      enabled: boolean;
      /**
       * If true, cancels the dialog by emitting relevant events (if any)
in addition to not showing it if the interception is enabled
(default: false).
       */
      cancel?: boolean;
    };
    export type setInterceptFileChooserDialogReturnValue = {};
    /**
     * Enable/disable prerendering manually.

This command is a short-term solution for https://crbug.com/1440085.
See https://docs.google.com/document/d/12HVmFxYj5Jc-eJr5OmWsa2bqTJsbgGLKI6ZIyx0_wpA
for more details.

TODO(https://crbug.com/1440085): Remove this once Puppeteer supports tab targets.
     */
    export type setPrerenderingAllowedParameters = {
      isAllowed: boolean;
    };
    export type setPrerenderingAllowedReturnValue = {};
    /**
     * Get the annotated page content for the main frame.
This is an experimental command that is subject to change.
     */
    export type getAnnotatedPageContentParameters = {
      /**
       * Whether to include actionable information. Defaults to true.
       */
      includeActionableInformation?: boolean;
    };
    export type getAnnotatedPageContentReturnValue = {
      /**
       * The annotated page content as a base64 encoded protobuf.
The format is defined by the `AnnotatedPageContent` message in
components/optimization_guide/proto/features/common_quality_data.proto
       */
      content: binary;
    };
  }
  export namespace Performance {
    /**
     * Run-time execution metric.
     */
    export interface Metric {
      /**
       * Metric name.
       */
      name: string;
      /**
       * Metric value.
       */
      value: number;
    }
    /**
     * Current values of the metrics.
     */
    export type metricsPayload = {
      /**
       * Current values of the metrics.
       */
      metrics: Metric[];
      /**
       * Timestamp title.
       */
      title: string;
    };
    /**
     * Disable collecting and reporting metrics.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enable collecting and reporting metrics.
     */
    export type enableParameters = {
      /**
       * Time domain to use for collecting and reporting duration metrics.
       */
      timeDomain?: "timeTicks" | "threadTicks";
    };
    export type enableReturnValue = {};
    /**
     * Sets time domain to use for collecting and reporting duration metrics.
Note that this must be called before enabling metrics collection. Calling
this method while metrics collection is enabled returns an error.
     */
    export type setTimeDomainParameters = {
      /**
       * Time domain
       */
      timeDomain: "timeTicks" | "threadTicks";
    };
    export type setTimeDomainReturnValue = {};
    /**
     * Retrieve current values of run-time metrics.
     */
    export type getMetricsParameters = {};
    export type getMetricsReturnValue = {
      /**
       * Current values for run-time metrics.
       */
      metrics: Metric[];
    };
  }
  /**
   * Reporting of performance timeline events, as specified in
https://w3c.github.io/performance-timeline/#dom-performanceobserver.
   */
  export namespace PerformanceTimeline {
    /**
     * See https://github.com/WICG/LargestContentfulPaint and largest_contentful_paint.idl
     */
    export interface LargestContentfulPaint {
      renderTime: Network.TimeSinceEpoch;
      loadTime: Network.TimeSinceEpoch;
      /**
       * The number of pixels being painted.
       */
      size: number;
      /**
       * The id attribute of the element, if available.
       */
      elementId?: string;
      /**
       * The URL of the image (may be trimmed).
       */
      url?: string;
      nodeId?: DOM.BackendNodeId;
    }
    export interface LayoutShiftAttribution {
      previousRect: DOM.Rect;
      currentRect: DOM.Rect;
      nodeId?: DOM.BackendNodeId;
    }
    /**
     * See https://wicg.github.io/layout-instability/#sec-layout-shift and layout_shift.idl
     */
    export interface LayoutShift {
      /**
       * Score increment produced by this event.
       */
      value: number;
      hadRecentInput: boolean;
      lastInputTime: Network.TimeSinceEpoch;
      sources: LayoutShiftAttribution[];
    }
    export interface TimelineEvent {
      /**
       * Identifies the frame that this event is related to. Empty for non-frame targets.
       */
      frameId: Page.FrameId;
      /**
       * The event type, as specified in https://w3c.github.io/performance-timeline/#dom-performanceentry-entrytype
This determines which of the optional "details" fields is present.
       */
      type: string;
      /**
       * Name may be empty depending on the type.
       */
      name: string;
      /**
       * Time in seconds since Epoch, monotonically increasing within document lifetime.
       */
      time: Network.TimeSinceEpoch;
      /**
       * Event duration, if applicable.
       */
      duration?: number;
      lcpDetails?: LargestContentfulPaint;
      layoutShiftDetails?: LayoutShift;
    }
    /**
     * Sent when a performance timeline event is added. See reportPerformanceTimeline method.
     */
    export type timelineEventAddedPayload = {
      event: TimelineEvent;
    };
    /**
     * Previously buffered events would be reported before method returns.
See also: timelineEventAdded
     */
    export type enableParameters = {
      /**
       * The types of event to report, as specified in
https://w3c.github.io/performance-timeline/#dom-performanceentry-entrytype
The specified filter overrides any previous filters, passing empty
filter disables recording.
Note that not all types exposed to the web platform are currently supported.
       */
      eventTypes: string[];
    };
    export type enableReturnValue = {};
  }
  export namespace Preload {
    /**
     * Unique id
     */
    export type RuleSetId = string;
    /**
     * Corresponds to SpeculationRuleSet
     */
    export interface RuleSet {
      id: RuleSetId;
      /**
       * Identifies a document which the rule set is associated with.
       */
      loaderId: Network.LoaderId;
      /**
       * Source text of JSON representing the rule set. If it comes from
`<script>` tag, it is the textContent of the node. Note that it is
a JSON for valid case.

See also:
- https://wicg.github.io/nav-speculation/speculation-rules.html
- https://github.com/WICG/nav-speculation/blob/main/triggers.md
       */
      sourceText: string;
      /**
       * A speculation rule set is either added through an inline
`<script>` tag or through an external resource via the
'Speculation-Rules' HTTP header. For the first case, we include
the BackendNodeId of the relevant `<script>` tag. For the second
case, we include the external URL where the rule set was loaded
from, and also RequestId if Network domain is enabled.

See also:
- https://wicg.github.io/nav-speculation/speculation-rules.html#speculation-rules-script
- https://wicg.github.io/nav-speculation/speculation-rules.html#speculation-rules-header
       */
      backendNodeId?: DOM.BackendNodeId;
      url?: string;
      requestId?: Network.RequestId;
      /**
       * Error information
`errorMessage` is null iff `errorType` is null.
       */
      errorType?: RuleSetErrorType;
      /**
       * TODO(https://crbug.com/1425354): Replace this property with structured error.
       */
      errorMessage?: string;
      /**
       * For more details, see:
https://github.com/WICG/nav-speculation/blob/main/speculation-rules-tags.md
       */
      tag?: string;
    }
    export type RuleSetErrorType = "SourceIsNotJsonObject" | "InvalidRulesSkipped" | "InvalidRulesetLevelTag";
    /**
     * The type of preloading attempted. It corresponds to
mojom::SpeculationAction (although PrefetchWithSubresources is omitted as it
isn't being used by clients).
     */
    export type SpeculationAction = "Prefetch" | "Prerender" | "PrerenderUntilScript";
    /**
     * Corresponds to mojom::SpeculationTargetHint.
See https://github.com/WICG/nav-speculation/blob/main/triggers.md#window-name-targeting-hints
     */
    export type SpeculationTargetHint = "Blank" | "Self";
    /**
     * A key that identifies a preloading attempt.

The url used is the url specified by the trigger (i.e. the initial URL), and
not the final url that is navigated to. For example, prerendering allows
same-origin main frame navigations during the attempt, but the attempt is
still keyed with the initial URL.
     */
    export interface PreloadingAttemptKey {
      loaderId: Network.LoaderId;
      action: SpeculationAction;
      url: string;
      formSubmission?: boolean;
      targetHint?: SpeculationTargetHint;
    }
    /**
     * Lists sources for a preloading attempt, specifically the ids of rule sets
that had a speculation rule that triggered the attempt, and the
BackendNodeIds of <a href> or <area href> elements that triggered the
attempt (in the case of attempts triggered by a document rule). It is
possible for multiple rule sets and links to trigger a single attempt.
     */
    export interface PreloadingAttemptSource {
      key: PreloadingAttemptKey;
      ruleSetIds: RuleSetId[];
      nodeIds: DOM.BackendNodeId[];
    }
    /**
     * Chrome manages different types of preloads together using a
concept of preloading pipeline. For example, if a site uses a
SpeculationRules for prerender, Chrome first starts a prefetch and
then upgrades it to prerender.

CDP events for them are emitted separately but they share
`PreloadPipelineId`.
     */
    export type PreloadPipelineId = string;
    /**
     * List of FinalStatus reasons for Prerender2.
     */
    export type PrerenderFinalStatus = "Activated" | "Destroyed" | "LowEndDevice" | "InvalidSchemeRedirect" | "InvalidSchemeNavigation" | "NavigationRequestBlockedByCsp" | "MojoBinderPolicy" | "RendererProcessCrashed" | "RendererProcessKilled" | "Download" | "TriggerDestroyed" | "NavigationNotCommitted" | "NavigationBadHttpStatus" | "ClientCertRequested" | "NavigationRequestNetworkError" | "CancelAllHostsForTesting" | "DidFailLoad" | "Stop" | "SslCertificateError" | "LoginAuthRequested" | "UaChangeRequiresReload" | "BlockedByClient" | "AudioOutputDeviceRequested" | "MixedContent" | "TriggerBackgrounded" | "MemoryLimitExceeded" | "DataSaverEnabled" | "TriggerUrlHasEffectiveUrl" | "ActivatedBeforeStarted" | "InactivePageRestriction" | "StartFailed" | "TimeoutBackgrounded" | "CrossSiteRedirectInInitialNavigation" | "CrossSiteNavigationInInitialNavigation" | "SameSiteCrossOriginRedirectNotOptInInInitialNavigation" | "SameSiteCrossOriginNavigationNotOptInInInitialNavigation" | "ActivationNavigationParameterMismatch" | "ActivatedInBackground" | "EmbedderHostDisallowed" | "ActivationNavigationDestroyedBeforeSuccess" | "TabClosedByUserGesture" | "TabClosedWithoutUserGesture" | "PrimaryMainFrameRendererProcessCrashed" | "PrimaryMainFrameRendererProcessKilled" | "ActivationFramePolicyNotCompatible" | "PreloadingDisabled" | "BatterySaverEnabled" | "ActivatedDuringMainFrameNavigation" | "PreloadingUnsupportedByWebContents" | "CrossSiteRedirectInMainFrameNavigation" | "CrossSiteNavigationInMainFrameNavigation" | "SameSiteCrossOriginRedirectNotOptInInMainFrameNavigation" | "SameSiteCrossOriginNavigationNotOptInInMainFrameNavigation" | "MemoryPressureOnTrigger" | "MemoryPressureAfterTriggered" | "PrerenderingDisabledByDevTools" | "SpeculationRuleRemoved" | "ActivatedWithAuxiliaryBrowsingContexts" | "MaxNumOfRunningEagerPrerendersExceeded" | "MaxNumOfRunningNonEagerPrerendersExceeded" | "MaxNumOfRunningEmbedderPrerendersExceeded" | "PrerenderingUrlHasEffectiveUrl" | "RedirectedPrerenderingUrlHasEffectiveUrl" | "ActivationUrlHasEffectiveUrl" | "JavaScriptInterfaceAdded" | "JavaScriptInterfaceRemoved" | "AllPrerenderingCanceled" | "WindowClosed" | "SlowNetwork" | "OtherPrerenderedPageActivated" | "V8OptimizerDisabled" | "PrerenderFailedDuringPrefetch" | "BrowsingDataRemoved" | "PrerenderHostReused" | "FormSubmitWhenPrerendering" | "CrossDocumentRestart";
    /**
     * Preloading status values, see also PreloadingTriggeringOutcome. This
status is shared by prefetchStatusUpdated and prerenderStatusUpdated.
     */
    export type PreloadingStatus = "Pending" | "Running" | "Ready" | "Success" | "Failure" | "NotSupported";
    /**
     * TODO(https://crbug.com/1384419): revisit the list of PrefetchStatus and
filter out the ones that aren't necessary to the developers.
     */
    export type PrefetchStatus = "PrefetchAllowed" | "PrefetchFailedIneligibleRedirect" | "PrefetchFailedInvalidRedirect" | "PrefetchFailedMIMENotSupported" | "PrefetchFailedNetError" | "PrefetchFailedNon2XX" | "PrefetchEvictedAfterBrowsingDataRemoved" | "PrefetchEvictedAfterCandidateRemoved" | "PrefetchEvictedForNewerPrefetch" | "PrefetchHeldback" | "PrefetchIneligibleRetryAfter" | "PrefetchIsPrivacyDecoy" | "PrefetchIsStale" | "PrefetchNotEligibleBrowserContextOffTheRecord" | "PrefetchNotEligibleDataSaverEnabled" | "PrefetchNotEligibleExistingProxy" | "PrefetchNotEligibleHostIsNonUnique" | "PrefetchNotEligibleNonDefaultStoragePartition" | "PrefetchNotEligibleSameSiteCrossOriginPrefetchRequiredProxy" | "PrefetchNotEligibleSchemeIsNotHttps" | "PrefetchNotEligibleUserHasCookies" | "PrefetchNotEligibleUserHasServiceWorker" | "PrefetchNotEligibleUserHasServiceWorkerNoFetchHandler" | "PrefetchNotEligibleRedirectFromServiceWorker" | "PrefetchNotEligibleRedirectToServiceWorker" | "PrefetchNotEligibleBatterySaverEnabled" | "PrefetchNotEligiblePreloadingDisabled" | "PrefetchNotFinishedInTime" | "PrefetchNotStarted" | "PrefetchNotUsedCookiesChanged" | "PrefetchProxyNotAvailable" | "PrefetchResponseUsed" | "PrefetchSuccessfulButNotUsed" | "PrefetchNotUsedProbeFailed";
    /**
     * Information of headers to be displayed when the header mismatch occurred.
     */
    export interface PrerenderMismatchedHeaders {
      headerName: string;
      initialValue?: string;
      activationValue?: string;
    }
    /**
     * Upsert. Currently, it is only emitted when a rule set added.
     */
    export type ruleSetUpdatedPayload = {
      ruleSet: RuleSet;
    };
    export type ruleSetRemovedPayload = {
      id: RuleSetId;
    };
    /**
     * Fired when a preload enabled state is updated.
     */
    export type preloadEnabledStateUpdatedPayload = {
      disabledByPreference: boolean;
      disabledByDataSaver: boolean;
      disabledByBatterySaver: boolean;
      disabledByHoldbackPrefetchSpeculationRules: boolean;
      disabledByHoldbackPrerenderSpeculationRules: boolean;
    };
    /**
     * Fired when a prefetch attempt is updated.
     */
    export type prefetchStatusUpdatedPayload = {
      key: PreloadingAttemptKey;
      pipelineId: PreloadPipelineId;
      /**
       * The frame id of the frame initiating prefetch.
       */
      initiatingFrameId: Page.FrameId;
      prefetchUrl: string;
      status: PreloadingStatus;
      prefetchStatus: PrefetchStatus;
      requestId: Network.RequestId;
    };
    /**
     * Fired when a prerender attempt is updated.
     */
    export type prerenderStatusUpdatedPayload = {
      key: PreloadingAttemptKey;
      pipelineId: PreloadPipelineId;
      status: PreloadingStatus;
      prerenderStatus?: PrerenderFinalStatus;
      /**
       * This is used to give users more information about the name of Mojo interface
that is incompatible with prerender and has caused the cancellation of the attempt.
       */
      disallowedMojoInterface?: string;
      mismatchedHeaders?: PrerenderMismatchedHeaders[];
    };
    /**
     * Send a list of sources for all preloading attempts in a document.
     */
    export type preloadingAttemptSourcesUpdatedPayload = {
      loaderId: Network.LoaderId;
      preloadingAttemptSources: PreloadingAttemptSource[];
    };
    export type enableParameters = {};
    export type enableReturnValue = {};
    export type disableParameters = {};
    export type disableReturnValue = {};
  }
  export namespace Security {
    /**
     * An internal certificate ID value.
     */
    export type CertificateId = number;
    /**
     * A description of mixed content (HTTP resources on HTTPS pages), as defined by
https://www.w3.org/TR/mixed-content/#categories
     */
    export type MixedContentType = "blockable" | "optionally-blockable" | "none";
    /**
     * The security level of a page or resource.
     */
    export type SecurityState = "unknown" | "neutral" | "insecure" | "secure" | "info" | "insecure-broken";
    /**
     * Details about the security state of the page certificate.
     */
    export interface CertificateSecurityState {
      /**
       * Protocol name (e.g. "TLS 1.2" or "QUIC").
       */
      protocol: string;
      /**
       * Key Exchange used by the connection, or the empty string if not applicable.
       */
      keyExchange: string;
      /**
       * (EC)DH group used by the connection, if applicable.
       */
      keyExchangeGroup?: string;
      /**
       * Cipher name.
       */
      cipher: string;
      /**
       * TLS MAC. Note that AEAD ciphers do not have separate MACs.
       */
      mac?: string;
      /**
       * Page certificate.
       */
      certificate: string[];
      /**
       * Certificate subject name.
       */
      subjectName: string;
      /**
       * Name of the issuing CA.
       */
      issuer: string;
      /**
       * Certificate valid from date.
       */
      validFrom: Network.TimeSinceEpoch;
      /**
       * Certificate valid to (expiration) date
       */
      validTo: Network.TimeSinceEpoch;
      /**
       * The highest priority network error code, if the certificate has an error.
       */
      certificateNetworkError?: string;
      /**
       * True if the certificate uses a weak signature algorithm.
       */
      certificateHasWeakSignature: boolean;
      /**
       * True if the certificate has a SHA1 signature in the chain.
       */
      certificateHasSha1Signature: boolean;
      /**
       * True if modern SSL
       */
      modernSSL: boolean;
      /**
       * True if the connection is using an obsolete SSL protocol.
       */
      obsoleteSslProtocol: boolean;
      /**
       * True if the connection is using an obsolete SSL key exchange.
       */
      obsoleteSslKeyExchange: boolean;
      /**
       * True if the connection is using an obsolete SSL cipher.
       */
      obsoleteSslCipher: boolean;
      /**
       * True if the connection is using an obsolete SSL signature.
       */
      obsoleteSslSignature: boolean;
    }
    export type SafetyTipStatus = "badReputation" | "lookalike";
    export interface SafetyTipInfo {
      /**
       * Describes whether the page triggers any safety tips or reputation warnings. Default is unknown.
       */
      safetyTipStatus: SafetyTipStatus;
      /**
       * The URL the safety tip suggested ("Did you mean?"). Only filled in for lookalike matches.
       */
      safeUrl?: string;
    }
    /**
     * Security state information about the page.
     */
    export interface VisibleSecurityState {
      /**
       * The security level of the page.
       */
      securityState: SecurityState;
      /**
       * Security state details about the page certificate.
       */
      certificateSecurityState?: CertificateSecurityState;
      /**
       * The type of Safety Tip triggered on the page. Note that this field will be set even if the Safety Tip UI was not actually shown.
       */
      safetyTipInfo?: SafetyTipInfo;
      /**
       * Array of security state issues ids.
       */
      securityStateIssueIds: string[];
    }
    /**
     * An explanation of an factor contributing to the security state.
     */
    export interface SecurityStateExplanation {
      /**
       * Security state representing the severity of the factor being explained.
       */
      securityState: SecurityState;
      /**
       * Title describing the type of factor.
       */
      title: string;
      /**
       * Short phrase describing the type of factor.
       */
      summary: string;
      /**
       * Full text explanation of the factor.
       */
      description: string;
      /**
       * The type of mixed content described by the explanation.
       */
      mixedContentType: MixedContentType;
      /**
       * Page certificate.
       */
      certificate: string[];
      /**
       * Recommendations to fix any issues.
       */
      recommendations?: string[];
    }
    /**
     * Information about insecure content on the page.
     */
    export interface InsecureContentStatus {
      /**
       * Always false.
       */
      ranMixedContent: boolean;
      /**
       * Always false.
       */
      displayedMixedContent: boolean;
      /**
       * Always false.
       */
      containedMixedForm: boolean;
      /**
       * Always false.
       */
      ranContentWithCertErrors: boolean;
      /**
       * Always false.
       */
      displayedContentWithCertErrors: boolean;
      /**
       * Always set to unknown.
       */
      ranInsecureContentStyle: SecurityState;
      /**
       * Always set to unknown.
       */
      displayedInsecureContentStyle: SecurityState;
    }
    /**
     * The action to take when a certificate error occurs. continue will continue processing the
request and cancel will cancel the request.
     */
    export type CertificateErrorAction = "continue" | "cancel";
    /**
     * There is a certificate error. If overriding certificate errors is enabled, then it should be
handled with the `handleCertificateError` command. Note: this event does not fire if the
certificate error has been allowed internally. Only one client per target should override
certificate errors at the same time.
     */
    export type certificateErrorPayload = {
      /**
       * The ID of the event.
       */
      eventId: number;
      /**
       * The type of the error.
       */
      errorType: string;
      /**
       * The url that was requested.
       */
      requestURL: string;
    };
    /**
     * The security state of the page changed.
     */
    export type visibleSecurityStateChangedPayload = {
      /**
       * Security state information about the page.
       */
      visibleSecurityState: VisibleSecurityState;
    };
    /**
     * The security state of the page changed. No longer being sent.
     */
    export type securityStateChangedPayload = {
      /**
       * Security state.
       */
      securityState: SecurityState;
      /**
       * True if the page was loaded over cryptographic transport such as HTTPS.
       */
      schemeIsCryptographic: boolean;
      /**
       * Previously a list of explanations for the security state. Now always
empty.
       */
      explanations: SecurityStateExplanation[];
      /**
       * Information about insecure content on the page.
       */
      insecureContentStatus: InsecureContentStatus;
      /**
       * Overrides user-visible description of the state. Always omitted.
       */
      summary?: string;
    };
    /**
     * Disables tracking security state changes.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables tracking security state changes.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Enable/disable whether all certificate errors should be ignored.
     */
    export type setIgnoreCertificateErrorsParameters = {
      /**
       * If true, all certificate errors will be ignored.
       */
      ignore: boolean;
    };
    export type setIgnoreCertificateErrorsReturnValue = {};
    /**
     * Handles a certificate error that fired a certificateError event.
     */
    export type handleCertificateErrorParameters = {
      /**
       * The ID of the event.
       */
      eventId: number;
      /**
       * The action to take on the certificate error.
       */
      action: CertificateErrorAction;
    };
    export type handleCertificateErrorReturnValue = {};
    /**
     * Enable/disable overriding certificate errors. If enabled, all certificate error events need to
be handled by the DevTools client and should be answered with `handleCertificateError` commands.
     */
    export type setOverrideCertificateErrorsParameters = {
      /**
       * If true, certificate errors will be overridden.
       */
      override: boolean;
    };
    export type setOverrideCertificateErrorsReturnValue = {};
  }
  export namespace ServiceWorker {
    export type RegistrationID = string;
    /**
     * ServiceWorker registration.
     */
    export interface ServiceWorkerRegistration {
      registrationId: RegistrationID;
      scopeURL: string;
      isDeleted: boolean;
    }
    export type ServiceWorkerVersionRunningStatus = "stopped" | "starting" | "running" | "stopping";
    export type ServiceWorkerVersionStatus = "new" | "installing" | "installed" | "activating" | "activated" | "redundant";
    /**
     * ServiceWorker version.
     */
    export interface ServiceWorkerVersion {
      versionId: string;
      registrationId: RegistrationID;
      scriptURL: string;
      runningStatus: ServiceWorkerVersionRunningStatus;
      status: ServiceWorkerVersionStatus;
      /**
       * The Last-Modified header value of the main script.
       */
      scriptLastModified?: number;
      /**
       * The time at which the response headers of the main script were received from the server.
For cached script it is the last time the cache entry was validated.
       */
      scriptResponseTime?: number;
      controlledClients?: Target.TargetID[];
      targetId?: Target.TargetID;
      routerRules?: string;
    }
    /**
     * ServiceWorker error message.
     */
    export interface ServiceWorkerErrorMessage {
      errorMessage: string;
      registrationId: RegistrationID;
      versionId: string;
      sourceURL: string;
      lineNumber: number;
      columnNumber: number;
    }
    export type workerErrorReportedPayload = {
      errorMessage: ServiceWorkerErrorMessage;
    };
    export type workerRegistrationUpdatedPayload = {
      registrations: ServiceWorkerRegistration[];
    };
    export type workerVersionUpdatedPayload = {
      versions: ServiceWorkerVersion[];
    };
    export type deliverPushMessageParameters = {
      origin: string;
      registrationId: RegistrationID;
      data: string;
    };
    export type deliverPushMessageReturnValue = {};
    export type disableParameters = {};
    export type disableReturnValue = {};
    export type dispatchSyncEventParameters = {
      origin: string;
      registrationId: RegistrationID;
      tag: string;
      lastChance: boolean;
    };
    export type dispatchSyncEventReturnValue = {};
    export type dispatchPeriodicSyncEventParameters = {
      origin: string;
      registrationId: RegistrationID;
      tag: string;
    };
    export type dispatchPeriodicSyncEventReturnValue = {};
    export type enableParameters = {};
    export type enableReturnValue = {};
    export type setForceUpdateOnPageLoadParameters = {
      forceUpdateOnPageLoad: boolean;
    };
    export type setForceUpdateOnPageLoadReturnValue = {};
    export type skipWaitingParameters = {
      scopeURL: string;
    };
    export type skipWaitingReturnValue = {};
    export type startWorkerParameters = {
      scopeURL: string;
    };
    export type startWorkerReturnValue = {};
    export type stopAllWorkersParameters = {};
    export type stopAllWorkersReturnValue = {};
    export type stopWorkerParameters = {
      versionId: string;
    };
    export type stopWorkerReturnValue = {};
    export type unregisterParameters = {
      scopeURL: string;
    };
    export type unregisterReturnValue = {};
    export type updateRegistrationParameters = {
      scopeURL: string;
    };
    export type updateRegistrationReturnValue = {};
  }
  export namespace SmartCardEmulation {
    /**
     * Indicates the PC/SC error code.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__ErrorCodes.html
Microsoft: https://learn.microsoft.com/en-us/windows/win32/secauthn/authentication-return-values
     */
    export type ResultCode = "success" | "removed-card" | "reset-card" | "unpowered-card" | "unresponsive-card" | "unsupported-card" | "reader-unavailable" | "sharing-violation" | "not-transacted" | "no-smartcard" | "proto-mismatch" | "system-cancelled" | "not-ready" | "cancelled" | "insufficient-buffer" | "invalid-handle" | "invalid-parameter" | "invalid-value" | "no-memory" | "timeout" | "unknown-reader" | "unsupported-feature" | "no-readers-available" | "service-stopped" | "no-service" | "comm-error" | "internal-error" | "server-too-busy" | "unexpected" | "shutdown" | "unknown-card" | "unknown";
    /**
     * Maps to the |SCARD_SHARE_*| values.
     */
    export type ShareMode = "shared" | "exclusive" | "direct";
    /**
     * Indicates what the reader should do with the card.
     */
    export type Disposition = "leave-card" | "reset-card" | "unpower-card" | "eject-card";
    /**
     * Maps to |SCARD_*| connection state values.
     */
    export type ConnectionState = "absent" | "present" | "swallowed" | "powered" | "negotiable" | "specific";
    /**
     * Maps to the |SCARD_STATE_*| flags.
     */
    export interface ReaderStateFlags {
      unaware?: boolean;
      ignore?: boolean;
      changed?: boolean;
      unknown?: boolean;
      unavailable?: boolean;
      empty?: boolean;
      present?: boolean;
      exclusive?: boolean;
      inuse?: boolean;
      mute?: boolean;
      unpowered?: boolean;
    }
    /**
     * Maps to the |SCARD_PROTOCOL_*| flags.
     */
    export interface ProtocolSet {
      t0?: boolean;
      t1?: boolean;
      raw?: boolean;
    }
    /**
     * Maps to the |SCARD_PROTOCOL_*| values.
     */
    export type Protocol = "t0" | "t1" | "raw";
    export interface ReaderStateIn {
      reader: string;
      currentState: ReaderStateFlags;
      currentInsertionCount: number;
    }
    export interface ReaderStateOut {
      reader: string;
      eventState: ReaderStateFlags;
      eventCount: number;
      atr: binary;
    }
    /**
     * Fired when |SCardEstablishContext| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardestablishcontext
     */
    export type establishContextRequestedPayload = {
      requestId: string;
    };
    /**
     * Fired when |SCardReleaseContext| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga6aabcba7744c5c9419fdd6404f73a934
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardreleasecontext
     */
    export type releaseContextRequestedPayload = {
      requestId: string;
      contextId: number;
    };
    /**
     * Fired when |SCardListReaders| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga93b07815789b3cf2629d439ecf20f0d9
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardlistreadersa
     */
    export type listReadersRequestedPayload = {
      requestId: string;
      contextId: number;
    };
    /**
     * Fired when |SCardGetStatusChange| is called. Timeout is specified in milliseconds.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga33247d5d1257d59e55647c3bb717db24
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetstatuschangea
     */
    export type getStatusChangeRequestedPayload = {
      requestId: string;
      contextId: number;
      readerStates: ReaderStateIn[];
      /**
       * in milliseconds, if absent, it means "infinite"
       */
      timeout?: number;
    };
    /**
     * Fired when |SCardCancel| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcancel
     */
    export type cancelRequestedPayload = {
      requestId: string;
      contextId: number;
    };
    /**
     * Fired when |SCardConnect| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardconnecta
     */
    export type connectRequestedPayload = {
      requestId: string;
      contextId: number;
      reader: string;
      shareMode: ShareMode;
      preferredProtocols: ProtocolSet;
    };
    /**
     * Fired when |SCardDisconnect| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4be198045c73ec0deb79e66c0ca1738a
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scarddisconnect
     */
    export type disconnectRequestedPayload = {
      requestId: string;
      handle: number;
      disposition: Disposition;
    };
    /**
     * Fired when |SCardTransmit| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga9a2d77242a271310269065e64633ab99
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardtransmit
     */
    export type transmitRequestedPayload = {
      requestId: string;
      handle: number;
      data: binary;
      protocol?: Protocol;
    };
    /**
     * Fired when |SCardControl| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcontrol
     */
    export type controlRequestedPayload = {
      requestId: string;
      handle: number;
      controlCode: number;
      data: binary;
    };
    /**
     * Fired when |SCardGetAttrib| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacfec51917255b7a25b94c5104961602
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetattrib
     */
    export type getAttribRequestedPayload = {
      requestId: string;
      handle: number;
      attribId: number;
    };
    /**
     * Fired when |SCardSetAttrib| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardsetattrib
     */
    export type setAttribRequestedPayload = {
      requestId: string;
      handle: number;
      attribId: number;
      data: binary;
    };
    /**
     * Fired when |SCardStatus| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae49c3c894ad7ac12a5b896bde70d0382
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardstatusa
     */
    export type statusRequestedPayload = {
      requestId: string;
      handle: number;
    };
    /**
     * Fired when |SCardBeginTransaction| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardbegintransaction
     */
    export type beginTransactionRequestedPayload = {
      requestId: string;
      handle: number;
    };
    /**
     * Fired when |SCardEndTransaction| is called.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae8742473b404363e5c587f570d7e2f3b
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardendtransaction
     */
    export type endTransactionRequestedPayload = {
      requestId: string;
      handle: number;
      disposition: Disposition;
    };
    /**
     * Enables the |SmartCardEmulation| domain.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Disables the |SmartCardEmulation| domain.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Reports the successful result of a |SCardEstablishContext| call.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaa1b8970169fd4883a6dc4a8f43f19b67
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardestablishcontext
     */
    export type reportEstablishContextResultParameters = {
      requestId: string;
      contextId: number;
    };
    export type reportEstablishContextResultReturnValue = {};
    /**
     * Reports the successful result of a |SCardReleaseContext| call.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga6aabcba7744c5c9419fdd6404f73a934
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardreleasecontext
     */
    export type reportReleaseContextResultParameters = {
      requestId: string;
    };
    export type reportReleaseContextResultReturnValue = {};
    /**
     * Reports the successful result of a |SCardListReaders| call.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga93b07815789b3cf2629d439ecf20f0d9
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardlistreadersa
     */
    export type reportListReadersResultParameters = {
      requestId: string;
      readers: string[];
    };
    export type reportListReadersResultReturnValue = {};
    /**
     * Reports the successful result of a |SCardGetStatusChange| call.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga33247d5d1257d59e55647c3bb717db24
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetstatuschangea
     */
    export type reportGetStatusChangeResultParameters = {
      requestId: string;
      readerStates: ReaderStateOut[];
    };
    export type reportGetStatusChangeResultReturnValue = {};
    /**
     * Reports the result of a |SCardBeginTransaction| call.
On success, this creates a new transaction object.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaddb835dce01a0da1d6ca02d33ee7d861
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardbegintransaction
     */
    export type reportBeginTransactionResultParameters = {
      requestId: string;
      handle: number;
    };
    export type reportBeginTransactionResultReturnValue = {};
    /**
     * Reports the successful result of a call that returns only a result code.
Used for: |SCardCancel|, |SCardDisconnect|, |SCardSetAttrib|, |SCardEndTransaction|.

This maps to:
1. SCardCancel
   PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacbbc0c6d6c0cbbeb4f4debf6fbeeee6
   Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcancel

2. SCardDisconnect
   PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4be198045c73ec0deb79e66c0ca1738a
   Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scarddisconnect

3. SCardSetAttrib
   PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga060f0038a4ddfd5dd2b8fadf3c3a2e4f
   Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardsetattrib

4. SCardEndTransaction
   PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae8742473b404363e5c587f570d7e2f3b
   Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardendtransaction
     */
    export type reportPlainResultParameters = {
      requestId: string;
    };
    export type reportPlainResultReturnValue = {};
    /**
     * Reports the successful result of a |SCardConnect| call.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga4e515829752e0a8dbc4d630696a8d6a5
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardconnecta
     */
    export type reportConnectResultParameters = {
      requestId: string;
      handle: number;
      activeProtocol?: Protocol;
    };
    export type reportConnectResultReturnValue = {};
    /**
     * Reports the successful result of a call that sends back data on success.
Used for |SCardTransmit|, |SCardControl|, and |SCardGetAttrib|.

This maps to:
1. SCardTransmit
   PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#ga9a2d77242a271310269065e64633ab99
   Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardtransmit

2. SCardControl
   PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gac3454d4657110fd7f753b2d3d8f4e32f
   Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardcontrol

3. SCardGetAttrib
   PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gaacfec51917255b7a25b94c5104961602
   Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardgetattrib
     */
    export type reportDataResultParameters = {
      requestId: string;
      data: binary;
    };
    export type reportDataResultReturnValue = {};
    /**
     * Reports the successful result of a |SCardStatus| call.

This maps to:
PC/SC Lite: https://pcsclite.apdu.fr/api/group__API.html#gae49c3c894ad7ac12a5b896bde70d0382
Microsoft: https://learn.microsoft.com/en-us/windows/win32/api/winscard/nf-winscard-scardstatusa
     */
    export type reportStatusResultParameters = {
      requestId: string;
      readerName: string;
      state: ConnectionState;
      atr: binary;
      protocol?: Protocol;
    };
    export type reportStatusResultReturnValue = {};
    /**
     * Reports an error result for the given request.
     */
    export type reportErrorParameters = {
      requestId: string;
      resultCode: ResultCode;
    };
    export type reportErrorReturnValue = {};
  }
  export namespace Storage {
    export type SerializedStorageKey = string;
    /**
     * Enum of possible storage types.
     */
    export type StorageType = "cookies" | "file_systems" | "indexeddb" | "local_storage" | "shader_cache" | "websql" | "service_workers" | "cache_storage" | "interest_groups" | "shared_storage" | "storage_buckets" | "all" | "other";
    /**
     * Usage for a storage type.
     */
    export interface UsageForType {
      /**
       * Name of storage type.
       */
      storageType: StorageType;
      /**
       * Storage usage (bytes).
       */
      usage: number;
    }
    /**
     * Pair of issuer origin and number of available (signed, but not used) Trust
Tokens from that issuer.
     */
    export interface TrustTokens {
      issuerOrigin: string;
      count: number;
    }
    /**
     * Protected audience interest group auction identifier.
     */
    export type InterestGroupAuctionId = string;
    /**
     * Enum of interest group access types.
     */
    export type InterestGroupAccessType = "join" | "leave" | "update" | "loaded" | "bid" | "win" | "additionalBid" | "additionalBidWin" | "topLevelBid" | "topLevelAdditionalBid" | "clear";
    /**
     * Enum of auction events.
     */
    export type InterestGroupAuctionEventType = "started" | "configResolved";
    /**
     * Enum of network fetches auctions can do.
     */
    export type InterestGroupAuctionFetchType = "bidderJs" | "bidderWasm" | "sellerJs" | "bidderTrustedSignals" | "sellerTrustedSignals";
    /**
     * Enum of shared storage access scopes.
     */
    export type SharedStorageAccessScope = "window" | "sharedStorageWorklet" | "protectedAudienceWorklet" | "header";
    /**
     * Enum of shared storage access methods.
     */
    export type SharedStorageAccessMethod = "addModule" | "createWorklet" | "selectURL" | "run" | "batchUpdate" | "set" | "append" | "delete" | "clear" | "get" | "keys" | "values" | "entries" | "length" | "remainingBudget";
    /**
     * Struct for a single key-value pair in an origin's shared storage.
     */
    export interface SharedStorageEntry {
      key: string;
      value: string;
    }
    /**
     * Details for an origin's shared storage.
     */
    export interface SharedStorageMetadata {
      /**
       * Time when the origin's shared storage was last created.
       */
      creationTime: Network.TimeSinceEpoch;
      /**
       * Number of key-value pairs stored in origin's shared storage.
       */
      length: number;
      /**
       * Current amount of bits of entropy remaining in the navigation budget.
       */
      remainingBudget: number;
      /**
       * Total number of bytes stored as key-value pairs in origin's shared
storage.
       */
      bytesUsed: number;
    }
    /**
     * Represents a dictionary object passed in as privateAggregationConfig to
run or selectURL.
     */
    export interface SharedStoragePrivateAggregationConfig {
      /**
       * The chosen aggregation service deployment.
       */
      aggregationCoordinatorOrigin?: string;
      /**
       * The context ID provided.
       */
      contextId?: string;
      /**
       * Configures the maximum size allowed for filtering IDs.
       */
      filteringIdMaxBytes: number;
      /**
       * The limit on the number of contributions in the final report.
       */
      maxContributions?: number;
    }
    /**
     * Pair of reporting metadata details for a candidate URL for `selectURL()`.
     */
    export interface SharedStorageReportingMetadata {
      eventType: string;
      reportingUrl: string;
    }
    /**
     * Bundles a candidate URL with its reporting metadata.
     */
    export interface SharedStorageUrlWithMetadata {
      /**
       * Spec of candidate URL.
       */
      url: string;
      /**
       * Any associated reporting metadata.
       */
      reportingMetadata: SharedStorageReportingMetadata[];
    }
    /**
     * Bundles the parameters for shared storage access events whose
presence/absence can vary according to SharedStorageAccessType.
     */
    export interface SharedStorageAccessParams {
      /**
       * Spec of the module script URL.
Present only for SharedStorageAccessMethods: addModule and
createWorklet.
       */
      scriptSourceUrl?: string;
      /**
       * String denoting "context-origin", "script-origin", or a custom
origin to be used as the worklet's data origin.
Present only for SharedStorageAccessMethod: createWorklet.
       */
      dataOrigin?: string;
      /**
       * Name of the registered operation to be run.
Present only for SharedStorageAccessMethods: run and selectURL.
       */
      operationName?: string;
      /**
       * ID of the operation call.
Present only for SharedStorageAccessMethods: run and selectURL.
       */
      operationId?: string;
      /**
       * Whether or not to keep the worket alive for future run or selectURL
calls.
Present only for SharedStorageAccessMethods: run and selectURL.
       */
      keepAlive?: boolean;
      /**
       * Configures the private aggregation options.
Present only for SharedStorageAccessMethods: run and selectURL.
       */
      privateAggregationConfig?: SharedStoragePrivateAggregationConfig;
      /**
       * The operation's serialized data in bytes (converted to a string).
Present only for SharedStorageAccessMethods: run and selectURL.
TODO(crbug.com/401011862): Consider updating this parameter to binary.
       */
      serializedData?: string;
      /**
       * Array of candidate URLs' specs, along with any associated metadata.
Present only for SharedStorageAccessMethod: selectURL.
       */
      urlsWithMetadata?: SharedStorageUrlWithMetadata[];
      /**
       * Spec of the URN:UUID generated for a selectURL call.
Present only for SharedStorageAccessMethod: selectURL.
       */
      urnUuid?: string;
      /**
       * Key for a specific entry in an origin's shared storage.
Present only for SharedStorageAccessMethods: set, append, delete, and
get.
       */
      key?: string;
      /**
       * Value for a specific entry in an origin's shared storage.
Present only for SharedStorageAccessMethods: set and append.
       */
      value?: string;
      /**
       * Whether or not to set an entry for a key if that key is already present.
Present only for SharedStorageAccessMethod: set.
       */
      ignoreIfPresent?: boolean;
      /**
       * A number denoting the (0-based) order of the worklet's
creation relative to all other shared storage worklets created by
documents using the current storage partition.
Present only for SharedStorageAccessMethods: addModule, createWorklet.
       */
      workletOrdinal?: number;
      /**
       * Hex representation of the DevTools token used as the TargetID for the
associated shared storage worklet.
Present only for SharedStorageAccessMethods: addModule, createWorklet,
run, selectURL, and any other SharedStorageAccessMethod when the
SharedStorageAccessScope is sharedStorageWorklet.
       */
      workletTargetId?: Target.TargetID;
      /**
       * Name of the lock to be acquired, if present.
Optionally present only for SharedStorageAccessMethods: batchUpdate,
set, append, delete, and clear.
       */
      withLock?: string;
      /**
       * If the method has been called as part of a batchUpdate, then this
number identifies the batch to which it belongs.
Optionally present only for SharedStorageAccessMethods:
batchUpdate (required), set, append, delete, and clear.
       */
      batchUpdateId?: string;
      /**
       * Number of modifier methods sent in batch.
Present only for SharedStorageAccessMethod: batchUpdate.
       */
      batchSize?: number;
    }
    export type StorageBucketsDurability = "relaxed" | "strict";
    export interface StorageBucket {
      storageKey: SerializedStorageKey;
      /**
       * If not specified, it is the default bucket of the storageKey.
       */
      name?: string;
    }
    export interface StorageBucketInfo {
      bucket: StorageBucket;
      id: string;
      expiration: Network.TimeSinceEpoch;
      /**
       * Storage quota (bytes).
       */
      quota: number;
      persistent: boolean;
      durability: StorageBucketsDurability;
    }
    /**
     * A single Related Website Set object.
     */
    export interface RelatedWebsiteSet {
      /**
       * The primary site of this set, along with the ccTLDs if there is any.
       */
      primarySites: string[];
      /**
       * The associated sites of this set, along with the ccTLDs if there is any.
       */
      associatedSites: string[];
      /**
       * The service sites of this set, along with the ccTLDs if there is any.
       */
      serviceSites: string[];
    }
    /**
     * A cache's contents have been modified.
     */
    export type cacheStorageContentUpdatedPayload = {
      /**
       * Origin to update.
       */
      origin: string;
      /**
       * Storage key to update.
       */
      storageKey: string;
      /**
       * Storage bucket to update.
       */
      bucketId: string;
      /**
       * Name of cache in origin.
       */
      cacheName: string;
    };
    /**
     * A cache has been added/deleted.
     */
    export type cacheStorageListUpdatedPayload = {
      /**
       * Origin to update.
       */
      origin: string;
      /**
       * Storage key to update.
       */
      storageKey: string;
      /**
       * Storage bucket to update.
       */
      bucketId: string;
    };
    /**
     * The origin's IndexedDB object store has been modified.
     */
    export type indexedDBContentUpdatedPayload = {
      /**
       * Origin to update.
       */
      origin: string;
      /**
       * Storage key to update.
       */
      storageKey: string;
      /**
       * Storage bucket to update.
       */
      bucketId: string;
      /**
       * Database to update.
       */
      databaseName: string;
      /**
       * ObjectStore to update.
       */
      objectStoreName: string;
    };
    /**
     * The origin's IndexedDB database list has been modified.
     */
    export type indexedDBListUpdatedPayload = {
      /**
       * Origin to update.
       */
      origin: string;
      /**
       * Storage key to update.
       */
      storageKey: string;
      /**
       * Storage bucket to update.
       */
      bucketId: string;
    };
    /**
     * One of the interest groups was accessed. Note that these events are global
to all targets sharing an interest group store.
     */
    export type interestGroupAccessedPayload = {
      accessTime: Network.TimeSinceEpoch;
      type: InterestGroupAccessType;
      ownerOrigin: string;
      name: string;
      /**
       * For topLevelBid/topLevelAdditionalBid, and when appropriate,
win and additionalBidWin
       */
      componentSellerOrigin?: string;
      /**
       * For bid or somethingBid event, if done locally and not on a server.
       */
      bid?: number;
      bidCurrency?: string;
      /**
       * For non-global events --- links to interestGroupAuctionEvent
       */
      uniqueAuctionId?: InterestGroupAuctionId;
    };
    /**
     * An auction involving interest groups is taking place. These events are
target-specific.
     */
    export type interestGroupAuctionEventOccurredPayload = {
      eventTime: Network.TimeSinceEpoch;
      type: InterestGroupAuctionEventType;
      uniqueAuctionId: InterestGroupAuctionId;
      /**
       * Set for child auctions.
       */
      parentAuctionId?: InterestGroupAuctionId;
      /**
       * Set for started and configResolved
       */
      auctionConfig?: {
        [key: string]: string;
      };
    };
    /**
     * Specifies which auctions a particular network fetch may be related to, and
in what role. Note that it is not ordered with respect to
Network.requestWillBeSent (but will happen before loadingFinished
loadingFailed).
     */
    export type interestGroupAuctionNetworkRequestCreatedPayload = {
      type: InterestGroupAuctionFetchType;
      requestId: Network.RequestId;
      /**
       * This is the set of the auctions using the worklet that issued this
request.  In the case of trusted signals, it's possible that only some of
them actually care about the keys being queried.
       */
      auctions: InterestGroupAuctionId[];
    };
    /**
     * Shared storage was accessed by the associated page.
The following parameters are included in all events.
     */
    export type sharedStorageAccessedPayload = {
      /**
       * Time of the access.
       */
      accessTime: Network.TimeSinceEpoch;
      /**
       * Enum value indicating the access scope.
       */
      scope: SharedStorageAccessScope;
      /**
       * Enum value indicating the Shared Storage API method invoked.
       */
      method: SharedStorageAccessMethod;
      /**
       * DevTools Frame Token for the primary frame tree's root.
       */
      mainFrameId: Page.FrameId;
      /**
       * Serialization of the origin owning the Shared Storage data.
       */
      ownerOrigin: string;
      /**
       * Serialization of the site owning the Shared Storage data.
       */
      ownerSite: string;
      /**
       * The sub-parameters wrapped by `params` are all optional and their
presence/absence depends on `type`.
       */
      params: SharedStorageAccessParams;
    };
    /**
     * A shared storage run or selectURL operation finished its execution.
The following parameters are included in all events.
     */
    export type sharedStorageWorkletOperationExecutionFinishedPayload = {
      /**
       * Time that the operation finished.
       */
      finishedTime: Network.TimeSinceEpoch;
      /**
       * Time, in microseconds, from start of shared storage JS API call until
end of operation execution in the worklet.
       */
      executionTime: number;
      /**
       * Enum value indicating the Shared Storage API method invoked.
       */
      method: SharedStorageAccessMethod;
      /**
       * ID of the operation call.
       */
      operationId: string;
      /**
       * Hex representation of the DevTools token used as the TargetID for the
associated shared storage worklet.
       */
      workletTargetId: Target.TargetID;
      /**
       * DevTools Frame Token for the primary frame tree's root.
       */
      mainFrameId: Page.FrameId;
      /**
       * Serialization of the origin owning the Shared Storage data.
       */
      ownerOrigin: string;
    };
    export type storageBucketCreatedOrUpdatedPayload = {
      bucketInfo: StorageBucketInfo;
    };
    export type storageBucketDeletedPayload = {
      bucketId: string;
    };
    /**
     * Returns a storage key given a frame id.
Deprecated. Please use Storage.getStorageKey instead.
     */
    export type getStorageKeyForFrameParameters = {
      frameId: Page.FrameId;
    };
    export type getStorageKeyForFrameReturnValue = {
      storageKey: SerializedStorageKey;
    };
    /**
     * Returns storage key for the given frame. If no frame ID is provided,
the storage key of the target executing this command is returned.
     */
    export type getStorageKeyParameters = {
      frameId?: Page.FrameId;
    };
    export type getStorageKeyReturnValue = {
      storageKey: SerializedStorageKey;
    };
    /**
     * Clears storage for origin.
     */
    export type clearDataForOriginParameters = {
      /**
       * Security origin.
       */
      origin: string;
      /**
       * Comma separated list of StorageType to clear.
       */
      storageTypes: string;
    };
    export type clearDataForOriginReturnValue = {};
    /**
     * Clears storage for storage key.
     */
    export type clearDataForStorageKeyParameters = {
      /**
       * Storage key.
       */
      storageKey: string;
      /**
       * Comma separated list of StorageType to clear.
       */
      storageTypes: string;
    };
    export type clearDataForStorageKeyReturnValue = {};
    /**
     * Returns all browser cookies.
     */
    export type getCookiesParameters = {
      /**
       * Browser context to use when called on the browser endpoint.
       */
      browserContextId?: Browser.BrowserContextID;
    };
    export type getCookiesReturnValue = {
      /**
       * Array of cookie objects.
       */
      cookies: Network.Cookie[];
    };
    /**
     * Sets given cookies.
     */
    export type setCookiesParameters = {
      /**
       * Cookies to be set.
       */
      cookies: Network.CookieParam[];
      /**
       * Browser context to use when called on the browser endpoint.
       */
      browserContextId?: Browser.BrowserContextID;
    };
    export type setCookiesReturnValue = {};
    /**
     * Clears cookies.
     */
    export type clearCookiesParameters = {
      /**
       * Browser context to use when called on the browser endpoint.
       */
      browserContextId?: Browser.BrowserContextID;
    };
    export type clearCookiesReturnValue = {};
    /**
     * Returns usage and quota in bytes.
     */
    export type getUsageAndQuotaParameters = {
      /**
       * Security origin.
       */
      origin: string;
    };
    export type getUsageAndQuotaReturnValue = {
      /**
       * Storage usage (bytes).
       */
      usage: number;
      /**
       * Storage quota (bytes).
       */
      quota: number;
      /**
       * Whether or not the origin has an active storage quota override
       */
      overrideActive: boolean;
      /**
       * Storage usage per type (bytes).
       */
      usageBreakdown: UsageForType[];
    };
    /**
     * Override quota for the specified origin
     */
    export type overrideQuotaForOriginParameters = {
      /**
       * Security origin.
       */
      origin: string;
      /**
       * The quota size (in bytes) to override the original quota with.
If this is called multiple times, the overridden quota will be equal to
the quotaSize provided in the final call. If this is called without
specifying a quotaSize, the quota will be reset to the default value for
the specified origin. If this is called multiple times with different
origins, the override will be maintained for each origin until it is
disabled (called without a quotaSize).
       */
      quotaSize?: number;
    };
    export type overrideQuotaForOriginReturnValue = {};
    /**
     * Registers origin to be notified when an update occurs to its cache storage list.
     */
    export type trackCacheStorageForOriginParameters = {
      /**
       * Security origin.
       */
      origin: string;
    };
    export type trackCacheStorageForOriginReturnValue = {};
    /**
     * Registers storage key to be notified when an update occurs to its cache storage list.
     */
    export type trackCacheStorageForStorageKeyParameters = {
      /**
       * Storage key.
       */
      storageKey: string;
    };
    export type trackCacheStorageForStorageKeyReturnValue = {};
    /**
     * Registers origin to be notified when an update occurs to its IndexedDB.
     */
    export type trackIndexedDBForOriginParameters = {
      /**
       * Security origin.
       */
      origin: string;
    };
    export type trackIndexedDBForOriginReturnValue = {};
    /**
     * Registers storage key to be notified when an update occurs to its IndexedDB.
     */
    export type trackIndexedDBForStorageKeyParameters = {
      /**
       * Storage key.
       */
      storageKey: string;
    };
    export type trackIndexedDBForStorageKeyReturnValue = {};
    /**
     * Unregisters origin from receiving notifications for cache storage.
     */
    export type untrackCacheStorageForOriginParameters = {
      /**
       * Security origin.
       */
      origin: string;
    };
    export type untrackCacheStorageForOriginReturnValue = {};
    /**
     * Unregisters storage key from receiving notifications for cache storage.
     */
    export type untrackCacheStorageForStorageKeyParameters = {
      /**
       * Storage key.
       */
      storageKey: string;
    };
    export type untrackCacheStorageForStorageKeyReturnValue = {};
    /**
     * Unregisters origin from receiving notifications for IndexedDB.
     */
    export type untrackIndexedDBForOriginParameters = {
      /**
       * Security origin.
       */
      origin: string;
    };
    export type untrackIndexedDBForOriginReturnValue = {};
    /**
     * Unregisters storage key from receiving notifications for IndexedDB.
     */
    export type untrackIndexedDBForStorageKeyParameters = {
      /**
       * Storage key.
       */
      storageKey: string;
    };
    export type untrackIndexedDBForStorageKeyReturnValue = {};
    /**
     * Returns the number of stored Trust Tokens per issuer for the
current browsing context.
     */
    export type getTrustTokensParameters = {};
    export type getTrustTokensReturnValue = {
      tokens: TrustTokens[];
    };
    /**
     * Removes all Trust Tokens issued by the provided issuerOrigin.
Leaves other stored data, including the issuer's Redemption Records, intact.
     */
    export type clearTrustTokensParameters = {
      issuerOrigin: string;
    };
    export type clearTrustTokensReturnValue = {
      /**
       * True if any tokens were deleted, false otherwise.
       */
      didDeleteTokens: boolean;
    };
    /**
     * Gets details for a named interest group.
     */
    export type getInterestGroupDetailsParameters = {
      ownerOrigin: string;
      name: string;
    };
    export type getInterestGroupDetailsReturnValue = {
      /**
       * This largely corresponds to:
https://wicg.github.io/turtledove/#dictdef-generatebidinterestgroup
but has absolute expirationTime instead of relative lifetimeMs and
also adds joiningOrigin.
       */
      details: {
        [key: string]: string;
      };
    };
    /**
     * Enables/Disables issuing of interestGroupAccessed events.
     */
    export type setInterestGroupTrackingParameters = {
      enable: boolean;
    };
    export type setInterestGroupTrackingReturnValue = {};
    /**
     * Enables/Disables issuing of interestGroupAuctionEventOccurred and
interestGroupAuctionNetworkRequestCreated.
     */
    export type setInterestGroupAuctionTrackingParameters = {
      enable: boolean;
    };
    export type setInterestGroupAuctionTrackingReturnValue = {};
    /**
     * Gets metadata for an origin's shared storage.
     */
    export type getSharedStorageMetadataParameters = {
      ownerOrigin: string;
    };
    export type getSharedStorageMetadataReturnValue = {
      metadata: SharedStorageMetadata;
    };
    /**
     * Gets the entries in an given origin's shared storage.
     */
    export type getSharedStorageEntriesParameters = {
      ownerOrigin: string;
    };
    export type getSharedStorageEntriesReturnValue = {
      entries: SharedStorageEntry[];
    };
    /**
     * Sets entry with `key` and `value` for a given origin's shared storage.
     */
    export type setSharedStorageEntryParameters = {
      ownerOrigin: string;
      key: string;
      value: string;
      /**
       * If `ignoreIfPresent` is included and true, then only sets the entry if
`key` doesn't already exist.
       */
      ignoreIfPresent?: boolean;
    };
    export type setSharedStorageEntryReturnValue = {};
    /**
     * Deletes entry for `key` (if it exists) for a given origin's shared storage.
     */
    export type deleteSharedStorageEntryParameters = {
      ownerOrigin: string;
      key: string;
    };
    export type deleteSharedStorageEntryReturnValue = {};
    /**
     * Clears all entries for a given origin's shared storage.
     */
    export type clearSharedStorageEntriesParameters = {
      ownerOrigin: string;
    };
    export type clearSharedStorageEntriesReturnValue = {};
    /**
     * Resets the budget for `ownerOrigin` by clearing all budget withdrawals.
     */
    export type resetSharedStorageBudgetParameters = {
      ownerOrigin: string;
    };
    export type resetSharedStorageBudgetReturnValue = {};
    /**
     * Enables/disables issuing of sharedStorageAccessed events.
     */
    export type setSharedStorageTrackingParameters = {
      enable: boolean;
    };
    export type setSharedStorageTrackingReturnValue = {};
    /**
     * Set tracking for a storage key's buckets.
     */
    export type setStorageBucketTrackingParameters = {
      storageKey: string;
      enable: boolean;
    };
    export type setStorageBucketTrackingReturnValue = {};
    /**
     * Deletes the Storage Bucket with the given storage key and bucket name.
     */
    export type deleteStorageBucketParameters = {
      bucket: StorageBucket;
    };
    export type deleteStorageBucketReturnValue = {};
    /**
     * Deletes state for sites identified as potential bounce trackers, immediately.
     */
    export type runBounceTrackingMitigationsParameters = {};
    export type runBounceTrackingMitigationsReturnValue = {
      deletedSites: string[];
    };
    /**
     * Returns the effective Related Website Sets in use by this profile for the browser
session. The effective Related Website Sets will not change during a browser session.
     */
    export type getRelatedWebsiteSetsParameters = {};
    export type getRelatedWebsiteSetsReturnValue = {
      sets: RelatedWebsiteSet[];
    };
    export type setProtectedAudienceKAnonymityParameters = {
      owner: string;
      name: string;
      hashes: binary[];
    };
    export type setProtectedAudienceKAnonymityReturnValue = {};
  }
  /**
   * The SystemInfo domain defines methods and events for querying low-level system information.
   */
  export namespace SystemInfo {
    /**
     * Describes a single graphics processor (GPU).
     */
    export interface GPUDevice {
      /**
       * PCI ID of the GPU vendor, if available; 0 otherwise.
       */
      vendorId: number;
      /**
       * PCI ID of the GPU device, if available; 0 otherwise.
       */
      deviceId: number;
      /**
       * Sub sys ID of the GPU, only available on Windows.
       */
      subSysId?: number;
      /**
       * Revision of the GPU, only available on Windows.
       */
      revision?: number;
      /**
       * String description of the GPU vendor, if the PCI ID is not available.
       */
      vendorString: string;
      /**
       * String description of the GPU device, if the PCI ID is not available.
       */
      deviceString: string;
      /**
       * String description of the GPU driver vendor.
       */
      driverVendor: string;
      /**
       * String description of the GPU driver version.
       */
      driverVersion: string;
    }
    /**
     * Describes the width and height dimensions of an entity.
     */
    export interface Size {
      /**
       * Width in pixels.
       */
      width: number;
      /**
       * Height in pixels.
       */
      height: number;
    }
    /**
     * Describes a supported video decoding profile with its associated minimum and
maximum resolutions.
     */
    export interface VideoDecodeAcceleratorCapability {
      /**
       * Video codec profile that is supported, e.g. VP9 Profile 2.
       */
      profile: string;
      /**
       * Maximum video dimensions in pixels supported for this |profile|.
       */
      maxResolution: Size;
      /**
       * Minimum video dimensions in pixels supported for this |profile|.
       */
      minResolution: Size;
    }
    /**
     * Describes a supported video encoding profile with its associated maximum
resolution and maximum framerate.
     */
    export interface VideoEncodeAcceleratorCapability {
      /**
       * Video codec profile that is supported, e.g H264 Main.
       */
      profile: string;
      /**
       * Maximum video dimensions in pixels supported for this |profile|.
       */
      maxResolution: Size;
      /**
       * Maximum encoding framerate in frames per second supported for this
|profile|, as fraction's numerator and denominator, e.g. 24/1 fps,
24000/1001 fps, etc.
       */
      maxFramerateNumerator: number;
      maxFramerateDenominator: number;
    }
    /**
     * YUV subsampling type of the pixels of a given image.
     */
    export type SubsamplingFormat = "yuv420" | "yuv422" | "yuv444";
    /**
     * Image format of a given image.
     */
    export type ImageType = "jpeg" | "webp" | "unknown";
    /**
     * Provides information about the GPU(s) on the system.
     */
    export interface GPUInfo {
      /**
       * The graphics devices on the system. Element 0 is the primary GPU.
       */
      devices: GPUDevice[];
      /**
       * An optional dictionary of additional GPU related attributes.
       */
      auxAttributes?: {
        [key: string]: string;
      };
      /**
       * An optional dictionary of graphics features and their status.
       */
      featureStatus?: {
        [key: string]: string;
      };
      /**
       * An optional array of GPU driver bug workarounds.
       */
      driverBugWorkarounds: string[];
      /**
       * Supported accelerated video decoding capabilities.
       */
      videoDecoding: VideoDecodeAcceleratorCapability[];
      /**
       * Supported accelerated video encoding capabilities.
       */
      videoEncoding: VideoEncodeAcceleratorCapability[];
    }
    /**
     * Represents process info.
     */
    export interface ProcessInfo {
      /**
       * Specifies process type.
       */
      type: string;
      /**
       * Specifies process id.
       */
      id: number;
      /**
       * Specifies cumulative CPU usage in seconds across all threads of the
process since the process start.
       */
      cpuTime: number;
    }
    /**
     * Returns information about the system.
     */
    export type getInfoParameters = {};
    export type getInfoReturnValue = {
      /**
       * Information about the GPUs on the system.
       */
      gpu: GPUInfo;
      /**
       * A platform-dependent description of the model of the machine. On Mac OS, this is, for
example, 'MacBookPro'. Will be the empty string if not supported.
       */
      modelName: string;
      /**
       * A platform-dependent description of the version of the machine. On Mac OS, this is, for
example, '10.1'. Will be the empty string if not supported.
       */
      modelVersion: string;
      /**
       * The command line string used to launch the browser. Will be the empty string if not
supported.
       */
      commandLine: string;
    };
    /**
     * Returns information about the feature state.
     */
    export type getFeatureStateParameters = {
      featureState: string;
    };
    export type getFeatureStateReturnValue = {
      featureEnabled: boolean;
    };
    /**
     * Returns information about all running processes.
     */
    export type getProcessInfoParameters = {};
    export type getProcessInfoReturnValue = {
      /**
       * An array of process info blocks.
       */
      processInfo: ProcessInfo[];
    };
  }
  /**
   * Supports additional targets discovery and allows to attach to them.
   */
  export namespace Target {
    export type TargetID = string;
    /**
     * Unique identifier of attached debugging session.
     */
    export type SessionID = string;
    export interface TargetInfo {
      targetId: TargetID;
      /**
       * List of types: https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/devtools_agent_host_impl.cc?ss=chromium&q=f:devtools%20-f:out%20%22::kTypeTab%5B%5D%22
       */
      type: string;
      title: string;
      url: string;
      /**
       * Whether the target has an attached client.
       */
      attached: boolean;
      /**
       * Id of the parent target, if any. For example, "iframe" target may have a "page" parent.
       */
      parentId?: TargetID;
      /**
       * Opener target Id
       */
      openerId?: TargetID;
      /**
       * Whether the target has access to the originating window.
       */
      canAccessOpener: boolean;
      /**
       * Frame id of originating window (is only set if target has an opener).
       */
      openerFrameId?: Page.FrameId;
      /**
       * Id of the parent frame, present for "iframe" and "worker" targets. For nested workers,
this is the "ancestor" frame that created the first worker in the nested chain.
       */
      parentFrameId?: Page.FrameId;
      browserContextId?: Browser.BrowserContextID;
      /**
       * Provides additional details for specific target types. For example, for
the type of "page", this may be set to "prerender".
       */
      subtype?: string;
    }
    /**
     * A filter used by target query/discovery/auto-attach operations.
     */
    export interface FilterEntry {
      /**
       * If set, causes exclusion of matching targets from the list.
       */
      exclude?: boolean;
      /**
       * If not present, matches any type.
       */
      type?: string;
    }
    /**
     * The entries in TargetFilter are matched sequentially against targets and
the first entry that matches determines if the target is included or not,
depending on the value of `exclude` field in the entry.
If filter is not specified, the one assumed is
[{type: "browser", exclude: true}, {type: "tab", exclude: true}, {}]
(i.e. include everything but `browser` and `tab`).
     */
    export type TargetFilter = FilterEntry[];
    export interface RemoteLocation {
      host: string;
      port: number;
    }
    /**
     * The state of the target window.
     */
    export type WindowState = "normal" | "minimized" | "maximized" | "fullscreen";
    /**
     * Issued when attached to target because of auto-attach or `attachToTarget` command.
     */
    export type attachedToTargetPayload = {
      /**
       * Identifier assigned to the session used to send/receive messages.
       */
      sessionId: SessionID;
      targetInfo: TargetInfo;
      waitingForDebugger: boolean;
    };
    /**
     * Issued when detached from target for any reason (including `detachFromTarget` command). Can be
issued multiple times per target if multiple sessions have been attached to it.
     */
    export type detachedFromTargetPayload = {
      /**
       * Detached session identifier.
       */
      sessionId: SessionID;
      /**
       * Deprecated.
       */
      targetId?: TargetID;
    };
    /**
     * Notifies about a new protocol message received from the session (as reported in
`attachedToTarget` event).
     */
    export type receivedMessageFromTargetPayload = {
      /**
       * Identifier of a session which sends a message.
       */
      sessionId: SessionID;
      message: string;
      /**
       * Deprecated.
       */
      targetId?: TargetID;
    };
    /**
     * Issued when a possible inspection target is created.
     */
    export type targetCreatedPayload = {
      targetInfo: TargetInfo;
    };
    /**
     * Issued when a target is destroyed.
     */
    export type targetDestroyedPayload = {
      targetId: TargetID;
    };
    /**
     * Issued when a target has crashed.
     */
    export type targetCrashedPayload = {
      targetId: TargetID;
      /**
       * Termination status type.
       */
      status: string;
      /**
       * Termination error code.
       */
      errorCode: number;
    };
    /**
     * Issued when some information about a target has changed. This only happens between
`targetCreated` and `targetDestroyed`.
     */
    export type targetInfoChangedPayload = {
      targetInfo: TargetInfo;
    };
    /**
     * Activates (focuses) the target.
     */
    export type activateTargetParameters = {
      targetId: TargetID;
    };
    export type activateTargetReturnValue = {};
    /**
     * Attaches to the target with given id.
     */
    export type attachToTargetParameters = {
      targetId: TargetID;
      /**
       * Enables "flat" access to the session via specifying sessionId attribute in the commands.
We plan to make this the default, deprecate non-flattened mode,
and eventually retire it. See crbug.com/991325.
       */
      flatten?: boolean;
    };
    export type attachToTargetReturnValue = {
      /**
       * Id assigned to the session.
       */
      sessionId: SessionID;
    };
    /**
     * Attaches to the browser target, only uses flat sessionId mode.
     */
    export type attachToBrowserTargetParameters = {};
    export type attachToBrowserTargetReturnValue = {
      /**
       * Id assigned to the session.
       */
      sessionId: SessionID;
    };
    /**
     * Closes the target. If the target is a page that gets closed too.
     */
    export type closeTargetParameters = {
      targetId: TargetID;
    };
    export type closeTargetReturnValue = {
      /**
       * Always set to true. If an error occurs, the response indicates protocol error.
       */
      success: boolean;
    };
    /**
     * Inject object to the target's main frame that provides a communication
channel with browser target.

Injected object will be available as `window[bindingName]`.

The object has the following API:
- `binding.send(json)` - a method to send messages over the remote debugging protocol
- `binding.onmessage = json => handleMessage(json)` - a callback that will be called for the protocol notifications and command responses.
     */
    export type exposeDevToolsProtocolParameters = {
      targetId: TargetID;
      /**
       * Binding name, 'cdp' if not specified.
       */
      bindingName?: string;
      /**
       * If true, inherits the current root session's permissions (default: false).
       */
      inheritPermissions?: boolean;
    };
    export type exposeDevToolsProtocolReturnValue = {};
    /**
     * Creates a new empty BrowserContext. Similar to an incognito profile but you can have more than
one.
     */
    export type createBrowserContextParameters = {
      /**
       * If specified, disposes this context when debugging session disconnects.
       */
      disposeOnDetach?: boolean;
      /**
       * Proxy server, similar to the one passed to --proxy-server
       */
      proxyServer?: string;
      /**
       * Proxy bypass list, similar to the one passed to --proxy-bypass-list
       */
      proxyBypassList?: string;
      /**
       * An optional list of origins to grant unlimited cross-origin access to.
Parts of the URL other than those constituting origin are ignored.
       */
      originsWithUniversalNetworkAccess?: string[];
    };
    export type createBrowserContextReturnValue = {
      /**
       * The id of the context created.
       */
      browserContextId: Browser.BrowserContextID;
    };
    /**
     * Returns all browser contexts created with `Target.createBrowserContext` method.
     */
    export type getBrowserContextsParameters = {};
    export type getBrowserContextsReturnValue = {
      /**
       * An array of browser context ids.
       */
      browserContextIds: Browser.BrowserContextID[];
      /**
       * The id of the default browser context if available.
       */
      defaultBrowserContextId?: Browser.BrowserContextID;
    };
    /**
     * Creates a new page.
     */
    export type createTargetParameters = {
      /**
       * The initial URL the page will be navigated to. An empty string indicates about:blank.
       */
      url: string;
      /**
       * Frame left origin in DIP (requires newWindow to be true or headless shell).
       */
      left?: number;
      /**
       * Frame top origin in DIP (requires newWindow to be true or headless shell).
       */
      top?: number;
      /**
       * Frame width in DIP (requires newWindow to be true or headless shell).
       */
      width?: number;
      /**
       * Frame height in DIP (requires newWindow to be true or headless shell).
       */
      height?: number;
      /**
       * Frame window state (requires newWindow to be true or headless shell).
Default is normal.
       */
      windowState?: WindowState;
      /**
       * The browser context to create the page in.
       */
      browserContextId?: Browser.BrowserContextID;
      /**
       * Whether BeginFrames for this target will be controlled via DevTools (headless shell only,
not supported on MacOS yet, false by default).
       */
      enableBeginFrameControl?: boolean;
      /**
       * Whether to create a new Window or Tab (false by default, not supported by headless shell).
       */
      newWindow?: boolean;
      /**
       * Whether to create the target in background or foreground (false by default, not supported
by headless shell).
       */
      background?: boolean;
      /**
       * Whether to create the target of type "tab".
       */
      forTab?: boolean;
      /**
       * Whether to create a hidden target. The hidden target is observable via protocol, but not
present in the tab UI strip. Cannot be created with `forTab: true`, `newWindow: true` or
`background: false`. The life-time of the tab is limited to the life-time of the session.
       */
      hidden?: boolean;
      /**
       * If specified, the option is used to determine if the new target should
be focused or not. By default, the focus behavior depends on the
value of the background field. For example, background=false and focus=false
will result in the target tab being opened but the browser window remain
unchanged (if it was in the background, it will remain in the background)
and background=false with focus=undefined will result in the window being focused.
Using background: true and focus: true is not supported and will result in an error.
       */
      focus?: boolean;
    };
    export type createTargetReturnValue = {
      /**
       * The id of the page opened.
       */
      targetId: TargetID;
    };
    /**
     * Detaches session with given id.
     */
    export type detachFromTargetParameters = {
      /**
       * Session to detach.
       */
      sessionId?: SessionID;
      /**
       * Deprecated.
       */
      targetId?: TargetID;
    };
    export type detachFromTargetReturnValue = {};
    /**
     * Deletes a BrowserContext. All the belonging pages will be closed without calling their
beforeunload hooks.
     */
    export type disposeBrowserContextParameters = {
      browserContextId: Browser.BrowserContextID;
    };
    export type disposeBrowserContextReturnValue = {};
    /**
     * Returns information about a target.
     */
    export type getTargetInfoParameters = {
      targetId?: TargetID;
    };
    export type getTargetInfoReturnValue = {
      targetInfo: TargetInfo;
    };
    /**
     * Retrieves a list of available targets.
     */
    export type getTargetsParameters = {
      /**
       * Only targets matching filter will be reported. If filter is not specified
and target discovery is currently enabled, a filter used for target discovery
is used for consistency.
       */
      filter?: TargetFilter;
    };
    export type getTargetsReturnValue = {
      /**
       * The list of targets.
       */
      targetInfos: TargetInfo[];
    };
    /**
     * Sends protocol message over session with given id.
Consider using flat mode instead; see commands attachToTarget, setAutoAttach,
and crbug.com/991325.
     */
    export type sendMessageToTargetParameters = {
      message: string;
      /**
       * Identifier of the session.
       */
      sessionId?: SessionID;
      /**
       * Deprecated.
       */
      targetId?: TargetID;
    };
    export type sendMessageToTargetReturnValue = {};
    /**
     * Controls whether to automatically attach to new targets which are considered
to be directly related to this one (for example, iframes or workers).
When turned on, attaches to all existing related targets as well. When turned off,
automatically detaches from all currently attached targets.
This also clears all targets added by `autoAttachRelated` from the list of targets to watch
for creation of related targets.
You might want to call this recursively for auto-attached targets to attach
to all available targets.
     */
    export type setAutoAttachParameters = {
      /**
       * Whether to auto-attach to related targets.
       */
      autoAttach: boolean;
      /**
       * Whether to pause new targets when attaching to them. Use `Runtime.runIfWaitingForDebugger`
to run paused targets.
       */
      waitForDebuggerOnStart: boolean;
      /**
       * Enables "flat" access to the session via specifying sessionId attribute in the commands.
We plan to make this the default, deprecate non-flattened mode,
and eventually retire it. See crbug.com/991325.
       */
      flatten?: boolean;
      /**
       * Only targets matching filter will be attached.
       */
      filter?: TargetFilter;
    };
    export type setAutoAttachReturnValue = {};
    /**
     * Adds the specified target to the list of targets that will be monitored for any related target
creation (such as child frames, child workers and new versions of service worker) and reported
through `attachedToTarget`. The specified target is also auto-attached.
This cancels the effect of any previous `setAutoAttach` and is also cancelled by subsequent
`setAutoAttach`. Only available at the Browser target.
     */
    export type autoAttachRelatedParameters = {
      targetId: TargetID;
      /**
       * Whether to pause new targets when attaching to them. Use `Runtime.runIfWaitingForDebugger`
to run paused targets.
       */
      waitForDebuggerOnStart: boolean;
      /**
       * Only targets matching filter will be attached.
       */
      filter?: TargetFilter;
    };
    export type autoAttachRelatedReturnValue = {};
    /**
     * Controls whether to discover available targets and notify via
`targetCreated/targetInfoChanged/targetDestroyed` events.
     */
    export type setDiscoverTargetsParameters = {
      /**
       * Whether to discover available targets.
       */
      discover: boolean;
      /**
       * Only targets matching filter will be attached. If `discover` is false,
`filter` must be omitted or empty.
       */
      filter?: TargetFilter;
    };
    export type setDiscoverTargetsReturnValue = {};
    /**
     * Enables target discovery for the specified locations, when `setDiscoverTargets` was set to
`true`.
     */
    export type setRemoteLocationsParameters = {
      /**
       * List of remote locations.
       */
      locations: RemoteLocation[];
    };
    export type setRemoteLocationsReturnValue = {};
    /**
     * Gets the targetId of the DevTools page target opened for the given target
(if any).
     */
    export type getDevToolsTargetParameters = {
      /**
       * Page or tab target ID.
       */
      targetId: TargetID;
    };
    export type getDevToolsTargetReturnValue = {
      /**
       * The targetId of DevTools page target if exists.
       */
      targetId?: TargetID;
    };
    /**
     * Opens a DevTools window for the target.
     */
    export type openDevToolsParameters = {
      /**
       * This can be the page or tab target ID.
       */
      targetId: TargetID;
      /**
       * The id of the panel we want DevTools to open initially. Currently
supported panels are elements, console, network, sources, resources
and performance.
       */
      panelId?: string;
    };
    export type openDevToolsReturnValue = {
      /**
       * The targetId of DevTools page target.
       */
      targetId: TargetID;
    };
  }
  /**
   * The Tethering domain defines methods and events for browser port binding.
   */
  export namespace Tethering {
    /**
     * Informs that port was successfully bound and got a specified connection id.
     */
    export type acceptedPayload = {
      /**
       * Port number that was successfully bound.
       */
      port: number;
      /**
       * Connection id to be used.
       */
      connectionId: string;
    };
    /**
     * Request browser port binding.
     */
    export type bindParameters = {
      /**
       * Port number to bind.
       */
      port: number;
    };
    export type bindReturnValue = {};
    /**
     * Request browser port unbinding.
     */
    export type unbindParameters = {
      /**
       * Port number to unbind.
       */
      port: number;
    };
    export type unbindReturnValue = {};
  }
  export namespace Tracing {
    /**
     * Configuration for memory dump. Used only when "memory-infra" category is enabled.
     */
    export type MemoryDumpConfig = {
      [key: string]: string;
    };
    export interface TraceConfig {
      /**
       * Controls how the trace buffer stores data. The default is `recordUntilFull`.
       */
      recordMode?: "recordUntilFull" | "recordContinuously" | "recordAsMuchAsPossible" | "echoToConsole";
      /**
       * Size of the trace buffer in kilobytes. If not specified or zero is passed, a default value
of 200 MB would be used.
       */
      traceBufferSizeInKb?: number;
      /**
       * Turns on JavaScript stack sampling.
       */
      enableSampling?: boolean;
      /**
       * Turns on system tracing.
       */
      enableSystrace?: boolean;
      /**
       * Turns on argument filter.
       */
      enableArgumentFilter?: boolean;
      /**
       * Included category filters.
       */
      includedCategories?: string[];
      /**
       * Excluded category filters.
       */
      excludedCategories?: string[];
      /**
       * Configuration to synthesize the delays in tracing.
       */
      syntheticDelays?: string[];
      /**
       * Configuration for memory dump triggers. Used only when "memory-infra" category is enabled.
       */
      memoryDumpConfig?: MemoryDumpConfig;
    }
    /**
     * Data format of a trace. Can be either the legacy JSON format or the
protocol buffer format. Note that the JSON format will be deprecated soon.
     */
    export type StreamFormat = "json" | "proto";
    /**
     * Compression type to use for traces returned via streams.
     */
    export type StreamCompression = "none" | "gzip";
    /**
     * Details exposed when memory request explicitly declared.
Keep consistent with memory_dump_request_args.h and
memory_instrumentation.mojom
     */
    export type MemoryDumpLevelOfDetail = "background" | "light" | "detailed";
    /**
     * Backend type to use for tracing. `chrome` uses the Chrome-integrated
tracing service and is supported on all platforms. `system` is only
supported on Chrome OS and uses the Perfetto system tracing service.
`auto` chooses `system` when the perfettoConfig provided to Tracing.start
specifies at least one non-Chrome data source; otherwise uses `chrome`.
     */
    export type TracingBackend = "auto" | "chrome" | "system";
    export type bufferUsagePayload = {
      /**
       * A number in range [0..1] that indicates the used size of event buffer as a fraction of its
total size.
       */
      percentFull?: number;
      /**
       * An approximate number of events in the trace log.
       */
      eventCount?: number;
      /**
       * A number in range [0..1] that indicates the used size of event buffer as a fraction of its
total size.
       */
      value?: number;
    };
    /**
     * Contains a bucket of collected trace events. When tracing is stopped collected events will be
sent as a sequence of dataCollected events followed by tracingComplete event.
     */
    export type dataCollectedPayload = {
      value: {
        [key: string]: string;
      }[];
    };
    /**
     * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
delivered via dataCollected events.
     */
    export type tracingCompletePayload = {
      /**
       * Indicates whether some trace data is known to have been lost, e.g. because the trace ring
buffer wrapped around.
       */
      dataLossOccurred: boolean;
      /**
       * A handle of the stream that holds resulting trace data.
       */
      stream?: IO.StreamHandle;
      /**
       * Trace data format of returned stream.
       */
      traceFormat?: StreamFormat;
      /**
       * Compression format of returned stream.
       */
      streamCompression?: StreamCompression;
    };
    /**
     * Stop trace events collection.
     */
    export type endParameters = {};
    export type endReturnValue = {};
    /**
     * Gets supported tracing categories.
     */
    export type getCategoriesParameters = {};
    export type getCategoriesReturnValue = {
      /**
       * A list of supported tracing categories.
       */
      categories: string[];
    };
    /**
     * Return a descriptor for all available tracing categories.
     */
    export type getTrackEventDescriptorParameters = {};
    export type getTrackEventDescriptorReturnValue = {
      /**
       * Base64-encoded serialized perfetto.protos.TrackEventDescriptor protobuf message.
       */
      descriptor: binary;
    };
    /**
     * Record a clock sync marker in the trace.
     */
    export type recordClockSyncMarkerParameters = {
      /**
       * The ID of this clock sync marker
       */
      syncId: string;
    };
    export type recordClockSyncMarkerReturnValue = {};
    /**
     * Request a global memory dump.
     */
    export type requestMemoryDumpParameters = {
      /**
       * Enables more deterministic results by forcing garbage collection
       */
      deterministic?: boolean;
      /**
       * Specifies level of details in memory dump. Defaults to "detailed".
       */
      levelOfDetail?: MemoryDumpLevelOfDetail;
    };
    export type requestMemoryDumpReturnValue = {
      /**
       * GUID of the resulting global memory dump.
       */
      dumpGuid: string;
      /**
       * True iff the global memory dump succeeded.
       */
      success: boolean;
    };
    /**
     * Start trace events collection.
     */
    export type startParameters = {
      /**
       * Category/tag filter
       */
      categories?: string;
      /**
       * Tracing options
       */
      options?: string;
      /**
       * If set, the agent will issue bufferUsage events at this interval, specified in milliseconds
       */
      bufferUsageReportingInterval?: number;
      /**
       * Whether to report trace events as series of dataCollected events or to save trace to a
stream (defaults to `ReportEvents`).
       */
      transferMode?: "ReportEvents" | "ReturnAsStream";
      /**
       * Trace data format to use. This only applies when using `ReturnAsStream`
transfer mode (defaults to `json`).
       */
      streamFormat?: StreamFormat;
      /**
       * Compression format to use. This only applies when using `ReturnAsStream`
transfer mode (defaults to `none`)
       */
      streamCompression?: StreamCompression;
      traceConfig?: TraceConfig;
      /**
       * Base64-encoded serialized perfetto.protos.TraceConfig protobuf message
When specified, the parameters `categories`, `options`, `traceConfig`
are ignored.
       */
      perfettoConfig?: binary;
      /**
       * Backend type (defaults to `auto`)
       */
      tracingBackend?: TracingBackend;
    };
    export type startReturnValue = {};
  }
  /**
   * This domain allows inspection of Web Audio API.
https://webaudio.github.io/web-audio-api/
   */
  export namespace WebAudio {
    /**
     * An unique ID for a graph object (AudioContext, AudioNode, AudioParam) in Web Audio API
     */
    export type GraphObjectId = string;
    /**
     * Enum of BaseAudioContext types
     */
    export type ContextType = "realtime" | "offline";
    /**
     * Enum of AudioContextState from the spec
     */
    export type ContextState = "suspended" | "running" | "closed" | "interrupted";
    /**
     * Enum of AudioNode types
     */
    export type NodeType = string;
    /**
     * Enum of AudioNode::ChannelCountMode from the spec
     */
    export type ChannelCountMode = "clamped-max" | "explicit" | "max";
    /**
     * Enum of AudioNode::ChannelInterpretation from the spec
     */
    export type ChannelInterpretation = "discrete" | "speakers";
    /**
     * Enum of AudioParam types
     */
    export type ParamType = string;
    /**
     * Enum of AudioParam::AutomationRate from the spec
     */
    export type AutomationRate = "a-rate" | "k-rate";
    /**
     * Fields in AudioContext that change in real-time.
     */
    export interface ContextRealtimeData {
      /**
       * The current context time in second in BaseAudioContext.
       */
      currentTime: number;
      /**
       * The time spent on rendering graph divided by render quantum duration,
and multiplied by 100. 100 means the audio renderer reached the full
capacity and glitch may occur.
       */
      renderCapacity: number;
      /**
       * A running mean of callback interval.
       */
      callbackIntervalMean: number;
      /**
       * A running variance of callback interval.
       */
      callbackIntervalVariance: number;
    }
    /**
     * Protocol object for BaseAudioContext
     */
    export interface BaseAudioContext {
      contextId: GraphObjectId;
      contextType: ContextType;
      contextState: ContextState;
      realtimeData?: ContextRealtimeData;
      /**
       * Platform-dependent callback buffer size.
       */
      callbackBufferSize: number;
      /**
       * Number of output channels supported by audio hardware in use.
       */
      maxOutputChannelCount: number;
      /**
       * Context sample rate.
       */
      sampleRate: number;
    }
    /**
     * Protocol object for AudioListener
     */
    export interface AudioListener {
      listenerId: GraphObjectId;
      contextId: GraphObjectId;
    }
    /**
     * Protocol object for AudioNode
     */
    export interface AudioNode {
      nodeId: GraphObjectId;
      contextId: GraphObjectId;
      nodeType: NodeType;
      numberOfInputs: number;
      numberOfOutputs: number;
      channelCount: number;
      channelCountMode: ChannelCountMode;
      channelInterpretation: ChannelInterpretation;
    }
    /**
     * Protocol object for AudioParam
     */
    export interface AudioParam {
      paramId: GraphObjectId;
      nodeId: GraphObjectId;
      contextId: GraphObjectId;
      paramType: ParamType;
      rate: AutomationRate;
      defaultValue: number;
      minValue: number;
      maxValue: number;
    }
    /**
     * Notifies that a new BaseAudioContext has been created.
     */
    export type contextCreatedPayload = {
      context: BaseAudioContext;
    };
    /**
     * Notifies that an existing BaseAudioContext will be destroyed.
     */
    export type contextWillBeDestroyedPayload = {
      contextId: GraphObjectId;
    };
    /**
     * Notifies that existing BaseAudioContext has changed some properties (id stays the same)..
     */
    export type contextChangedPayload = {
      context: BaseAudioContext;
    };
    /**
     * Notifies that the construction of an AudioListener has finished.
     */
    export type audioListenerCreatedPayload = {
      listener: AudioListener;
    };
    /**
     * Notifies that a new AudioListener has been created.
     */
    export type audioListenerWillBeDestroyedPayload = {
      contextId: GraphObjectId;
      listenerId: GraphObjectId;
    };
    /**
     * Notifies that a new AudioNode has been created.
     */
    export type audioNodeCreatedPayload = {
      node: AudioNode;
    };
    /**
     * Notifies that an existing AudioNode has been destroyed.
     */
    export type audioNodeWillBeDestroyedPayload = {
      contextId: GraphObjectId;
      nodeId: GraphObjectId;
    };
    /**
     * Notifies that a new AudioParam has been created.
     */
    export type audioParamCreatedPayload = {
      param: AudioParam;
    };
    /**
     * Notifies that an existing AudioParam has been destroyed.
     */
    export type audioParamWillBeDestroyedPayload = {
      contextId: GraphObjectId;
      nodeId: GraphObjectId;
      paramId: GraphObjectId;
    };
    /**
     * Notifies that two AudioNodes are connected.
     */
    export type nodesConnectedPayload = {
      contextId: GraphObjectId;
      sourceId: GraphObjectId;
      destinationId: GraphObjectId;
      sourceOutputIndex?: number;
      destinationInputIndex?: number;
    };
    /**
     * Notifies that AudioNodes are disconnected. The destination can be null, and it means all the outgoing connections from the source are disconnected.
     */
    export type nodesDisconnectedPayload = {
      contextId: GraphObjectId;
      sourceId: GraphObjectId;
      destinationId: GraphObjectId;
      sourceOutputIndex?: number;
      destinationInputIndex?: number;
    };
    /**
     * Notifies that an AudioNode is connected to an AudioParam.
     */
    export type nodeParamConnectedPayload = {
      contextId: GraphObjectId;
      sourceId: GraphObjectId;
      destinationId: GraphObjectId;
      sourceOutputIndex?: number;
    };
    /**
     * Notifies that an AudioNode is disconnected to an AudioParam.
     */
    export type nodeParamDisconnectedPayload = {
      contextId: GraphObjectId;
      sourceId: GraphObjectId;
      destinationId: GraphObjectId;
      sourceOutputIndex?: number;
    };
    /**
     * Enables the WebAudio domain and starts sending context lifetime events.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Disables the WebAudio domain.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Fetch the realtime data from the registered contexts.
     */
    export type getRealtimeDataParameters = {
      contextId: GraphObjectId;
    };
    export type getRealtimeDataReturnValue = {
      realtimeData: ContextRealtimeData;
    };
  }
  /**
   * This domain allows configuring virtual authenticators to test the WebAuthn
API.
   */
  export namespace WebAuthn {
    export type AuthenticatorId = string;
    export type AuthenticatorProtocol = "u2f" | "ctap2";
    export type Ctap2Version = "ctap2_0" | "ctap2_1" | "ctap2_2";
    export type AuthenticatorTransport = "usb" | "nfc" | "ble" | "cable" | "internal";
    export interface VirtualAuthenticatorOptions {
      protocol: AuthenticatorProtocol;
      /**
       * Defaults to ctap2_0. Ignored if |protocol| == u2f.
       */
      ctap2Version?: Ctap2Version;
      transport: AuthenticatorTransport;
      /**
       * Defaults to false.
       */
      hasResidentKey?: boolean;
      /**
       * Defaults to false.
       */
      hasUserVerification?: boolean;
      /**
       * If set to true, the authenticator will support the largeBlob extension.
https://w3c.github.io/webauthn#largeBlob
Defaults to false.
       */
      hasLargeBlob?: boolean;
      /**
       * If set to true, the authenticator will support the credBlob extension.
https://fidoalliance.org/specs/fido-v2.1-rd-20201208/fido-client-to-authenticator-protocol-v2.1-rd-20201208.html#sctn-credBlob-extension
Defaults to false.
       */
      hasCredBlob?: boolean;
      /**
       * If set to true, the authenticator will support the minPinLength extension.
https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#sctn-minpinlength-extension
Defaults to false.
       */
      hasMinPinLength?: boolean;
      /**
       * If set to true, the authenticator will support the prf extension.
https://w3c.github.io/webauthn/#prf-extension
Defaults to false.
       */
      hasPrf?: boolean;
      /**
       * If set to true, the authenticator will support the hmac-secret extension.
https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#sctn-hmac-secret-extension
Defaults to false.
       */
      hasHmacSecret?: boolean;
      /**
       * If set to true, the authenticator will support the hmac-secret-mc extension.
https://fidoalliance.org/specs/fido-v2.2-rd-20241003/fido-client-to-authenticator-protocol-v2.2-rd-20241003.html#sctn-hmac-secret-make-cred-extension
Defaults to false.
       */
      hasHmacSecretMc?: boolean;
      /**
       * If set to true, tests of user presence will succeed immediately.
Otherwise, they will not be resolved. Defaults to true.
       */
      automaticPresenceSimulation?: boolean;
      /**
       * Sets whether User Verification succeeds or fails for an authenticator.
Defaults to false.
       */
      isUserVerified?: boolean;
      /**
       * Credentials created by this authenticator will have the backup
eligibility (BE) flag set to this value. Defaults to false.
https://w3c.github.io/webauthn/#sctn-credential-backup
       */
      defaultBackupEligibility?: boolean;
      /**
       * Credentials created by this authenticator will have the backup state
(BS) flag set to this value. Defaults to false.
https://w3c.github.io/webauthn/#sctn-credential-backup
       */
      defaultBackupState?: boolean;
    }
    export interface Credential {
      credentialId: binary;
      isResidentCredential: boolean;
      /**
       * Relying Party ID the credential is scoped to. Must be set when adding a
credential.
       */
      rpId?: string;
      /**
       * The ECDSA P-256 private key in PKCS#8 format.
       */
      privateKey: binary;
      /**
       * An opaque byte sequence with a maximum size of 64 bytes mapping the
credential to a specific user.
       */
      userHandle?: binary;
      /**
       * Signature counter. This is incremented by one for each successful
assertion.
See https://w3c.github.io/webauthn/#signature-counter
       */
      signCount: number;
      /**
       * The large blob associated with the credential.
See https://w3c.github.io/webauthn/#sctn-large-blob-extension
       */
      largeBlob?: binary;
      /**
       * Assertions returned by this credential will have the backup eligibility
(BE) flag set to this value. Defaults to the authenticator's
defaultBackupEligibility value.
       */
      backupEligibility?: boolean;
      /**
       * Assertions returned by this credential will have the backup state (BS)
flag set to this value. Defaults to the authenticator's
defaultBackupState value.
       */
      backupState?: boolean;
      /**
       * The credential's user.name property. Equivalent to empty if not set.
https://w3c.github.io/webauthn/#dom-publickeycredentialentity-name
       */
      userName?: string;
      /**
       * The credential's user.displayName property. Equivalent to empty if
not set.
https://w3c.github.io/webauthn/#dom-publickeycredentialuserentity-displayname
       */
      userDisplayName?: string;
    }
    /**
     * Triggered when a credential is added to an authenticator.
     */
    export type credentialAddedPayload = {
      authenticatorId: AuthenticatorId;
      credential: Credential;
    };
    /**
     * Triggered when a credential is deleted, e.g. through
PublicKeyCredential.signalUnknownCredential().
     */
    export type credentialDeletedPayload = {
      authenticatorId: AuthenticatorId;
      credentialId: binary;
    };
    /**
     * Triggered when a credential is updated, e.g. through
PublicKeyCredential.signalCurrentUserDetails().
     */
    export type credentialUpdatedPayload = {
      authenticatorId: AuthenticatorId;
      credential: Credential;
    };
    /**
     * Triggered when a credential is used in a webauthn assertion.
     */
    export type credentialAssertedPayload = {
      authenticatorId: AuthenticatorId;
      credential: Credential;
    };
    /**
     * Enable the WebAuthn domain and start intercepting credential storage and
retrieval with a virtual authenticator.
     */
    export type enableParameters = {
      /**
       * Whether to enable the WebAuthn user interface. Enabling the UI is
recommended for debugging and demo purposes, as it is closer to the real
experience. Disabling the UI is recommended for automated testing.
Supported at the embedder's discretion if UI is available.
Defaults to false.
       */
      enableUI?: boolean;
    };
    export type enableReturnValue = {};
    /**
     * Disable the WebAuthn domain.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Creates and adds a virtual authenticator.
     */
    export type addVirtualAuthenticatorParameters = {
      options: VirtualAuthenticatorOptions;
    };
    export type addVirtualAuthenticatorReturnValue = {
      authenticatorId: AuthenticatorId;
    };
    /**
     * Resets parameters isBogusSignature, isBadUV, isBadUP to false if they are not present.
     */
    export type setResponseOverrideBitsParameters = {
      authenticatorId: AuthenticatorId;
      /**
       * If isBogusSignature is set, overrides the signature in the authenticator response to be zero.
Defaults to false.
       */
      isBogusSignature?: boolean;
      /**
       * If isBadUV is set, overrides the UV bit in the flags in the authenticator response to
be zero. Defaults to false.
       */
      isBadUV?: boolean;
      /**
       * If isBadUP is set, overrides the UP bit in the flags in the authenticator response to
be zero. Defaults to false.
       */
      isBadUP?: boolean;
    };
    export type setResponseOverrideBitsReturnValue = {};
    /**
     * Removes the given authenticator.
     */
    export type removeVirtualAuthenticatorParameters = {
      authenticatorId: AuthenticatorId;
    };
    export type removeVirtualAuthenticatorReturnValue = {};
    /**
     * Adds the credential to the specified authenticator.
     */
    export type addCredentialParameters = {
      authenticatorId: AuthenticatorId;
      credential: Credential;
    };
    export type addCredentialReturnValue = {};
    /**
     * Returns a single credential stored in the given virtual authenticator that
matches the credential ID.
     */
    export type getCredentialParameters = {
      authenticatorId: AuthenticatorId;
      credentialId: binary;
    };
    export type getCredentialReturnValue = {
      credential: Credential;
    };
    /**
     * Returns all the credentials stored in the given virtual authenticator.
     */
    export type getCredentialsParameters = {
      authenticatorId: AuthenticatorId;
    };
    export type getCredentialsReturnValue = {
      credentials: Credential[];
    };
    /**
     * Removes a credential from the authenticator.
     */
    export type removeCredentialParameters = {
      authenticatorId: AuthenticatorId;
      credentialId: binary;
    };
    export type removeCredentialReturnValue = {};
    /**
     * Clears all the credentials from the specified device.
     */
    export type clearCredentialsParameters = {
      authenticatorId: AuthenticatorId;
    };
    export type clearCredentialsReturnValue = {};
    /**
     * Sets whether User Verification succeeds or fails for an authenticator.
The default is true.
     */
    export type setUserVerifiedParameters = {
      authenticatorId: AuthenticatorId;
      isUserVerified: boolean;
    };
    export type setUserVerifiedReturnValue = {};
    /**
     * Sets whether tests of user presence will succeed immediately (if true) or fail to resolve (if false) for an authenticator.
The default is true.
     */
    export type setAutomaticPresenceSimulationParameters = {
      authenticatorId: AuthenticatorId;
      enabled: boolean;
    };
    export type setAutomaticPresenceSimulationReturnValue = {};
    /**
     * Allows setting credential properties.
https://w3c.github.io/webauthn/#sctn-automation-set-credential-properties
     */
    export type setCredentialPropertiesParameters = {
      authenticatorId: AuthenticatorId;
      credentialId: binary;
      backupEligibility?: boolean;
      backupState?: boolean;
    };
    export type setCredentialPropertiesReturnValue = {};
  }
  export namespace WebMCP {
    /**
     * Tool annotations
     */
    export interface Annotation {
      /**
       * A hint indicating that the tool does not modify any state.
       */
      readOnly?: boolean;
      /**
       * A hint indicating that the tool output may contain untrusted content, ex: UGC, 3rd party data.
       */
      untrustedContent?: boolean;
      /**
       * If the declarative tool was declared with the autosubmit attribute.
       */
      autosubmit?: boolean;
    }
    /**
     * Represents the status of a tool invocation.
     */
    export type InvocationStatus = "Completed" | "Canceled" | "Error";
    /**
     * Definition of a tool that can be invoked.
     */
    export interface Tool {
      /**
       * Tool name.
       */
      name: string;
      /**
       * Tool description.
       */
      description: string;
      /**
       * Schema for the tool's input parameters.
       */
      inputSchema?: {
        [key: string]: string;
      };
      /**
       * Optional annotations for the tool.
       */
      annotations?: Annotation;
      /**
       * Frame identifier associated with the tool registration.
       */
      frameId: Page.FrameId;
      /**
       * Optional node ID for declarative tools.
       */
      backendNodeId?: DOM.BackendNodeId;
      /**
       * The stack trace at the time of the registration.
       */
      stackTrace?: Runtime.StackTrace;
    }
    /**
     * Definition of a tool that was removed.
     */
    export interface RemovedTool {
      /**
       * Tool name.
       */
      name: string;
      /**
       * Frame identifier associated with the tool registration.
       */
      frameId: Page.FrameId;
    }
    /**
     * Event fired when new tools are added.
     */
    export type toolsAddedPayload = {
      /**
       * Array of tools that were added.
       */
      tools: Tool[];
    };
    /**
     * Event fired when tools are removed.
     */
    export type toolsRemovedPayload = {
      /**
       * Array of tools that were removed.
       */
      tools: RemovedTool[];
    };
    /**
     * Event fired when a tool invocation starts.
     */
    export type toolInvokedPayload = {
      /**
       * Name of the tool to invoke.
       */
      toolName: string;
      /**
       * Frame id
       */
      frameId: Page.FrameId;
      /**
       * Invocation identifier.
       */
      invocationId: string;
      /**
       * The input parameters used for the invocation.
       */
      input: string;
    };
    /**
     * Event fired when a tool invocation completes or fails.
     */
    export type toolRespondedPayload = {
      /**
       * Invocation identifier.
       */
      invocationId: string;
      /**
       * Status of the invocation.
       */
      status: InvocationStatus;
      /**
       * Output or error delivered as delivered to the agent. Missing if `status` is anything other than Completed.
Note: The output is untrusted and poses a prompt injection risk. Clients should treat this as potentially malicious user input.
       */
      output?: any;
      /**
       * Error text for protocol users.
       */
      errorText?: string;
      /**
       * The exception object, if the javascript tool threw an error>
       */
      exception?: Runtime.RemoteObject;
    };
    /**
     * Enables the WebMCP domain, allowing events to be sent. Enabling the domain will trigger a toolsAdded event for
all currently registered tools.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Disables the WebMCP domain.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Invokes a registered tool.
     */
    export type invokeToolParameters = {
      /**
       * Frame in which to invoke the tool.
       */
      frameId: Page.FrameId;
      /**
       * Name of the tool to invoke.
       */
      toolName: string;
      /**
       * Input parameters for the tool, matching the tool's inputSchema.
       */
      input: {
        [key: string]: string;
      };
    };
    export type invokeToolReturnValue = {
      /**
       * Unique identifier for this invocation. Response is sent before tool events.
       */
      invocationId: string;
    };
    /**
     * Cancels a pending tool invocation.
     */
    export type cancelInvocationParameters = {
      /**
       * Invocation identifier to cancel.
       */
      invocationId: string;
    };
    export type cancelInvocationReturnValue = {};
  }
  /**
   * This domain is deprecated - use Runtime or Log instead.
   */
  export namespace Console {
    /**
     * Console message.
     */
    export interface ConsoleMessage {
      /**
       * Message source.
       */
      source: "xml" | "javascript" | "network" | "console-api" | "storage" | "appcache" | "rendering" | "security" | "other" | "deprecation" | "worker";
      /**
       * Message severity.
       */
      level: "log" | "warning" | "error" | "debug" | "info";
      /**
       * Message text.
       */
      text: string;
      /**
       * URL of the message origin.
       */
      url?: string;
      /**
       * Line number in the resource that generated this message (1-based).
       */
      line?: number;
      /**
       * Column number in the resource that generated this message (1-based).
       */
      column?: number;
    }
    /**
     * Issued when new console message is added.
     */
    export type messageAddedPayload = {
      /**
       * Console message that has been added.
       */
      message: ConsoleMessage;
    };
    /**
     * Does nothing.
     */
    export type clearMessagesParameters = {};
    export type clearMessagesReturnValue = {};
    /**
     * Disables console domain, prevents further console messages from being reported to the client.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables console domain, sends the messages collected so far to the client by means of the
`messageAdded` notification.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
  }
  /**
   * Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing
breakpoints, stepping through execution, exploring stack traces, etc.
   */
  export namespace Debugger {
    /**
     * Breakpoint identifier.
     */
    export type BreakpointId = string;
    /**
     * Call frame identifier.
     */
    export type CallFrameId = string;
    /**
     * Location in the source code.
     */
    export interface Location {
      /**
       * Script identifier as reported in the `Debugger.scriptParsed`.
       */
      scriptId: Runtime.ScriptId;
      /**
       * Line number in the script (0-based).
       */
      lineNumber: number;
      /**
       * Column number in the script (0-based).
       */
      columnNumber?: number;
    }
    /**
     * Location in the source code.
     */
    export interface ScriptPosition {
      lineNumber: number;
      columnNumber: number;
    }
    /**
     * Location range within one script.
     */
    export interface LocationRange {
      scriptId: Runtime.ScriptId;
      start: ScriptPosition;
      end: ScriptPosition;
    }
    /**
     * JavaScript call frame. Array of call frames form the call stack.
     */
    export interface CallFrame {
      /**
       * Call frame identifier. This identifier is only valid while the virtual machine is paused.
       */
      callFrameId: CallFrameId;
      /**
       * Name of the JavaScript function called on this call frame.
       */
      functionName: string;
      /**
       * Location in the source code.
       */
      functionLocation?: Location;
      /**
       * Location in the source code.
       */
      location: Location;
      /**
       * JavaScript script name or url.
Deprecated in favor of using the `location.scriptId` to resolve the URL via a previously
sent `Debugger.scriptParsed` event.
       */
      url: string;
      /**
       * Scope chain for this call frame.
       */
      scopeChain: Scope[];
      /**
       * `this` object for this call frame.
       */
      this: Runtime.RemoteObject;
      /**
       * The value being returned, if the function is at return point.
       */
      returnValue?: Runtime.RemoteObject;
      /**
       * Valid only while the VM is paused and indicates whether this frame
can be restarted or not. Note that a `true` value here does not
guarantee that Debugger#restartFrame with this CallFrameId will be
successful, but it is very likely.
       */
      canBeRestarted?: boolean;
    }
    /**
     * Scope description.
     */
    export interface Scope {
      /**
       * Scope type.
       */
      type: "global" | "local" | "with" | "closure" | "catch" | "block" | "script" | "eval" | "module" | "wasm-expression-stack";
      /**
       * Object representing the scope. For `global` and `with` scopes it represents the actual
object; for the rest of the scopes, it is artificial transient object enumerating scope
variables as its properties.
       */
      object: Runtime.RemoteObject;
      name?: string;
      /**
       * Location in the source code where scope starts
       */
      startLocation?: Location;
      /**
       * Location in the source code where scope ends
       */
      endLocation?: Location;
    }
    /**
     * Search match for resource.
     */
    export interface SearchMatch {
      /**
       * Line number in resource content.
       */
      lineNumber: number;
      /**
       * Line with match content.
       */
      lineContent: string;
    }
    export interface BreakLocation {
      /**
       * Script identifier as reported in the `Debugger.scriptParsed`.
       */
      scriptId: Runtime.ScriptId;
      /**
       * Line number in the script (0-based).
       */
      lineNumber: number;
      /**
       * Column number in the script (0-based).
       */
      columnNumber?: number;
      type?: "debuggerStatement" | "call" | "return";
    }
    export interface WasmDisassemblyChunk {
      /**
       * The next chunk of disassembled lines.
       */
      lines: string[];
      /**
       * The bytecode offsets describing the start of each line.
       */
      bytecodeOffsets: number[];
    }
    /**
     * Enum of possible script languages.
     */
    export type ScriptLanguage = "JavaScript" | "WebAssembly";
    /**
     * Debug symbols available for a wasm script.
     */
    export interface DebugSymbols {
      /**
       * Type of the debug symbols.
       */
      type: "SourceMap" | "EmbeddedDWARF" | "ExternalDWARF";
      /**
       * URL of the external symbol source.
       */
      externalURL?: string;
    }
    export interface ResolvedBreakpoint {
      /**
       * Breakpoint unique identifier.
       */
      breakpointId: BreakpointId;
      /**
       * Actual breakpoint location.
       */
      location: Location;
    }
    /**
     * Fired when breakpoint is resolved to an actual script and location.
Deprecated in favor of `resolvedBreakpoints` in the `scriptParsed` event.
     */
    export type breakpointResolvedPayload = {
      /**
       * Breakpoint unique identifier.
       */
      breakpointId: BreakpointId;
      /**
       * Actual breakpoint location.
       */
      location: Location;
    };
    /**
     * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
     */
    export type pausedPayload = {
      /**
       * Call stack the virtual machine stopped on.
       */
      callFrames: CallFrame[];
      /**
       * Pause reason.
       */
      reason: "ambiguous" | "assert" | "CSPViolation" | "debugCommand" | "DOM" | "EventListener" | "exception" | "instrumentation" | "OOM" | "other" | "promiseRejection" | "XHR" | "step";
      /**
       * Object containing break-specific auxiliary properties.
       */
      data?: {
        [key: string]: string;
      };
      /**
       * Hit breakpoints IDs
       */
      hitBreakpoints?: string[];
      /**
       * Async stack trace, if any.
       */
      asyncStackTrace?: Runtime.StackTrace;
      /**
       * Async stack trace, if any.
       */
      asyncStackTraceId?: Runtime.StackTraceId;
      /**
       * Never present, will be removed.
       */
      asyncCallStackTraceId?: Runtime.StackTraceId;
    };
    /**
     * Fired when the virtual machine resumed execution.
     */
    export type resumedPayload = void;
    /**
     * Fired when virtual machine fails to parse the script.
     */
    export type scriptFailedToParsePayload = {
      /**
       * Identifier of the script parsed.
       */
      scriptId: Runtime.ScriptId;
      /**
       * URL or name of the script parsed (if any).
       */
      url: string;
      /**
       * Line offset of the script within the resource with given URL (for script tags).
       */
      startLine: number;
      /**
       * Column offset of the script within the resource with given URL.
       */
      startColumn: number;
      /**
       * Last line of the script.
       */
      endLine: number;
      /**
       * Length of the last line of the script.
       */
      endColumn: number;
      /**
       * Specifies script creation context.
       */
      executionContextId: Runtime.ExecutionContextId;
      /**
       * Content hash of the script, SHA-256.
       */
      hash: string;
      /**
       * For Wasm modules, the content of the `build_id` custom section. For JavaScript the `debugId` magic comment.
       */
      buildId: string;
      /**
       * Embedder-specific auxiliary data likely matching {isDefault: boolean, type: 'default'|'isolated'|'worker', frameId: string}
       */
      executionContextAuxData?: {
        [key: string]: string;
      };
      /**
       * URL of source map associated with script (if any).
       */
      sourceMapURL?: string;
      /**
       * True, if this script has sourceURL.
       */
      hasSourceURL?: boolean;
      /**
       * True, if this script is ES6 module.
       */
      isModule?: boolean;
      /**
       * This script length.
       */
      length?: number;
      /**
       * JavaScript top stack frame of where the script parsed event was triggered if available.
       */
      stackTrace?: Runtime.StackTrace;
      /**
       * If the scriptLanguage is WebAssembly, the code section offset in the module.
       */
      codeOffset?: number;
      /**
       * The language of the script.
       */
      scriptLanguage?: Debugger.ScriptLanguage;
      /**
       * The name the embedder supplied for this script.
       */
      embedderName?: string;
    };
    /**
     * Fired when virtual machine parses script. This event is also fired for all known and uncollected
scripts upon enabling debugger.
     */
    export type scriptParsedPayload = {
      /**
       * Identifier of the script parsed.
       */
      scriptId: Runtime.ScriptId;
      /**
       * URL or name of the script parsed (if any).
       */
      url: string;
      /**
       * Line offset of the script within the resource with given URL (for script tags).
       */
      startLine: number;
      /**
       * Column offset of the script within the resource with given URL.
       */
      startColumn: number;
      /**
       * Last line of the script.
       */
      endLine: number;
      /**
       * Length of the last line of the script.
       */
      endColumn: number;
      /**
       * Specifies script creation context.
       */
      executionContextId: Runtime.ExecutionContextId;
      /**
       * Content hash of the script, SHA-256.
       */
      hash: string;
      /**
       * For Wasm modules, the content of the `build_id` custom section. For JavaScript the `debugId` magic comment.
       */
      buildId: string;
      /**
       * Embedder-specific auxiliary data likely matching {isDefault: boolean, type: 'default'|'isolated'|'worker', frameId: string}
       */
      executionContextAuxData?: {
        [key: string]: string;
      };
      /**
       * True, if this script is generated as a result of the live edit operation.
       */
      isLiveEdit?: boolean;
      /**
       * URL of source map associated with script (if any).
       */
      sourceMapURL?: string;
      /**
       * True, if this script has sourceURL.
       */
      hasSourceURL?: boolean;
      /**
       * True, if this script is ES6 module.
       */
      isModule?: boolean;
      /**
       * This script length.
       */
      length?: number;
      /**
       * JavaScript top stack frame of where the script parsed event was triggered if available.
       */
      stackTrace?: Runtime.StackTrace;
      /**
       * If the scriptLanguage is WebAssembly, the code section offset in the module.
       */
      codeOffset?: number;
      /**
       * The language of the script.
       */
      scriptLanguage?: Debugger.ScriptLanguage;
      /**
       * If the scriptLanguage is WebAssembly, the source of debug symbols for the module.
       */
      debugSymbols?: Debugger.DebugSymbols[];
      /**
       * The name the embedder supplied for this script.
       */
      embedderName?: string;
      /**
       * The list of set breakpoints in this script if calls to `setBreakpointByUrl`
matches this script's URL or hash. Clients that use this list can ignore the
`breakpointResolved` event. They are equivalent.
       */
      resolvedBreakpoints?: ResolvedBreakpoint[];
    };
    /**
     * Continues execution until specific location is reached.
     */
    export type continueToLocationParameters = {
      /**
       * Location to continue to.
       */
      location: Location;
      targetCallFrames?: "any" | "current";
    };
    export type continueToLocationReturnValue = {};
    /**
     * Disables debugger for given page.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Enables debugger for the given page. Clients should not assume that the debugging has been
enabled until the result for this command is received.
     */
    export type enableParameters = {
      /**
       * The maximum size in bytes of collected scripts (not referenced by other heap objects)
the debugger can hold. Puts no limit if parameter is omitted.
       */
      maxScriptsCacheSize?: number;
    };
    export type enableReturnValue = {
      /**
       * Unique identifier of the debugger.
       */
      debuggerId: Runtime.UniqueDebuggerId;
    };
    /**
     * Evaluates expression on a given call frame.
     */
    export type evaluateOnCallFrameParameters = {
      /**
       * Call frame identifier to evaluate on.
       */
      callFrameId: CallFrameId;
      /**
       * Expression to evaluate.
       */
      expression: string;
      /**
       * String object group name to put result into (allows rapid releasing resulting object handles
using `releaseObjectGroup`).
       */
      objectGroup?: string;
      /**
       * Specifies whether command line API should be available to the evaluated expression, defaults
to false.
       */
      includeCommandLineAPI?: boolean;
      /**
       * In silent mode exceptions thrown during evaluation are not reported and do not pause
execution. Overrides `setPauseOnException` state.
       */
      silent?: boolean;
      /**
       * Whether the result is expected to be a JSON object that should be sent by value.
       */
      returnByValue?: boolean;
      /**
       * Whether preview should be generated for the result.
       */
      generatePreview?: boolean;
      /**
       * Whether to throw an exception if side effect cannot be ruled out during evaluation.
       */
      throwOnSideEffect?: boolean;
      /**
       * Terminate execution after timing out (number of milliseconds).
       */
      timeout?: Runtime.TimeDelta;
    };
    export type evaluateOnCallFrameReturnValue = {
      /**
       * Object wrapper for the evaluation result.
       */
      result: Runtime.RemoteObject;
      /**
       * Exception details.
       */
      exceptionDetails?: Runtime.ExceptionDetails;
    };
    /**
     * Returns possible locations for breakpoint. scriptId in start and end range locations should be
the same.
     */
    export type getPossibleBreakpointsParameters = {
      /**
       * Start of range to search possible breakpoint locations in.
       */
      start: Location;
      /**
       * End of range to search possible breakpoint locations in (excluding). When not specified, end
of scripts is used as end of range.
       */
      end?: Location;
      /**
       * Only consider locations which are in the same (non-nested) function as start.
       */
      restrictToFunction?: boolean;
    };
    export type getPossibleBreakpointsReturnValue = {
      /**
       * List of the possible breakpoint locations.
       */
      locations: BreakLocation[];
    };
    /**
     * Returns source for the script with given id.
     */
    export type getScriptSourceParameters = {
      /**
       * Id of the script to get source for.
       */
      scriptId: Runtime.ScriptId;
    };
    export type getScriptSourceReturnValue = {
      /**
       * Script source (empty in case of Wasm bytecode).
       */
      scriptSource: string;
      /**
       * Wasm bytecode.
       */
      bytecode?: binary;
    };
    export type disassembleWasmModuleParameters = {
      /**
       * Id of the script to disassemble
       */
      scriptId: Runtime.ScriptId;
    };
    export type disassembleWasmModuleReturnValue = {
      /**
       * For large modules, return a stream from which additional chunks of
disassembly can be read successively.
       */
      streamId?: string;
      /**
       * The total number of lines in the disassembly text.
       */
      totalNumberOfLines: number;
      /**
       * The offsets of all function bodies, in the format [start1, end1,
start2, end2, ...] where all ends are exclusive.
       */
      functionBodyOffsets: number[];
      /**
       * The first chunk of disassembly.
       */
      chunk: WasmDisassemblyChunk;
    };
    /**
     * Disassemble the next chunk of lines for the module corresponding to the
stream. If disassembly is complete, this API will invalidate the streamId
and return an empty chunk. Any subsequent calls for the now invalid stream
will return errors.
     */
    export type nextWasmDisassemblyChunkParameters = {
      streamId: string;
    };
    export type nextWasmDisassemblyChunkReturnValue = {
      /**
       * The next chunk of disassembly.
       */
      chunk: WasmDisassemblyChunk;
    };
    /**
     * This command is deprecated. Use getScriptSource instead.
     */
    export type getWasmBytecodeParameters = {
      /**
       * Id of the Wasm script to get source for.
       */
      scriptId: Runtime.ScriptId;
    };
    export type getWasmBytecodeReturnValue = {
      /**
       * Script source.
       */
      bytecode: binary;
    };
    /**
     * Returns stack trace with given `stackTraceId`.
     */
    export type getStackTraceParameters = {
      stackTraceId: Runtime.StackTraceId;
    };
    export type getStackTraceReturnValue = {
      stackTrace: Runtime.StackTrace;
    };
    /**
     * Stops on the next JavaScript statement.
     */
    export type pauseParameters = {};
    export type pauseReturnValue = {};
    export type pauseOnAsyncCallParameters = {
      /**
       * Debugger will pause when async call with given stack trace is started.
       */
      parentStackTraceId: Runtime.StackTraceId;
    };
    export type pauseOnAsyncCallReturnValue = {};
    /**
     * Removes JavaScript breakpoint.
     */
    export type removeBreakpointParameters = {
      breakpointId: BreakpointId;
    };
    export type removeBreakpointReturnValue = {};
    /**
     * Restarts particular call frame from the beginning. The old, deprecated
behavior of `restartFrame` is to stay paused and allow further CDP commands
after a restart was scheduled. This can cause problems with restarting, so
we now continue execution immediatly after it has been scheduled until we
reach the beginning of the restarted frame.

To stay back-wards compatible, `restartFrame` now expects a `mode`
parameter to be present. If the `mode` parameter is missing, `restartFrame`
errors out.

The various return values are deprecated and `callFrames` is always empty.
Use the call frames from the `Debugger#paused` events instead, that fires
once V8 pauses at the beginning of the restarted function.
     */
    export type restartFrameParameters = {
      /**
       * Call frame identifier to evaluate on.
       */
      callFrameId: CallFrameId;
      /**
       * The `mode` parameter must be present and set to 'StepInto', otherwise
`restartFrame` will error out.
       */
      mode?: "StepInto";
    };
    export type restartFrameReturnValue = {
      /**
       * New stack trace.
       */
      callFrames: CallFrame[];
      /**
       * Async stack trace, if any.
       */
      asyncStackTrace?: Runtime.StackTrace;
      /**
       * Async stack trace, if any.
       */
      asyncStackTraceId?: Runtime.StackTraceId;
    };
    /**
     * Resumes JavaScript execution.
     */
    export type resumeParameters = {
      /**
       * Set to true to terminate execution upon resuming execution. In contrast
to Runtime.terminateExecution, this will allows to execute further
JavaScript (i.e. via evaluation) until execution of the paused code
is actually resumed, at which point termination is triggered.
If execution is currently not paused, this parameter has no effect.
       */
      terminateOnResume?: boolean;
    };
    export type resumeReturnValue = {};
    /**
     * Searches for given string in script content.
     */
    export type searchInContentParameters = {
      /**
       * Id of the script to search in.
       */
      scriptId: Runtime.ScriptId;
      /**
       * String to search for.
       */
      query: string;
      /**
       * If true, search is case sensitive.
       */
      caseSensitive?: boolean;
      /**
       * If true, treats string parameter as regex.
       */
      isRegex?: boolean;
    };
    export type searchInContentReturnValue = {
      /**
       * List of search matches.
       */
      result: SearchMatch[];
    };
    /**
     * Enables or disables async call stacks tracking.
     */
    export type setAsyncCallStackDepthParameters = {
      /**
       * Maximum depth of async call stacks. Setting to `0` will effectively disable collecting async
call stacks (default).
       */
      maxDepth: number;
    };
    export type setAsyncCallStackDepthReturnValue = {};
    /**
     * Replace previous blackbox execution contexts with passed ones. Forces backend to skip
stepping/pausing in scripts in these execution contexts. VM will try to leave blackboxed script by
performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
     */
    export type setBlackboxExecutionContextsParameters = {
      /**
       * Array of execution context unique ids for the debugger to ignore.
       */
      uniqueIds: string[];
    };
    export type setBlackboxExecutionContextsReturnValue = {};
    /**
     * Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in
scripts with url matching one of the patterns. VM will try to leave blackboxed script by
performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
     */
    export type setBlackboxPatternsParameters = {
      /**
       * Array of regexps that will be used to check script url for blackbox state.
       */
      patterns: string[];
      /**
       * If true, also ignore scripts with no source url.
       */
      skipAnonymous?: boolean;
    };
    export type setBlackboxPatternsReturnValue = {};
    /**
     * Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted
scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
Positions array contains positions where blackbox state is changed. First interval isn't
blackboxed. Array should be sorted.
     */
    export type setBlackboxedRangesParameters = {
      /**
       * Id of the script.
       */
      scriptId: Runtime.ScriptId;
      positions: ScriptPosition[];
    };
    export type setBlackboxedRangesReturnValue = {};
    /**
     * Sets JavaScript breakpoint at a given location.
     */
    export type setBreakpointParameters = {
      /**
       * Location to set breakpoint in.
       */
      location: Location;
      /**
       * Expression to use as a breakpoint condition. When specified, debugger will only stop on the
breakpoint if this expression evaluates to true.
       */
      condition?: string;
    };
    export type setBreakpointReturnValue = {
      /**
       * Id of the created breakpoint for further reference.
       */
      breakpointId: BreakpointId;
      /**
       * Location this breakpoint resolved into.
       */
      actualLocation: Location;
    };
    /**
     * Sets instrumentation breakpoint.
     */
    export type setInstrumentationBreakpointParameters = {
      /**
       * Instrumentation name.
       */
      instrumentation: "beforeScriptExecution" | "beforeScriptWithSourceMapExecution";
    };
    export type setInstrumentationBreakpointReturnValue = {
      /**
       * Id of the created breakpoint for further reference.
       */
      breakpointId: BreakpointId;
    };
    /**
     * Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this
command is issued, all existing parsed scripts will have breakpoints resolved and returned in
`locations` property. Further matching script parsing will result in subsequent
`breakpointResolved` events issued. This logical breakpoint will survive page reloads.
     */
    export type setBreakpointByUrlParameters = {
      /**
       * Line number to set breakpoint at.
       */
      lineNumber: number;
      /**
       * URL of the resources to set breakpoint on.
       */
      url?: string;
      /**
       * Regex pattern for the URLs of the resources to set breakpoints on. Either `url` or
`urlRegex` must be specified.
       */
      urlRegex?: string;
      /**
       * Script hash of the resources to set breakpoint on.
       */
      scriptHash?: string;
      /**
       * Offset in the line to set breakpoint at.
       */
      columnNumber?: number;
      /**
       * Expression to use as a breakpoint condition. When specified, debugger will only stop on the
breakpoint if this expression evaluates to true.
       */
      condition?: string;
    };
    export type setBreakpointByUrlReturnValue = {
      /**
       * Id of the created breakpoint for further reference.
       */
      breakpointId: BreakpointId;
      /**
       * List of the locations this breakpoint resolved into upon addition.
       */
      locations: Location[];
    };
    /**
     * Sets JavaScript breakpoint before each call to the given function.
If another function was created from the same source as a given one,
calling it will also trigger the breakpoint.
     */
    export type setBreakpointOnFunctionCallParameters = {
      /**
       * Function object id.
       */
      objectId: Runtime.RemoteObjectId;
      /**
       * Expression to use as a breakpoint condition. When specified, debugger will
stop on the breakpoint if this expression evaluates to true.
       */
      condition?: string;
    };
    export type setBreakpointOnFunctionCallReturnValue = {
      /**
       * Id of the created breakpoint for further reference.
       */
      breakpointId: BreakpointId;
    };
    /**
     * Activates / deactivates all breakpoints on the page.
     */
    export type setBreakpointsActiveParameters = {
      /**
       * New value for breakpoints active state.
       */
      active: boolean;
    };
    export type setBreakpointsActiveReturnValue = {};
    /**
     * Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions,
or caught exceptions, no exceptions. Initial pause on exceptions state is `none`.
     */
    export type setPauseOnExceptionsParameters = {
      /**
       * Pause on exceptions mode.
       */
      state: "none" | "caught" | "uncaught" | "all";
    };
    export type setPauseOnExceptionsReturnValue = {};
    /**
     * Changes return value in top frame. Available only at return break position.
     */
    export type setReturnValueParameters = {
      /**
       * New return value.
       */
      newValue: Runtime.CallArgument;
    };
    export type setReturnValueReturnValue = {};
    /**
     * Edits JavaScript source live.

In general, functions that are currently on the stack can not be edited with
a single exception: If the edited function is the top-most stack frame and
that is the only activation of that function on the stack. In this case
the live edit will be successful and a `Debugger.restartFrame` for the
top-most function is automatically triggered.
     */
    export type setScriptSourceParameters = {
      /**
       * Id of the script to edit.
       */
      scriptId: Runtime.ScriptId;
      /**
       * New content of the script.
       */
      scriptSource: string;
      /**
       * If true the change will not actually be applied. Dry run may be used to get result
description without actually modifying the code.
       */
      dryRun?: boolean;
      /**
       * If true, then `scriptSource` is allowed to change the function on top of the stack
as long as the top-most stack frame is the only activation of that function.
       */
      allowTopFrameEditing?: boolean;
    };
    export type setScriptSourceReturnValue = {
      /**
       * New stack trace in case editing has happened while VM was stopped.
       */
      callFrames?: CallFrame[];
      /**
       * Whether current call stack  was modified after applying the changes.
       */
      stackChanged?: boolean;
      /**
       * Async stack trace, if any.
       */
      asyncStackTrace?: Runtime.StackTrace;
      /**
       * Async stack trace, if any.
       */
      asyncStackTraceId?: Runtime.StackTraceId;
      /**
       * Whether the operation was successful or not. Only `Ok` denotes a
successful live edit while the other enum variants denote why
the live edit failed.
       */
      status: "Ok" | "CompileError" | "BlockedByActiveGenerator" | "BlockedByActiveFunction" | "BlockedByTopLevelEsModuleChange";
      /**
       * Exception details if any. Only present when `status` is `CompileError`.
       */
      exceptionDetails?: Runtime.ExceptionDetails;
    };
    /**
     * Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).
     */
    export type setSkipAllPausesParameters = {
      /**
       * New value for skip pauses state.
       */
      skip: boolean;
    };
    export type setSkipAllPausesReturnValue = {};
    /**
     * Changes value of variable in a callframe. Object-based scopes are not supported and must be
mutated manually.
     */
    export type setVariableValueParameters = {
      /**
       * 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch'
scope types are allowed. Other scopes could be manipulated manually.
       */
      scopeNumber: number;
      /**
       * Variable name.
       */
      variableName: string;
      /**
       * New variable value.
       */
      newValue: Runtime.CallArgument;
      /**
       * Id of callframe that holds variable.
       */
      callFrameId: CallFrameId;
    };
    export type setVariableValueReturnValue = {};
    /**
     * Steps into the function call.
     */
    export type stepIntoParameters = {
      /**
       * Debugger will pause on the execution of the first async task which was scheduled
before next pause.
       */
      breakOnAsyncCall?: boolean;
      /**
       * The skipList specifies location ranges that should be skipped on step into.
       */
      skipList?: LocationRange[];
    };
    export type stepIntoReturnValue = {};
    /**
     * Steps out of the function call.
     */
    export type stepOutParameters = {};
    export type stepOutReturnValue = {};
    /**
     * Steps over the statement.
     */
    export type stepOverParameters = {
      /**
       * The skipList specifies location ranges that should be skipped on step over.
       */
      skipList?: LocationRange[];
    };
    export type stepOverReturnValue = {};
  }
  export namespace HeapProfiler {
    /**
     * Heap snapshot object id.
     */
    export type HeapSnapshotObjectId = string;
    /**
     * Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes.
     */
    export interface SamplingHeapProfileNode {
      /**
       * Function location.
       */
      callFrame: Runtime.CallFrame;
      /**
       * Allocations size in bytes for the node excluding children.
       */
      selfSize: number;
      /**
       * Node id. Ids are unique across all profiles collected between startSampling and stopSampling.
       */
      id: number;
      /**
       * Child nodes.
       */
      children: SamplingHeapProfileNode[];
    }
    /**
     * A single sample from a sampling profile.
     */
    export interface SamplingHeapProfileSample {
      /**
       * Allocation size in bytes attributed to the sample.
       */
      size: number;
      /**
       * Id of the corresponding profile tree node.
       */
      nodeId: number;
      /**
       * Time-ordered sample ordinal number. It is unique across all profiles retrieved
between startSampling and stopSampling.
       */
      ordinal: number;
    }
    /**
     * Sampling profile.
     */
    export interface SamplingHeapProfile {
      head: SamplingHeapProfileNode;
      samples: SamplingHeapProfileSample[];
    }
    export type addHeapSnapshotChunkPayload = {
      chunk: string;
    };
    /**
     * If heap objects tracking has been started then backend may send update for one or more fragments
     */
    export type heapStatsUpdatePayload = {
      /**
       * An array of triplets. Each triplet describes a fragment. The first integer is the fragment
index, the second integer is a total count of objects for the fragment, the third integer is
a total size of the objects for the fragment.
       */
      statsUpdate: number[];
    };
    /**
     * If heap objects tracking has been started then backend regularly sends a current value for last
seen object id and corresponding timestamp. If the were changes in the heap since last event
then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
     */
    export type lastSeenObjectIdPayload = {
      lastSeenObjectId: number;
      timestamp: number;
    };
    export type reportHeapSnapshotProgressPayload = {
      done: number;
      total: number;
      finished?: boolean;
    };
    export type resetProfilesPayload = void;
    /**
     * Enables console to refer to the node with given id via $x (see Command Line API for more details
$x functions).
     */
    export type addInspectedHeapObjectParameters = {
      /**
       * Heap snapshot object id to be accessible by means of $x command line API.
       */
      heapObjectId: HeapSnapshotObjectId;
    };
    export type addInspectedHeapObjectReturnValue = {};
    export type collectGarbageParameters = {};
    export type collectGarbageReturnValue = {};
    export type disableParameters = {};
    export type disableReturnValue = {};
    export type enableParameters = {};
    export type enableReturnValue = {};
    export type getHeapObjectIdParameters = {
      /**
       * Identifier of the object to get heap object id for.
       */
      objectId: Runtime.RemoteObjectId;
    };
    export type getHeapObjectIdReturnValue = {
      /**
       * Id of the heap snapshot object corresponding to the passed remote object id.
       */
      heapSnapshotObjectId: HeapSnapshotObjectId;
    };
    export type getObjectByHeapObjectIdParameters = {
      objectId: HeapSnapshotObjectId;
      /**
       * Symbolic group name that can be used to release multiple objects.
       */
      objectGroup?: string;
    };
    export type getObjectByHeapObjectIdReturnValue = {
      /**
       * Evaluation result.
       */
      result: Runtime.RemoteObject;
    };
    export type getSamplingProfileParameters = {};
    export type getSamplingProfileReturnValue = {
      /**
       * Return the sampling profile being collected.
       */
      profile: SamplingHeapProfile;
    };
    export type startSamplingParameters = {
      /**
       * Average sample interval in bytes. Poisson distribution is used for the intervals. The
default value is 32768 bytes.
       */
      samplingInterval?: number;
      /**
       * Maximum stack depth. The default value is 128.
       */
      stackDepth?: number;
      /**
       * By default, the sampling heap profiler reports only objects which are
still alive when the profile is returned via getSamplingProfile or
stopSampling, which is useful for determining what functions contribute
the most to steady-state memory usage. This flag instructs the sampling
heap profiler to also include information about objects discarded by
major GC, which will show which functions cause large temporary memory
usage or long GC pauses.
       */
      includeObjectsCollectedByMajorGC?: boolean;
      /**
       * By default, the sampling heap profiler reports only objects which are
still alive when the profile is returned via getSamplingProfile or
stopSampling, which is useful for determining what functions contribute
the most to steady-state memory usage. This flag instructs the sampling
heap profiler to also include information about objects discarded by
minor GC, which is useful when tuning a latency-sensitive application
for minimal GC activity.
       */
      includeObjectsCollectedByMinorGC?: boolean;
    };
    export type startSamplingReturnValue = {};
    export type startTrackingHeapObjectsParameters = {
      trackAllocations?: boolean;
    };
    export type startTrackingHeapObjectsReturnValue = {};
    export type stopSamplingParameters = {};
    export type stopSamplingReturnValue = {
      /**
       * Recorded sampling heap profile.
       */
      profile: SamplingHeapProfile;
    };
    export type stopTrackingHeapObjectsParameters = {
      /**
       * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken
when the tracking is stopped.
       */
      reportProgress?: boolean;
      /**
       * Deprecated in favor of `exposeInternals`.
       */
      treatGlobalObjectsAsRoots?: boolean;
      /**
       * If true, numerical values are included in the snapshot
       */
      captureNumericValue?: boolean;
      /**
       * If true, exposes internals of the snapshot.
       */
      exposeInternals?: boolean;
    };
    export type stopTrackingHeapObjectsReturnValue = {};
    export type takeHeapSnapshotParameters = {
      /**
       * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken.
       */
      reportProgress?: boolean;
      /**
       * If true, a raw snapshot without artificial roots will be generated.
Deprecated in favor of `exposeInternals`.
       */
      treatGlobalObjectsAsRoots?: boolean;
      /**
       * If true, numerical values are included in the snapshot
       */
      captureNumericValue?: boolean;
      /**
       * If true, exposes internals of the snapshot.
       */
      exposeInternals?: boolean;
    };
    export type takeHeapSnapshotReturnValue = {};
  }
  export namespace Profiler {
    /**
     * Profile node. Holds callsite information, execution statistics and child nodes.
     */
    export interface ProfileNode {
      /**
       * Unique id of the node.
       */
      id: number;
      /**
       * Function location.
       */
      callFrame: Runtime.CallFrame;
      /**
       * Number of samples where this node was on top of the call stack.
       */
      hitCount?: number;
      /**
       * Child node ids.
       */
      children?: number[];
      /**
       * The reason of being not optimized. The function may be deoptimized or marked as don't
optimize.
       */
      deoptReason?: string;
      /**
       * An array of source position ticks.
       */
      positionTicks?: PositionTickInfo[];
    }
    /**
     * Profile.
     */
    export interface Profile {
      /**
       * The list of profile nodes. First item is the root node.
       */
      nodes: ProfileNode[];
      /**
       * Profiling start timestamp in microseconds.
       */
      startTime: number;
      /**
       * Profiling end timestamp in microseconds.
       */
      endTime: number;
      /**
       * Ids of samples top nodes.
       */
      samples?: number[];
      /**
       * Time intervals between adjacent samples in microseconds. The first delta is relative to the
profile startTime.
       */
      timeDeltas?: number[];
    }
    /**
     * Specifies a number of samples attributed to a certain source position.
     */
    export interface PositionTickInfo {
      /**
       * Source line number (1-based).
       */
      line: number;
      /**
       * Number of samples attributed to the source line.
       */
      ticks: number;
    }
    /**
     * Coverage data for a source range.
     */
    export interface CoverageRange {
      /**
       * JavaScript script source offset for the range start.
       */
      startOffset: number;
      /**
       * JavaScript script source offset for the range end.
       */
      endOffset: number;
      /**
       * Collected execution count of the source range.
       */
      count: number;
    }
    /**
     * Coverage data for a JavaScript function.
     */
    export interface FunctionCoverage {
      /**
       * JavaScript function name.
       */
      functionName: string;
      /**
       * Source ranges inside the function with coverage data.
       */
      ranges: CoverageRange[];
      /**
       * Whether coverage data for this function has block granularity.
       */
      isBlockCoverage: boolean;
    }
    /**
     * Coverage data for a JavaScript script.
     */
    export interface ScriptCoverage {
      /**
       * JavaScript script id.
       */
      scriptId: Runtime.ScriptId;
      /**
       * JavaScript script name or url.
       */
      url: string;
      /**
       * Functions contained in the script that has coverage data.
       */
      functions: FunctionCoverage[];
    }
    export type consoleProfileFinishedPayload = {
      id: string;
      /**
       * Location of console.profileEnd().
       */
      location: Debugger.Location;
      profile: Profile;
      /**
       * Profile title passed as an argument to console.profile().
       */
      title?: string;
    };
    /**
     * Sent when new profile recording is started using console.profile() call.
     */
    export type consoleProfileStartedPayload = {
      id: string;
      /**
       * Location of console.profile().
       */
      location: Debugger.Location;
      /**
       * Profile title passed as an argument to console.profile().
       */
      title?: string;
    };
    /**
     * Reports coverage delta since the last poll (either from an event like this, or from
`takePreciseCoverage` for the current isolate. May only be sent if precise code
coverage has been started. This event can be trigged by the embedder to, for example,
trigger collection of coverage data immediately at a certain point in time.
     */
    export type preciseCoverageDeltaUpdatePayload = {
      /**
       * Monotonically increasing time (in seconds) when the coverage update was taken in the backend.
       */
      timestamp: number;
      /**
       * Identifier for distinguishing coverage events.
       */
      occasion: string;
      /**
       * Coverage data for the current isolate.
       */
      result: ScriptCoverage[];
    };
    export type disableParameters = {};
    export type disableReturnValue = {};
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Collect coverage data for the current isolate. The coverage data may be incomplete due to
garbage collection.
     */
    export type getBestEffortCoverageParameters = {};
    export type getBestEffortCoverageReturnValue = {
      /**
       * Coverage data for the current isolate.
       */
      result: ScriptCoverage[];
    };
    /**
     * Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.
     */
    export type setSamplingIntervalParameters = {
      /**
       * New sampling interval in microseconds.
       */
      interval: number;
    };
    export type setSamplingIntervalReturnValue = {};
    export type startParameters = {};
    export type startReturnValue = {};
    /**
     * Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code
coverage may be incomplete. Enabling prevents running optimized code and resets execution
counters.
     */
    export type startPreciseCoverageParameters = {
      /**
       * Collect accurate call counts beyond simple 'covered' or 'not covered'.
       */
      callCount?: boolean;
      /**
       * Collect block-based coverage.
       */
      detailed?: boolean;
      /**
       * Allow the backend to send updates on its own initiative
       */
      allowTriggeredUpdates?: boolean;
    };
    export type startPreciseCoverageReturnValue = {
      /**
       * Monotonically increasing time (in seconds) when the coverage update was taken in the backend.
       */
      timestamp: number;
    };
    export type stopParameters = {};
    export type stopReturnValue = {
      /**
       * Recorded profile.
       */
      profile: Profile;
    };
    /**
     * Disable precise code coverage. Disabling releases unnecessary execution count records and allows
executing optimized code.
     */
    export type stopPreciseCoverageParameters = {};
    export type stopPreciseCoverageReturnValue = {};
    /**
     * Collect coverage data for the current isolate, and resets execution counters. Precise code
coverage needs to have started.
     */
    export type takePreciseCoverageParameters = {};
    export type takePreciseCoverageReturnValue = {
      /**
       * Coverage data for the current isolate.
       */
      result: ScriptCoverage[];
      /**
       * Monotonically increasing time (in seconds) when the coverage update was taken in the backend.
       */
      timestamp: number;
    };
  }
  /**
   * Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects.
Evaluation results are returned as mirror object that expose object type, string representation
and unique identifier that can be used for further object reference. Original objects are
maintained in memory unless they are either explicitly released or are released along with the
other objects in their object group.
   */
  export namespace Runtime {
    /**
     * Unique script identifier.
     */
    export type ScriptId = string;
    /**
     * Represents options for serialization. Overrides `generatePreview` and `returnByValue`.
     */
    export interface SerializationOptions {
      serialization: "deep" | "json" | "idOnly";
      /**
       * Deep serialization depth. Default is full depth. Respected only in `deep` serialization mode.
       */
      maxDepth?: number;
      /**
       * Embedder-specific parameters. For example if connected to V8 in Chrome these control DOM
serialization via `maxNodeDepth: integer` and `includeShadowTree: "none" | "open" | "all"`.
Values can be only of type string or integer.
       */
      additionalParameters?: {
        [key: string]: string;
      };
    }
    /**
     * Represents deep serialized value.
     */
    export interface DeepSerializedValue {
      type: "undefined" | "null" | "string" | "number" | "boolean" | "bigint" | "regexp" | "date" | "symbol" | "array" | "object" | "function" | "map" | "set" | "weakmap" | "weakset" | "error" | "proxy" | "promise" | "typedarray" | "arraybuffer" | "node" | "window" | "generator";
      value?: any;
      objectId?: string;
      /**
       * Set if value reference met more then once during serialization. In such
case, value is provided only to one of the serialized values. Unique
per value in the scope of one CDP call.
       */
      weakLocalObjectReference?: number;
    }
    /**
     * Unique object identifier.
     */
    export type RemoteObjectId = string;
    /**
     * Primitive value which cannot be JSON-stringified. Includes values `-0`, `NaN`, `Infinity`,
`-Infinity`, and bigint literals.
     */
    export type UnserializableValue = string;
    /**
     * Mirror object referencing original JavaScript object.
     */
    export interface RemoteObject {
      /**
       * Object type.
       */
      type: "object" | "function" | "undefined" | "string" | "number" | "boolean" | "symbol" | "bigint";
      /**
       * Object subtype hint. Specified for `object` type values only.
NOTE: If you change anything here, make sure to also update
`subtype` in `ObjectPreview` and `PropertyPreview` below.
       */
      subtype?: "array" | "null" | "node" | "regexp" | "date" | "map" | "set" | "weakmap" | "weakset" | "iterator" | "generator" | "error" | "proxy" | "promise" | "typedarray" | "arraybuffer" | "dataview" | "webassemblymemory" | "wasmvalue" | "trustedtype";
      /**
       * Object class (constructor) name. Specified for `object` type values only.
       */
      className?: string;
      /**
       * Remote object value in case of primitive values or JSON values (if it was requested).
       */
      value?: any;
      /**
       * Primitive value which can not be JSON-stringified does not have `value`, but gets this
property.
       */
      unserializableValue?: UnserializableValue;
      /**
       * String representation of the object.
       */
      description?: string;
      /**
       * Deep serialized value.
       */
      deepSerializedValue?: DeepSerializedValue;
      /**
       * Unique object identifier (for non-primitive values).
       */
      objectId?: RemoteObjectId;
      /**
       * Preview containing abbreviated property values. Specified for `object` type values only.
       */
      preview?: ObjectPreview;
      customPreview?: CustomPreview;
    }
    export interface CustomPreview {
      /**
       * The JSON-stringified result of formatter.header(object, config) call.
It contains json ML array that represents RemoteObject.
       */
      header: string;
      /**
       * If formatter returns true as a result of formatter.hasBody call then bodyGetterId will
contain RemoteObjectId for the function that returns result of formatter.body(object, config) call.
The result value is json ML array.
       */
      bodyGetterId?: RemoteObjectId;
    }
    /**
     * Object containing abbreviated remote object value.
     */
    export interface ObjectPreview {
      /**
       * Object type.
       */
      type: "object" | "function" | "undefined" | "string" | "number" | "boolean" | "symbol" | "bigint";
      /**
       * Object subtype hint. Specified for `object` type values only.
       */
      subtype?: "array" | "null" | "node" | "regexp" | "date" | "map" | "set" | "weakmap" | "weakset" | "iterator" | "generator" | "error" | "proxy" | "promise" | "typedarray" | "arraybuffer" | "dataview" | "webassemblymemory" | "wasmvalue" | "trustedtype";
      /**
       * String representation of the object.
       */
      description?: string;
      /**
       * True iff some of the properties or entries of the original object did not fit.
       */
      overflow: boolean;
      /**
       * List of the properties.
       */
      properties: PropertyPreview[];
      /**
       * List of the entries. Specified for `map` and `set` subtype values only.
       */
      entries?: EntryPreview[];
    }
    export interface PropertyPreview {
      /**
       * Property name.
       */
      name: string;
      /**
       * Object type. Accessor means that the property itself is an accessor property.
       */
      type: "object" | "function" | "undefined" | "string" | "number" | "boolean" | "symbol" | "accessor" | "bigint";
      /**
       * User-friendly property value string.
       */
      value?: string;
      /**
       * Nested value preview.
       */
      valuePreview?: ObjectPreview;
      /**
       * Object subtype hint. Specified for `object` type values only.
       */
      subtype?: "array" | "null" | "node" | "regexp" | "date" | "map" | "set" | "weakmap" | "weakset" | "iterator" | "generator" | "error" | "proxy" | "promise" | "typedarray" | "arraybuffer" | "dataview" | "webassemblymemory" | "wasmvalue" | "trustedtype";
    }
    export interface EntryPreview {
      /**
       * Preview of the key. Specified for map-like collection entries.
       */
      key?: ObjectPreview;
      /**
       * Preview of the value.
       */
      value: ObjectPreview;
    }
    /**
     * Object property descriptor.
     */
    export interface PropertyDescriptor {
      /**
       * Property name or symbol description.
       */
      name: string;
      /**
       * The value associated with the property.
       */
      value?: RemoteObject;
      /**
       * True if the value associated with the property may be changed (data descriptors only).
       */
      writable?: boolean;
      /**
       * A function which serves as a getter for the property, or `undefined` if there is no getter
(accessor descriptors only).
       */
      get?: RemoteObject;
      /**
       * A function which serves as a setter for the property, or `undefined` if there is no setter
(accessor descriptors only).
       */
      set?: RemoteObject;
      /**
       * True if the type of this property descriptor may be changed and if the property may be
deleted from the corresponding object.
       */
      configurable: boolean;
      /**
       * True if this property shows up during enumeration of the properties on the corresponding
object.
       */
      enumerable: boolean;
      /**
       * True if the result was thrown during the evaluation.
       */
      wasThrown?: boolean;
      /**
       * True if the property is owned for the object.
       */
      isOwn?: boolean;
      /**
       * Property symbol object, if the property is of the `symbol` type.
       */
      symbol?: RemoteObject;
    }
    /**
     * Object internal property descriptor. This property isn't normally visible in JavaScript code.
     */
    export interface InternalPropertyDescriptor {
      /**
       * Conventional property name.
       */
      name: string;
      /**
       * The value associated with the property.
       */
      value?: RemoteObject;
    }
    /**
     * Object private field descriptor.
     */
    export interface PrivatePropertyDescriptor {
      /**
       * Private property name.
       */
      name: string;
      /**
       * The value associated with the private property.
       */
      value?: RemoteObject;
      /**
       * A function which serves as a getter for the private property,
or `undefined` if there is no getter (accessor descriptors only).
       */
      get?: RemoteObject;
      /**
       * A function which serves as a setter for the private property,
or `undefined` if there is no setter (accessor descriptors only).
       */
      set?: RemoteObject;
    }
    /**
     * Represents function call argument. Either remote object id `objectId`, primitive `value`,
unserializable primitive value or neither of (for undefined) them should be specified.
     */
    export interface CallArgument {
      /**
       * Primitive value or serializable javascript object.
       */
      value?: any;
      /**
       * Primitive value which can not be JSON-stringified.
       */
      unserializableValue?: UnserializableValue;
      /**
       * Remote object handle.
       */
      objectId?: RemoteObjectId;
    }
    /**
     * Id of an execution context.
     */
    export type ExecutionContextId = number;
    /**
     * Description of an isolated world.
     */
    export interface ExecutionContextDescription {
      /**
       * Unique id of the execution context. It can be used to specify in which execution context
script evaluation should be performed.
       */
      id: ExecutionContextId;
      /**
       * Execution context origin.
       */
      origin: string;
      /**
       * Human readable name describing given context.
       */
      name: string;
      /**
       * A system-unique execution context identifier. Unlike the id, this is unique across
multiple processes, so can be reliably used to identify specific context while backend
performs a cross-process navigation.
       */
      uniqueId: string;
      /**
       * Embedder-specific auxiliary data likely matching {isDefault: boolean, type: 'default'|'isolated'|'worker', frameId: string}
       */
      auxData?: {
        [key: string]: string;
      };
    }
    /**
     * Detailed information about exception (or error) that was thrown during script compilation or
execution.
     */
    export interface ExceptionDetails {
      /**
       * Exception id.
       */
      exceptionId: number;
      /**
       * Exception text, which should be used together with exception object when available.
       */
      text: string;
      /**
       * Line number of the exception location (0-based).
       */
      lineNumber: number;
      /**
       * Column number of the exception location (0-based).
       */
      columnNumber: number;
      /**
       * Script ID of the exception location.
       */
      scriptId?: ScriptId;
      /**
       * URL of the exception location, to be used when the script was not reported.
       */
      url?: string;
      /**
       * JavaScript stack trace if available.
       */
      stackTrace?: StackTrace;
      /**
       * Exception object if available.
       */
      exception?: RemoteObject;
      /**
       * Identifier of the context where exception happened.
       */
      executionContextId?: ExecutionContextId;
      /**
       * Dictionary with entries of meta data that the client associated
with this exception, such as information about associated network
requests, etc.
       */
      exceptionMetaData?: {
        [key: string]: string;
      };
    }
    /**
     * Number of milliseconds since epoch.
     */
    export type Timestamp = number;
    /**
     * Number of milliseconds.
     */
    export type TimeDelta = number;
    /**
     * Stack entry for runtime errors and assertions.
     */
    export interface CallFrame {
      /**
       * JavaScript function name.
       */
      functionName: string;
      /**
       * JavaScript script id.
       */
      scriptId: ScriptId;
      /**
       * JavaScript script name or url.
       */
      url: string;
      /**
       * JavaScript script line number (0-based).
       */
      lineNumber: number;
      /**
       * JavaScript script column number (0-based).
       */
      columnNumber: number;
    }
    /**
     * Call frames for assertions or error messages.
     */
    export interface StackTrace {
      /**
       * String label of this stack trace. For async traces this may be a name of the function that
initiated the async call.
       */
      description?: string;
      /**
       * JavaScript function name.
       */
      callFrames: CallFrame[];
      /**
       * Asynchronous JavaScript stack trace that preceded this stack, if available.
       */
      parent?: StackTrace;
      /**
       * Asynchronous JavaScript stack trace that preceded this stack, if available.
       */
      parentId?: StackTraceId;
    }
    /**
     * Unique identifier of current debugger.
     */
    export type UniqueDebuggerId = string;
    /**
     * If `debuggerId` is set stack trace comes from another debugger and can be resolved there. This
allows to track cross-debugger calls. See `Runtime.StackTrace` and `Debugger.paused` for usages.
     */
    export interface StackTraceId {
      id: string;
      debuggerId?: UniqueDebuggerId;
    }
    /**
     * Notification is issued every time when binding is called.
     */
    export type bindingCalledPayload = {
      name: string;
      payload: string;
      /**
       * Identifier of the context where the call was made.
       */
      executionContextId: ExecutionContextId;
    };
    /**
     * Issued when console API was called.
     */
    export type consoleAPICalledPayload = {
      /**
       * Type of the call.
       */
      type: "log" | "debug" | "info" | "error" | "warning" | "dir" | "dirxml" | "table" | "trace" | "clear" | "startGroup" | "startGroupCollapsed" | "endGroup" | "assert" | "profile" | "profileEnd" | "count" | "timeEnd";
      /**
       * Call arguments.
       */
      args: RemoteObject[];
      /**
       * Identifier of the context where the call was made.
       */
      executionContextId: ExecutionContextId;
      /**
       * Call timestamp.
       */
      timestamp: Timestamp;
      /**
       * Stack trace captured when the call was made. The async stack chain is automatically reported for
the following call types: `assert`, `error`, `trace`, `warning`. For other types the async call
chain can be retrieved using `Debugger.getStackTrace` and `stackTrace.parentId` field.
       */
      stackTrace?: StackTrace;
      /**
       * Console context descriptor for calls on non-default console context (not console.*):
'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call
on named context.
       */
      context?: string;
    };
    /**
     * Issued when unhandled exception was revoked.
     */
    export type exceptionRevokedPayload = {
      /**
       * Reason describing why exception was revoked.
       */
      reason: string;
      /**
       * The id of revoked exception, as reported in `exceptionThrown`.
       */
      exceptionId: number;
    };
    /**
     * Issued when exception was thrown and unhandled.
     */
    export type exceptionThrownPayload = {
      /**
       * Timestamp of the exception.
       */
      timestamp: Timestamp;
      exceptionDetails: ExceptionDetails;
    };
    /**
     * Issued when new execution context is created.
     */
    export type executionContextCreatedPayload = {
      /**
       * A newly created execution context.
       */
      context: ExecutionContextDescription;
    };
    /**
     * Issued when execution context is destroyed.
     */
    export type executionContextDestroyedPayload = {
      /**
       * Id of the destroyed context
       */
      executionContextId: ExecutionContextId;
      /**
       * Unique Id of the destroyed context
       */
      executionContextUniqueId: string;
    };
    /**
     * Issued when all executionContexts were cleared in browser
     */
    export type executionContextsClearedPayload = void;
    /**
     * Issued when object should be inspected (for example, as a result of inspect() command line API
call).
     */
    export type inspectRequestedPayload = {
      object: RemoteObject;
      hints: {
        [key: string]: string;
      };
      /**
       * Identifier of the context where the call was made.
       */
      executionContextId?: ExecutionContextId;
    };
    /**
     * Add handler to promise with given promise object id.
     */
    export type awaitPromiseParameters = {
      /**
       * Identifier of the promise.
       */
      promiseObjectId: RemoteObjectId;
      /**
       * Whether the result is expected to be a JSON object that should be sent by value.
       */
      returnByValue?: boolean;
      /**
       * Whether preview should be generated for the result.
       */
      generatePreview?: boolean;
    };
    export type awaitPromiseReturnValue = {
      /**
       * Promise result. Will contain rejected value if promise was rejected.
       */
      result: RemoteObject;
      /**
       * Exception details if stack strace is available.
       */
      exceptionDetails?: ExceptionDetails;
    };
    /**
     * Calls function with given declaration on the given object. Object group of the result is
inherited from the target object.
     */
    export type callFunctionOnParameters = {
      /**
       * Declaration of the function to call.
       */
      functionDeclaration: string;
      /**
       * Identifier of the object to call function on. Either objectId or executionContextId should
be specified.
       */
      objectId?: RemoteObjectId;
      /**
       * Call arguments. All call arguments must belong to the same JavaScript world as the target
object.
       */
      arguments?: CallArgument[];
      /**
       * In silent mode exceptions thrown during evaluation are not reported and do not pause
execution. Overrides `setPauseOnException` state.
       */
      silent?: boolean;
      /**
       * Whether the result is expected to be a JSON object which should be sent by value.
Can be overriden by `serializationOptions`.
       */
      returnByValue?: boolean;
      /**
       * Whether preview should be generated for the result.
       */
      generatePreview?: boolean;
      /**
       * Whether execution should be treated as initiated by user in the UI.
       */
      userGesture?: boolean;
      /**
       * Whether execution should `await` for resulting value and return once awaited promise is
resolved.
       */
      awaitPromise?: boolean;
      /**
       * Specifies execution context which global object will be used to call function on. Either
executionContextId or objectId should be specified.
       */
      executionContextId?: ExecutionContextId;
      /**
       * Symbolic group name that can be used to release multiple objects. If objectGroup is not
specified and objectId is, objectGroup will be inherited from object.
       */
      objectGroup?: string;
      /**
       * Whether to throw an exception if side effect cannot be ruled out during evaluation.
       */
      throwOnSideEffect?: boolean;
      /**
       * An alternative way to specify the execution context to call function on.
Compared to contextId that may be reused across processes, this is guaranteed to be
system-unique, so it can be used to prevent accidental function call
in context different than intended (e.g. as a result of navigation across process
boundaries).
This is mutually exclusive with `executionContextId`.
       */
      uniqueContextId?: string;
      /**
       * Specifies the result serialization. If provided, overrides
`generatePreview` and `returnByValue`.
       */
      serializationOptions?: SerializationOptions;
    };
    export type callFunctionOnReturnValue = {
      /**
       * Call result.
       */
      result: RemoteObject;
      /**
       * Exception details.
       */
      exceptionDetails?: ExceptionDetails;
    };
    /**
     * Compiles expression.
     */
    export type compileScriptParameters = {
      /**
       * Expression to compile.
       */
      expression: string;
      /**
       * Source url to be set for the script.
       */
      sourceURL: string;
      /**
       * Specifies whether the compiled script should be persisted.
       */
      persistScript: boolean;
      /**
       * Specifies in which execution context to perform script run. If the parameter is omitted the
evaluation will be performed in the context of the inspected page.
       */
      executionContextId?: ExecutionContextId;
    };
    export type compileScriptReturnValue = {
      /**
       * Id of the script.
       */
      scriptId?: ScriptId;
      /**
       * Exception details.
       */
      exceptionDetails?: ExceptionDetails;
    };
    /**
     * Disables reporting of execution contexts creation.
     */
    export type disableParameters = {};
    export type disableReturnValue = {};
    /**
     * Discards collected exceptions and console API calls.
     */
    export type discardConsoleEntriesParameters = {};
    export type discardConsoleEntriesReturnValue = {};
    /**
     * Enables reporting of execution contexts creation by means of `executionContextCreated` event.
When the reporting gets enabled the event will be sent immediately for each existing execution
context.
     */
    export type enableParameters = {};
    export type enableReturnValue = {};
    /**
     * Evaluates expression on global object.
     */
    export type evaluateParameters = {
      /**
       * Expression to evaluate.
       */
      expression: string;
      /**
       * Symbolic group name that can be used to release multiple objects.
       */
      objectGroup?: string;
      /**
       * Determines whether Command Line API should be available during the evaluation.
       */
      includeCommandLineAPI?: boolean;
      /**
       * In silent mode exceptions thrown during evaluation are not reported and do not pause
execution. Overrides `setPauseOnException` state.
       */
      silent?: boolean;
      /**
       * Specifies in which execution context to perform evaluation. If the parameter is omitted the
evaluation will be performed in the context of the inspected page.
This is mutually exclusive with `uniqueContextId`, which offers an
alternative way to identify the execution context that is more reliable
in a multi-process environment.
       */
      contextId?: ExecutionContextId;
      /**
       * Whether the result is expected to be a JSON object that should be sent by value.
       */
      returnByValue?: boolean;
      /**
       * Whether preview should be generated for the result.
       */
      generatePreview?: boolean;
      /**
       * Whether execution should be treated as initiated by user in the UI.
       */
      userGesture?: boolean;
      /**
       * Whether execution should `await` for resulting value and return once awaited promise is
resolved.
       */
      awaitPromise?: boolean;
      /**
       * Whether to throw an exception if side effect cannot be ruled out during evaluation.
This implies `disableBreaks` below.
       */
      throwOnSideEffect?: boolean;
      /**
       * Terminate execution after timing out (number of milliseconds).
       */
      timeout?: TimeDelta;
      /**
       * Disable breakpoints during execution.
       */
      disableBreaks?: boolean;
      /**
       * Setting this flag to true enables `let` re-declaration and top-level `await`.
Note that `let` variables can only be re-declared if they originate from
`replMode` themselves.
       */
      replMode?: boolean;
      /**
       * The Content Security Policy (CSP) for the target might block 'unsafe-eval'
which includes eval(), Function(), setTimeout() and setInterval()
when called with non-callable arguments. This flag bypasses CSP for this
evaluation and allows unsafe-eval. Defaults to true.
       */
      allowUnsafeEvalBlockedByCSP?: boolean;
      /**
       * An alternative way to specify the execution context to evaluate in.
Compared to contextId that may be reused across processes, this is guaranteed to be
system-unique, so it can be used to prevent accidental evaluation of the expression
in context different than intended (e.g. as a result of navigation across process
boundaries).
This is mutually exclusive with `contextId`.
       */
      uniqueContextId?: string;
      /**
       * Specifies the result serialization. If provided, overrides
`generatePreview` and `returnByValue`.
       */
      serializationOptions?: SerializationOptions;
    };
    export type evaluateReturnValue = {
      /**
       * Evaluation result.
       */
      result: RemoteObject;
      /**
       * Exception details.
       */
      exceptionDetails?: ExceptionDetails;
    };
    /**
     * Returns the isolate id.
     */
    export type getIsolateIdParameters = {};
    export type getIsolateIdReturnValue = {
      /**
       * The isolate id.
       */
      id: string;
    };
    /**
     * Returns the JavaScript heap usage.
It is the total usage of the corresponding isolate not scoped to a particular Runtime.
     */
    export type getHeapUsageParameters = {};
    export type getHeapUsageReturnValue = {
      /**
       * Used JavaScript heap size in bytes.
       */
      usedSize: number;
      /**
       * Allocated JavaScript heap size in bytes.
       */
      totalSize: number;
      /**
       * Used size in bytes in the embedder's garbage-collected heap.
       */
      embedderHeapUsedSize: number;
      /**
       * Size in bytes of backing storage for array buffers and external strings.
       */
      backingStorageSize: number;
    };
    /**
     * Returns properties of a given object. Object group of the result is inherited from the target
object.
     */
    export type getPropertiesParameters = {
      /**
       * Identifier of the object to return properties for.
       */
      objectId: RemoteObjectId;
      /**
       * If true, returns properties belonging only to the element itself, not to its prototype
chain.
       */
      ownProperties?: boolean;
      /**
       * If true, returns accessor properties (with getter/setter) only; internal properties are not
returned either.
       */
      accessorPropertiesOnly?: boolean;
      /**
       * Whether preview should be generated for the results.
       */
      generatePreview?: boolean;
      /**
       * If true, returns non-indexed properties only.
       */
      nonIndexedPropertiesOnly?: boolean;
    };
    export type getPropertiesReturnValue = {
      /**
       * Object properties.
       */
      result: PropertyDescriptor[];
      /**
       * Internal object properties (only of the element itself).
       */
      internalProperties?: InternalPropertyDescriptor[];
      /**
       * Object private properties.
       */
      privateProperties?: PrivatePropertyDescriptor[];
      /**
       * Exception details.
       */
      exceptionDetails?: ExceptionDetails;
    };
    /**
     * Returns all let, const and class variables from global scope.
     */
    export type globalLexicalScopeNamesParameters = {
      /**
       * Specifies in which execution context to lookup global scope variables.
       */
      executionContextId?: ExecutionContextId;
    };
    export type globalLexicalScopeNamesReturnValue = {
      names: string[];
    };
    export type queryObjectsParameters = {
      /**
       * Identifier of the prototype to return objects for.
       */
      prototypeObjectId: RemoteObjectId;
      /**
       * Symbolic group name that can be used to release the results.
       */
      objectGroup?: string;
    };
    export type queryObjectsReturnValue = {
      /**
       * Array with objects.
       */
      objects: RemoteObject;
    };
    /**
     * Releases remote object with given id.
     */
    export type releaseObjectParameters = {
      /**
       * Identifier of the object to release.
       */
      objectId: RemoteObjectId;
    };
    export type releaseObjectReturnValue = {};
    /**
     * Releases all remote objects that belong to a given group.
     */
    export type releaseObjectGroupParameters = {
      /**
       * Symbolic object group name.
       */
      objectGroup: string;
    };
    export type releaseObjectGroupReturnValue = {};
    /**
     * Tells inspected instance to run if it was waiting for debugger to attach.
     */
    export type runIfWaitingForDebuggerParameters = {};
    export type runIfWaitingForDebuggerReturnValue = {};
    /**
     * Runs script with given id in a given context.
     */
    export type runScriptParameters = {
      /**
       * Id of the script to run.
       */
      scriptId: ScriptId;
      /**
       * Specifies in which execution context to perform script run. If the parameter is omitted the
evaluation will be performed in the context of the inspected page.
       */
      executionContextId?: ExecutionContextId;
      /**
       * Symbolic group name that can be used to release multiple objects.
       */
      objectGroup?: string;
      /**
       * In silent mode exceptions thrown during evaluation are not reported and do not pause
execution. Overrides `setPauseOnException` state.
       */
      silent?: boolean;
      /**
       * Determines whether Command Line API should be available during the evaluation.
       */
      includeCommandLineAPI?: boolean;
      /**
       * Whether the result is expected to be a JSON object which should be sent by value.
       */
      returnByValue?: boolean;
      /**
       * Whether preview should be generated for the result.
       */
      generatePreview?: boolean;
      /**
       * Whether execution should `await` for resulting value and return once awaited promise is
resolved.
       */
      awaitPromise?: boolean;
    };
    export type runScriptReturnValue = {
      /**
       * Run result.
       */
      result: RemoteObject;
      /**
       * Exception details.
       */
      exceptionDetails?: ExceptionDetails;
    };
    /**
     * Enables or disables async call stacks tracking.
     */
    export type setAsyncCallStackDepthParameters = {
      /**
       * Maximum depth of async call stacks. Setting to `0` will effectively disable collecting async
call stacks (default).
       */
      maxDepth: number;
    };
    export type setAsyncCallStackDepthReturnValue = {};
    export type setCustomObjectFormatterEnabledParameters = {
      enabled: boolean;
    };
    export type setCustomObjectFormatterEnabledReturnValue = {};
    export type setMaxCallStackSizeToCaptureParameters = {
      size: number;
    };
    export type setMaxCallStackSizeToCaptureReturnValue = {};
    /**
     * Terminate current or next JavaScript execution.
Will cancel the termination when the outer-most script execution ends.
     */
    export type terminateExecutionParameters = {};
    export type terminateExecutionReturnValue = {};
    /**
     * If executionContextId is empty, adds binding with the given name on the
global objects of all inspected contexts, including those created later,
bindings survive reloads.
Binding function takes exactly one argument, this argument should be string,
in case of any other input, function throws an exception.
Each binding function call produces Runtime.bindingCalled notification.
     */
    export type addBindingParameters = {
      name: string;
      /**
       * If specified, the binding would only be exposed to the specified
execution context. If omitted and `executionContextName` is not set,
the binding is exposed to all execution contexts of the target.
This parameter is mutually exclusive with `executionContextName`.
Deprecated in favor of `executionContextName` due to an unclear use case
and bugs in implementation (crbug.com/1169639). `executionContextId` will be
removed in the future.
       */
      executionContextId?: ExecutionContextId;
      /**
       * If specified, the binding is exposed to the executionContext with
matching name, even for contexts created after the binding is added.
See also `ExecutionContext.name` and `worldName` parameter to
`Page.addScriptToEvaluateOnNewDocument`.
This parameter is mutually exclusive with `executionContextId`.
       */
      executionContextName?: string;
    };
    export type addBindingReturnValue = {};
    /**
     * This method does not remove binding function from global object but
unsubscribes current runtime agent from Runtime.bindingCalled notifications.
     */
    export type removeBindingParameters = {
      name: string;
    };
    export type removeBindingReturnValue = {};
    /**
     * This method tries to lookup and populate exception details for a
JavaScript Error object.
Note that the stackTrace portion of the resulting exceptionDetails will
only be populated if the Runtime domain was enabled at the time when the
Error was thrown.
     */
    export type getExceptionDetailsParameters = {
      /**
       * The error object for which to resolve the exception details.
       */
      errorObjectId: RemoteObjectId;
    };
    export type getExceptionDetailsReturnValue = {
      exceptionDetails?: ExceptionDetails;
    };
  }
  /**
   * This domain is deprecated.
   */
  export namespace Schema {
    /**
     * Description of the protocol domain.
     */
    export interface Domain {
      /**
       * Domain name.
       */
      name: string;
      /**
       * Domain version.
       */
      version: string;
    }
    /**
     * Returns supported domains.
     */
    export type getDomainsParameters = {};
    export type getDomainsReturnValue = {
      /**
       * List of supported domains.
       */
      domains: Domain[];
    };
  }
  export type Events = {
    "Accessibility.loadComplete": Accessibility.loadCompletePayload;
    "Accessibility.nodesUpdated": Accessibility.nodesUpdatedPayload;
    "Animation.animationCanceled": Animation.animationCanceledPayload;
    "Animation.animationCreated": Animation.animationCreatedPayload;
    "Animation.animationStarted": Animation.animationStartedPayload;
    "Animation.animationUpdated": Animation.animationUpdatedPayload;
    "Audits.issueAdded": Audits.issueAddedPayload;
    "Autofill.addressFormFilled": Autofill.addressFormFilledPayload;
    "BackgroundService.recordingStateChanged": BackgroundService.recordingStateChangedPayload;
    "BackgroundService.backgroundServiceEventReceived": BackgroundService.backgroundServiceEventReceivedPayload;
    "BluetoothEmulation.gattOperationReceived": BluetoothEmulation.gattOperationReceivedPayload;
    "BluetoothEmulation.characteristicOperationReceived": BluetoothEmulation.characteristicOperationReceivedPayload;
    "BluetoothEmulation.descriptorOperationReceived": BluetoothEmulation.descriptorOperationReceivedPayload;
    "Browser.downloadWillBegin": Browser.downloadWillBeginPayload;
    "Browser.downloadProgress": Browser.downloadProgressPayload;
    "CSS.fontsUpdated": CSS.fontsUpdatedPayload;
    "CSS.mediaQueryResultChanged": CSS.mediaQueryResultChangedPayload;
    "CSS.styleSheetAdded": CSS.styleSheetAddedPayload;
    "CSS.styleSheetChanged": CSS.styleSheetChangedPayload;
    "CSS.styleSheetRemoved": CSS.styleSheetRemovedPayload;
    "CSS.computedStyleUpdated": CSS.computedStyleUpdatedPayload;
    "Cast.sinksUpdated": Cast.sinksUpdatedPayload;
    "Cast.issueUpdated": Cast.issueUpdatedPayload;
    "DOM.attributeModified": DOM.attributeModifiedPayload;
    "DOM.adoptedStyleSheetsModified": DOM.adoptedStyleSheetsModifiedPayload;
    "DOM.attributeRemoved": DOM.attributeRemovedPayload;
    "DOM.characterDataModified": DOM.characterDataModifiedPayload;
    "DOM.childNodeCountUpdated": DOM.childNodeCountUpdatedPayload;
    "DOM.childNodeInserted": DOM.childNodeInsertedPayload;
    "DOM.childNodeRemoved": DOM.childNodeRemovedPayload;
    "DOM.distributedNodesUpdated": DOM.distributedNodesUpdatedPayload;
    "DOM.documentUpdated": DOM.documentUpdatedPayload;
    "DOM.inlineStyleInvalidated": DOM.inlineStyleInvalidatedPayload;
    "DOM.pseudoElementAdded": DOM.pseudoElementAddedPayload;
    "DOM.topLayerElementsUpdated": DOM.topLayerElementsUpdatedPayload;
    "DOM.scrollableFlagUpdated": DOM.scrollableFlagUpdatedPayload;
    "DOM.adRelatedStateUpdated": DOM.adRelatedStateUpdatedPayload;
    "DOM.affectedByStartingStylesFlagUpdated": DOM.affectedByStartingStylesFlagUpdatedPayload;
    "DOM.pseudoElementRemoved": DOM.pseudoElementRemovedPayload;
    "DOM.setChildNodes": DOM.setChildNodesPayload;
    "DOM.shadowRootPopped": DOM.shadowRootPoppedPayload;
    "DOM.shadowRootPushed": DOM.shadowRootPushedPayload;
    "DOMStorage.domStorageItemAdded": DOMStorage.domStorageItemAddedPayload;
    "DOMStorage.domStorageItemRemoved": DOMStorage.domStorageItemRemovedPayload;
    "DOMStorage.domStorageItemUpdated": DOMStorage.domStorageItemUpdatedPayload;
    "DOMStorage.domStorageItemsCleared": DOMStorage.domStorageItemsClearedPayload;
    "DeviceAccess.deviceRequestPrompted": DeviceAccess.deviceRequestPromptedPayload;
    "Emulation.virtualTimeBudgetExpired": Emulation.virtualTimeBudgetExpiredPayload;
    "Emulation.screenOrientationLockChanged": Emulation.screenOrientationLockChangedPayload;
    "FedCm.dialogShown": FedCm.dialogShownPayload;
    "FedCm.dialogClosed": FedCm.dialogClosedPayload;
    "Fetch.requestPaused": Fetch.requestPausedPayload;
    "Fetch.authRequired": Fetch.authRequiredPayload;
    "Input.dragIntercepted": Input.dragInterceptedPayload;
    "Inspector.detached": Inspector.detachedPayload;
    "Inspector.targetCrashed": Inspector.targetCrashedPayload;
    "Inspector.targetReloadedAfterCrash": Inspector.targetReloadedAfterCrashPayload;
    "Inspector.workerScriptLoaded": Inspector.workerScriptLoadedPayload;
    "LayerTree.layerPainted": LayerTree.layerPaintedPayload;
    "LayerTree.layerTreeDidChange": LayerTree.layerTreeDidChangePayload;
    "Log.entryAdded": Log.entryAddedPayload;
    "Media.playerPropertiesChanged": Media.playerPropertiesChangedPayload;
    "Media.playerEventsAdded": Media.playerEventsAddedPayload;
    "Media.playerMessagesLogged": Media.playerMessagesLoggedPayload;
    "Media.playerErrorsRaised": Media.playerErrorsRaisedPayload;
    "Media.playerCreated": Media.playerCreatedPayload;
    "Network.dataReceived": Network.dataReceivedPayload;
    "Network.eventSourceMessageReceived": Network.eventSourceMessageReceivedPayload;
    "Network.loadingFailed": Network.loadingFailedPayload;
    "Network.loadingFinished": Network.loadingFinishedPayload;
    "Network.requestIntercepted": Network.requestInterceptedPayload;
    "Network.requestServedFromCache": Network.requestServedFromCachePayload;
    "Network.requestWillBeSent": Network.requestWillBeSentPayload;
    "Network.resourceChangedPriority": Network.resourceChangedPriorityPayload;
    "Network.signedExchangeReceived": Network.signedExchangeReceivedPayload;
    "Network.responseReceived": Network.responseReceivedPayload;
    "Network.webSocketClosed": Network.webSocketClosedPayload;
    "Network.webSocketCreated": Network.webSocketCreatedPayload;
    "Network.webSocketFrameError": Network.webSocketFrameErrorPayload;
    "Network.webSocketFrameReceived": Network.webSocketFrameReceivedPayload;
    "Network.webSocketFrameSent": Network.webSocketFrameSentPayload;
    "Network.webSocketHandshakeResponseReceived": Network.webSocketHandshakeResponseReceivedPayload;
    "Network.webSocketWillSendHandshakeRequest": Network.webSocketWillSendHandshakeRequestPayload;
    "Network.webTransportCreated": Network.webTransportCreatedPayload;
    "Network.webTransportConnectionEstablished": Network.webTransportConnectionEstablishedPayload;
    "Network.webTransportClosed": Network.webTransportClosedPayload;
    "Network.directTCPSocketCreated": Network.directTCPSocketCreatedPayload;
    "Network.directTCPSocketOpened": Network.directTCPSocketOpenedPayload;
    "Network.directTCPSocketAborted": Network.directTCPSocketAbortedPayload;
    "Network.directTCPSocketClosed": Network.directTCPSocketClosedPayload;
    "Network.directTCPSocketChunkSent": Network.directTCPSocketChunkSentPayload;
    "Network.directTCPSocketChunkReceived": Network.directTCPSocketChunkReceivedPayload;
    "Network.directUDPSocketJoinedMulticastGroup": Network.directUDPSocketJoinedMulticastGroupPayload;
    "Network.directUDPSocketLeftMulticastGroup": Network.directUDPSocketLeftMulticastGroupPayload;
    "Network.directUDPSocketCreated": Network.directUDPSocketCreatedPayload;
    "Network.directUDPSocketOpened": Network.directUDPSocketOpenedPayload;
    "Network.directUDPSocketAborted": Network.directUDPSocketAbortedPayload;
    "Network.directUDPSocketClosed": Network.directUDPSocketClosedPayload;
    "Network.directUDPSocketChunkSent": Network.directUDPSocketChunkSentPayload;
    "Network.directUDPSocketChunkReceived": Network.directUDPSocketChunkReceivedPayload;
    "Network.requestWillBeSentExtraInfo": Network.requestWillBeSentExtraInfoPayload;
    "Network.responseReceivedExtraInfo": Network.responseReceivedExtraInfoPayload;
    "Network.responseReceivedEarlyHints": Network.responseReceivedEarlyHintsPayload;
    "Network.trustTokenOperationDone": Network.trustTokenOperationDonePayload;
    "Network.policyUpdated": Network.policyUpdatedPayload;
    "Network.reportingApiReportAdded": Network.reportingApiReportAddedPayload;
    "Network.reportingApiReportUpdated": Network.reportingApiReportUpdatedPayload;
    "Network.reportingApiEndpointsChangedForOrigin": Network.reportingApiEndpointsChangedForOriginPayload;
    "Network.deviceBoundSessionsAdded": Network.deviceBoundSessionsAddedPayload;
    "Network.deviceBoundSessionEventOccurred": Network.deviceBoundSessionEventOccurredPayload;
    "Overlay.inspectNodeRequested": Overlay.inspectNodeRequestedPayload;
    "Overlay.nodeHighlightRequested": Overlay.nodeHighlightRequestedPayload;
    "Overlay.screenshotRequested": Overlay.screenshotRequestedPayload;
    "Overlay.inspectPanelShowRequested": Overlay.inspectPanelShowRequestedPayload;
    "Overlay.inspectedElementWindowRestored": Overlay.inspectedElementWindowRestoredPayload;
    "Overlay.inspectModeCanceled": Overlay.inspectModeCanceledPayload;
    "Page.domContentEventFired": Page.domContentEventFiredPayload;
    "Page.fileChooserOpened": Page.fileChooserOpenedPayload;
    "Page.frameAttached": Page.frameAttachedPayload;
    "Page.frameClearedScheduledNavigation": Page.frameClearedScheduledNavigationPayload;
    "Page.frameDetached": Page.frameDetachedPayload;
    "Page.frameSubtreeWillBeDetached": Page.frameSubtreeWillBeDetachedPayload;
    "Page.frameNavigated": Page.frameNavigatedPayload;
    "Page.documentOpened": Page.documentOpenedPayload;
    "Page.frameResized": Page.frameResizedPayload;
    "Page.frameStartedNavigating": Page.frameStartedNavigatingPayload;
    "Page.frameRequestedNavigation": Page.frameRequestedNavigationPayload;
    "Page.frameScheduledNavigation": Page.frameScheduledNavigationPayload;
    "Page.frameStartedLoading": Page.frameStartedLoadingPayload;
    "Page.frameStoppedLoading": Page.frameStoppedLoadingPayload;
    "Page.downloadWillBegin": Page.downloadWillBeginPayload;
    "Page.downloadProgress": Page.downloadProgressPayload;
    "Page.interstitialHidden": Page.interstitialHiddenPayload;
    "Page.interstitialShown": Page.interstitialShownPayload;
    "Page.javascriptDialogClosed": Page.javascriptDialogClosedPayload;
    "Page.javascriptDialogOpening": Page.javascriptDialogOpeningPayload;
    "Page.lifecycleEvent": Page.lifecycleEventPayload;
    "Page.backForwardCacheNotUsed": Page.backForwardCacheNotUsedPayload;
    "Page.loadEventFired": Page.loadEventFiredPayload;
    "Page.navigatedWithinDocument": Page.navigatedWithinDocumentPayload;
    "Page.screencastFrame": Page.screencastFramePayload;
    "Page.screencastVisibilityChanged": Page.screencastVisibilityChangedPayload;
    "Page.windowOpen": Page.windowOpenPayload;
    "Page.compilationCacheProduced": Page.compilationCacheProducedPayload;
    "Performance.metrics": Performance.metricsPayload;
    "PerformanceTimeline.timelineEventAdded": PerformanceTimeline.timelineEventAddedPayload;
    "Preload.ruleSetUpdated": Preload.ruleSetUpdatedPayload;
    "Preload.ruleSetRemoved": Preload.ruleSetRemovedPayload;
    "Preload.preloadEnabledStateUpdated": Preload.preloadEnabledStateUpdatedPayload;
    "Preload.prefetchStatusUpdated": Preload.prefetchStatusUpdatedPayload;
    "Preload.prerenderStatusUpdated": Preload.prerenderStatusUpdatedPayload;
    "Preload.preloadingAttemptSourcesUpdated": Preload.preloadingAttemptSourcesUpdatedPayload;
    "Security.certificateError": Security.certificateErrorPayload;
    "Security.visibleSecurityStateChanged": Security.visibleSecurityStateChangedPayload;
    "Security.securityStateChanged": Security.securityStateChangedPayload;
    "ServiceWorker.workerErrorReported": ServiceWorker.workerErrorReportedPayload;
    "ServiceWorker.workerRegistrationUpdated": ServiceWorker.workerRegistrationUpdatedPayload;
    "ServiceWorker.workerVersionUpdated": ServiceWorker.workerVersionUpdatedPayload;
    "SmartCardEmulation.establishContextRequested": SmartCardEmulation.establishContextRequestedPayload;
    "SmartCardEmulation.releaseContextRequested": SmartCardEmulation.releaseContextRequestedPayload;
    "SmartCardEmulation.listReadersRequested": SmartCardEmulation.listReadersRequestedPayload;
    "SmartCardEmulation.getStatusChangeRequested": SmartCardEmulation.getStatusChangeRequestedPayload;
    "SmartCardEmulation.cancelRequested": SmartCardEmulation.cancelRequestedPayload;
    "SmartCardEmulation.connectRequested": SmartCardEmulation.connectRequestedPayload;
    "SmartCardEmulation.disconnectRequested": SmartCardEmulation.disconnectRequestedPayload;
    "SmartCardEmulation.transmitRequested": SmartCardEmulation.transmitRequestedPayload;
    "SmartCardEmulation.controlRequested": SmartCardEmulation.controlRequestedPayload;
    "SmartCardEmulation.getAttribRequested": SmartCardEmulation.getAttribRequestedPayload;
    "SmartCardEmulation.setAttribRequested": SmartCardEmulation.setAttribRequestedPayload;
    "SmartCardEmulation.statusRequested": SmartCardEmulation.statusRequestedPayload;
    "SmartCardEmulation.beginTransactionRequested": SmartCardEmulation.beginTransactionRequestedPayload;
    "SmartCardEmulation.endTransactionRequested": SmartCardEmulation.endTransactionRequestedPayload;
    "Storage.cacheStorageContentUpdated": Storage.cacheStorageContentUpdatedPayload;
    "Storage.cacheStorageListUpdated": Storage.cacheStorageListUpdatedPayload;
    "Storage.indexedDBContentUpdated": Storage.indexedDBContentUpdatedPayload;
    "Storage.indexedDBListUpdated": Storage.indexedDBListUpdatedPayload;
    "Storage.interestGroupAccessed": Storage.interestGroupAccessedPayload;
    "Storage.interestGroupAuctionEventOccurred": Storage.interestGroupAuctionEventOccurredPayload;
    "Storage.interestGroupAuctionNetworkRequestCreated": Storage.interestGroupAuctionNetworkRequestCreatedPayload;
    "Storage.sharedStorageAccessed": Storage.sharedStorageAccessedPayload;
    "Storage.sharedStorageWorkletOperationExecutionFinished": Storage.sharedStorageWorkletOperationExecutionFinishedPayload;
    "Storage.storageBucketCreatedOrUpdated": Storage.storageBucketCreatedOrUpdatedPayload;
    "Storage.storageBucketDeleted": Storage.storageBucketDeletedPayload;
    "Target.attachedToTarget": Target.attachedToTargetPayload;
    "Target.detachedFromTarget": Target.detachedFromTargetPayload;
    "Target.receivedMessageFromTarget": Target.receivedMessageFromTargetPayload;
    "Target.targetCreated": Target.targetCreatedPayload;
    "Target.targetDestroyed": Target.targetDestroyedPayload;
    "Target.targetCrashed": Target.targetCrashedPayload;
    "Target.targetInfoChanged": Target.targetInfoChangedPayload;
    "Tethering.accepted": Tethering.acceptedPayload;
    "Tracing.bufferUsage": Tracing.bufferUsagePayload;
    "Tracing.dataCollected": Tracing.dataCollectedPayload;
    "Tracing.tracingComplete": Tracing.tracingCompletePayload;
    "WebAudio.contextCreated": WebAudio.contextCreatedPayload;
    "WebAudio.contextWillBeDestroyed": WebAudio.contextWillBeDestroyedPayload;
    "WebAudio.contextChanged": WebAudio.contextChangedPayload;
    "WebAudio.audioListenerCreated": WebAudio.audioListenerCreatedPayload;
    "WebAudio.audioListenerWillBeDestroyed": WebAudio.audioListenerWillBeDestroyedPayload;
    "WebAudio.audioNodeCreated": WebAudio.audioNodeCreatedPayload;
    "WebAudio.audioNodeWillBeDestroyed": WebAudio.audioNodeWillBeDestroyedPayload;
    "WebAudio.audioParamCreated": WebAudio.audioParamCreatedPayload;
    "WebAudio.audioParamWillBeDestroyed": WebAudio.audioParamWillBeDestroyedPayload;
    "WebAudio.nodesConnected": WebAudio.nodesConnectedPayload;
    "WebAudio.nodesDisconnected": WebAudio.nodesDisconnectedPayload;
    "WebAudio.nodeParamConnected": WebAudio.nodeParamConnectedPayload;
    "WebAudio.nodeParamDisconnected": WebAudio.nodeParamDisconnectedPayload;
    "WebAuthn.credentialAdded": WebAuthn.credentialAddedPayload;
    "WebAuthn.credentialDeleted": WebAuthn.credentialDeletedPayload;
    "WebAuthn.credentialUpdated": WebAuthn.credentialUpdatedPayload;
    "WebAuthn.credentialAsserted": WebAuthn.credentialAssertedPayload;
    "WebMCP.toolsAdded": WebMCP.toolsAddedPayload;
    "WebMCP.toolsRemoved": WebMCP.toolsRemovedPayload;
    "WebMCP.toolInvoked": WebMCP.toolInvokedPayload;
    "WebMCP.toolResponded": WebMCP.toolRespondedPayload;
    "Console.messageAdded": Console.messageAddedPayload;
    "Debugger.breakpointResolved": Debugger.breakpointResolvedPayload;
    "Debugger.paused": Debugger.pausedPayload;
    "Debugger.resumed": Debugger.resumedPayload;
    "Debugger.scriptFailedToParse": Debugger.scriptFailedToParsePayload;
    "Debugger.scriptParsed": Debugger.scriptParsedPayload;
    "HeapProfiler.addHeapSnapshotChunk": HeapProfiler.addHeapSnapshotChunkPayload;
    "HeapProfiler.heapStatsUpdate": HeapProfiler.heapStatsUpdatePayload;
    "HeapProfiler.lastSeenObjectId": HeapProfiler.lastSeenObjectIdPayload;
    "HeapProfiler.reportHeapSnapshotProgress": HeapProfiler.reportHeapSnapshotProgressPayload;
    "HeapProfiler.resetProfiles": HeapProfiler.resetProfilesPayload;
    "Profiler.consoleProfileFinished": Profiler.consoleProfileFinishedPayload;
    "Profiler.consoleProfileStarted": Profiler.consoleProfileStartedPayload;
    "Profiler.preciseCoverageDeltaUpdate": Profiler.preciseCoverageDeltaUpdatePayload;
    "Runtime.bindingCalled": Runtime.bindingCalledPayload;
    "Runtime.consoleAPICalled": Runtime.consoleAPICalledPayload;
    "Runtime.exceptionRevoked": Runtime.exceptionRevokedPayload;
    "Runtime.exceptionThrown": Runtime.exceptionThrownPayload;
    "Runtime.executionContextCreated": Runtime.executionContextCreatedPayload;
    "Runtime.executionContextDestroyed": Runtime.executionContextDestroyedPayload;
    "Runtime.executionContextsCleared": Runtime.executionContextsClearedPayload;
    "Runtime.inspectRequested": Runtime.inspectRequestedPayload;
  };
  export type EventMap = {
    ["Accessibility.loadComplete"]: [Accessibility.loadCompletePayload];
    ["Accessibility.nodesUpdated"]: [Accessibility.nodesUpdatedPayload];
    ["Animation.animationCanceled"]: [Animation.animationCanceledPayload];
    ["Animation.animationCreated"]: [Animation.animationCreatedPayload];
    ["Animation.animationStarted"]: [Animation.animationStartedPayload];
    ["Animation.animationUpdated"]: [Animation.animationUpdatedPayload];
    ["Audits.issueAdded"]: [Audits.issueAddedPayload];
    ["Autofill.addressFormFilled"]: [Autofill.addressFormFilledPayload];
    ["BackgroundService.recordingStateChanged"]: [BackgroundService.recordingStateChangedPayload];
    ["BackgroundService.backgroundServiceEventReceived"]: [BackgroundService.backgroundServiceEventReceivedPayload];
    ["BluetoothEmulation.gattOperationReceived"]: [BluetoothEmulation.gattOperationReceivedPayload];
    ["BluetoothEmulation.characteristicOperationReceived"]: [BluetoothEmulation.characteristicOperationReceivedPayload];
    ["BluetoothEmulation.descriptorOperationReceived"]: [BluetoothEmulation.descriptorOperationReceivedPayload];
    ["Browser.downloadWillBegin"]: [Browser.downloadWillBeginPayload];
    ["Browser.downloadProgress"]: [Browser.downloadProgressPayload];
    ["CSS.fontsUpdated"]: [CSS.fontsUpdatedPayload];
    ["CSS.mediaQueryResultChanged"]: [CSS.mediaQueryResultChangedPayload];
    ["CSS.styleSheetAdded"]: [CSS.styleSheetAddedPayload];
    ["CSS.styleSheetChanged"]: [CSS.styleSheetChangedPayload];
    ["CSS.styleSheetRemoved"]: [CSS.styleSheetRemovedPayload];
    ["CSS.computedStyleUpdated"]: [CSS.computedStyleUpdatedPayload];
    ["Cast.sinksUpdated"]: [Cast.sinksUpdatedPayload];
    ["Cast.issueUpdated"]: [Cast.issueUpdatedPayload];
    ["DOM.attributeModified"]: [DOM.attributeModifiedPayload];
    ["DOM.adoptedStyleSheetsModified"]: [DOM.adoptedStyleSheetsModifiedPayload];
    ["DOM.attributeRemoved"]: [DOM.attributeRemovedPayload];
    ["DOM.characterDataModified"]: [DOM.characterDataModifiedPayload];
    ["DOM.childNodeCountUpdated"]: [DOM.childNodeCountUpdatedPayload];
    ["DOM.childNodeInserted"]: [DOM.childNodeInsertedPayload];
    ["DOM.childNodeRemoved"]: [DOM.childNodeRemovedPayload];
    ["DOM.distributedNodesUpdated"]: [DOM.distributedNodesUpdatedPayload];
    ["DOM.documentUpdated"]: [DOM.documentUpdatedPayload];
    ["DOM.inlineStyleInvalidated"]: [DOM.inlineStyleInvalidatedPayload];
    ["DOM.pseudoElementAdded"]: [DOM.pseudoElementAddedPayload];
    ["DOM.topLayerElementsUpdated"]: [DOM.topLayerElementsUpdatedPayload];
    ["DOM.scrollableFlagUpdated"]: [DOM.scrollableFlagUpdatedPayload];
    ["DOM.adRelatedStateUpdated"]: [DOM.adRelatedStateUpdatedPayload];
    ["DOM.affectedByStartingStylesFlagUpdated"]: [DOM.affectedByStartingStylesFlagUpdatedPayload];
    ["DOM.pseudoElementRemoved"]: [DOM.pseudoElementRemovedPayload];
    ["DOM.setChildNodes"]: [DOM.setChildNodesPayload];
    ["DOM.shadowRootPopped"]: [DOM.shadowRootPoppedPayload];
    ["DOM.shadowRootPushed"]: [DOM.shadowRootPushedPayload];
    ["DOMStorage.domStorageItemAdded"]: [DOMStorage.domStorageItemAddedPayload];
    ["DOMStorage.domStorageItemRemoved"]: [DOMStorage.domStorageItemRemovedPayload];
    ["DOMStorage.domStorageItemUpdated"]: [DOMStorage.domStorageItemUpdatedPayload];
    ["DOMStorage.domStorageItemsCleared"]: [DOMStorage.domStorageItemsClearedPayload];
    ["DeviceAccess.deviceRequestPrompted"]: [DeviceAccess.deviceRequestPromptedPayload];
    ["Emulation.virtualTimeBudgetExpired"]: [Emulation.virtualTimeBudgetExpiredPayload];
    ["Emulation.screenOrientationLockChanged"]: [Emulation.screenOrientationLockChangedPayload];
    ["FedCm.dialogShown"]: [FedCm.dialogShownPayload];
    ["FedCm.dialogClosed"]: [FedCm.dialogClosedPayload];
    ["Fetch.requestPaused"]: [Fetch.requestPausedPayload];
    ["Fetch.authRequired"]: [Fetch.authRequiredPayload];
    ["Input.dragIntercepted"]: [Input.dragInterceptedPayload];
    ["Inspector.detached"]: [Inspector.detachedPayload];
    ["Inspector.targetCrashed"]: [Inspector.targetCrashedPayload];
    ["Inspector.targetReloadedAfterCrash"]: [Inspector.targetReloadedAfterCrashPayload];
    ["Inspector.workerScriptLoaded"]: [Inspector.workerScriptLoadedPayload];
    ["LayerTree.layerPainted"]: [LayerTree.layerPaintedPayload];
    ["LayerTree.layerTreeDidChange"]: [LayerTree.layerTreeDidChangePayload];
    ["Log.entryAdded"]: [Log.entryAddedPayload];
    ["Media.playerPropertiesChanged"]: [Media.playerPropertiesChangedPayload];
    ["Media.playerEventsAdded"]: [Media.playerEventsAddedPayload];
    ["Media.playerMessagesLogged"]: [Media.playerMessagesLoggedPayload];
    ["Media.playerErrorsRaised"]: [Media.playerErrorsRaisedPayload];
    ["Media.playerCreated"]: [Media.playerCreatedPayload];
    ["Network.dataReceived"]: [Network.dataReceivedPayload];
    ["Network.eventSourceMessageReceived"]: [Network.eventSourceMessageReceivedPayload];
    ["Network.loadingFailed"]: [Network.loadingFailedPayload];
    ["Network.loadingFinished"]: [Network.loadingFinishedPayload];
    ["Network.requestIntercepted"]: [Network.requestInterceptedPayload];
    ["Network.requestServedFromCache"]: [Network.requestServedFromCachePayload];
    ["Network.requestWillBeSent"]: [Network.requestWillBeSentPayload];
    ["Network.resourceChangedPriority"]: [Network.resourceChangedPriorityPayload];
    ["Network.signedExchangeReceived"]: [Network.signedExchangeReceivedPayload];
    ["Network.responseReceived"]: [Network.responseReceivedPayload];
    ["Network.webSocketClosed"]: [Network.webSocketClosedPayload];
    ["Network.webSocketCreated"]: [Network.webSocketCreatedPayload];
    ["Network.webSocketFrameError"]: [Network.webSocketFrameErrorPayload];
    ["Network.webSocketFrameReceived"]: [Network.webSocketFrameReceivedPayload];
    ["Network.webSocketFrameSent"]: [Network.webSocketFrameSentPayload];
    ["Network.webSocketHandshakeResponseReceived"]: [Network.webSocketHandshakeResponseReceivedPayload];
    ["Network.webSocketWillSendHandshakeRequest"]: [Network.webSocketWillSendHandshakeRequestPayload];
    ["Network.webTransportCreated"]: [Network.webTransportCreatedPayload];
    ["Network.webTransportConnectionEstablished"]: [Network.webTransportConnectionEstablishedPayload];
    ["Network.webTransportClosed"]: [Network.webTransportClosedPayload];
    ["Network.directTCPSocketCreated"]: [Network.directTCPSocketCreatedPayload];
    ["Network.directTCPSocketOpened"]: [Network.directTCPSocketOpenedPayload];
    ["Network.directTCPSocketAborted"]: [Network.directTCPSocketAbortedPayload];
    ["Network.directTCPSocketClosed"]: [Network.directTCPSocketClosedPayload];
    ["Network.directTCPSocketChunkSent"]: [Network.directTCPSocketChunkSentPayload];
    ["Network.directTCPSocketChunkReceived"]: [Network.directTCPSocketChunkReceivedPayload];
    ["Network.directUDPSocketJoinedMulticastGroup"]: [Network.directUDPSocketJoinedMulticastGroupPayload];
    ["Network.directUDPSocketLeftMulticastGroup"]: [Network.directUDPSocketLeftMulticastGroupPayload];
    ["Network.directUDPSocketCreated"]: [Network.directUDPSocketCreatedPayload];
    ["Network.directUDPSocketOpened"]: [Network.directUDPSocketOpenedPayload];
    ["Network.directUDPSocketAborted"]: [Network.directUDPSocketAbortedPayload];
    ["Network.directUDPSocketClosed"]: [Network.directUDPSocketClosedPayload];
    ["Network.directUDPSocketChunkSent"]: [Network.directUDPSocketChunkSentPayload];
    ["Network.directUDPSocketChunkReceived"]: [Network.directUDPSocketChunkReceivedPayload];
    ["Network.requestWillBeSentExtraInfo"]: [Network.requestWillBeSentExtraInfoPayload];
    ["Network.responseReceivedExtraInfo"]: [Network.responseReceivedExtraInfoPayload];
    ["Network.responseReceivedEarlyHints"]: [Network.responseReceivedEarlyHintsPayload];
    ["Network.trustTokenOperationDone"]: [Network.trustTokenOperationDonePayload];
    ["Network.policyUpdated"]: [Network.policyUpdatedPayload];
    ["Network.reportingApiReportAdded"]: [Network.reportingApiReportAddedPayload];
    ["Network.reportingApiReportUpdated"]: [Network.reportingApiReportUpdatedPayload];
    ["Network.reportingApiEndpointsChangedForOrigin"]: [Network.reportingApiEndpointsChangedForOriginPayload];
    ["Network.deviceBoundSessionsAdded"]: [Network.deviceBoundSessionsAddedPayload];
    ["Network.deviceBoundSessionEventOccurred"]: [Network.deviceBoundSessionEventOccurredPayload];
    ["Overlay.inspectNodeRequested"]: [Overlay.inspectNodeRequestedPayload];
    ["Overlay.nodeHighlightRequested"]: [Overlay.nodeHighlightRequestedPayload];
    ["Overlay.screenshotRequested"]: [Overlay.screenshotRequestedPayload];
    ["Overlay.inspectPanelShowRequested"]: [Overlay.inspectPanelShowRequestedPayload];
    ["Overlay.inspectedElementWindowRestored"]: [Overlay.inspectedElementWindowRestoredPayload];
    ["Overlay.inspectModeCanceled"]: [Overlay.inspectModeCanceledPayload];
    ["Page.domContentEventFired"]: [Page.domContentEventFiredPayload];
    ["Page.fileChooserOpened"]: [Page.fileChooserOpenedPayload];
    ["Page.frameAttached"]: [Page.frameAttachedPayload];
    ["Page.frameClearedScheduledNavigation"]: [Page.frameClearedScheduledNavigationPayload];
    ["Page.frameDetached"]: [Page.frameDetachedPayload];
    ["Page.frameSubtreeWillBeDetached"]: [Page.frameSubtreeWillBeDetachedPayload];
    ["Page.frameNavigated"]: [Page.frameNavigatedPayload];
    ["Page.documentOpened"]: [Page.documentOpenedPayload];
    ["Page.frameResized"]: [Page.frameResizedPayload];
    ["Page.frameStartedNavigating"]: [Page.frameStartedNavigatingPayload];
    ["Page.frameRequestedNavigation"]: [Page.frameRequestedNavigationPayload];
    ["Page.frameScheduledNavigation"]: [Page.frameScheduledNavigationPayload];
    ["Page.frameStartedLoading"]: [Page.frameStartedLoadingPayload];
    ["Page.frameStoppedLoading"]: [Page.frameStoppedLoadingPayload];
    ["Page.downloadWillBegin"]: [Page.downloadWillBeginPayload];
    ["Page.downloadProgress"]: [Page.downloadProgressPayload];
    ["Page.interstitialHidden"]: [Page.interstitialHiddenPayload];
    ["Page.interstitialShown"]: [Page.interstitialShownPayload];
    ["Page.javascriptDialogClosed"]: [Page.javascriptDialogClosedPayload];
    ["Page.javascriptDialogOpening"]: [Page.javascriptDialogOpeningPayload];
    ["Page.lifecycleEvent"]: [Page.lifecycleEventPayload];
    ["Page.backForwardCacheNotUsed"]: [Page.backForwardCacheNotUsedPayload];
    ["Page.loadEventFired"]: [Page.loadEventFiredPayload];
    ["Page.navigatedWithinDocument"]: [Page.navigatedWithinDocumentPayload];
    ["Page.screencastFrame"]: [Page.screencastFramePayload];
    ["Page.screencastVisibilityChanged"]: [Page.screencastVisibilityChangedPayload];
    ["Page.windowOpen"]: [Page.windowOpenPayload];
    ["Page.compilationCacheProduced"]: [Page.compilationCacheProducedPayload];
    ["Performance.metrics"]: [Performance.metricsPayload];
    ["PerformanceTimeline.timelineEventAdded"]: [PerformanceTimeline.timelineEventAddedPayload];
    ["Preload.ruleSetUpdated"]: [Preload.ruleSetUpdatedPayload];
    ["Preload.ruleSetRemoved"]: [Preload.ruleSetRemovedPayload];
    ["Preload.preloadEnabledStateUpdated"]: [Preload.preloadEnabledStateUpdatedPayload];
    ["Preload.prefetchStatusUpdated"]: [Preload.prefetchStatusUpdatedPayload];
    ["Preload.prerenderStatusUpdated"]: [Preload.prerenderStatusUpdatedPayload];
    ["Preload.preloadingAttemptSourcesUpdated"]: [Preload.preloadingAttemptSourcesUpdatedPayload];
    ["Security.certificateError"]: [Security.certificateErrorPayload];
    ["Security.visibleSecurityStateChanged"]: [Security.visibleSecurityStateChangedPayload];
    ["Security.securityStateChanged"]: [Security.securityStateChangedPayload];
    ["ServiceWorker.workerErrorReported"]: [ServiceWorker.workerErrorReportedPayload];
    ["ServiceWorker.workerRegistrationUpdated"]: [ServiceWorker.workerRegistrationUpdatedPayload];
    ["ServiceWorker.workerVersionUpdated"]: [ServiceWorker.workerVersionUpdatedPayload];
    ["SmartCardEmulation.establishContextRequested"]: [SmartCardEmulation.establishContextRequestedPayload];
    ["SmartCardEmulation.releaseContextRequested"]: [SmartCardEmulation.releaseContextRequestedPayload];
    ["SmartCardEmulation.listReadersRequested"]: [SmartCardEmulation.listReadersRequestedPayload];
    ["SmartCardEmulation.getStatusChangeRequested"]: [SmartCardEmulation.getStatusChangeRequestedPayload];
    ["SmartCardEmulation.cancelRequested"]: [SmartCardEmulation.cancelRequestedPayload];
    ["SmartCardEmulation.connectRequested"]: [SmartCardEmulation.connectRequestedPayload];
    ["SmartCardEmulation.disconnectRequested"]: [SmartCardEmulation.disconnectRequestedPayload];
    ["SmartCardEmulation.transmitRequested"]: [SmartCardEmulation.transmitRequestedPayload];
    ["SmartCardEmulation.controlRequested"]: [SmartCardEmulation.controlRequestedPayload];
    ["SmartCardEmulation.getAttribRequested"]: [SmartCardEmulation.getAttribRequestedPayload];
    ["SmartCardEmulation.setAttribRequested"]: [SmartCardEmulation.setAttribRequestedPayload];
    ["SmartCardEmulation.statusRequested"]: [SmartCardEmulation.statusRequestedPayload];
    ["SmartCardEmulation.beginTransactionRequested"]: [SmartCardEmulation.beginTransactionRequestedPayload];
    ["SmartCardEmulation.endTransactionRequested"]: [SmartCardEmulation.endTransactionRequestedPayload];
    ["Storage.cacheStorageContentUpdated"]: [Storage.cacheStorageContentUpdatedPayload];
    ["Storage.cacheStorageListUpdated"]: [Storage.cacheStorageListUpdatedPayload];
    ["Storage.indexedDBContentUpdated"]: [Storage.indexedDBContentUpdatedPayload];
    ["Storage.indexedDBListUpdated"]: [Storage.indexedDBListUpdatedPayload];
    ["Storage.interestGroupAccessed"]: [Storage.interestGroupAccessedPayload];
    ["Storage.interestGroupAuctionEventOccurred"]: [Storage.interestGroupAuctionEventOccurredPayload];
    ["Storage.interestGroupAuctionNetworkRequestCreated"]: [Storage.interestGroupAuctionNetworkRequestCreatedPayload];
    ["Storage.sharedStorageAccessed"]: [Storage.sharedStorageAccessedPayload];
    ["Storage.sharedStorageWorkletOperationExecutionFinished"]: [Storage.sharedStorageWorkletOperationExecutionFinishedPayload];
    ["Storage.storageBucketCreatedOrUpdated"]: [Storage.storageBucketCreatedOrUpdatedPayload];
    ["Storage.storageBucketDeleted"]: [Storage.storageBucketDeletedPayload];
    ["Target.attachedToTarget"]: [Target.attachedToTargetPayload];
    ["Target.detachedFromTarget"]: [Target.detachedFromTargetPayload];
    ["Target.receivedMessageFromTarget"]: [Target.receivedMessageFromTargetPayload];
    ["Target.targetCreated"]: [Target.targetCreatedPayload];
    ["Target.targetDestroyed"]: [Target.targetDestroyedPayload];
    ["Target.targetCrashed"]: [Target.targetCrashedPayload];
    ["Target.targetInfoChanged"]: [Target.targetInfoChangedPayload];
    ["Tethering.accepted"]: [Tethering.acceptedPayload];
    ["Tracing.bufferUsage"]: [Tracing.bufferUsagePayload];
    ["Tracing.dataCollected"]: [Tracing.dataCollectedPayload];
    ["Tracing.tracingComplete"]: [Tracing.tracingCompletePayload];
    ["WebAudio.contextCreated"]: [WebAudio.contextCreatedPayload];
    ["WebAudio.contextWillBeDestroyed"]: [WebAudio.contextWillBeDestroyedPayload];
    ["WebAudio.contextChanged"]: [WebAudio.contextChangedPayload];
    ["WebAudio.audioListenerCreated"]: [WebAudio.audioListenerCreatedPayload];
    ["WebAudio.audioListenerWillBeDestroyed"]: [WebAudio.audioListenerWillBeDestroyedPayload];
    ["WebAudio.audioNodeCreated"]: [WebAudio.audioNodeCreatedPayload];
    ["WebAudio.audioNodeWillBeDestroyed"]: [WebAudio.audioNodeWillBeDestroyedPayload];
    ["WebAudio.audioParamCreated"]: [WebAudio.audioParamCreatedPayload];
    ["WebAudio.audioParamWillBeDestroyed"]: [WebAudio.audioParamWillBeDestroyedPayload];
    ["WebAudio.nodesConnected"]: [WebAudio.nodesConnectedPayload];
    ["WebAudio.nodesDisconnected"]: [WebAudio.nodesDisconnectedPayload];
    ["WebAudio.nodeParamConnected"]: [WebAudio.nodeParamConnectedPayload];
    ["WebAudio.nodeParamDisconnected"]: [WebAudio.nodeParamDisconnectedPayload];
    ["WebAuthn.credentialAdded"]: [WebAuthn.credentialAddedPayload];
    ["WebAuthn.credentialDeleted"]: [WebAuthn.credentialDeletedPayload];
    ["WebAuthn.credentialUpdated"]: [WebAuthn.credentialUpdatedPayload];
    ["WebAuthn.credentialAsserted"]: [WebAuthn.credentialAssertedPayload];
    ["WebMCP.toolsAdded"]: [WebMCP.toolsAddedPayload];
    ["WebMCP.toolsRemoved"]: [WebMCP.toolsRemovedPayload];
    ["WebMCP.toolInvoked"]: [WebMCP.toolInvokedPayload];
    ["WebMCP.toolResponded"]: [WebMCP.toolRespondedPayload];
    ["Console.messageAdded"]: [Console.messageAddedPayload];
    ["Debugger.breakpointResolved"]: [Debugger.breakpointResolvedPayload];
    ["Debugger.paused"]: [Debugger.pausedPayload];
    ["Debugger.resumed"]: [Debugger.resumedPayload];
    ["Debugger.scriptFailedToParse"]: [Debugger.scriptFailedToParsePayload];
    ["Debugger.scriptParsed"]: [Debugger.scriptParsedPayload];
    ["HeapProfiler.addHeapSnapshotChunk"]: [HeapProfiler.addHeapSnapshotChunkPayload];
    ["HeapProfiler.heapStatsUpdate"]: [HeapProfiler.heapStatsUpdatePayload];
    ["HeapProfiler.lastSeenObjectId"]: [HeapProfiler.lastSeenObjectIdPayload];
    ["HeapProfiler.reportHeapSnapshotProgress"]: [HeapProfiler.reportHeapSnapshotProgressPayload];
    ["HeapProfiler.resetProfiles"]: [HeapProfiler.resetProfilesPayload];
    ["Profiler.consoleProfileFinished"]: [Profiler.consoleProfileFinishedPayload];
    ["Profiler.consoleProfileStarted"]: [Profiler.consoleProfileStartedPayload];
    ["Profiler.preciseCoverageDeltaUpdate"]: [Profiler.preciseCoverageDeltaUpdatePayload];
    ["Runtime.bindingCalled"]: [Runtime.bindingCalledPayload];
    ["Runtime.consoleAPICalled"]: [Runtime.consoleAPICalledPayload];
    ["Runtime.exceptionRevoked"]: [Runtime.exceptionRevokedPayload];
    ["Runtime.exceptionThrown"]: [Runtime.exceptionThrownPayload];
    ["Runtime.executionContextCreated"]: [Runtime.executionContextCreatedPayload];
    ["Runtime.executionContextDestroyed"]: [Runtime.executionContextDestroyedPayload];
    ["Runtime.executionContextsCleared"]: [Runtime.executionContextsClearedPayload];
    ["Runtime.inspectRequested"]: [Runtime.inspectRequestedPayload];
  };
  export interface CommandParameters {
    "Accessibility.disable": Accessibility.disableParameters;
    "Accessibility.enable": Accessibility.enableParameters;
    "Accessibility.getPartialAXTree": Accessibility.getPartialAXTreeParameters;
    "Accessibility.getFullAXTree": Accessibility.getFullAXTreeParameters;
    "Accessibility.getRootAXNode": Accessibility.getRootAXNodeParameters;
    "Accessibility.getAXNodeAndAncestors": Accessibility.getAXNodeAndAncestorsParameters;
    "Accessibility.getChildAXNodes": Accessibility.getChildAXNodesParameters;
    "Accessibility.queryAXTree": Accessibility.queryAXTreeParameters;
    "Animation.disable": Animation.disableParameters;
    "Animation.enable": Animation.enableParameters;
    "Animation.getCurrentTime": Animation.getCurrentTimeParameters;
    "Animation.getPlaybackRate": Animation.getPlaybackRateParameters;
    "Animation.releaseAnimations": Animation.releaseAnimationsParameters;
    "Animation.resolveAnimation": Animation.resolveAnimationParameters;
    "Animation.seekAnimations": Animation.seekAnimationsParameters;
    "Animation.setPaused": Animation.setPausedParameters;
    "Animation.setPlaybackRate": Animation.setPlaybackRateParameters;
    "Animation.setTiming": Animation.setTimingParameters;
    "Audits.getEncodedResponse": Audits.getEncodedResponseParameters;
    "Audits.disable": Audits.disableParameters;
    "Audits.enable": Audits.enableParameters;
    "Audits.checkFormsIssues": Audits.checkFormsIssuesParameters;
    "Autofill.trigger": Autofill.triggerParameters;
    "Autofill.setAddresses": Autofill.setAddressesParameters;
    "Autofill.disable": Autofill.disableParameters;
    "Autofill.enable": Autofill.enableParameters;
    "BackgroundService.startObserving": BackgroundService.startObservingParameters;
    "BackgroundService.stopObserving": BackgroundService.stopObservingParameters;
    "BackgroundService.setRecording": BackgroundService.setRecordingParameters;
    "BackgroundService.clearEvents": BackgroundService.clearEventsParameters;
    "BluetoothEmulation.enable": BluetoothEmulation.enableParameters;
    "BluetoothEmulation.setSimulatedCentralState": BluetoothEmulation.setSimulatedCentralStateParameters;
    "BluetoothEmulation.disable": BluetoothEmulation.disableParameters;
    "BluetoothEmulation.simulatePreconnectedPeripheral": BluetoothEmulation.simulatePreconnectedPeripheralParameters;
    "BluetoothEmulation.simulateAdvertisement": BluetoothEmulation.simulateAdvertisementParameters;
    "BluetoothEmulation.simulateGATTOperationResponse": BluetoothEmulation.simulateGATTOperationResponseParameters;
    "BluetoothEmulation.simulateCharacteristicOperationResponse": BluetoothEmulation.simulateCharacteristicOperationResponseParameters;
    "BluetoothEmulation.simulateDescriptorOperationResponse": BluetoothEmulation.simulateDescriptorOperationResponseParameters;
    "BluetoothEmulation.addService": BluetoothEmulation.addServiceParameters;
    "BluetoothEmulation.removeService": BluetoothEmulation.removeServiceParameters;
    "BluetoothEmulation.addCharacteristic": BluetoothEmulation.addCharacteristicParameters;
    "BluetoothEmulation.removeCharacteristic": BluetoothEmulation.removeCharacteristicParameters;
    "BluetoothEmulation.addDescriptor": BluetoothEmulation.addDescriptorParameters;
    "BluetoothEmulation.removeDescriptor": BluetoothEmulation.removeDescriptorParameters;
    "BluetoothEmulation.simulateGATTDisconnection": BluetoothEmulation.simulateGATTDisconnectionParameters;
    "Browser.setPermission": Browser.setPermissionParameters;
    "Browser.grantPermissions": Browser.grantPermissionsParameters;
    "Browser.resetPermissions": Browser.resetPermissionsParameters;
    "Browser.setDownloadBehavior": Browser.setDownloadBehaviorParameters;
    "Browser.cancelDownload": Browser.cancelDownloadParameters;
    "Browser.close": Browser.closeParameters;
    "Browser.crash": Browser.crashParameters;
    "Browser.crashGpuProcess": Browser.crashGpuProcessParameters;
    "Browser.getVersion": Browser.getVersionParameters;
    "Browser.getBrowserCommandLine": Browser.getBrowserCommandLineParameters;
    "Browser.getHistograms": Browser.getHistogramsParameters;
    "Browser.getHistogram": Browser.getHistogramParameters;
    "Browser.getWindowBounds": Browser.getWindowBoundsParameters;
    "Browser.getWindowForTarget": Browser.getWindowForTargetParameters;
    "Browser.setWindowBounds": Browser.setWindowBoundsParameters;
    "Browser.setContentsSize": Browser.setContentsSizeParameters;
    "Browser.setDockTile": Browser.setDockTileParameters;
    "Browser.executeBrowserCommand": Browser.executeBrowserCommandParameters;
    "Browser.addPrivacySandboxEnrollmentOverride": Browser.addPrivacySandboxEnrollmentOverrideParameters;
    "Browser.addPrivacySandboxCoordinatorKeyConfig": Browser.addPrivacySandboxCoordinatorKeyConfigParameters;
    "CSS.addRule": CSS.addRuleParameters;
    "CSS.collectClassNames": CSS.collectClassNamesParameters;
    "CSS.createStyleSheet": CSS.createStyleSheetParameters;
    "CSS.disable": CSS.disableParameters;
    "CSS.enable": CSS.enableParameters;
    "CSS.forcePseudoState": CSS.forcePseudoStateParameters;
    "CSS.forceStartingStyle": CSS.forceStartingStyleParameters;
    "CSS.getBackgroundColors": CSS.getBackgroundColorsParameters;
    "CSS.getComputedStyleForNode": CSS.getComputedStyleForNodeParameters;
    "CSS.resolveValues": CSS.resolveValuesParameters;
    "CSS.getLonghandProperties": CSS.getLonghandPropertiesParameters;
    "CSS.getInlineStylesForNode": CSS.getInlineStylesForNodeParameters;
    "CSS.getAnimatedStylesForNode": CSS.getAnimatedStylesForNodeParameters;
    "CSS.getMatchedStylesForNode": CSS.getMatchedStylesForNodeParameters;
    "CSS.getEnvironmentVariables": CSS.getEnvironmentVariablesParameters;
    "CSS.getMediaQueries": CSS.getMediaQueriesParameters;
    "CSS.getPlatformFontsForNode": CSS.getPlatformFontsForNodeParameters;
    "CSS.getStyleSheetText": CSS.getStyleSheetTextParameters;
    "CSS.getLayersForNode": CSS.getLayersForNodeParameters;
    "CSS.getLocationForSelector": CSS.getLocationForSelectorParameters;
    "CSS.trackComputedStyleUpdatesForNode": CSS.trackComputedStyleUpdatesForNodeParameters;
    "CSS.trackComputedStyleUpdates": CSS.trackComputedStyleUpdatesParameters;
    "CSS.takeComputedStyleUpdates": CSS.takeComputedStyleUpdatesParameters;
    "CSS.setEffectivePropertyValueForNode": CSS.setEffectivePropertyValueForNodeParameters;
    "CSS.setPropertyRulePropertyName": CSS.setPropertyRulePropertyNameParameters;
    "CSS.setKeyframeKey": CSS.setKeyframeKeyParameters;
    "CSS.setMediaText": CSS.setMediaTextParameters;
    "CSS.setContainerQueryText": CSS.setContainerQueryTextParameters;
    "CSS.setSupportsText": CSS.setSupportsTextParameters;
    "CSS.setNavigationText": CSS.setNavigationTextParameters;
    "CSS.setScopeText": CSS.setScopeTextParameters;
    "CSS.setRuleSelector": CSS.setRuleSelectorParameters;
    "CSS.setStyleSheetText": CSS.setStyleSheetTextParameters;
    "CSS.setStyleTexts": CSS.setStyleTextsParameters;
    "CSS.startRuleUsageTracking": CSS.startRuleUsageTrackingParameters;
    "CSS.stopRuleUsageTracking": CSS.stopRuleUsageTrackingParameters;
    "CSS.takeCoverageDelta": CSS.takeCoverageDeltaParameters;
    "CSS.setLocalFontsEnabled": CSS.setLocalFontsEnabledParameters;
    "CacheStorage.deleteCache": CacheStorage.deleteCacheParameters;
    "CacheStorage.deleteEntry": CacheStorage.deleteEntryParameters;
    "CacheStorage.requestCacheNames": CacheStorage.requestCacheNamesParameters;
    "CacheStorage.requestCachedResponse": CacheStorage.requestCachedResponseParameters;
    "CacheStorage.requestEntries": CacheStorage.requestEntriesParameters;
    "Cast.enable": Cast.enableParameters;
    "Cast.disable": Cast.disableParameters;
    "Cast.setSinkToUse": Cast.setSinkToUseParameters;
    "Cast.startDesktopMirroring": Cast.startDesktopMirroringParameters;
    "Cast.startTabMirroring": Cast.startTabMirroringParameters;
    "Cast.stopCasting": Cast.stopCastingParameters;
    "CrashReportContext.getEntries": CrashReportContext.getEntriesParameters;
    "DOM.collectClassNamesFromSubtree": DOM.collectClassNamesFromSubtreeParameters;
    "DOM.copyTo": DOM.copyToParameters;
    "DOM.describeNode": DOM.describeNodeParameters;
    "DOM.scrollIntoViewIfNeeded": DOM.scrollIntoViewIfNeededParameters;
    "DOM.disable": DOM.disableParameters;
    "DOM.discardSearchResults": DOM.discardSearchResultsParameters;
    "DOM.enable": DOM.enableParameters;
    "DOM.focus": DOM.focusParameters;
    "DOM.getAttributes": DOM.getAttributesParameters;
    "DOM.getBoxModel": DOM.getBoxModelParameters;
    "DOM.getContentQuads": DOM.getContentQuadsParameters;
    "DOM.getDocument": DOM.getDocumentParameters;
    "DOM.getFlattenedDocument": DOM.getFlattenedDocumentParameters;
    "DOM.getNodesForSubtreeByStyle": DOM.getNodesForSubtreeByStyleParameters;
    "DOM.getNodeForLocation": DOM.getNodeForLocationParameters;
    "DOM.getOuterHTML": DOM.getOuterHTMLParameters;
    "DOM.getRelayoutBoundary": DOM.getRelayoutBoundaryParameters;
    "DOM.getSearchResults": DOM.getSearchResultsParameters;
    "DOM.hideHighlight": DOM.hideHighlightParameters;
    "DOM.highlightNode": DOM.highlightNodeParameters;
    "DOM.highlightRect": DOM.highlightRectParameters;
    "DOM.markUndoableState": DOM.markUndoableStateParameters;
    "DOM.moveTo": DOM.moveToParameters;
    "DOM.performSearch": DOM.performSearchParameters;
    "DOM.pushNodeByPathToFrontend": DOM.pushNodeByPathToFrontendParameters;
    "DOM.pushNodesByBackendIdsToFrontend": DOM.pushNodesByBackendIdsToFrontendParameters;
    "DOM.querySelector": DOM.querySelectorParameters;
    "DOM.querySelectorAll": DOM.querySelectorAllParameters;
    "DOM.getTopLayerElements": DOM.getTopLayerElementsParameters;
    "DOM.getElementByRelation": DOM.getElementByRelationParameters;
    "DOM.redo": DOM.redoParameters;
    "DOM.removeAttribute": DOM.removeAttributeParameters;
    "DOM.removeNode": DOM.removeNodeParameters;
    "DOM.requestChildNodes": DOM.requestChildNodesParameters;
    "DOM.requestNode": DOM.requestNodeParameters;
    "DOM.resolveNode": DOM.resolveNodeParameters;
    "DOM.setAttributeValue": DOM.setAttributeValueParameters;
    "DOM.setAttributesAsText": DOM.setAttributesAsTextParameters;
    "DOM.setFileInputFiles": DOM.setFileInputFilesParameters;
    "DOM.setNodeStackTracesEnabled": DOM.setNodeStackTracesEnabledParameters;
    "DOM.getNodeStackTraces": DOM.getNodeStackTracesParameters;
    "DOM.getFileInfo": DOM.getFileInfoParameters;
    "DOM.getDetachedDomNodes": DOM.getDetachedDomNodesParameters;
    "DOM.setInspectedNode": DOM.setInspectedNodeParameters;
    "DOM.setNodeName": DOM.setNodeNameParameters;
    "DOM.setNodeValue": DOM.setNodeValueParameters;
    "DOM.setOuterHTML": DOM.setOuterHTMLParameters;
    "DOM.undo": DOM.undoParameters;
    "DOM.getFrameOwner": DOM.getFrameOwnerParameters;
    "DOM.getContainerForNode": DOM.getContainerForNodeParameters;
    "DOM.getQueryingDescendantsForContainer": DOM.getQueryingDescendantsForContainerParameters;
    "DOM.getAnchorElement": DOM.getAnchorElementParameters;
    "DOM.forceShowPopover": DOM.forceShowPopoverParameters;
    "DOMDebugger.getEventListeners": DOMDebugger.getEventListenersParameters;
    "DOMDebugger.removeDOMBreakpoint": DOMDebugger.removeDOMBreakpointParameters;
    "DOMDebugger.removeEventListenerBreakpoint": DOMDebugger.removeEventListenerBreakpointParameters;
    "DOMDebugger.removeInstrumentationBreakpoint": DOMDebugger.removeInstrumentationBreakpointParameters;
    "DOMDebugger.removeXHRBreakpoint": DOMDebugger.removeXHRBreakpointParameters;
    "DOMDebugger.setBreakOnCSPViolation": DOMDebugger.setBreakOnCSPViolationParameters;
    "DOMDebugger.setDOMBreakpoint": DOMDebugger.setDOMBreakpointParameters;
    "DOMDebugger.setEventListenerBreakpoint": DOMDebugger.setEventListenerBreakpointParameters;
    "DOMDebugger.setInstrumentationBreakpoint": DOMDebugger.setInstrumentationBreakpointParameters;
    "DOMDebugger.setXHRBreakpoint": DOMDebugger.setXHRBreakpointParameters;
    "DOMSnapshot.disable": DOMSnapshot.disableParameters;
    "DOMSnapshot.enable": DOMSnapshot.enableParameters;
    "DOMSnapshot.getSnapshot": DOMSnapshot.getSnapshotParameters;
    "DOMSnapshot.captureSnapshot": DOMSnapshot.captureSnapshotParameters;
    "DOMStorage.clear": DOMStorage.clearParameters;
    "DOMStorage.disable": DOMStorage.disableParameters;
    "DOMStorage.enable": DOMStorage.enableParameters;
    "DOMStorage.getDOMStorageItems": DOMStorage.getDOMStorageItemsParameters;
    "DOMStorage.removeDOMStorageItem": DOMStorage.removeDOMStorageItemParameters;
    "DOMStorage.setDOMStorageItem": DOMStorage.setDOMStorageItemParameters;
    "DeviceAccess.enable": DeviceAccess.enableParameters;
    "DeviceAccess.disable": DeviceAccess.disableParameters;
    "DeviceAccess.selectPrompt": DeviceAccess.selectPromptParameters;
    "DeviceAccess.cancelPrompt": DeviceAccess.cancelPromptParameters;
    "DeviceOrientation.clearDeviceOrientationOverride": DeviceOrientation.clearDeviceOrientationOverrideParameters;
    "DeviceOrientation.setDeviceOrientationOverride": DeviceOrientation.setDeviceOrientationOverrideParameters;
    "Emulation.canEmulate": Emulation.canEmulateParameters;
    "Emulation.clearDeviceMetricsOverride": Emulation.clearDeviceMetricsOverrideParameters;
    "Emulation.clearGeolocationOverride": Emulation.clearGeolocationOverrideParameters;
    "Emulation.resetPageScaleFactor": Emulation.resetPageScaleFactorParameters;
    "Emulation.setFocusEmulationEnabled": Emulation.setFocusEmulationEnabledParameters;
    "Emulation.setAutoDarkModeOverride": Emulation.setAutoDarkModeOverrideParameters;
    "Emulation.setCPUThrottlingRate": Emulation.setCPUThrottlingRateParameters;
    "Emulation.setDefaultBackgroundColorOverride": Emulation.setDefaultBackgroundColorOverrideParameters;
    "Emulation.setSafeAreaInsetsOverride": Emulation.setSafeAreaInsetsOverrideParameters;
    "Emulation.setDeviceMetricsOverride": Emulation.setDeviceMetricsOverrideParameters;
    "Emulation.setDevicePostureOverride": Emulation.setDevicePostureOverrideParameters;
    "Emulation.clearDevicePostureOverride": Emulation.clearDevicePostureOverrideParameters;
    "Emulation.setDisplayFeaturesOverride": Emulation.setDisplayFeaturesOverrideParameters;
    "Emulation.clearDisplayFeaturesOverride": Emulation.clearDisplayFeaturesOverrideParameters;
    "Emulation.setScrollbarsHidden": Emulation.setScrollbarsHiddenParameters;
    "Emulation.setDocumentCookieDisabled": Emulation.setDocumentCookieDisabledParameters;
    "Emulation.setEmitTouchEventsForMouse": Emulation.setEmitTouchEventsForMouseParameters;
    "Emulation.setEmulatedMedia": Emulation.setEmulatedMediaParameters;
    "Emulation.setEmulatedVisionDeficiency": Emulation.setEmulatedVisionDeficiencyParameters;
    "Emulation.setEmulatedOSTextScale": Emulation.setEmulatedOSTextScaleParameters;
    "Emulation.setGeolocationOverride": Emulation.setGeolocationOverrideParameters;
    "Emulation.getOverriddenSensorInformation": Emulation.getOverriddenSensorInformationParameters;
    "Emulation.setSensorOverrideEnabled": Emulation.setSensorOverrideEnabledParameters;
    "Emulation.setSensorOverrideReadings": Emulation.setSensorOverrideReadingsParameters;
    "Emulation.setPressureSourceOverrideEnabled": Emulation.setPressureSourceOverrideEnabledParameters;
    "Emulation.setPressureStateOverride": Emulation.setPressureStateOverrideParameters;
    "Emulation.setPressureDataOverride": Emulation.setPressureDataOverrideParameters;
    "Emulation.setIdleOverride": Emulation.setIdleOverrideParameters;
    "Emulation.clearIdleOverride": Emulation.clearIdleOverrideParameters;
    "Emulation.setNavigatorOverrides": Emulation.setNavigatorOverridesParameters;
    "Emulation.setPageScaleFactor": Emulation.setPageScaleFactorParameters;
    "Emulation.setScriptExecutionDisabled": Emulation.setScriptExecutionDisabledParameters;
    "Emulation.setTouchEmulationEnabled": Emulation.setTouchEmulationEnabledParameters;
    "Emulation.setVirtualTimePolicy": Emulation.setVirtualTimePolicyParameters;
    "Emulation.setLocaleOverride": Emulation.setLocaleOverrideParameters;
    "Emulation.setTimezoneOverride": Emulation.setTimezoneOverrideParameters;
    "Emulation.setVisibleSize": Emulation.setVisibleSizeParameters;
    "Emulation.setDisabledImageTypes": Emulation.setDisabledImageTypesParameters;
    "Emulation.setDataSaverOverride": Emulation.setDataSaverOverrideParameters;
    "Emulation.setHardwareConcurrencyOverride": Emulation.setHardwareConcurrencyOverrideParameters;
    "Emulation.setUserAgentOverride": Emulation.setUserAgentOverrideParameters;
    "Emulation.setAutomationOverride": Emulation.setAutomationOverrideParameters;
    "Emulation.setSmallViewportHeightDifferenceOverride": Emulation.setSmallViewportHeightDifferenceOverrideParameters;
    "Emulation.getScreenInfos": Emulation.getScreenInfosParameters;
    "Emulation.addScreen": Emulation.addScreenParameters;
    "Emulation.updateScreen": Emulation.updateScreenParameters;
    "Emulation.removeScreen": Emulation.removeScreenParameters;
    "Emulation.setPrimaryScreen": Emulation.setPrimaryScreenParameters;
    "EventBreakpoints.setInstrumentationBreakpoint": EventBreakpoints.setInstrumentationBreakpointParameters;
    "EventBreakpoints.removeInstrumentationBreakpoint": EventBreakpoints.removeInstrumentationBreakpointParameters;
    "EventBreakpoints.disable": EventBreakpoints.disableParameters;
    "Extensions.triggerAction": Extensions.triggerActionParameters;
    "Extensions.loadUnpacked": Extensions.loadUnpackedParameters;
    "Extensions.getExtensions": Extensions.getExtensionsParameters;
    "Extensions.uninstall": Extensions.uninstallParameters;
    "Extensions.getStorageItems": Extensions.getStorageItemsParameters;
    "Extensions.removeStorageItems": Extensions.removeStorageItemsParameters;
    "Extensions.clearStorageItems": Extensions.clearStorageItemsParameters;
    "Extensions.setStorageItems": Extensions.setStorageItemsParameters;
    "FedCm.enable": FedCm.enableParameters;
    "FedCm.disable": FedCm.disableParameters;
    "FedCm.selectAccount": FedCm.selectAccountParameters;
    "FedCm.clickDialogButton": FedCm.clickDialogButtonParameters;
    "FedCm.openUrl": FedCm.openUrlParameters;
    "FedCm.dismissDialog": FedCm.dismissDialogParameters;
    "FedCm.resetCooldown": FedCm.resetCooldownParameters;
    "Fetch.disable": Fetch.disableParameters;
    "Fetch.enable": Fetch.enableParameters;
    "Fetch.failRequest": Fetch.failRequestParameters;
    "Fetch.fulfillRequest": Fetch.fulfillRequestParameters;
    "Fetch.continueRequest": Fetch.continueRequestParameters;
    "Fetch.continueWithAuth": Fetch.continueWithAuthParameters;
    "Fetch.continueResponse": Fetch.continueResponseParameters;
    "Fetch.getResponseBody": Fetch.getResponseBodyParameters;
    "Fetch.takeResponseBodyAsStream": Fetch.takeResponseBodyAsStreamParameters;
    "FileSystem.getDirectory": FileSystem.getDirectoryParameters;
    "HeadlessExperimental.beginFrame": HeadlessExperimental.beginFrameParameters;
    "HeadlessExperimental.disable": HeadlessExperimental.disableParameters;
    "HeadlessExperimental.enable": HeadlessExperimental.enableParameters;
    "IO.close": IO.closeParameters;
    "IO.read": IO.readParameters;
    "IO.resolveBlob": IO.resolveBlobParameters;
    "IndexedDB.clearObjectStore": IndexedDB.clearObjectStoreParameters;
    "IndexedDB.deleteDatabase": IndexedDB.deleteDatabaseParameters;
    "IndexedDB.deleteObjectStoreEntries": IndexedDB.deleteObjectStoreEntriesParameters;
    "IndexedDB.disable": IndexedDB.disableParameters;
    "IndexedDB.enable": IndexedDB.enableParameters;
    "IndexedDB.requestData": IndexedDB.requestDataParameters;
    "IndexedDB.getMetadata": IndexedDB.getMetadataParameters;
    "IndexedDB.requestDatabase": IndexedDB.requestDatabaseParameters;
    "IndexedDB.requestDatabaseNames": IndexedDB.requestDatabaseNamesParameters;
    "Input.dispatchDragEvent": Input.dispatchDragEventParameters;
    "Input.dispatchKeyEvent": Input.dispatchKeyEventParameters;
    "Input.insertText": Input.insertTextParameters;
    "Input.imeSetComposition": Input.imeSetCompositionParameters;
    "Input.dispatchMouseEvent": Input.dispatchMouseEventParameters;
    "Input.dispatchTouchEvent": Input.dispatchTouchEventParameters;
    "Input.cancelDragging": Input.cancelDraggingParameters;
    "Input.emulateTouchFromMouseEvent": Input.emulateTouchFromMouseEventParameters;
    "Input.setIgnoreInputEvents": Input.setIgnoreInputEventsParameters;
    "Input.setInterceptDrags": Input.setInterceptDragsParameters;
    "Input.synthesizePinchGesture": Input.synthesizePinchGestureParameters;
    "Input.synthesizeScrollGesture": Input.synthesizeScrollGestureParameters;
    "Input.synthesizeTapGesture": Input.synthesizeTapGestureParameters;
    "Inspector.disable": Inspector.disableParameters;
    "Inspector.enable": Inspector.enableParameters;
    "LayerTree.compositingReasons": LayerTree.compositingReasonsParameters;
    "LayerTree.disable": LayerTree.disableParameters;
    "LayerTree.enable": LayerTree.enableParameters;
    "LayerTree.loadSnapshot": LayerTree.loadSnapshotParameters;
    "LayerTree.makeSnapshot": LayerTree.makeSnapshotParameters;
    "LayerTree.profileSnapshot": LayerTree.profileSnapshotParameters;
    "LayerTree.releaseSnapshot": LayerTree.releaseSnapshotParameters;
    "LayerTree.replaySnapshot": LayerTree.replaySnapshotParameters;
    "LayerTree.snapshotCommandLog": LayerTree.snapshotCommandLogParameters;
    "Log.clear": Log.clearParameters;
    "Log.disable": Log.disableParameters;
    "Log.enable": Log.enableParameters;
    "Log.startViolationsReport": Log.startViolationsReportParameters;
    "Log.stopViolationsReport": Log.stopViolationsReportParameters;
    "Media.enable": Media.enableParameters;
    "Media.disable": Media.disableParameters;
    "Memory.getDOMCounters": Memory.getDOMCountersParameters;
    "Memory.getDOMCountersForLeakDetection": Memory.getDOMCountersForLeakDetectionParameters;
    "Memory.prepareForLeakDetection": Memory.prepareForLeakDetectionParameters;
    "Memory.forciblyPurgeJavaScriptMemory": Memory.forciblyPurgeJavaScriptMemoryParameters;
    "Memory.setPressureNotificationsSuppressed": Memory.setPressureNotificationsSuppressedParameters;
    "Memory.simulatePressureNotification": Memory.simulatePressureNotificationParameters;
    "Memory.startSampling": Memory.startSamplingParameters;
    "Memory.stopSampling": Memory.stopSamplingParameters;
    "Memory.getAllTimeSamplingProfile": Memory.getAllTimeSamplingProfileParameters;
    "Memory.getBrowserSamplingProfile": Memory.getBrowserSamplingProfileParameters;
    "Memory.getSamplingProfile": Memory.getSamplingProfileParameters;
    "Network.setAcceptedEncodings": Network.setAcceptedEncodingsParameters;
    "Network.clearAcceptedEncodingsOverride": Network.clearAcceptedEncodingsOverrideParameters;
    "Network.canClearBrowserCache": Network.canClearBrowserCacheParameters;
    "Network.canClearBrowserCookies": Network.canClearBrowserCookiesParameters;
    "Network.canEmulateNetworkConditions": Network.canEmulateNetworkConditionsParameters;
    "Network.clearBrowserCache": Network.clearBrowserCacheParameters;
    "Network.clearBrowserCookies": Network.clearBrowserCookiesParameters;
    "Network.continueInterceptedRequest": Network.continueInterceptedRequestParameters;
    "Network.deleteCookies": Network.deleteCookiesParameters;
    "Network.disable": Network.disableParameters;
    "Network.emulateNetworkConditions": Network.emulateNetworkConditionsParameters;
    "Network.emulateNetworkConditionsByRule": Network.emulateNetworkConditionsByRuleParameters;
    "Network.overrideNetworkState": Network.overrideNetworkStateParameters;
    "Network.enable": Network.enableParameters;
    "Network.configureDurableMessages": Network.configureDurableMessagesParameters;
    "Network.getAllCookies": Network.getAllCookiesParameters;
    "Network.getCertificate": Network.getCertificateParameters;
    "Network.getCookies": Network.getCookiesParameters;
    "Network.getResponseBody": Network.getResponseBodyParameters;
    "Network.getRequestPostData": Network.getRequestPostDataParameters;
    "Network.getResponseBodyForInterception": Network.getResponseBodyForInterceptionParameters;
    "Network.takeResponseBodyForInterceptionAsStream": Network.takeResponseBodyForInterceptionAsStreamParameters;
    "Network.replayXHR": Network.replayXHRParameters;
    "Network.searchInResponseBody": Network.searchInResponseBodyParameters;
    "Network.setBlockedURLs": Network.setBlockedURLsParameters;
    "Network.setBypassServiceWorker": Network.setBypassServiceWorkerParameters;
    "Network.setCacheDisabled": Network.setCacheDisabledParameters;
    "Network.setCookie": Network.setCookieParameters;
    "Network.setCookies": Network.setCookiesParameters;
    "Network.setExtraHTTPHeaders": Network.setExtraHTTPHeadersParameters;
    "Network.setAttachDebugStack": Network.setAttachDebugStackParameters;
    "Network.setRequestInterception": Network.setRequestInterceptionParameters;
    "Network.setUserAgentOverride": Network.setUserAgentOverrideParameters;
    "Network.streamResourceContent": Network.streamResourceContentParameters;
    "Network.getSecurityIsolationStatus": Network.getSecurityIsolationStatusParameters;
    "Network.enableReportingApi": Network.enableReportingApiParameters;
    "Network.enableDeviceBoundSessions": Network.enableDeviceBoundSessionsParameters;
    "Network.deleteDeviceBoundSession": Network.deleteDeviceBoundSessionParameters;
    "Network.fetchSchemefulSite": Network.fetchSchemefulSiteParameters;
    "Network.loadNetworkResource": Network.loadNetworkResourceParameters;
    "Network.setCookieControls": Network.setCookieControlsParameters;
    "Overlay.disable": Overlay.disableParameters;
    "Overlay.enable": Overlay.enableParameters;
    "Overlay.getHighlightObjectForTest": Overlay.getHighlightObjectForTestParameters;
    "Overlay.getGridHighlightObjectsForTest": Overlay.getGridHighlightObjectsForTestParameters;
    "Overlay.getSourceOrderHighlightObjectForTest": Overlay.getSourceOrderHighlightObjectForTestParameters;
    "Overlay.hideHighlight": Overlay.hideHighlightParameters;
    "Overlay.highlightFrame": Overlay.highlightFrameParameters;
    "Overlay.highlightNode": Overlay.highlightNodeParameters;
    "Overlay.highlightQuad": Overlay.highlightQuadParameters;
    "Overlay.highlightRect": Overlay.highlightRectParameters;
    "Overlay.highlightSourceOrder": Overlay.highlightSourceOrderParameters;
    "Overlay.setInspectMode": Overlay.setInspectModeParameters;
    "Overlay.setShowAdHighlights": Overlay.setShowAdHighlightsParameters;
    "Overlay.setPausedInDebuggerMessage": Overlay.setPausedInDebuggerMessageParameters;
    "Overlay.setShowDebugBorders": Overlay.setShowDebugBordersParameters;
    "Overlay.setShowFPSCounter": Overlay.setShowFPSCounterParameters;
    "Overlay.setShowGridOverlays": Overlay.setShowGridOverlaysParameters;
    "Overlay.setShowFlexOverlays": Overlay.setShowFlexOverlaysParameters;
    "Overlay.setShowScrollSnapOverlays": Overlay.setShowScrollSnapOverlaysParameters;
    "Overlay.setShowContainerQueryOverlays": Overlay.setShowContainerQueryOverlaysParameters;
    "Overlay.setShowInspectedElementAnchor": Overlay.setShowInspectedElementAnchorParameters;
    "Overlay.setShowPaintRects": Overlay.setShowPaintRectsParameters;
    "Overlay.setShowLayoutShiftRegions": Overlay.setShowLayoutShiftRegionsParameters;
    "Overlay.setShowScrollBottleneckRects": Overlay.setShowScrollBottleneckRectsParameters;
    "Overlay.setShowHitTestBorders": Overlay.setShowHitTestBordersParameters;
    "Overlay.setShowWebVitals": Overlay.setShowWebVitalsParameters;
    "Overlay.setShowViewportSizeOnResize": Overlay.setShowViewportSizeOnResizeParameters;
    "Overlay.setShowHinge": Overlay.setShowHingeParameters;
    "Overlay.setShowIsolatedElements": Overlay.setShowIsolatedElementsParameters;
    "Overlay.setShowWindowControlsOverlay": Overlay.setShowWindowControlsOverlayParameters;
    "PWA.getOsAppState": PWA.getOsAppStateParameters;
    "PWA.install": PWA.installParameters;
    "PWA.uninstall": PWA.uninstallParameters;
    "PWA.launch": PWA.launchParameters;
    "PWA.launchFilesInApp": PWA.launchFilesInAppParameters;
    "PWA.openCurrentPageInApp": PWA.openCurrentPageInAppParameters;
    "PWA.changeAppUserSettings": PWA.changeAppUserSettingsParameters;
    "Page.addScriptToEvaluateOnLoad": Page.addScriptToEvaluateOnLoadParameters;
    "Page.addScriptToEvaluateOnNewDocument": Page.addScriptToEvaluateOnNewDocumentParameters;
    "Page.bringToFront": Page.bringToFrontParameters;
    "Page.captureScreenshot": Page.captureScreenshotParameters;
    "Page.captureSnapshot": Page.captureSnapshotParameters;
    "Page.clearDeviceMetricsOverride": Page.clearDeviceMetricsOverrideParameters;
    "Page.clearDeviceOrientationOverride": Page.clearDeviceOrientationOverrideParameters;
    "Page.clearGeolocationOverride": Page.clearGeolocationOverrideParameters;
    "Page.createIsolatedWorld": Page.createIsolatedWorldParameters;
    "Page.deleteCookie": Page.deleteCookieParameters;
    "Page.disable": Page.disableParameters;
    "Page.enable": Page.enableParameters;
    "Page.getAppManifest": Page.getAppManifestParameters;
    "Page.getInstallabilityErrors": Page.getInstallabilityErrorsParameters;
    "Page.getManifestIcons": Page.getManifestIconsParameters;
    "Page.getAppId": Page.getAppIdParameters;
    "Page.getAdScriptAncestry": Page.getAdScriptAncestryParameters;
    "Page.getFrameTree": Page.getFrameTreeParameters;
    "Page.getLayoutMetrics": Page.getLayoutMetricsParameters;
    "Page.getNavigationHistory": Page.getNavigationHistoryParameters;
    "Page.resetNavigationHistory": Page.resetNavigationHistoryParameters;
    "Page.getResourceContent": Page.getResourceContentParameters;
    "Page.getResourceTree": Page.getResourceTreeParameters;
    "Page.handleJavaScriptDialog": Page.handleJavaScriptDialogParameters;
    "Page.navigate": Page.navigateParameters;
    "Page.navigateToHistoryEntry": Page.navigateToHistoryEntryParameters;
    "Page.printToPDF": Page.printToPDFParameters;
    "Page.reload": Page.reloadParameters;
    "Page.removeScriptToEvaluateOnLoad": Page.removeScriptToEvaluateOnLoadParameters;
    "Page.removeScriptToEvaluateOnNewDocument": Page.removeScriptToEvaluateOnNewDocumentParameters;
    "Page.screencastFrameAck": Page.screencastFrameAckParameters;
    "Page.searchInResource": Page.searchInResourceParameters;
    "Page.setAdBlockingEnabled": Page.setAdBlockingEnabledParameters;
    "Page.setBypassCSP": Page.setBypassCSPParameters;
    "Page.getPermissionsPolicyState": Page.getPermissionsPolicyStateParameters;
    "Page.getOriginTrials": Page.getOriginTrialsParameters;
    "Page.setDeviceMetricsOverride": Page.setDeviceMetricsOverrideParameters;
    "Page.setDeviceOrientationOverride": Page.setDeviceOrientationOverrideParameters;
    "Page.setFontFamilies": Page.setFontFamiliesParameters;
    "Page.setFontSizes": Page.setFontSizesParameters;
    "Page.setDocumentContent": Page.setDocumentContentParameters;
    "Page.setDownloadBehavior": Page.setDownloadBehaviorParameters;
    "Page.setGeolocationOverride": Page.setGeolocationOverrideParameters;
    "Page.setLifecycleEventsEnabled": Page.setLifecycleEventsEnabledParameters;
    "Page.setTouchEmulationEnabled": Page.setTouchEmulationEnabledParameters;
    "Page.startScreencast": Page.startScreencastParameters;
    "Page.stopLoading": Page.stopLoadingParameters;
    "Page.crash": Page.crashParameters;
    "Page.close": Page.closeParameters;
    "Page.setWebLifecycleState": Page.setWebLifecycleStateParameters;
    "Page.stopScreencast": Page.stopScreencastParameters;
    "Page.produceCompilationCache": Page.produceCompilationCacheParameters;
    "Page.addCompilationCache": Page.addCompilationCacheParameters;
    "Page.clearCompilationCache": Page.clearCompilationCacheParameters;
    "Page.setSPCTransactionMode": Page.setSPCTransactionModeParameters;
    "Page.setRPHRegistrationMode": Page.setRPHRegistrationModeParameters;
    "Page.generateTestReport": Page.generateTestReportParameters;
    "Page.waitForDebugger": Page.waitForDebuggerParameters;
    "Page.setInterceptFileChooserDialog": Page.setInterceptFileChooserDialogParameters;
    "Page.setPrerenderingAllowed": Page.setPrerenderingAllowedParameters;
    "Page.getAnnotatedPageContent": Page.getAnnotatedPageContentParameters;
    "Performance.disable": Performance.disableParameters;
    "Performance.enable": Performance.enableParameters;
    "Performance.setTimeDomain": Performance.setTimeDomainParameters;
    "Performance.getMetrics": Performance.getMetricsParameters;
    "PerformanceTimeline.enable": PerformanceTimeline.enableParameters;
    "Preload.enable": Preload.enableParameters;
    "Preload.disable": Preload.disableParameters;
    "Security.disable": Security.disableParameters;
    "Security.enable": Security.enableParameters;
    "Security.setIgnoreCertificateErrors": Security.setIgnoreCertificateErrorsParameters;
    "Security.handleCertificateError": Security.handleCertificateErrorParameters;
    "Security.setOverrideCertificateErrors": Security.setOverrideCertificateErrorsParameters;
    "ServiceWorker.deliverPushMessage": ServiceWorker.deliverPushMessageParameters;
    "ServiceWorker.disable": ServiceWorker.disableParameters;
    "ServiceWorker.dispatchSyncEvent": ServiceWorker.dispatchSyncEventParameters;
    "ServiceWorker.dispatchPeriodicSyncEvent": ServiceWorker.dispatchPeriodicSyncEventParameters;
    "ServiceWorker.enable": ServiceWorker.enableParameters;
    "ServiceWorker.setForceUpdateOnPageLoad": ServiceWorker.setForceUpdateOnPageLoadParameters;
    "ServiceWorker.skipWaiting": ServiceWorker.skipWaitingParameters;
    "ServiceWorker.startWorker": ServiceWorker.startWorkerParameters;
    "ServiceWorker.stopAllWorkers": ServiceWorker.stopAllWorkersParameters;
    "ServiceWorker.stopWorker": ServiceWorker.stopWorkerParameters;
    "ServiceWorker.unregister": ServiceWorker.unregisterParameters;
    "ServiceWorker.updateRegistration": ServiceWorker.updateRegistrationParameters;
    "SmartCardEmulation.enable": SmartCardEmulation.enableParameters;
    "SmartCardEmulation.disable": SmartCardEmulation.disableParameters;
    "SmartCardEmulation.reportEstablishContextResult": SmartCardEmulation.reportEstablishContextResultParameters;
    "SmartCardEmulation.reportReleaseContextResult": SmartCardEmulation.reportReleaseContextResultParameters;
    "SmartCardEmulation.reportListReadersResult": SmartCardEmulation.reportListReadersResultParameters;
    "SmartCardEmulation.reportGetStatusChangeResult": SmartCardEmulation.reportGetStatusChangeResultParameters;
    "SmartCardEmulation.reportBeginTransactionResult": SmartCardEmulation.reportBeginTransactionResultParameters;
    "SmartCardEmulation.reportPlainResult": SmartCardEmulation.reportPlainResultParameters;
    "SmartCardEmulation.reportConnectResult": SmartCardEmulation.reportConnectResultParameters;
    "SmartCardEmulation.reportDataResult": SmartCardEmulation.reportDataResultParameters;
    "SmartCardEmulation.reportStatusResult": SmartCardEmulation.reportStatusResultParameters;
    "SmartCardEmulation.reportError": SmartCardEmulation.reportErrorParameters;
    "Storage.getStorageKeyForFrame": Storage.getStorageKeyForFrameParameters;
    "Storage.getStorageKey": Storage.getStorageKeyParameters;
    "Storage.clearDataForOrigin": Storage.clearDataForOriginParameters;
    "Storage.clearDataForStorageKey": Storage.clearDataForStorageKeyParameters;
    "Storage.getCookies": Storage.getCookiesParameters;
    "Storage.setCookies": Storage.setCookiesParameters;
    "Storage.clearCookies": Storage.clearCookiesParameters;
    "Storage.getUsageAndQuota": Storage.getUsageAndQuotaParameters;
    "Storage.overrideQuotaForOrigin": Storage.overrideQuotaForOriginParameters;
    "Storage.trackCacheStorageForOrigin": Storage.trackCacheStorageForOriginParameters;
    "Storage.trackCacheStorageForStorageKey": Storage.trackCacheStorageForStorageKeyParameters;
    "Storage.trackIndexedDBForOrigin": Storage.trackIndexedDBForOriginParameters;
    "Storage.trackIndexedDBForStorageKey": Storage.trackIndexedDBForStorageKeyParameters;
    "Storage.untrackCacheStorageForOrigin": Storage.untrackCacheStorageForOriginParameters;
    "Storage.untrackCacheStorageForStorageKey": Storage.untrackCacheStorageForStorageKeyParameters;
    "Storage.untrackIndexedDBForOrigin": Storage.untrackIndexedDBForOriginParameters;
    "Storage.untrackIndexedDBForStorageKey": Storage.untrackIndexedDBForStorageKeyParameters;
    "Storage.getTrustTokens": Storage.getTrustTokensParameters;
    "Storage.clearTrustTokens": Storage.clearTrustTokensParameters;
    "Storage.getInterestGroupDetails": Storage.getInterestGroupDetailsParameters;
    "Storage.setInterestGroupTracking": Storage.setInterestGroupTrackingParameters;
    "Storage.setInterestGroupAuctionTracking": Storage.setInterestGroupAuctionTrackingParameters;
    "Storage.getSharedStorageMetadata": Storage.getSharedStorageMetadataParameters;
    "Storage.getSharedStorageEntries": Storage.getSharedStorageEntriesParameters;
    "Storage.setSharedStorageEntry": Storage.setSharedStorageEntryParameters;
    "Storage.deleteSharedStorageEntry": Storage.deleteSharedStorageEntryParameters;
    "Storage.clearSharedStorageEntries": Storage.clearSharedStorageEntriesParameters;
    "Storage.resetSharedStorageBudget": Storage.resetSharedStorageBudgetParameters;
    "Storage.setSharedStorageTracking": Storage.setSharedStorageTrackingParameters;
    "Storage.setStorageBucketTracking": Storage.setStorageBucketTrackingParameters;
    "Storage.deleteStorageBucket": Storage.deleteStorageBucketParameters;
    "Storage.runBounceTrackingMitigations": Storage.runBounceTrackingMitigationsParameters;
    "Storage.getRelatedWebsiteSets": Storage.getRelatedWebsiteSetsParameters;
    "Storage.setProtectedAudienceKAnonymity": Storage.setProtectedAudienceKAnonymityParameters;
    "SystemInfo.getInfo": SystemInfo.getInfoParameters;
    "SystemInfo.getFeatureState": SystemInfo.getFeatureStateParameters;
    "SystemInfo.getProcessInfo": SystemInfo.getProcessInfoParameters;
    "Target.activateTarget": Target.activateTargetParameters;
    "Target.attachToTarget": Target.attachToTargetParameters;
    "Target.attachToBrowserTarget": Target.attachToBrowserTargetParameters;
    "Target.closeTarget": Target.closeTargetParameters;
    "Target.exposeDevToolsProtocol": Target.exposeDevToolsProtocolParameters;
    "Target.createBrowserContext": Target.createBrowserContextParameters;
    "Target.getBrowserContexts": Target.getBrowserContextsParameters;
    "Target.createTarget": Target.createTargetParameters;
    "Target.detachFromTarget": Target.detachFromTargetParameters;
    "Target.disposeBrowserContext": Target.disposeBrowserContextParameters;
    "Target.getTargetInfo": Target.getTargetInfoParameters;
    "Target.getTargets": Target.getTargetsParameters;
    "Target.sendMessageToTarget": Target.sendMessageToTargetParameters;
    "Target.setAutoAttach": Target.setAutoAttachParameters;
    "Target.autoAttachRelated": Target.autoAttachRelatedParameters;
    "Target.setDiscoverTargets": Target.setDiscoverTargetsParameters;
    "Target.setRemoteLocations": Target.setRemoteLocationsParameters;
    "Target.getDevToolsTarget": Target.getDevToolsTargetParameters;
    "Target.openDevTools": Target.openDevToolsParameters;
    "Tethering.bind": Tethering.bindParameters;
    "Tethering.unbind": Tethering.unbindParameters;
    "Tracing.end": Tracing.endParameters;
    "Tracing.getCategories": Tracing.getCategoriesParameters;
    "Tracing.getTrackEventDescriptor": Tracing.getTrackEventDescriptorParameters;
    "Tracing.recordClockSyncMarker": Tracing.recordClockSyncMarkerParameters;
    "Tracing.requestMemoryDump": Tracing.requestMemoryDumpParameters;
    "Tracing.start": Tracing.startParameters;
    "WebAudio.enable": WebAudio.enableParameters;
    "WebAudio.disable": WebAudio.disableParameters;
    "WebAudio.getRealtimeData": WebAudio.getRealtimeDataParameters;
    "WebAuthn.enable": WebAuthn.enableParameters;
    "WebAuthn.disable": WebAuthn.disableParameters;
    "WebAuthn.addVirtualAuthenticator": WebAuthn.addVirtualAuthenticatorParameters;
    "WebAuthn.setResponseOverrideBits": WebAuthn.setResponseOverrideBitsParameters;
    "WebAuthn.removeVirtualAuthenticator": WebAuthn.removeVirtualAuthenticatorParameters;
    "WebAuthn.addCredential": WebAuthn.addCredentialParameters;
    "WebAuthn.getCredential": WebAuthn.getCredentialParameters;
    "WebAuthn.getCredentials": WebAuthn.getCredentialsParameters;
    "WebAuthn.removeCredential": WebAuthn.removeCredentialParameters;
    "WebAuthn.clearCredentials": WebAuthn.clearCredentialsParameters;
    "WebAuthn.setUserVerified": WebAuthn.setUserVerifiedParameters;
    "WebAuthn.setAutomaticPresenceSimulation": WebAuthn.setAutomaticPresenceSimulationParameters;
    "WebAuthn.setCredentialProperties": WebAuthn.setCredentialPropertiesParameters;
    "WebMCP.enable": WebMCP.enableParameters;
    "WebMCP.disable": WebMCP.disableParameters;
    "WebMCP.invokeTool": WebMCP.invokeToolParameters;
    "WebMCP.cancelInvocation": WebMCP.cancelInvocationParameters;
    "Console.clearMessages": Console.clearMessagesParameters;
    "Console.disable": Console.disableParameters;
    "Console.enable": Console.enableParameters;
    "Debugger.continueToLocation": Debugger.continueToLocationParameters;
    "Debugger.disable": Debugger.disableParameters;
    "Debugger.enable": Debugger.enableParameters;
    "Debugger.evaluateOnCallFrame": Debugger.evaluateOnCallFrameParameters;
    "Debugger.getPossibleBreakpoints": Debugger.getPossibleBreakpointsParameters;
    "Debugger.getScriptSource": Debugger.getScriptSourceParameters;
    "Debugger.disassembleWasmModule": Debugger.disassembleWasmModuleParameters;
    "Debugger.nextWasmDisassemblyChunk": Debugger.nextWasmDisassemblyChunkParameters;
    "Debugger.getWasmBytecode": Debugger.getWasmBytecodeParameters;
    "Debugger.getStackTrace": Debugger.getStackTraceParameters;
    "Debugger.pause": Debugger.pauseParameters;
    "Debugger.pauseOnAsyncCall": Debugger.pauseOnAsyncCallParameters;
    "Debugger.removeBreakpoint": Debugger.removeBreakpointParameters;
    "Debugger.restartFrame": Debugger.restartFrameParameters;
    "Debugger.resume": Debugger.resumeParameters;
    "Debugger.searchInContent": Debugger.searchInContentParameters;
    "Debugger.setAsyncCallStackDepth": Debugger.setAsyncCallStackDepthParameters;
    "Debugger.setBlackboxExecutionContexts": Debugger.setBlackboxExecutionContextsParameters;
    "Debugger.setBlackboxPatterns": Debugger.setBlackboxPatternsParameters;
    "Debugger.setBlackboxedRanges": Debugger.setBlackboxedRangesParameters;
    "Debugger.setBreakpoint": Debugger.setBreakpointParameters;
    "Debugger.setInstrumentationBreakpoint": Debugger.setInstrumentationBreakpointParameters;
    "Debugger.setBreakpointByUrl": Debugger.setBreakpointByUrlParameters;
    "Debugger.setBreakpointOnFunctionCall": Debugger.setBreakpointOnFunctionCallParameters;
    "Debugger.setBreakpointsActive": Debugger.setBreakpointsActiveParameters;
    "Debugger.setPauseOnExceptions": Debugger.setPauseOnExceptionsParameters;
    "Debugger.setReturnValue": Debugger.setReturnValueParameters;
    "Debugger.setScriptSource": Debugger.setScriptSourceParameters;
    "Debugger.setSkipAllPauses": Debugger.setSkipAllPausesParameters;
    "Debugger.setVariableValue": Debugger.setVariableValueParameters;
    "Debugger.stepInto": Debugger.stepIntoParameters;
    "Debugger.stepOut": Debugger.stepOutParameters;
    "Debugger.stepOver": Debugger.stepOverParameters;
    "HeapProfiler.addInspectedHeapObject": HeapProfiler.addInspectedHeapObjectParameters;
    "HeapProfiler.collectGarbage": HeapProfiler.collectGarbageParameters;
    "HeapProfiler.disable": HeapProfiler.disableParameters;
    "HeapProfiler.enable": HeapProfiler.enableParameters;
    "HeapProfiler.getHeapObjectId": HeapProfiler.getHeapObjectIdParameters;
    "HeapProfiler.getObjectByHeapObjectId": HeapProfiler.getObjectByHeapObjectIdParameters;
    "HeapProfiler.getSamplingProfile": HeapProfiler.getSamplingProfileParameters;
    "HeapProfiler.startSampling": HeapProfiler.startSamplingParameters;
    "HeapProfiler.startTrackingHeapObjects": HeapProfiler.startTrackingHeapObjectsParameters;
    "HeapProfiler.stopSampling": HeapProfiler.stopSamplingParameters;
    "HeapProfiler.stopTrackingHeapObjects": HeapProfiler.stopTrackingHeapObjectsParameters;
    "HeapProfiler.takeHeapSnapshot": HeapProfiler.takeHeapSnapshotParameters;
    "Profiler.disable": Profiler.disableParameters;
    "Profiler.enable": Profiler.enableParameters;
    "Profiler.getBestEffortCoverage": Profiler.getBestEffortCoverageParameters;
    "Profiler.setSamplingInterval": Profiler.setSamplingIntervalParameters;
    "Profiler.start": Profiler.startParameters;
    "Profiler.startPreciseCoverage": Profiler.startPreciseCoverageParameters;
    "Profiler.stop": Profiler.stopParameters;
    "Profiler.stopPreciseCoverage": Profiler.stopPreciseCoverageParameters;
    "Profiler.takePreciseCoverage": Profiler.takePreciseCoverageParameters;
    "Runtime.awaitPromise": Runtime.awaitPromiseParameters;
    "Runtime.callFunctionOn": Runtime.callFunctionOnParameters;
    "Runtime.compileScript": Runtime.compileScriptParameters;
    "Runtime.disable": Runtime.disableParameters;
    "Runtime.discardConsoleEntries": Runtime.discardConsoleEntriesParameters;
    "Runtime.enable": Runtime.enableParameters;
    "Runtime.evaluate": Runtime.evaluateParameters;
    "Runtime.getIsolateId": Runtime.getIsolateIdParameters;
    "Runtime.getHeapUsage": Runtime.getHeapUsageParameters;
    "Runtime.getProperties": Runtime.getPropertiesParameters;
    "Runtime.globalLexicalScopeNames": Runtime.globalLexicalScopeNamesParameters;
    "Runtime.queryObjects": Runtime.queryObjectsParameters;
    "Runtime.releaseObject": Runtime.releaseObjectParameters;
    "Runtime.releaseObjectGroup": Runtime.releaseObjectGroupParameters;
    "Runtime.runIfWaitingForDebugger": Runtime.runIfWaitingForDebuggerParameters;
    "Runtime.runScript": Runtime.runScriptParameters;
    "Runtime.setAsyncCallStackDepth": Runtime.setAsyncCallStackDepthParameters;
    "Runtime.setCustomObjectFormatterEnabled": Runtime.setCustomObjectFormatterEnabledParameters;
    "Runtime.setMaxCallStackSizeToCapture": Runtime.setMaxCallStackSizeToCaptureParameters;
    "Runtime.terminateExecution": Runtime.terminateExecutionParameters;
    "Runtime.addBinding": Runtime.addBindingParameters;
    "Runtime.removeBinding": Runtime.removeBindingParameters;
    "Runtime.getExceptionDetails": Runtime.getExceptionDetailsParameters;
    "Schema.getDomains": Schema.getDomainsParameters;
  }
  export interface CommandReturnValues {
    "Accessibility.disable": Accessibility.disableReturnValue;
    "Accessibility.enable": Accessibility.enableReturnValue;
    "Accessibility.getPartialAXTree": Accessibility.getPartialAXTreeReturnValue;
    "Accessibility.getFullAXTree": Accessibility.getFullAXTreeReturnValue;
    "Accessibility.getRootAXNode": Accessibility.getRootAXNodeReturnValue;
    "Accessibility.getAXNodeAndAncestors": Accessibility.getAXNodeAndAncestorsReturnValue;
    "Accessibility.getChildAXNodes": Accessibility.getChildAXNodesReturnValue;
    "Accessibility.queryAXTree": Accessibility.queryAXTreeReturnValue;
    "Animation.disable": Animation.disableReturnValue;
    "Animation.enable": Animation.enableReturnValue;
    "Animation.getCurrentTime": Animation.getCurrentTimeReturnValue;
    "Animation.getPlaybackRate": Animation.getPlaybackRateReturnValue;
    "Animation.releaseAnimations": Animation.releaseAnimationsReturnValue;
    "Animation.resolveAnimation": Animation.resolveAnimationReturnValue;
    "Animation.seekAnimations": Animation.seekAnimationsReturnValue;
    "Animation.setPaused": Animation.setPausedReturnValue;
    "Animation.setPlaybackRate": Animation.setPlaybackRateReturnValue;
    "Animation.setTiming": Animation.setTimingReturnValue;
    "Audits.getEncodedResponse": Audits.getEncodedResponseReturnValue;
    "Audits.disable": Audits.disableReturnValue;
    "Audits.enable": Audits.enableReturnValue;
    "Audits.checkFormsIssues": Audits.checkFormsIssuesReturnValue;
    "Autofill.trigger": Autofill.triggerReturnValue;
    "Autofill.setAddresses": Autofill.setAddressesReturnValue;
    "Autofill.disable": Autofill.disableReturnValue;
    "Autofill.enable": Autofill.enableReturnValue;
    "BackgroundService.startObserving": BackgroundService.startObservingReturnValue;
    "BackgroundService.stopObserving": BackgroundService.stopObservingReturnValue;
    "BackgroundService.setRecording": BackgroundService.setRecordingReturnValue;
    "BackgroundService.clearEvents": BackgroundService.clearEventsReturnValue;
    "BluetoothEmulation.enable": BluetoothEmulation.enableReturnValue;
    "BluetoothEmulation.setSimulatedCentralState": BluetoothEmulation.setSimulatedCentralStateReturnValue;
    "BluetoothEmulation.disable": BluetoothEmulation.disableReturnValue;
    "BluetoothEmulation.simulatePreconnectedPeripheral": BluetoothEmulation.simulatePreconnectedPeripheralReturnValue;
    "BluetoothEmulation.simulateAdvertisement": BluetoothEmulation.simulateAdvertisementReturnValue;
    "BluetoothEmulation.simulateGATTOperationResponse": BluetoothEmulation.simulateGATTOperationResponseReturnValue;
    "BluetoothEmulation.simulateCharacteristicOperationResponse": BluetoothEmulation.simulateCharacteristicOperationResponseReturnValue;
    "BluetoothEmulation.simulateDescriptorOperationResponse": BluetoothEmulation.simulateDescriptorOperationResponseReturnValue;
    "BluetoothEmulation.addService": BluetoothEmulation.addServiceReturnValue;
    "BluetoothEmulation.removeService": BluetoothEmulation.removeServiceReturnValue;
    "BluetoothEmulation.addCharacteristic": BluetoothEmulation.addCharacteristicReturnValue;
    "BluetoothEmulation.removeCharacteristic": BluetoothEmulation.removeCharacteristicReturnValue;
    "BluetoothEmulation.addDescriptor": BluetoothEmulation.addDescriptorReturnValue;
    "BluetoothEmulation.removeDescriptor": BluetoothEmulation.removeDescriptorReturnValue;
    "BluetoothEmulation.simulateGATTDisconnection": BluetoothEmulation.simulateGATTDisconnectionReturnValue;
    "Browser.setPermission": Browser.setPermissionReturnValue;
    "Browser.grantPermissions": Browser.grantPermissionsReturnValue;
    "Browser.resetPermissions": Browser.resetPermissionsReturnValue;
    "Browser.setDownloadBehavior": Browser.setDownloadBehaviorReturnValue;
    "Browser.cancelDownload": Browser.cancelDownloadReturnValue;
    "Browser.close": Browser.closeReturnValue;
    "Browser.crash": Browser.crashReturnValue;
    "Browser.crashGpuProcess": Browser.crashGpuProcessReturnValue;
    "Browser.getVersion": Browser.getVersionReturnValue;
    "Browser.getBrowserCommandLine": Browser.getBrowserCommandLineReturnValue;
    "Browser.getHistograms": Browser.getHistogramsReturnValue;
    "Browser.getHistogram": Browser.getHistogramReturnValue;
    "Browser.getWindowBounds": Browser.getWindowBoundsReturnValue;
    "Browser.getWindowForTarget": Browser.getWindowForTargetReturnValue;
    "Browser.setWindowBounds": Browser.setWindowBoundsReturnValue;
    "Browser.setContentsSize": Browser.setContentsSizeReturnValue;
    "Browser.setDockTile": Browser.setDockTileReturnValue;
    "Browser.executeBrowserCommand": Browser.executeBrowserCommandReturnValue;
    "Browser.addPrivacySandboxEnrollmentOverride": Browser.addPrivacySandboxEnrollmentOverrideReturnValue;
    "Browser.addPrivacySandboxCoordinatorKeyConfig": Browser.addPrivacySandboxCoordinatorKeyConfigReturnValue;
    "CSS.addRule": CSS.addRuleReturnValue;
    "CSS.collectClassNames": CSS.collectClassNamesReturnValue;
    "CSS.createStyleSheet": CSS.createStyleSheetReturnValue;
    "CSS.disable": CSS.disableReturnValue;
    "CSS.enable": CSS.enableReturnValue;
    "CSS.forcePseudoState": CSS.forcePseudoStateReturnValue;
    "CSS.forceStartingStyle": CSS.forceStartingStyleReturnValue;
    "CSS.getBackgroundColors": CSS.getBackgroundColorsReturnValue;
    "CSS.getComputedStyleForNode": CSS.getComputedStyleForNodeReturnValue;
    "CSS.resolveValues": CSS.resolveValuesReturnValue;
    "CSS.getLonghandProperties": CSS.getLonghandPropertiesReturnValue;
    "CSS.getInlineStylesForNode": CSS.getInlineStylesForNodeReturnValue;
    "CSS.getAnimatedStylesForNode": CSS.getAnimatedStylesForNodeReturnValue;
    "CSS.getMatchedStylesForNode": CSS.getMatchedStylesForNodeReturnValue;
    "CSS.getEnvironmentVariables": CSS.getEnvironmentVariablesReturnValue;
    "CSS.getMediaQueries": CSS.getMediaQueriesReturnValue;
    "CSS.getPlatformFontsForNode": CSS.getPlatformFontsForNodeReturnValue;
    "CSS.getStyleSheetText": CSS.getStyleSheetTextReturnValue;
    "CSS.getLayersForNode": CSS.getLayersForNodeReturnValue;
    "CSS.getLocationForSelector": CSS.getLocationForSelectorReturnValue;
    "CSS.trackComputedStyleUpdatesForNode": CSS.trackComputedStyleUpdatesForNodeReturnValue;
    "CSS.trackComputedStyleUpdates": CSS.trackComputedStyleUpdatesReturnValue;
    "CSS.takeComputedStyleUpdates": CSS.takeComputedStyleUpdatesReturnValue;
    "CSS.setEffectivePropertyValueForNode": CSS.setEffectivePropertyValueForNodeReturnValue;
    "CSS.setPropertyRulePropertyName": CSS.setPropertyRulePropertyNameReturnValue;
    "CSS.setKeyframeKey": CSS.setKeyframeKeyReturnValue;
    "CSS.setMediaText": CSS.setMediaTextReturnValue;
    "CSS.setContainerQueryText": CSS.setContainerQueryTextReturnValue;
    "CSS.setSupportsText": CSS.setSupportsTextReturnValue;
    "CSS.setNavigationText": CSS.setNavigationTextReturnValue;
    "CSS.setScopeText": CSS.setScopeTextReturnValue;
    "CSS.setRuleSelector": CSS.setRuleSelectorReturnValue;
    "CSS.setStyleSheetText": CSS.setStyleSheetTextReturnValue;
    "CSS.setStyleTexts": CSS.setStyleTextsReturnValue;
    "CSS.startRuleUsageTracking": CSS.startRuleUsageTrackingReturnValue;
    "CSS.stopRuleUsageTracking": CSS.stopRuleUsageTrackingReturnValue;
    "CSS.takeCoverageDelta": CSS.takeCoverageDeltaReturnValue;
    "CSS.setLocalFontsEnabled": CSS.setLocalFontsEnabledReturnValue;
    "CacheStorage.deleteCache": CacheStorage.deleteCacheReturnValue;
    "CacheStorage.deleteEntry": CacheStorage.deleteEntryReturnValue;
    "CacheStorage.requestCacheNames": CacheStorage.requestCacheNamesReturnValue;
    "CacheStorage.requestCachedResponse": CacheStorage.requestCachedResponseReturnValue;
    "CacheStorage.requestEntries": CacheStorage.requestEntriesReturnValue;
    "Cast.enable": Cast.enableReturnValue;
    "Cast.disable": Cast.disableReturnValue;
    "Cast.setSinkToUse": Cast.setSinkToUseReturnValue;
    "Cast.startDesktopMirroring": Cast.startDesktopMirroringReturnValue;
    "Cast.startTabMirroring": Cast.startTabMirroringReturnValue;
    "Cast.stopCasting": Cast.stopCastingReturnValue;
    "CrashReportContext.getEntries": CrashReportContext.getEntriesReturnValue;
    "DOM.collectClassNamesFromSubtree": DOM.collectClassNamesFromSubtreeReturnValue;
    "DOM.copyTo": DOM.copyToReturnValue;
    "DOM.describeNode": DOM.describeNodeReturnValue;
    "DOM.scrollIntoViewIfNeeded": DOM.scrollIntoViewIfNeededReturnValue;
    "DOM.disable": DOM.disableReturnValue;
    "DOM.discardSearchResults": DOM.discardSearchResultsReturnValue;
    "DOM.enable": DOM.enableReturnValue;
    "DOM.focus": DOM.focusReturnValue;
    "DOM.getAttributes": DOM.getAttributesReturnValue;
    "DOM.getBoxModel": DOM.getBoxModelReturnValue;
    "DOM.getContentQuads": DOM.getContentQuadsReturnValue;
    "DOM.getDocument": DOM.getDocumentReturnValue;
    "DOM.getFlattenedDocument": DOM.getFlattenedDocumentReturnValue;
    "DOM.getNodesForSubtreeByStyle": DOM.getNodesForSubtreeByStyleReturnValue;
    "DOM.getNodeForLocation": DOM.getNodeForLocationReturnValue;
    "DOM.getOuterHTML": DOM.getOuterHTMLReturnValue;
    "DOM.getRelayoutBoundary": DOM.getRelayoutBoundaryReturnValue;
    "DOM.getSearchResults": DOM.getSearchResultsReturnValue;
    "DOM.hideHighlight": DOM.hideHighlightReturnValue;
    "DOM.highlightNode": DOM.highlightNodeReturnValue;
    "DOM.highlightRect": DOM.highlightRectReturnValue;
    "DOM.markUndoableState": DOM.markUndoableStateReturnValue;
    "DOM.moveTo": DOM.moveToReturnValue;
    "DOM.performSearch": DOM.performSearchReturnValue;
    "DOM.pushNodeByPathToFrontend": DOM.pushNodeByPathToFrontendReturnValue;
    "DOM.pushNodesByBackendIdsToFrontend": DOM.pushNodesByBackendIdsToFrontendReturnValue;
    "DOM.querySelector": DOM.querySelectorReturnValue;
    "DOM.querySelectorAll": DOM.querySelectorAllReturnValue;
    "DOM.getTopLayerElements": DOM.getTopLayerElementsReturnValue;
    "DOM.getElementByRelation": DOM.getElementByRelationReturnValue;
    "DOM.redo": DOM.redoReturnValue;
    "DOM.removeAttribute": DOM.removeAttributeReturnValue;
    "DOM.removeNode": DOM.removeNodeReturnValue;
    "DOM.requestChildNodes": DOM.requestChildNodesReturnValue;
    "DOM.requestNode": DOM.requestNodeReturnValue;
    "DOM.resolveNode": DOM.resolveNodeReturnValue;
    "DOM.setAttributeValue": DOM.setAttributeValueReturnValue;
    "DOM.setAttributesAsText": DOM.setAttributesAsTextReturnValue;
    "DOM.setFileInputFiles": DOM.setFileInputFilesReturnValue;
    "DOM.setNodeStackTracesEnabled": DOM.setNodeStackTracesEnabledReturnValue;
    "DOM.getNodeStackTraces": DOM.getNodeStackTracesReturnValue;
    "DOM.getFileInfo": DOM.getFileInfoReturnValue;
    "DOM.getDetachedDomNodes": DOM.getDetachedDomNodesReturnValue;
    "DOM.setInspectedNode": DOM.setInspectedNodeReturnValue;
    "DOM.setNodeName": DOM.setNodeNameReturnValue;
    "DOM.setNodeValue": DOM.setNodeValueReturnValue;
    "DOM.setOuterHTML": DOM.setOuterHTMLReturnValue;
    "DOM.undo": DOM.undoReturnValue;
    "DOM.getFrameOwner": DOM.getFrameOwnerReturnValue;
    "DOM.getContainerForNode": DOM.getContainerForNodeReturnValue;
    "DOM.getQueryingDescendantsForContainer": DOM.getQueryingDescendantsForContainerReturnValue;
    "DOM.getAnchorElement": DOM.getAnchorElementReturnValue;
    "DOM.forceShowPopover": DOM.forceShowPopoverReturnValue;
    "DOMDebugger.getEventListeners": DOMDebugger.getEventListenersReturnValue;
    "DOMDebugger.removeDOMBreakpoint": DOMDebugger.removeDOMBreakpointReturnValue;
    "DOMDebugger.removeEventListenerBreakpoint": DOMDebugger.removeEventListenerBreakpointReturnValue;
    "DOMDebugger.removeInstrumentationBreakpoint": DOMDebugger.removeInstrumentationBreakpointReturnValue;
    "DOMDebugger.removeXHRBreakpoint": DOMDebugger.removeXHRBreakpointReturnValue;
    "DOMDebugger.setBreakOnCSPViolation": DOMDebugger.setBreakOnCSPViolationReturnValue;
    "DOMDebugger.setDOMBreakpoint": DOMDebugger.setDOMBreakpointReturnValue;
    "DOMDebugger.setEventListenerBreakpoint": DOMDebugger.setEventListenerBreakpointReturnValue;
    "DOMDebugger.setInstrumentationBreakpoint": DOMDebugger.setInstrumentationBreakpointReturnValue;
    "DOMDebugger.setXHRBreakpoint": DOMDebugger.setXHRBreakpointReturnValue;
    "DOMSnapshot.disable": DOMSnapshot.disableReturnValue;
    "DOMSnapshot.enable": DOMSnapshot.enableReturnValue;
    "DOMSnapshot.getSnapshot": DOMSnapshot.getSnapshotReturnValue;
    "DOMSnapshot.captureSnapshot": DOMSnapshot.captureSnapshotReturnValue;
    "DOMStorage.clear": DOMStorage.clearReturnValue;
    "DOMStorage.disable": DOMStorage.disableReturnValue;
    "DOMStorage.enable": DOMStorage.enableReturnValue;
    "DOMStorage.getDOMStorageItems": DOMStorage.getDOMStorageItemsReturnValue;
    "DOMStorage.removeDOMStorageItem": DOMStorage.removeDOMStorageItemReturnValue;
    "DOMStorage.setDOMStorageItem": DOMStorage.setDOMStorageItemReturnValue;
    "DeviceAccess.enable": DeviceAccess.enableReturnValue;
    "DeviceAccess.disable": DeviceAccess.disableReturnValue;
    "DeviceAccess.selectPrompt": DeviceAccess.selectPromptReturnValue;
    "DeviceAccess.cancelPrompt": DeviceAccess.cancelPromptReturnValue;
    "DeviceOrientation.clearDeviceOrientationOverride": DeviceOrientation.clearDeviceOrientationOverrideReturnValue;
    "DeviceOrientation.setDeviceOrientationOverride": DeviceOrientation.setDeviceOrientationOverrideReturnValue;
    "Emulation.canEmulate": Emulation.canEmulateReturnValue;
    "Emulation.clearDeviceMetricsOverride": Emulation.clearDeviceMetricsOverrideReturnValue;
    "Emulation.clearGeolocationOverride": Emulation.clearGeolocationOverrideReturnValue;
    "Emulation.resetPageScaleFactor": Emulation.resetPageScaleFactorReturnValue;
    "Emulation.setFocusEmulationEnabled": Emulation.setFocusEmulationEnabledReturnValue;
    "Emulation.setAutoDarkModeOverride": Emulation.setAutoDarkModeOverrideReturnValue;
    "Emulation.setCPUThrottlingRate": Emulation.setCPUThrottlingRateReturnValue;
    "Emulation.setDefaultBackgroundColorOverride": Emulation.setDefaultBackgroundColorOverrideReturnValue;
    "Emulation.setSafeAreaInsetsOverride": Emulation.setSafeAreaInsetsOverrideReturnValue;
    "Emulation.setDeviceMetricsOverride": Emulation.setDeviceMetricsOverrideReturnValue;
    "Emulation.setDevicePostureOverride": Emulation.setDevicePostureOverrideReturnValue;
    "Emulation.clearDevicePostureOverride": Emulation.clearDevicePostureOverrideReturnValue;
    "Emulation.setDisplayFeaturesOverride": Emulation.setDisplayFeaturesOverrideReturnValue;
    "Emulation.clearDisplayFeaturesOverride": Emulation.clearDisplayFeaturesOverrideReturnValue;
    "Emulation.setScrollbarsHidden": Emulation.setScrollbarsHiddenReturnValue;
    "Emulation.setDocumentCookieDisabled": Emulation.setDocumentCookieDisabledReturnValue;
    "Emulation.setEmitTouchEventsForMouse": Emulation.setEmitTouchEventsForMouseReturnValue;
    "Emulation.setEmulatedMedia": Emulation.setEmulatedMediaReturnValue;
    "Emulation.setEmulatedVisionDeficiency": Emulation.setEmulatedVisionDeficiencyReturnValue;
    "Emulation.setEmulatedOSTextScale": Emulation.setEmulatedOSTextScaleReturnValue;
    "Emulation.setGeolocationOverride": Emulation.setGeolocationOverrideReturnValue;
    "Emulation.getOverriddenSensorInformation": Emulation.getOverriddenSensorInformationReturnValue;
    "Emulation.setSensorOverrideEnabled": Emulation.setSensorOverrideEnabledReturnValue;
    "Emulation.setSensorOverrideReadings": Emulation.setSensorOverrideReadingsReturnValue;
    "Emulation.setPressureSourceOverrideEnabled": Emulation.setPressureSourceOverrideEnabledReturnValue;
    "Emulation.setPressureStateOverride": Emulation.setPressureStateOverrideReturnValue;
    "Emulation.setPressureDataOverride": Emulation.setPressureDataOverrideReturnValue;
    "Emulation.setIdleOverride": Emulation.setIdleOverrideReturnValue;
    "Emulation.clearIdleOverride": Emulation.clearIdleOverrideReturnValue;
    "Emulation.setNavigatorOverrides": Emulation.setNavigatorOverridesReturnValue;
    "Emulation.setPageScaleFactor": Emulation.setPageScaleFactorReturnValue;
    "Emulation.setScriptExecutionDisabled": Emulation.setScriptExecutionDisabledReturnValue;
    "Emulation.setTouchEmulationEnabled": Emulation.setTouchEmulationEnabledReturnValue;
    "Emulation.setVirtualTimePolicy": Emulation.setVirtualTimePolicyReturnValue;
    "Emulation.setLocaleOverride": Emulation.setLocaleOverrideReturnValue;
    "Emulation.setTimezoneOverride": Emulation.setTimezoneOverrideReturnValue;
    "Emulation.setVisibleSize": Emulation.setVisibleSizeReturnValue;
    "Emulation.setDisabledImageTypes": Emulation.setDisabledImageTypesReturnValue;
    "Emulation.setDataSaverOverride": Emulation.setDataSaverOverrideReturnValue;
    "Emulation.setHardwareConcurrencyOverride": Emulation.setHardwareConcurrencyOverrideReturnValue;
    "Emulation.setUserAgentOverride": Emulation.setUserAgentOverrideReturnValue;
    "Emulation.setAutomationOverride": Emulation.setAutomationOverrideReturnValue;
    "Emulation.setSmallViewportHeightDifferenceOverride": Emulation.setSmallViewportHeightDifferenceOverrideReturnValue;
    "Emulation.getScreenInfos": Emulation.getScreenInfosReturnValue;
    "Emulation.addScreen": Emulation.addScreenReturnValue;
    "Emulation.updateScreen": Emulation.updateScreenReturnValue;
    "Emulation.removeScreen": Emulation.removeScreenReturnValue;
    "Emulation.setPrimaryScreen": Emulation.setPrimaryScreenReturnValue;
    "EventBreakpoints.setInstrumentationBreakpoint": EventBreakpoints.setInstrumentationBreakpointReturnValue;
    "EventBreakpoints.removeInstrumentationBreakpoint": EventBreakpoints.removeInstrumentationBreakpointReturnValue;
    "EventBreakpoints.disable": EventBreakpoints.disableReturnValue;
    "Extensions.triggerAction": Extensions.triggerActionReturnValue;
    "Extensions.loadUnpacked": Extensions.loadUnpackedReturnValue;
    "Extensions.getExtensions": Extensions.getExtensionsReturnValue;
    "Extensions.uninstall": Extensions.uninstallReturnValue;
    "Extensions.getStorageItems": Extensions.getStorageItemsReturnValue;
    "Extensions.removeStorageItems": Extensions.removeStorageItemsReturnValue;
    "Extensions.clearStorageItems": Extensions.clearStorageItemsReturnValue;
    "Extensions.setStorageItems": Extensions.setStorageItemsReturnValue;
    "FedCm.enable": FedCm.enableReturnValue;
    "FedCm.disable": FedCm.disableReturnValue;
    "FedCm.selectAccount": FedCm.selectAccountReturnValue;
    "FedCm.clickDialogButton": FedCm.clickDialogButtonReturnValue;
    "FedCm.openUrl": FedCm.openUrlReturnValue;
    "FedCm.dismissDialog": FedCm.dismissDialogReturnValue;
    "FedCm.resetCooldown": FedCm.resetCooldownReturnValue;
    "Fetch.disable": Fetch.disableReturnValue;
    "Fetch.enable": Fetch.enableReturnValue;
    "Fetch.failRequest": Fetch.failRequestReturnValue;
    "Fetch.fulfillRequest": Fetch.fulfillRequestReturnValue;
    "Fetch.continueRequest": Fetch.continueRequestReturnValue;
    "Fetch.continueWithAuth": Fetch.continueWithAuthReturnValue;
    "Fetch.continueResponse": Fetch.continueResponseReturnValue;
    "Fetch.getResponseBody": Fetch.getResponseBodyReturnValue;
    "Fetch.takeResponseBodyAsStream": Fetch.takeResponseBodyAsStreamReturnValue;
    "FileSystem.getDirectory": FileSystem.getDirectoryReturnValue;
    "HeadlessExperimental.beginFrame": HeadlessExperimental.beginFrameReturnValue;
    "HeadlessExperimental.disable": HeadlessExperimental.disableReturnValue;
    "HeadlessExperimental.enable": HeadlessExperimental.enableReturnValue;
    "IO.close": IO.closeReturnValue;
    "IO.read": IO.readReturnValue;
    "IO.resolveBlob": IO.resolveBlobReturnValue;
    "IndexedDB.clearObjectStore": IndexedDB.clearObjectStoreReturnValue;
    "IndexedDB.deleteDatabase": IndexedDB.deleteDatabaseReturnValue;
    "IndexedDB.deleteObjectStoreEntries": IndexedDB.deleteObjectStoreEntriesReturnValue;
    "IndexedDB.disable": IndexedDB.disableReturnValue;
    "IndexedDB.enable": IndexedDB.enableReturnValue;
    "IndexedDB.requestData": IndexedDB.requestDataReturnValue;
    "IndexedDB.getMetadata": IndexedDB.getMetadataReturnValue;
    "IndexedDB.requestDatabase": IndexedDB.requestDatabaseReturnValue;
    "IndexedDB.requestDatabaseNames": IndexedDB.requestDatabaseNamesReturnValue;
    "Input.dispatchDragEvent": Input.dispatchDragEventReturnValue;
    "Input.dispatchKeyEvent": Input.dispatchKeyEventReturnValue;
    "Input.insertText": Input.insertTextReturnValue;
    "Input.imeSetComposition": Input.imeSetCompositionReturnValue;
    "Input.dispatchMouseEvent": Input.dispatchMouseEventReturnValue;
    "Input.dispatchTouchEvent": Input.dispatchTouchEventReturnValue;
    "Input.cancelDragging": Input.cancelDraggingReturnValue;
    "Input.emulateTouchFromMouseEvent": Input.emulateTouchFromMouseEventReturnValue;
    "Input.setIgnoreInputEvents": Input.setIgnoreInputEventsReturnValue;
    "Input.setInterceptDrags": Input.setInterceptDragsReturnValue;
    "Input.synthesizePinchGesture": Input.synthesizePinchGestureReturnValue;
    "Input.synthesizeScrollGesture": Input.synthesizeScrollGestureReturnValue;
    "Input.synthesizeTapGesture": Input.synthesizeTapGestureReturnValue;
    "Inspector.disable": Inspector.disableReturnValue;
    "Inspector.enable": Inspector.enableReturnValue;
    "LayerTree.compositingReasons": LayerTree.compositingReasonsReturnValue;
    "LayerTree.disable": LayerTree.disableReturnValue;
    "LayerTree.enable": LayerTree.enableReturnValue;
    "LayerTree.loadSnapshot": LayerTree.loadSnapshotReturnValue;
    "LayerTree.makeSnapshot": LayerTree.makeSnapshotReturnValue;
    "LayerTree.profileSnapshot": LayerTree.profileSnapshotReturnValue;
    "LayerTree.releaseSnapshot": LayerTree.releaseSnapshotReturnValue;
    "LayerTree.replaySnapshot": LayerTree.replaySnapshotReturnValue;
    "LayerTree.snapshotCommandLog": LayerTree.snapshotCommandLogReturnValue;
    "Log.clear": Log.clearReturnValue;
    "Log.disable": Log.disableReturnValue;
    "Log.enable": Log.enableReturnValue;
    "Log.startViolationsReport": Log.startViolationsReportReturnValue;
    "Log.stopViolationsReport": Log.stopViolationsReportReturnValue;
    "Media.enable": Media.enableReturnValue;
    "Media.disable": Media.disableReturnValue;
    "Memory.getDOMCounters": Memory.getDOMCountersReturnValue;
    "Memory.getDOMCountersForLeakDetection": Memory.getDOMCountersForLeakDetectionReturnValue;
    "Memory.prepareForLeakDetection": Memory.prepareForLeakDetectionReturnValue;
    "Memory.forciblyPurgeJavaScriptMemory": Memory.forciblyPurgeJavaScriptMemoryReturnValue;
    "Memory.setPressureNotificationsSuppressed": Memory.setPressureNotificationsSuppressedReturnValue;
    "Memory.simulatePressureNotification": Memory.simulatePressureNotificationReturnValue;
    "Memory.startSampling": Memory.startSamplingReturnValue;
    "Memory.stopSampling": Memory.stopSamplingReturnValue;
    "Memory.getAllTimeSamplingProfile": Memory.getAllTimeSamplingProfileReturnValue;
    "Memory.getBrowserSamplingProfile": Memory.getBrowserSamplingProfileReturnValue;
    "Memory.getSamplingProfile": Memory.getSamplingProfileReturnValue;
    "Network.setAcceptedEncodings": Network.setAcceptedEncodingsReturnValue;
    "Network.clearAcceptedEncodingsOverride": Network.clearAcceptedEncodingsOverrideReturnValue;
    "Network.canClearBrowserCache": Network.canClearBrowserCacheReturnValue;
    "Network.canClearBrowserCookies": Network.canClearBrowserCookiesReturnValue;
    "Network.canEmulateNetworkConditions": Network.canEmulateNetworkConditionsReturnValue;
    "Network.clearBrowserCache": Network.clearBrowserCacheReturnValue;
    "Network.clearBrowserCookies": Network.clearBrowserCookiesReturnValue;
    "Network.continueInterceptedRequest": Network.continueInterceptedRequestReturnValue;
    "Network.deleteCookies": Network.deleteCookiesReturnValue;
    "Network.disable": Network.disableReturnValue;
    "Network.emulateNetworkConditions": Network.emulateNetworkConditionsReturnValue;
    "Network.emulateNetworkConditionsByRule": Network.emulateNetworkConditionsByRuleReturnValue;
    "Network.overrideNetworkState": Network.overrideNetworkStateReturnValue;
    "Network.enable": Network.enableReturnValue;
    "Network.configureDurableMessages": Network.configureDurableMessagesReturnValue;
    "Network.getAllCookies": Network.getAllCookiesReturnValue;
    "Network.getCertificate": Network.getCertificateReturnValue;
    "Network.getCookies": Network.getCookiesReturnValue;
    "Network.getResponseBody": Network.getResponseBodyReturnValue;
    "Network.getRequestPostData": Network.getRequestPostDataReturnValue;
    "Network.getResponseBodyForInterception": Network.getResponseBodyForInterceptionReturnValue;
    "Network.takeResponseBodyForInterceptionAsStream": Network.takeResponseBodyForInterceptionAsStreamReturnValue;
    "Network.replayXHR": Network.replayXHRReturnValue;
    "Network.searchInResponseBody": Network.searchInResponseBodyReturnValue;
    "Network.setBlockedURLs": Network.setBlockedURLsReturnValue;
    "Network.setBypassServiceWorker": Network.setBypassServiceWorkerReturnValue;
    "Network.setCacheDisabled": Network.setCacheDisabledReturnValue;
    "Network.setCookie": Network.setCookieReturnValue;
    "Network.setCookies": Network.setCookiesReturnValue;
    "Network.setExtraHTTPHeaders": Network.setExtraHTTPHeadersReturnValue;
    "Network.setAttachDebugStack": Network.setAttachDebugStackReturnValue;
    "Network.setRequestInterception": Network.setRequestInterceptionReturnValue;
    "Network.setUserAgentOverride": Network.setUserAgentOverrideReturnValue;
    "Network.streamResourceContent": Network.streamResourceContentReturnValue;
    "Network.getSecurityIsolationStatus": Network.getSecurityIsolationStatusReturnValue;
    "Network.enableReportingApi": Network.enableReportingApiReturnValue;
    "Network.enableDeviceBoundSessions": Network.enableDeviceBoundSessionsReturnValue;
    "Network.deleteDeviceBoundSession": Network.deleteDeviceBoundSessionReturnValue;
    "Network.fetchSchemefulSite": Network.fetchSchemefulSiteReturnValue;
    "Network.loadNetworkResource": Network.loadNetworkResourceReturnValue;
    "Network.setCookieControls": Network.setCookieControlsReturnValue;
    "Overlay.disable": Overlay.disableReturnValue;
    "Overlay.enable": Overlay.enableReturnValue;
    "Overlay.getHighlightObjectForTest": Overlay.getHighlightObjectForTestReturnValue;
    "Overlay.getGridHighlightObjectsForTest": Overlay.getGridHighlightObjectsForTestReturnValue;
    "Overlay.getSourceOrderHighlightObjectForTest": Overlay.getSourceOrderHighlightObjectForTestReturnValue;
    "Overlay.hideHighlight": Overlay.hideHighlightReturnValue;
    "Overlay.highlightFrame": Overlay.highlightFrameReturnValue;
    "Overlay.highlightNode": Overlay.highlightNodeReturnValue;
    "Overlay.highlightQuad": Overlay.highlightQuadReturnValue;
    "Overlay.highlightRect": Overlay.highlightRectReturnValue;
    "Overlay.highlightSourceOrder": Overlay.highlightSourceOrderReturnValue;
    "Overlay.setInspectMode": Overlay.setInspectModeReturnValue;
    "Overlay.setShowAdHighlights": Overlay.setShowAdHighlightsReturnValue;
    "Overlay.setPausedInDebuggerMessage": Overlay.setPausedInDebuggerMessageReturnValue;
    "Overlay.setShowDebugBorders": Overlay.setShowDebugBordersReturnValue;
    "Overlay.setShowFPSCounter": Overlay.setShowFPSCounterReturnValue;
    "Overlay.setShowGridOverlays": Overlay.setShowGridOverlaysReturnValue;
    "Overlay.setShowFlexOverlays": Overlay.setShowFlexOverlaysReturnValue;
    "Overlay.setShowScrollSnapOverlays": Overlay.setShowScrollSnapOverlaysReturnValue;
    "Overlay.setShowContainerQueryOverlays": Overlay.setShowContainerQueryOverlaysReturnValue;
    "Overlay.setShowInspectedElementAnchor": Overlay.setShowInspectedElementAnchorReturnValue;
    "Overlay.setShowPaintRects": Overlay.setShowPaintRectsReturnValue;
    "Overlay.setShowLayoutShiftRegions": Overlay.setShowLayoutShiftRegionsReturnValue;
    "Overlay.setShowScrollBottleneckRects": Overlay.setShowScrollBottleneckRectsReturnValue;
    "Overlay.setShowHitTestBorders": Overlay.setShowHitTestBordersReturnValue;
    "Overlay.setShowWebVitals": Overlay.setShowWebVitalsReturnValue;
    "Overlay.setShowViewportSizeOnResize": Overlay.setShowViewportSizeOnResizeReturnValue;
    "Overlay.setShowHinge": Overlay.setShowHingeReturnValue;
    "Overlay.setShowIsolatedElements": Overlay.setShowIsolatedElementsReturnValue;
    "Overlay.setShowWindowControlsOverlay": Overlay.setShowWindowControlsOverlayReturnValue;
    "PWA.getOsAppState": PWA.getOsAppStateReturnValue;
    "PWA.install": PWA.installReturnValue;
    "PWA.uninstall": PWA.uninstallReturnValue;
    "PWA.launch": PWA.launchReturnValue;
    "PWA.launchFilesInApp": PWA.launchFilesInAppReturnValue;
    "PWA.openCurrentPageInApp": PWA.openCurrentPageInAppReturnValue;
    "PWA.changeAppUserSettings": PWA.changeAppUserSettingsReturnValue;
    "Page.addScriptToEvaluateOnLoad": Page.addScriptToEvaluateOnLoadReturnValue;
    "Page.addScriptToEvaluateOnNewDocument": Page.addScriptToEvaluateOnNewDocumentReturnValue;
    "Page.bringToFront": Page.bringToFrontReturnValue;
    "Page.captureScreenshot": Page.captureScreenshotReturnValue;
    "Page.captureSnapshot": Page.captureSnapshotReturnValue;
    "Page.clearDeviceMetricsOverride": Page.clearDeviceMetricsOverrideReturnValue;
    "Page.clearDeviceOrientationOverride": Page.clearDeviceOrientationOverrideReturnValue;
    "Page.clearGeolocationOverride": Page.clearGeolocationOverrideReturnValue;
    "Page.createIsolatedWorld": Page.createIsolatedWorldReturnValue;
    "Page.deleteCookie": Page.deleteCookieReturnValue;
    "Page.disable": Page.disableReturnValue;
    "Page.enable": Page.enableReturnValue;
    "Page.getAppManifest": Page.getAppManifestReturnValue;
    "Page.getInstallabilityErrors": Page.getInstallabilityErrorsReturnValue;
    "Page.getManifestIcons": Page.getManifestIconsReturnValue;
    "Page.getAppId": Page.getAppIdReturnValue;
    "Page.getAdScriptAncestry": Page.getAdScriptAncestryReturnValue;
    "Page.getFrameTree": Page.getFrameTreeReturnValue;
    "Page.getLayoutMetrics": Page.getLayoutMetricsReturnValue;
    "Page.getNavigationHistory": Page.getNavigationHistoryReturnValue;
    "Page.resetNavigationHistory": Page.resetNavigationHistoryReturnValue;
    "Page.getResourceContent": Page.getResourceContentReturnValue;
    "Page.getResourceTree": Page.getResourceTreeReturnValue;
    "Page.handleJavaScriptDialog": Page.handleJavaScriptDialogReturnValue;
    "Page.navigate": Page.navigateReturnValue;
    "Page.navigateToHistoryEntry": Page.navigateToHistoryEntryReturnValue;
    "Page.printToPDF": Page.printToPDFReturnValue;
    "Page.reload": Page.reloadReturnValue;
    "Page.removeScriptToEvaluateOnLoad": Page.removeScriptToEvaluateOnLoadReturnValue;
    "Page.removeScriptToEvaluateOnNewDocument": Page.removeScriptToEvaluateOnNewDocumentReturnValue;
    "Page.screencastFrameAck": Page.screencastFrameAckReturnValue;
    "Page.searchInResource": Page.searchInResourceReturnValue;
    "Page.setAdBlockingEnabled": Page.setAdBlockingEnabledReturnValue;
    "Page.setBypassCSP": Page.setBypassCSPReturnValue;
    "Page.getPermissionsPolicyState": Page.getPermissionsPolicyStateReturnValue;
    "Page.getOriginTrials": Page.getOriginTrialsReturnValue;
    "Page.setDeviceMetricsOverride": Page.setDeviceMetricsOverrideReturnValue;
    "Page.setDeviceOrientationOverride": Page.setDeviceOrientationOverrideReturnValue;
    "Page.setFontFamilies": Page.setFontFamiliesReturnValue;
    "Page.setFontSizes": Page.setFontSizesReturnValue;
    "Page.setDocumentContent": Page.setDocumentContentReturnValue;
    "Page.setDownloadBehavior": Page.setDownloadBehaviorReturnValue;
    "Page.setGeolocationOverride": Page.setGeolocationOverrideReturnValue;
    "Page.setLifecycleEventsEnabled": Page.setLifecycleEventsEnabledReturnValue;
    "Page.setTouchEmulationEnabled": Page.setTouchEmulationEnabledReturnValue;
    "Page.startScreencast": Page.startScreencastReturnValue;
    "Page.stopLoading": Page.stopLoadingReturnValue;
    "Page.crash": Page.crashReturnValue;
    "Page.close": Page.closeReturnValue;
    "Page.setWebLifecycleState": Page.setWebLifecycleStateReturnValue;
    "Page.stopScreencast": Page.stopScreencastReturnValue;
    "Page.produceCompilationCache": Page.produceCompilationCacheReturnValue;
    "Page.addCompilationCache": Page.addCompilationCacheReturnValue;
    "Page.clearCompilationCache": Page.clearCompilationCacheReturnValue;
    "Page.setSPCTransactionMode": Page.setSPCTransactionModeReturnValue;
    "Page.setRPHRegistrationMode": Page.setRPHRegistrationModeReturnValue;
    "Page.generateTestReport": Page.generateTestReportReturnValue;
    "Page.waitForDebugger": Page.waitForDebuggerReturnValue;
    "Page.setInterceptFileChooserDialog": Page.setInterceptFileChooserDialogReturnValue;
    "Page.setPrerenderingAllowed": Page.setPrerenderingAllowedReturnValue;
    "Page.getAnnotatedPageContent": Page.getAnnotatedPageContentReturnValue;
    "Performance.disable": Performance.disableReturnValue;
    "Performance.enable": Performance.enableReturnValue;
    "Performance.setTimeDomain": Performance.setTimeDomainReturnValue;
    "Performance.getMetrics": Performance.getMetricsReturnValue;
    "PerformanceTimeline.enable": PerformanceTimeline.enableReturnValue;
    "Preload.enable": Preload.enableReturnValue;
    "Preload.disable": Preload.disableReturnValue;
    "Security.disable": Security.disableReturnValue;
    "Security.enable": Security.enableReturnValue;
    "Security.setIgnoreCertificateErrors": Security.setIgnoreCertificateErrorsReturnValue;
    "Security.handleCertificateError": Security.handleCertificateErrorReturnValue;
    "Security.setOverrideCertificateErrors": Security.setOverrideCertificateErrorsReturnValue;
    "ServiceWorker.deliverPushMessage": ServiceWorker.deliverPushMessageReturnValue;
    "ServiceWorker.disable": ServiceWorker.disableReturnValue;
    "ServiceWorker.dispatchSyncEvent": ServiceWorker.dispatchSyncEventReturnValue;
    "ServiceWorker.dispatchPeriodicSyncEvent": ServiceWorker.dispatchPeriodicSyncEventReturnValue;
    "ServiceWorker.enable": ServiceWorker.enableReturnValue;
    "ServiceWorker.setForceUpdateOnPageLoad": ServiceWorker.setForceUpdateOnPageLoadReturnValue;
    "ServiceWorker.skipWaiting": ServiceWorker.skipWaitingReturnValue;
    "ServiceWorker.startWorker": ServiceWorker.startWorkerReturnValue;
    "ServiceWorker.stopAllWorkers": ServiceWorker.stopAllWorkersReturnValue;
    "ServiceWorker.stopWorker": ServiceWorker.stopWorkerReturnValue;
    "ServiceWorker.unregister": ServiceWorker.unregisterReturnValue;
    "ServiceWorker.updateRegistration": ServiceWorker.updateRegistrationReturnValue;
    "SmartCardEmulation.enable": SmartCardEmulation.enableReturnValue;
    "SmartCardEmulation.disable": SmartCardEmulation.disableReturnValue;
    "SmartCardEmulation.reportEstablishContextResult": SmartCardEmulation.reportEstablishContextResultReturnValue;
    "SmartCardEmulation.reportReleaseContextResult": SmartCardEmulation.reportReleaseContextResultReturnValue;
    "SmartCardEmulation.reportListReadersResult": SmartCardEmulation.reportListReadersResultReturnValue;
    "SmartCardEmulation.reportGetStatusChangeResult": SmartCardEmulation.reportGetStatusChangeResultReturnValue;
    "SmartCardEmulation.reportBeginTransactionResult": SmartCardEmulation.reportBeginTransactionResultReturnValue;
    "SmartCardEmulation.reportPlainResult": SmartCardEmulation.reportPlainResultReturnValue;
    "SmartCardEmulation.reportConnectResult": SmartCardEmulation.reportConnectResultReturnValue;
    "SmartCardEmulation.reportDataResult": SmartCardEmulation.reportDataResultReturnValue;
    "SmartCardEmulation.reportStatusResult": SmartCardEmulation.reportStatusResultReturnValue;
    "SmartCardEmulation.reportError": SmartCardEmulation.reportErrorReturnValue;
    "Storage.getStorageKeyForFrame": Storage.getStorageKeyForFrameReturnValue;
    "Storage.getStorageKey": Storage.getStorageKeyReturnValue;
    "Storage.clearDataForOrigin": Storage.clearDataForOriginReturnValue;
    "Storage.clearDataForStorageKey": Storage.clearDataForStorageKeyReturnValue;
    "Storage.getCookies": Storage.getCookiesReturnValue;
    "Storage.setCookies": Storage.setCookiesReturnValue;
    "Storage.clearCookies": Storage.clearCookiesReturnValue;
    "Storage.getUsageAndQuota": Storage.getUsageAndQuotaReturnValue;
    "Storage.overrideQuotaForOrigin": Storage.overrideQuotaForOriginReturnValue;
    "Storage.trackCacheStorageForOrigin": Storage.trackCacheStorageForOriginReturnValue;
    "Storage.trackCacheStorageForStorageKey": Storage.trackCacheStorageForStorageKeyReturnValue;
    "Storage.trackIndexedDBForOrigin": Storage.trackIndexedDBForOriginReturnValue;
    "Storage.trackIndexedDBForStorageKey": Storage.trackIndexedDBForStorageKeyReturnValue;
    "Storage.untrackCacheStorageForOrigin": Storage.untrackCacheStorageForOriginReturnValue;
    "Storage.untrackCacheStorageForStorageKey": Storage.untrackCacheStorageForStorageKeyReturnValue;
    "Storage.untrackIndexedDBForOrigin": Storage.untrackIndexedDBForOriginReturnValue;
    "Storage.untrackIndexedDBForStorageKey": Storage.untrackIndexedDBForStorageKeyReturnValue;
    "Storage.getTrustTokens": Storage.getTrustTokensReturnValue;
    "Storage.clearTrustTokens": Storage.clearTrustTokensReturnValue;
    "Storage.getInterestGroupDetails": Storage.getInterestGroupDetailsReturnValue;
    "Storage.setInterestGroupTracking": Storage.setInterestGroupTrackingReturnValue;
    "Storage.setInterestGroupAuctionTracking": Storage.setInterestGroupAuctionTrackingReturnValue;
    "Storage.getSharedStorageMetadata": Storage.getSharedStorageMetadataReturnValue;
    "Storage.getSharedStorageEntries": Storage.getSharedStorageEntriesReturnValue;
    "Storage.setSharedStorageEntry": Storage.setSharedStorageEntryReturnValue;
    "Storage.deleteSharedStorageEntry": Storage.deleteSharedStorageEntryReturnValue;
    "Storage.clearSharedStorageEntries": Storage.clearSharedStorageEntriesReturnValue;
    "Storage.resetSharedStorageBudget": Storage.resetSharedStorageBudgetReturnValue;
    "Storage.setSharedStorageTracking": Storage.setSharedStorageTrackingReturnValue;
    "Storage.setStorageBucketTracking": Storage.setStorageBucketTrackingReturnValue;
    "Storage.deleteStorageBucket": Storage.deleteStorageBucketReturnValue;
    "Storage.runBounceTrackingMitigations": Storage.runBounceTrackingMitigationsReturnValue;
    "Storage.getRelatedWebsiteSets": Storage.getRelatedWebsiteSetsReturnValue;
    "Storage.setProtectedAudienceKAnonymity": Storage.setProtectedAudienceKAnonymityReturnValue;
    "SystemInfo.getInfo": SystemInfo.getInfoReturnValue;
    "SystemInfo.getFeatureState": SystemInfo.getFeatureStateReturnValue;
    "SystemInfo.getProcessInfo": SystemInfo.getProcessInfoReturnValue;
    "Target.activateTarget": Target.activateTargetReturnValue;
    "Target.attachToTarget": Target.attachToTargetReturnValue;
    "Target.attachToBrowserTarget": Target.attachToBrowserTargetReturnValue;
    "Target.closeTarget": Target.closeTargetReturnValue;
    "Target.exposeDevToolsProtocol": Target.exposeDevToolsProtocolReturnValue;
    "Target.createBrowserContext": Target.createBrowserContextReturnValue;
    "Target.getBrowserContexts": Target.getBrowserContextsReturnValue;
    "Target.createTarget": Target.createTargetReturnValue;
    "Target.detachFromTarget": Target.detachFromTargetReturnValue;
    "Target.disposeBrowserContext": Target.disposeBrowserContextReturnValue;
    "Target.getTargetInfo": Target.getTargetInfoReturnValue;
    "Target.getTargets": Target.getTargetsReturnValue;
    "Target.sendMessageToTarget": Target.sendMessageToTargetReturnValue;
    "Target.setAutoAttach": Target.setAutoAttachReturnValue;
    "Target.autoAttachRelated": Target.autoAttachRelatedReturnValue;
    "Target.setDiscoverTargets": Target.setDiscoverTargetsReturnValue;
    "Target.setRemoteLocations": Target.setRemoteLocationsReturnValue;
    "Target.getDevToolsTarget": Target.getDevToolsTargetReturnValue;
    "Target.openDevTools": Target.openDevToolsReturnValue;
    "Tethering.bind": Tethering.bindReturnValue;
    "Tethering.unbind": Tethering.unbindReturnValue;
    "Tracing.end": Tracing.endReturnValue;
    "Tracing.getCategories": Tracing.getCategoriesReturnValue;
    "Tracing.getTrackEventDescriptor": Tracing.getTrackEventDescriptorReturnValue;
    "Tracing.recordClockSyncMarker": Tracing.recordClockSyncMarkerReturnValue;
    "Tracing.requestMemoryDump": Tracing.requestMemoryDumpReturnValue;
    "Tracing.start": Tracing.startReturnValue;
    "WebAudio.enable": WebAudio.enableReturnValue;
    "WebAudio.disable": WebAudio.disableReturnValue;
    "WebAudio.getRealtimeData": WebAudio.getRealtimeDataReturnValue;
    "WebAuthn.enable": WebAuthn.enableReturnValue;
    "WebAuthn.disable": WebAuthn.disableReturnValue;
    "WebAuthn.addVirtualAuthenticator": WebAuthn.addVirtualAuthenticatorReturnValue;
    "WebAuthn.setResponseOverrideBits": WebAuthn.setResponseOverrideBitsReturnValue;
    "WebAuthn.removeVirtualAuthenticator": WebAuthn.removeVirtualAuthenticatorReturnValue;
    "WebAuthn.addCredential": WebAuthn.addCredentialReturnValue;
    "WebAuthn.getCredential": WebAuthn.getCredentialReturnValue;
    "WebAuthn.getCredentials": WebAuthn.getCredentialsReturnValue;
    "WebAuthn.removeCredential": WebAuthn.removeCredentialReturnValue;
    "WebAuthn.clearCredentials": WebAuthn.clearCredentialsReturnValue;
    "WebAuthn.setUserVerified": WebAuthn.setUserVerifiedReturnValue;
    "WebAuthn.setAutomaticPresenceSimulation": WebAuthn.setAutomaticPresenceSimulationReturnValue;
    "WebAuthn.setCredentialProperties": WebAuthn.setCredentialPropertiesReturnValue;
    "WebMCP.enable": WebMCP.enableReturnValue;
    "WebMCP.disable": WebMCP.disableReturnValue;
    "WebMCP.invokeTool": WebMCP.invokeToolReturnValue;
    "WebMCP.cancelInvocation": WebMCP.cancelInvocationReturnValue;
    "Console.clearMessages": Console.clearMessagesReturnValue;
    "Console.disable": Console.disableReturnValue;
    "Console.enable": Console.enableReturnValue;
    "Debugger.continueToLocation": Debugger.continueToLocationReturnValue;
    "Debugger.disable": Debugger.disableReturnValue;
    "Debugger.enable": Debugger.enableReturnValue;
    "Debugger.evaluateOnCallFrame": Debugger.evaluateOnCallFrameReturnValue;
    "Debugger.getPossibleBreakpoints": Debugger.getPossibleBreakpointsReturnValue;
    "Debugger.getScriptSource": Debugger.getScriptSourceReturnValue;
    "Debugger.disassembleWasmModule": Debugger.disassembleWasmModuleReturnValue;
    "Debugger.nextWasmDisassemblyChunk": Debugger.nextWasmDisassemblyChunkReturnValue;
    "Debugger.getWasmBytecode": Debugger.getWasmBytecodeReturnValue;
    "Debugger.getStackTrace": Debugger.getStackTraceReturnValue;
    "Debugger.pause": Debugger.pauseReturnValue;
    "Debugger.pauseOnAsyncCall": Debugger.pauseOnAsyncCallReturnValue;
    "Debugger.removeBreakpoint": Debugger.removeBreakpointReturnValue;
    "Debugger.restartFrame": Debugger.restartFrameReturnValue;
    "Debugger.resume": Debugger.resumeReturnValue;
    "Debugger.searchInContent": Debugger.searchInContentReturnValue;
    "Debugger.setAsyncCallStackDepth": Debugger.setAsyncCallStackDepthReturnValue;
    "Debugger.setBlackboxExecutionContexts": Debugger.setBlackboxExecutionContextsReturnValue;
    "Debugger.setBlackboxPatterns": Debugger.setBlackboxPatternsReturnValue;
    "Debugger.setBlackboxedRanges": Debugger.setBlackboxedRangesReturnValue;
    "Debugger.setBreakpoint": Debugger.setBreakpointReturnValue;
    "Debugger.setInstrumentationBreakpoint": Debugger.setInstrumentationBreakpointReturnValue;
    "Debugger.setBreakpointByUrl": Debugger.setBreakpointByUrlReturnValue;
    "Debugger.setBreakpointOnFunctionCall": Debugger.setBreakpointOnFunctionCallReturnValue;
    "Debugger.setBreakpointsActive": Debugger.setBreakpointsActiveReturnValue;
    "Debugger.setPauseOnExceptions": Debugger.setPauseOnExceptionsReturnValue;
    "Debugger.setReturnValue": Debugger.setReturnValueReturnValue;
    "Debugger.setScriptSource": Debugger.setScriptSourceReturnValue;
    "Debugger.setSkipAllPauses": Debugger.setSkipAllPausesReturnValue;
    "Debugger.setVariableValue": Debugger.setVariableValueReturnValue;
    "Debugger.stepInto": Debugger.stepIntoReturnValue;
    "Debugger.stepOut": Debugger.stepOutReturnValue;
    "Debugger.stepOver": Debugger.stepOverReturnValue;
    "HeapProfiler.addInspectedHeapObject": HeapProfiler.addInspectedHeapObjectReturnValue;
    "HeapProfiler.collectGarbage": HeapProfiler.collectGarbageReturnValue;
    "HeapProfiler.disable": HeapProfiler.disableReturnValue;
    "HeapProfiler.enable": HeapProfiler.enableReturnValue;
    "HeapProfiler.getHeapObjectId": HeapProfiler.getHeapObjectIdReturnValue;
    "HeapProfiler.getObjectByHeapObjectId": HeapProfiler.getObjectByHeapObjectIdReturnValue;
    "HeapProfiler.getSamplingProfile": HeapProfiler.getSamplingProfileReturnValue;
    "HeapProfiler.startSampling": HeapProfiler.startSamplingReturnValue;
    "HeapProfiler.startTrackingHeapObjects": HeapProfiler.startTrackingHeapObjectsReturnValue;
    "HeapProfiler.stopSampling": HeapProfiler.stopSamplingReturnValue;
    "HeapProfiler.stopTrackingHeapObjects": HeapProfiler.stopTrackingHeapObjectsReturnValue;
    "HeapProfiler.takeHeapSnapshot": HeapProfiler.takeHeapSnapshotReturnValue;
    "Profiler.disable": Profiler.disableReturnValue;
    "Profiler.enable": Profiler.enableReturnValue;
    "Profiler.getBestEffortCoverage": Profiler.getBestEffortCoverageReturnValue;
    "Profiler.setSamplingInterval": Profiler.setSamplingIntervalReturnValue;
    "Profiler.start": Profiler.startReturnValue;
    "Profiler.startPreciseCoverage": Profiler.startPreciseCoverageReturnValue;
    "Profiler.stop": Profiler.stopReturnValue;
    "Profiler.stopPreciseCoverage": Profiler.stopPreciseCoverageReturnValue;
    "Profiler.takePreciseCoverage": Profiler.takePreciseCoverageReturnValue;
    "Runtime.awaitPromise": Runtime.awaitPromiseReturnValue;
    "Runtime.callFunctionOn": Runtime.callFunctionOnReturnValue;
    "Runtime.compileScript": Runtime.compileScriptReturnValue;
    "Runtime.disable": Runtime.disableReturnValue;
    "Runtime.discardConsoleEntries": Runtime.discardConsoleEntriesReturnValue;
    "Runtime.enable": Runtime.enableReturnValue;
    "Runtime.evaluate": Runtime.evaluateReturnValue;
    "Runtime.getIsolateId": Runtime.getIsolateIdReturnValue;
    "Runtime.getHeapUsage": Runtime.getHeapUsageReturnValue;
    "Runtime.getProperties": Runtime.getPropertiesReturnValue;
    "Runtime.globalLexicalScopeNames": Runtime.globalLexicalScopeNamesReturnValue;
    "Runtime.queryObjects": Runtime.queryObjectsReturnValue;
    "Runtime.releaseObject": Runtime.releaseObjectReturnValue;
    "Runtime.releaseObjectGroup": Runtime.releaseObjectGroupReturnValue;
    "Runtime.runIfWaitingForDebugger": Runtime.runIfWaitingForDebuggerReturnValue;
    "Runtime.runScript": Runtime.runScriptReturnValue;
    "Runtime.setAsyncCallStackDepth": Runtime.setAsyncCallStackDepthReturnValue;
    "Runtime.setCustomObjectFormatterEnabled": Runtime.setCustomObjectFormatterEnabledReturnValue;
    "Runtime.setMaxCallStackSizeToCapture": Runtime.setMaxCallStackSizeToCaptureReturnValue;
    "Runtime.terminateExecution": Runtime.terminateExecutionReturnValue;
    "Runtime.addBinding": Runtime.addBindingReturnValue;
    "Runtime.removeBinding": Runtime.removeBindingReturnValue;
    "Runtime.getExceptionDetails": Runtime.getExceptionDetailsReturnValue;
    "Schema.getDomains": Schema.getDomainsReturnValue;
  }
}
//#endregion
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/playwright-core/1.61.1/18c2a23d26543584ecd378a964afb75fb452e07c662808f689f8ccf7073b2238/node_modules/playwright-core/types/structs.d.ts
/**
 * Can be converted to JSON
 */
type Serializable = any;
/**
 * Can be converted to JSON, but may also contain JSHandles.
 */
type EvaluationArgument = {};
type NoHandles<Arg> = Arg extends JSHandle ? never : (Arg extends object ? { [Key in keyof Arg]: NoHandles<Arg[Key]>; } : Arg);
type Unboxed<Arg> = Arg extends ElementHandle<infer T> ? T : Arg extends JSHandle<infer T> ? T : Arg extends NoHandles<Arg> ? Arg : Arg extends [infer A0] ? [Unboxed<A0>] : Arg extends [infer A0, infer A1] ? [Unboxed<A0>, Unboxed<A1>] : Arg extends [infer A0, infer A1, infer A2] ? [Unboxed<A0>, Unboxed<A1>, Unboxed<A2>] : Arg extends [infer A0, infer A1, infer A2, infer A3] ? [Unboxed<A0>, Unboxed<A1>, Unboxed<A2>, Unboxed<A3>] : Arg extends Array<infer T> ? Array<Unboxed<T>> : Arg extends object ? { [Key in keyof Arg]: Unboxed<Arg[Key]>; } : Arg;
type PageFunction<Arg, R> = string | ((arg: Unboxed<Arg>) => R | Promise<R>);
type PageFunctionOn<On, Arg2, R> = string | ((on: On, arg2: Unboxed<Arg2>) => R | Promise<R>);
type SmartHandle<T> = [T] extends [Node] ? ElementHandle<T> : JSHandle<T>;
type ElementHandleForTag<K extends keyof HTMLElementTagNameMap> = ElementHandle<HTMLElementTagNameMap[K]>;
type BindingSource = {
  context: BrowserContext;
  page: Page$1;
  frame: Frame$1;
};
//#endregion
//#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/playwright-core/1.61.1/18c2a23d26543584ecd378a964afb75fb452e07c662808f689f8ccf7073b2238/node_modules/playwright-core/types/types.d.ts
// Use the global URLPattern type if available (Node.js 22+, modern browsers),
// otherwise fall back to `never` so it disappears from union types.
type URLPattern = typeof globalThis extends {
  URLPattern: new (...args: any) => infer T;
} ? T : never;
type PageWaitForSelectorOptionsNotHidden = PageWaitForSelectorOptions & {
  state?: 'visible' | 'attached';
};
type ElementHandleWaitForSelectorOptionsNotHidden = ElementHandleWaitForSelectorOptions & {
  state?: 'visible' | 'attached';
};
/**
 * Page provides methods to interact with a single tab in a [Browser](https://playwright.dev/docs/api/class-browser),
 * or an [extension background page](https://developer.chrome.com/extensions/background_pages) in Chromium. One
 * [Browser](https://playwright.dev/docs/api/class-browser) instance might have multiple
 * [Page](https://playwright.dev/docs/api/class-page) instances.
 *
 * This example creates a page, navigates it to a URL, and then saves a screenshot:
 *
 * ```js
 * const { webkit } = require('playwright');  // Or 'chromium' or 'firefox'.
 *
 * (async () => {
 *   const browser = await webkit.launch();
 *   const context = await browser.newContext();
 *   const page = await context.newPage();
 *   await page.goto('https://example.com');
 *   await page.screenshot({ path: 'screenshot.png' });
 *   await browser.close();
 * })();
 * ```
 *
 * The Page class emits various events (described below) which can be handled using any of Node's native
 * [`EventEmitter`](https://nodejs.org/api/events.html#events_class_eventemitter) methods, such as `on`, `once` or
 * `removeListener`.
 *
 * This example logs a message for a single page `load` event:
 *
 * ```js
 * page.once('load', () => console.log('Page loaded!'));
 * ```
 *
 * To unsubscribe from events use the `removeListener` method:
 *
 * ```js
 * function logRequest(interceptedRequest) {
 *   console.log('A request was made:', interceptedRequest.url());
 * }
 * page.on('request', logRequest);
 * // Sometime later...
 * page.removeListener('request', logRequest);
 * ```
 *
 */
interface Page$1 {
  /**
   * Returns the value of the
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression) invocation.
   *
   * If the function passed to the
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) returns a [Promise],
   * then [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) would wait for
   * the promise to resolve and return its value.
   *
   * If the function passed to the
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) returns a
   * non-[Serializable] value, then
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) resolves to
   * `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`:
   * `-0`, `NaN`, `Infinity`, `-Infinity`.
   *
   * **Usage**
   *
   * Passing argument to [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression):
   *
   * ```js
   * const result = await page.evaluate(([x, y]) => {
   *   return Promise.resolve(x * y);
   * }, [7, 8]);
   * console.log(result); // prints "56"
   * ```
   *
   * A string can also be passed in instead of a function:
   *
   * ```js
   * console.log(await page.evaluate('1 + 2')); // prints "3"
   * const x = 10;
   * console.log(await page.evaluate(`1 + ${x}`)); // prints "11"
   * ```
   *
   * [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) instances can be passed as an argument to the
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate):
   *
   * ```js
   * const bodyHandle = await page.evaluateHandle('document.body');
   * const html = await page.evaluate<string, HTMLElement>(([body, suffix]) =>
   *   body.innerHTML + suffix, [bodyHandle, 'hello']
   * );
   * await bodyHandle.dispose();
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression).
   */
  evaluate<R, Arg>(pageFunction: PageFunction<Arg, R>, arg: Arg): Promise<R>;
  /**
   * Returns the value of the
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression) invocation.
   *
   * If the function passed to the
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) returns a [Promise],
   * then [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) would wait for
   * the promise to resolve and return its value.
   *
   * If the function passed to the
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) returns a
   * non-[Serializable] value, then
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) resolves to
   * `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`:
   * `-0`, `NaN`, `Infinity`, `-Infinity`.
   *
   * **Usage**
   *
   * Passing argument to [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression):
   *
   * ```js
   * const result = await page.evaluate(([x, y]) => {
   *   return Promise.resolve(x * y);
   * }, [7, 8]);
   * console.log(result); // prints "56"
   * ```
   *
   * A string can also be passed in instead of a function:
   *
   * ```js
   * console.log(await page.evaluate('1 + 2')); // prints "3"
   * const x = 10;
   * console.log(await page.evaluate(`1 + ${x}`)); // prints "11"
   * ```
   *
   * [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) instances can be passed as an argument to the
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate):
   *
   * ```js
   * const bodyHandle = await page.evaluateHandle('document.body');
   * const html = await page.evaluate<string, HTMLElement>(([body, suffix]) =>
   *   body.innerHTML + suffix, [bodyHandle, 'hello']
   * );
   * await bodyHandle.dispose();
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-option-expression).
   */
  evaluate<R>(pageFunction: PageFunction<void, R>, arg?: any): Promise<R>;
  /**
   * Returns the value of the
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-handle-option-expression) invocation as a
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * The only difference between
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) and
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) is that
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) returns
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If the function passed to the
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) returns
   * a [Promise], then
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) would
   * wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * // Handle for the window object.
   * const aWindowHandle = await page.evaluateHandle(() => Promise.resolve(window));
   * ```
   *
   * A string can also be passed in instead of a function:
   *
   * ```js
   * const aHandle = await page.evaluateHandle('document'); // Handle for the 'document'
   * ```
   *
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle) instances can be passed as an argument to the
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle):
   *
   * ```js
   * const aHandle = await page.evaluateHandle(() => document.body);
   * const resultHandle = await page.evaluateHandle(body => body.innerHTML, aHandle);
   * console.log(await resultHandle.jsonValue());
   * await resultHandle.dispose();
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-handle-option-expression).
   */
  evaluateHandle<R, Arg>(pageFunction: PageFunction<Arg, R>, arg: Arg): Promise<SmartHandle<R>>;
  /**
   * Returns the value of the
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-handle-option-expression) invocation as a
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * The only difference between
   * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) and
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) is that
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) returns
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If the function passed to the
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) returns
   * a [Promise], then
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) would
   * wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * // Handle for the window object.
   * const aWindowHandle = await page.evaluateHandle(() => Promise.resolve(window));
   * ```
   *
   * A string can also be passed in instead of a function:
   *
   * ```js
   * const aHandle = await page.evaluateHandle('document'); // Handle for the 'document'
   * ```
   *
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle) instances can be passed as an argument to the
   * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle):
   *
   * ```js
   * const aHandle = await page.evaluateHandle(() => document.body);
   * const resultHandle = await page.evaluateHandle(body => body.innerHTML, aHandle);
   * console.log(await resultHandle.jsonValue());
   * await resultHandle.dispose();
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-evaluate-handle-option-expression).
   */
  evaluateHandle<R>(pageFunction: PageFunction<void, R>, arg?: any): Promise<SmartHandle<R>>;
  /**
   * Adds a script which would be evaluated in one of the following scenarios:
   * - Whenever the page is navigated.
   * - Whenever the child frame is attached or navigated. In this case, the script is evaluated in the context of the
   *   newly attached frame.
   *
   * The script is evaluated after the document was created but before any of its scripts were run. This is useful to
   * amend the JavaScript environment, e.g. to seed `Math.random`.
   *
   * **Usage**
   *
   * An example of overriding `Math.random` before the page loads:
   *
   * ```js
   * // preload.js
   * Math.random = () => 42;
   * ```
   *
   * ```js
   * // In your playwright script, assuming the preload.js file is in same directory
   * await page.addInitScript({ path: './preload.js' });
   * ```
   *
   * ```js
   * await page.addInitScript(mock => {
   *   window.mock = mock;
   * }, mock);
   * ```
   *
   * **NOTE** The order of evaluation of multiple scripts installed via
   * [browserContext.addInitScript(script[, arg])](https://playwright.dev/docs/api/class-browsercontext#browser-context-add-init-script)
   * and [page.addInitScript(script[, arg])](https://playwright.dev/docs/api/class-page#page-add-init-script) is not
   * defined.
   *
   * @param script Script to be evaluated in the page.
   * @param arg Optional argument to pass to
   * [`script`](https://playwright.dev/docs/api/class-page#page-add-init-script-option-script) (only supported when
   * passing a function).
   */
  addInitScript<Arg>(script: PageFunction<Arg, any> | {
    path?: string;
    content?: string;
  }, arg?: Arg): Promise<Disposable>;
  /**
   * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The method finds an element matching the specified selector within the page. If no elements match the selector, the
   * return value resolves to `null`. To wait for an element on the page, use
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for).
   * @param selector A selector to query for.
   * @param options
   */
  $<K extends keyof HTMLElementTagNameMap>(selector: K, options?: {
    strict: boolean;
  }): Promise<ElementHandleForTag<K> | null>;
  /**
   * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The method finds an element matching the specified selector within the page. If no elements match the selector, the
   * return value resolves to `null`. To wait for an element on the page, use
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for).
   * @param selector A selector to query for.
   * @param options
   */
  $(selector: string, options?: {
    strict: boolean;
  }): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
  /**
   * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The method finds all elements matching the specified selector within the page. If no elements match the selector,
   * the return value resolves to `[]`.
   * @param selector A selector to query for.
   */
  $$<K extends keyof HTMLElementTagNameMap>(selector: K): Promise<ElementHandleForTag<K>[]>;
  /**
   * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The method finds all elements matching the specified selector within the page. If no elements match the selector,
   * the return value resolves to `[]`.
   * @param selector A selector to query for.
   */
  $$(selector: string): Promise<ElementHandle<SVGElement | HTMLElement>[]>;
  /**
   * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests.
   * Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * The method finds an element matching the specified selector within the page and passes it as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). If no
   * elements match the selector, the method throws an error. Returns the value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression) returns a
   * [Promise], then
   * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const searchValue = await page.$eval('#search', el => el.value);
   * const preloadHref = await page.$eval('link[rel=preload]', el => el.href);
   * const html = await page.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
   * // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el:
   * const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression).
   * @param options
   */
  $eval<K extends keyof HTMLElementTagNameMap, R, Arg>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K], Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests.
   * Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * The method finds an element matching the specified selector within the page and passes it as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). If no
   * elements match the selector, the method throws an error. Returns the value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression) returns a
   * [Promise], then
   * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const searchValue = await page.$eval('#search', el => el.value);
   * const preloadHref = await page.$eval('link[rel=preload]', el => el.href);
   * const html = await page.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
   * // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el:
   * const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression).
   * @param options
   */
  $eval<R, Arg, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E, Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests.
   * Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * The method finds an element matching the specified selector within the page and passes it as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). If no
   * elements match the selector, the method throws an error. Returns the value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression) returns a
   * [Promise], then
   * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const searchValue = await page.$eval('#search', el => el.value);
   * const preloadHref = await page.$eval('link[rel=preload]', el => el.href);
   * const html = await page.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
   * // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el:
   * const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression).
   * @param options
   */
  $eval<K extends keyof HTMLElementTagNameMap, R>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K], void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests.
   * Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * The method finds an element matching the specified selector within the page and passes it as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression). If no
   * elements match the selector, the method throws an error. Returns the value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression) returns a
   * [Promise], then
   * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const searchValue = await page.$eval('#search', el => el.value);
   * const preloadHref = await page.$eval('link[rel=preload]', el => el.href);
   * const html = await page.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
   * // In TypeScript, this example requires an explicit type annotation (HTMLLinkElement) on el:
   * const preloadHrefTS = await page.$eval('link[rel=preload]', (el: HTMLLinkElement) => el.href);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-option-expression).
   * @param options
   */
  $eval<R, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E, void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * The method finds all elements matching the specified selector within the page and passes an array of matched
   * elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). Returns
   * the result of
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression)
   * invocation.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) returns
   * a [Promise], then
   * [page.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression).
   */
  $$eval<K extends keyof HTMLElementTagNameMap, R, Arg>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K][], Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * The method finds all elements matching the specified selector within the page and passes an array of matched
   * elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). Returns
   * the result of
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression)
   * invocation.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) returns
   * a [Promise], then
   * [page.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression).
   */
  $$eval<R, Arg, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E[], Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * The method finds all elements matching the specified selector within the page and passes an array of matched
   * elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). Returns
   * the result of
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression)
   * invocation.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) returns
   * a [Promise], then
   * [page.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression).
   */
  $$eval<K extends keyof HTMLElementTagNameMap, R>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K][], void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * The method finds all elements matching the specified selector within the page and passes an array of matched
   * elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression). Returns
   * the result of
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression)
   * invocation.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression) returns
   * a [Promise], then
   * [page.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const divCounts = await page.$$eval('div', (divs, min) => divs.length >= min, 10);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-eval-on-selector-all-option-expression).
   */
  $$eval<R, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E[], void, R>, arg?: any): Promise<R>;
  /**
   * Returns when the
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-expression) returns a
   * truthy value. It resolves to a JSHandle of the truthy value.
   *
   * **Usage**
   *
   * The
   * [page.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-wait-for-function)
   * can be used to observe viewport size change:
   *
   * ```js
   * const { webkit } = require('playwright');  // Or 'chromium' or 'firefox'.
   *
   * (async () => {
   *   const browser = await webkit.launch();
   *   const page = await browser.newPage();
   *   const watchDog = page.waitForFunction(() => window.innerWidth < 100);
   *   await page.setViewportSize({ width: 50, height: 50 });
   *   await watchDog;
   *   await browser.close();
   * })();
   * ```
   *
   * To pass an argument to the predicate of
   * [page.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-wait-for-function)
   * function:
   *
   * ```js
   * const selector = '.foo';
   * await page.waitForFunction(selector => !!document.querySelector(selector), selector);
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-expression).
   * @param options
   */
  waitForFunction<R, Arg>(pageFunction: PageFunction<Arg, R>, arg: Arg, options?: PageWaitForFunctionOptions): Promise<SmartHandle<R>>;
  /**
   * Returns when the
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-expression) returns a
   * truthy value. It resolves to a JSHandle of the truthy value.
   *
   * **Usage**
   *
   * The
   * [page.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-wait-for-function)
   * can be used to observe viewport size change:
   *
   * ```js
   * const { webkit } = require('playwright');  // Or 'chromium' or 'firefox'.
   *
   * (async () => {
   *   const browser = await webkit.launch();
   *   const page = await browser.newPage();
   *   const watchDog = page.waitForFunction(() => window.innerWidth < 100);
   *   await page.setViewportSize({ width: 50, height: 50 });
   *   await watchDog;
   *   await browser.close();
   * })();
   * ```
   *
   * To pass an argument to the predicate of
   * [page.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-wait-for-function)
   * function:
   *
   * ```js
   * const selector = '.foo';
   * await page.waitForFunction(selector => !!document.querySelector(selector), selector);
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-expression).
   * @param options
   */
  waitForFunction<R>(pageFunction: PageFunction<void, R>, arg?: any, options?: PageWaitForFunctionOptions): Promise<SmartHandle<R>>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more
   * about [locators](https://playwright.dev/docs/locators).
   *
   * Returns when element specified by selector satisfies
   * [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option. Returns `null` if
   * waiting for `hidden` or `detached`.
   *
   * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions makes the code
   * wait-for-selector-free.
   *
   * Wait for the [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) to
   * satisfy [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option (either
   * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) already satisfies
   * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-timeout) milliseconds, the
   * function will throw.
   *
   * **Usage**
   *
   * This method works across navigations:
   *
   * ```js
   * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
   *
   * (async () => {
   *   const browser = await chromium.launch();
   *   const page = await browser.newPage();
   *   for (const currentURL of ['https://google.com', 'https://bbc.com']) {
   *     await page.goto(currentURL);
   *     const element = await page.waitForSelector('img');
   *     console.log('Loaded image: ' + await element.getAttribute('src'));
   *   }
   *   await browser.close();
   * })();
   * ```
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector<K extends keyof HTMLElementTagNameMap>(selector: K, options?: PageWaitForSelectorOptionsNotHidden): Promise<ElementHandleForTag<K>>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more
   * about [locators](https://playwright.dev/docs/locators).
   *
   * Returns when element specified by selector satisfies
   * [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option. Returns `null` if
   * waiting for `hidden` or `detached`.
   *
   * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions makes the code
   * wait-for-selector-free.
   *
   * Wait for the [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) to
   * satisfy [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option (either
   * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) already satisfies
   * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-timeout) milliseconds, the
   * function will throw.
   *
   * **Usage**
   *
   * This method works across navigations:
   *
   * ```js
   * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
   *
   * (async () => {
   *   const browser = await chromium.launch();
   *   const page = await browser.newPage();
   *   for (const currentURL of ['https://google.com', 'https://bbc.com']) {
   *     await page.goto(currentURL);
   *     const element = await page.waitForSelector('img');
   *     console.log('Loaded image: ' + await element.getAttribute('src'));
   *   }
   *   await browser.close();
   * })();
   * ```
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector(selector: string, options?: PageWaitForSelectorOptionsNotHidden): Promise<ElementHandle<SVGElement | HTMLElement>>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more
   * about [locators](https://playwright.dev/docs/locators).
   *
   * Returns when element specified by selector satisfies
   * [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option. Returns `null` if
   * waiting for `hidden` or `detached`.
   *
   * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions makes the code
   * wait-for-selector-free.
   *
   * Wait for the [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) to
   * satisfy [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option (either
   * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) already satisfies
   * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-timeout) milliseconds, the
   * function will throw.
   *
   * **Usage**
   *
   * This method works across navigations:
   *
   * ```js
   * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
   *
   * (async () => {
   *   const browser = await chromium.launch();
   *   const page = await browser.newPage();
   *   for (const currentURL of ['https://google.com', 'https://bbc.com']) {
   *     await page.goto(currentURL);
   *     const element = await page.waitForSelector('img');
   *     console.log('Loaded image: ' + await element.getAttribute('src'));
   *   }
   *   await browser.close();
   * })();
   * ```
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector<K extends keyof HTMLElementTagNameMap>(selector: K, options: PageWaitForSelectorOptions): Promise<ElementHandleForTag<K> | null>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more
   * about [locators](https://playwright.dev/docs/locators).
   *
   * Returns when element specified by selector satisfies
   * [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option. Returns `null` if
   * waiting for `hidden` or `detached`.
   *
   * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions makes the code
   * wait-for-selector-free.
   *
   * Wait for the [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) to
   * satisfy [`state`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-state) option (either
   * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-selector) already satisfies
   * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-wait-for-selector-option-timeout) milliseconds, the
   * function will throw.
   *
   * **Usage**
   *
   * This method works across navigations:
   *
   * ```js
   * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
   *
   * (async () => {
   *   const browser = await chromium.launch();
   *   const page = await browser.newPage();
   *   for (const currentURL of ['https://google.com', 'https://bbc.com']) {
   *     await page.goto(currentURL);
   *     const element = await page.waitForSelector('img');
   *     console.log('Loaded image: ' + await element.getAttribute('src'));
   *   }
   *   await browser.close();
   * })();
   * ```
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector(selector: string, options: PageWaitForSelectorOptions): Promise<null | ElementHandle<SVGElement | HTMLElement>>;
  /**
   * The method adds a function called
   * [`name`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-name) on the `window` object of
   * every frame in this page. When called, the function executes
   * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback) and returns a
   * [Promise] which resolves to the return value of
   * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback). If the
   * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback) returns a [Promise],
   * it will be awaited.
   *
   * The first argument of the
   * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-binding-option-callback) function contains
   * information about the caller: `{ browserContext: BrowserContext, page: Page, frame: Frame }`.
   *
   * See
   * [browserContext.exposeBinding(name, callback)](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding)
   * for the context-wide version.
   *
   * **NOTE** Functions installed via
   * [page.exposeBinding(name, callback)](https://playwright.dev/docs/api/class-page#page-expose-binding) survive
   * navigations.
   *
   * **Usage**
   *
   * An example of exposing page URL to all frames in a page:
   *
   * ```js
   * const { webkit } = require('playwright');  // Or 'chromium' or 'firefox'.
   *
   * (async () => {
   *   const browser = await webkit.launch({ headless: false });
   *   const context = await browser.newContext();
   *   const page = await context.newPage();
   *   await page.exposeBinding('pageURL', ({ page }) => page.url());
   *   await page.setContent(`
   *     <script>
   *       async function onClick() {
   *         document.querySelector('div').textContent = await window.pageURL();
   *       }
   *     </script>
   *     <button onclick="onClick()">Click me</button>
   *     <div></div>
   *   `);
   *   await page.click('button');
   * })();
   * ```
   *
   * @param name Name of the function on the window object.
   * @param callback Callback function that will be called in the Playwright's context.
   */
  exposeBinding(name: string, playwrightBinding: (source: BindingSource, ...args: any[]) => any): Promise<Disposable>;
  /**
   * Removes all the listeners of the given type (or all registered listeners if no type given). Allows to wait for
   * async listeners to complete or to ignore subsequent errors from these listeners.
   *
   * **Usage**
   *
   * ```js
   * page.on('request', async request => {
   *   const response = await request.response();
   *   const body = await response.body();
   *   console.log(body.byteLength);
   * });
   * await page.goto('https://playwright.dev', { waitUntil: 'domcontentloaded' });
   * // Waits for all the reported 'request' events to resolve.
   * await page.removeAllListeners('request', { behavior: 'wait' });
   * ```
   *
   * @param type
   * @param options
   */
  removeAllListeners(type?: string): this;
  /**
   * Removes all the listeners of the given type (or all registered listeners if no type given). Allows to wait for
   * async listeners to complete or to ignore subsequent errors from these listeners.
   *
   * **Usage**
   *
   * ```js
   * page.on('request', async request => {
   *   const response = await request.response();
   *   const body = await response.body();
   *   console.log(body.byteLength);
   * });
   * await page.goto('https://playwright.dev', { waitUntil: 'domcontentloaded' });
   * // Waits for all the reported 'request' events to resolve.
   * await page.removeAllListeners('request', { behavior: 'wait' });
   * ```
   *
   * @param type
   * @param options
   */
  removeAllListeners(type: string | undefined, options: {
    /**
     * Specifies whether to wait for already running listeners and what to do if they throw errors:
     * - `'default'` - do not wait for current listener calls (if any) to finish, if the listener throws, it may result in unhandled error
     * - `'wait'` - wait for current listener calls (if any) to finish
     * - `'ignoreErrors'` - do not wait for current listener calls (if any) to finish, all errors thrown by the listeners after removal are silently caught
     */
    behavior?: 'wait' | 'ignoreErrors' | 'default';
  }): Promise<void>;
  /**
   * Emitted when the page closes.
   */
  on(event: 'close', listener: (page: Page$1) => any): this;
  /**
   * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`.
   *
   * The arguments passed into `console.log` are available on the
   * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument.
   *
   * **Usage**
   *
   * ```js
   * page.on('console', async msg => {
   *   const values = [];
   *   for (const arg of msg.args())
   *     values.push(await arg.jsonValue());
   *   console.log(...values);
   * });
   * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));
   * ```
   *
   */
  on(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page
   * crashes, ongoing and subsequent operations will throw.
   *
   * The most common way to deal with crashes is to catch an exception:
   *
   * ```js
   * try {
   *   // Crash might happen during a click.
   *   await page.click('button');
   *   // Or while waiting for an event.
   *   await page.waitForEvent('popup');
   * } catch (e) {
   *   // When the page crashes, exception message contains 'crash'.
   * }
   * ```
   *
   */
  on(event: 'crash', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must**
   * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or
   * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page
   * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the
   * dialog, and actions like click will never finish.
   *
   * **Usage**
   *
   * ```js
   * page.on('dialog', dialog => dialog.accept());
   * ```
   *
   * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or
   * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog)
   * listeners are present, all dialogs are automatically dismissed.
   *
   */
  on(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Emitted when the JavaScript
   * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched.
   */
  on(event: 'domcontentloaded', listener: (page: Page$1) => any): this;
  /**
   * Emitted when attachment download started. User can access basic file operations on downloaded content via the
   * passed [Download](https://playwright.dev/docs/api/class-download) instance.
   */
  on(event: 'download', listener: (download: Download) => any): this;
  /**
   * Emitted when a file chooser is supposed to appear, such as after clicking the  `<input type=file>`. Playwright can
   * respond to it via setting the input files using
   * [fileChooser.setFiles(files[, options])](https://playwright.dev/docs/api/class-filechooser#file-chooser-set-files)
   * that can be uploaded after that.
   *
   * ```js
   * page.on('filechooser', async fileChooser => {
   *   await fileChooser.setFiles(path.join(__dirname, '/tmp/myfile.pdf'));
   * });
   * ```
   *
   */
  on(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this;
  /**
   * Emitted when a frame is attached.
   */
  on(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is detached.
   */
  on(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is navigated to a new url.
   */
  on(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
   */
  on(event: 'load', listener: (page: Page$1) => any): this;
  /**
   * Emitted when an uncaught exception happens within the page.
   *
   * ```js
   * // Log all uncaught errors to the terminal
   * page.on('pageerror', exception => {
   *   console.log(`Uncaught exception: "${exception}"`);
   * });
   *
   * // Navigate to a page with an exception.
   * await page.goto('data:text/html,<script>throw new Error("Test")</script>');
   * ```
   *
   */
  on(event: 'pageerror', listener: (error: Error) => any): this;
  /**
   * Emitted when the page opens a new tab or window. This event is emitted in addition to the
   * [browserContext.on('page')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but
   * only for popups relevant to this page.
   *
   * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a
   * popup with `window.open('http://example.com')`, this event will fire when the network request to
   * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen
   * to this network request, use
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * and
   * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request)
   * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page).
   *
   * ```js
   * // Start waiting for popup before clicking. Note no await.
   * const popupPromise = page.waitForEvent('popup');
   * await page.getByText('open the popup').click();
   * const popup = await popupPromise;
   * console.log(await popup.evaluate('location.href'));
   * ```
   *
   * **NOTE** Use
   * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to
   * wait until the page gets to a particular state (you should not need it in most cases).
   *
   */
  on(event: 'popup', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests,
   * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route).
   */
  on(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request fails, for example by timing out.
   *
   * ```js
   * page.on('requestfailed', request => {
   *   console.log(request.url() + ' ' + request.failure().errorText);
   * });
   * ```
   *
   * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request
   * will complete with
   * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished) event and not
   * with [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed). A request
   * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network
   * error net::ERR_FAILED.
   *
   */
  on(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request finishes successfully after downloading the response body. For a successful response, the
   * sequence of events is `request`, `response` and `requestfinished`.
   */
  on(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of
   * events is `request`, `response` and `requestfinished`.
   */
  on(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * Emitted when [WebSocket](https://playwright.dev/docs/api/class-websocket) request is sent.
   */
  on(event: 'websocket', listener: (webSocket: WebSocket) => any): this;
  /**
   * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned
   * by the page.
   */
  on(event: 'worker', listener: (worker: Worker) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'close', listener: (page: Page$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'crash', listener: (page: Page$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'domcontentloaded', listener: (page: Page$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'download', listener: (download: Download) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'load', listener: (page: Page$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'pageerror', listener: (error: Error) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'popup', listener: (page: Page$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'websocket', listener: (webSocket: WebSocket) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'worker', listener: (worker: Worker) => any): this;
  /**
   * Emitted when the page closes.
   */
  addListener(event: 'close', listener: (page: Page$1) => any): this;
  /**
   * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`.
   *
   * The arguments passed into `console.log` are available on the
   * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument.
   *
   * **Usage**
   *
   * ```js
   * page.on('console', async msg => {
   *   const values = [];
   *   for (const arg of msg.args())
   *     values.push(await arg.jsonValue());
   *   console.log(...values);
   * });
   * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));
   * ```
   *
   */
  addListener(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page
   * crashes, ongoing and subsequent operations will throw.
   *
   * The most common way to deal with crashes is to catch an exception:
   *
   * ```js
   * try {
   *   // Crash might happen during a click.
   *   await page.click('button');
   *   // Or while waiting for an event.
   *   await page.waitForEvent('popup');
   * } catch (e) {
   *   // When the page crashes, exception message contains 'crash'.
   * }
   * ```
   *
   */
  addListener(event: 'crash', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must**
   * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or
   * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page
   * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the
   * dialog, and actions like click will never finish.
   *
   * **Usage**
   *
   * ```js
   * page.on('dialog', dialog => dialog.accept());
   * ```
   *
   * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or
   * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog)
   * listeners are present, all dialogs are automatically dismissed.
   *
   */
  addListener(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Emitted when the JavaScript
   * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched.
   */
  addListener(event: 'domcontentloaded', listener: (page: Page$1) => any): this;
  /**
   * Emitted when attachment download started. User can access basic file operations on downloaded content via the
   * passed [Download](https://playwright.dev/docs/api/class-download) instance.
   */
  addListener(event: 'download', listener: (download: Download) => any): this;
  /**
   * Emitted when a file chooser is supposed to appear, such as after clicking the  `<input type=file>`. Playwright can
   * respond to it via setting the input files using
   * [fileChooser.setFiles(files[, options])](https://playwright.dev/docs/api/class-filechooser#file-chooser-set-files)
   * that can be uploaded after that.
   *
   * ```js
   * page.on('filechooser', async fileChooser => {
   *   await fileChooser.setFiles(path.join(__dirname, '/tmp/myfile.pdf'));
   * });
   * ```
   *
   */
  addListener(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this;
  /**
   * Emitted when a frame is attached.
   */
  addListener(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is detached.
   */
  addListener(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is navigated to a new url.
   */
  addListener(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
   */
  addListener(event: 'load', listener: (page: Page$1) => any): this;
  /**
   * Emitted when an uncaught exception happens within the page.
   *
   * ```js
   * // Log all uncaught errors to the terminal
   * page.on('pageerror', exception => {
   *   console.log(`Uncaught exception: "${exception}"`);
   * });
   *
   * // Navigate to a page with an exception.
   * await page.goto('data:text/html,<script>throw new Error("Test")</script>');
   * ```
   *
   */
  addListener(event: 'pageerror', listener: (error: Error) => any): this;
  /**
   * Emitted when the page opens a new tab or window. This event is emitted in addition to the
   * [browserContext.on('page')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but
   * only for popups relevant to this page.
   *
   * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a
   * popup with `window.open('http://example.com')`, this event will fire when the network request to
   * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen
   * to this network request, use
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * and
   * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request)
   * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page).
   *
   * ```js
   * // Start waiting for popup before clicking. Note no await.
   * const popupPromise = page.waitForEvent('popup');
   * await page.getByText('open the popup').click();
   * const popup = await popupPromise;
   * console.log(await popup.evaluate('location.href'));
   * ```
   *
   * **NOTE** Use
   * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to
   * wait until the page gets to a particular state (you should not need it in most cases).
   *
   */
  addListener(event: 'popup', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests,
   * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route).
   */
  addListener(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request fails, for example by timing out.
   *
   * ```js
   * page.on('requestfailed', request => {
   *   console.log(request.url() + ' ' + request.failure().errorText);
   * });
   * ```
   *
   * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request
   * will complete with
   * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished) event and not
   * with [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed). A request
   * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network
   * error net::ERR_FAILED.
   *
   */
  addListener(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request finishes successfully after downloading the response body. For a successful response, the
   * sequence of events is `request`, `response` and `requestfinished`.
   */
  addListener(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of
   * events is `request`, `response` and `requestfinished`.
   */
  addListener(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * Emitted when [WebSocket](https://playwright.dev/docs/api/class-websocket) request is sent.
   */
  addListener(event: 'websocket', listener: (webSocket: WebSocket) => any): this;
  /**
   * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned
   * by the page.
   */
  addListener(event: 'worker', listener: (worker: Worker) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'close', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'crash', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'domcontentloaded', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'download', listener: (download: Download) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'load', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'pageerror', listener: (error: Error) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'popup', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'websocket', listener: (webSocket: WebSocket) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'worker', listener: (worker: Worker) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'close', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'crash', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'domcontentloaded', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'download', listener: (download: Download) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'load', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'pageerror', listener: (error: Error) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'popup', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'websocket', listener: (webSocket: WebSocket) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'worker', listener: (worker: Worker) => any): this;
  /**
   * Emitted when the page closes.
   */
  prependListener(event: 'close', listener: (page: Page$1) => any): this;
  /**
   * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`.
   *
   * The arguments passed into `console.log` are available on the
   * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument.
   *
   * **Usage**
   *
   * ```js
   * page.on('console', async msg => {
   *   const values = [];
   *   for (const arg of msg.args())
   *     values.push(await arg.jsonValue());
   *   console.log(...values);
   * });
   * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));
   * ```
   *
   */
  prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page
   * crashes, ongoing and subsequent operations will throw.
   *
   * The most common way to deal with crashes is to catch an exception:
   *
   * ```js
   * try {
   *   // Crash might happen during a click.
   *   await page.click('button');
   *   // Or while waiting for an event.
   *   await page.waitForEvent('popup');
   * } catch (e) {
   *   // When the page crashes, exception message contains 'crash'.
   * }
   * ```
   *
   */
  prependListener(event: 'crash', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must**
   * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or
   * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page
   * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the
   * dialog, and actions like click will never finish.
   *
   * **Usage**
   *
   * ```js
   * page.on('dialog', dialog => dialog.accept());
   * ```
   *
   * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or
   * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog)
   * listeners are present, all dialogs are automatically dismissed.
   *
   */
  prependListener(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Emitted when the JavaScript
   * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched.
   */
  prependListener(event: 'domcontentloaded', listener: (page: Page$1) => any): this;
  /**
   * Emitted when attachment download started. User can access basic file operations on downloaded content via the
   * passed [Download](https://playwright.dev/docs/api/class-download) instance.
   */
  prependListener(event: 'download', listener: (download: Download) => any): this;
  /**
   * Emitted when a file chooser is supposed to appear, such as after clicking the  `<input type=file>`. Playwright can
   * respond to it via setting the input files using
   * [fileChooser.setFiles(files[, options])](https://playwright.dev/docs/api/class-filechooser#file-chooser-set-files)
   * that can be uploaded after that.
   *
   * ```js
   * page.on('filechooser', async fileChooser => {
   *   await fileChooser.setFiles(path.join(__dirname, '/tmp/myfile.pdf'));
   * });
   * ```
   *
   */
  prependListener(event: 'filechooser', listener: (fileChooser: FileChooser) => any): this;
  /**
   * Emitted when a frame is attached.
   */
  prependListener(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is detached.
   */
  prependListener(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is navigated to a new url.
   */
  prependListener(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
   */
  prependListener(event: 'load', listener: (page: Page$1) => any): this;
  /**
   * Emitted when an uncaught exception happens within the page.
   *
   * ```js
   * // Log all uncaught errors to the terminal
   * page.on('pageerror', exception => {
   *   console.log(`Uncaught exception: "${exception}"`);
   * });
   *
   * // Navigate to a page with an exception.
   * await page.goto('data:text/html,<script>throw new Error("Test")</script>');
   * ```
   *
   */
  prependListener(event: 'pageerror', listener: (error: Error) => any): this;
  /**
   * Emitted when the page opens a new tab or window. This event is emitted in addition to the
   * [browserContext.on('page')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but
   * only for popups relevant to this page.
   *
   * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a
   * popup with `window.open('http://example.com')`, this event will fire when the network request to
   * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen
   * to this network request, use
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * and
   * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request)
   * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page).
   *
   * ```js
   * // Start waiting for popup before clicking. Note no await.
   * const popupPromise = page.waitForEvent('popup');
   * await page.getByText('open the popup').click();
   * const popup = await popupPromise;
   * console.log(await popup.evaluate('location.href'));
   * ```
   *
   * **NOTE** Use
   * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to
   * wait until the page gets to a particular state (you should not need it in most cases).
   *
   */
  prependListener(event: 'popup', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests,
   * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route).
   */
  prependListener(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request fails, for example by timing out.
   *
   * ```js
   * page.on('requestfailed', request => {
   *   console.log(request.url() + ' ' + request.failure().errorText);
   * });
   * ```
   *
   * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request
   * will complete with
   * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished) event and not
   * with [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed). A request
   * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network
   * error net::ERR_FAILED.
   *
   */
  prependListener(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request finishes successfully after downloading the response body. For a successful response, the
   * sequence of events is `request`, `response` and `requestfinished`.
   */
  prependListener(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of
   * events is `request`, `response` and `requestfinished`.
   */
  prependListener(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * Emitted when [WebSocket](https://playwright.dev/docs/api/class-websocket) request is sent.
   */
  prependListener(event: 'websocket', listener: (webSocket: WebSocket) => any): this;
  /**
   * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned
   * by the page.
   */
  prependListener(event: 'worker', listener: (worker: Worker) => any): this;
  /**
   * When testing a web page, sometimes unexpected overlays like a "Sign up" dialog appear and block actions you want to
   * automate, e.g. clicking a button. These overlays don't always show up in the same way or at the same time, making
   * them tricky to handle in automated tests.
   *
   * This method lets you set up a special function, called a handler, that activates when it detects that overlay is
   * visible. The handler's job is to remove the overlay, allowing your test to continue as if the overlay wasn't there.
   *
   * Things to keep in mind:
   * - When an overlay is shown predictably, we recommend explicitly waiting for it in your test and dismissing it as
   *   a part of your normal test flow, instead of using
   *   [page.addLocatorHandler(locator, handler[, options])](https://playwright.dev/docs/api/class-page#page-add-locator-handler).
   * - Playwright checks for the overlay every time before executing or retrying an action that requires an
   *   [actionability check](https://playwright.dev/docs/actionability), or before performing an auto-waiting assertion check. When overlay
   *   is visible, Playwright calls the handler first, and then proceeds with the action/assertion. Note that the
   *   handler is only called when you perform an action/assertion - if the overlay becomes visible but you don't
   *   perform any actions, the handler will not be triggered.
   * - After executing the handler, Playwright will ensure that overlay that triggered the handler is not visible
   *   anymore. You can opt-out of this behavior with
   *   [`noWaitAfter`](https://playwright.dev/docs/api/class-page#page-add-locator-handler-option-no-wait-after).
   * - The execution time of the handler counts towards the timeout of the action/assertion that executed the handler.
   *   If your handler takes too long, it might cause timeouts.
   * - You can register multiple handlers. However, only a single handler will be running at a time. Make sure the
   *   actions within a handler don't depend on another handler.
   *
   * **NOTE** Running the handler will alter your page state mid-test. For example it will change the currently focused
   * element and move the mouse. Make sure that actions that run after the handler are self-contained and do not rely on
   * the focus and mouse state being unchanged.
   *
   * For example, consider a test that calls
   * [locator.focus([options])](https://playwright.dev/docs/api/class-locator#locator-focus) followed by
   * [keyboard.press(key[, options])](https://playwright.dev/docs/api/class-keyboard#keyboard-press). If your handler
   * clicks a button between these two actions, the focused element most likely will be wrong, and key press will happen
   * on the unexpected element. Use
   * [locator.press(key[, options])](https://playwright.dev/docs/api/class-locator#locator-press) instead to avoid this
   * problem.
   *
   * Another example is a series of mouse actions, where
   * [mouse.move(x, y[, options])](https://playwright.dev/docs/api/class-mouse#mouse-move) is followed by
   * [mouse.down([options])](https://playwright.dev/docs/api/class-mouse#mouse-down). Again, when the handler runs
   * between these two actions, the mouse position will be wrong during the mouse down. Prefer self-contained actions
   * like [locator.click([options])](https://playwright.dev/docs/api/class-locator#locator-click) that do not rely on
   * the state being unchanged by a handler.
   *
   * **Usage**
   *
   * An example that closes a "Sign up to the newsletter" dialog when it appears:
   *
   * ```js
   * // Setup the handler.
   * await page.addLocatorHandler(page.getByText('Sign up to the newsletter'), async () => {
   *   await page.getByRole('button', { name: 'No thanks' }).click();
   * });
   *
   * // Write the test as usual.
   * await page.goto('https://example.com');
   * await page.getByRole('button', { name: 'Start here' }).click();
   * ```
   *
   * An example that skips the "Confirm your security details" page when it is shown:
   *
   * ```js
   * // Setup the handler.
   * await page.addLocatorHandler(page.getByText('Confirm your security details'), async () => {
   *   await page.getByRole('button', { name: 'Remind me later' }).click();
   * });
   *
   * // Write the test as usual.
   * await page.goto('https://example.com');
   * await page.getByRole('button', { name: 'Start here' }).click();
   * ```
   *
   * An example with a custom callback on every actionability check. It uses a `<body>` locator that is always visible,
   * so the handler is called before every actionability check. It is important to specify
   * [`noWaitAfter`](https://playwright.dev/docs/api/class-page#page-add-locator-handler-option-no-wait-after), because
   * the handler does not hide the `<body>` element.
   *
   * ```js
   * // Setup the handler.
   * await page.addLocatorHandler(page.locator('body'), async () => {
   *   await page.evaluate(() => window.removeObstructionsForTestIfNeeded());
   * }, { noWaitAfter: true });
   *
   * // Write the test as usual.
   * await page.goto('https://example.com');
   * await page.getByRole('button', { name: 'Start here' }).click();
   * ```
   *
   * Handler takes the original locator as an argument. You can also automatically remove the handler after a number of
   * invocations by setting [`times`](https://playwright.dev/docs/api/class-page#page-add-locator-handler-option-times):
   *
   * ```js
   * await page.addLocatorHandler(page.getByLabel('Close'), async locator => {
   *   await locator.click();
   * }, { times: 1 });
   * ```
   *
   * @param locator Locator that triggers the handler.
   * @param handler Function that should be run once
   * [`locator`](https://playwright.dev/docs/api/class-page#page-add-locator-handler-option-locator) appears. This
   * function should get rid of the element that blocks actions like click.
   * @param options
   */
  addLocatorHandler(locator: Locator, handler: ((locator: Locator) => Promise<any>), options?: {
    /**
     * By default, after calling the handler Playwright will wait until the overlay becomes hidden, and only then
     * Playwright will continue with the action/assertion that triggered the handler. This option allows to opt-out of
     * this behavior, so that overlay can stay visible after the handler has run.
     */
    noWaitAfter?: boolean;
    /**
     * Specifies the maximum number of times this handler should be called. Unlimited by default.
     */
    times?: number;
  }): Promise<void>;
  /**
   * Adds a `<script>` tag into the page with the desired url or content. Returns the added tag when the script's onload
   * fires or when the script content was injected into frame.
   * @param options
   */
  addScriptTag(options?: {
    /**
     * Raw JavaScript content to be injected into frame.
     */
    content?: string;
    /**
     * Path to the JavaScript file to be injected into frame. If `path` is a relative path, then it is resolved relative
     * to the current working directory.
     */
    path?: string;
    /**
     * Script type. Use 'module' in order to load a JavaScript ES6 module. See
     * [script](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script) for more details.
     */
    type?: string;
    /**
     * URL of a script to be added.
     */
    url?: string;
  }): Promise<ElementHandle>;
  /**
   * Adds a `<link rel="stylesheet">` tag into the page with the desired url or a `<style type="text/css">` tag with the
   * content. Returns the added tag when the stylesheet's onload fires or when the CSS content was injected into frame.
   * @param options
   */
  addStyleTag(options?: {
    /**
     * Raw CSS content to be injected into frame.
     */
    content?: string;
    /**
     * Path to the CSS file to be injected into frame. If `path` is a relative path, then it is resolved relative to the
     * current working directory.
     */
    path?: string;
    /**
     * URL of the `<link>` tag.
     */
    url?: string;
  }): Promise<ElementHandle>;
  /**
   * Captures the aria snapshot of the page. Read more about [aria snapshots](https://playwright.dev/docs/aria-snapshots).
   * @param options
   */
  ariaSnapshot(options?: {
    /**
     * When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are
     * relative to the viewport, in CSS pixels, as returned by
     * [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
     * Defaults to `false`.
     */
    boxes?: boolean;
    /**
     * When specified, limits the depth of the snapshot.
     */
    depth?: number;
    /**
     * When set to `"ai"`, returns a snapshot optimized for AI consumption: including element references like `[ref=e2]`
     * and snapshots of `<iframe>`s. Defaults to `"default"`.
     */
    mode?: "ai" | "default";
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * Brings page to front (activates tab).
   */
  bringToFront(): Promise<void>;
  /**
   * Cancels an ongoing [page.pickLocator()](https://playwright.dev/docs/api/class-page#page-pick-locator) call by
   * deactivating pick locator mode. If no pick locator mode is active, this method is a no-op.
   */
  cancelPickLocator(): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.check([options])](https://playwright.dev/docs/api/class-locator#locator-check) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method checks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-page#page-check-option-selector) by performing the following
   * steps:
   * 1. Find an element matching [`selector`](https://playwright.dev/docs/api/class-page#page-check-option-selector).
   *    If there is none, wait until a matching element is attached to the DOM.
   * 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws. If the element is
   *    already checked, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-page#page-check-option-force) option is set. If the element
   *    is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now checked. If not, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-check-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  check(selector: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Clears all stored console messages from this page. Subsequent calls to
   * [page.consoleMessages([options])](https://playwright.dev/docs/api/class-page#page-console-messages) will only
   * return messages logged after the clear.
   */
  clearConsoleMessages(): Promise<void>;
  /**
   * Clears all stored page errors from this page. Subsequent calls to
   * [page.pageErrors([options])](https://playwright.dev/docs/api/class-page#page-page-errors) will only return errors
   * thrown after the clear.
   */
  clearPageErrors(): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.click([options])](https://playwright.dev/docs/api/class-locator#locator-click) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method clicks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-page#page-click-option-selector) by performing the following
   * steps:
   * 1. Find an element matching [`selector`](https://playwright.dev/docs/api/class-page#page-click-option-selector).
   *    If there is none, wait until a matching element is attached to the DOM.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-page#page-click-option-force) option is set. If the element
   *    is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-page#page-click-option-position).
   * 1. Wait for initiated navigations to either succeed or fail, unless
   *    [`noWaitAfter`](https://playwright.dev/docs/api/class-page#page-click-option-no-wait-after) option is set.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-click-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  click(selector: string, options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * defaults to 1. See [UIEvent.detail].
     */
    clickCount?: number;
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading. You
     * can opt out of waiting via setting this flag. You would only need this option in the exceptional cases such as
     * navigating to inaccessible pages. Defaults to `false`.
     * @deprecated This option will default to `true` in the future.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * If [`runBeforeUnload`](https://playwright.dev/docs/api/class-page#page-close-option-run-before-unload) is `false`,
   * does not run any unload handlers and waits for the page to be closed. If
   * [`runBeforeUnload`](https://playwright.dev/docs/api/class-page#page-close-option-run-before-unload) is `true` the
   * method will run unload handlers, but will **not** wait for the page to close.
   *
   * By default, `page.close()` **does not** run `beforeunload` handlers.
   *
   * **NOTE** if [`runBeforeUnload`](https://playwright.dev/docs/api/class-page#page-close-option-run-before-unload) is
   * passed as true, a `beforeunload` dialog might be summoned and should be handled manually via
   * [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) event.
   *
   * @param options
   */
  close(options?: {
    /**
     * The reason to be reported to the operations interrupted by the page closure.
     */
    reason?: string;
    /**
     * Defaults to `false`. Whether to run the
     * [before unload](https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload) page handlers.
     */
    runBeforeUnload?: boolean;
  }): Promise<void>;
  /**
   * Returns up to (currently) 200 last console messages from this page. See
   * [page.on('console')](https://playwright.dev/docs/api/class-page#page-event-console) for more details.
   * @param options
   */
  consoleMessages(options?: {
    /**
     * Controls which messages are returned:
     */
    filter?: "all" | "since-navigation";
  }): Promise<Array<ConsoleMessage$1>>;
  /**
   * Gets the full HTML contents of the page, including the doctype.
   */
  content(): Promise<string>;
  /**
   * Get the browser context that the page belongs to.
   */
  context(): BrowserContext;
  /**
   * **NOTE** Use locator-based [locator.dblclick([options])](https://playwright.dev/docs/api/class-locator#locator-dblclick)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method double clicks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-page#page-dblclick-option-selector) by performing the following
   * steps:
   * 1. Find an element matching
   *    [`selector`](https://playwright.dev/docs/api/class-page#page-dblclick-option-selector). If there is none,
   *    wait until a matching element is attached to the DOM.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-page#page-dblclick-option-force) option is set. If the
   *    element is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to double click in the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-page#page-dblclick-option-position).
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-dblclick-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   *
   * **NOTE** `page.dblclick()` dispatches two `click` events and a single `dblclick` event.
   *
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  dblclick(selector: string, options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.dispatchEvent(type[, eventInit, options])](https://playwright.dev/docs/api/class-locator#locator-dispatch-event)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The snippet below dispatches the `click` event on the element. Regardless of the visibility state of the element,
   * `click` is dispatched. This is equivalent to calling
   * [element.click()](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
   *
   * **Usage**
   *
   * ```js
   * await page.dispatchEvent('button#submit', 'click');
   * ```
   *
   * Under the hood, it creates an instance of an event based on the given
   * [`type`](https://playwright.dev/docs/api/class-page#page-dispatch-event-option-type), initializes it with
   * [`eventInit`](https://playwright.dev/docs/api/class-page#page-dispatch-event-option-event-init) properties and
   * dispatches it on the element. Events are `composed`, `cancelable` and bubble by default.
   *
   * Since [`eventInit`](https://playwright.dev/docs/api/class-page#page-dispatch-event-option-event-init) is
   * event-specific, please refer to the events documentation for the lists of initial properties:
   * - [DeviceMotionEvent](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent/DeviceMotionEvent)
   * - [DeviceOrientationEvent](https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent)
   * - [DragEvent](https://developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
   * - [Event](https://developer.mozilla.org/en-US/docs/Web/API/Event/Event)
   * - [FocusEvent](https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
   * - [KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
   * - [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
   * - [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
   * - [TouchEvent](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
   * - [WheelEvent](https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent)
   *
   * You can also specify `JSHandle` as the property value if you want live objects to be passed into the event:
   *
   * ```js
   * // Note you can only create DataTransfer in Chromium and Firefox
   * const dataTransfer = await page.evaluateHandle(() => new DataTransfer());
   * await page.dispatchEvent('#source', 'dragstart', { dataTransfer });
   * ```
   *
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param type DOM event type: `"click"`, `"dragstart"`, etc.
   * @param eventInit Optional event-specific initialization properties.
   * @param options
   */
  dispatchEvent(selector: string, type: string, eventInit?: EvaluationArgument, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * This method drags the source element to the target element. It will first move to the source element, perform a
   * `mousedown`, then move to the target element and perform a `mouseup`.
   *
   * **Usage**
   *
   * ```js
   * await page.dragAndDrop('#source', '#target');
   * // or specify exact positions relative to the top-left corners of the elements:
   * await page.dragAndDrop('#source', '#target', {
   *   sourcePosition: { x: 34, y: 7 },
   *   targetPosition: { x: 10, y: 20 },
   * });
   * ```
   *
   * @param source A selector to search for an element to drag. If there are multiple elements satisfying the selector, the first will
   * be used.
   * @param target A selector to search for an element to drop onto. If there are multiple elements satisfying the selector, the first
   * will be used.
   * @param options
   */
  dragAndDrop(source: string, target: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Clicks on the source element at this point relative to the top-left corner of the element's padding box. If not
     * specified, some visible point of the element is used.
     */
    sourcePosition?: {
      x: number;
      y: number;
    };
    /**
     * Defaults to 1. Sends `n` interpolated `mousemove` events to represent travel between the `mousedown` and `mouseup`
     * of the drag. When set to 1, emits a single `mousemove` event at the destination location.
     */
    steps?: number;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Drops on the target element at this point relative to the top-left corner of the element's padding box. If not
     * specified, some visible point of the element is used.
     */
    targetPosition?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * This method changes the `CSS media type` through the `media` argument, and/or the `'prefers-colors-scheme'` media
   * feature, using the `colorScheme` argument.
   *
   * **Usage**
   *
   * ```js
   * await page.evaluate(() => matchMedia('screen').matches);
   * // → true
   * await page.evaluate(() => matchMedia('print').matches);
   * // → false
   *
   * await page.emulateMedia({ media: 'print' });
   * await page.evaluate(() => matchMedia('screen').matches);
   * // → false
   * await page.evaluate(() => matchMedia('print').matches);
   * // → true
   *
   * await page.emulateMedia({});
   * await page.evaluate(() => matchMedia('screen').matches);
   * // → true
   * await page.evaluate(() => matchMedia('print').matches);
   * // → false
   * ```
   *
   * ```js
   * await page.emulateMedia({ colorScheme: 'dark' });
   * await page.evaluate(() => matchMedia('(prefers-color-scheme: dark)').matches);
   * // → true
   * await page.evaluate(() => matchMedia('(prefers-color-scheme: light)').matches);
   * // → false
   * ```
   *
   * @param options
   */
  emulateMedia(options?: {
    /**
     * Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
     * media feature, supported values are `'light'` and `'dark'`. Passing `null` disables color scheme emulation.
     * `'no-preference'` is deprecated.
     */
    colorScheme?: null | "light" | "dark" | "no-preference";
    /**
     * Emulates `'prefers-contrast'` media feature, supported values are `'no-preference'`, `'more'`. Passing `null`
     * disables contrast emulation.
     */
    contrast?: null | "no-preference" | "more";
    /**
     * Emulates `'forced-colors'` media feature, supported values are `'active'` and `'none'`. Passing `null` disables
     * forced colors emulation.
     */
    forcedColors?: null | "active" | "none";
    /**
     * Changes the CSS media type of the page. The only allowed values are `'screen'`, `'print'` and `null`. Passing
     * `null` disables CSS media emulation.
     */
    media?: null | "screen" | "print";
    /**
     * Emulates `'prefers-reduced-motion'` media feature, supported values are `'reduce'`, `'no-preference'`. Passing
     * `null` disables reduced motion emulation.
     */
    reducedMotion?: null | "reduce" | "no-preference";
  }): Promise<void>;
  /**
   * The method adds a function called
   * [`name`](https://playwright.dev/docs/api/class-page#page-expose-function-option-name) on the `window` object of
   * every frame in the page. When called, the function executes
   * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-function-option-callback) and returns a
   * [Promise] which resolves to the return value of
   * [`callback`](https://playwright.dev/docs/api/class-page#page-expose-function-option-callback).
   *
   * If the [`callback`](https://playwright.dev/docs/api/class-page#page-expose-function-option-callback) returns a
   * [Promise], it will be awaited.
   *
   * See
   * [browserContext.exposeFunction(name, callback)](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-function)
   * for context-wide exposed function.
   *
   * **NOTE** Functions installed via
   * [page.exposeFunction(name, callback)](https://playwright.dev/docs/api/class-page#page-expose-function) survive
   * navigations.
   *
   * **Usage**
   *
   * An example of adding a `sha256` function to the page:
   *
   * ```js
   * const { webkit } = require('playwright');  // Or 'chromium' or 'firefox'.
   * const crypto = require('crypto');
   *
   * (async () => {
   *   const browser = await webkit.launch({ headless: false });
   *   const page = await browser.newPage();
   *   await page.exposeFunction('sha256', text =>
   *     crypto.createHash('sha256').update(text).digest('hex'),
   *   );
   *   await page.setContent(`
   *     <script>
   *       async function onClick() {
   *         document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
   *       }
   *     </script>
   *     <button onclick="onClick()">Click me</button>
   *     <div></div>
   *   `);
   *   await page.click('button');
   * })();
   * ```
   *
   * @param name Name of the function on the window object
   * @param callback Callback function which will be called in Playwright's context.
   */
  exposeFunction(name: string, callback: Function): Promise<Disposable>;
  /**
   * **NOTE** Use locator-based [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method waits for an element matching
   * [`selector`](https://playwright.dev/docs/api/class-page#page-fill-option-selector), waits for
   * [actionability](https://playwright.dev/docs/actionability) checks, focuses the element, fills it and triggers an `input` event after
   * filling. Note that you can pass an empty string to clear the input field.
   *
   * If the target element is not an `<input>`, `<textarea>` or `[contenteditable]` element, this method throws an
   * error. However, if the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be filled
   * instead.
   *
   * To send fine-grained keyboard events, use
   * [locator.pressSequentially(text[, options])](https://playwright.dev/docs/api/class-locator#locator-press-sequentially).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param value Value to fill for the `<input>`, `<textarea>` or `[contenteditable]` element.
   * @param options
   */
  fill(selector: string, value: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.focus([options])](https://playwright.dev/docs/api/class-locator#locator-focus) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method fetches an element with
   * [`selector`](https://playwright.dev/docs/api/class-page#page-focus-option-selector) and focuses it. If there's no
   * element matching [`selector`](https://playwright.dev/docs/api/class-page#page-focus-option-selector), the method
   * waits until a matching element appears in the DOM.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  focus(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Returns frame matching the specified criteria. Either `name` or `url` must be specified.
   *
   * **Usage**
   *
   * ```js
   * const frame = page.frame('frame-name');
   * ```
   *
   * ```js
   * const frame = page.frame({ url: /.*domain.*\/ });
   * ```
   *
   * @param frameSelector Frame name or other frame lookup options.
   */
  frame(frameSelector: string | {
    /**
     * Frame name specified in the `iframe`'s `name` attribute. Optional.
     */
    name?: string;
    /**
     * A glob pattern, regex pattern, URL pattern, or predicate receiving frame's `url` as a [URL] object. Optional.
     */
    url?: string | RegExp | URLPattern | ((url: URL) => boolean);
  }): null | Frame$1;
  /**
   * When working with iframes, you can create a frame locator that will enter the iframe and allow selecting elements
   * in that iframe.
   *
   * **Usage**
   *
   * Following snippet locates element with text "Submit" in the iframe with id `my-frame`, like `<iframe
   * id="my-frame">`:
   *
   * ```js
   * const locator = page.frameLocator('#my-iframe').getByText('Submit');
   * await locator.click();
   * ```
   *
   * @param selector A selector to use when resolving DOM element.
   */
  frameLocator(selector: string): FrameLocator;
  /**
   * An array of all frames attached to the page.
   */
  frames(): Array<Frame$1>;
  /**
   * **NOTE** Use locator-based
   * [locator.getAttribute(name[, options])](https://playwright.dev/docs/api/class-locator#locator-get-attribute)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns element attribute value.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param name Attribute name to get the value for.
   * @param options
   */
  getAttribute(selector: string, name: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<null | string>;
  /**
   * Allows locating elements by their alt text.
   *
   * **Usage**
   *
   * For example, this method will find the image by alt text "Playwright logo":
   *
   * ```html
   * <img alt='Playwright logo'>
   * ```
   *
   * ```js
   * await page.getByAltText('Playwright logo').click();
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByAltText(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating input elements by the text of the associated `<label>` or `aria-labelledby` element, or by the
   * `aria-label` attribute.
   *
   * **Usage**
   *
   * For example, this method will find inputs by label "Username" and "Password" in the following DOM:
   *
   * ```html
   * <input aria-label="Username">
   * <label for="password-input">Password:</label>
   * <input id="password-input">
   * ```
   *
   * ```js
   * await page.getByLabel('Username').fill('john');
   * await page.getByLabel('Password').fill('secret');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByLabel(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating input elements by the placeholder text.
   *
   * **Usage**
   *
   * For example, consider the following DOM structure.
   *
   * ```html
   * <input type="email" placeholder="name@example.com" />
   * ```
   *
   * You can fill the input after locating it by the placeholder text:
   *
   * ```js
   * await page
   *     .getByPlaceholder('name@example.com')
   *     .fill('playwright@microsoft.com');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByPlaceholder(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating elements by their [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles),
   * [ARIA attributes](https://www.w3.org/TR/wai-aria-1.2/#aria-attributes) and
   * [accessible name](https://w3c.github.io/accname/#dfn-accessible-name).
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <h3>Sign up</h3>
   * <label>
   *   <input type="checkbox" /> Subscribe
   * </label>
   * <br/>
   * <button>Submit</button>
   * ```
   *
   * You can locate each element by its implicit role:
   *
   * ```js
   * await expect(page.getByRole('heading', { name: 'Sign up' })).toBeVisible();
   *
   * await page.getByRole('checkbox', { name: 'Subscribe' }).check();
   *
   * await page.getByRole('button', { name: /submit/i }).click();
   * ```
   *
   * **Details**
   *
   * Role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback
   * about the ARIA guidelines.
   *
   * Many html elements have an implicitly [defined role](https://w3c.github.io/html-aam/#html-element-role-mappings)
   * that is recognized by the role selector. You can find all the
   * [supported roles here](https://www.w3.org/TR/wai-aria-1.2/#role_definitions). ARIA guidelines **do not recommend**
   * duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values.
   * @param role Required aria role.
   * @param options
   */
  getByRole(role: "alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "insertion" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "meter" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem", options?: {
    /**
     * An attribute that is usually set by `aria-checked` or native `<input type=checkbox>` controls.
     *
     * Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked).
     */
    checked?: boolean;
    /**
     * Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By
     * default, matching is case-insensitive and searches for a substring, use
     * [`exact`](https://playwright.dev/docs/api/class-page#page-get-by-role-option-exact) to control this behavior.
     *
     * Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description).
     */
    description?: string | RegExp;
    /**
     * An attribute that is usually set by `aria-disabled` or `disabled`.
     *
     * **NOTE** Unlike most other attributes, `disabled` is inherited through the DOM hierarchy. Learn more about
     * [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.2/#aria-disabled).
     *
     */
    disabled?: boolean;
    /**
     * Whether [`name`](https://playwright.dev/docs/api/class-page#page-get-by-role-option-name) and
     * [`description`](https://playwright.dev/docs/api/class-page#page-get-by-role-option-description) are matched
     * exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note
     * that exact match still trims whitespace.
     */
    exact?: boolean;
    /**
     * An attribute that is usually set by `aria-expanded`.
     *
     * Learn more about [`aria-expanded`](https://www.w3.org/TR/wai-aria-1.2/#aria-expanded).
     */
    expanded?: boolean;
    /**
     * Option that controls whether hidden elements are matched. By default, only non-hidden elements, as
     * [defined by ARIA](https://www.w3.org/TR/wai-aria-1.2/#tree_exclusion), are matched by role selector.
     *
     * Learn more about [`aria-hidden`](https://www.w3.org/TR/wai-aria-1.2/#aria-hidden).
     */
    includeHidden?: boolean;
    /**
     * A number attribute that is usually present for roles `heading`, `listitem`, `row`, `treeitem`, with default values
     * for `<h1>-<h6>` elements.
     *
     * Learn more about [`aria-level`](https://www.w3.org/TR/wai-aria-1.2/#aria-level).
     */
    level?: number;
    /**
     * Option to match the [accessible name](https://w3c.github.io/accname/#dfn-accessible-name). By default, matching is
     * case-insensitive and searches for a substring, use
     * [`exact`](https://playwright.dev/docs/api/class-page#page-get-by-role-option-exact) to control this behavior.
     *
     * Learn more about [accessible name](https://w3c.github.io/accname/#dfn-accessible-name).
     */
    name?: string | RegExp;
    /**
     * An attribute that is usually set by `aria-pressed`.
     *
     * Learn more about [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.2/#aria-pressed).
     */
    pressed?: boolean;
    /**
     * An attribute that is usually set by `aria-selected`.
     *
     * Learn more about [`aria-selected`](https://www.w3.org/TR/wai-aria-1.2/#aria-selected).
     */
    selected?: boolean;
  }): Locator;
  /**
   * Locate element by the test id.
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <button data-testid="directions">Itinéraire</button>
   * ```
   *
   * You can locate the element by its test id:
   *
   * ```js
   * await page.getByTestId('directions').click();
   * ```
   *
   * **Details**
   *
   * By default, the `data-testid` attribute is used as a test id. Use
   * [selectors.setTestIdAttribute(attributeName)](https://playwright.dev/docs/api/class-selectors#selectors-set-test-id-attribute)
   * to configure a different test id attribute if necessary.
   *
   * ```js
   * // Set custom test id attribute from @playwright/test config:
   * import { defineConfig } from '@playwright/test';
   *
   * export default defineConfig({
   *   use: {
   *     testIdAttribute: 'data-pw'
   *   },
   * });
   * ```
   *
   * @param testId Id to locate the element by.
   */
  getByTestId(testId: string | RegExp): Locator;
  /**
   * Allows locating elements that contain given text.
   *
   * See also [locator.filter([options])](https://playwright.dev/docs/api/class-locator#locator-filter) that allows to
   * match by another criteria, like an accessible role, and then filter by the text content.
   *
   * **Usage**
   *
   * Consider the following DOM structure:
   *
   * ```html
   * <div>Hello <span>world</span></div>
   * <div>Hello</div>
   * ```
   *
   * You can locate by text substring, exact string, or a regular expression:
   *
   * ```js
   * // Matches <span>
   * page.getByText('world');
   *
   * // Matches first <div>
   * page.getByText('Hello world');
   *
   * // Matches second <div>
   * page.getByText('Hello', { exact: true });
   *
   * // Matches both <div>s
   * page.getByText(/Hello/);
   *
   * // Matches second <div>
   * page.getByText(/^hello$/i);
   * ```
   *
   * **Details**
   *
   * Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into
   * one, turns line breaks into spaces and ignores leading and trailing whitespace.
   *
   * Input elements of the type `button` and `submit` are matched by their `value` instead of the text content. For
   * example, locating by text `"Log in"` matches `<input type=button value="Log in">`.
   * @param text Text to locate the element for.
   * @param options
   */
  getByText(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating elements by their title attribute.
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <span title='Issues count'>25 issues</span>
   * ```
   *
   * You can check the issues count after locating it by the title text:
   *
   * ```js
   * await expect(page.getByTitle('Issues count')).toHaveText('25 issues');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByTitle(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Returns the main resource response. In case of multiple redirects, the navigation will resolve with the response of
   * the last redirect. If cannot go back, returns `null`.
   *
   * Navigate to the previous page in history.
   * @param options
   */
  goBack(options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<null | Response$1>;
  /**
   * Returns the main resource response. In case of multiple redirects, the navigation will resolve with the response of
   * the last redirect. If cannot go forward, returns `null`.
   *
   * Navigate to the next page in history.
   * @param options
   */
  goForward(options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<null | Response$1>;
  /**
   * Returns the main resource response. In case of multiple redirects, the navigation will resolve with the first
   * non-redirect response.
   *
   * The method will throw an error if:
   * - there's an SSL error (e.g. in case of self-signed certificates).
   * - target URL is invalid.
   * - the [`timeout`](https://playwright.dev/docs/api/class-page#page-goto-option-timeout) is exceeded during
   *   navigation.
   * - the remote server does not respond or is unreachable.
   * - the main resource failed to load.
   *
   * The method will not throw an error when any valid HTTP status code is returned by the remote server, including 404
   * "Not Found" and 500 "Internal Server Error".  The status code for such responses can be retrieved by calling
   * [response.status()](https://playwright.dev/docs/api/class-response#response-status).
   *
   * **NOTE** The method either throws an error or returns a main resource response. The only exceptions are navigation
   * to `about:blank` or navigation to the same URL with a different hash, which would succeed and return `null`.
   *
   * **NOTE** Headless mode doesn't support navigation to a PDF document. See the
   * [upstream issue](https://bugs.chromium.org/p/chromium/issues/detail?id=761295).
   *
   * @param url URL to navigate page to. The url should include scheme, e.g. `https://`. When a
   * [`baseURL`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-base-url) via the context
   * options was provided and the passed URL is a path, it gets merged via the
   * [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor.
   * @param options
   */
  goto(url: string, options?: {
    /**
     * Referer header value. If provided it will take preference over the referer header value set by
     * [page.setExtraHTTPHeaders(headers)](https://playwright.dev/docs/api/class-page#page-set-extra-http-headers).
     */
    referer?: string;
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<null | Response$1>;
  /**
   * Hide all locator highlight overlays previously added by
   * [locator.highlight([options])](https://playwright.dev/docs/api/class-locator#locator-highlight) on this page.
   */
  hideHighlight(): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.hover([options])](https://playwright.dev/docs/api/class-locator#locator-hover) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method hovers over an element matching
   * [`selector`](https://playwright.dev/docs/api/class-page#page-hover-option-selector) by performing the following
   * steps:
   * 1. Find an element matching [`selector`](https://playwright.dev/docs/api/class-page#page-hover-option-selector).
   *    If there is none, wait until a matching element is attached to the DOM.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-page#page-hover-option-force) option is set. If the element
   *    is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to hover over the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-page#page-hover-option-position).
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-hover-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  hover(selector: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.innerHTML([options])](https://playwright.dev/docs/api/class-locator#locator-inner-html)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns `element.innerHTML`.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  innerHTML(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * **NOTE** Use locator-based [locator.innerText([options])](https://playwright.dev/docs/api/class-locator#locator-inner-text)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns `element.innerText`.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  innerText(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * **NOTE** Use locator-based
   * [locator.inputValue([options])](https://playwright.dev/docs/api/class-locator#locator-input-value) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
   *
   * Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the
   * control.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  inputValue(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * **NOTE** Use locator-based [locator.isChecked([options])](https://playwright.dev/docs/api/class-locator#locator-is-checked)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isChecked(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * Indicates that the page has been closed.
   */
  isClosed(): boolean;
  /**
   * **NOTE** Use locator-based
   * [locator.isDisabled([options])](https://playwright.dev/docs/api/class-locator#locator-is-disabled) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is disabled, the opposite of [enabled](https://playwright.dev/docs/actionability#enabled).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isDisabled(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * **NOTE** Use locator-based
   * [locator.isEditable([options])](https://playwright.dev/docs/api/class-locator#locator-is-editable) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is [editable](https://playwright.dev/docs/actionability#editable).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isEditable(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * **NOTE** Use locator-based [locator.isEnabled([options])](https://playwright.dev/docs/api/class-locator#locator-is-enabled)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is [enabled](https://playwright.dev/docs/actionability#enabled).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isEnabled(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * **NOTE** Use locator-based [locator.isHidden([options])](https://playwright.dev/docs/api/class-locator#locator-is-hidden)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is hidden, the opposite of [visible](https://playwright.dev/docs/actionability#visible).
   * [`selector`](https://playwright.dev/docs/api/class-page#page-is-hidden-option-selector) that does not match any
   * elements is considered hidden.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isHidden(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * @deprecated This option is ignored.
     * [page.isHidden(selector[, options])](https://playwright.dev/docs/api/class-page#page-is-hidden) does not wait for
     * the element to become hidden and returns immediately.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * **NOTE** Use locator-based [locator.isVisible([options])](https://playwright.dev/docs/api/class-locator#locator-is-visible)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is [visible](https://playwright.dev/docs/actionability#visible).
   * [`selector`](https://playwright.dev/docs/api/class-page#page-is-visible-option-selector) that does not match any
   * elements is considered not visible.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isVisible(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * @deprecated This option is ignored.
     * [page.isVisible(selector[, options])](https://playwright.dev/docs/api/class-page#page-is-visible) does not wait for
     * the element to become visible and returns immediately.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * The method returns an element locator that can be used to perform actions on this page / frame. Locator is resolved
   * to the element immediately before performing an action, so a series of actions on the same locator can in fact be
   * performed on different DOM elements. That would happen if the DOM structure between those actions has changed.
   *
   * [Learn more about locators](https://playwright.dev/docs/locators).
   * @param selector A selector to use when resolving DOM element.
   * @param options
   */
  locator(selector: string, options?: {
    /**
     * Narrows down the results of the method to those which contain elements matching this relative locator. For example,
     * `article` that has `text=Playwright` matches `<article><div>Playwright</div></article>`.
     *
     * Inner locator **must be relative** to the outer locator and is queried starting with the outer locator match, not
     * the document root. For example, you can find `content` that has `div` in
     * `<article><content><div>Playwright</div></content></article>`. However, looking for `content` that has `article
     * div` will fail, because the inner locator must be relative and should not use any elements outside the `content`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    has?: Locator;
    /**
     * Matches elements that do not contain an element that matches an inner locator. Inner locator is queried against the
     * outer one. For example, `article` that does not have `div` matches `<article><span>Playwright</span></article>`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    hasNot?: Locator;
    /**
     * Matches elements that do not contain specified text somewhere inside, possibly in a child or a descendant element.
     * When passed a [string], matching is case-insensitive and searches for a substring.
     */
    hasNotText?: string | RegExp;
    /**
     * Matches elements containing specified text somewhere inside, possibly in a child or a descendant element. When
     * passed a [string], matching is case-insensitive and searches for a substring. For example, `"Playwright"` matches
     * `<article><div>Playwright</div></article>`.
     */
    hasText?: string | RegExp;
  }): Locator;
  /**
   * The page's main frame. Page is guaranteed to have a main frame which persists during navigations.
   */
  mainFrame(): Frame$1;
  /**
   * Returns the opener for popup pages and `null` for others. If the opener has been closed already the returns `null`.
   */
  opener(): Promise<null | Page$1>;
  /**
   * Returns up to (currently) 200 last page errors from this page. See
   * [page.on('pageerror')](https://playwright.dev/docs/api/class-page#page-event-page-error) for more details.
   * @param options
   */
  pageErrors(options?: {
    /**
     * Controls which errors are returned:
     */
    filter?: "all" | "since-navigation";
  }): Promise<Array<Error>>;
  /**
   * Pauses script execution. Playwright will stop executing the script and wait for the user to either press the
   * 'Resume' button in the page overlay or to call `playwright.resume()` in the DevTools console.
   *
   * User can inspect selectors or perform manual steps while paused. Resume will continue running the original script
   * from the place it was paused.
   *
   * **NOTE** This method requires Playwright to be started in a headed mode, with a falsy
   * [`headless`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-headless) option.
   *
   */
  pause(): Promise<void>;
  /**
   * Returns the PDF buffer.
   *
   * `page.pdf()` generates a pdf of the page with `print` css media. To generate a pdf with `screen` media, call
   * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) before calling
   * `page.pdf()`:
   *
   * **NOTE** By default, `page.pdf()` generates a pdf with modified colors for printing. Use the
   * [`-webkit-print-color-adjust`](https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-print-color-adjust)
   * property to force rendering of exact colors.
   *
   * **Usage**
   *
   * ```js
   * // Generates a PDF with 'screen' media type.
   * await page.emulateMedia({ media: 'screen' });
   * await page.pdf({ path: 'page.pdf' });
   * ```
   *
   * The [`width`](https://playwright.dev/docs/api/class-page#page-pdf-option-width),
   * [`height`](https://playwright.dev/docs/api/class-page#page-pdf-option-height), and
   * [`margin`](https://playwright.dev/docs/api/class-page#page-pdf-option-margin) options accept values labeled with
   * units. Unlabeled values are treated as pixels.
   *
   * A few examples:
   * - `page.pdf({width: 100})` - prints with width set to 100 pixels
   * - `page.pdf({width: '100px'})` - prints with width set to 100 pixels
   * - `page.pdf({width: '10cm'})` - prints with width set to 10 centimeters.
   *
   * All possible units are:
   * - `px` - pixel
   * - `in` - inch
   * - `cm` - centimeter
   * - `mm` - millimeter
   *
   * The [`format`](https://playwright.dev/docs/api/class-page#page-pdf-option-format) options are:
   * - `Letter`: 8.5in x 11in
   * - `Legal`: 8.5in x 14in
   * - `Tabloid`: 11in x 17in
   * - `Ledger`: 17in x 11in
   * - `A0`: 33.1in x 46.8in
   * - `A1`: 23.4in x 33.1in
   * - `A2`: 16.54in x 23.4in
   * - `A3`: 11.7in x 16.54in
   * - `A4`: 8.27in x 11.7in
   * - `A5`: 5.83in x 8.27in
   * - `A6`: 4.13in x 5.83in
   *
   * **NOTE** [`headerTemplate`](https://playwright.dev/docs/api/class-page#page-pdf-option-header-template) and
   * [`footerTemplate`](https://playwright.dev/docs/api/class-page#page-pdf-option-footer-template) markup have the
   * following limitations: > 1. Script tags inside templates are not evaluated. > 2. Page styles are not visible inside
   * templates.
   *
   * @param options
   */
  pdf(options?: {
    /**
     * Display header and footer. Defaults to `false`.
     */
    displayHeaderFooter?: boolean;
    /**
     * HTML template for the print footer. Should use the same format as the
     * [`headerTemplate`](https://playwright.dev/docs/api/class-page#page-pdf-option-header-template).
     */
    footerTemplate?: string;
    /**
     * Paper format. If set, takes priority over
     * [`width`](https://playwright.dev/docs/api/class-page#page-pdf-option-width) or
     * [`height`](https://playwright.dev/docs/api/class-page#page-pdf-option-height) options. Defaults to 'Letter'.
     */
    format?: string;
    /**
     * HTML template for the print header. Should be valid HTML markup with following classes used to inject printing
     * values into them:
     * - `'date'` formatted print date
     * - `'title'` document title
     * - `'url'` document location
     * - `'pageNumber'` current page number
     * - `'totalPages'` total pages in the document
     */
    headerTemplate?: string;
    /**
     * Paper height, accepts values labeled with units.
     */
    height?: string | number;
    /**
     * Paper orientation. Defaults to `false`.
     */
    landscape?: boolean;
    /**
     * Paper margins, defaults to none.
     */
    margin?: {
      /**
       * Top margin, accepts values labeled with units. Defaults to `0`.
       */
      top?: string | number;
      /**
       * Right margin, accepts values labeled with units. Defaults to `0`.
       */
      right?: string | number;
      /**
       * Bottom margin, accepts values labeled with units. Defaults to `0`.
       */
      bottom?: string | number;
      /**
       * Left margin, accepts values labeled with units. Defaults to `0`.
       */
      left?: string | number;
    };
    /**
     * Whether or not to embed the document outline into the PDF. Defaults to `false`.
     */
    outline?: boolean;
    /**
     * Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
     */
    pageRanges?: string;
    /**
     * The file path to save the PDF to. If [`path`](https://playwright.dev/docs/api/class-page#page-pdf-option-path) is a
     * relative path, then it is resolved relative to the current working directory. If no path is provided, the PDF won't
     * be saved to the disk.
     */
    path?: string;
    /**
     * Give any CSS `@page` size declared in the page priority over what is declared in
     * [`width`](https://playwright.dev/docs/api/class-page#page-pdf-option-width) and
     * [`height`](https://playwright.dev/docs/api/class-page#page-pdf-option-height) or
     * [`format`](https://playwright.dev/docs/api/class-page#page-pdf-option-format) options. Defaults to `false`, which
     * will scale the content to fit the paper size.
     */
    preferCSSPageSize?: boolean;
    /**
     * Print background graphics. Defaults to `false`.
     */
    printBackground?: boolean;
    /**
     * Scale of the webpage rendering. Defaults to `1`. Scale amount must be between 0.1 and 2.
     */
    scale?: number;
    /**
     * Whether or not to generate tagged (accessible) PDF. Defaults to `false`.
     */
    tagged?: boolean;
    /**
     * Paper width, accepts values labeled with units.
     */
    width?: string | number;
  }): Promise<Buffer>;
  /**
   * Enters pick locator mode where hovering over page elements highlights them and shows the corresponding locator.
   * Once the user clicks an element, the mode is deactivated and the
   * [Locator](https://playwright.dev/docs/api/class-locator) for the picked element is returned.
   *
   * **Usage**
   *
   * ```js
   * const locator = await page.pickLocator();
   * console.log(locator);
   * ```
   *
   */
  pickLocator(): Promise<Locator>;
  /**
   * **NOTE** Use locator-based [locator.press(key[, options])](https://playwright.dev/docs/api/class-locator#locator-press)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Focuses the element, and then uses
   * [keyboard.down(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-down) and
   * [keyboard.up(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-up).
   *
   * [`key`](https://playwright.dev/docs/api/class-page#page-press-option-key) can specify the intended
   * [keyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) value or a single character
   * to generate the text for. A superset of the
   * [`key`](https://playwright.dev/docs/api/class-page#page-press-option-key) values can be found
   * [here](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
   *
   * `F1` - `F12`, `Digit0`- `Digit9`, `KeyA`- `KeyZ`, `Backquote`, `Minus`, `Equal`, `Backslash`, `Backspace`, `Tab`,
   * `Delete`, `Escape`, `ArrowDown`, `End`, `Enter`, `Home`, `Insert`, `PageDown`, `PageUp`, `ArrowRight`, `ArrowUp`,
   * etc.
   *
   * Following modification shortcuts are also supported: `Shift`, `Control`, `Alt`, `Meta`, `ShiftLeft`,
   * `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS.
   *
   * Holding down `Shift` will type the text that corresponds to the
   * [`key`](https://playwright.dev/docs/api/class-page#page-press-option-key) in the upper case.
   *
   * If [`key`](https://playwright.dev/docs/api/class-page#page-press-option-key) is a single character, it is
   * case-sensitive, so the values `a` and `A` will generate different respective texts.
   *
   * Shortcuts such as `key: "Control+o"`, `key: "Control++` or `key: "Control+Shift+T"` are supported as well. When
   * specified with the modifier, modifier is pressed and being held while the subsequent key is being pressed.
   *
   * **Usage**
   *
   * ```js
   * const page = await browser.newPage();
   * await page.goto('https://keycode.info');
   * await page.press('body', 'A');
   * await page.screenshot({ path: 'A.png' });
   * await page.press('body', 'ArrowLeft');
   * await page.screenshot({ path: 'ArrowLeft.png' });
   * await page.press('body', 'Shift+O');
   * await page.screenshot({ path: 'O.png' });
   * await browser.close();
   * ```
   *
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param key Name of the key to press or a character to generate, such as `ArrowLeft` or `a`.
   * @param options
   */
  press(selector: string, key: string, options?: {
    /**
     * Time to wait between `keydown` and `keyup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading. You
     * can opt out of waiting via setting this flag. You would only need this option in the exceptional cases such as
     * navigating to inaccessible pages. Defaults to `false`.
     * @deprecated This option will default to `true` in the future.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * This method reloads the current page, in the same way as if the user had triggered a browser refresh. Returns the
   * main resource response. In case of multiple redirects, the navigation will resolve with the response of the last
   * redirect.
   * @param options
   */
  reload(options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<null | Response$1>;
  /**
   * Removes all locator handlers added by
   * [page.addLocatorHandler(locator, handler[, options])](https://playwright.dev/docs/api/class-page#page-add-locator-handler)
   * for a specific locator.
   * @param locator Locator passed to
   * [page.addLocatorHandler(locator, handler[, options])](https://playwright.dev/docs/api/class-page#page-add-locator-handler).
   */
  removeLocatorHandler(locator: Locator): Promise<void>;
  /**
   * Request the page to perform garbage collection. Note that there is no guarantee that all unreachable objects will
   * be collected.
   *
   * This is useful to help detect memory leaks. For example, if your page has a large object `'suspect'` that might be
   * leaked, you can check that it does not leak by using a
   * [`WeakRef`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakRef).
   *
   * ```js
   * // 1. In your page, save a WeakRef for the "suspect".
   * await page.evaluate(() => globalThis.suspectWeakRef = new WeakRef(suspect));
   * // 2. Request garbage collection.
   * await page.requestGC();
   * // 3. Check that weak ref does not deref to the original object.
   * expect(await page.evaluate(() => !globalThis.suspectWeakRef.deref())).toBe(true);
   * ```
   *
   */
  requestGC(): Promise<void>;
  /**
   * Returns up to (currently) 100 last network request from this page. See
   * [page.on('request')](https://playwright.dev/docs/api/class-page#page-event-request) for more details.
   *
   * Returned requests should be accessed immediately, otherwise they might be collected to prevent unbounded memory
   * growth as new requests come in. Once collected, retrieving most information about the request is impossible.
   *
   * Note that requests reported through the
   * [page.on('request')](https://playwright.dev/docs/api/class-page#page-event-request) request are not collected, so
   * there is a trade off between efficient memory usage with
   * [page.requests()](https://playwright.dev/docs/api/class-page#page-requests) and the amount of available information
   * reported through [page.on('request')](https://playwright.dev/docs/api/class-page#page-event-request).
   */
  requests(): Promise<Array<Request$1>>;
  /**
   * Routing provides the capability to modify network requests that are made by a page.
   *
   * Once routing is enabled, every request matching the url pattern will stall unless it's continued, fulfilled or
   * aborted.
   *
   * **NOTE** The handler will only be called for the first url if the response is a redirect.
   *
   * **NOTE** [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) will not
   * intercept requests intercepted by Service Worker. See [this](https://github.com/microsoft/playwright/issues/1090)
   * issue. We recommend disabling Service Workers when using request interception by setting
   * [`serviceWorkers`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-service-workers) to
   * `'block'`.
   *
   * **NOTE** [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) will not
   * intercept the first request of a popup page. Use
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * instead.
   *
   * **Usage**
   *
   * An example of a naive handler that aborts all image requests:
   *
   * ```js
   * const page = await browser.newPage();
   * await page.route('**\/*.{png,jpg,jpeg}', route => route.abort());
   * await page.goto('https://example.com');
   * await browser.close();
   * ```
   *
   * or the same snippet using a regex pattern instead:
   *
   * ```js
   * const page = await browser.newPage();
   * await page.route(/(\.png$)|(\.jpg$)/, route => route.abort());
   * await page.goto('https://example.com');
   * await browser.close();
   * ```
   *
   * It is possible to examine the request to decide the route action. For example, mocking all requests that contain
   * some post data, and leaving all other requests as is:
   *
   * ```js
   * await page.route('/api/**', async route => {
   *   if (route.request().postData().includes('my-string'))
   *     await route.fulfill({ body: 'mocked-data' });
   *   else
   *     await route.continue();
   * });
   * ```
   *
   * If a request matches multiple registered routes, the most recently registered route takes precedence.
   *
   * Page routes take precedence over browser context routes (set up with
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route))
   * when request matches both handlers.
   *
   * To remove a route with its handler you can use
   * [page.unroute(url[, handler])](https://playwright.dev/docs/api/class-page#page-unroute).
   *
   * **NOTE** Enabling routing disables http cache.
   *
   * @param url A glob pattern, regex pattern, URL pattern, or predicate that receives a [URL] to match during routing. If
   * [`baseURL`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-base-url) is set in the
   * context options and the provided URL is a string that does not start with `*`, it is resolved using the
   * [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor.
   * @param handler handler function to route the request.
   * @param options
   */
  route(url: string | RegExp | URLPattern | ((url: URL) => boolean), handler: ((route: Route, request: Request$1) => Promise<any> | any), options?: {
    /**
     * How often a route should be used. By default it will be used every time.
     */
    times?: number;
  }): Promise<Disposable>;
  /**
   * If specified the network requests that are made in the page will be served from the HAR file. Read more about
   * [Replaying from HAR](https://playwright.dev/docs/mock#replaying-from-har).
   *
   * Playwright will not serve requests intercepted by Service Worker from the HAR file. See
   * [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when
   * using request interception by setting
   * [`serviceWorkers`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-service-workers) to
   * `'block'`.
   * @param har Path to a [HAR](http://www.softwareishard.com/blog/har-12-spec) file with prerecorded network data. If `path` is a
   * relative path, then it is resolved relative to the current working directory.
   * @param options
   */
  routeFromHAR(har: string, options?: {
    /**
     * - If set to 'abort' any request not found in the HAR file will be aborted.
     * - If set to 'fallback' missing requests will be sent to the network.
     *
     * Defaults to abort.
     */
    notFound?: "abort" | "fallback";
    /**
     * If specified, updates the given HAR with the actual network information instead of serving from file. The file is
     * written to disk when
     * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) is
     * called.
     */
    update?: boolean;
    /**
     * Optional setting to control resource content management. If `attach` is specified, resources are persisted as
     * separate files or entries in the ZIP archive. If `embed` is specified, content is stored inline the HAR file.
     */
    updateContent?: "embed" | "attach";
    /**
     * When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page,
     * cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to
     * `minimal`.
     */
    updateMode?: "full" | "minimal";
    /**
     * A glob pattern, regular expression or predicate to match the request URL. Only requests with URL matching the
     * pattern will be served from the HAR file. If not specified, all requests are served from the HAR file.
     */
    url?: string | RegExp;
  }): Promise<void>;
  /**
   * This method allows to modify websocket connections that are made by the page.
   *
   * Note that only `WebSocket`s created after this method was called will be routed. It is recommended to call this
   * method before navigating the page.
   *
   * **Usage**
   *
   * Below is an example of a simple mock that responds to a single message. See
   * [WebSocketRoute](https://playwright.dev/docs/api/class-websocketroute) for more details and examples.
   *
   * ```js
   * await page.routeWebSocket('/ws', ws => {
   *   ws.onMessage(message => {
   *     if (message === 'request')
   *       ws.send('response');
   *   });
   * });
   * ```
   *
   * @param url Only WebSockets with the url matching this pattern will be routed. A string pattern can be relative to the
   * [`baseURL`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-base-url) context option.
   * @param handler Handler function to route the WebSocket.
   */
  routeWebSocket(url: string | RegExp | URLPattern | ((url: URL) => boolean), handler: ((websocketroute: WebSocketRoute) => Promise<any> | any)): Promise<void>;
  /**
   * Returns the buffer with the captured screenshot.
   * @param options
   */
  screenshot(options?: PageScreenshotOptions): Promise<Buffer>;
  /**
   * **NOTE** Use locator-based
   * [locator.selectOption(values[, options])](https://playwright.dev/docs/api/class-locator#locator-select-option)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method waits for an element matching
   * [`selector`](https://playwright.dev/docs/api/class-page#page-select-option-option-selector), waits for
   * [actionability](https://playwright.dev/docs/actionability) checks, waits until all specified options are present in the `<select>`
   * element and selects these options.
   *
   * If the target element is not a `<select>` element, this method throws an error. However, if the element is inside
   * the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be used
   * instead.
   *
   * Returns the array of option values that have been successfully selected.
   *
   * Triggers a `change` and `input` event once all the provided options have been selected.
   *
   * **Usage**
   *
   * ```js
   * // Single selection matching the value or label
   * page.selectOption('select#colors', 'blue');
   *
   * // single selection matching the label
   * page.selectOption('select#colors', { label: 'Blue' });
   *
   * // multiple selection
   * page.selectOption('select#colors', ['red', 'green', 'blue']);
   *
   * ```
   *
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param values Options to select. If the `<select>` has the `multiple` attribute, all matching options are selected, otherwise
   * only the first option matching one of the passed options is selected. String values are matching both values and
   * labels. Option is considered matching if all specified properties match.
   * @param options
   */
  selectOption(selector: string, values: null | string | ElementHandle | ReadonlyArray<string> | {
    /**
     * Matches by `option.value`. Optional.
     */
    value?: string;
    /**
     * Matches by `option.label`. Optional.
     */
    label?: string;
    /**
     * Matches by the index. Optional.
     */
    index?: number;
  } | ReadonlyArray<ElementHandle> | ReadonlyArray<{
    /**
     * Matches by `option.value`. Optional.
     */
    value?: string;
    /**
     * Matches by `option.label`. Optional.
     */
    label?: string;
    /**
     * Matches by the index. Optional.
     */
    index?: number;
  }>, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<Array<string>>;
  /**
   * **NOTE** Use locator-based
   * [locator.setChecked(checked[, options])](https://playwright.dev/docs/api/class-locator#locator-set-checked)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method checks or unchecks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-page#page-set-checked-option-selector) by performing the
   * following steps:
   * 1. Find an element matching
   *    [`selector`](https://playwright.dev/docs/api/class-page#page-set-checked-option-selector). If there is none,
   *    wait until a matching element is attached to the DOM.
   * 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws.
   * 1. If the element already has the right checked state, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-page#page-set-checked-option-force) option is set. If the
   *    element is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now checked or unchecked. If not, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-set-checked-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param checked Whether to check or uncheck the checkbox.
   * @param options
   */
  setChecked(selector: string, checked: boolean, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * This method internally calls [document.write()](https://developer.mozilla.org/en-US/docs/Web/API/Document/write),
   * inheriting all its specific characteristics and behaviors.
   * @param html HTML markup to assign to the page.
   * @param options
   */
  setContent(html: string, options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<void>;
  /**
   * This setting will change the default maximum navigation time for the following methods and related shortcuts:
   * - [page.goBack([options])](https://playwright.dev/docs/api/class-page#page-go-back)
   * - [page.goForward([options])](https://playwright.dev/docs/api/class-page#page-go-forward)
   * - [page.goto(url[, options])](https://playwright.dev/docs/api/class-page#page-goto)
   * - [page.reload([options])](https://playwright.dev/docs/api/class-page#page-reload)
   * - [page.setContent(html[, options])](https://playwright.dev/docs/api/class-page#page-set-content)
   * - [page.waitForNavigation([options])](https://playwright.dev/docs/api/class-page#page-wait-for-navigation)
   * - [page.waitForURL(url[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-url)
   *
   * **NOTE**
   * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
   * takes priority over
   * [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout),
   * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
   * and
   * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout).
   *
   * @param timeout Maximum navigation time in milliseconds
   */
  setDefaultNavigationTimeout(timeout: number): void;
  /**
   * This setting will change the default maximum time for all the methods accepting
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-set-default-timeout-option-timeout) option.
   *
   * **NOTE**
   * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
   * takes priority over
   * [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout).
   *
   * @param timeout Maximum time in milliseconds. Pass `0` to disable timeout.
   */
  setDefaultTimeout(timeout: number): void;
  /**
   * The extra HTTP headers will be sent with every request the page initiates.
   *
   * **NOTE**
   * [page.setExtraHTTPHeaders(headers)](https://playwright.dev/docs/api/class-page#page-set-extra-http-headers) does
   * not guarantee the order of headers in the outgoing requests.
   *
   * @param headers An object containing additional HTTP headers to be sent with every request. All header values must be strings.
   */
  setExtraHTTPHeaders(headers: {
    [key: string]: string;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.setInputFiles(files[, options])](https://playwright.dev/docs/api/class-locator#locator-set-input-files)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then
   * they are resolved relative to the current working directory. For empty array, clears the selected files. For inputs
   * with a `[webkitdirectory]` attribute, only a single directory path is supported.
   *
   * This method expects [`selector`](https://playwright.dev/docs/api/class-page#page-set-input-files-option-selector)
   * to point to an [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the
   * element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param files
   * @param options
   */
  setInputFiles(selector: string, files: string | ReadonlyArray<string> | {
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  } | ReadonlyArray<{
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  }>, options?: {
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * In the case of multiple pages in a single browser, each page can have its own viewport size. However,
   * [browser.newContext([options])](https://playwright.dev/docs/api/class-browser#browser-new-context) allows to set
   * viewport size (and more) for all pages in the context at once.
   *
   * [page.setViewportSize(viewportSize)](https://playwright.dev/docs/api/class-page#page-set-viewport-size) will resize
   * the page. A lot of websites don't expect phones to change size, so you should set the viewport size before
   * navigating to the page.
   * [page.setViewportSize(viewportSize)](https://playwright.dev/docs/api/class-page#page-set-viewport-size) will also
   * reset `screen` size, use
   * [browser.newContext([options])](https://playwright.dev/docs/api/class-browser#browser-new-context) with `screen`
   * and `viewport` parameters if you need better control of these properties.
   *
   * **Usage**
   *
   * ```js
   * const page = await browser.newPage();
   * await page.setViewportSize({
   *   width: 640,
   *   height: 480,
   * });
   * await page.goto('https://example.com');
   * ```
   *
   * @param viewportSize
   */
  setViewportSize(viewportSize: {
    /**
     * page width in pixels.
     */
    width: number;
    /**
     * page height in pixels.
     */
    height: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.tap([options])](https://playwright.dev/docs/api/class-locator#locator-tap) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * This method taps an element matching
   * [`selector`](https://playwright.dev/docs/api/class-page#page-tap-option-selector) by performing the following
   * steps:
   * 1. Find an element matching [`selector`](https://playwright.dev/docs/api/class-page#page-tap-option-selector).
   *    If there is none, wait until a matching element is attached to the DOM.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-page#page-tap-option-force) option is set. If the element is
   *    detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.touchscreen](https://playwright.dev/docs/api/class-page#page-touchscreen) to tap the center of the
   *    element, or the specified [`position`](https://playwright.dev/docs/api/class-page#page-tap-option-position).
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-tap-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   *
   * **NOTE** [page.tap(selector[, options])](https://playwright.dev/docs/api/class-page#page-tap) will throw if the
   * [`hasTouch`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-has-touch) option of the
   * browser context is false.
   *
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  tap(selector: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.textContent([options])](https://playwright.dev/docs/api/class-locator#locator-text-content) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns `element.textContent`.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  textContent(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<null | string>;
  /**
   * Returns the page's title.
   */
  title(): Promise<string>;
  /**
   * Sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the text. `page.type` can be used to
   * send fine-grained keyboard events. To fill values in form fields, use
   * [page.fill(selector, value[, options])](https://playwright.dev/docs/api/class-page#page-fill).
   *
   * To press a special key, like `Control` or `ArrowDown`, use
   * [keyboard.press(key[, options])](https://playwright.dev/docs/api/class-keyboard#keyboard-press).
   *
   * **Usage**
   * @deprecated In most cases, you should use
   * [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill) instead. You only need
   * to press keys one by one if there is special keyboard handling on the page - in this case use
   * [locator.pressSequentially(text[, options])](https://playwright.dev/docs/api/class-locator#locator-press-sequentially).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param text A text to type into a focused element.
   * @param options
   */
  type(selector: string, text: string, options?: {
    /**
     * Time to wait between key presses in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.uncheck([options])](https://playwright.dev/docs/api/class-locator#locator-uncheck)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method unchecks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-page#page-uncheck-option-selector) by performing the following
   * steps:
   * 1. Find an element matching
   *    [`selector`](https://playwright.dev/docs/api/class-page#page-uncheck-option-selector). If there is none, wait
   *    until a matching element is attached to the DOM.
   * 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws. If the element is
   *    already unchecked, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-page#page-uncheck-option-force) option is set. If the element
   *    is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now unchecked. If not, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-page#page-uncheck-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  uncheck(selector: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Removes a route created with
   * [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route). When
   * [`handler`](https://playwright.dev/docs/api/class-page#page-unroute-option-handler) is not specified, removes all
   * routes for the [`url`](https://playwright.dev/docs/api/class-page#page-unroute-option-url).
   * @param url A glob pattern, regex pattern, URL pattern, or predicate receiving [URL] to match while routing.
   * @param handler Optional handler function to route the request.
   */
  unroute(url: string | RegExp | URLPattern | ((url: URL) => boolean), handler?: ((route: Route, request: Request$1) => Promise<any> | any)): Promise<void>;
  /**
   * Removes all routes created with
   * [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) and
   * [page.routeFromHAR(har[, options])](https://playwright.dev/docs/api/class-page#page-route-from-har).
   * @param options
   */
  unrouteAll(options?: {
    /**
     * Specifies whether to wait for already running handlers and what to do if they throw errors:
     * - `'default'` - do not wait for current handler calls (if any) to finish, if unrouted handler throws, it may
     *   result in unhandled error
     * - `'wait'` - wait for current handler calls (if any) to finish
     * - `'ignoreErrors'` - do not wait for current handler calls (if any) to finish, all errors thrown by the handlers
     *   after unrouting are silently caught
     */
    behavior?: "wait" | "ignoreErrors" | "default";
  }): Promise<void>;
  url(): string;
  /**
   * Video object associated with this page. Can be used to access the video file when using the `recordVideo` context
   * option.
   */
  video(): null | Video;
  viewportSize(): null | {
    /**
     * page width in pixels.
     */
    width: number;
    /**
     * page height in pixels.
     */
    height: number;
  };
  /**
   * Emitted when the page closes.
   */
  waitForEvent(event: 'close', optionsOrPredicate?: {
    predicate?: (page: Page$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((page: Page$1) => boolean | Promise<boolean>)): Promise<Page$1>;
  /**
   * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`.
   *
   * The arguments passed into `console.log` are available on the
   * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument.
   *
   * **Usage**
   *
   * ```js
   * page.on('console', async msg => {
   *   const values = [];
   *   for (const arg of msg.args())
   *     values.push(await arg.jsonValue());
   *   console.log(...values);
   * });
   * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));
   * ```
   *
   */
  waitForEvent(event: 'console', optionsOrPredicate?: {
    predicate?: (consoleMessage: ConsoleMessage$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((consoleMessage: ConsoleMessage$1) => boolean | Promise<boolean>)): Promise<ConsoleMessage$1>;
  /**
   * Emitted when the page crashes. Browser pages might crash if they try to allocate too much memory. When the page
   * crashes, ongoing and subsequent operations will throw.
   *
   * The most common way to deal with crashes is to catch an exception:
   *
   * ```js
   * try {
   *   // Crash might happen during a click.
   *   await page.click('button');
   *   // Or while waiting for an event.
   *   await page.waitForEvent('popup');
   * } catch (e) {
   *   // When the page crashes, exception message contains 'crash'.
   * }
   * ```
   *
   */
  waitForEvent(event: 'crash', optionsOrPredicate?: {
    predicate?: (page: Page$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((page: Page$1) => boolean | Promise<boolean>)): Promise<Page$1>;
  /**
   * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must**
   * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or
   * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page
   * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the
   * dialog, and actions like click will never finish.
   *
   * **Usage**
   *
   * ```js
   * page.on('dialog', dialog => dialog.accept());
   * ```
   *
   * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or
   * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog)
   * listeners are present, all dialogs are automatically dismissed.
   *
   */
  waitForEvent(event: 'dialog', optionsOrPredicate?: {
    predicate?: (dialog: Dialog) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((dialog: Dialog) => boolean | Promise<boolean>)): Promise<Dialog>;
  /**
   * Emitted when the JavaScript
   * [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded) event is dispatched.
   */
  waitForEvent(event: 'domcontentloaded', optionsOrPredicate?: {
    predicate?: (page: Page$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((page: Page$1) => boolean | Promise<boolean>)): Promise<Page$1>;
  /**
   * Emitted when attachment download started. User can access basic file operations on downloaded content via the
   * passed [Download](https://playwright.dev/docs/api/class-download) instance.
   */
  waitForEvent(event: 'download', optionsOrPredicate?: {
    predicate?: (download: Download) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((download: Download) => boolean | Promise<boolean>)): Promise<Download>;
  /**
   * Emitted when a file chooser is supposed to appear, such as after clicking the  `<input type=file>`. Playwright can
   * respond to it via setting the input files using
   * [fileChooser.setFiles(files[, options])](https://playwright.dev/docs/api/class-filechooser#file-chooser-set-files)
   * that can be uploaded after that.
   *
   * ```js
   * page.on('filechooser', async fileChooser => {
   *   await fileChooser.setFiles(path.join(__dirname, '/tmp/myfile.pdf'));
   * });
   * ```
   *
   */
  waitForEvent(event: 'filechooser', optionsOrPredicate?: {
    predicate?: (fileChooser: FileChooser) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((fileChooser: FileChooser) => boolean | Promise<boolean>)): Promise<FileChooser>;
  /**
   * Emitted when a frame is attached.
   */
  waitForEvent(event: 'frameattached', optionsOrPredicate?: {
    predicate?: (frame: Frame$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((frame: Frame$1) => boolean | Promise<boolean>)): Promise<Frame$1>;
  /**
   * Emitted when a frame is detached.
   */
  waitForEvent(event: 'framedetached', optionsOrPredicate?: {
    predicate?: (frame: Frame$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((frame: Frame$1) => boolean | Promise<boolean>)): Promise<Frame$1>;
  /**
   * Emitted when a frame is navigated to a new url.
   */
  waitForEvent(event: 'framenavigated', optionsOrPredicate?: {
    predicate?: (frame: Frame$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((frame: Frame$1) => boolean | Promise<boolean>)): Promise<Frame$1>;
  /**
   * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched.
   */
  waitForEvent(event: 'load', optionsOrPredicate?: {
    predicate?: (page: Page$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((page: Page$1) => boolean | Promise<boolean>)): Promise<Page$1>;
  /**
   * Emitted when an uncaught exception happens within the page.
   *
   * ```js
   * // Log all uncaught errors to the terminal
   * page.on('pageerror', exception => {
   *   console.log(`Uncaught exception: "${exception}"`);
   * });
   *
   * // Navigate to a page with an exception.
   * await page.goto('data:text/html,<script>throw new Error("Test")</script>');
   * ```
   *
   */
  waitForEvent(event: 'pageerror', optionsOrPredicate?: {
    predicate?: (error: Error) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((error: Error) => boolean | Promise<boolean>)): Promise<Error>;
  /**
   * Emitted when the page opens a new tab or window. This event is emitted in addition to the
   * [browserContext.on('page')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-page), but
   * only for popups relevant to this page.
   *
   * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a
   * popup with `window.open('http://example.com')`, this event will fire when the network request to
   * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen
   * to this network request, use
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * and
   * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request)
   * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page).
   *
   * ```js
   * // Start waiting for popup before clicking. Note no await.
   * const popupPromise = page.waitForEvent('popup');
   * await page.getByText('open the popup').click();
   * const popup = await popupPromise;
   * console.log(await popup.evaluate('location.href'));
   * ```
   *
   * **NOTE** Use
   * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to
   * wait until the page gets to a particular state (you should not need it in most cases).
   *
   */
  waitForEvent(event: 'popup', optionsOrPredicate?: {
    predicate?: (page: Page$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((page: Page$1) => boolean | Promise<boolean>)): Promise<Page$1>;
  /**
   * Emitted when a page issues a request. The [request] object is read-only. In order to intercept and mutate requests,
   * see [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route).
   */
  waitForEvent(event: 'request', optionsOrPredicate?: {
    predicate?: (request: Request$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((request: Request$1) => boolean | Promise<boolean>)): Promise<Request$1>;
  /**
   * Emitted when a request fails, for example by timing out.
   *
   * ```js
   * page.on('requestfailed', request => {
   *   console.log(request.url() + ' ' + request.failure().errorText);
   * });
   * ```
   *
   * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request
   * will complete with
   * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished) event and not
   * with [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed). A request
   * will only be considered failed when the client cannot get an HTTP response from the server, e.g. due to network
   * error net::ERR_FAILED.
   *
   */
  waitForEvent(event: 'requestfailed', optionsOrPredicate?: {
    predicate?: (request: Request$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((request: Request$1) => boolean | Promise<boolean>)): Promise<Request$1>;
  /**
   * Emitted when a request finishes successfully after downloading the response body. For a successful response, the
   * sequence of events is `request`, `response` and `requestfinished`.
   */
  waitForEvent(event: 'requestfinished', optionsOrPredicate?: {
    predicate?: (request: Request$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((request: Request$1) => boolean | Promise<boolean>)): Promise<Request$1>;
  /**
   * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of
   * events is `request`, `response` and `requestfinished`.
   */
  waitForEvent(event: 'response', optionsOrPredicate?: {
    predicate?: (response: Response$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((response: Response$1) => boolean | Promise<boolean>)): Promise<Response$1>;
  /**
   * Emitted when [WebSocket](https://playwright.dev/docs/api/class-websocket) request is sent.
   */
  waitForEvent(event: 'websocket', optionsOrPredicate?: {
    predicate?: (webSocket: WebSocket) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((webSocket: WebSocket) => boolean | Promise<boolean>)): Promise<WebSocket>;
  /**
   * Emitted when a dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is spawned
   * by the page.
   */
  waitForEvent(event: 'worker', optionsOrPredicate?: {
    predicate?: (worker: Worker) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((worker: Worker) => boolean | Promise<boolean>)): Promise<Worker>;
  /**
   * Returns when the required load state has been reached.
   *
   * This resolves when the page reaches a required load state, `load` by default. The navigation must have been
   * committed when this method is called. If current document has already reached the required state, resolves
   * immediately.
   *
   * **NOTE** Most of the time, this method is not needed because Playwright
   * [auto-waits before every action](https://playwright.dev/docs/actionability).
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('button').click(); // Click triggers navigation.
   * await page.waitForLoadState(); // The promise resolves after 'load' event.
   * ```
   *
   * ```js
   * const popupPromise = page.waitForEvent('popup');
   * await page.getByRole('button').click(); // Click triggers a popup.
   * const popup = await popupPromise;
   * await popup.waitForLoadState('domcontentloaded'); // Wait for the 'DOMContentLoaded' event.
   * console.log(await popup.title()); // Popup is ready to use.
   * ```
   *
   * @param state Optional load state to wait for, defaults to `load`. If the state has been already reached while loading current
   * document, the method resolves immediately. Can be one of:
   * - `'load'` - wait for the `load` event to be fired.
   * - `'domcontentloaded'` - wait for the `DOMContentLoaded` event to be fired.
   * - `'networkidle'` - **DISCOURAGED** wait until there are no network connections for at least `500` ms. Don't use
   * this method for testing, rely on web assertions to assess readiness instead.
   * @param options
   */
  waitForLoadState(state?: "load" | "domcontentloaded" | "networkidle", options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Waits for the main frame navigation and returns the main resource response. In case of multiple redirects, the
   * navigation will resolve with the response of the last redirect. In case of navigation to a different anchor or
   * navigation due to History API usage, the navigation will resolve with `null`.
   *
   * **Usage**
   *
   * This resolves when the page navigates to a new URL or reloads. It is useful for when you run code which will
   * indirectly cause the page to navigate. e.g. The click target has an `onclick` handler that triggers navigation from
   * a `setTimeout`. Consider this example:
   *
   * ```js
   * // Start waiting for navigation before clicking. Note no await.
   * const navigationPromise = page.waitForNavigation();
   * await page.getByText('Navigate after timeout').click();
   * await navigationPromise;
   * ```
   *
   * **NOTE** Usage of the [History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL
   * is considered a navigation.
   *
   * @deprecated This method is inherently racy, please use
   * [page.waitForURL(url[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-url) instead.
   * @param options
   */
  waitForNavigation(options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * A glob pattern, regex pattern, URL pattern, or predicate receiving [URL] to match while waiting for the navigation.
     * Note that if the parameter is a string without wildcard characters, the method will wait for navigation to URL that
     * is exactly equal to the string.
     */
    url?: string | RegExp | URLPattern | ((url: URL) => boolean);
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<null | Response$1>;
  /**
   * Waits for the matching request and returns it. See [waiting for event](https://playwright.dev/docs/events#waiting-for-event) for more
   * details about events.
   *
   * **Usage**
   *
   * ```js
   * // Start waiting for request before clicking. Note no await.
   * const requestPromise = page.waitForRequest('https://example.com/resource');
   * await page.getByText('trigger request').click();
   * const request = await requestPromise;
   *
   * // Alternative way with a predicate. Note no await.
   * const requestPromise = page.waitForRequest(request =>
   *   request.url() === 'https://example.com' && request.method() === 'GET',
   * );
   * await page.getByText('trigger request').click();
   * const request = await requestPromise;
   * ```
   *
   * @param urlOrPredicate Request URL string, regex or predicate receiving [Request](https://playwright.dev/docs/api/class-request) object.
   * @param options
   */
  waitForRequest(urlOrPredicate: string | RegExp | ((request: Request$1) => boolean | Promise<boolean>), options?: {
    /**
     * Maximum wait time in milliseconds, defaults to 30 seconds, pass `0` to disable the timeout. The default value can
     * be changed by using the
     * [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) method.
     */
    timeout?: number;
  }): Promise<Request$1>;
  /**
   * Returns the matched response. See [waiting for event](https://playwright.dev/docs/events#waiting-for-event) for more details about
   * events.
   *
   * **Usage**
   *
   * ```js
   * // Start waiting for response before clicking. Note no await.
   * const responsePromise = page.waitForResponse('https://example.com/resource');
   * await page.getByText('trigger response').click();
   * const response = await responsePromise;
   *
   * // Alternative way with a predicate. Note no await.
   * const responsePromise = page.waitForResponse(response =>
   *   response.url() === 'https://example.com' && response.status() === 200
   *       && response.request().method() === 'GET'
   * );
   * await page.getByText('trigger response').click();
   * const response = await responsePromise;
   * ```
   *
   * @param urlOrPredicate Request URL string, regex or predicate receiving [Response](https://playwright.dev/docs/api/class-response) object.
   * When a [`baseURL`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-base-url) via the
   * context options was provided and the passed URL is a path, it gets merged via the
   * [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor.
   * @param options
   */
  waitForResponse(urlOrPredicate: string | RegExp | ((response: Response$1) => boolean | Promise<boolean>), options?: {
    /**
     * Maximum wait time in milliseconds, defaults to 30 seconds, pass `0` to disable the timeout. The default value can
     * be changed by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<Response$1>;
  /**
   * **NOTE** Never wait for timeout in production. Tests that wait for time are inherently flaky. Use
   * [Locator](https://playwright.dev/docs/api/class-locator) actions and web assertions that wait automatically.
   *
   * Waits for the given [`timeout`](https://playwright.dev/docs/api/class-page#page-wait-for-timeout-option-timeout) in
   * milliseconds.
   *
   * Note that `page.waitForTimeout()` should only be used for debugging. Tests using the timer in production are going
   * to be flaky. Use signals such as network events, selectors becoming visible and others instead.
   *
   * **Usage**
   *
   * ```js
   * // wait for 1 second
   * await page.waitForTimeout(1000);
   * ```
   *
   * @param timeout A timeout to wait for
   */
  waitForTimeout(timeout: number): Promise<void>;
  /**
   * Waits for the main frame to navigate to the given URL.
   *
   * **Usage**
   *
   * ```js
   * await page.click('a.delayed-navigation'); // Clicking the link will indirectly cause a navigation
   * await page.waitForURL('**\/target.html');
   * ```
   *
   * @param url A glob pattern, regex pattern, URL pattern, or predicate receiving [URL] to match while waiting for the navigation.
   * Note that if the parameter is a string without wildcard characters, the method will wait for navigation to URL that
   * is exactly equal to the string.
   * @param options
   */
  waitForURL(url: string | RegExp | URLPattern | ((url: URL) => boolean), options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<void>;
  /**
   * This method returns all of the dedicated
   * [WebWorkers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) associated with the page.
   *
   * **NOTE** This does not contain ServiceWorkers
   *
   */
  workers(): Array<Worker>;
  /**
   * Playwright has ability to mock clock and passage of time.
   */
  clock: Clock;
  /**
   * **NOTE** Only available for Chromium atm.
   *
   * Browser-specific Coverage implementation. See [Coverage](https://playwright.dev/docs/api/class-coverage) for more
   * details.
   */
  coverage: Coverage;
  keyboard: Keyboard;
  /**
   * Provides access to the page's `localStorage` for the current origin. See
   * [WebStorage](https://playwright.dev/docs/api/class-webstorage).
   *
   * ```js
   * await page.localStorage.setItem('token', 'abc');
   * const token = await page.localStorage.getItem('token');
   * ```
   *
   */
  localStorage: WebStorage;
  mouse: Mouse;
  /**
   * API testing helper associated with this page. This method returns the same instance as
   * [browserContext.request](https://playwright.dev/docs/api/class-browsercontext#browser-context-request) on the
   * page's context. See
   * [browserContext.request](https://playwright.dev/docs/api/class-browsercontext#browser-context-request) for more
   * details.
   */
  request: APIRequestContext;
  /**
   * [Screencast](https://playwright.dev/docs/api/class-screencast) object associated with this page.
   *
   * **Usage**
   *
   * ```js
   * page.screencast.on('screencastFrame', data => {
   *   console.log('received frame, jpeg size:', data.length);
   * });
   * await page.screencast.start();
   * // ... perform actions ...
   * await page.screencast.stop();
   * ```
   *
   */
  screencast: Screencast;
  /**
   * Provides access to the page's `sessionStorage` for the current origin. See
   * [WebStorage](https://playwright.dev/docs/api/class-webstorage).
   *
   * ```js
   * await page.sessionStorage.setItem('flag', '1');
   * const flag = await page.sessionStorage.getItem('flag');
   * ```
   *
   */
  sessionStorage: WebStorage;
  touchscreen: Touchscreen;
  [Symbol.asyncDispose](): Promise<void>;
}
/**
 * At every point of time, page exposes its current frame tree via the
 * [page.mainFrame()](https://playwright.dev/docs/api/class-page#page-main-frame) and
 * [frame.childFrames()](https://playwright.dev/docs/api/class-frame#frame-child-frames) methods.
 *
 * [Frame](https://playwright.dev/docs/api/class-frame) object's lifecycle is controlled by three events, dispatched
 * on the page object:
 * - [page.on('frameattached')](https://playwright.dev/docs/api/class-page#page-event-frame-attached) - fired when
 *   the frame gets attached to the page. A Frame can be attached to the page only once.
 * - [page.on('framenavigated')](https://playwright.dev/docs/api/class-page#page-event-frame-navigated) - fired when
 *   the frame commits navigation to a different URL.
 * - [page.on('framedetached')](https://playwright.dev/docs/api/class-page#page-event-frame-detached) - fired when
 *   the frame gets detached from the page.  A Frame can be detached from the page only once.
 *
 * An example of dumping frame tree:
 *
 * ```js
 * const { firefox } = require('playwright');  // Or 'chromium' or 'webkit'.
 *
 * (async () => {
 *   const browser = await firefox.launch();
 *   const page = await browser.newPage();
 *   await page.goto('https://www.google.com/chrome/browser/canary.html');
 *   dumpFrameTree(page.mainFrame(), '');
 *   await browser.close();
 *
 *   function dumpFrameTree(frame, indent) {
 *     console.log(indent + frame.url());
 *     for (const child of frame.childFrames())
 *       dumpFrameTree(child, indent + '  ');
 *   }
 * })();
 * ```
 *
 */
interface Frame$1 {
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-evaluate-option-expression).
   *
   * If the function passed to the
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate) returns a
   * [Promise], then [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate)
   * would wait for the promise to resolve and return its value.
   *
   * If the function passed to the
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate) returns a
   * non-[Serializable] value, then
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate) returns
   * `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`:
   * `-0`, `NaN`, `Infinity`, `-Infinity`.
   *
   * **Usage**
   *
   * ```js
   * const result = await frame.evaluate(([x, y]) => {
   *   return Promise.resolve(x * y);
   * }, [7, 8]);
   * console.log(result); // prints "56"
   * ```
   *
   * A string can also be passed in instead of a function.
   *
   * ```js
   * console.log(await frame.evaluate('1 + 2')); // prints "3"
   * ```
   *
   * [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) instances can be passed as an argument to the
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate):
   *
   * ```js
   * const bodyHandle = await frame.evaluateHandle('document.body');
   * const html = await frame.evaluate(([body, suffix]) =>
   *   body.innerHTML + suffix, [bodyHandle, 'hello'],
   * );
   * await bodyHandle.dispose();
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-evaluate-option-expression).
   */
  evaluate<R, Arg>(pageFunction: PageFunction<Arg, R>, arg: Arg): Promise<R>;
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-evaluate-option-expression).
   *
   * If the function passed to the
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate) returns a
   * [Promise], then [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate)
   * would wait for the promise to resolve and return its value.
   *
   * If the function passed to the
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate) returns a
   * non-[Serializable] value, then
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate) returns
   * `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`:
   * `-0`, `NaN`, `Infinity`, `-Infinity`.
   *
   * **Usage**
   *
   * ```js
   * const result = await frame.evaluate(([x, y]) => {
   *   return Promise.resolve(x * y);
   * }, [7, 8]);
   * console.log(result); // prints "56"
   * ```
   *
   * A string can also be passed in instead of a function.
   *
   * ```js
   * console.log(await frame.evaluate('1 + 2')); // prints "3"
   * ```
   *
   * [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) instances can be passed as an argument to the
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate):
   *
   * ```js
   * const bodyHandle = await frame.evaluateHandle('document.body');
   * const html = await frame.evaluate(([body, suffix]) =>
   *   body.innerHTML + suffix, [bodyHandle, 'hello'],
   * );
   * await bodyHandle.dispose();
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-evaluate-option-expression).
   */
  evaluate<R>(pageFunction: PageFunction<void, R>, arg?: any): Promise<R>;
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle-option-expression) as a
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * The only difference between
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate) and
   * [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle) is
   * that [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle)
   * returns [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If the function, passed to the
   * [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle),
   * returns a [Promise], then
   * [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * // Handle for the window object
   * const aWindowHandle = await frame.evaluateHandle(() => Promise.resolve(window));
   * ```
   *
   * A string can also be passed in instead of a function.
   *
   * ```js
   * const aHandle = await frame.evaluateHandle('document'); // Handle for the 'document'.
   * ```
   *
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle) instances can be passed as an argument to the
   * [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle):
   *
   * ```js
   * const aHandle = await frame.evaluateHandle(() => document.body);
   * const resultHandle = await frame.evaluateHandle(([body, suffix]) =>
   *   body.innerHTML + suffix, [aHandle, 'hello'],
   * );
   * console.log(await resultHandle.jsonValue());
   * await resultHandle.dispose();
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle-option-expression).
   */
  evaluateHandle<R, Arg>(pageFunction: PageFunction<Arg, R>, arg: Arg): Promise<SmartHandle<R>>;
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle-option-expression) as a
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * The only difference between
   * [frame.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate) and
   * [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle) is
   * that [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle)
   * returns [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If the function, passed to the
   * [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle),
   * returns a [Promise], then
   * [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * // Handle for the window object
   * const aWindowHandle = await frame.evaluateHandle(() => Promise.resolve(window));
   * ```
   *
   * A string can also be passed in instead of a function.
   *
   * ```js
   * const aHandle = await frame.evaluateHandle('document'); // Handle for the 'document'.
   * ```
   *
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle) instances can be passed as an argument to the
   * [frame.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle):
   *
   * ```js
   * const aHandle = await frame.evaluateHandle(() => document.body);
   * const resultHandle = await frame.evaluateHandle(([body, suffix]) =>
   *   body.innerHTML + suffix, [aHandle, 'hello'],
   * );
   * console.log(await resultHandle.jsonValue());
   * await resultHandle.dispose();
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-evaluate-handle-option-expression).
   */
  evaluateHandle<R>(pageFunction: PageFunction<void, R>, arg?: any): Promise<SmartHandle<R>>;
  /**
   * **NOTE** Use locator-based [frame.locator(selector[, options])](https://playwright.dev/docs/api/class-frame#frame-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns the ElementHandle pointing to the frame element.
   *
   * **NOTE** The use of [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) is discouraged, use
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions instead.
   *
   * The method finds an element matching the specified selector within the frame. If no elements match the selector,
   * returns `null`.
   * @param selector A selector to query for.
   * @param options
   */
  $<K extends keyof HTMLElementTagNameMap>(selector: K, options?: {
    strict: boolean;
  }): Promise<ElementHandleForTag<K> | null>;
  /**
   * **NOTE** Use locator-based [frame.locator(selector[, options])](https://playwright.dev/docs/api/class-frame#frame-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns the ElementHandle pointing to the frame element.
   *
   * **NOTE** The use of [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) is discouraged, use
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions instead.
   *
   * The method finds an element matching the specified selector within the frame. If no elements match the selector,
   * returns `null`.
   * @param selector A selector to query for.
   * @param options
   */
  $(selector: string, options?: {
    strict: boolean;
  }): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
  /**
   * **NOTE** Use locator-based [frame.locator(selector[, options])](https://playwright.dev/docs/api/class-frame#frame-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns the ElementHandles pointing to the frame elements.
   *
   * **NOTE** The use of [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) is discouraged, use
   * [Locator](https://playwright.dev/docs/api/class-locator) objects instead.
   *
   * The method finds all elements matching the specified selector within the frame. If no elements match the selector,
   * returns empty array.
   * @param selector A selector to query for.
   */
  $$<K extends keyof HTMLElementTagNameMap>(selector: K): Promise<ElementHandleForTag<K>[]>;
  /**
   * **NOTE** Use locator-based [frame.locator(selector[, options])](https://playwright.dev/docs/api/class-frame#frame-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns the ElementHandles pointing to the frame elements.
   *
   * **NOTE** The use of [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) is discouraged, use
   * [Locator](https://playwright.dev/docs/api/class-locator) objects instead.
   *
   * The method finds all elements matching the specified selector within the frame. If no elements match the selector,
   * returns empty array.
   * @param selector A selector to query for.
   */
  $$(selector: string): Promise<ElementHandle<SVGElement | HTMLElement>[]>;
  /**
   * **NOTE** This method does not wait for the element to pass the actionability checks and therefore can lead to the flaky
   * tests. Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression).
   *
   * The method finds an element matching the specified selector within the frame and passes it as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression). If no
   * elements match the selector, the method throws an error.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression) returns a
   * [Promise], then
   * [frame.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const searchValue = await frame.$eval('#search', el => el.value);
   * const preloadHref = await frame.$eval('link[rel=preload]', el => el.href);
   * const html = await frame.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression).
   * @param options
   */
  $eval<K extends keyof HTMLElementTagNameMap, R, Arg>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K], Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** This method does not wait for the element to pass the actionability checks and therefore can lead to the flaky
   * tests. Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression).
   *
   * The method finds an element matching the specified selector within the frame and passes it as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression). If no
   * elements match the selector, the method throws an error.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression) returns a
   * [Promise], then
   * [frame.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const searchValue = await frame.$eval('#search', el => el.value);
   * const preloadHref = await frame.$eval('link[rel=preload]', el => el.href);
   * const html = await frame.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression).
   * @param options
   */
  $eval<R, Arg, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E, Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** This method does not wait for the element to pass the actionability checks and therefore can lead to the flaky
   * tests. Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression).
   *
   * The method finds an element matching the specified selector within the frame and passes it as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression). If no
   * elements match the selector, the method throws an error.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression) returns a
   * [Promise], then
   * [frame.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const searchValue = await frame.$eval('#search', el => el.value);
   * const preloadHref = await frame.$eval('link[rel=preload]', el => el.href);
   * const html = await frame.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression).
   * @param options
   */
  $eval<K extends keyof HTMLElementTagNameMap, R>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K], void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** This method does not wait for the element to pass the actionability checks and therefore can lead to the flaky
   * tests. Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression).
   *
   * The method finds an element matching the specified selector within the frame and passes it as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression). If no
   * elements match the selector, the method throws an error.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression) returns a
   * [Promise], then
   * [frame.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const searchValue = await frame.$eval('#search', el => el.value);
   * const preloadHref = await frame.$eval('link[rel=preload]', el => el.href);
   * const html = await frame.$eval('.main-container', (e, suffix) => e.outerHTML + suffix, 'hello');
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-option-expression).
   * @param options
   */
  $eval<R, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E, void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   *
   * The method finds all elements matching the specified selector within the frame and passes an array of matched
   * elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression)
   * returns a [Promise], then
   * [frame.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const divsCounts = await frame.$$eval('div', (divs, min) => divs.length >= min, 10);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   */
  $$eval<K extends keyof HTMLElementTagNameMap, R, Arg>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K][], Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   *
   * The method finds all elements matching the specified selector within the frame and passes an array of matched
   * elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression)
   * returns a [Promise], then
   * [frame.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const divsCounts = await frame.$$eval('div', (divs, min) => divs.length >= min, 10);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   */
  $$eval<R, Arg, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E[], Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   *
   * The method finds all elements matching the specified selector within the frame and passes an array of matched
   * elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression)
   * returns a [Promise], then
   * [frame.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const divsCounts = await frame.$$eval('div', (divs, min) => divs.length >= min, 10);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   */
  $$eval<K extends keyof HTMLElementTagNameMap, R>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K][], void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   *
   * The method finds all elements matching the specified selector within the frame and passes an array of matched
   * elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression)
   * returns a [Promise], then
   * [frame.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const divsCounts = await frame.$$eval('div', (divs, min) => divs.length >= min, 10);
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-eval-on-selector-all-option-expression).
   */
  $$eval<R, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E[], void, R>, arg?: any): Promise<R>;
  /**
   * Returns when the
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-wait-for-function-option-expression) returns a
   * truthy value, returns that value.
   *
   * **Usage**
   *
   * The
   * [frame.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-frame#frame-wait-for-function)
   * can be used to observe viewport size change:
   *
   * ```js
   * const { firefox } = require('playwright');  // Or 'chromium' or 'webkit'.
   *
   * (async () => {
   *   const browser = await firefox.launch();
   *   const page = await browser.newPage();
   *   const watchDog = page.mainFrame().waitForFunction('window.innerWidth < 100');
   *   await page.setViewportSize({ width: 50, height: 50 });
   *   await watchDog;
   *   await browser.close();
   * })();
   * ```
   *
   * To pass an argument to the predicate of `frame.waitForFunction` function:
   *
   * ```js
   * const selector = '.foo';
   * await frame.waitForFunction(selector => !!document.querySelector(selector), selector);
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-wait-for-function-option-expression).
   * @param options
   */
  waitForFunction<R, Arg>(pageFunction: PageFunction<Arg, R>, arg: Arg, options?: PageWaitForFunctionOptions): Promise<SmartHandle<R>>;
  /**
   * Returns when the
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-wait-for-function-option-expression) returns a
   * truthy value, returns that value.
   *
   * **Usage**
   *
   * The
   * [frame.waitForFunction(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-frame#frame-wait-for-function)
   * can be used to observe viewport size change:
   *
   * ```js
   * const { firefox } = require('playwright');  // Or 'chromium' or 'webkit'.
   *
   * (async () => {
   *   const browser = await firefox.launch();
   *   const page = await browser.newPage();
   *   const watchDog = page.mainFrame().waitForFunction('window.innerWidth < 100');
   *   await page.setViewportSize({ width: 50, height: 50 });
   *   await watchDog;
   *   await browser.close();
   * })();
   * ```
   *
   * To pass an argument to the predicate of `frame.waitForFunction` function:
   *
   * ```js
   * const selector = '.foo';
   * await frame.waitForFunction(selector => !!document.querySelector(selector), selector);
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-frame#frame-wait-for-function-option-expression).
   * @param options
   */
  waitForFunction<R>(pageFunction: PageFunction<void, R>, arg?: any, options?: PageWaitForFunctionOptions): Promise<SmartHandle<R>>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more
   * about [locators](https://playwright.dev/docs/locators).
   *
   * Returns when element specified by selector satisfies
   * [`state`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-state) option. Returns `null`
   * if waiting for `hidden` or `detached`.
   *
   * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions make the code
   * wait-for-selector-free.
   *
   * Wait for the [`selector`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-selector) to
   * satisfy [`state`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-state) option (either
   * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-selector) already satisfies
   * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-timeout) milliseconds, the
   * function will throw.
   *
   * **Usage**
   *
   * This method works across navigations:
   *
   * ```js
   * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
   *
   * (async () => {
   *   const browser = await chromium.launch();
   *   const page = await browser.newPage();
   *   for (const currentURL of ['https://google.com', 'https://bbc.com']) {
   *     await page.goto(currentURL);
   *     const element = await page.mainFrame().waitForSelector('img');
   *     console.log('Loaded image: ' + await element.getAttribute('src'));
   *   }
   *   await browser.close();
   * })();
   * ```
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector<K extends keyof HTMLElementTagNameMap>(selector: K, options?: PageWaitForSelectorOptionsNotHidden): Promise<ElementHandleForTag<K>>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more
   * about [locators](https://playwright.dev/docs/locators).
   *
   * Returns when element specified by selector satisfies
   * [`state`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-state) option. Returns `null`
   * if waiting for `hidden` or `detached`.
   *
   * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions make the code
   * wait-for-selector-free.
   *
   * Wait for the [`selector`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-selector) to
   * satisfy [`state`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-state) option (either
   * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-selector) already satisfies
   * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-timeout) milliseconds, the
   * function will throw.
   *
   * **Usage**
   *
   * This method works across navigations:
   *
   * ```js
   * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
   *
   * (async () => {
   *   const browser = await chromium.launch();
   *   const page = await browser.newPage();
   *   for (const currentURL of ['https://google.com', 'https://bbc.com']) {
   *     await page.goto(currentURL);
   *     const element = await page.mainFrame().waitForSelector('img');
   *     console.log('Loaded image: ' + await element.getAttribute('src'));
   *   }
   *   await browser.close();
   * })();
   * ```
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector(selector: string, options?: PageWaitForSelectorOptionsNotHidden): Promise<ElementHandle<SVGElement | HTMLElement>>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more
   * about [locators](https://playwright.dev/docs/locators).
   *
   * Returns when element specified by selector satisfies
   * [`state`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-state) option. Returns `null`
   * if waiting for `hidden` or `detached`.
   *
   * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions make the code
   * wait-for-selector-free.
   *
   * Wait for the [`selector`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-selector) to
   * satisfy [`state`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-state) option (either
   * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-selector) already satisfies
   * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-timeout) milliseconds, the
   * function will throw.
   *
   * **Usage**
   *
   * This method works across navigations:
   *
   * ```js
   * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
   *
   * (async () => {
   *   const browser = await chromium.launch();
   *   const page = await browser.newPage();
   *   for (const currentURL of ['https://google.com', 'https://bbc.com']) {
   *     await page.goto(currentURL);
   *     const element = await page.mainFrame().waitForSelector('img');
   *     console.log('Loaded image: ' + await element.getAttribute('src'));
   *   }
   *   await browser.close();
   * })();
   * ```
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector<K extends keyof HTMLElementTagNameMap>(selector: K, options: PageWaitForSelectorOptions): Promise<ElementHandleForTag<K> | null>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead. Read more
   * about [locators](https://playwright.dev/docs/locators).
   *
   * Returns when element specified by selector satisfies
   * [`state`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-state) option. Returns `null`
   * if waiting for `hidden` or `detached`.
   *
   * **NOTE** Playwright automatically waits for element to be ready before performing an action. Using
   * [Locator](https://playwright.dev/docs/api/class-locator) objects and web-first assertions make the code
   * wait-for-selector-free.
   *
   * Wait for the [`selector`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-selector) to
   * satisfy [`state`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-state) option (either
   * appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-selector) already satisfies
   * the condition, the method will return immediately. If the selector doesn't satisfy the condition for the
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-wait-for-selector-option-timeout) milliseconds, the
   * function will throw.
   *
   * **Usage**
   *
   * This method works across navigations:
   *
   * ```js
   * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
   *
   * (async () => {
   *   const browser = await chromium.launch();
   *   const page = await browser.newPage();
   *   for (const currentURL of ['https://google.com', 'https://bbc.com']) {
   *     await page.goto(currentURL);
   *     const element = await page.mainFrame().waitForSelector('img');
   *     console.log('Loaded image: ' + await element.getAttribute('src'));
   *   }
   *   await browser.close();
   * })();
   * ```
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector(selector: string, options: PageWaitForSelectorOptions): Promise<null | ElementHandle<SVGElement | HTMLElement>>;
  /**
   * Returns the added tag when the script's onload fires or when the script content was injected into frame.
   *
   * Adds a `<script>` tag into the page with the desired url or content.
   * @param options
   */
  addScriptTag(options?: {
    /**
     * Raw JavaScript content to be injected into frame.
     */
    content?: string;
    /**
     * Path to the JavaScript file to be injected into frame. If `path` is a relative path, then it is resolved relative
     * to the current working directory.
     */
    path?: string;
    /**
     * Script type. Use 'module' in order to load a JavaScript ES6 module. See
     * [script](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script) for more details.
     */
    type?: string;
    /**
     * URL of a script to be added.
     */
    url?: string;
  }): Promise<ElementHandle>;
  /**
   * Returns the added tag when the stylesheet's onload fires or when the CSS content was injected into frame.
   *
   * Adds a `<link rel="stylesheet">` tag into the page with the desired url or a `<style type="text/css">` tag with the
   * content.
   * @param options
   */
  addStyleTag(options?: {
    /**
     * Raw CSS content to be injected into frame.
     */
    content?: string;
    /**
     * Path to the CSS file to be injected into frame. If `path` is a relative path, then it is resolved relative to the
     * current working directory.
     */
    path?: string;
    /**
     * URL of the `<link>` tag.
     */
    url?: string;
  }): Promise<ElementHandle>;
  /**
   * **NOTE** Use locator-based [locator.check([options])](https://playwright.dev/docs/api/class-locator#locator-check) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method checks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-check-option-selector) by performing the following
   * steps:
   * 1. Find an element matching
   *    [`selector`](https://playwright.dev/docs/api/class-frame#frame-check-option-selector). If there is none, wait
   *    until a matching element is attached to the DOM.
   * 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws. If the element is
   *    already checked, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-frame#frame-check-option-force) option is set. If the element
   *    is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now checked. If not, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-check-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  check(selector: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  childFrames(): Array<Frame$1>;
  /**
   * **NOTE** Use locator-based [locator.click([options])](https://playwright.dev/docs/api/class-locator#locator-click) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method clicks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-click-option-selector) by performing the following
   * steps:
   * 1. Find an element matching
   *    [`selector`](https://playwright.dev/docs/api/class-frame#frame-click-option-selector). If there is none, wait
   *    until a matching element is attached to the DOM.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-frame#frame-click-option-force) option is set. If the element
   *    is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-frame#frame-click-option-position).
   * 1. Wait for initiated navigations to either succeed or fail, unless
   *    [`noWaitAfter`](https://playwright.dev/docs/api/class-frame#frame-click-option-no-wait-after) option is set.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-click-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  click(selector: string, options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * defaults to 1. See [UIEvent.detail].
     */
    clickCount?: number;
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading. You
     * can opt out of waiting via setting this flag. You would only need this option in the exceptional cases such as
     * navigating to inaccessible pages. Defaults to `false`.
     * @deprecated This option will default to `true` in the future.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Gets the full HTML contents of the frame, including the doctype.
   */
  content(): Promise<string>;
  /**
   * **NOTE** Use locator-based [locator.dblclick([options])](https://playwright.dev/docs/api/class-locator#locator-dblclick)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method double clicks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-dblclick-option-selector) by performing the
   * following steps:
   * 1. Find an element matching
   *    [`selector`](https://playwright.dev/docs/api/class-frame#frame-dblclick-option-selector). If there is none,
   *    wait until a matching element is attached to the DOM.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-frame#frame-dblclick-option-force) option is set. If the
   *    element is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to double click in the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-frame#frame-dblclick-option-position). if the first click
   *    of the `dblclick()` triggers a navigation event, this method will throw.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-dblclick-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   *
   * **NOTE** `frame.dblclick()` dispatches two `click` events and a single `dblclick` event.
   *
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  dblclick(selector: string, options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.dispatchEvent(type[, eventInit, options])](https://playwright.dev/docs/api/class-locator#locator-dispatch-event)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The snippet below dispatches the `click` event on the element. Regardless of the visibility state of the element,
   * `click` is dispatched. This is equivalent to calling
   * [element.click()](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
   *
   * **Usage**
   *
   * ```js
   * await frame.dispatchEvent('button#submit', 'click');
   * ```
   *
   * Under the hood, it creates an instance of an event based on the given
   * [`type`](https://playwright.dev/docs/api/class-frame#frame-dispatch-event-option-type), initializes it with
   * [`eventInit`](https://playwright.dev/docs/api/class-frame#frame-dispatch-event-option-event-init) properties and
   * dispatches it on the element. Events are `composed`, `cancelable` and bubble by default.
   *
   * Since [`eventInit`](https://playwright.dev/docs/api/class-frame#frame-dispatch-event-option-event-init) is
   * event-specific, please refer to the events documentation for the lists of initial properties:
   * - [DeviceMotionEvent](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent/DeviceMotionEvent)
   * - [DeviceOrientationEvent](https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent)
   * - [DragEvent](https://developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
   * - [Event](https://developer.mozilla.org/en-US/docs/Web/API/Event/Event)
   * - [FocusEvent](https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
   * - [KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
   * - [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
   * - [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
   * - [TouchEvent](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
   * - [WheelEvent](https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent)
   *
   * You can also specify `JSHandle` as the property value if you want live objects to be passed into the event:
   *
   * ```js
   * // Note you can only create DataTransfer in Chromium and Firefox
   * const dataTransfer = await frame.evaluateHandle(() => new DataTransfer());
   * await frame.dispatchEvent('#source', 'dragstart', { dataTransfer });
   * ```
   *
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param type DOM event type: `"click"`, `"dragstart"`, etc.
   * @param eventInit Optional event-specific initialization properties.
   * @param options
   */
  dispatchEvent(selector: string, type: string, eventInit?: EvaluationArgument, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * @param source A selector to search for an element to drag. If there are multiple elements satisfying the selector, the first will
   * be used.
   * @param target A selector to search for an element to drop onto. If there are multiple elements satisfying the selector, the first
   * will be used.
   * @param options
   */
  dragAndDrop(source: string, target: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Clicks on the source element at this point relative to the top-left corner of the element's padding box. If not
     * specified, some visible point of the element is used.
     */
    sourcePosition?: {
      x: number;
      y: number;
    };
    /**
     * Defaults to 1. Sends `n` interpolated `mousemove` events to represent travel between the `mousedown` and `mouseup`
     * of the drag. When set to 1, emits a single `mousemove` event at the destination location.
     */
    steps?: number;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Drops on the target element at this point relative to the top-left corner of the element's padding box. If not
     * specified, some visible point of the element is used.
     */
    targetPosition?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method waits for an element matching
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-fill-option-selector), waits for
   * [actionability](https://playwright.dev/docs/actionability) checks, focuses the element, fills it and triggers an `input` event after
   * filling. Note that you can pass an empty string to clear the input field.
   *
   * If the target element is not an `<input>`, `<textarea>` or `[contenteditable]` element, this method throws an
   * error. However, if the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be filled
   * instead.
   *
   * To send fine-grained keyboard events, use
   * [locator.pressSequentially(text[, options])](https://playwright.dev/docs/api/class-locator#locator-press-sequentially).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param value Value to fill for the `<input>`, `<textarea>` or `[contenteditable]` element.
   * @param options
   */
  fill(selector: string, value: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.focus([options])](https://playwright.dev/docs/api/class-locator#locator-focus) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method fetches an element with
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-focus-option-selector) and focuses it. If there's no
   * element matching [`selector`](https://playwright.dev/docs/api/class-frame#frame-focus-option-selector), the method
   * waits until a matching element appears in the DOM.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  focus(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Returns the `frame` or `iframe` element handle which corresponds to this frame.
   *
   * This is an inverse of
   * [elementHandle.contentFrame()](https://playwright.dev/docs/api/class-elementhandle#element-handle-content-frame).
   * Note that returned handle actually belongs to the parent frame.
   *
   * This method throws an error if the frame has been detached before `frameElement()` returns.
   *
   * **Usage**
   *
   * ```js
   * const frameElement = await frame.frameElement();
   * const contentFrame = await frameElement.contentFrame();
   * console.log(frame === contentFrame);  // -> true
   * ```
   *
   */
  frameElement(): Promise<ElementHandle>;
  /**
   * When working with iframes, you can create a frame locator that will enter the iframe and allow selecting elements
   * in that iframe.
   *
   * **Usage**
   *
   * Following snippet locates element with text "Submit" in the iframe with id `my-frame`, like `<iframe
   * id="my-frame">`:
   *
   * ```js
   * const locator = frame.frameLocator('#my-iframe').getByText('Submit');
   * await locator.click();
   * ```
   *
   * @param selector A selector to use when resolving DOM element.
   */
  frameLocator(selector: string): FrameLocator;
  /**
   * **NOTE** Use locator-based
   * [locator.getAttribute(name[, options])](https://playwright.dev/docs/api/class-locator#locator-get-attribute)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns element attribute value.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param name Attribute name to get the value for.
   * @param options
   */
  getAttribute(selector: string, name: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<null | string>;
  /**
   * Allows locating elements by their alt text.
   *
   * **Usage**
   *
   * For example, this method will find the image by alt text "Playwright logo":
   *
   * ```html
   * <img alt='Playwright logo'>
   * ```
   *
   * ```js
   * await page.getByAltText('Playwright logo').click();
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByAltText(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating input elements by the text of the associated `<label>` or `aria-labelledby` element, or by the
   * `aria-label` attribute.
   *
   * **Usage**
   *
   * For example, this method will find inputs by label "Username" and "Password" in the following DOM:
   *
   * ```html
   * <input aria-label="Username">
   * <label for="password-input">Password:</label>
   * <input id="password-input">
   * ```
   *
   * ```js
   * await page.getByLabel('Username').fill('john');
   * await page.getByLabel('Password').fill('secret');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByLabel(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating input elements by the placeholder text.
   *
   * **Usage**
   *
   * For example, consider the following DOM structure.
   *
   * ```html
   * <input type="email" placeholder="name@example.com" />
   * ```
   *
   * You can fill the input after locating it by the placeholder text:
   *
   * ```js
   * await page
   *     .getByPlaceholder('name@example.com')
   *     .fill('playwright@microsoft.com');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByPlaceholder(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating elements by their [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles),
   * [ARIA attributes](https://www.w3.org/TR/wai-aria-1.2/#aria-attributes) and
   * [accessible name](https://w3c.github.io/accname/#dfn-accessible-name).
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <h3>Sign up</h3>
   * <label>
   *   <input type="checkbox" /> Subscribe
   * </label>
   * <br/>
   * <button>Submit</button>
   * ```
   *
   * You can locate each element by its implicit role:
   *
   * ```js
   * await expect(page.getByRole('heading', { name: 'Sign up' })).toBeVisible();
   *
   * await page.getByRole('checkbox', { name: 'Subscribe' }).check();
   *
   * await page.getByRole('button', { name: /submit/i }).click();
   * ```
   *
   * **Details**
   *
   * Role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback
   * about the ARIA guidelines.
   *
   * Many html elements have an implicitly [defined role](https://w3c.github.io/html-aam/#html-element-role-mappings)
   * that is recognized by the role selector. You can find all the
   * [supported roles here](https://www.w3.org/TR/wai-aria-1.2/#role_definitions). ARIA guidelines **do not recommend**
   * duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values.
   * @param role Required aria role.
   * @param options
   */
  getByRole(role: "alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "insertion" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "meter" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem", options?: {
    /**
     * An attribute that is usually set by `aria-checked` or native `<input type=checkbox>` controls.
     *
     * Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked).
     */
    checked?: boolean;
    /**
     * Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By
     * default, matching is case-insensitive and searches for a substring, use
     * [`exact`](https://playwright.dev/docs/api/class-frame#frame-get-by-role-option-exact) to control this behavior.
     *
     * Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description).
     */
    description?: string | RegExp;
    /**
     * An attribute that is usually set by `aria-disabled` or `disabled`.
     *
     * **NOTE** Unlike most other attributes, `disabled` is inherited through the DOM hierarchy. Learn more about
     * [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.2/#aria-disabled).
     *
     */
    disabled?: boolean;
    /**
     * Whether [`name`](https://playwright.dev/docs/api/class-frame#frame-get-by-role-option-name) and
     * [`description`](https://playwright.dev/docs/api/class-frame#frame-get-by-role-option-description) are matched
     * exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note
     * that exact match still trims whitespace.
     */
    exact?: boolean;
    /**
     * An attribute that is usually set by `aria-expanded`.
     *
     * Learn more about [`aria-expanded`](https://www.w3.org/TR/wai-aria-1.2/#aria-expanded).
     */
    expanded?: boolean;
    /**
     * Option that controls whether hidden elements are matched. By default, only non-hidden elements, as
     * [defined by ARIA](https://www.w3.org/TR/wai-aria-1.2/#tree_exclusion), are matched by role selector.
     *
     * Learn more about [`aria-hidden`](https://www.w3.org/TR/wai-aria-1.2/#aria-hidden).
     */
    includeHidden?: boolean;
    /**
     * A number attribute that is usually present for roles `heading`, `listitem`, `row`, `treeitem`, with default values
     * for `<h1>-<h6>` elements.
     *
     * Learn more about [`aria-level`](https://www.w3.org/TR/wai-aria-1.2/#aria-level).
     */
    level?: number;
    /**
     * Option to match the [accessible name](https://w3c.github.io/accname/#dfn-accessible-name). By default, matching is
     * case-insensitive and searches for a substring, use
     * [`exact`](https://playwright.dev/docs/api/class-frame#frame-get-by-role-option-exact) to control this behavior.
     *
     * Learn more about [accessible name](https://w3c.github.io/accname/#dfn-accessible-name).
     */
    name?: string | RegExp;
    /**
     * An attribute that is usually set by `aria-pressed`.
     *
     * Learn more about [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.2/#aria-pressed).
     */
    pressed?: boolean;
    /**
     * An attribute that is usually set by `aria-selected`.
     *
     * Learn more about [`aria-selected`](https://www.w3.org/TR/wai-aria-1.2/#aria-selected).
     */
    selected?: boolean;
  }): Locator;
  /**
   * Locate element by the test id.
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <button data-testid="directions">Itinéraire</button>
   * ```
   *
   * You can locate the element by its test id:
   *
   * ```js
   * await page.getByTestId('directions').click();
   * ```
   *
   * **Details**
   *
   * By default, the `data-testid` attribute is used as a test id. Use
   * [selectors.setTestIdAttribute(attributeName)](https://playwright.dev/docs/api/class-selectors#selectors-set-test-id-attribute)
   * to configure a different test id attribute if necessary.
   *
   * ```js
   * // Set custom test id attribute from @playwright/test config:
   * import { defineConfig } from '@playwright/test';
   *
   * export default defineConfig({
   *   use: {
   *     testIdAttribute: 'data-pw'
   *   },
   * });
   * ```
   *
   * @param testId Id to locate the element by.
   */
  getByTestId(testId: string | RegExp): Locator;
  /**
   * Allows locating elements that contain given text.
   *
   * See also [locator.filter([options])](https://playwright.dev/docs/api/class-locator#locator-filter) that allows to
   * match by another criteria, like an accessible role, and then filter by the text content.
   *
   * **Usage**
   *
   * Consider the following DOM structure:
   *
   * ```html
   * <div>Hello <span>world</span></div>
   * <div>Hello</div>
   * ```
   *
   * You can locate by text substring, exact string, or a regular expression:
   *
   * ```js
   * // Matches <span>
   * page.getByText('world');
   *
   * // Matches first <div>
   * page.getByText('Hello world');
   *
   * // Matches second <div>
   * page.getByText('Hello', { exact: true });
   *
   * // Matches both <div>s
   * page.getByText(/Hello/);
   *
   * // Matches second <div>
   * page.getByText(/^hello$/i);
   * ```
   *
   * **Details**
   *
   * Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into
   * one, turns line breaks into spaces and ignores leading and trailing whitespace.
   *
   * Input elements of the type `button` and `submit` are matched by their `value` instead of the text content. For
   * example, locating by text `"Log in"` matches `<input type=button value="Log in">`.
   * @param text Text to locate the element for.
   * @param options
   */
  getByText(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating elements by their title attribute.
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <span title='Issues count'>25 issues</span>
   * ```
   *
   * You can check the issues count after locating it by the title text:
   *
   * ```js
   * await expect(page.getByTitle('Issues count')).toHaveText('25 issues');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByTitle(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Returns the main resource response. In case of multiple redirects, the navigation will resolve with the response of
   * the last redirect.
   *
   * The method will throw an error if:
   * - there's an SSL error (e.g. in case of self-signed certificates).
   * - target URL is invalid.
   * - the [`timeout`](https://playwright.dev/docs/api/class-frame#frame-goto-option-timeout) is exceeded during
   *   navigation.
   * - the remote server does not respond or is unreachable.
   * - the main resource failed to load.
   *
   * The method will not throw an error when any valid HTTP status code is returned by the remote server, including 404
   * "Not Found" and 500 "Internal Server Error".  The status code for such responses can be retrieved by calling
   * [response.status()](https://playwright.dev/docs/api/class-response#response-status).
   *
   * **NOTE** The method either throws an error or returns a main resource response. The only exceptions are navigation
   * to `about:blank` or navigation to the same URL with a different hash, which would succeed and return `null`.
   *
   * **NOTE** Headless mode doesn't support navigation to a PDF document. See the
   * [upstream issue](https://bugs.chromium.org/p/chromium/issues/detail?id=761295).
   *
   * @param url URL to navigate frame to. The url should include scheme, e.g. `https://`.
   * @param options
   */
  goto(url: string, options?: {
    /**
     * Referer header value. If provided it will take preference over the referer header value set by
     * [page.setExtraHTTPHeaders(headers)](https://playwright.dev/docs/api/class-page#page-set-extra-http-headers).
     */
    referer?: string;
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<null | Response$1>;
  /**
   * **NOTE** Use locator-based [locator.hover([options])](https://playwright.dev/docs/api/class-locator#locator-hover) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method hovers over an element matching
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-hover-option-selector) by performing the following
   * steps:
   * 1. Find an element matching
   *    [`selector`](https://playwright.dev/docs/api/class-frame#frame-hover-option-selector). If there is none, wait
   *    until a matching element is attached to the DOM.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-frame#frame-hover-option-force) option is set. If the element
   *    is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to hover over the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-frame#frame-hover-option-position).
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-hover-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  hover(selector: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.innerHTML([options])](https://playwright.dev/docs/api/class-locator#locator-inner-html)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns `element.innerHTML`.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  innerHTML(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * **NOTE** Use locator-based [locator.innerText([options])](https://playwright.dev/docs/api/class-locator#locator-inner-text)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns `element.innerText`.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  innerText(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * **NOTE** Use locator-based
   * [locator.inputValue([options])](https://playwright.dev/docs/api/class-locator#locator-input-value) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
   *
   * Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the
   * control.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  inputValue(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * **NOTE** Use locator-based [locator.isChecked([options])](https://playwright.dev/docs/api/class-locator#locator-is-checked)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isChecked(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * Returns `true` if the frame has been detached, or `false` otherwise.
   */
  isDetached(): boolean;
  /**
   * **NOTE** Use locator-based
   * [locator.isDisabled([options])](https://playwright.dev/docs/api/class-locator#locator-is-disabled) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is disabled, the opposite of [enabled](https://playwright.dev/docs/actionability#enabled).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isDisabled(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * **NOTE** Use locator-based
   * [locator.isEditable([options])](https://playwright.dev/docs/api/class-locator#locator-is-editable) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is [editable](https://playwright.dev/docs/actionability#editable).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isEditable(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * Returns whether the element is [enabled](https://playwright.dev/docs/actionability#enabled).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isEnabled(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * **NOTE** Use locator-based [locator.isHidden([options])](https://playwright.dev/docs/api/class-locator#locator-is-hidden)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is hidden, the opposite of [visible](https://playwright.dev/docs/actionability#visible).
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-is-hidden-option-selector) that does not match any
   * elements is considered hidden.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isHidden(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * @deprecated This option is ignored.
     * [frame.isHidden(selector[, options])](https://playwright.dev/docs/api/class-frame#frame-is-hidden) does not wait
     * for the element to become hidden and returns immediately.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * **NOTE** Use locator-based [locator.isVisible([options])](https://playwright.dev/docs/api/class-locator#locator-is-visible)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is [visible](https://playwright.dev/docs/actionability#visible).
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-is-visible-option-selector) that does not match any
   * elements is considered not visible.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  isVisible(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * @deprecated This option is ignored.
     * [frame.isVisible(selector[, options])](https://playwright.dev/docs/api/class-frame#frame-is-visible) does not wait
     * for the element to become visible and returns immediately.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * The method returns an element locator that can be used to perform actions on this page / frame. Locator is resolved
   * to the element immediately before performing an action, so a series of actions on the same locator can in fact be
   * performed on different DOM elements. That would happen if the DOM structure between those actions has changed.
   *
   * [Learn more about locators](https://playwright.dev/docs/locators).
   *
   * [Learn more about locators](https://playwright.dev/docs/locators).
   * @param selector A selector to use when resolving DOM element.
   * @param options
   */
  locator(selector: string, options?: {
    /**
     * Narrows down the results of the method to those which contain elements matching this relative locator. For example,
     * `article` that has `text=Playwright` matches `<article><div>Playwright</div></article>`.
     *
     * Inner locator **must be relative** to the outer locator and is queried starting with the outer locator match, not
     * the document root. For example, you can find `content` that has `div` in
     * `<article><content><div>Playwright</div></content></article>`. However, looking for `content` that has `article
     * div` will fail, because the inner locator must be relative and should not use any elements outside the `content`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    has?: Locator;
    /**
     * Matches elements that do not contain an element that matches an inner locator. Inner locator is queried against the
     * outer one. For example, `article` that does not have `div` matches `<article><span>Playwright</span></article>`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    hasNot?: Locator;
    /**
     * Matches elements that do not contain specified text somewhere inside, possibly in a child or a descendant element.
     * When passed a [string], matching is case-insensitive and searches for a substring.
     */
    hasNotText?: string | RegExp;
    /**
     * Matches elements containing specified text somewhere inside, possibly in a child or a descendant element. When
     * passed a [string], matching is case-insensitive and searches for a substring. For example, `"Playwright"` matches
     * `<article><div>Playwright</div></article>`.
     */
    hasText?: string | RegExp;
  }): Locator;
  /**
   * Returns frame's name attribute as specified in the tag.
   *
   * If the name is empty, returns the id attribute instead.
   *
   * **NOTE** This value is calculated once when the frame is created, and will not update if the attribute is changed
   * later.
   *
   */
  name(): string;
  /**
   * Returns the page containing this frame.
   */
  page(): Page$1;
  /**
   * Parent frame, if any. Detached frames and main frames return `null`.
   */
  parentFrame(): null | Frame$1;
  /**
   * **NOTE** Use locator-based [locator.press(key[, options])](https://playwright.dev/docs/api/class-locator#locator-press)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * [`key`](https://playwright.dev/docs/api/class-frame#frame-press-option-key) can specify the intended
   * [keyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) value or a single character
   * to generate the text for. A superset of the
   * [`key`](https://playwright.dev/docs/api/class-frame#frame-press-option-key) values can be found
   * [here](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
   *
   * `F1` - `F12`, `Digit0`- `Digit9`, `KeyA`- `KeyZ`, `Backquote`, `Minus`, `Equal`, `Backslash`, `Backspace`, `Tab`,
   * `Delete`, `Escape`, `ArrowDown`, `End`, `Enter`, `Home`, `Insert`, `PageDown`, `PageUp`, `ArrowRight`, `ArrowUp`,
   * etc.
   *
   * Following modification shortcuts are also supported: `Shift`, `Control`, `Alt`, `Meta`, `ShiftLeft`,
   * `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS.
   *
   * Holding down `Shift` will type the text that corresponds to the
   * [`key`](https://playwright.dev/docs/api/class-frame#frame-press-option-key) in the upper case.
   *
   * If [`key`](https://playwright.dev/docs/api/class-frame#frame-press-option-key) is a single character, it is
   * case-sensitive, so the values `a` and `A` will generate different respective texts.
   *
   * Shortcuts such as `key: "Control+o"`, `key: "Control++` or `key: "Control+Shift+T"` are supported as well. When
   * specified with the modifier, modifier is pressed and being held while the subsequent key is being pressed.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param key Name of the key to press or a character to generate, such as `ArrowLeft` or `a`.
   * @param options
   */
  press(selector: string, key: string, options?: {
    /**
     * Time to wait between `keydown` and `keyup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading. You
     * can opt out of waiting via setting this flag. You would only need this option in the exceptional cases such as
     * navigating to inaccessible pages. Defaults to `false`.
     * @deprecated This option will default to `true` in the future.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.selectOption(values[, options])](https://playwright.dev/docs/api/class-locator#locator-select-option)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method waits for an element matching
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-select-option-option-selector), waits for
   * [actionability](https://playwright.dev/docs/actionability) checks, waits until all specified options are present in the `<select>`
   * element and selects these options.
   *
   * If the target element is not a `<select>` element, this method throws an error. However, if the element is inside
   * the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be used
   * instead.
   *
   * Returns the array of option values that have been successfully selected.
   *
   * Triggers a `change` and `input` event once all the provided options have been selected.
   *
   * **Usage**
   *
   * ```js
   * // Single selection matching the value or label
   * frame.selectOption('select#colors', 'blue');
   *
   * // single selection matching both the value and the label
   * frame.selectOption('select#colors', { label: 'Blue' });
   *
   * // multiple selection
   * frame.selectOption('select#colors', 'red', 'green', 'blue');
   * ```
   *
   * @param selector A selector to query for.
   * @param values Options to select. If the `<select>` has the `multiple` attribute, all matching options are selected, otherwise
   * only the first option matching one of the passed options is selected. String values are matching both values and
   * labels. Option is considered matching if all specified properties match.
   * @param options
   */
  selectOption(selector: string, values: null | string | ElementHandle | ReadonlyArray<string> | {
    /**
     * Matches by `option.value`. Optional.
     */
    value?: string;
    /**
     * Matches by `option.label`. Optional.
     */
    label?: string;
    /**
     * Matches by the index. Optional.
     */
    index?: number;
  } | ReadonlyArray<ElementHandle> | ReadonlyArray<{
    /**
     * Matches by `option.value`. Optional.
     */
    value?: string;
    /**
     * Matches by `option.label`. Optional.
     */
    label?: string;
    /**
     * Matches by the index. Optional.
     */
    index?: number;
  }>, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<Array<string>>;
  /**
   * **NOTE** Use locator-based
   * [locator.setChecked(checked[, options])](https://playwright.dev/docs/api/class-locator#locator-set-checked)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method checks or unchecks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-set-checked-option-selector) by performing the
   * following steps:
   * 1. Find an element matching
   *    [`selector`](https://playwright.dev/docs/api/class-frame#frame-set-checked-option-selector). If there is
   *    none, wait until a matching element is attached to the DOM.
   * 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws.
   * 1. If the element already has the right checked state, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-frame#frame-set-checked-option-force) option is set. If the
   *    element is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now checked or unchecked. If not, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-set-checked-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param checked Whether to check or uncheck the checkbox.
   * @param options
   */
  setChecked(selector: string, checked: boolean, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * This method internally calls [document.write()](https://developer.mozilla.org/en-US/docs/Web/API/Document/write),
   * inheriting all its specific characteristics and behaviors.
   * @param html HTML markup to assign to the page.
   * @param options
   */
  setContent(html: string, options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.setInputFiles(files[, options])](https://playwright.dev/docs/api/class-locator#locator-set-input-files)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then
   * they are resolved relative to the current working directory. For empty array, clears the selected files.
   *
   * This method expects [`selector`](https://playwright.dev/docs/api/class-frame#frame-set-input-files-option-selector)
   * to point to an [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the
   * element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param files
   * @param options
   */
  setInputFiles(selector: string, files: string | ReadonlyArray<string> | {
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  } | ReadonlyArray<{
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  }>, options?: {
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.tap([options])](https://playwright.dev/docs/api/class-locator#locator-tap) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * This method taps an element matching
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-tap-option-selector) by performing the following
   * steps:
   * 1. Find an element matching [`selector`](https://playwright.dev/docs/api/class-frame#frame-tap-option-selector).
   *    If there is none, wait until a matching element is attached to the DOM.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-frame#frame-tap-option-force) option is set. If the element
   *    is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.touchscreen](https://playwright.dev/docs/api/class-page#page-touchscreen) to tap the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-frame#frame-tap-option-position).
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-tap-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   *
   * **NOTE** `frame.tap()` requires that the `hasTouch` option of the browser context be set to true.
   *
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  tap(selector: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.textContent([options])](https://playwright.dev/docs/api/class-locator#locator-text-content) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns `element.textContent`.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  textContent(selector: string, options?: {
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<null | string>;
  /**
   * Returns the page title.
   */
  title(): Promise<string>;
  /**
   * Sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the text. `frame.type` can be used
   * to send fine-grained keyboard events. To fill values in form fields, use
   * [frame.fill(selector, value[, options])](https://playwright.dev/docs/api/class-frame#frame-fill).
   *
   * To press a special key, like `Control` or `ArrowDown`, use
   * [keyboard.press(key[, options])](https://playwright.dev/docs/api/class-keyboard#keyboard-press).
   *
   * **Usage**
   * @deprecated In most cases, you should use
   * [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill) instead. You only need
   * to press keys one by one if there is special keyboard handling on the page - in this case use
   * [locator.pressSequentially(text[, options])](https://playwright.dev/docs/api/class-locator#locator-press-sequentially).
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param text A text to type into a focused element.
   * @param options
   */
  type(selector: string, text: string, options?: {
    /**
     * Time to wait between key presses in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.uncheck([options])](https://playwright.dev/docs/api/class-locator#locator-uncheck)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method checks an element matching
   * [`selector`](https://playwright.dev/docs/api/class-frame#frame-uncheck-option-selector) by performing the following
   * steps:
   * 1. Find an element matching
   *    [`selector`](https://playwright.dev/docs/api/class-frame#frame-uncheck-option-selector). If there is none,
   *    wait until a matching element is attached to the DOM.
   * 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws. If the element is
   *    already unchecked, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-frame#frame-uncheck-option-force) option is set. If the
   *    element is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now unchecked. If not, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-frame#frame-uncheck-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param selector A selector to search for an element. If there are multiple elements satisfying the selector, the first will be
   * used.
   * @param options
   */
  uncheck(selector: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
     * element, the call throws an exception.
     */
    strict?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Returns frame's url.
   */
  url(): string;
  /**
   * Waits for the required load state to be reached.
   *
   * This returns when the frame reaches a required load state, `load` by default. The navigation must have been
   * committed when this method is called. If current document has already reached the required state, resolves
   * immediately.
   *
   * **NOTE** Most of the time, this method is not needed because Playwright
   * [auto-waits before every action](https://playwright.dev/docs/actionability).
   *
   * **Usage**
   *
   * ```js
   * await frame.click('button'); // Click triggers navigation.
   * await frame.waitForLoadState(); // Waits for 'load' state by default.
   * ```
   *
   * @param state Optional load state to wait for, defaults to `load`. If the state has been already reached while loading current
   * document, the method resolves immediately. Can be one of:
   * - `'load'` - wait for the `load` event to be fired.
   * - `'domcontentloaded'` - wait for the `DOMContentLoaded` event to be fired.
   * - `'networkidle'` - **DISCOURAGED** wait until there are no network connections for at least `500` ms. Don't use
   * this method for testing, rely on web assertions to assess readiness instead.
   * @param options
   */
  waitForLoadState(state?: "load" | "domcontentloaded" | "networkidle", options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Waits for the frame navigation and returns the main resource response. In case of multiple redirects, the
   * navigation will resolve with the response of the last redirect. In case of navigation to a different anchor or
   * navigation due to History API usage, the navigation will resolve with `null`.
   *
   * **Usage**
   *
   * This method waits for the frame to navigate to a new URL. It is useful for when you run code which will indirectly
   * cause the frame to navigate. Consider this example:
   *
   * ```js
   * // Start waiting for navigation before clicking. Note no await.
   * const navigationPromise = page.waitForNavigation();
   * await page.getByText('Navigate after timeout').click();
   * await navigationPromise;
   * ```
   *
   * **NOTE** Usage of the [History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API) to change the URL
   * is considered a navigation.
   *
   * @deprecated This method is inherently racy, please use
   * [frame.waitForURL(url[, options])](https://playwright.dev/docs/api/class-frame#frame-wait-for-url) instead.
   * @param options
   */
  waitForNavigation(options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * A glob pattern, regex pattern, URL pattern, or predicate receiving [URL] to match while waiting for the navigation.
     * Note that if the parameter is a string without wildcard characters, the method will wait for navigation to URL that
     * is exactly equal to the string.
     */
    url?: string | RegExp | URLPattern | ((url: URL) => boolean);
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<null | Response$1>;
  /**
   * **NOTE** Never wait for timeout in production. Tests that wait for time are inherently flaky. Use
   * [Locator](https://playwright.dev/docs/api/class-locator) actions and web assertions that wait automatically.
   *
   * Waits for the given [`timeout`](https://playwright.dev/docs/api/class-frame#frame-wait-for-timeout-option-timeout)
   * in milliseconds.
   *
   * Note that `frame.waitForTimeout()` should only be used for debugging. Tests using the timer in production are going
   * to be flaky. Use signals such as network events, selectors becoming visible and others instead.
   * @param timeout A timeout to wait for
   */
  waitForTimeout(timeout: number): Promise<void>;
  /**
   * Waits for the frame to navigate to the given URL.
   *
   * **Usage**
   *
   * ```js
   * await frame.click('a.delayed-navigation'); // Clicking the link will indirectly cause a navigation
   * await frame.waitForURL('**\/target.html');
   * ```
   *
   * @param url A glob pattern, regex pattern, URL pattern, or predicate receiving [URL] to match while waiting for the navigation.
   * Note that if the parameter is a string without wildcard characters, the method will wait for navigation to URL that
   * is exactly equal to the string.
   * @param options
   */
  waitForURL(url: string | RegExp | URLPattern | ((url: URL) => boolean), options?: {
    /**
     * Maximum operation time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
     * `navigationTimeout` option in the config, or by using the
     * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),
     * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When to consider operation succeeded, defaults to `load`. Events can be either:
     * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.
     * - `'load'` - consider operation to be finished when the `load` event is fired.
     * - `'networkidle'` - **DISCOURAGED** consider operation to be finished when there are no network connections for
     *   at least `500` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
     * - `'commit'` - consider operation to be finished when network response is received and the document started
     *   loading.
     */
    waitUntil?: "load" | "domcontentloaded" | "networkidle" | "commit";
  }): Promise<void>;
}
/**
 * BrowserContexts provide a way to operate multiple independent browser sessions.
 *
 * If a page opens another page, e.g. with a `window.open` call, the popup will belong to the parent page's browser
 * context.
 *
 * Playwright allows creating isolated non-persistent browser contexts with
 * [browser.newContext([options])](https://playwright.dev/docs/api/class-browser#browser-new-context) method.
 * Non-persistent browser contexts don't write any browsing data to disk.
 *
 * ```js
 * // Create a new incognito browser context
 * const context = await browser.newContext();
 * // Create a new page inside context.
 * const page = await context.newPage();
 * await page.goto('https://example.com');
 * // Dispose context once it's no longer needed.
 * await context.close();
 * ```
 *
 */
interface BrowserContext {
  /**
   * The method adds a function called
   * [`name`](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding-option-name) on the
   * `window` object of every frame in every page in the context. When called, the function executes
   * [`callback`](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding-option-callback)
   * and returns a [Promise] which resolves to the return value of
   * [`callback`](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding-option-callback).
   * If the
   * [`callback`](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding-option-callback)
   * returns a [Promise], it will be awaited.
   *
   * The first argument of the
   * [`callback`](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-binding-option-callback)
   * function contains information about the caller: `{ browserContext: BrowserContext, page: Page, frame: Frame }`.
   *
   * See [page.exposeBinding(name, callback)](https://playwright.dev/docs/api/class-page#page-expose-binding) for
   * page-only version.
   *
   * **Usage**
   *
   * An example of exposing page URL to all frames in all pages in the context:
   *
   * ```js
   * const { webkit } = require('playwright');  // Or 'chromium' or 'firefox'.
   *
   * (async () => {
   *   const browser = await webkit.launch({ headless: false });
   *   const context = await browser.newContext();
   *   await context.exposeBinding('pageURL', ({ page }) => page.url());
   *   const page = await context.newPage();
   *   await page.setContent(`
   *     <script>
   *       async function onClick() {
   *         document.querySelector('div').textContent = await window.pageURL();
   *       }
   *     </script>
   *     <button onclick="onClick()">Click me</button>
   *     <div></div>
   *   `);
   *   await page.getByRole('button').click();
   * })();
   * ```
   *
   * @param name Name of the function on the window object.
   * @param callback Callback function that will be called in the Playwright's context.
   */
  exposeBinding(name: string, playwrightBinding: (source: BindingSource, ...args: any[]) => any): Promise<Disposable>;
  /**
   * Adds a script which would be evaluated in one of the following scenarios:
   * - Whenever a page is created in the browser context or is navigated.
   * - Whenever a child frame is attached or navigated in any page in the browser context. In this case, the script is
   *   evaluated in the context of the newly attached frame.
   *
   * The script is evaluated after the document was created but before any of its scripts were run. This is useful to
   * amend the JavaScript environment, e.g. to seed `Math.random`.
   *
   * **Usage**
   *
   * An example of overriding `Math.random` before the page loads:
   *
   * ```js
   * // preload.js
   * Math.random = () => 42;
   * ```
   *
   * ```js
   * // In your playwright script, assuming the preload.js file is in same directory.
   * await browserContext.addInitScript({
   *   path: 'preload.js'
   * });
   * ```
   *
   * **NOTE** The order of evaluation of multiple scripts installed via
   * [browserContext.addInitScript(script[, arg])](https://playwright.dev/docs/api/class-browsercontext#browser-context-add-init-script)
   * and [page.addInitScript(script[, arg])](https://playwright.dev/docs/api/class-page#page-add-init-script) is not
   * defined.
   *
   * @param script Script to be evaluated in all pages in the browser context.
   * @param arg Optional argument to pass to
   * [`script`](https://playwright.dev/docs/api/class-browsercontext#browser-context-add-init-script-option-script)
   * (only supported when passing a function).
   */
  addInitScript<Arg>(script: PageFunction<Arg, any> | {
    path?: string;
    content?: string;
  }, arg?: Arg): Promise<Disposable>;
  /**
   * Removes all the listeners of the given type (or all registered listeners if no type given). Allows to wait for
   * async listeners to complete or to ignore subsequent errors from these listeners.
   * @param type
   * @param options
   */
  removeAllListeners(type?: string): this;
  /**
   * Removes all the listeners of the given type (or all registered listeners if no type given). Allows to wait for
   * async listeners to complete or to ignore subsequent errors from these listeners.
   * @param type
   * @param options
   */
  removeAllListeners(type: string | undefined, options: {
    /**
     * Specifies whether to wait for already running listeners and what to do if they throw errors:
     * - `'default'` - do not wait for current listener calls (if any) to finish, if the listener throws, it may result in unhandled error
     * - `'wait'` - wait for current listener calls (if any) to finish
     * - `'ignoreErrors'` - do not wait for current listener calls (if any) to finish, all errors thrown by the listeners after removal are silently caught
     */
    behavior?: 'wait' | 'ignoreErrors' | 'default';
  }): Promise<void>;
  /**
   * This event is not emitted.
   */
  on(event: 'backgroundpage', listener: (page: Page$1) => any): this;
  /**
   * Emitted when Browser context gets closed. This might happen because of one of the following:
   * - Browser context is closed.
   * - Browser application is closed or crashed.
   * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called.
   */
  on(event: 'close', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`.
   *
   * The arguments passed into `console.log` and the page are available on the
   * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument.
   *
   * **Usage**
   *
   * ```js
   * context.on('console', async msg => {
   *   const values = [];
   *   for (const arg of msg.args())
   *     values.push(await arg.jsonValue());
   *   console.log(...values);
   * });
   * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));
   * ```
   *
   */
  on(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must**
   * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or
   * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page
   * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the
   * dialog, and actions like click will never finish.
   *
   * **Usage**
   *
   * ```js
   * context.on('dialog', dialog => {
   *   dialog.accept();
   * });
   * ```
   *
   * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or
   * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog)
   * listeners are present, all dialogs are automatically dismissed.
   *
   */
  on(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Emitted when attachment download started in any page belonging to this context. User can access basic file
   * operations on downloaded content via the passed [Download](https://playwright.dev/docs/api/class-download)
   * instance. See also [page.on('download')](https://playwright.dev/docs/api/class-page#page-event-download) to receive
   * events about a specific page.
   */
  on(event: 'download', listener: (download: Download) => any): this;
  /**
   * Emitted when a frame is attached in any page belonging to this context. See also
   * [page.on('frameattached')](https://playwright.dev/docs/api/class-page#page-event-frame-attached) to receive events
   * about a specific page.
   */
  on(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is detached in any page belonging to this context. See also
   * [page.on('framedetached')](https://playwright.dev/docs/api/class-page#page-event-frame-detached) to receive events
   * about a specific page.
   */
  on(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is navigated to a new url in any page belonging to this context. See also
   * [page.on('framenavigated')](https://playwright.dev/docs/api/class-page#page-event-frame-navigated) to receive
   * events about navigations in a specific page.
   */
  on(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event
   * will also fire for popup pages. See also
   * [page.on('popup')](https://playwright.dev/docs/api/class-page#page-event-popup) to receive events about popups
   * relevant to a specific page.
   *
   * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a
   * popup with `window.open('http://example.com')`, this event will fire when the network request to
   * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen
   * to this network request, use
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * and
   * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request)
   * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page).
   *
   * ```js
   * const newPagePromise = context.waitForEvent('page');
   * await page.getByText('open new page').click();
   * const newPage = await newPagePromise;
   * console.log(await newPage.evaluate('location.href'));
   * ```
   *
   * **NOTE** Use
   * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to
   * wait until the page gets to a particular state (you should not need it in most cases).
   *
   */
  on(event: 'page', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a page in this context is closed. See also
   * [page.on('close')](https://playwright.dev/docs/api/class-page#page-event-close) to receive events about a specific
   * page.
   */
  on(event: 'pageclose', listener: (page: Page$1) => any): this;
  /**
   * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched
   * in any page belonging to this context. See also
   * [page.on('load')](https://playwright.dev/docs/api/class-page#page-event-load) to receive events about a specific
   * page.
   */
  on(event: 'pageload', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a request is issued from any pages created through this context. The [request] object is read-only. To
   * only listen for requests from a particular page, use
   * [page.on('request')](https://playwright.dev/docs/api/class-page#page-event-request).
   *
   * In order to intercept and mutate requests, see
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * or [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route).
   */
  on(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request fails, for example by timing out. To only listen for failed requests from a particular page,
   * use [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed).
   *
   * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request
   * will complete with
   * [browserContext.on('requestfinished')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-finished)
   * event and not with
   * [browserContext.on('requestfailed')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-failed).
   *
   */
  on(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request finishes successfully after downloading the response body. For a successful response, the
   * sequence of events is `request`, `response` and `requestfinished`. To listen for successful requests from a
   * particular page, use
   * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished).
   */
  on(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of
   * events is `request`, `response` and `requestfinished`. To listen for response events from a particular page, use
   * [page.on('response')](https://playwright.dev/docs/api/class-page#page-event-response).
   */
  on(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * **NOTE** Service workers are only supported on Chromium-based browsers.
   *
   * Emitted when new service worker is created in the context.
   */
  on(event: 'serviceworker', listener: (worker: Worker) => any): this;
  /**
   * Emitted when exception is unhandled in any of the pages in this context. To listen for errors from a particular
   * page, use [page.on('pageerror')](https://playwright.dev/docs/api/class-page#page-event-page-error) instead.
   */
  on(event: 'weberror', listener: (webError: WebError) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'backgroundpage', listener: (page: Page$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'close', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'download', listener: (download: Download) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'page', listener: (page: Page$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'pageclose', listener: (page: Page$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'pageload', listener: (page: Page$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'serviceworker', listener: (worker: Worker) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'weberror', listener: (webError: WebError) => any): this;
  /**
   * This event is not emitted.
   */
  addListener(event: 'backgroundpage', listener: (page: Page$1) => any): this;
  /**
   * Emitted when Browser context gets closed. This might happen because of one of the following:
   * - Browser context is closed.
   * - Browser application is closed or crashed.
   * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called.
   */
  addListener(event: 'close', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`.
   *
   * The arguments passed into `console.log` and the page are available on the
   * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument.
   *
   * **Usage**
   *
   * ```js
   * context.on('console', async msg => {
   *   const values = [];
   *   for (const arg of msg.args())
   *     values.push(await arg.jsonValue());
   *   console.log(...values);
   * });
   * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));
   * ```
   *
   */
  addListener(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must**
   * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or
   * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page
   * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the
   * dialog, and actions like click will never finish.
   *
   * **Usage**
   *
   * ```js
   * context.on('dialog', dialog => {
   *   dialog.accept();
   * });
   * ```
   *
   * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or
   * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog)
   * listeners are present, all dialogs are automatically dismissed.
   *
   */
  addListener(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Emitted when attachment download started in any page belonging to this context. User can access basic file
   * operations on downloaded content via the passed [Download](https://playwright.dev/docs/api/class-download)
   * instance. See also [page.on('download')](https://playwright.dev/docs/api/class-page#page-event-download) to receive
   * events about a specific page.
   */
  addListener(event: 'download', listener: (download: Download) => any): this;
  /**
   * Emitted when a frame is attached in any page belonging to this context. See also
   * [page.on('frameattached')](https://playwright.dev/docs/api/class-page#page-event-frame-attached) to receive events
   * about a specific page.
   */
  addListener(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is detached in any page belonging to this context. See also
   * [page.on('framedetached')](https://playwright.dev/docs/api/class-page#page-event-frame-detached) to receive events
   * about a specific page.
   */
  addListener(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is navigated to a new url in any page belonging to this context. See also
   * [page.on('framenavigated')](https://playwright.dev/docs/api/class-page#page-event-frame-navigated) to receive
   * events about navigations in a specific page.
   */
  addListener(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event
   * will also fire for popup pages. See also
   * [page.on('popup')](https://playwright.dev/docs/api/class-page#page-event-popup) to receive events about popups
   * relevant to a specific page.
   *
   * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a
   * popup with `window.open('http://example.com')`, this event will fire when the network request to
   * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen
   * to this network request, use
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * and
   * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request)
   * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page).
   *
   * ```js
   * const newPagePromise = context.waitForEvent('page');
   * await page.getByText('open new page').click();
   * const newPage = await newPagePromise;
   * console.log(await newPage.evaluate('location.href'));
   * ```
   *
   * **NOTE** Use
   * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to
   * wait until the page gets to a particular state (you should not need it in most cases).
   *
   */
  addListener(event: 'page', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a page in this context is closed. See also
   * [page.on('close')](https://playwright.dev/docs/api/class-page#page-event-close) to receive events about a specific
   * page.
   */
  addListener(event: 'pageclose', listener: (page: Page$1) => any): this;
  /**
   * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched
   * in any page belonging to this context. See also
   * [page.on('load')](https://playwright.dev/docs/api/class-page#page-event-load) to receive events about a specific
   * page.
   */
  addListener(event: 'pageload', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a request is issued from any pages created through this context. The [request] object is read-only. To
   * only listen for requests from a particular page, use
   * [page.on('request')](https://playwright.dev/docs/api/class-page#page-event-request).
   *
   * In order to intercept and mutate requests, see
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * or [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route).
   */
  addListener(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request fails, for example by timing out. To only listen for failed requests from a particular page,
   * use [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed).
   *
   * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request
   * will complete with
   * [browserContext.on('requestfinished')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-finished)
   * event and not with
   * [browserContext.on('requestfailed')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-failed).
   *
   */
  addListener(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request finishes successfully after downloading the response body. For a successful response, the
   * sequence of events is `request`, `response` and `requestfinished`. To listen for successful requests from a
   * particular page, use
   * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished).
   */
  addListener(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of
   * events is `request`, `response` and `requestfinished`. To listen for response events from a particular page, use
   * [page.on('response')](https://playwright.dev/docs/api/class-page#page-event-response).
   */
  addListener(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * **NOTE** Service workers are only supported on Chromium-based browsers.
   *
   * Emitted when new service worker is created in the context.
   */
  addListener(event: 'serviceworker', listener: (worker: Worker) => any): this;
  /**
   * Emitted when exception is unhandled in any of the pages in this context. To listen for errors from a particular
   * page, use [page.on('pageerror')](https://playwright.dev/docs/api/class-page#page-event-page-error) instead.
   */
  addListener(event: 'weberror', listener: (webError: WebError) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'backgroundpage', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'close', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'download', listener: (download: Download) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'page', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'pageclose', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'pageload', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'serviceworker', listener: (worker: Worker) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'weberror', listener: (webError: WebError) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'backgroundpage', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'close', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'download', listener: (download: Download) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'page', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'pageclose', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'pageload', listener: (page: Page$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'serviceworker', listener: (worker: Worker) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'weberror', listener: (webError: WebError) => any): this;
  /**
   * This event is not emitted.
   */
  prependListener(event: 'backgroundpage', listener: (page: Page$1) => any): this;
  /**
   * Emitted when Browser context gets closed. This might happen because of one of the following:
   * - Browser context is closed.
   * - Browser application is closed or crashed.
   * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called.
   */
  prependListener(event: 'close', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`.
   *
   * The arguments passed into `console.log` and the page are available on the
   * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument.
   *
   * **Usage**
   *
   * ```js
   * context.on('console', async msg => {
   *   const values = [];
   *   for (const arg of msg.args())
   *     values.push(await arg.jsonValue());
   *   console.log(...values);
   * });
   * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));
   * ```
   *
   */
  prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must**
   * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or
   * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page
   * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the
   * dialog, and actions like click will never finish.
   *
   * **Usage**
   *
   * ```js
   * context.on('dialog', dialog => {
   *   dialog.accept();
   * });
   * ```
   *
   * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or
   * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog)
   * listeners are present, all dialogs are automatically dismissed.
   *
   */
  prependListener(event: 'dialog', listener: (dialog: Dialog) => any): this;
  /**
   * Emitted when attachment download started in any page belonging to this context. User can access basic file
   * operations on downloaded content via the passed [Download](https://playwright.dev/docs/api/class-download)
   * instance. See also [page.on('download')](https://playwright.dev/docs/api/class-page#page-event-download) to receive
   * events about a specific page.
   */
  prependListener(event: 'download', listener: (download: Download) => any): this;
  /**
   * Emitted when a frame is attached in any page belonging to this context. See also
   * [page.on('frameattached')](https://playwright.dev/docs/api/class-page#page-event-frame-attached) to receive events
   * about a specific page.
   */
  prependListener(event: 'frameattached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is detached in any page belonging to this context. See also
   * [page.on('framedetached')](https://playwright.dev/docs/api/class-page#page-event-frame-detached) to receive events
   * about a specific page.
   */
  prependListener(event: 'framedetached', listener: (frame: Frame$1) => any): this;
  /**
   * Emitted when a frame is navigated to a new url in any page belonging to this context. See also
   * [page.on('framenavigated')](https://playwright.dev/docs/api/class-page#page-event-frame-navigated) to receive
   * events about navigations in a specific page.
   */
  prependListener(event: 'framenavigated', listener: (frame: Frame$1) => any): this;
  /**
   * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event
   * will also fire for popup pages. See also
   * [page.on('popup')](https://playwright.dev/docs/api/class-page#page-event-popup) to receive events about popups
   * relevant to a specific page.
   *
   * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a
   * popup with `window.open('http://example.com')`, this event will fire when the network request to
   * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen
   * to this network request, use
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * and
   * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request)
   * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page).
   *
   * ```js
   * const newPagePromise = context.waitForEvent('page');
   * await page.getByText('open new page').click();
   * const newPage = await newPagePromise;
   * console.log(await newPage.evaluate('location.href'));
   * ```
   *
   * **NOTE** Use
   * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to
   * wait until the page gets to a particular state (you should not need it in most cases).
   *
   */
  prependListener(event: 'page', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a page in this context is closed. See also
   * [page.on('close')](https://playwright.dev/docs/api/class-page#page-event-close) to receive events about a specific
   * page.
   */
  prependListener(event: 'pageclose', listener: (page: Page$1) => any): this;
  /**
   * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched
   * in any page belonging to this context. See also
   * [page.on('load')](https://playwright.dev/docs/api/class-page#page-event-load) to receive events about a specific
   * page.
   */
  prependListener(event: 'pageload', listener: (page: Page$1) => any): this;
  /**
   * Emitted when a request is issued from any pages created through this context. The [request] object is read-only. To
   * only listen for requests from a particular page, use
   * [page.on('request')](https://playwright.dev/docs/api/class-page#page-event-request).
   *
   * In order to intercept and mutate requests, see
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * or [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route).
   */
  prependListener(event: 'request', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request fails, for example by timing out. To only listen for failed requests from a particular page,
   * use [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed).
   *
   * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request
   * will complete with
   * [browserContext.on('requestfinished')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-finished)
   * event and not with
   * [browserContext.on('requestfailed')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-failed).
   *
   */
  prependListener(event: 'requestfailed', listener: (request: Request$1) => any): this;
  /**
   * Emitted when a request finishes successfully after downloading the response body. For a successful response, the
   * sequence of events is `request`, `response` and `requestfinished`. To listen for successful requests from a
   * particular page, use
   * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished).
   */
  prependListener(event: 'requestfinished', listener: (request: Request$1) => any): this;
  /**
   * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of
   * events is `request`, `response` and `requestfinished`. To listen for response events from a particular page, use
   * [page.on('response')](https://playwright.dev/docs/api/class-page#page-event-response).
   */
  prependListener(event: 'response', listener: (response: Response$1) => any): this;
  /**
   * **NOTE** Service workers are only supported on Chromium-based browsers.
   *
   * Emitted when new service worker is created in the context.
   */
  prependListener(event: 'serviceworker', listener: (worker: Worker) => any): this;
  /**
   * Emitted when exception is unhandled in any of the pages in this context. To listen for errors from a particular
   * page, use [page.on('pageerror')](https://playwright.dev/docs/api/class-page#page-event-page-error) instead.
   */
  prependListener(event: 'weberror', listener: (webError: WebError) => any): this;
  /**
   * Adds cookies into this browser context. All pages within this context will have these cookies installed. Cookies
   * can be obtained via
   * [browserContext.cookies([urls])](https://playwright.dev/docs/api/class-browsercontext#browser-context-cookies).
   *
   * **Usage**
   *
   * ```js
   * await browserContext.addCookies([cookieObject1, cookieObject2]);
   * ```
   *
   * @param cookies
   */
  addCookies(cookies: ReadonlyArray<{
    name: string;
    value: string;
    /**
     * Either `url` or both `domain` and `path` are required. Optional.
     */
    url?: string;
    /**
     * For the cookie to apply to all subdomains as well, prefix domain with a dot, like this: ".example.com". Either
     * `url` or both `domain` and `path` are required. Optional.
     */
    domain?: string;
    /**
     * Either `url` or both `domain` and `path` are required. Optional.
     */
    path?: string;
    /**
     * Unix time in seconds. Optional.
     */
    expires?: number;
    /**
     * Optional.
     */
    httpOnly?: boolean;
    /**
     * Optional.
     */
    secure?: boolean;
    /**
     * Optional.
     */
    sameSite?: "Strict" | "Lax" | "None";
    /**
     * For partitioned third-party cookies (aka
     * [CHIPS](https://developer.mozilla.org/en-US/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies)), the
     * partition key. Optional.
     */
    partitionKey?: string;
  }>): Promise<void>;
  /**
   * Returns an empty list.
   * @deprecated Background pages have been removed from Chromium together with Manifest V2 extensions.
   */
  backgroundPages(): Array<Page$1>;
  /**
   * Gets the browser instance that owns the context. Returns `null` if the context is created outside of normal
   * browser, e.g. Android or Electron.
   */
  browser(): null | Browser$1;
  /**
   * Removes cookies from context. Accepts optional filter.
   *
   * **Usage**
   *
   * ```js
   * await context.clearCookies();
   * await context.clearCookies({ name: 'session-id' });
   * await context.clearCookies({ domain: 'my-origin.com' });
   * await context.clearCookies({ domain: /.*my-origin\.com/ });
   * await context.clearCookies({ path: '/api/v1' });
   * await context.clearCookies({ name: 'session-id', domain: 'my-origin.com' });
   * ```
   *
   * @param options
   */
  clearCookies(options?: {
    /**
     * Only removes cookies with the given domain.
     */
    domain?: string | RegExp;
    /**
     * Only removes cookies with the given name.
     */
    name?: string | RegExp;
    /**
     * Only removes cookies with the given path.
     */
    path?: string | RegExp;
  }): Promise<void>;
  /**
   * Clears all permission overrides for the browser context.
   *
   * **Usage**
   *
   * ```js
   * const context = await browser.newContext();
   * await context.grantPermissions(['clipboard-read']);
   * // do stuff ..
   * context.clearPermissions();
   * ```
   *
   */
  clearPermissions(): Promise<void>;
  /**
   * Closes the browser context. All the pages that belong to the browser context will be closed.
   *
   * **NOTE** The default browser context cannot be closed.
   *
   * @param options
   */
  close(options?: {
    /**
     * The reason to be reported to the operations interrupted by the context closure.
     */
    reason?: string;
  }): Promise<void>;
  /**
   * If no URLs are specified, this method returns all cookies. If URLs are specified, only cookies that affect those
   * URLs are returned.
   * @param urls Optional list of URLs.
   */
  cookies(urls?: string | ReadonlyArray<string>): Promise<Array<Cookie$1>>;
  /**
   * The method adds a function called
   * [`name`](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-function-option-name) on the
   * `window` object of every frame in every page in the context. When called, the function executes
   * [`callback`](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-function-option-callback)
   * and returns a [Promise] which resolves to the return value of
   * [`callback`](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-function-option-callback).
   *
   * If the
   * [`callback`](https://playwright.dev/docs/api/class-browsercontext#browser-context-expose-function-option-callback)
   * returns a [Promise], it will be awaited.
   *
   * See [page.exposeFunction(name, callback)](https://playwright.dev/docs/api/class-page#page-expose-function) for
   * page-only version.
   *
   * **Usage**
   *
   * An example of adding a `sha256` function to all pages in the context:
   *
   * ```js
   * const { webkit } = require('playwright');  // Or 'chromium' or 'firefox'.
   * const crypto = require('crypto');
   *
   * (async () => {
   *   const browser = await webkit.launch({ headless: false });
   *   const context = await browser.newContext();
   *   await context.exposeFunction('sha256', text =>
   *     crypto.createHash('sha256').update(text).digest('hex'),
   *   );
   *   const page = await context.newPage();
   *   await page.setContent(`
   *     <script>
   *       async function onClick() {
   *         document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
   *       }
   *     </script>
   *     <button onclick="onClick()">Click me</button>
   *     <div></div>
   *   `);
   *   await page.getByRole('button').click();
   * })();
   * ```
   *
   * @param name Name of the function on the window object.
   * @param callback Callback function that will be called in the Playwright's context.
   */
  exposeFunction(name: string, callback: Function): Promise<Disposable>;
  /**
   * Grants specified permissions to the browser context. Only grants corresponding permissions to the given origin if
   * specified.
   * @param permissions A list of permissions to grant.
   *
   * **NOTE** Supported permissions differ between browsers, and even between different versions of the same browser.
   * Any permission may stop working after an update.
   *
   * Here are some permissions that may be supported by some browsers:
   * - `'accelerometer'`
   * - `'ambient-light-sensor'`
   * - `'background-sync'`
   * - `'camera'`
   * - `'clipboard-read'`
   * - `'clipboard-write'`
   * - `'geolocation'`
   * - `'gyroscope'`
   * - `'local-fonts'`
   * - `'local-network-access'`
   * - `'magnetometer'`
   * - `'microphone'`
   * - `'midi-sysex'` (system-exclusive midi)
   * - `'midi'`
   * - `'notifications'`
   * - `'payment-handler'`
   * - `'storage-access'`
   * - `'screen-wake-lock'`
   * @param options
   */
  grantPermissions(permissions: ReadonlyArray<string>, options?: {
    /**
     * The [origin] to grant permissions to, e.g. "https://example.com".
     */
    origin?: string;
  }): Promise<void>;
  /**
   * Indicates that the browser context is in the process of closing or has already been closed.
   */
  isClosed(): boolean;
  /**
   * **NOTE** CDP sessions are only supported on Chromium-based browsers.
   *
   * Returns the newly created session.
   * @param page Target to create new session for. For backwards-compatibility, this parameter is named `page`, but it can be a
   * `Page` or `Frame` type.
   */
  newCDPSession(page: Page$1 | Frame$1): Promise<CDPSession>;
  /**
   * Creates a new page in the browser context.
   */
  newPage(): Promise<Page$1>;
  /**
   * Returns all open pages in the context.
   */
  pages(): Array<Page$1>;
  /**
   * Routing provides the capability to modify network requests that are made by any page in the browser context. Once
   * route is enabled, every request matching the url pattern will stall unless it's continued, fulfilled or aborted.
   *
   * **NOTE**
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * will not intercept requests intercepted by Service Worker. See
   * [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when
   * using request interception by setting
   * [`serviceWorkers`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-service-workers) to
   * `'block'`.
   *
   * **Usage**
   *
   * An example of a naive handler that aborts all image requests:
   *
   * ```js
   * const context = await browser.newContext();
   * await context.route('**\/*.{png,jpg,jpeg}', route => route.abort());
   * const page = await context.newPage();
   * await page.goto('https://example.com');
   * await browser.close();
   * ```
   *
   * or the same snippet using a regex pattern instead:
   *
   * ```js
   * const context = await browser.newContext();
   * await context.route(/(\.png$)|(\.jpg$)/, route => route.abort());
   * const page = await context.newPage();
   * await page.goto('https://example.com');
   * await browser.close();
   * ```
   *
   * It is possible to examine the request to decide the route action. For example, mocking all requests that contain
   * some post data, and leaving all other requests as is:
   *
   * ```js
   * await context.route('/api/**', async route => {
   *   if (route.request().postData().includes('my-string'))
   *     await route.fulfill({ body: 'mocked-data' });
   *   else
   *     await route.continue();
   * });
   * ```
   *
   * Page routes (set up with
   * [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route)) take precedence over
   * browser context routes when request matches both handlers.
   *
   * To remove a route with its handler you can use
   * [browserContext.unroute(url[, handler])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute).
   *
   * **NOTE** Enabling routing disables http cache.
   *
   * @param url A glob pattern, regex pattern, URL pattern, or predicate that receives a [URL] to match during routing. If
   * [`baseURL`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-base-url) is set in the
   * context options and the provided URL is a string that does not start with `*`, it is resolved using the
   * [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor.
   * @param handler handler function to route the request.
   * @param options
   */
  route(url: string | RegExp | URLPattern | ((url: URL) => boolean), handler: ((route: Route, request: Request$1) => Promise<any> | any), options?: {
    /**
     * How often a route should be used. By default it will be used every time.
     */
    times?: number;
  }): Promise<Disposable>;
  /**
   * If specified the network requests that are made in the context will be served from the HAR file. Read more about
   * [Replaying from HAR](https://playwright.dev/docs/mock#replaying-from-har).
   *
   * Playwright will not serve requests intercepted by Service Worker from the HAR file. See
   * [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when
   * using request interception by setting
   * [`serviceWorkers`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-service-workers) to
   * `'block'`.
   * @param har Path to a [HAR](http://www.softwareishard.com/blog/har-12-spec) file with prerecorded network data. If `path` is a
   * relative path, then it is resolved relative to the current working directory.
   * @param options
   */
  routeFromHAR(har: string, options?: {
    /**
     * - If set to 'abort' any request not found in the HAR file will be aborted.
     * - If set to 'fallback' falls through to the next route handler in the handler chain.
     *
     * Defaults to abort.
     */
    notFound?: "abort" | "fallback";
    /**
     * If specified, updates the given HAR with the actual network information instead of serving from file. The file is
     * written to disk when
     * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) is
     * called.
     */
    update?: boolean;
    /**
     * Optional setting to control resource content management. If `attach` is specified, resources are persisted as
     * separate files or entries in the ZIP archive. If `embed` is specified, content is stored inline the HAR file.
     */
    updateContent?: "embed" | "attach";
    /**
     * When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page,
     * cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to
     * `minimal`.
     */
    updateMode?: "full" | "minimal";
    /**
     * A glob pattern, regular expression or predicate to match the request URL. Only requests with URL matching the
     * pattern will be served from the HAR file. If not specified, all requests are served from the HAR file.
     */
    url?: string | RegExp;
  }): Promise<void>;
  /**
   * This method allows to modify websocket connections that are made by any page in the browser context.
   *
   * Note that only `WebSocket`s created after this method was called will be routed. It is recommended to call this
   * method before creating any pages.
   *
   * **Usage**
   *
   * Below is an example of a simple handler that blocks some websocket messages. See
   * [WebSocketRoute](https://playwright.dev/docs/api/class-websocketroute) for more details and examples.
   *
   * ```js
   * await context.routeWebSocket('/ws', async ws => {
   *   ws.routeSend(message => {
   *     if (message === 'to-be-blocked')
   *       return;
   *     ws.send(message);
   *   });
   *   await ws.connect();
   * });
   * ```
   *
   * @param url Only WebSockets with the url matching this pattern will be routed. A string pattern can be relative to the
   * [`baseURL`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-base-url) context option.
   * @param handler Handler function to route the WebSocket.
   */
  routeWebSocket(url: string | RegExp | ((url: URL) => boolean), handler: ((websocketroute: WebSocketRoute) => Promise<any> | any)): Promise<void>;
  /**
   * **NOTE** Service workers are only supported on Chromium-based browsers.
   *
   * All existing service workers in the context.
   */
  serviceWorkers(): Array<Worker>;
  /**
   * This setting will change the default maximum navigation time for the following methods and related shortcuts:
   * - [page.goBack([options])](https://playwright.dev/docs/api/class-page#page-go-back)
   * - [page.goForward([options])](https://playwright.dev/docs/api/class-page#page-go-forward)
   * - [page.goto(url[, options])](https://playwright.dev/docs/api/class-page#page-goto)
   * - [page.reload([options])](https://playwright.dev/docs/api/class-page#page-reload)
   * - [page.setContent(html[, options])](https://playwright.dev/docs/api/class-page#page-set-content)
   * - [page.waitForNavigation([options])](https://playwright.dev/docs/api/class-page#page-wait-for-navigation)
   *
   * **NOTE**
   * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)
   * and [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) take
   * priority over
   * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout).
   *
   * @param timeout Maximum navigation time in milliseconds
   */
  setDefaultNavigationTimeout(timeout: number): void;
  /**
   * This setting will change the default maximum time for all the methods accepting
   * [`timeout`](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout-option-timeout)
   * option.
   *
   * **NOTE**
   * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout),
   * [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) and
   * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout)
   * take priority over
   * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout).
   *
   * @param timeout Maximum time in milliseconds. Pass `0` to disable timeout.
   */
  setDefaultTimeout(timeout: number): void;
  /**
   * The extra HTTP headers will be sent with every request initiated by any page in the context. These headers are
   * merged with page-specific extra HTTP headers set with
   * [page.setExtraHTTPHeaders(headers)](https://playwright.dev/docs/api/class-page#page-set-extra-http-headers). If
   * page overrides a particular header, page-specific header value will be used instead of the browser context header
   * value.
   *
   * **NOTE**
   * [browserContext.setExtraHTTPHeaders(headers)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-extra-http-headers)
   * does not guarantee the order of headers in the outgoing requests.
   *
   * @param headers An object containing additional HTTP headers to be sent with every request. All header values must be strings.
   */
  setExtraHTTPHeaders(headers: {
    [key: string]: string;
  }): Promise<void>;
  /**
   * Sets the context's geolocation. Passing `null` or `undefined` emulates position unavailable.
   *
   * **Usage**
   *
   * ```js
   * await browserContext.setGeolocation({ latitude: 59.95, longitude: 30.31667 });
   * ```
   *
   * **NOTE** Consider using
   * [browserContext.grantPermissions(permissions[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
   * to grant permissions for the browser context pages to read its geolocation.
   *
   * @param geolocation
   */
  setGeolocation(geolocation: null | {
    /**
     * Latitude between -90 and 90.
     */
    latitude: number;
    /**
     * Longitude between -180 and 180.
     */
    longitude: number;
    /**
     * Non-negative accuracy value. Defaults to `0`.
     */
    accuracy?: number;
  }): Promise<void>;
  /**
   * @deprecated Browsers may cache credentials after successful authentication. Create a new browser context instead.
   * @param httpCredentials
   */
  setHTTPCredentials(httpCredentials: null | {
    username: string;
    password: string;
  }): Promise<void>;
  /**
   * @param offline Whether to emulate network being offline for the browser context.
   */
  setOffline(offline: boolean): Promise<void>;
  /**
   * Clears the existing cookies, local storage and IndexedDB entries for all origins and sets the new storage state.
   *
   * **Usage**
   *
   * ```js
   * // Load storage state from a file and apply it to the context.
   * await context.setStorageState('state.json');
   * ```
   *
   * @param storageState Learn more about [storage state and auth](https://playwright.dev/docs/auth).
   *
   * Populates context with given storage state. This option can be used to initialize context with logged-in
   * information obtained via
   * [browserContext.storageState([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-storage-state).
   */
  setStorageState(storageState: string | {
    /**
     * Cookies to set for context
     */
    cookies: Array<{
      name: string;
      value: string;
      /**
       * Domain and path are required. For the cookie to apply to all subdomains as well, prefix domain with a dot, like
       * this: ".example.com"
       */
      domain: string;
      /**
       * Domain and path are required
       */
      path: string;
      /**
       * Unix time in seconds.
       */
      expires: number;
      httpOnly: boolean;
      secure: boolean;
      /**
       * sameSite flag
       */
      sameSite: "Strict" | "Lax" | "None";
    }>;
    origins: Array<{
      origin: string;
      /**
       * localStorage to set for context
       */
      localStorage: Array<{
        name: string;
        value: string;
      }>;
    }>;
  }): Promise<void>;
  /**
   * Returns storage state for this browser context, contains current cookies, local storage snapshot and IndexedDB
   * snapshot.
   * @param options
   */
  storageState(options?: {
    /**
     * Set to `true` to include [IndexedDB](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) in the storage
     * state snapshot. If your application uses IndexedDB to store authentication tokens, like Firebase Authentication,
     * enable this.
     */
    indexedDB?: boolean;
    /**
     * The file path to save the storage state to. If
     * [`path`](https://playwright.dev/docs/api/class-browsercontext#browser-context-storage-state-option-path) is a
     * relative path, then it is resolved relative to current working directory. If no path is provided, storage state is
     * still returned, but won't be saved to the disk.
     */
    path?: string;
  }): Promise<{
    cookies: Array<{
      name: string;
      value: string;
      domain: string;
      path: string;
      /**
       * Unix time in seconds.
       */
      expires: number;
      httpOnly: boolean;
      secure: boolean;
      sameSite: "Strict" | "Lax" | "None";
    }>;
    origins: Array<{
      origin: string;
      localStorage: Array<{
        name: string;
        value: string;
      }>;
    }>;
  }>;
  /**
   * Removes a route created with
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route).
   * When [`handler`](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-option-handler) is
   * not specified, removes all routes for the
   * [`url`](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-option-url).
   * @param url A glob pattern, regex pattern, URL pattern, or predicate receiving [URL] used to register a routing with
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route).
   * @param handler Optional handler function used to register a routing with
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route).
   */
  unroute(url: string | RegExp | URLPattern | ((url: URL) => boolean), handler?: ((route: Route, request: Request$1) => Promise<any> | any)): Promise<void>;
  /**
   * Removes all routes created with
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * and
   * [browserContext.routeFromHAR(har[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har).
   * @param options
   */
  unrouteAll(options?: {
    /**
     * Specifies whether to wait for already running handlers and what to do if they throw errors:
     * - `'default'` - do not wait for current handler calls (if any) to finish, if unrouted handler throws, it may
     *   result in unhandled error
     * - `'wait'` - wait for current handler calls (if any) to finish
     * - `'ignoreErrors'` - do not wait for current handler calls (if any) to finish, all errors thrown by the handlers
     *   after unrouting are silently caught
     */
    behavior?: "wait" | "ignoreErrors" | "default";
  }): Promise<void>;
  /**
   * This event is not emitted.
   */
  waitForEvent(event: 'backgroundpage', optionsOrPredicate?: {
    predicate?: (page: Page$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((page: Page$1) => boolean | Promise<boolean>)): Promise<Page$1>;
  /**
   * Emitted when Browser context gets closed. This might happen because of one of the following:
   * - Browser context is closed.
   * - Browser application is closed or crashed.
   * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called.
   */
  waitForEvent(event: 'close', optionsOrPredicate?: {
    predicate?: (browserContext: BrowserContext) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((browserContext: BrowserContext) => boolean | Promise<boolean>)): Promise<BrowserContext>;
  /**
   * Emitted when JavaScript within the page calls one of console API methods, e.g. `console.log` or `console.dir`.
   *
   * The arguments passed into `console.log` and the page are available on the
   * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) event handler argument.
   *
   * **Usage**
   *
   * ```js
   * context.on('console', async msg => {
   *   const values = [];
   *   for (const arg of msg.args())
   *     values.push(await arg.jsonValue());
   *   console.log(...values);
   * });
   * await page.evaluate(() => console.log('hello', 5, { foo: 'bar' }));
   * ```
   *
   */
  waitForEvent(event: 'console', optionsOrPredicate?: {
    predicate?: (consoleMessage: ConsoleMessage$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((consoleMessage: ConsoleMessage$1) => boolean | Promise<boolean>)): Promise<ConsoleMessage$1>;
  /**
   * Emitted when a JavaScript dialog appears, such as `alert`, `prompt`, `confirm` or `beforeunload`. Listener **must**
   * either [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or
   * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page
   * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the
   * dialog, and actions like click will never finish.
   *
   * **Usage**
   *
   * ```js
   * context.on('dialog', dialog => {
   *   dialog.accept();
   * });
   * ```
   *
   * **NOTE** When no [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) or
   * [browserContext.on('dialog')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-dialog)
   * listeners are present, all dialogs are automatically dismissed.
   *
   */
  waitForEvent(event: 'dialog', optionsOrPredicate?: {
    predicate?: (dialog: Dialog) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((dialog: Dialog) => boolean | Promise<boolean>)): Promise<Dialog>;
  /**
   * Emitted when attachment download started in any page belonging to this context. User can access basic file
   * operations on downloaded content via the passed [Download](https://playwright.dev/docs/api/class-download)
   * instance. See also [page.on('download')](https://playwright.dev/docs/api/class-page#page-event-download) to receive
   * events about a specific page.
   */
  waitForEvent(event: 'download', optionsOrPredicate?: {
    predicate?: (download: Download) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((download: Download) => boolean | Promise<boolean>)): Promise<Download>;
  /**
   * Emitted when a frame is attached in any page belonging to this context. See also
   * [page.on('frameattached')](https://playwright.dev/docs/api/class-page#page-event-frame-attached) to receive events
   * about a specific page.
   */
  waitForEvent(event: 'frameattached', optionsOrPredicate?: {
    predicate?: (frame: Frame$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((frame: Frame$1) => boolean | Promise<boolean>)): Promise<Frame$1>;
  /**
   * Emitted when a frame is detached in any page belonging to this context. See also
   * [page.on('framedetached')](https://playwright.dev/docs/api/class-page#page-event-frame-detached) to receive events
   * about a specific page.
   */
  waitForEvent(event: 'framedetached', optionsOrPredicate?: {
    predicate?: (frame: Frame$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((frame: Frame$1) => boolean | Promise<boolean>)): Promise<Frame$1>;
  /**
   * Emitted when a frame is navigated to a new url in any page belonging to this context. See also
   * [page.on('framenavigated')](https://playwright.dev/docs/api/class-page#page-event-frame-navigated) to receive
   * events about navigations in a specific page.
   */
  waitForEvent(event: 'framenavigated', optionsOrPredicate?: {
    predicate?: (frame: Frame$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((frame: Frame$1) => boolean | Promise<boolean>)): Promise<Frame$1>;
  /**
   * The event is emitted when a new Page is created in the BrowserContext. The page may still be loading. The event
   * will also fire for popup pages. See also
   * [page.on('popup')](https://playwright.dev/docs/api/class-page#page-event-popup) to receive events about popups
   * relevant to a specific page.
   *
   * The earliest moment that page is available is when it has navigated to the initial url. For example, when opening a
   * popup with `window.open('http://example.com')`, this event will fire when the network request to
   * "http://example.com" is done and its response has started loading in the popup. If you would like to route/listen
   * to this network request, use
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * and
   * [browserContext.on('request')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request)
   * respectively instead of similar methods on the [Page](https://playwright.dev/docs/api/class-page).
   *
   * ```js
   * const newPagePromise = context.waitForEvent('page');
   * await page.getByText('open new page').click();
   * const newPage = await newPagePromise;
   * console.log(await newPage.evaluate('location.href'));
   * ```
   *
   * **NOTE** Use
   * [page.waitForLoadState([state, options])](https://playwright.dev/docs/api/class-page#page-wait-for-load-state) to
   * wait until the page gets to a particular state (you should not need it in most cases).
   *
   */
  waitForEvent(event: 'page', optionsOrPredicate?: {
    predicate?: (page: Page$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((page: Page$1) => boolean | Promise<boolean>)): Promise<Page$1>;
  /**
   * Emitted when a page in this context is closed. See also
   * [page.on('close')](https://playwright.dev/docs/api/class-page#page-event-close) to receive events about a specific
   * page.
   */
  waitForEvent(event: 'pageclose', optionsOrPredicate?: {
    predicate?: (page: Page$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((page: Page$1) => boolean | Promise<boolean>)): Promise<Page$1>;
  /**
   * Emitted when the JavaScript [`load`](https://developer.mozilla.org/en-US/docs/Web/Events/load) event is dispatched
   * in any page belonging to this context. See also
   * [page.on('load')](https://playwright.dev/docs/api/class-page#page-event-load) to receive events about a specific
   * page.
   */
  waitForEvent(event: 'pageload', optionsOrPredicate?: {
    predicate?: (page: Page$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((page: Page$1) => boolean | Promise<boolean>)): Promise<Page$1>;
  /**
   * Emitted when a request is issued from any pages created through this context. The [request] object is read-only. To
   * only listen for requests from a particular page, use
   * [page.on('request')](https://playwright.dev/docs/api/class-page#page-event-request).
   *
   * In order to intercept and mutate requests, see
   * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route)
   * or [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route).
   */
  waitForEvent(event: 'request', optionsOrPredicate?: {
    predicate?: (request: Request$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((request: Request$1) => boolean | Promise<boolean>)): Promise<Request$1>;
  /**
   * Emitted when a request fails, for example by timing out. To only listen for failed requests from a particular page,
   * use [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed).
   *
   * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request
   * will complete with
   * [browserContext.on('requestfinished')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-finished)
   * event and not with
   * [browserContext.on('requestfailed')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-request-failed).
   *
   */
  waitForEvent(event: 'requestfailed', optionsOrPredicate?: {
    predicate?: (request: Request$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((request: Request$1) => boolean | Promise<boolean>)): Promise<Request$1>;
  /**
   * Emitted when a request finishes successfully after downloading the response body. For a successful response, the
   * sequence of events is `request`, `response` and `requestfinished`. To listen for successful requests from a
   * particular page, use
   * [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished).
   */
  waitForEvent(event: 'requestfinished', optionsOrPredicate?: {
    predicate?: (request: Request$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((request: Request$1) => boolean | Promise<boolean>)): Promise<Request$1>;
  /**
   * Emitted when [response] status and headers are received for a request. For a successful response, the sequence of
   * events is `request`, `response` and `requestfinished`. To listen for response events from a particular page, use
   * [page.on('response')](https://playwright.dev/docs/api/class-page#page-event-response).
   */
  waitForEvent(event: 'response', optionsOrPredicate?: {
    predicate?: (response: Response$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((response: Response$1) => boolean | Promise<boolean>)): Promise<Response$1>;
  /**
   * **NOTE** Service workers are only supported on Chromium-based browsers.
   *
   * Emitted when new service worker is created in the context.
   */
  waitForEvent(event: 'serviceworker', optionsOrPredicate?: {
    predicate?: (worker: Worker) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((worker: Worker) => boolean | Promise<boolean>)): Promise<Worker>;
  /**
   * Emitted when exception is unhandled in any of the pages in this context. To listen for errors from a particular
   * page, use [page.on('pageerror')](https://playwright.dev/docs/api/class-page#page-event-page-error) instead.
   */
  waitForEvent(event: 'weberror', optionsOrPredicate?: {
    predicate?: (webError: WebError) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((webError: WebError) => boolean | Promise<boolean>)): Promise<WebError>;
  /**
   * Playwright has ability to mock clock and passage of time.
   */
  clock: Clock;
  /**
   * Virtual WebAuthn authenticator for this context. Lets tests seed credentials and intercept
   * `navigator.credentials.create()` / `navigator.credentials.get()` ceremonies.
   */
  credentials: Credentials;
  /**
   * Debugger allows to pause and resume the execution.
   */
  debugger: Debugger$1;
  /**
   * API testing helper associated with this context. Requests made with this API will use context cookies.
   */
  request: APIRequestContext;
  tracing: Tracing$1;
  [Symbol.asyncDispose](): Promise<void>;
}
/**
 * A Browser is created via
 * [browserType.launch([options])](https://playwright.dev/docs/api/class-browsertype#browser-type-launch). An example
 * of using a [Browser](https://playwright.dev/docs/api/class-browser) to create a
 * [Page](https://playwright.dev/docs/api/class-page):
 *
 * ```js
 * const { firefox } = require('playwright');  // Or 'chromium' or 'webkit'.
 *
 * (async () => {
 *   const browser = await firefox.launch();
 *   const page = await browser.newPage();
 *   await page.goto('https://example.com');
 *   await browser.close();
 * })();
 * ```
 *
 */
interface Browser$1 {
  /**
   * Removes all the listeners of the given type (or all registered listeners if no type given). Allows to wait for
   * async listeners to complete or to ignore subsequent errors from these listeners.
   * @param type
   * @param options
   */
  removeAllListeners(type?: string): this;
  /**
   * Removes all the listeners of the given type (or all registered listeners if no type given). Allows to wait for
   * async listeners to complete or to ignore subsequent errors from these listeners.
   * @param type
   * @param options
   */
  removeAllListeners(type: string | undefined, options: {
    /**
     * Specifies whether to wait for already running listeners and what to do if they throw errors:
     * - `'default'` - do not wait for current listener calls (if any) to finish, if the listener throws, it may result in unhandled error
     * - `'wait'` - wait for current listener calls (if any) to finish
     * - `'ignoreErrors'` - do not wait for current listener calls (if any) to finish, all errors thrown by the listeners after removal are silently caught
     */
    behavior?: 'wait' | 'ignoreErrors' | 'default';
  }): Promise<void>;
  /**
   * Emitted when a new browser context is created.
   */
  on(event: 'context', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Emitted when Browser gets disconnected from the browser application. This might happen because of one of the
   * following:
   * - Browser application is closed or crashed.
   * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called.
   */
  on(event: 'disconnected', listener: (browser: Browser$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'context', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'disconnected', listener: (browser: Browser$1) => any): this;
  /**
   * Emitted when a new browser context is created.
   */
  addListener(event: 'context', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Emitted when Browser gets disconnected from the browser application. This might happen because of one of the
   * following:
   * - Browser application is closed or crashed.
   * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called.
   */
  addListener(event: 'disconnected', listener: (browser: Browser$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'context', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'disconnected', listener: (browser: Browser$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'context', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'disconnected', listener: (browser: Browser$1) => any): this;
  /**
   * Emitted when a new browser context is created.
   */
  prependListener(event: 'context', listener: (browserContext: BrowserContext) => any): this;
  /**
   * Emitted when Browser gets disconnected from the browser application. This might happen because of one of the
   * following:
   * - Browser application is closed or crashed.
   * - The [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close) method was called.
   */
  prependListener(event: 'disconnected', listener: (browser: Browser$1) => any): this;
  /**
   * Binds the browser to a named pipe or web socket, making it available for other clients to connect to.
   * @param title Title of the browser server, used for identification.
   * @param options
   */
  bind(title: string, options?: {
    /**
     * Host to bind the web socket server to. When specified, a web socket server is created instead of a named pipe.
     */
    host?: string;
    /**
     * Additional metadata to associate with the browser server.
     */
    metadata?: {
      [key: string]: any;
    };
    /**
     * Port to bind the web socket server to. When specified, a web socket server is created instead of a named pipe. Use
     * `0` to let the OS pick an available port.
     */
    port?: number;
    /**
     * Working directory associated with this browser server.
     */
    workspaceDir?: string;
  }): Promise<{
    endpoint: string;
  }>;
  /**
   * Get the browser type (chromium, firefox or webkit) that the browser belongs to.
   */
  browserType(): BrowserType;
  /**
   * In case this browser is obtained using
   * [browserType.launch([options])](https://playwright.dev/docs/api/class-browsertype#browser-type-launch), closes the
   * browser and all of its pages (if any were opened).
   *
   * In case this browser is connected to, clears all created contexts belonging to this browser and disconnects from
   * the browser server.
   *
   * **NOTE** This is similar to force-quitting the browser. To close pages gracefully and ensure you receive page close
   * events, call
   * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) on
   * any [BrowserContext](https://playwright.dev/docs/api/class-browsercontext) instances you explicitly created earlier
   * using [browser.newContext([options])](https://playwright.dev/docs/api/class-browser#browser-new-context) **before**
   * calling [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close).
   *
   * The [Browser](https://playwright.dev/docs/api/class-browser) object itself is considered to be disposed and cannot
   * be used anymore.
   * @param options
   */
  close(options?: {
    /**
     * The reason to be reported to the operations interrupted by the browser closure.
     */
    reason?: string;
  }): Promise<void>;
  /**
   * Returns an array of all open browser contexts. In a newly created browser, this will return zero browser contexts.
   *
   * **Usage**
   *
   * ```js
   * const browser = await pw.webkit.launch();
   * console.log(browser.contexts().length); // prints `0`
   *
   * const context = await browser.newContext();
   * console.log(browser.contexts().length); // prints `1`
   * ```
   *
   */
  contexts(): Array<BrowserContext>;
  /**
   * Indicates that the browser is connected.
   */
  isConnected(): boolean;
  /**
   * **NOTE** CDP Sessions are only supported on Chromium-based browsers.
   *
   * Returns the newly created browser session.
   */
  newBrowserCDPSession(): Promise<CDPSession>;
  /**
   * Creates a new browser context. It won't share cookies/cache with other browser contexts.
   *
   * **NOTE** If directly using this method to create
   * [BrowserContext](https://playwright.dev/docs/api/class-browsercontext)s, it is best practice to explicitly close
   * the returned context via
   * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) when
   * your code is done with the [BrowserContext](https://playwright.dev/docs/api/class-browsercontext), and before
   * calling [browser.close([options])](https://playwright.dev/docs/api/class-browser#browser-close). This will ensure
   * the `context` is closed gracefully and any artifacts—like HARs and videos—are fully flushed and saved.
   *
   * **Usage**
   *
   * ```js
   * (async () => {
   *   const browser = await playwright.firefox.launch();  // Or 'chromium' or 'webkit'.
   *   // Create a new incognito browser context.
   *   const context = await browser.newContext();
   *   // Create a new page in a pristine context.
   *   const page = await context.newPage();
   *   await page.goto('https://example.com');
   *
   *   // Gracefully close up everything
   *   await context.close();
   *   await browser.close();
   * })();
   * ```
   *
   * @param options
   */
  newContext(options?: BrowserContextOptions): Promise<BrowserContext>;
  /**
   * Creates a new page in a new browser context. Closing this page will close the context as well.
   *
   * This is a convenience API that should only be used for the single-page scenarios and short snippets. Production
   * code and testing frameworks should explicitly create
   * [browser.newContext([options])](https://playwright.dev/docs/api/class-browser#browser-new-context) followed by the
   * [browserContext.newPage()](https://playwright.dev/docs/api/class-browsercontext#browser-context-new-page) to
   * control their exact life times.
   * @param options
   */
  newPage(options?: {
    /**
     * Whether to automatically download all the attachments. Defaults to `true` where all the downloads are accepted.
     */
    acceptDownloads?: boolean;
    /**
     * When using [page.goto(url[, options])](https://playwright.dev/docs/api/class-page#page-goto),
     * [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route),
     * [page.waitForURL(url[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-url),
     * [page.waitForRequest(urlOrPredicate[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-request),
     * or
     * [page.waitForResponse(urlOrPredicate[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-response)
     * it takes the base URL in consideration by using the
     * [`URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor for building the corresponding URL.
     * Unset by default. Examples:
     * - baseURL: `http://localhost:3000` and navigating to `/bar.html` results in `http://localhost:3000/bar.html`
     * - baseURL: `http://localhost:3000/foo/` and navigating to `./bar.html` results in
     *   `http://localhost:3000/foo/bar.html`
     * - baseURL: `http://localhost:3000/foo` (without trailing slash) and navigating to `./bar.html` results in
     *   `http://localhost:3000/bar.html`
     */
    baseURL?: string;
    /**
     * Toggles bypassing page's Content-Security-Policy. Defaults to `false`.
     */
    bypassCSP?: boolean;
    /**
     * TLS Client Authentication allows the server to request a client certificate and verify it.
     *
     * **Details**
     *
     * An array of client certificates to be used. Each certificate object must have either both `certPath` and `keyPath`,
     * a single `pfxPath`, or their corresponding direct value equivalents (`cert` and `key`, or `pfx`). Optionally,
     * `passphrase` property should be provided if the certificate is encrypted. The `origin` property should be provided
     * with an exact match to the request origin that the certificate is valid for.
     *
     * Client certificate authentication is only active when at least one client certificate is provided. If you want to
     * reject all client certificates sent by the server, you need to provide a client certificate with an `origin` that
     * does not match any of the domains you plan to visit.
     *
     * **NOTE** When using WebKit on macOS, accessing `localhost` will not pick up client certificates. You can make it
     * work by replacing `localhost` with `local.playwright`.
     *
     */
    clientCertificates?: Array<{
      /**
       * Exact origin that the certificate is valid for. Origin includes `https` protocol, a hostname and optionally a port.
       */
      origin: string;
      /**
       * Path to the file with the certificate in PEM format.
       */
      certPath?: string;
      /**
       * Direct value of the certificate in PEM format.
       */
      cert?: Buffer;
      /**
       * Path to the file with the private key in PEM format.
       */
      keyPath?: string;
      /**
       * Direct value of the private key in PEM format.
       */
      key?: Buffer;
      /**
       * Path to the PFX or PKCS12 encoded private key and certificate chain.
       */
      pfxPath?: string;
      /**
       * Direct value of the PFX or PKCS12 encoded private key and certificate chain.
       */
      pfx?: Buffer;
      /**
       * Passphrase for the private key (PEM or PFX).
       */
      passphrase?: string;
    }>;
    /**
     * Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
     * media feature, supported values are `'light'` and `'dark'`. See
     * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
     * Passing `null` resets emulation to system defaults. Defaults to `'light'`.
     */
    colorScheme?: null | "light" | "dark" | "no-preference";
    /**
     * Emulates `'prefers-contrast'` media feature, supported values are `'no-preference'`, `'more'`. See
     * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
     * Passing `null` resets emulation to system defaults. Defaults to `'no-preference'`.
     */
    contrast?: null | "no-preference" | "more";
    /**
     * Specify device scale factor (can be thought of as dpr). Defaults to `1`. Learn more about
     * [emulating devices with device scale factor](https://playwright.dev/docs/emulation#devices).
     */
    deviceScaleFactor?: number;
    /**
     * An object containing additional HTTP headers to be sent with every request. Defaults to none.
     */
    extraHTTPHeaders?: {
      [key: string]: string;
    };
    /**
     * Emulates `'forced-colors'` media feature, supported values are `'active'`, `'none'`. See
     * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
     * Passing `null` resets emulation to system defaults. Defaults to `'none'`.
     */
    forcedColors?: null | "active" | "none";
    geolocation?: {
      /**
       * Latitude between -90 and 90.
       */
      latitude: number;
      /**
       * Longitude between -180 and 180.
       */
      longitude: number;
      /**
       * Non-negative accuracy value. Defaults to `0`.
       */
      accuracy?: number;
    };
    /**
     * Specifies if viewport supports touch events. Defaults to false. Learn more about
     * [mobile emulation](https://playwright.dev/docs/emulation#devices).
     */
    hasTouch?: boolean;
    /**
     * Credentials for [HTTP authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication). If no
     * origin is specified, the username and password are sent to any servers upon unauthorized responses.
     */
    httpCredentials?: {
      username: string;
      password: string;
      /**
       * Restrain sending http credentials on specific origin (scheme://host:port).
       */
      origin?: string;
      /**
       * This option only applies to the requests sent from corresponding
       * [APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext) and does not affect requests sent from
       * the browser. `'always'` - `Authorization` header with basic authentication credentials will be sent with the each
       * API request. `'unauthorized` - the credentials are only sent when 401 (Unauthorized) response with
       * `WWW-Authenticate` header is received. Defaults to `'unauthorized'`.
       */
      send?: "unauthorized" | "always";
    };
    /**
     * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
     */
    ignoreHTTPSErrors?: boolean;
    /**
     * Whether the `meta viewport` tag is taken into account and touch events are enabled. isMobile is a part of device,
     * so you don't actually need to set it manually. Defaults to `false` and is not supported in Firefox. Learn more
     * about [mobile emulation](https://playwright.dev/docs/emulation#ismobile).
     */
    isMobile?: boolean;
    /**
     * Whether or not to enable JavaScript in the context. Defaults to `true`. Learn more about
     * [disabling JavaScript](https://playwright.dev/docs/emulation#javascript-enabled).
     */
    javaScriptEnabled?: boolean;
    /**
     * Specify user locale, for example `en-GB`, `de-DE`, etc. Locale will affect `navigator.language` value,
     * `Accept-Language` request header value as well as number and date formatting rules. Defaults to the system default
     * locale. Learn more about emulation in our [emulation guide](https://playwright.dev/docs/emulation#locale--timezone).
     */
    locale?: string;
    /**
     * Logger sink for Playwright logging.
     * @deprecated The logs received by the logger are incomplete. Please use tracing instead.
     */
    logger?: Logger;
    /**
     * Whether to emulate network being offline. Defaults to `false`. Learn more about
     * [network emulation](https://playwright.dev/docs/emulation#offline).
     */
    offline?: boolean;
    /**
     * A list of permissions to grant to all pages in this context. See
     * [browserContext.grantPermissions(permissions[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
     * for more details. Defaults to none.
     */
    permissions?: Array<string>;
    /**
     * Network proxy settings to use with this context. Defaults to none.
     */
    proxy?: {
      /**
       * Proxy to be used for all requests. HTTP and SOCKS proxies are supported, for example `http://myproxy.com:3128` or
       * `socks5://myproxy.com:3128`. Short form `myproxy.com:3128` is considered an HTTP proxy.
       */
      server: string;
      /**
       * Optional comma-separated domains to bypass proxy, for example `".com, chromium.org, .domain.com"`.
       */
      bypass?: string;
      /**
       * Optional username to use if HTTP proxy requires authentication.
       */
      username?: string;
      /**
       * Optional password to use if HTTP proxy requires authentication.
       */
      password?: string;
    };
    /**
     * Enables [HAR](http://www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file.
     * If not specified, the HAR is not recorded. Make sure to await
     * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) for
     * the HAR to be saved.
     */
    recordHar?: {
      /**
       * Optional setting to control whether to omit request content from the HAR. Defaults to `false`. Deprecated, use
       * `content` policy instead.
       */
      omitContent?: boolean;
      /**
       * Optional setting to control resource content management. If `omit` is specified, content is not persisted. If
       * `attach` is specified, resources are persisted as separate files or entries in the ZIP archive. If `embed` is
       * specified, content is stored inline the HAR file as per HAR specification. Defaults to `attach` for `.zip` output
       * files and to `embed` for all other file extensions.
       */
      content?: "omit" | "embed" | "attach";
      /**
       * Path on the filesystem to write the HAR file to. If the file name ends with `.zip`, `content: 'attach'` is used by
       * default.
       */
      path: string;
      /**
       * When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page,
       * cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to `full`.
       */
      mode?: "full" | "minimal";
      /**
       * A glob or regex pattern to filter requests that are stored in the HAR. When a
       * [`baseURL`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-base-url) via the context
       * options was provided and the passed URL is a path, it gets merged via the
       * [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor. Defaults to none.
       */
      urlFilter?: string | RegExp;
    };
    /**
     * Enables video recording for all pages into `recordVideo.dir` directory. If not specified videos are not recorded.
     * Make sure to await
     * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) for
     * videos to be saved.
     */
    recordVideo?: {
      /**
       * Path to the directory to put videos into. If not specified, the videos will be stored in `artifactsDir` (see
       * [browserType.launch([options])](https://playwright.dev/docs/api/class-browsertype#browser-type-launch) options).
       */
      dir?: string;
      /**
       * Optional dimensions of the recorded videos. If not specified the size will be equal to `viewport` scaled down to
       * fit into 800x800. If `viewport` is not configured explicitly the video size defaults to 800x450. Actual picture of
       * each page will be scaled down if necessary to fit the specified size.
       */
      size?: {
        /**
         * Video frame width.
         */
        width: number;
        /**
         * Video frame height.
         */
        height: number;
      };
      /**
       * If specified, enables visual annotations on interacted elements during video recording.
       */
      showActions?: {
        /**
         * How long each annotation is displayed in milliseconds. Defaults to `500`.
         */
        duration?: number;
        /**
         * Position of the action title overlay. Defaults to `"top-right"`.
         */
        position?: "top-left" | "top" | "top-right" | "bottom-left" | "bottom" | "bottom-right";
        /**
         * Font size of the action title in pixels. Defaults to `24`.
         */
        fontSize?: number;
      };
    };
    /**
     * Emulates `'prefers-reduced-motion'` media feature, supported values are `'reduce'`, `'no-preference'`. See
     * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
     * Passing `null` resets emulation to system defaults. Defaults to `'no-preference'`.
     */
    reducedMotion?: null | "reduce" | "no-preference";
    /**
     * Emulates consistent window screen size available inside web page via `window.screen`. Is only used when the
     * [`viewport`](https://playwright.dev/docs/api/class-browser#browser-new-page-option-viewport) is set.
     */
    screen?: {
      /**
       * page width in pixels.
       */
      width: number;
      /**
       * page height in pixels.
       */
      height: number;
    };
    /**
     * Whether to allow sites to register Service workers. Defaults to `'allow'`.
     * - `'allow'`: [Service Workers](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) can be
     *   registered.
     * - `'block'`: Playwright will block all registration of Service Workers.
     */
    serviceWorkers?: "allow" | "block";
    /**
     * Learn more about [storage state and auth](https://playwright.dev/docs/auth).
     *
     * Populates context with given storage state. This option can be used to initialize context with logged-in
     * information obtained via
     * [browserContext.storageState([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-storage-state).
     */
    storageState?: string | {
      /**
       * Cookies to set for context
       */
      cookies: Array<{
        name: string;
        value: string;
        /**
         * Domain and path are required. For the cookie to apply to all subdomains as well, prefix domain with a dot, like
         * this: ".example.com"
         */
        domain: string;
        /**
         * Domain and path are required
         */
        path: string;
        /**
         * Unix time in seconds.
         */
        expires: number;
        httpOnly: boolean;
        secure: boolean;
        /**
         * sameSite flag
         */
        sameSite: "Strict" | "Lax" | "None";
      }>;
      origins: Array<{
        origin: string;
        /**
         * localStorage to set for context
         */
        localStorage: Array<{
          name: string;
          value: string;
        }>;
      }>;
    };
    /**
     * If set to true, enables strict selectors mode for this context. In the strict selectors mode all operations on
     * selectors that imply single target DOM element will throw when more than one element matches the selector. This
     * option does not affect any Locator APIs (Locators are always strict). Defaults to `false`. See
     * [Locator](https://playwright.dev/docs/api/class-locator) to learn more about the strict mode.
     */
    strictSelectors?: boolean;
    /**
     * Changes the timezone of the context. See
     * [ICU's metaZones.txt](https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
     * for a list of supported timezone IDs. Defaults to the system timezone.
     */
    timezoneId?: string;
    /**
     * Specific user agent to use in this context.
     */
    userAgent?: string;
    /**
     * Emulates consistent viewport for each page. Defaults to an 1280x720 viewport. Use `null` to disable the consistent
     * viewport emulation. Learn more about [viewport emulation](https://playwright.dev/docs/emulation#viewport).
     *
     * **NOTE** The `null` value opts out from the default presets, makes viewport depend on the host window size defined
     * by the operating system. It makes the execution of the tests non-deterministic.
     *
     */
    viewport?: null | {
      /**
       * page width in pixels.
       */
      width: number;
      /**
       * page height in pixels.
       */
      height: number;
    };
  }): Promise<Page$1>;
  /**
   * **NOTE** This API controls
   * [Chromium Tracing](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) which is a low-level
   * chromium-specific debugging tool. API to control [Playwright Tracing](https://playwright.dev/docs/trace-viewer) could be found
   * [here](https://playwright.dev/docs/api/class-tracing).
   *
   * You can use
   * [browser.startTracing([page, options])](https://playwright.dev/docs/api/class-browser#browser-start-tracing) and
   * [browser.stopTracing()](https://playwright.dev/docs/api/class-browser#browser-stop-tracing) to create a trace file
   * that can be opened in Chrome DevTools performance panel.
   *
   * **Usage**
   *
   * ```js
   * await browser.startTracing(page, { path: 'trace.json' });
   * await page.goto('https://www.google.com');
   * await browser.stopTracing();
   * ```
   *
   * @param page Optional, if specified, tracing includes screenshots of the given page.
   * @param options
   */
  startTracing(page?: Page$1, options?: {
    /**
     * specify custom categories to use instead of default.
     */
    categories?: Array<string>;
    /**
     * A path to write the trace file to.
     */
    path?: string;
    /**
     * captures screenshots in the trace.
     */
    screenshots?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** This API controls
   * [Chromium Tracing](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) which is a low-level
   * chromium-specific debugging tool. API to control [Playwright Tracing](https://playwright.dev/docs/trace-viewer) could be found
   * [here](https://playwright.dev/docs/api/class-tracing).
   *
   * Returns the buffer with trace data.
   */
  stopTracing(): Promise<Buffer>;
  /**
   * Unbinds the browser server previously bound with
   * [browser.bind(title[, options])](https://playwright.dev/docs/api/class-browser#browser-bind).
   */
  unbind(): Promise<void>;
  /**
   * Returns the browser version.
   */
  version(): string;
  [Symbol.asyncDispose](): Promise<void>;
}
/**
 * The Worker class represents a [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API).
 * `worker` event is emitted on the page object to signal a worker creation. `close` event is emitted on the worker
 * object when the worker is gone.
 *
 * ```js
 * page.on('worker', worker => {
 *   console.log('Worker created: ' + worker.url());
 *   worker.on('close', worker => console.log('Worker destroyed: ' + worker.url()));
 * });
 *
 * console.log('Current workers:');
 * for (const worker of page.workers())
 *   console.log('  ' + worker.url());
 * ```
 *
 */
interface Worker {
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-worker#worker-evaluate-option-expression).
   *
   * If the function passed to the
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) returns a
   * [Promise], then
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) would wait for
   * the promise to resolve and return its value.
   *
   * If the function passed to the
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) returns a
   * non-[Serializable] value, then
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) returns
   * `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`:
   * `-0`, `NaN`, `Infinity`, `-Infinity`.
   * @param pageFunction Function to be evaluated in the worker context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-worker#worker-evaluate-option-expression).
   */
  evaluate<R, Arg>(pageFunction: PageFunction<Arg, R>, arg: Arg): Promise<R>;
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-worker#worker-evaluate-option-expression).
   *
   * If the function passed to the
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) returns a
   * [Promise], then
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) would wait for
   * the promise to resolve and return its value.
   *
   * If the function passed to the
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) returns a
   * non-[Serializable] value, then
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) returns
   * `undefined`. Playwright also supports transferring some additional values that are not serializable by `JSON`:
   * `-0`, `NaN`, `Infinity`, `-Infinity`.
   * @param pageFunction Function to be evaluated in the worker context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-worker#worker-evaluate-option-expression).
   */
  evaluate<R>(pageFunction: PageFunction<void, R>, arg?: any): Promise<R>;
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle-option-expression) as a
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * The only difference between
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) and
   * [worker.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle)
   * is that
   * [worker.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle)
   * returns [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If the function passed to the
   * [worker.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle)
   * returns a [Promise], then
   * [worker.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle)
   * would wait for the promise to resolve and return its value.
   * @param pageFunction Function to be evaluated in the worker context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle-option-expression).
   */
  evaluateHandle<R, Arg>(pageFunction: PageFunction<Arg, R>, arg: Arg): Promise<SmartHandle<R>>;
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle-option-expression) as a
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * The only difference between
   * [worker.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate) and
   * [worker.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle)
   * is that
   * [worker.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle)
   * returns [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If the function passed to the
   * [worker.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle)
   * returns a [Promise], then
   * [worker.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle)
   * would wait for the promise to resolve and return its value.
   * @param pageFunction Function to be evaluated in the worker context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-worker#worker-evaluate-handle-option-expression).
   */
  evaluateHandle<R>(pageFunction: PageFunction<void, R>, arg?: any): Promise<SmartHandle<R>>;
  /**
   * Emitted when this dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is
   * terminated.
   */
  on(event: 'close', listener: (worker: Worker) => any): this;
  /**
   * Emitted when JavaScript within the worker calls one of console API methods, e.g. `console.log` or `console.dir`.
   */
  on(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'close', listener: (worker: Worker) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Emitted when this dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is
   * terminated.
   */
  addListener(event: 'close', listener: (worker: Worker) => any): this;
  /**
   * Emitted when JavaScript within the worker calls one of console API methods, e.g. `console.log` or `console.dir`.
   */
  addListener(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'close', listener: (worker: Worker) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'close', listener: (worker: Worker) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  /**
   * Emitted when this dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is
   * terminated.
   */
  prependListener(event: 'close', listener: (worker: Worker) => any): this;
  /**
   * Emitted when JavaScript within the worker calls one of console API methods, e.g. `console.log` or `console.dir`.
   */
  prependListener(event: 'console', listener: (consoleMessage: ConsoleMessage$1) => any): this;
  url(): string;
  /**
   * Emitted when this dedicated [WebWorker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) is
   * terminated.
   */
  waitForEvent(event: 'close', optionsOrPredicate?: {
    predicate?: (worker: Worker) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((worker: Worker) => boolean | Promise<boolean>)): Promise<Worker>;
  /**
   * Emitted when JavaScript within the worker calls one of console API methods, e.g. `console.log` or `console.dir`.
   */
  waitForEvent(event: 'console', optionsOrPredicate?: {
    predicate?: (consoleMessage: ConsoleMessage$1) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((consoleMessage: ConsoleMessage$1) => boolean | Promise<boolean>)): Promise<ConsoleMessage$1>;
}
/**
 * JSHandle represents an in-page JavaScript object. JSHandles can be created with the
 * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) method.
 *
 * ```js
 * const windowHandle = await page.evaluateHandle(() => window);
 * // ...
 * ```
 *
 * JSHandle prevents the referenced JavaScript object being garbage collected unless the handle is exposed with
 * [jsHandle.dispose()](https://playwright.dev/docs/api/class-jshandle#js-handle-dispose). JSHandles are auto-disposed
 * when their origin frame gets navigated or the parent context gets destroyed.
 *
 * JSHandle instances can be used as an argument in
 * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector),
 * [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) and
 * [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle)
 * methods.
 */
interface JSHandle<T = any> {
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-option-expression).
   *
   * This method passes this handle as the first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-option-expression)
   * returns a [Promise], then `handle.evaluate` would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const tweetHandle = await page.$('.tweet .retweets');
   * expect(await tweetHandle.evaluate(node => node.innerText)).toBe('10 retweets');
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-option-expression).
   */
  evaluate<R, Arg, O extends T = T>(pageFunction: PageFunctionOn<O, Arg, R>, arg: Arg): Promise<R>;
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-option-expression).
   *
   * This method passes this handle as the first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-option-expression).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-option-expression)
   * returns a [Promise], then `handle.evaluate` would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const tweetHandle = await page.$('.tweet .retweets');
   * expect(await tweetHandle.evaluate(node => node.innerText)).toBe('10 retweets');
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-option-expression).
   */
  evaluate<R, O extends T = T>(pageFunction: PageFunctionOn<O, void, R>, arg?: any): Promise<R>;
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-handle-option-expression)
   * as a [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * This method passes this handle as the first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-handle-option-expression).
   *
   * The only difference between `jsHandle.evaluate` and `jsHandle.evaluateHandle` is that `jsHandle.evaluateHandle`
   * returns [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If the function passed to the `jsHandle.evaluateHandle` returns a [Promise], then `jsHandle.evaluateHandle` would
   * wait for the promise to resolve and return its value.
   *
   * See [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) for
   * more details.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-handle-option-expression).
   */
  evaluateHandle<R, Arg, O extends T = T>(pageFunction: PageFunctionOn<O, Arg, R>, arg: Arg): Promise<SmartHandle<R>>;
  /**
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-handle-option-expression)
   * as a [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * This method passes this handle as the first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-handle-option-expression).
   *
   * The only difference between `jsHandle.evaluate` and `jsHandle.evaluateHandle` is that `jsHandle.evaluateHandle`
   * returns [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If the function passed to the `jsHandle.evaluateHandle` returns a [Promise], then `jsHandle.evaluateHandle` would
   * wait for the promise to resolve and return its value.
   *
   * See [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) for
   * more details.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-evaluate-handle-option-expression).
   */
  evaluateHandle<R, O extends T = T>(pageFunction: PageFunctionOn<O, void, R>, arg?: any): Promise<SmartHandle<R>>;
  /**
   * Returns a JSON representation of the object. If the object has a `toJSON` function, it **will not be called**.
   *
   * **NOTE** The method will return an empty JSON object if the referenced object is not stringifiable. It will throw
   * an error if the object has circular references.
   *
   */
  jsonValue(): Promise<T>;
  /**
   * Returns either `null` or the object handle itself, if the object handle is an instance of
   * [ElementHandle](https://playwright.dev/docs/api/class-elementhandle).
   */
  asElement(): T extends Node ? ElementHandle<T> : null;
  /**
   * The `jsHandle.dispose` method stops referencing the element handle.
   */
  dispose(): Promise<void>;
  /**
   * The method returns a map with **own property names** as keys and JSHandle instances for the property values.
   *
   * **Usage**
   *
   * ```js
   * const handle = await page.evaluateHandle(() => ({ window, document }));
   * const properties = await handle.getProperties();
   * const windowHandle = properties.get('window');
   * const documentHandle = properties.get('document');
   * await handle.dispose();
   * ```
   *
   */
  getProperties(): Promise<Map<string, JSHandle>>;
  /**
   * Fetches a single property from the referenced object.
   * @param propertyName property to get
   */
  getProperty(propertyName: string): Promise<JSHandle>;
  [Symbol.asyncDispose](): Promise<void>;
}
/**
 * - extends: [JSHandle](https://playwright.dev/docs/api/class-jshandle)
 *
 * ElementHandle represents an in-page DOM element. ElementHandles can be created with the
 * [page.$(selector[, options])](https://playwright.dev/docs/api/class-page#page-query-selector) method.
 *
 * **NOTE** The use of ElementHandle is discouraged, use [Locator](https://playwright.dev/docs/api/class-locator)
 * objects and web-first assertions instead.
 *
 * ```js
 * const hrefElement = await page.$('a');
 * await hrefElement.click();
 * ```
 *
 * ElementHandle prevents DOM element from garbage collection unless the handle is disposed with
 * [jsHandle.dispose()](https://playwright.dev/docs/api/class-jshandle#js-handle-dispose). ElementHandles are
 * auto-disposed when their origin frame gets navigated.
 *
 * ElementHandle instances can be used as an argument in
 * [page.$eval(selector, pageFunction[, arg, options])](https://playwright.dev/docs/api/class-page#page-eval-on-selector)
 * and [page.evaluate(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate) methods.
 *
 * The difference between the [Locator](https://playwright.dev/docs/api/class-locator) and ElementHandle is that the
 * ElementHandle points to a particular element, while [Locator](https://playwright.dev/docs/api/class-locator)
 * captures the logic of how to retrieve an element.
 *
 * In the example below, handle points to a particular DOM element on page. If that element changes text or is used by
 * React to render an entirely different component, handle is still pointing to that very DOM element. This can lead
 * to unexpected behaviors.
 *
 * ```js
 * const handle = await page.$('text=Submit');
 * // ...
 * await handle.hover();
 * await handle.click();
 * ```
 *
 * With the locator, every time the `element` is used, up-to-date DOM element is located in the page using the
 * selector. So in the snippet below, underlying DOM element is going to be located twice.
 *
 * ```js
 * const locator = page.getByText('Submit');
 * // ...
 * await locator.hover();
 * await locator.click();
 * ```
 *
 */
interface ElementHandle<T = Node> extends JSHandle<T> {
  /**
   * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The method finds an element matching the specified selector in the `ElementHandle`'s subtree. If no elements match
   * the selector, returns `null`.
   * @param selector A selector to query for.
   */
  $<K extends keyof HTMLElementTagNameMap>(selector: K, options?: {
    strict: boolean;
  }): Promise<ElementHandleForTag<K> | null>;
  /**
   * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The method finds an element matching the specified selector in the `ElementHandle`'s subtree. If no elements match
   * the selector, returns `null`.
   * @param selector A selector to query for.
   */
  $(selector: string, options?: {
    strict: boolean;
  }): Promise<ElementHandle<SVGElement | HTMLElement> | null>;
  /**
   * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The method finds all elements matching the specified selector in the `ElementHandle`s subtree. If no elements match
   * the selector, returns empty array.
   * @param selector A selector to query for.
   */
  $$<K extends keyof HTMLElementTagNameMap>(selector: K): Promise<ElementHandleForTag<K>[]>;
  /**
   * **NOTE** Use locator-based [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The method finds all elements matching the specified selector in the `ElementHandle`s subtree. If no elements match
   * the selector, returns empty array.
   * @param selector A selector to query for.
   */
  $$(selector: string): Promise<ElementHandle<SVGElement | HTMLElement>[]>;
  /**
   * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests.
   * Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   *
   * The method finds an element matching the specified selector in the `ElementHandle`s subtree and passes it as a
   * first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   * If no elements match the selector, the method throws an error.
   *
   * If
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression)
   * returns a [Promise], then
   * [elementHandle.$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const tweetHandle = await page.$('.tweet');
   * expect(await tweetHandle.$eval('.like', node => node.innerText)).toBe('100');
   * expect(await tweetHandle.$eval('.retweets', node => node.innerText)).toBe('10');
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   */
  $eval<K extends keyof HTMLElementTagNameMap, R, Arg>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K], Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests.
   * Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   *
   * The method finds an element matching the specified selector in the `ElementHandle`s subtree and passes it as a
   * first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   * If no elements match the selector, the method throws an error.
   *
   * If
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression)
   * returns a [Promise], then
   * [elementHandle.$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const tweetHandle = await page.$('.tweet');
   * expect(await tweetHandle.$eval('.like', node => node.innerText)).toBe('100');
   * expect(await tweetHandle.$eval('.retweets', node => node.innerText)).toBe('10');
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   */
  $eval<R, Arg, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E, Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests.
   * Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   *
   * The method finds an element matching the specified selector in the `ElementHandle`s subtree and passes it as a
   * first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   * If no elements match the selector, the method throws an error.
   *
   * If
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression)
   * returns a [Promise], then
   * [elementHandle.$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const tweetHandle = await page.$('.tweet');
   * expect(await tweetHandle.$eval('.like', node => node.innerText)).toBe('100');
   * expect(await tweetHandle.$eval('.retweets', node => node.innerText)).toBe('10');
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   */
  $eval<K extends keyof HTMLElementTagNameMap, R>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K], void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** This method does not wait for the element to pass actionability checks and therefore can lead to the flaky tests.
   * Use
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods or web-first assertions instead.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   *
   * The method finds an element matching the specified selector in the `ElementHandle`s subtree and passes it as a
   * first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   * If no elements match the selector, the method throws an error.
   *
   * If
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression)
   * returns a [Promise], then
   * [elementHandle.$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```js
   * const tweetHandle = await page.$('.tweet');
   * expect(await tweetHandle.$eval('.like', node => node.innerText)).toBe('100');
   * expect(await tweetHandle.$eval('.retweets', node => node.innerText)).toBe('10');
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-option-expression).
   */
  $eval<R, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E, void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   *
   * The method finds all elements matching the specified selector in the `ElementHandle`'s subtree and passes an array
   * of matched elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   *
   * If
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression)
   * returns a [Promise], then
   * [elementHandle.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```html
   * <div class="feed">
   *   <div class="tweet">Hello!</div>
   *   <div class="tweet">Hi!</div>
   * </div>
   * ```
   *
   * ```js
   * const feedHandle = await page.$('.feed');
   * expect(await feedHandle.$$eval('.tweet', nodes =>
   *   nodes.map(n => n.innerText))).toEqual(['Hello!', 'Hi!'],
   * );
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   */
  $$eval<K extends keyof HTMLElementTagNameMap, R, Arg>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K][], Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   *
   * The method finds all elements matching the specified selector in the `ElementHandle`'s subtree and passes an array
   * of matched elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   *
   * If
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression)
   * returns a [Promise], then
   * [elementHandle.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```html
   * <div class="feed">
   *   <div class="tweet">Hello!</div>
   *   <div class="tweet">Hi!</div>
   * </div>
   * ```
   *
   * ```js
   * const feedHandle = await page.$('.feed');
   * expect(await feedHandle.$$eval('.tweet', nodes =>
   *   nodes.map(n => n.innerText))).toEqual(['Hello!', 'Hi!'],
   * );
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   */
  $$eval<R, Arg, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E[], Arg, R>, arg: Arg): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   *
   * The method finds all elements matching the specified selector in the `ElementHandle`'s subtree and passes an array
   * of matched elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   *
   * If
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression)
   * returns a [Promise], then
   * [elementHandle.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```html
   * <div class="feed">
   *   <div class="tweet">Hello!</div>
   *   <div class="tweet">Hi!</div>
   * </div>
   * ```
   *
   * ```js
   * const feedHandle = await page.$('.feed');
   * expect(await feedHandle.$$eval('.tweet', nodes =>
   *   nodes.map(n => n.innerText))).toEqual(['Hello!', 'Hi!'],
   * );
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   */
  $$eval<K extends keyof HTMLElementTagNameMap, R>(selector: K, pageFunction: PageFunctionOn<HTMLElementTagNameMap[K][], void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** In most cases,
   * [locator.evaluateAll(pageFunction[, arg])](https://playwright.dev/docs/api/class-locator#locator-evaluate-all),
   * other [Locator](https://playwright.dev/docs/api/class-locator) helper methods and web-first assertions do a better
   * job.
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   *
   * The method finds all elements matching the specified selector in the `ElementHandle`'s subtree and passes an array
   * of matched elements as a first argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   *
   * If
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression)
   * returns a [Promise], then
   * [elementHandle.$$eval(selector, pageFunction[, arg])](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all)
   * would wait for the promise to resolve and return its value.
   *
   * **Usage**
   *
   * ```html
   * <div class="feed">
   *   <div class="tweet">Hello!</div>
   *   <div class="tweet">Hi!</div>
   * </div>
   * ```
   *
   * ```js
   * const feedHandle = await page.$('.feed');
   * expect(await feedHandle.$$eval('.tweet', nodes =>
   *   nodes.map(n => n.innerText))).toEqual(['Hello!', 'Hi!'],
   * );
   * ```
   *
   * @param selector A selector to query for.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-elementhandle#element-handle-eval-on-selector-all-option-expression).
   */
  $$eval<R, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(selector: string, pageFunction: PageFunctionOn<E[], void, R>, arg?: any): Promise<R>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead.
   *
   * Returns element specified by selector when it satisfies
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-state)
   * option. Returns `null` if waiting for `hidden` or `detached`.
   *
   * Wait for the
   * [`selector`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-selector)
   * relative to the element handle to satisfy
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-state) option
   * (either appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-selector)
   * already satisfies the condition, the method will return immediately. If the selector doesn't satisfy the condition
   * for the
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-timeout)
   * milliseconds, the function will throw.
   *
   * **Usage**
   *
   * ```js
   * await page.setContent(`<div><span></span></div>`);
   * const div = await page.$('div');
   * // Waiting for the 'span' selector relative to the div.
   * const span = await div.waitForSelector('span', { state: 'attached' });
   * ```
   *
   * **NOTE** This method does not work across navigations, use
   * [page.waitForSelector(selector[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-selector)
   * instead.
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector<K extends keyof HTMLElementTagNameMap>(selector: K, options?: ElementHandleWaitForSelectorOptionsNotHidden): Promise<ElementHandleForTag<K>>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead.
   *
   * Returns element specified by selector when it satisfies
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-state)
   * option. Returns `null` if waiting for `hidden` or `detached`.
   *
   * Wait for the
   * [`selector`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-selector)
   * relative to the element handle to satisfy
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-state) option
   * (either appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-selector)
   * already satisfies the condition, the method will return immediately. If the selector doesn't satisfy the condition
   * for the
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-timeout)
   * milliseconds, the function will throw.
   *
   * **Usage**
   *
   * ```js
   * await page.setContent(`<div><span></span></div>`);
   * const div = await page.$('div');
   * // Waiting for the 'span' selector relative to the div.
   * const span = await div.waitForSelector('span', { state: 'attached' });
   * ```
   *
   * **NOTE** This method does not work across navigations, use
   * [page.waitForSelector(selector[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-selector)
   * instead.
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector(selector: string, options?: ElementHandleWaitForSelectorOptionsNotHidden): Promise<ElementHandle<SVGElement | HTMLElement>>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead.
   *
   * Returns element specified by selector when it satisfies
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-state)
   * option. Returns `null` if waiting for `hidden` or `detached`.
   *
   * Wait for the
   * [`selector`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-selector)
   * relative to the element handle to satisfy
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-state) option
   * (either appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-selector)
   * already satisfies the condition, the method will return immediately. If the selector doesn't satisfy the condition
   * for the
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-timeout)
   * milliseconds, the function will throw.
   *
   * **Usage**
   *
   * ```js
   * await page.setContent(`<div><span></span></div>`);
   * const div = await page.$('div');
   * // Waiting for the 'span' selector relative to the div.
   * const span = await div.waitForSelector('span', { state: 'attached' });
   * ```
   *
   * **NOTE** This method does not work across navigations, use
   * [page.waitForSelector(selector[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-selector)
   * instead.
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector<K extends keyof HTMLElementTagNameMap>(selector: K, options: ElementHandleWaitForSelectorOptions): Promise<ElementHandleForTag<K> | null>;
  /**
   * **NOTE** Use web assertions that assert visibility or a locator-based
   * [locator.waitFor([options])](https://playwright.dev/docs/api/class-locator#locator-wait-for) instead.
   *
   * Returns element specified by selector when it satisfies
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-state)
   * option. Returns `null` if waiting for `hidden` or `detached`.
   *
   * Wait for the
   * [`selector`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-selector)
   * relative to the element handle to satisfy
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-state) option
   * (either appear/disappear from dom, or become visible/hidden). If at the moment of calling the method
   * [`selector`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-selector)
   * already satisfies the condition, the method will return immediately. If the selector doesn't satisfy the condition
   * for the
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-selector-option-timeout)
   * milliseconds, the function will throw.
   *
   * **Usage**
   *
   * ```js
   * await page.setContent(`<div><span></span></div>`);
   * const div = await page.$('div');
   * // Waiting for the 'span' selector relative to the div.
   * const span = await div.waitForSelector('span', { state: 'attached' });
   * ```
   *
   * **NOTE** This method does not work across navigations, use
   * [page.waitForSelector(selector[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-selector)
   * instead.
   *
   * @param selector A selector to query for.
   * @param options
   */
  waitForSelector(selector: string, options: ElementHandleWaitForSelectorOptions): Promise<null | ElementHandle<SVGElement | HTMLElement>>;
  /**
   * This method returns the bounding box of the element, or `null` if the element is not visible. The bounding box is
   * calculated relative to the main frame viewport - which is usually the same as the browser window.
   *
   * Scrolling affects the returned bounding box, similarly to
   * [Element.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
   * That means `x` and/or `y` may be negative.
   *
   * Elements from child frames return the bounding box relative to the main frame, unlike the
   * [Element.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
   *
   * Assuming the page is static, it is safe to use bounding box coordinates to perform input. For example, the
   * following snippet should click the center of the element.
   *
   * **Usage**
   *
   * ```js
   * const box = await elementHandle.boundingBox();
   * await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
   * ```
   *
   */
  boundingBox(): Promise<null | {
    /**
     * the x coordinate of the element in pixels.
     */
    x: number;
    /**
     * the y coordinate of the element in pixels.
     */
    y: number;
    /**
     * the width of the element in pixels.
     */
    width: number;
    /**
     * the height of the element in pixels.
     */
    height: number;
  }>;
  /**
   * **NOTE** Use locator-based [locator.check([options])](https://playwright.dev/docs/api/class-locator#locator-check) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method checks the element by performing the following steps:
   * 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already
   *    checked, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-elementhandle#element-handle-check-option-force) option is
   *    set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now checked. If not, this method throws.
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-check-option-timeout), this method
   * throws a [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param options
   */
  check(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.click([options])](https://playwright.dev/docs/api/class-locator#locator-click) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method clicks the element by performing the following steps:
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-elementhandle#element-handle-click-option-force) option is
   *    set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-elementhandle#element-handle-click-option-position).
   * 1. Wait for initiated navigations to either succeed or fail, unless
   *    [`noWaitAfter`](https://playwright.dev/docs/api/class-elementhandle#element-handle-click-option-no-wait-after)
   *    option is set.
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-click-option-timeout), this method
   * throws a [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param options
   */
  click(options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * defaults to 1. See [UIEvent.detail].
     */
    clickCount?: number;
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading. You
     * can opt out of waiting via setting this flag. You would only need this option in the exceptional cases such as
     * navigating to inaccessible pages. Defaults to `false`.
     * @deprecated This option will default to `true` in the future.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Defaults to 1. Sends `n` interpolated `mousemove` events to represent travel between Playwright's current cursor
     * position and the provided destination. When set to 1, emits a single `mousemove` event at the destination location.
     */
    steps?: number;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Returns the content frame for element handles referencing iframe nodes, or `null` otherwise
   */
  contentFrame(): Promise<null | Frame$1>;
  /**
   * **NOTE** Use locator-based [locator.dblclick([options])](https://playwright.dev/docs/api/class-locator#locator-dblclick)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method double clicks the element by performing the following steps:
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-elementhandle#element-handle-dblclick-option-force) option is
   *    set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to double click in the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-elementhandle#element-handle-dblclick-option-position).
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-dblclick-option-timeout), this
   * method throws a [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables
   * this.
   *
   * **NOTE** `elementHandle.dblclick()` dispatches two `click` events and a single `dblclick` event.
   *
   * @param options
   */
  dblclick(options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Defaults to 1. Sends `n` interpolated `mousemove` events to represent travel between Playwright's current cursor
     * position and the provided destination. When set to 1, emits a single `mousemove` event at the destination location.
     */
    steps?: number;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.dispatchEvent(type[, eventInit, options])](https://playwright.dev/docs/api/class-locator#locator-dispatch-event)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * The snippet below dispatches the `click` event on the element. Regardless of the visibility state of the element,
   * `click` is dispatched. This is equivalent to calling
   * [element.click()](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
   *
   * **Usage**
   *
   * ```js
   * await elementHandle.dispatchEvent('click');
   * ```
   *
   * Under the hood, it creates an instance of an event based on the given
   * [`type`](https://playwright.dev/docs/api/class-elementhandle#element-handle-dispatch-event-option-type),
   * initializes it with
   * [`eventInit`](https://playwright.dev/docs/api/class-elementhandle#element-handle-dispatch-event-option-event-init)
   * properties and dispatches it on the element. Events are `composed`, `cancelable` and bubble by default.
   *
   * Since
   * [`eventInit`](https://playwright.dev/docs/api/class-elementhandle#element-handle-dispatch-event-option-event-init)
   * is event-specific, please refer to the events documentation for the lists of initial properties:
   * - [DeviceMotionEvent](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent/DeviceMotionEvent)
   * - [DeviceOrientationEvent](https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent)
   * - [DragEvent](https://developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
   * - [Event](https://developer.mozilla.org/en-US/docs/Web/API/Event/Event)
   * - [FocusEvent](https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
   * - [KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
   * - [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
   * - [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
   * - [TouchEvent](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
   * - [WheelEvent](https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent)
   *
   * You can also specify `JSHandle` as the property value if you want live objects to be passed into the event:
   *
   * ```js
   * // Note you can only create DataTransfer in Chromium and Firefox
   * const dataTransfer = await page.evaluateHandle(() => new DataTransfer());
   * await elementHandle.dispatchEvent('dragstart', { dataTransfer });
   * ```
   *
   * @param type DOM event type: `"click"`, `"dragstart"`, etc.
   * @param eventInit Optional event-specific initialization properties.
   */
  dispatchEvent(type: string, eventInit?: EvaluationArgument): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method waits for [actionability](https://playwright.dev/docs/actionability) checks, focuses the element, fills it and triggers an
   * `input` event after filling. Note that you can pass an empty string to clear the input field.
   *
   * If the target element is not an `<input>`, `<textarea>` or `[contenteditable]` element, this method throws an
   * error. However, if the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be filled
   * instead.
   *
   * To send fine-grained keyboard events, use
   * [locator.pressSequentially(text[, options])](https://playwright.dev/docs/api/class-locator#locator-press-sequentially).
   * @param value Value to set for the `<input>`, `<textarea>` or `[contenteditable]` element.
   * @param options
   */
  fill(value: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.focus([options])](https://playwright.dev/docs/api/class-locator#locator-focus) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on the element.
   */
  focus(): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.getAttribute(name[, options])](https://playwright.dev/docs/api/class-locator#locator-get-attribute)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns element attribute value.
   * @param name Attribute name to get the value for.
   */
  getAttribute(name: string): Promise<null | string>;
  /**
   * **NOTE** Use locator-based [locator.hover([options])](https://playwright.dev/docs/api/class-locator#locator-hover) instead.
   * Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method hovers over the element by performing the following steps:
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-elementhandle#element-handle-hover-option-force) option is
   *    set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to hover over the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-elementhandle#element-handle-hover-option-position).
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-hover-option-timeout), this method
   * throws a [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param options
   */
  hover(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.innerHTML([options])](https://playwright.dev/docs/api/class-locator#locator-inner-html)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns the `element.innerHTML`.
   */
  innerHTML(): Promise<string>;
  /**
   * **NOTE** Use locator-based [locator.innerText([options])](https://playwright.dev/docs/api/class-locator#locator-inner-text)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns the `element.innerText`.
   */
  innerText(): Promise<string>;
  /**
   * **NOTE** Use locator-based
   * [locator.inputValue([options])](https://playwright.dev/docs/api/class-locator#locator-input-value) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
   *
   * Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the
   * control.
   * @param options
   */
  inputValue(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * **NOTE** Use locator-based [locator.isChecked([options])](https://playwright.dev/docs/api/class-locator#locator-is-checked)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
   */
  isChecked(): Promise<boolean>;
  /**
   * **NOTE** Use locator-based
   * [locator.isDisabled([options])](https://playwright.dev/docs/api/class-locator#locator-is-disabled) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is disabled, the opposite of [enabled](https://playwright.dev/docs/actionability#enabled).
   */
  isDisabled(): Promise<boolean>;
  /**
   * **NOTE** Use locator-based
   * [locator.isEditable([options])](https://playwright.dev/docs/api/class-locator#locator-is-editable) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is [editable](https://playwright.dev/docs/actionability#editable).
   */
  isEditable(): Promise<boolean>;
  /**
   * **NOTE** Use locator-based [locator.isEnabled([options])](https://playwright.dev/docs/api/class-locator#locator-is-enabled)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is [enabled](https://playwright.dev/docs/actionability#enabled).
   */
  isEnabled(): Promise<boolean>;
  /**
   * **NOTE** Use locator-based [locator.isHidden([options])](https://playwright.dev/docs/api/class-locator#locator-is-hidden)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is hidden, the opposite of [visible](https://playwright.dev/docs/actionability#visible).
   */
  isHidden(): Promise<boolean>;
  /**
   * **NOTE** Use locator-based [locator.isVisible([options])](https://playwright.dev/docs/api/class-locator#locator-is-visible)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns whether the element is [visible](https://playwright.dev/docs/actionability#visible).
   */
  isVisible(): Promise<boolean>;
  /**
   * Returns the frame containing the given element.
   */
  ownerFrame(): Promise<null | Frame$1>;
  /**
   * **NOTE** Use locator-based [locator.press(key[, options])](https://playwright.dev/docs/api/class-locator#locator-press)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Focuses the element, and then uses
   * [keyboard.down(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-down) and
   * [keyboard.up(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-up).
   *
   * [`key`](https://playwright.dev/docs/api/class-elementhandle#element-handle-press-option-key) can specify the
   * intended [keyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) value or a single
   * character to generate the text for. A superset of the
   * [`key`](https://playwright.dev/docs/api/class-elementhandle#element-handle-press-option-key) values can be found
   * [here](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
   *
   * `F1` - `F12`, `Digit0`- `Digit9`, `KeyA`- `KeyZ`, `Backquote`, `Minus`, `Equal`, `Backslash`, `Backspace`, `Tab`,
   * `Delete`, `Escape`, `ArrowDown`, `End`, `Enter`, `Home`, `Insert`, `PageDown`, `PageUp`, `ArrowRight`, `ArrowUp`,
   * etc.
   *
   * Following modification shortcuts are also supported: `Shift`, `Control`, `Alt`, `Meta`, `ShiftLeft`,
   * `ControlOrMeta`.
   *
   * Holding down `Shift` will type the text that corresponds to the
   * [`key`](https://playwright.dev/docs/api/class-elementhandle#element-handle-press-option-key) in the upper case.
   *
   * If [`key`](https://playwright.dev/docs/api/class-elementhandle#element-handle-press-option-key) is a single
   * character, it is case-sensitive, so the values `a` and `A` will generate different respective texts.
   *
   * Shortcuts such as `key: "Control+o"`, `key: "Control++` or `key: "Control+Shift+T"` are supported as well. When
   * specified with the modifier, modifier is pressed and being held while the subsequent key is being pressed.
   * @param key Name of the key to press or a character to generate, such as `ArrowLeft` or `a`.
   * @param options
   */
  press(key: string, options?: {
    /**
     * Time to wait between `keydown` and `keyup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading. You
     * can opt out of waiting via setting this flag. You would only need this option in the exceptional cases such as
     * navigating to inaccessible pages. Defaults to `false`.
     * @deprecated This option will default to `true` in the future.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.screenshot([options])](https://playwright.dev/docs/api/class-locator#locator-screenshot)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method captures a screenshot of the page, clipped to the size and position of this particular element. If the
   * element is covered by other elements, it will not be actually visible on the screenshot. If the element is a
   * scrollable container, only the currently scrolled content will be visible on the screenshot.
   *
   * This method waits for the [actionability](https://playwright.dev/docs/actionability) checks, then scrolls element into view before taking
   * a screenshot. If the element is detached from DOM, the method throws an error.
   *
   * Returns the buffer with the captured screenshot.
   * @param options
   */
  screenshot(options?: {
    /**
     * When set to `"disabled"`, stops CSS animations, CSS transitions and Web Animations. Animations get different
     * treatment depending on their duration:
     * - finite animations are fast-forwarded to completion, so they'll fire `transitionend` event.
     * - infinite animations are canceled to initial state, and then played over after the screenshot.
     *
     * Defaults to `"allow"` that leaves animations untouched.
     */
    animations?: "disabled" | "allow";
    /**
     * When set to `"hide"`, screenshot will hide text caret. When set to `"initial"`, text caret behavior will not be
     * changed.  Defaults to `"hide"`.
     */
    caret?: "hide" | "initial";
    /**
     * Specify locators that should be masked when the screenshot is taken. Masked elements will be overlaid with a pink
     * box `#FF00FF` (customized by
     * [`maskColor`](https://playwright.dev/docs/api/class-elementhandle#element-handle-screenshot-option-mask-color))
     * that completely covers its bounding box. The mask is also applied to invisible elements, see
     * [Matching only visible elements](https://playwright.dev/docs/locators#matching-only-visible-elements) to disable that.
     */
    mask?: Array<Locator>;
    /**
     * Specify the color of the overlay box for masked elements, in
     * [CSS color format](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value). Default color is pink `#FF00FF`.
     */
    maskColor?: string;
    /**
     * Hides default white background and allows capturing screenshots with transparency. Not applicable to `jpeg` images.
     * Defaults to `false`.
     */
    omitBackground?: boolean;
    /**
     * The file path to save the image to. The screenshot type will be inferred from file extension. If
     * [`path`](https://playwright.dev/docs/api/class-elementhandle#element-handle-screenshot-option-path) is a relative
     * path, then it is resolved relative to the current working directory. If no path is provided, the image won't be
     * saved to the disk.
     */
    path?: string;
    /**
     * The quality of the image, between 0-100. Not applicable to `png` images.
     */
    quality?: number;
    /**
     * When set to `"css"`, screenshot will have a single pixel per each css pixel on the page. For high-dpi devices, this
     * will keep screenshots small. Using `"device"` option will produce a single pixel per each device pixel, so
     * screenshots of high-dpi devices will be twice as large or even larger.
     *
     * Defaults to `"device"`.
     */
    scale?: "css" | "device";
    /**
     * Text of the stylesheet to apply while making the screenshot. This is where you can hide dynamic elements, make
     * elements invisible or change their properties to help you creating repeatable screenshots. This stylesheet pierces
     * the Shadow DOM and applies to the inner frames.
     */
    style?: string;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * Specify screenshot type, defaults to `png`.
     */
    type?: "png" | "jpeg";
  }): Promise<Buffer>;
  /**
   * **NOTE** Use locator-based
   * [locator.scrollIntoViewIfNeeded([options])](https://playwright.dev/docs/api/class-locator#locator-scroll-into-view-if-needed)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method waits for [actionability](https://playwright.dev/docs/actionability) checks, then tries to scroll element into view, unless
   * it is completely visible as defined by
   * [IntersectionObserver](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)'s `ratio`.
   *
   * Throws when `elementHandle` does not point to an element
   * [connected](https://developer.mozilla.org/en-US/docs/Web/API/Node/isConnected) to a Document or a ShadowRoot.
   *
   * See [scrolling](https://playwright.dev/docs/input#scrolling) for alternative ways to scroll.
   * @param options
   */
  scrollIntoViewIfNeeded(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.selectOption(values[, options])](https://playwright.dev/docs/api/class-locator#locator-select-option)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method waits for [actionability](https://playwright.dev/docs/actionability) checks, waits until all specified options are present in
   * the `<select>` element and selects these options.
   *
   * If the target element is not a `<select>` element, this method throws an error. However, if the element is inside
   * the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be used
   * instead.
   *
   * Returns the array of option values that have been successfully selected.
   *
   * Triggers a `change` and `input` event once all the provided options have been selected.
   *
   * **Usage**
   *
   * ```js
   * // Single selection matching the value or label
   * handle.selectOption('blue');
   *
   * // single selection matching the label
   * handle.selectOption({ label: 'Blue' });
   *
   * // multiple selection
   * handle.selectOption(['red', 'green', 'blue']);
   * ```
   *
   * @param values Options to select. If the `<select>` has the `multiple` attribute, all matching options are selected, otherwise
   * only the first option matching one of the passed options is selected. String values are matching both values and
   * labels. Option is considered matching if all specified properties match.
   * @param options
   */
  selectOption(values: null | string | ElementHandle | ReadonlyArray<string> | {
    /**
     * Matches by `option.value`. Optional.
     */
    value?: string;
    /**
     * Matches by `option.label`. Optional.
     */
    label?: string;
    /**
     * Matches by the index. Optional.
     */
    index?: number;
  } | ReadonlyArray<ElementHandle> | ReadonlyArray<{
    /**
     * Matches by `option.value`. Optional.
     */
    value?: string;
    /**
     * Matches by `option.label`. Optional.
     */
    label?: string;
    /**
     * Matches by the index. Optional.
     */
    index?: number;
  }>, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<Array<string>>;
  /**
   * **NOTE** Use locator-based
   * [locator.selectText([options])](https://playwright.dev/docs/api/class-locator#locator-select-text) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * This method waits for [actionability](https://playwright.dev/docs/actionability) checks, then focuses the element and selects all its
   * text content.
   *
   * If the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in
   * the control instead.
   * @param options
   */
  selectText(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.setChecked(checked[, options])](https://playwright.dev/docs/api/class-locator#locator-set-checked)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method checks or unchecks an element by performing the following steps:
   * 1. Ensure that element is a checkbox or a radio input. If not, this method throws.
   * 1. If the element already has the right checked state, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-elementhandle#element-handle-set-checked-option-force) option
   *    is set. If the element is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now checked or unchecked. If not, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-set-checked-option-timeout), this
   * method throws a [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables
   * this.
   * @param checked Whether to check or uncheck the checkbox.
   * @param options
   */
  setChecked(checked: boolean, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.setInputFiles(files[, options])](https://playwright.dev/docs/api/class-locator#locator-set-input-files)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then
   * they are resolved relative to the current working directory. For empty array, clears the selected files. For inputs
   * with a `[webkitdirectory]` attribute, only a single directory path is supported.
   *
   * This method expects [ElementHandle](https://playwright.dev/docs/api/class-elementhandle) to point to an
   * [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside
   * the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
   * @param files
   * @param options
   */
  setInputFiles(files: string | ReadonlyArray<string> | {
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  } | ReadonlyArray<{
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  }>, options?: {
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.tap([options])](https://playwright.dev/docs/api/class-locator#locator-tap) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * This method taps the element by performing the following steps:
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-elementhandle#element-handle-tap-option-force) option is set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.touchscreen](https://playwright.dev/docs/api/class-page#page-touchscreen) to tap the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-elementhandle#element-handle-tap-option-position).
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-tap-option-timeout), this method
   * throws a [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   *
   * **NOTE** `elementHandle.tap()` requires that the `hasTouch` option of the browser context be set to true.
   *
   * @param options
   */
  tap(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based
   * [locator.textContent([options])](https://playwright.dev/docs/api/class-locator#locator-text-content) instead. Read
   * more about [locators](https://playwright.dev/docs/locators).
   *
   * Returns the `node.textContent`.
   */
  textContent(): Promise<null | string>;
  /**
   * Focuses the element, and then sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the
   * text.
   *
   * To press a special key, like `Control` or `ArrowDown`, use
   * [elementHandle.press(key[, options])](https://playwright.dev/docs/api/class-elementhandle#element-handle-press).
   *
   * **Usage**
   * @deprecated In most cases, you should use
   * [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill) instead. You only need
   * to press keys one by one if there is special keyboard handling on the page - in this case use
   * [locator.pressSequentially(text[, options])](https://playwright.dev/docs/api/class-locator#locator-press-sequentially).
   * @param text A text to type into a focused element.
   * @param options
   */
  type(text: string, options?: {
    /**
     * Time to wait between key presses in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Use locator-based [locator.uncheck([options])](https://playwright.dev/docs/api/class-locator#locator-uncheck)
   * instead. Read more about [locators](https://playwright.dev/docs/locators).
   *
   * This method checks the element by performing the following steps:
   * 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already
   *    unchecked, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-elementhandle#element-handle-uncheck-option-force) option is
   *    set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now unchecked. If not, this method throws.
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-uncheck-option-timeout), this method
   * throws a [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param options
   */
  uncheck(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Returns when the element satisfies the
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-element-state-option-state).
   *
   * Depending on the
   * [`state`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-element-state-option-state)
   * parameter, this method waits for one of the [actionability](https://playwright.dev/docs/actionability) checks to pass. This method throws
   * when the element is detached while waiting, unless waiting for the `"hidden"` state.
   * - `"visible"` Wait until the element is [visible](https://playwright.dev/docs/actionability#visible).
   * - `"hidden"` Wait until the element is [not visible](https://playwright.dev/docs/actionability#visible) or not attached. Note that
   *   waiting for hidden does not throw when the element detaches.
   * - `"stable"` Wait until the element is both [visible](https://playwright.dev/docs/actionability#visible) and
   *   [stable](https://playwright.dev/docs/actionability#stable).
   * - `"enabled"` Wait until the element is [enabled](https://playwright.dev/docs/actionability#enabled).
   * - `"disabled"` Wait until the element is [not enabled](https://playwright.dev/docs/actionability#enabled).
   * - `"editable"` Wait until the element is [editable](https://playwright.dev/docs/actionability#editable).
   *
   * If the element does not satisfy the condition for the
   * [`timeout`](https://playwright.dev/docs/api/class-elementhandle#element-handle-wait-for-element-state-option-timeout)
   * milliseconds, this method will throw.
   * @param state A state to wait for, see below for more details.
   * @param options
   */
  waitForElementState(state: "visible" | "hidden" | "stable" | "enabled" | "disabled" | "editable", options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
}
/**
 * Locators are the central piece of Playwright's auto-waiting and retry-ability. In a nutshell, locators represent a
 * way to find element(s) on the page at any moment. A locator can be created with the
 * [page.locator(selector[, options])](https://playwright.dev/docs/api/class-page#page-locator) method.
 *
 * [Learn more about locators](https://playwright.dev/docs/locators).
 */
interface Locator {
  /**
   * Execute JavaScript code in the page, taking the matching element as an argument.
   *
   * **Details**
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression), called with the
   * matching element as a first argument, and
   * [`arg`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-arg) as a second argument.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression) returns a
   * [Promise], this method will wait for the promise to resolve and return its value.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression) throws or
   * rejects, this method throws.
   *
   * **Usage**
   *
   * Passing argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression):
   *
   * ```js
   * const result = await page.getByTestId('myId').evaluate((element, [x, y]) => {
   *   return element.textContent + ' ' + x * y;
   * }, [7, 8]);
   * console.log(result); // prints "myId text 56"
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression).
   * @param options
   */
  evaluate<R, Arg, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(pageFunction: PageFunctionOn<E, Arg, R>, arg: Arg, options?: {
    timeout?: number;
  }): Promise<R>;
  /**
   * Execute JavaScript code in the page, taking the matching element as an argument.
   *
   * **Details**
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression), called with the
   * matching element as a first argument, and
   * [`arg`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-arg) as a second argument.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression) returns a
   * [Promise], this method will wait for the promise to resolve and return its value.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression) throws or
   * rejects, this method throws.
   *
   * **Usage**
   *
   * Passing argument to
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression):
   *
   * ```js
   * const result = await page.getByTestId('myId').evaluate((element, [x, y]) => {
   *   return element.textContent + ' ' + x * y;
   * }, [7, 8]);
   * console.log(result); // prints "myId text 56"
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-option-expression).
   * @param options
   */
  evaluate<R, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(pageFunction: PageFunctionOn<E, void, R>, options?: {
    timeout?: number;
  }): Promise<R>;
  /**
   * Execute JavaScript code in the page, taking the matching element as an argument, and return a
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle) with the result.
   *
   * **Details**
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-expression) as
   * a[JSHandle](https://playwright.dev/docs/api/class-jshandle), called with the matching element as a first argument,
   * and [`arg`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-arg) as a second argument.
   *
   * The only difference between
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate)
   * and
   * [locator.evaluateHandle(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle)
   * is that
   * [locator.evaluateHandle(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle)
   * returns [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-expression)
   * returns a [Promise], this method will wait for the promise to resolve and return its value.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-expression) throws
   * or rejects, this method throws.
   *
   * See [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) for
   * more details.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-expression).
   * @param options
   */
  evaluateHandle<R, Arg, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(pageFunction: PageFunctionOn<E, Arg, R>, arg: Arg): Promise<SmartHandle<R>>;
  /**
   * Execute JavaScript code in the page, taking the matching element as an argument, and return a
   * [JSHandle](https://playwright.dev/docs/api/class-jshandle) with the result.
   *
   * **Details**
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-expression) as
   * a[JSHandle](https://playwright.dev/docs/api/class-jshandle), called with the matching element as a first argument,
   * and [`arg`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-arg) as a second argument.
   *
   * The only difference between
   * [locator.evaluate(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate)
   * and
   * [locator.evaluateHandle(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle)
   * is that
   * [locator.evaluateHandle(pageFunction[, arg, options])](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle)
   * returns [JSHandle](https://playwright.dev/docs/api/class-jshandle).
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-expression)
   * returns a [Promise], this method will wait for the promise to resolve and return its value.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-expression) throws
   * or rejects, this method throws.
   *
   * See [page.evaluateHandle(pageFunction[, arg])](https://playwright.dev/docs/api/class-page#page-evaluate-handle) for
   * more details.
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-handle-option-expression).
   * @param options
   */
  evaluateHandle<R, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(pageFunction: PageFunctionOn<E, void, R>): Promise<SmartHandle<R>>;
  /**
   * Execute JavaScript code in the page, taking all matching elements as an argument.
   *
   * **Details**
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-expression), called with
   * an array of all matching elements as a first argument, and
   * [`arg`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-arg) as a second argument.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-expression) returns a
   * [Promise], this method will wait for the promise to resolve and return its value.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-expression) throws or
   * rejects, this method throws.
   *
   * **Usage**
   *
   * ```js
   * const locator = page.locator('div');
   * const moreThanTen = await locator.evaluateAll((divs, min) => divs.length > min, 10);
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-expression).
   */
  evaluateAll<R, Arg, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(pageFunction: PageFunctionOn<E[], Arg, R>, arg: Arg): Promise<R>;
  /**
   * Execute JavaScript code in the page, taking all matching elements as an argument.
   *
   * **Details**
   *
   * Returns the return value of
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-expression), called with
   * an array of all matching elements as a first argument, and
   * [`arg`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-arg) as a second argument.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-expression) returns a
   * [Promise], this method will wait for the promise to resolve and return its value.
   *
   * If [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-expression) throws or
   * rejects, this method throws.
   *
   * **Usage**
   *
   * ```js
   * const locator = page.locator('div');
   * const moreThanTen = await locator.evaluateAll((divs, min) => divs.length > min, 10);
   * ```
   *
   * @param pageFunction Function to be evaluated in the page context.
   * @param arg Optional argument to pass to
   * [`pageFunction`](https://playwright.dev/docs/api/class-locator#locator-evaluate-all-option-expression).
   */
  evaluateAll<R, E extends SVGElement | HTMLElement = SVGElement | HTMLElement>(pageFunction: PageFunctionOn<E[], void, R>): Promise<R>;
  /**
   * **NOTE** Always prefer using [Locator](https://playwright.dev/docs/api/class-locator)s and web assertions over
   * [ElementHandle](https://playwright.dev/docs/api/class-elementhandle)s because latter are inherently racy.
   *
   * Resolves given locator to the first matching DOM element. If there are no matching elements, waits for one. If
   * multiple elements match the locator, throws.
   * @param options
   */
  elementHandle(options?: {
    timeout?: number;
  }): Promise<null | ElementHandle<SVGElement | HTMLElement>>;
  /**
   * Highlight the corresponding element(s) on the screen. Useful for debugging, don't commit the code that uses
   * [locator.highlight([options])](https://playwright.dev/docs/api/class-locator#locator-highlight).
   * @param options
   */
  highlight(options?: {
    style?: string | {
      [key: string]: string | number;
    };
  }): Promise<Disposable>;
  /**
   * Returns a human-readable representation of the locator, using the
   * [locator.description()](https://playwright.dev/docs/api/class-locator#locator-description) if one exists;
   * otherwise, it generates a string based on the locator's selector.
   */
  toString(): string;
  /**
   * When the locator points to a list of elements, this returns an array of locators, pointing to their respective
   * elements.
   *
   * **NOTE** [locator.all()](https://playwright.dev/docs/api/class-locator#locator-all) does not wait for elements to
   * match the locator, and instead immediately returns whatever is present in the page.
   *
   * When the list of elements changes dynamically,
   * [locator.all()](https://playwright.dev/docs/api/class-locator#locator-all) will produce unpredictable and flaky
   * results.
   *
   * When the list of elements is stable, but loaded dynamically, wait for the full list to finish loading before
   * calling [locator.all()](https://playwright.dev/docs/api/class-locator#locator-all).
   *
   * **Usage**
   *
   * ```js
   * for (const li of await page.getByRole('listitem').all())
   *   await li.click();
   * ```
   *
   */
  all(): Promise<Array<Locator>>;
  /**
   * Returns an array of `node.innerText` values for all matching nodes.
   *
   * **NOTE** If you need to assert text on the page, prefer
   * [expect(locator).toHaveText(expected[, options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-text)
   * with
   * [`useInnerText`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-text-option-use-inner-text)
   * option to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const texts = await page.getByRole('link').allInnerTexts();
   * ```
   *
   */
  allInnerTexts(): Promise<Array<string>>;
  /**
   * Returns an array of `node.textContent` values for all matching nodes.
   *
   * **NOTE** If you need to assert text on the page, prefer
   * [expect(locator).toHaveText(expected[, options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-text)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const texts = await page.getByRole('link').allTextContents();
   * ```
   *
   */
  allTextContents(): Promise<Array<string>>;
  /**
   * Creates a locator that matches both this locator and the argument locator.
   *
   * **Usage**
   *
   * The following example finds a button with a specific title.
   *
   * ```js
   * const button = page.getByRole('button').and(page.getByTitle('Subscribe'));
   * ```
   *
   * @param locator Additional locator to match.
   */
  and(locator: Locator): Locator;
  /**
   * Captures the aria snapshot of the given element. Read more about [aria snapshots](https://playwright.dev/docs/aria-snapshots) and
   * [expect(locator).toMatchAriaSnapshot(expected[, options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-match-aria-snapshot)
   * for the corresponding assertion.
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('link').ariaSnapshot();
   * ```
   *
   * **Details**
   *
   * This method captures the aria snapshot of the given element. The snapshot is a string that represents the state of
   * the element and its children. The snapshot can be used to assert the state of the element in the test, or to
   * compare it to state in the future.
   *
   * The ARIA snapshot is represented using [YAML](https://yaml.org/spec/1.2.2/) markup language:
   * - The keys of the objects are the roles and optional accessible names of the elements.
   * - The values are either text content or an array of child elements.
   * - Generic static text can be represented with the `text` key.
   *
   * Below is the HTML markup and the respective ARIA snapshot:
   *
   * ```html
   * <ul aria-label="Links">
   *   <li><a href="/">Home</a></li>
   *   <li><a href="/about">About</a></li>
   * <ul>
   * ```
   *
   * ```yml
   * - list "Links":
   *   - listitem:
   *     - link "Home"
   *   - listitem:
   *     - link "About"
   * ```
   *
   * An AI-optimized snapshot, controlled by
   * [`mode`](https://playwright.dev/docs/api/class-locator#locator-aria-snapshot-option-mode), is different from a
   * default snapshot:
   * 1. Includes element references `[ref=e2]`. 2. Does not wait for an element matching the locator, and throws when
   *    no elements match. 3. Includes snapshots of `<iframe>`s inside the target.
   * @param options
   */
  ariaSnapshot(options?: {
    /**
     * When `true`, appends each element's bounding box as `[box=x,y,width,height]` to the snapshot. Coordinates are
     * relative to the viewport, in CSS pixels, as returned by
     * [`Element.getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
     * Defaults to `false`.
     */
    boxes?: boolean;
    /**
     * When specified, limits the depth of the snapshot.
     */
    depth?: number;
    /**
     * When set to `"ai"`, returns a snapshot optimized for AI consumption. Defaults to `"default"`. See details for more
     * information.
     */
    mode?: "ai" | "default";
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * Calls [blur](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/blur) on the element.
   * @param options
   */
  blur(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * This method returns the bounding box of the element matching the locator, or `null` if the element is not visible.
   * The bounding box is calculated relative to the main frame viewport - which is usually the same as the browser
   * window.
   *
   * **Details**
   *
   * Scrolling affects the returned bounding box, similarly to
   * [Element.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
   * That means `x` and/or `y` may be negative.
   *
   * Elements from child frames return the bounding box relative to the main frame, unlike the
   * [Element.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).
   *
   * Assuming the page is static, it is safe to use bounding box coordinates to perform input. For example, the
   * following snippet should click the center of the element.
   *
   * **Usage**
   *
   * ```js
   * const box = await page.getByRole('button').boundingBox();
   * await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
   * ```
   *
   * @param options
   */
  boundingBox(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<null | {
    /**
     * the x coordinate of the element in pixels.
     */
    x: number;
    /**
     * the y coordinate of the element in pixels.
     */
    y: number;
    /**
     * the width of the element in pixels.
     */
    width: number;
    /**
     * the height of the element in pixels.
     */
    height: number;
  }>;
  /**
   * Ensure that checkbox or radio element is checked.
   *
   * **Details**
   *
   * Performs the following steps:
   * 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already
   *    checked, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-locator#locator-check-option-force) option is set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now checked. If not, this method throws.
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-locator#locator-check-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('checkbox').check();
   * ```
   *
   * @param options
   */
  check(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Clear the input field.
   *
   * **Details**
   *
   * This method waits for [actionability](https://playwright.dev/docs/actionability) checks, focuses the element, clears it and triggers an
   * `input` event after clearing.
   *
   * If the target element is not an `<input>`, `<textarea>` or `[contenteditable]` element, this method throws an
   * error. However, if the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be cleared
   * instead.
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('textbox').clear();
   * ```
   *
   * @param options
   */
  clear(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Click an element.
   *
   * **Details**
   *
   * This method clicks the element by performing the following steps:
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-locator#locator-click-option-force) option is set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-locator#locator-click-option-position).
   * 1. Wait for initiated navigations to either succeed or fail, unless
   *    [`noWaitAfter`](https://playwright.dev/docs/api/class-locator#locator-click-option-no-wait-after) option is
   *    set.
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-locator#locator-click-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   *
   * **Usage**
   *
   * Click a button:
   *
   * ```js
   * await page.getByRole('button').click();
   * ```
   *
   * Shift-right-click at a specific position on a canvas:
   *
   * ```js
   * await page.locator('canvas').click({
   *   button: 'right',
   *   modifiers: ['Shift'],
   *   position: { x: 23, y: 32 },
   * });
   * ```
   *
   * @param options
   */
  click(options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * defaults to 1. See [UIEvent.detail].
     */
    clickCount?: number;
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading. You
     * can opt out of waiting via setting this flag. You would only need this option in the exceptional cases such as
     * navigating to inaccessible pages. Defaults to `false`.
     * @deprecated This option will default to `true` in the future.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Defaults to 1. Sends `n` interpolated `mousemove` events to represent travel between Playwright's current cursor
     * position and the provided destination. When set to 1, emits a single `mousemove` event at the destination location.
     */
    steps?: number;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Returns a [FrameLocator](https://playwright.dev/docs/api/class-framelocator) object pointing to the same `iframe`
   * as this locator.
   *
   * Useful when you have a [Locator](https://playwright.dev/docs/api/class-locator) object obtained somewhere, and
   * later on would like to interact with the content inside the frame.
   *
   * For a reverse operation, use
   * [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner).
   *
   * **Usage**
   *
   * ```js
   * const locator = page.locator('iframe[name="embedded"]');
   * // ...
   * const frameLocator = locator.contentFrame();
   * await frameLocator.getByRole('button').click();
   * ```
   *
   */
  contentFrame(): FrameLocator;
  /**
   * Returns the number of elements matching the locator.
   *
   * **NOTE** If you need to assert the number of elements on the page, prefer
   * [expect(locator).toHaveCount(count[, options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-count)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const count = await page.getByRole('listitem').count();
   * ```
   *
   */
  count(): Promise<number>;
  /**
   * Double-click an element.
   *
   * **Details**
   *
   * This method double clicks the element by performing the following steps:
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-locator#locator-dblclick-option-force) option is set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to double click in the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-locator#locator-dblclick-option-position).
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-locator#locator-dblclick-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   *
   * **NOTE** `element.dblclick()` dispatches two `click` events and a single `dblclick` event.
   *
   * @param options
   */
  dblclick(options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Defaults to 1. Sends `n` interpolated `mousemove` events to represent travel between Playwright's current cursor
     * position and the provided destination. When set to 1, emits a single `mousemove` event at the destination location.
     */
    steps?: number;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Describes the locator, description is used in the trace viewer and reports. Returns the locator pointing to the
   * same element.
   *
   * **Usage**
   *
   * ```js
   * const button = page.getByTestId('btn-sub').describe('Subscribe button');
   * await button.click();
   * ```
   *
   * @param description Locator description.
   */
  describe(description: string): Locator;
  /**
   * Returns locator description previously set with
   * [locator.describe(description)](https://playwright.dev/docs/api/class-locator#locator-describe). Returns `null` if
   * no custom description has been set. Prefer
   * [locator.toString()](https://playwright.dev/docs/api/class-locator#locator-to-string) for a human-readable
   * representation, as it uses the description when available.
   *
   * **Usage**
   *
   * ```js
   * const button = page.getByRole('button').describe('Subscribe button');
   * console.log(button.description()); // "Subscribe button"
   *
   * const input = page.getByRole('textbox');
   * console.log(input.description()); // null
   * ```
   *
   */
  description(): null | string;
  /**
   * Programmatically dispatch an event on the matching element.
   *
   * **Usage**
   *
   * ```js
   * await locator.dispatchEvent('click');
   * ```
   *
   * **Details**
   *
   * The snippet above dispatches the `click` event on the element. Regardless of the visibility state of the element,
   * `click` is dispatched. This is equivalent to calling
   * [element.click()](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).
   *
   * Under the hood, it creates an instance of an event based on the given
   * [`type`](https://playwright.dev/docs/api/class-locator#locator-dispatch-event-option-type), initializes it with
   * [`eventInit`](https://playwright.dev/docs/api/class-locator#locator-dispatch-event-option-event-init) properties
   * and dispatches it on the element. Events are `composed`, `cancelable` and bubble by default.
   *
   * Since [`eventInit`](https://playwright.dev/docs/api/class-locator#locator-dispatch-event-option-event-init) is
   * event-specific, please refer to the events documentation for the lists of initial properties:
   * - [DeviceMotionEvent](https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent/DeviceMotionEvent)
   * - [DeviceOrientationEvent](https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent)
   * - [DragEvent](https://developer.mozilla.org/en-US/docs/Web/API/DragEvent/DragEvent)
   * - [Event](https://developer.mozilla.org/en-US/docs/Web/API/Event/Event)
   * - [FocusEvent](https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/FocusEvent)
   * - [KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent)
   * - [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/MouseEvent)
   * - [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/PointerEvent)
   * - [TouchEvent](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent/TouchEvent)
   * - [WheelEvent](https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/WheelEvent)
   *
   * You can also specify [JSHandle](https://playwright.dev/docs/api/class-jshandle) as the property value if you want
   * live objects to be passed into the event:
   *
   * ```js
   * const dataTransfer = await page.evaluateHandle(() => new DataTransfer());
   * await locator.dispatchEvent('dragstart', { dataTransfer });
   * ```
   *
   * @param type DOM event type: `"click"`, `"dragstart"`, etc.
   * @param eventInit Optional event-specific initialization properties.
   * @param options
   */
  dispatchEvent(type: string, eventInit?: EvaluationArgument, options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Drag the source element towards the target element and drop it.
   *
   * **Details**
   *
   * This method drags the locator to another target locator or target position. It will first move to the source
   * element, perform a `mousedown`, then move to the target element or position and perform a `mouseup`.
   *
   * **Usage**
   *
   * ```js
   * const source = page.locator('#source');
   * const target = page.locator('#target');
   *
   * await source.dragTo(target);
   * // or specify exact positions relative to the top-left corners of the elements:
   * await source.dragTo(target, {
   *   sourcePosition: { x: 34, y: 7 },
   *   targetPosition: { x: 10, y: 20 },
   * });
   * ```
   *
   * @param target Locator of the element to drag to.
   * @param options
   */
  dragTo(target: Locator, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Clicks on the source element at this point relative to the top-left corner of the element's padding box. If not
     * specified, some visible point of the element is used.
     */
    sourcePosition?: {
      x: number;
      y: number;
    };
    /**
     * Defaults to 1. Sends `n` interpolated `mousemove` events to represent travel between the `mousedown` and `mouseup`
     * of the drag. When set to 1, emits a single `mousemove` event at the destination location.
     */
    steps?: number;
    /**
     * Drops on the target element at this point relative to the top-left corner of the element's padding box. If not
     * specified, some visible point of the element is used.
     */
    targetPosition?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Simulate an external drag-and-drop of files or clipboard-like data onto this locator.
   *
   * **Details**
   *
   * Dispatches the native `dragenter`, `dragover`, and `drop` events at the center of the target element with a
   * synthetic [DataTransfer] carrying the provided files and/or data entries. Works cross-browser by constructing the
   * [DataTransfer] in the page context.
   *
   * If the target element's `dragover` listener does not call `preventDefault()`, the target is considered to have
   * rejected the drop: Playwright dispatches `dragleave` and this method throws.
   *
   * **Usage**
   *
   * Drop a file buffer onto an upload area:
   *
   * ```js
   * await page.locator('#dropzone').drop({
   *   files: { name: 'note.txt', mimeType: 'text/plain', buffer: Buffer.from('hello') },
   * });
   * ```
   *
   * Drop plain text and a URL together:
   *
   * ```js
   * await page.locator('#dropzone').drop({
   *   data: {
   *     'text/plain': 'hello world',
   *     'text/uri-list': 'https://example.com',
   *   },
   * });
   * ```
   *
   * @param payload Data to drop onto the target. Provide `files` (file paths or in-memory buffers), `data` (a mime-type → string map
   * for clipboard-like content such as `text/plain`, `text/html`, `text/uri-list`), or both.
   * @param options
   */
  drop(payload: {
    files?: string | Array<string> | {
      /**
       * File name
       */
      name: string;
      /**
       * File type
       */
      mimeType: string;
      /**
       * File content
       */
      buffer: Buffer;
    } | Array<{
      /**
       * File name
       */
      name: string;
      /**
       * File type
       */
      mimeType: string;
      /**
       * File content
       */
      buffer: Buffer;
    }>;
    data?: {
      [key: string]: string;
    };
  }, options?: {
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** Always prefer using [Locator](https://playwright.dev/docs/api/class-locator)s and web assertions over
   * [ElementHandle](https://playwright.dev/docs/api/class-elementhandle)s because latter are inherently racy.
   *
   * Resolves given locator to all matching DOM elements. If there are no matching elements, returns an empty list.
   */
  elementHandles(): Promise<Array<ElementHandle>>;
  /**
   * Set a value to the input field.
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('textbox').fill('example value');
   * ```
   *
   * **Details**
   *
   * This method waits for [actionability](https://playwright.dev/docs/actionability) checks, focuses the element, fills it and triggers an
   * `input` event after filling. Note that you can pass an empty string to clear the input field.
   *
   * If the target element is not an `<input>`, `<textarea>` or `[contenteditable]` element, this method throws an
   * error. However, if the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be filled
   * instead.
   *
   * To send fine-grained keyboard events, use
   * [locator.pressSequentially(text[, options])](https://playwright.dev/docs/api/class-locator#locator-press-sequentially).
   * @param value Value to set for the `<input>`, `<textarea>` or `[contenteditable]` element.
   * @param options
   */
  fill(value: string, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * This method narrows existing locator according to the options, for example filters by text. It can be chained to
   * filter multiple times.
   *
   * **Usage**
   *
   * ```js
   * const rowLocator = page.locator('tr');
   * // ...
   * await rowLocator
   *     .filter({ hasText: 'text in column 1' })
   *     .filter({ has: page.getByRole('button', { name: 'column 2 button' }) })
   *     .screenshot();
   * ```
   *
   * @param options
   */
  filter(options?: {
    /**
     * Narrows down the results of the method to those which contain elements matching this relative locator. For example,
     * `article` that has `text=Playwright` matches `<article><div>Playwright</div></article>`.
     *
     * Inner locator **must be relative** to the outer locator and is queried starting with the outer locator match, not
     * the document root. For example, you can find `content` that has `div` in
     * `<article><content><div>Playwright</div></content></article>`. However, looking for `content` that has `article
     * div` will fail, because the inner locator must be relative and should not use any elements outside the `content`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    has?: Locator;
    /**
     * Matches elements that do not contain an element that matches an inner locator. Inner locator is queried against the
     * outer one. For example, `article` that does not have `div` matches `<article><span>Playwright</span></article>`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    hasNot?: Locator;
    /**
     * Matches elements that do not contain specified text somewhere inside, possibly in a child or a descendant element.
     * When passed a [string], matching is case-insensitive and searches for a substring.
     */
    hasNotText?: string | RegExp;
    /**
     * Matches elements containing specified text somewhere inside, possibly in a child or a descendant element. When
     * passed a [string], matching is case-insensitive and searches for a substring. For example, `"Playwright"` matches
     * `<article><div>Playwright</div></article>`.
     */
    hasText?: string | RegExp;
    /**
     * Only matches visible or invisible elements.
     */
    visible?: boolean;
  }): Locator;
  /**
   * Returns locator to the first matching element.
   */
  first(): Locator;
  /**
   * Calls [focus](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus) on the matching element.
   * @param options
   */
  focus(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * When working with iframes, you can create a frame locator that will enter the iframe and allow locating elements in
   * that iframe:
   *
   * **Usage**
   *
   * ```js
   * const locator = page.frameLocator('iframe').getByText('Submit');
   * await locator.click();
   * ```
   *
   * @param selector A selector to use when resolving DOM element.
   */
  frameLocator(selector: string): FrameLocator;
  /**
   * Returns the matching element's attribute value.
   *
   * **NOTE** If you need to assert an element's attribute, prefer
   * [expect(locator).toHaveAttribute(name, value[, options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-attribute)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * @param name Attribute name to get the value for.
   * @param options
   */
  getAttribute(name: string, options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<null | string>;
  /**
   * Allows locating elements by their alt text.
   *
   * **Usage**
   *
   * For example, this method will find the image by alt text "Playwright logo":
   *
   * ```html
   * <img alt='Playwright logo'>
   * ```
   *
   * ```js
   * await page.getByAltText('Playwright logo').click();
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByAltText(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating input elements by the text of the associated `<label>` or `aria-labelledby` element, or by the
   * `aria-label` attribute.
   *
   * **Usage**
   *
   * For example, this method will find inputs by label "Username" and "Password" in the following DOM:
   *
   * ```html
   * <input aria-label="Username">
   * <label for="password-input">Password:</label>
   * <input id="password-input">
   * ```
   *
   * ```js
   * await page.getByLabel('Username').fill('john');
   * await page.getByLabel('Password').fill('secret');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByLabel(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating input elements by the placeholder text.
   *
   * **Usage**
   *
   * For example, consider the following DOM structure.
   *
   * ```html
   * <input type="email" placeholder="name@example.com" />
   * ```
   *
   * You can fill the input after locating it by the placeholder text:
   *
   * ```js
   * await page
   *     .getByPlaceholder('name@example.com')
   *     .fill('playwright@microsoft.com');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByPlaceholder(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating elements by their [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles),
   * [ARIA attributes](https://www.w3.org/TR/wai-aria-1.2/#aria-attributes) and
   * [accessible name](https://w3c.github.io/accname/#dfn-accessible-name).
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <h3>Sign up</h3>
   * <label>
   *   <input type="checkbox" /> Subscribe
   * </label>
   * <br/>
   * <button>Submit</button>
   * ```
   *
   * You can locate each element by its implicit role:
   *
   * ```js
   * await expect(page.getByRole('heading', { name: 'Sign up' })).toBeVisible();
   *
   * await page.getByRole('checkbox', { name: 'Subscribe' }).check();
   *
   * await page.getByRole('button', { name: /submit/i }).click();
   * ```
   *
   * **Details**
   *
   * Role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback
   * about the ARIA guidelines.
   *
   * Many html elements have an implicitly [defined role](https://w3c.github.io/html-aam/#html-element-role-mappings)
   * that is recognized by the role selector. You can find all the
   * [supported roles here](https://www.w3.org/TR/wai-aria-1.2/#role_definitions). ARIA guidelines **do not recommend**
   * duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values.
   * @param role Required aria role.
   * @param options
   */
  getByRole(role: "alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "insertion" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "meter" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem", options?: {
    /**
     * An attribute that is usually set by `aria-checked` or native `<input type=checkbox>` controls.
     *
     * Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked).
     */
    checked?: boolean;
    /**
     * Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By
     * default, matching is case-insensitive and searches for a substring, use
     * [`exact`](https://playwright.dev/docs/api/class-locator#locator-get-by-role-option-exact) to control this behavior.
     *
     * Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description).
     */
    description?: string | RegExp;
    /**
     * An attribute that is usually set by `aria-disabled` or `disabled`.
     *
     * **NOTE** Unlike most other attributes, `disabled` is inherited through the DOM hierarchy. Learn more about
     * [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.2/#aria-disabled).
     *
     */
    disabled?: boolean;
    /**
     * Whether [`name`](https://playwright.dev/docs/api/class-locator#locator-get-by-role-option-name) and
     * [`description`](https://playwright.dev/docs/api/class-locator#locator-get-by-role-option-description) are matched
     * exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular expression. Note
     * that exact match still trims whitespace.
     */
    exact?: boolean;
    /**
     * An attribute that is usually set by `aria-expanded`.
     *
     * Learn more about [`aria-expanded`](https://www.w3.org/TR/wai-aria-1.2/#aria-expanded).
     */
    expanded?: boolean;
    /**
     * Option that controls whether hidden elements are matched. By default, only non-hidden elements, as
     * [defined by ARIA](https://www.w3.org/TR/wai-aria-1.2/#tree_exclusion), are matched by role selector.
     *
     * Learn more about [`aria-hidden`](https://www.w3.org/TR/wai-aria-1.2/#aria-hidden).
     */
    includeHidden?: boolean;
    /**
     * A number attribute that is usually present for roles `heading`, `listitem`, `row`, `treeitem`, with default values
     * for `<h1>-<h6>` elements.
     *
     * Learn more about [`aria-level`](https://www.w3.org/TR/wai-aria-1.2/#aria-level).
     */
    level?: number;
    /**
     * Option to match the [accessible name](https://w3c.github.io/accname/#dfn-accessible-name). By default, matching is
     * case-insensitive and searches for a substring, use
     * [`exact`](https://playwright.dev/docs/api/class-locator#locator-get-by-role-option-exact) to control this behavior.
     *
     * Learn more about [accessible name](https://w3c.github.io/accname/#dfn-accessible-name).
     */
    name?: string | RegExp;
    /**
     * An attribute that is usually set by `aria-pressed`.
     *
     * Learn more about [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.2/#aria-pressed).
     */
    pressed?: boolean;
    /**
     * An attribute that is usually set by `aria-selected`.
     *
     * Learn more about [`aria-selected`](https://www.w3.org/TR/wai-aria-1.2/#aria-selected).
     */
    selected?: boolean;
  }): Locator;
  /**
   * Locate element by the test id.
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <button data-testid="directions">Itinéraire</button>
   * ```
   *
   * You can locate the element by its test id:
   *
   * ```js
   * await page.getByTestId('directions').click();
   * ```
   *
   * **Details**
   *
   * By default, the `data-testid` attribute is used as a test id. Use
   * [selectors.setTestIdAttribute(attributeName)](https://playwright.dev/docs/api/class-selectors#selectors-set-test-id-attribute)
   * to configure a different test id attribute if necessary.
   *
   * ```js
   * // Set custom test id attribute from @playwright/test config:
   * import { defineConfig } from '@playwright/test';
   *
   * export default defineConfig({
   *   use: {
   *     testIdAttribute: 'data-pw'
   *   },
   * });
   * ```
   *
   * @param testId Id to locate the element by.
   */
  getByTestId(testId: string | RegExp): Locator;
  /**
   * Allows locating elements that contain given text.
   *
   * See also [locator.filter([options])](https://playwright.dev/docs/api/class-locator#locator-filter) that allows to
   * match by another criteria, like an accessible role, and then filter by the text content.
   *
   * **Usage**
   *
   * Consider the following DOM structure:
   *
   * ```html
   * <div>Hello <span>world</span></div>
   * <div>Hello</div>
   * ```
   *
   * You can locate by text substring, exact string, or a regular expression:
   *
   * ```js
   * // Matches <span>
   * page.getByText('world');
   *
   * // Matches first <div>
   * page.getByText('Hello world');
   *
   * // Matches second <div>
   * page.getByText('Hello', { exact: true });
   *
   * // Matches both <div>s
   * page.getByText(/Hello/);
   *
   * // Matches second <div>
   * page.getByText(/^hello$/i);
   * ```
   *
   * **Details**
   *
   * Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into
   * one, turns line breaks into spaces and ignores leading and trailing whitespace.
   *
   * Input elements of the type `button` and `submit` are matched by their `value` instead of the text content. For
   * example, locating by text `"Log in"` matches `<input type=button value="Log in">`.
   * @param text Text to locate the element for.
   * @param options
   */
  getByText(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating elements by their title attribute.
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <span title='Issues count'>25 issues</span>
   * ```
   *
   * You can check the issues count after locating it by the title text:
   *
   * ```js
   * await expect(page.getByTitle('Issues count')).toHaveText('25 issues');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByTitle(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Hides the element highlight previously added by
   * [locator.highlight([options])](https://playwright.dev/docs/api/class-locator#locator-highlight).
   */
  hideHighlight(): Promise<void>;
  /**
   * Hover over the matching element.
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('link').hover();
   * ```
   *
   * **Details**
   *
   * This method hovers over the element by performing the following steps:
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-locator#locator-hover-option-force) option is set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to hover over the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-locator#locator-hover-option-position).
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-locator#locator-hover-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param options
   */
  hover(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Returns the [`element.innerHTML`](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML).
   * @param options
   */
  innerHTML(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * Returns the [`element.innerText`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText).
   *
   * **NOTE** If you need to assert text on the page, prefer
   * [expect(locator).toHaveText(expected[, options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-text)
   * with
   * [`useInnerText`](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-text-option-use-inner-text)
   * option to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * @param options
   */
  innerText(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * Returns the value for the matching `<input>` or `<textarea>` or `<select>` element.
   *
   * **NOTE** If you need to assert input value, prefer
   * [expect(locator).toHaveValue(value[, options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-value)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const value = await page.getByRole('textbox').inputValue();
   * ```
   *
   * **Details**
   *
   * Throws elements that are not an input, textarea or a select. However, if the element is inside the `<label>`
   * element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the
   * control.
   * @param options
   */
  inputValue(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<string>;
  /**
   * Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
   *
   * **NOTE** If you need to assert that checkbox is checked, prefer
   * [expect(locator).toBeChecked([options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-checked)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const checked = await page.getByRole('checkbox').isChecked();
   * ```
   *
   * @param options
   */
  isChecked(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * Returns whether the element is disabled, the opposite of [enabled](https://playwright.dev/docs/actionability#enabled).
   *
   * **NOTE** If you need to assert that an element is disabled, prefer
   * [expect(locator).toBeDisabled([options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-disabled)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const disabled = await page.getByRole('button').isDisabled();
   * ```
   *
   * @param options
   */
  isDisabled(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * Returns whether the element is [editable](https://playwright.dev/docs/actionability#editable). If the target element is not an `<input>`,
   * `<textarea>`, `<select>`, `[contenteditable]` and does not have a role allowing `[aria-readonly]`, this method
   * throws an error.
   *
   * **NOTE** If you need to assert that an element is editable, prefer
   * [expect(locator).toBeEditable([options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-editable)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const editable = await page.getByRole('textbox').isEditable();
   * ```
   *
   * @param options
   */
  isEditable(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * Returns whether the element is [enabled](https://playwright.dev/docs/actionability#enabled).
   *
   * **NOTE** If you need to assert that an element is enabled, prefer
   * [expect(locator).toBeEnabled([options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-enabled)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const enabled = await page.getByRole('button').isEnabled();
   * ```
   *
   * @param options
   */
  isEnabled(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * Returns whether the element is hidden, the opposite of [visible](https://playwright.dev/docs/actionability#visible).
   *
   * **NOTE** If you need to assert that element is hidden, prefer
   * [expect(locator).toBeHidden([options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-hidden)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const hidden = await page.getByRole('button').isHidden();
   * ```
   *
   * @param options
   */
  isHidden(options?: {
    /**
     * @deprecated This option is ignored.
     * [locator.isHidden([options])](https://playwright.dev/docs/api/class-locator#locator-is-hidden) does not wait for
     * the element to become hidden and returns immediately.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * Returns whether the element is [visible](https://playwright.dev/docs/actionability#visible).
   *
   * **NOTE** If you need to assert that element is visible, prefer
   * [expect(locator).toBeVisible([options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-be-visible)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * **Usage**
   *
   * ```js
   * const visible = await page.getByRole('button').isVisible();
   * ```
   *
   * @param options
   */
  isVisible(options?: {
    /**
     * @deprecated This option is ignored.
     * [locator.isVisible([options])](https://playwright.dev/docs/api/class-locator#locator-is-visible) does not wait for
     * the element to become visible and returns immediately.
     */
    timeout?: number;
  }): Promise<boolean>;
  /**
   * Returns locator to the last matching element.
   *
   * **Usage**
   *
   * ```js
   * const banana = await page.getByRole('listitem').last();
   * ```
   *
   */
  last(): Locator;
  /**
   * The method finds an element matching the specified selector in the locator's subtree. It also accepts filter
   * options, similar to [locator.filter([options])](https://playwright.dev/docs/api/class-locator#locator-filter)
   * method.
   *
   * [Learn more about locators](https://playwright.dev/docs/locators).
   * @param selectorOrLocator A selector or locator to use when resolving DOM element.
   * @param options
   */
  locator(selectorOrLocator: string | Locator, options?: {
    /**
     * Narrows down the results of the method to those which contain elements matching this relative locator. For example,
     * `article` that has `text=Playwright` matches `<article><div>Playwright</div></article>`.
     *
     * Inner locator **must be relative** to the outer locator and is queried starting with the outer locator match, not
     * the document root. For example, you can find `content` that has `div` in
     * `<article><content><div>Playwright</div></content></article>`. However, looking for `content` that has `article
     * div` will fail, because the inner locator must be relative and should not use any elements outside the `content`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    has?: Locator;
    /**
     * Matches elements that do not contain an element that matches an inner locator. Inner locator is queried against the
     * outer one. For example, `article` that does not have `div` matches `<article><span>Playwright</span></article>`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    hasNot?: Locator;
    /**
     * Matches elements that do not contain specified text somewhere inside, possibly in a child or a descendant element.
     * When passed a [string], matching is case-insensitive and searches for a substring.
     */
    hasNotText?: string | RegExp;
    /**
     * Matches elements containing specified text somewhere inside, possibly in a child or a descendant element. When
     * passed a [string], matching is case-insensitive and searches for a substring. For example, `"Playwright"` matches
     * `<article><div>Playwright</div></article>`.
     */
    hasText?: string | RegExp;
  }): Locator;
  /**
   * Returns a new locator that uses best practices for referencing the matched element, prioritizing test ids, aria
   * roles, and other user-facing attributes over CSS selectors. This is useful for converting implementation-detail
   * selectors into more resilient, human-readable locators.
   */
  normalize(): Promise<Locator>;
  /**
   * Returns locator to the n-th matching element. It's zero based, `nth(0)` selects the first element.
   *
   * **Usage**
   *
   * ```js
   * const banana = await page.getByRole('listitem').nth(2);
   * ```
   *
   * @param index
   */
  nth(index: number): Locator;
  /**
   * Creates a locator matching all elements that match one or both of the two locators.
   *
   * Note that when both locators match something, the resulting locator will have multiple matches, potentially causing
   * a [locator strictness](https://playwright.dev/docs/locators#strictness) violation.
   *
   * **Usage**
   *
   * Consider a scenario where you'd like to click on a "New email" button, but sometimes a security settings dialog
   * shows up instead. In this case, you can wait for either a "New email" button, or a dialog and act accordingly.
   *
   * **NOTE** If both "New email" button and security dialog appear on screen, the "or" locator will match both of them,
   * possibly throwing the ["strict mode violation" error](https://playwright.dev/docs/locators#strictness). In this case, you can use
   * [locator.first()](https://playwright.dev/docs/api/class-locator#locator-first) to only match one of them.
   *
   * ```js
   * const newEmail = page.getByRole('button', { name: 'New' });
   * const dialog = page.getByText('Confirm security settings');
   * await expect(newEmail.or(dialog).first()).toBeVisible();
   * if (await dialog.isVisible())
   *   await page.getByRole('button', { name: 'Dismiss' }).click();
   * await newEmail.click();
   * ```
   *
   * @param locator Alternative locator to match.
   */
  or(locator: Locator): Locator;
  /**
   * A page this locator belongs to.
   */
  page(): Page$1;
  /**
   * Focuses the matching element and presses a combination of the keys.
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('textbox').press('Backspace');
   * ```
   *
   * **Details**
   *
   * Focuses the element, and then uses
   * [keyboard.down(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-down) and
   * [keyboard.up(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-up).
   *
   * [`key`](https://playwright.dev/docs/api/class-locator#locator-press-option-key) can specify the intended
   * [keyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) value or a single character
   * to generate the text for. A superset of the
   * [`key`](https://playwright.dev/docs/api/class-locator#locator-press-option-key) values can be found
   * [here](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
   *
   * `F1` - `F12`, `Digit0`- `Digit9`, `KeyA`- `KeyZ`, `Backquote`, `Minus`, `Equal`, `Backslash`, `Backspace`, `Tab`,
   * `Delete`, `Escape`, `ArrowDown`, `End`, `Enter`, `Home`, `Insert`, `PageDown`, `PageUp`, `ArrowRight`, `ArrowUp`,
   * etc.
   *
   * Following modification shortcuts are also supported: `Shift`, `Control`, `Alt`, `Meta`, `ShiftLeft`,
   * `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS.
   *
   * Holding down `Shift` will type the text that corresponds to the
   * [`key`](https://playwright.dev/docs/api/class-locator#locator-press-option-key) in the upper case.
   *
   * If [`key`](https://playwright.dev/docs/api/class-locator#locator-press-option-key) is a single character, it is
   * case-sensitive, so the values `a` and `A` will generate different respective texts.
   *
   * Shortcuts such as `key: "Control+o"`, `key: "Control++` or `key: "Control+Shift+T"` are supported as well. When
   * specified with the modifier, modifier is pressed and being held while the subsequent key is being pressed.
   * @param key Name of the key to press or a character to generate, such as `ArrowLeft` or `a`.
   * @param options
   */
  press(key: string, options?: {
    /**
     * Time to wait between `keydown` and `keyup` in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * Actions that initiate navigations are waiting for these navigations to happen and for pages to start loading. You
     * can opt out of waiting via setting this flag. You would only need this option in the exceptional cases such as
     * navigating to inaccessible pages. Defaults to `false`.
     * @deprecated This option will default to `true` in the future.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * **NOTE** In most cases, you should use
   * [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill) instead. You only need
   * to press keys one by one if there is special keyboard handling on the page.
   *
   * Focuses the element, and then sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the
   * text.
   *
   * To press a special key, like `Control` or `ArrowDown`, use
   * [locator.press(key[, options])](https://playwright.dev/docs/api/class-locator#locator-press).
   *
   * **Usage**
   *
   * ```js
   * await locator.pressSequentially('Hello'); // Types instantly
   * await locator.pressSequentially('World', { delay: 100 }); // Types slower, like a user
   * ```
   *
   * An example of typing into a text field and then submitting the form:
   *
   * ```js
   * const locator = page.getByLabel('Password');
   * await locator.pressSequentially('my password');
   * await locator.press('Enter');
   * ```
   *
   * @param text String of characters to sequentially press into a focused element.
   * @param options
   */
  pressSequentially(text: string, options?: {
    /**
     * Time to wait between key presses in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Take a screenshot of the element matching the locator.
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('link').screenshot();
   * ```
   *
   * Disable animations and save screenshot to a file:
   *
   * ```js
   * await page.getByRole('link').screenshot({ animations: 'disabled', path: 'link.png' });
   * ```
   *
   * **Details**
   *
   * This method captures a screenshot of the page, clipped to the size and position of a particular element matching
   * the locator. If the element is covered by other elements, it will not be actually visible on the screenshot. If the
   * element is a scrollable container, only the currently scrolled content will be visible on the screenshot.
   *
   * This method waits for the [actionability](https://playwright.dev/docs/actionability) checks, then scrolls element into view before taking
   * a screenshot. If the element is detached from DOM, the method throws an error.
   *
   * Returns the buffer with the captured screenshot.
   * @param options
   */
  screenshot(options?: LocatorScreenshotOptions): Promise<Buffer>;
  /**
   * This method waits for [actionability](https://playwright.dev/docs/actionability) checks, then tries to scroll element into view, unless
   * it is completely visible as defined by
   * [IntersectionObserver](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)'s `ratio`.
   *
   * See [scrolling](https://playwright.dev/docs/input#scrolling) for alternative ways to scroll.
   * @param options
   */
  scrollIntoViewIfNeeded(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Selects option or options in `<select>`.
   *
   * **Details**
   *
   * This method waits for [actionability](https://playwright.dev/docs/actionability) checks, waits until all specified options are present in
   * the `<select>` element and selects these options.
   *
   * If the target element is not a `<select>` element, this method throws an error. However, if the element is inside
   * the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be used
   * instead.
   *
   * Returns the array of option values that have been successfully selected.
   *
   * Triggers a `change` and `input` event once all the provided options have been selected.
   *
   * **Usage**
   *
   * ```html
   * <select multiple>
   *   <option value="red">Red</option>
   *   <option value="green">Green</option>
   *   <option value="blue">Blue</option>
   * </select>
   * ```
   *
   * ```js
   * // single selection matching the value or label
   * element.selectOption('blue');
   *
   * // single selection matching the label
   * element.selectOption({ label: 'Blue' });
   *
   * // multiple selection for red, green and blue options
   * element.selectOption(['red', 'green', 'blue']);
   * ```
   *
   * @param values Options to select. If the `<select>` has the `multiple` attribute, all matching options are selected, otherwise
   * only the first option matching one of the passed options is selected. String values are matching both values and
   * labels. Option is considered matching if all specified properties match.
   * @param options
   */
  selectOption(values: null | string | ElementHandle | ReadonlyArray<string> | {
    /**
     * Matches by `option.value`. Optional.
     */
    value?: string;
    /**
     * Matches by `option.label`. Optional.
     */
    label?: string;
    /**
     * Matches by the index. Optional.
     */
    index?: number;
  } | ReadonlyArray<ElementHandle> | ReadonlyArray<{
    /**
     * Matches by `option.value`. Optional.
     */
    value?: string;
    /**
     * Matches by `option.label`. Optional.
     */
    label?: string;
    /**
     * Matches by the index. Optional.
     */
    index?: number;
  }>, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<Array<string>>;
  /**
   * This method waits for [actionability](https://playwright.dev/docs/actionability) checks, then focuses the element and selects all its
   * text content.
   *
   * If the element is inside the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in
   * the control instead.
   * @param options
   */
  selectText(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Set the state of a checkbox or a radio element.
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('checkbox').setChecked(true);
   * ```
   *
   * **Details**
   *
   * This method checks or unchecks an element by performing the following steps:
   * 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws.
   * 1. If the element already has the right checked state, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the matched element, unless
   *    [`force`](https://playwright.dev/docs/api/class-locator#locator-set-checked-option-force) option is set. If
   *    the element is detached during the checks, the whole action is retried.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now checked or unchecked. If not, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-locator#locator-set-checked-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param checked Whether to check or uncheck the checkbox.
   * @param options
   */
  setChecked(checked: boolean, options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Upload file or multiple files into `<input type=file>`. For inputs with a `[webkitdirectory]` attribute, only a
   * single directory path is supported.
   *
   * **Usage**
   *
   * ```js
   * // Select one file
   * await page.getByLabel('Upload file').setInputFiles(path.join(__dirname, 'myfile.pdf'));
   *
   * // Select multiple files
   * await page.getByLabel('Upload files').setInputFiles([
   *   path.join(__dirname, 'file1.txt'),
   *   path.join(__dirname, 'file2.txt'),
   * ]);
   *
   * // Select a directory
   * await page.getByLabel('Upload directory').setInputFiles(path.join(__dirname, 'mydir'));
   *
   * // Remove all the selected files
   * await page.getByLabel('Upload file').setInputFiles([]);
   *
   * // Upload buffer from memory
   * await page.getByLabel('Upload file').setInputFiles({
   *   name: 'file.txt',
   *   mimeType: 'text/plain',
   *   buffer: Buffer.from('this is test')
   * });
   * ```
   *
   * **Details**
   *
   * Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then
   * they are resolved relative to the current working directory. For empty array, clears the selected files.
   *
   * This method expects [Locator](https://playwright.dev/docs/api/class-locator) to point to an
   * [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside
   * the `<label>` element that has an associated
   * [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
   * @param files
   * @param options
   */
  setInputFiles(files: string | ReadonlyArray<string> | {
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  } | ReadonlyArray<{
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  }>, options?: {
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Perform a tap gesture on the element matching the locator. For examples of emulating other gestures by manually
   * dispatching touch events, see the [emulating legacy touch events](https://playwright.dev/docs/touch-events) page.
   *
   * **Details**
   *
   * This method taps the element by performing the following steps:
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-locator#locator-tap-option-force) option is set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.touchscreen](https://playwright.dev/docs/api/class-page#page-touchscreen) to tap the center of the
   *    element, or the specified
   *    [`position`](https://playwright.dev/docs/api/class-locator#locator-tap-option-position).
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-locator#locator-tap-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   *
   * **NOTE** `element.tap()` requires that the `hasTouch` option of the browser context be set to true.
   *
   * @param options
   */
  tap(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * Modifier keys to press. Ensures that only these modifiers are pressed during the operation, and then restores
     * current modifiers back. If not specified, currently pressed modifiers are used. "ControlOrMeta" resolves to
     * "Control" on Windows and Linux and to "Meta" on macOS.
     */
    modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it. Note that keyboard
     * `modifiers` will be pressed regardless of `trial` to allow testing elements which are only visible when those keys
     * are pressed.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Returns the [`node.textContent`](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent).
   *
   * **NOTE** If you need to assert text on the page, prefer
   * [expect(locator).toHaveText(expected[, options])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-text)
   * to avoid flakiness. See [assertions guide](https://playwright.dev/docs/test-assertions) for more details.
   *
   * @param options
   */
  textContent(options?: {
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<null | string>;
  /**
   * Focuses the element, and then sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the
   * text.
   *
   * To press a special key, like `Control` or `ArrowDown`, use
   * [locator.press(key[, options])](https://playwright.dev/docs/api/class-locator#locator-press).
   *
   * **Usage**
   * @deprecated In most cases, you should use
   * [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill) instead. You only need
   * to press keys one by one if there is special keyboard handling on the page - in this case use
   * [locator.pressSequentially(text[, options])](https://playwright.dev/docs/api/class-locator#locator-press-sequentially).
   * @param text A text to type into a focused element.
   * @param options
   */
  type(text: string, options?: {
    /**
     * Time to wait between key presses in milliseconds. Defaults to 0.
     */
    delay?: number;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
  /**
   * Ensure that checkbox or radio element is unchecked.
   *
   * **Usage**
   *
   * ```js
   * await page.getByRole('checkbox').uncheck();
   * ```
   *
   * **Details**
   *
   * This method unchecks the element by performing the following steps:
   * 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already
   *    unchecked, this method returns immediately.
   * 1. Wait for [actionability](https://playwright.dev/docs/actionability) checks on the element, unless
   *    [`force`](https://playwright.dev/docs/api/class-locator#locator-uncheck-option-force) option is set.
   * 1. Scroll the element into view if needed.
   * 1. Use [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse) to click in the center of the
   *    element.
   * 1. Ensure that the element is now unchecked. If not, this method throws.
   *
   * If the element is detached from the DOM at any moment during the action, this method throws.
   *
   * When all steps combined have not finished during the specified
   * [`timeout`](https://playwright.dev/docs/api/class-locator#locator-uncheck-option-timeout), this method throws a
   * [TimeoutError](https://playwright.dev/docs/api/class-timeouterror). Passing zero timeout disables this.
   * @param options
   */
  uncheck(options?: {
    /**
     * Whether to bypass the [actionability](https://playwright.dev/docs/actionability) checks. Defaults to `false`.
     */
    force?: boolean;
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * A point to use relative to the top-left corner of element padding box. If not specified, uses some visible point of
     * the element.
     */
    position?: {
      x: number;
      y: number;
    };
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
    /**
     * When set, this method only performs the [actionability](https://playwright.dev/docs/actionability) checks and skips the action. Defaults
     * to `false`. Useful to wait until the element is ready for the action without performing it.
     */
    trial?: boolean;
  }): Promise<void>;
  /**
   * Returns when element specified by locator satisfies the
   * [`state`](https://playwright.dev/docs/api/class-locator#locator-wait-for-option-state) option.
   *
   * If target element already satisfies the condition, the method returns immediately. Otherwise, waits for up to
   * [`timeout`](https://playwright.dev/docs/api/class-locator#locator-wait-for-option-timeout) milliseconds until the
   * condition is met.
   *
   * **Usage**
   *
   * ```js
   * const orderSent = page.locator('#order-sent');
   * await orderSent.waitFor();
   * ```
   *
   * @param options
   */
  waitFor(options?: {
    /**
     * Defaults to `'visible'`. Can be either:
     * - `'attached'` - wait for element to be present in DOM.
     * - `'detached'` - wait for element to not be present in DOM.
     * - `'visible'` - wait for element to have non-empty bounding box and no `visibility:hidden`. Note that element
     *   without any content or with `display:none` has an empty bounding box and is not considered visible.
     * - `'hidden'` - wait for element to be either detached from DOM, or have an empty bounding box or
     *   `visibility:hidden`. This is opposite to the `'visible'` option.
     */
    state?: "attached" | "detached" | "visible" | "hidden";
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
}
/**
 * BrowserType provides methods to launch a specific browser instance or connect to an existing one. The following is
 * a typical example of using Playwright to drive automation:
 *
 * ```js
 * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
 *
 * (async () => {
 *   const browser = await chromium.launch();
 *   const page = await browser.newPage();
 *   await page.goto('https://example.com');
 *   // other actions...
 *   await browser.close();
 * })();
 * ```
 *
 */
interface BrowserType<Unused = {}> {
  /**
   * This method attaches Playwright to an existing browser instance using the Chrome DevTools Protocol.
   *
   * The default browser context is accessible via
   * [browser.contexts()](https://playwright.dev/docs/api/class-browser#browser-contexts).
   *
   * **NOTE** Connecting over the Chrome DevTools Protocol is only supported for Chromium-based browsers.
   *
   * **NOTE** This connection is significantly lower fidelity than the Playwright protocol connection via
   * [browserType.connect(endpoint[, options])](https://playwright.dev/docs/api/class-browsertype#browser-type-connect).
   * If you are experiencing issues or attempting to use advanced functionality, you probably want to use
   * [browserType.connect(endpoint[, options])](https://playwright.dev/docs/api/class-browsertype#browser-type-connect).
   *
   * **Usage**
   *
   * ```js
   * const browser = await playwright.chromium.connectOverCDP('http://localhost:9222');
   * const defaultContext = browser.contexts()[0];
   * const page = defaultContext.pages()[0];
   * ```
   *
   * @param endpointURL A CDP websocket endpoint or http url to connect to. For example `http://localhost:9222/` or
   * `ws://127.0.0.1:9222/devtools/browser/387adf4c-243f-4051-a181-46798f4a46f4`.
   * @param options
   */
  connectOverCDP(endpointURL: string, options?: ConnectOverCDPOptions): Promise<Browser$1>;
  /**
   * This method attaches Playwright to an existing browser instance using the Chrome DevTools Protocol.
   *
   * The default browser context is accessible via
   * [browser.contexts()](https://playwright.dev/docs/api/class-browser#browser-contexts).
   *
   * **NOTE** Connecting over the Chrome DevTools Protocol is only supported for Chromium-based browsers.
   *
   * **NOTE** This connection is significantly lower fidelity than the Playwright protocol connection via
   * [browserType.connect(endpoint[, options])](https://playwright.dev/docs/api/class-browsertype#browser-type-connect).
   * If you are experiencing issues or attempting to use advanced functionality, you probably want to use
   * [browserType.connect(endpoint[, options])](https://playwright.dev/docs/api/class-browsertype#browser-type-connect).
   *
   * **Usage**
   *
   * ```js
   * const browser = await playwright.chromium.connectOverCDP('http://localhost:9222');
   * const defaultContext = browser.contexts()[0];
   * const page = defaultContext.pages()[0];
   * ```
   *
   * @param endpointURL A CDP websocket endpoint or http url to connect to. For example `http://localhost:9222/` or
   * `ws://127.0.0.1:9222/devtools/browser/387adf4c-243f-4051-a181-46798f4a46f4`.
   * @param options
   */
  connectOverCDP(transport: ConnectOverCDPTransport, options?: ConnectOverCDPOptions): Promise<Browser$1>;
  /**
   * Option `wsEndpoint` is deprecated. Instead use `endpointURL`.
   * @deprecated
   */
  /**
   * This method attaches Playwright to an existing browser instance using the Chrome DevTools Protocol.
   *
   * The default browser context is accessible via
   * [browser.contexts()](https://playwright.dev/docs/api/class-browser#browser-contexts).
   *
   * **NOTE** Connecting over the Chrome DevTools Protocol is only supported for Chromium-based browsers.
   *
   * **NOTE** This connection is significantly lower fidelity than the Playwright protocol connection via
   * [browserType.connect(endpoint[, options])](https://playwright.dev/docs/api/class-browsertype#browser-type-connect).
   * If you are experiencing issues or attempting to use advanced functionality, you probably want to use
   * [browserType.connect(endpoint[, options])](https://playwright.dev/docs/api/class-browsertype#browser-type-connect).
   *
   * **Usage**
   *
   * ```js
   * const browser = await playwright.chromium.connectOverCDP('http://localhost:9222');
   * const defaultContext = browser.contexts()[0];
   * const page = defaultContext.pages()[0];
   * ```
   *
   * @param endpointURL A CDP websocket endpoint or http url to connect to. For example `http://localhost:9222/` or
   * `ws://127.0.0.1:9222/devtools/browser/387adf4c-243f-4051-a181-46798f4a46f4`.
   * @param options
   */
  connectOverCDP(options: ConnectOverCDPOptions & {
    wsEndpoint?: string;
  }): Promise<Browser$1>;
  /**
   * This method attaches Playwright to an existing browser instance created via `BrowserType.launchServer` in Node.js.
   *
   * **NOTE** The major and minor version of the Playwright instance that connects needs to match the version of
   * Playwright that launches the browser (1.2.3 → is compatible with 1.2.x).
   *
   * @param endpoint A Playwright browser websocket endpoint to connect to. You obtain this endpoint via `BrowserServer.wsEndpoint`.
   * @param options
   */
  connect(wsEndpoint: string, options?: ConnectOptions): Promise<Browser$1>;
  /**
   * wsEndpoint in options is deprecated. Instead use `wsEndpoint`.
   * @param wsEndpoint A browser websocket endpoint to connect to.
   * @param options
   * @deprecated
   */
  /**
   * This method attaches Playwright to an existing browser instance created via `BrowserType.launchServer` in Node.js.
   *
   * **NOTE** The major and minor version of the Playwright instance that connects needs to match the version of
   * Playwright that launches the browser (1.2.3 → is compatible with 1.2.x).
   *
   * @param endpoint A Playwright browser websocket endpoint to connect to. You obtain this endpoint via `BrowserServer.wsEndpoint`.
   * @param options
   */
  connect(options: ConnectOptions & {
    wsEndpoint?: string;
  }): Promise<Browser$1>;
  /**
   * A path where Playwright expects to find a bundled browser executable.
   */
  executablePath(): string;
  /**
   * Returns the browser instance.
   *
   * **Usage**
   *
   * You can use
   * [`ignoreDefaultArgs`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-ignore-default-args)
   * to filter out `--mute-audio` from default arguments:
   *
   * ```js
   * const browser = await chromium.launch({  // Or 'firefox' or 'webkit'.
   *   ignoreDefaultArgs: ['--mute-audio']
   * });
   * ```
   *
   * > **Chromium-only** Playwright can also be used to control the Google Chrome or Microsoft Edge browsers, but it
   * works best with the version of Chromium it is bundled with. There is no guarantee it will work with any other
   * version. Use
   * [`executablePath`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-executable-path)
   * option with extreme caution.
   * >
   * > If Google Chrome (rather than Chromium) is preferred, a
   * [Chrome Canary](https://www.google.com/chrome/browser/canary.html) or
   * [Dev Channel](https://www.chromium.org/getting-involved/dev-channel) build is suggested.
   * >
   * > Stock browsers like Google Chrome and Microsoft Edge are suitable for tests that require proprietary media codecs
   * for video playback. See
   * [this article](https://www.howtogeek.com/202825/what%E2%80%99s-the-difference-between-chromium-and-chrome/) for
   * other differences between Chromium and Chrome.
   * [This article](https://chromium.googlesource.com/chromium/src/+/lkgr/docs/chromium_browser_vs_google_chrome.md)
   * describes some differences for Linux users.
   * @param options
   */
  launch(options?: LaunchOptions): Promise<Browser$1>;
  /**
   * Returns the persistent browser context instance.
   *
   * Launches browser that uses persistent storage located at
   * [`userDataDir`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context-option-user-data-dir)
   * and returns the only context. Closing this context will automatically close the browser.
   * @param userDataDir Path to a User Data Directory, which stores browser session data like cookies and local storage. Pass an empty
   * string to create a temporary directory.
   *
   * More details for
   * [Chromium](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#introduction) and
   * [Firefox](https://wiki.mozilla.org/Firefox/CommandLineOptions#User_profile). Chromium's user data directory is the
   * **parent** directory of the "Profile Path" seen at `chrome://version`.
   *
   * Note that browsers do not allow launching multiple instances with the same User Data Directory.
   *
   * **NOTE** Chromium/Chrome: Due to recent Chrome policy changes, automating the default Chrome user profile is not
   * supported. Pointing `userDataDir` to Chrome's main "User Data" directory (the profile used for your regular
   * browsing) may result in pages not loading or the browser exiting. Create and use a separate directory (for example,
   * an empty folder) as your automation profile instead. See https://developer.chrome.com/blog/remote-debugging-port
   * for details.
   *
   * @param options
   */
  launchPersistentContext(userDataDir: string, options?: {
    /**
     * Whether to automatically download all the attachments. Defaults to `true` where all the downloads are accepted.
     */
    acceptDownloads?: boolean;
    /**
     * **NOTE** Use custom browser args at your own risk, as some of them may break Playwright functionality.
     *
     * Additional arguments to pass to the browser instance. The list of Chromium flags can be found
     * [here](https://peter.sh/experiments/chromium-command-line-switches/).
     */
    args?: Array<string>;
    /**
     * If specified, artifacts (traces, videos, downloads, HAR files, etc.) are saved into this directory. The directory
     * is not cleaned up when the browser closes. If not specified, a temporary directory is used and cleaned up when the
     * browser closes.
     */
    artifactsDir?: string;
    /**
     * When using [page.goto(url[, options])](https://playwright.dev/docs/api/class-page#page-goto),
     * [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route),
     * [page.waitForURL(url[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-url),
     * [page.waitForRequest(urlOrPredicate[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-request),
     * or
     * [page.waitForResponse(urlOrPredicate[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-response)
     * it takes the base URL in consideration by using the
     * [`URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor for building the corresponding URL.
     * Unset by default. Examples:
     * - baseURL: `http://localhost:3000` and navigating to `/bar.html` results in `http://localhost:3000/bar.html`
     * - baseURL: `http://localhost:3000/foo/` and navigating to `./bar.html` results in
     *   `http://localhost:3000/foo/bar.html`
     * - baseURL: `http://localhost:3000/foo` (without trailing slash) and navigating to `./bar.html` results in
     *   `http://localhost:3000/bar.html`
     */
    baseURL?: string;
    /**
     * Toggles bypassing page's Content-Security-Policy. Defaults to `false`.
     */
    bypassCSP?: boolean;
    /**
     * Browser distribution channel.
     *
     * Use "chromium" to [opt in to new headless mode](https://playwright.dev/docs/browsers#chromium-new-headless-mode).
     *
     * Use "chrome", "chrome-beta", "chrome-dev", "chrome-canary", "msedge", "msedge-beta", "msedge-dev", or
     * "msedge-canary" to use branded [Google Chrome and Microsoft Edge](https://playwright.dev/docs/browsers#google-chrome--microsoft-edge).
     */
    channel?: string;
    /**
     * Enable Chromium sandboxing. Defaults to `false`.
     */
    chromiumSandbox?: boolean;
    /**
     * TLS Client Authentication allows the server to request a client certificate and verify it.
     *
     * **Details**
     *
     * An array of client certificates to be used. Each certificate object must have either both `certPath` and `keyPath`,
     * a single `pfxPath`, or their corresponding direct value equivalents (`cert` and `key`, or `pfx`). Optionally,
     * `passphrase` property should be provided if the certificate is encrypted. The `origin` property should be provided
     * with an exact match to the request origin that the certificate is valid for.
     *
     * Client certificate authentication is only active when at least one client certificate is provided. If you want to
     * reject all client certificates sent by the server, you need to provide a client certificate with an `origin` that
     * does not match any of the domains you plan to visit.
     *
     * **NOTE** When using WebKit on macOS, accessing `localhost` will not pick up client certificates. You can make it
     * work by replacing `localhost` with `local.playwright`.
     *
     */
    clientCertificates?: Array<{
      /**
       * Exact origin that the certificate is valid for. Origin includes `https` protocol, a hostname and optionally a port.
       */
      origin: string;
      /**
       * Path to the file with the certificate in PEM format.
       */
      certPath?: string;
      /**
       * Direct value of the certificate in PEM format.
       */
      cert?: Buffer;
      /**
       * Path to the file with the private key in PEM format.
       */
      keyPath?: string;
      /**
       * Direct value of the private key in PEM format.
       */
      key?: Buffer;
      /**
       * Path to the PFX or PKCS12 encoded private key and certificate chain.
       */
      pfxPath?: string;
      /**
       * Direct value of the PFX or PKCS12 encoded private key and certificate chain.
       */
      pfx?: Buffer;
      /**
       * Passphrase for the private key (PEM or PFX).
       */
      passphrase?: string;
    }>;
    /**
     * Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
     * media feature, supported values are `'light'` and `'dark'`. See
     * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
     * Passing `null` resets emulation to system defaults. Defaults to `'light'`.
     */
    colorScheme?: null | "light" | "dark" | "no-preference";
    /**
     * Emulates `'prefers-contrast'` media feature, supported values are `'no-preference'`, `'more'`. See
     * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
     * Passing `null` resets emulation to system defaults. Defaults to `'no-preference'`.
     */
    contrast?: null | "no-preference" | "more";
    /**
     * Specify device scale factor (can be thought of as dpr). Defaults to `1`. Learn more about
     * [emulating devices with device scale factor](https://playwright.dev/docs/emulation#devices).
     */
    deviceScaleFactor?: number;
    /**
     * If specified, accepted downloads are downloaded into this directory. Otherwise, temporary directory is created and
     * is deleted when browser is closed. In either case, the downloads are deleted when the browser context they were
     * created in is closed.
     */
    downloadsPath?: string;
    env?: {
      [key: string]: string | undefined;
    };
    /**
     * Path to a browser executable to run instead of the bundled one. If
     * [`executablePath`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context-option-executable-path)
     * is a relative path, then it is resolved relative to the current working directory. Note that Playwright only works
     * with the bundled Chromium, Firefox or WebKit, use at your own risk.
     */
    executablePath?: string;
    /**
     * An object containing additional HTTP headers to be sent with every request. Defaults to none.
     */
    extraHTTPHeaders?: {
      [key: string]: string;
    };
    /**
     * Firefox user preferences. Learn more about the Firefox user preferences at
     * [`about:config`](https://support.mozilla.org/en-US/kb/about-config-editor-firefox).
     *
     * You can also provide a path to a custom [`policies.json` file](https://mozilla.github.io/policy-templates/) via
     * `PLAYWRIGHT_FIREFOX_POLICIES_JSON` environment variable.
     */
    firefoxUserPrefs?: {
      [key: string]: string | number | boolean;
    };
    /**
     * Emulates `'forced-colors'` media feature, supported values are `'active'`, `'none'`. See
     * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
     * Passing `null` resets emulation to system defaults. Defaults to `'none'`.
     */
    forcedColors?: null | "active" | "none";
    geolocation?: {
      /**
       * Latitude between -90 and 90.
       */
      latitude: number;
      /**
       * Longitude between -180 and 180.
       */
      longitude: number;
      /**
       * Non-negative accuracy value. Defaults to `0`.
       */
      accuracy?: number;
    };
    /**
     * Close the browser process on SIGHUP. Defaults to `true`.
     */
    handleSIGHUP?: boolean;
    /**
     * Close the browser process on Ctrl-C. Defaults to `true`.
     */
    handleSIGINT?: boolean;
    /**
     * Close the browser process on SIGTERM. Defaults to `true`.
     */
    handleSIGTERM?: boolean;
    /**
     * Specifies if viewport supports touch events. Defaults to false. Learn more about
     * [mobile emulation](https://playwright.dev/docs/emulation#devices).
     */
    hasTouch?: boolean;
    /**
     * Whether to run browser in headless mode. More details for
     * [Chromium](https://developers.google.com/web/updates/2017/04/headless-chrome) and
     * [Firefox](https://hacks.mozilla.org/2017/12/using-headless-mode-in-firefox/). Defaults to `true`.
     */
    headless?: boolean;
    /**
     * Credentials for [HTTP authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication). If no
     * origin is specified, the username and password are sent to any servers upon unauthorized responses.
     */
    httpCredentials?: {
      username: string;
      password: string;
      /**
       * Restrain sending http credentials on specific origin (scheme://host:port).
       */
      origin?: string;
      /**
       * This option only applies to the requests sent from corresponding
       * [APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext) and does not affect requests sent from
       * the browser. `'always'` - `Authorization` header with basic authentication credentials will be sent with the each
       * API request. `'unauthorized` - the credentials are only sent when 401 (Unauthorized) response with
       * `WWW-Authenticate` header is received. Defaults to `'unauthorized'`.
       */
      send?: "unauthorized" | "always";
    };
    /**
     * If `true`, Playwright does not pass its own configurations args and only uses the ones from
     * [`args`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context-option-args). If
     * an array is given, then filters out the given default arguments. Dangerous option; use with care. Defaults to
     * `false`.
     */
    ignoreDefaultArgs?: boolean | Array<string>;
    /**
     * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
     */
    ignoreHTTPSErrors?: boolean;
    /**
     * Whether the `meta viewport` tag is taken into account and touch events are enabled. isMobile is a part of device,
     * so you don't actually need to set it manually. Defaults to `false` and is not supported in Firefox. Learn more
     * about [mobile emulation](https://playwright.dev/docs/emulation#ismobile).
     */
    isMobile?: boolean;
    /**
     * Whether or not to enable JavaScript in the context. Defaults to `true`. Learn more about
     * [disabling JavaScript](https://playwright.dev/docs/emulation#javascript-enabled).
     */
    javaScriptEnabled?: boolean;
    /**
     * Specify user locale, for example `en-GB`, `de-DE`, etc. Locale will affect `navigator.language` value,
     * `Accept-Language` request header value as well as number and date formatting rules. Defaults to the system default
     * locale. Learn more about emulation in our [emulation guide](https://playwright.dev/docs/emulation#locale--timezone).
     */
    locale?: string;
    /**
     * Logger sink for Playwright logging.
     * @deprecated The logs received by the logger are incomplete. Please use tracing instead.
     */
    logger?: Logger;
    /**
     * Whether to emulate network being offline. Defaults to `false`. Learn more about
     * [network emulation](https://playwright.dev/docs/emulation#offline).
     */
    offline?: boolean;
    /**
     * A list of permissions to grant to all pages in this context. See
     * [browserContext.grantPermissions(permissions[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
     * for more details. Defaults to none.
     */
    permissions?: Array<string>;
    /**
     * Network proxy settings.
     */
    proxy?: {
      /**
       * Proxy to be used for all requests. HTTP and SOCKS proxies are supported, for example `http://myproxy.com:3128` or
       * `socks5://myproxy.com:3128`. Short form `myproxy.com:3128` is considered an HTTP proxy.
       */
      server: string;
      /**
       * Optional comma-separated domains to bypass proxy, for example `".com, chromium.org, .domain.com"`.
       */
      bypass?: string;
      /**
       * Optional username to use if HTTP proxy requires authentication.
       */
      username?: string;
      /**
       * Optional password to use if HTTP proxy requires authentication.
       */
      password?: string;
    };
    /**
     * Enables [HAR](http://www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file.
     * If not specified, the HAR is not recorded. Make sure to await
     * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) for
     * the HAR to be saved.
     */
    recordHar?: {
      /**
       * Optional setting to control whether to omit request content from the HAR. Defaults to `false`. Deprecated, use
       * `content` policy instead.
       */
      omitContent?: boolean;
      /**
       * Optional setting to control resource content management. If `omit` is specified, content is not persisted. If
       * `attach` is specified, resources are persisted as separate files or entries in the ZIP archive. If `embed` is
       * specified, content is stored inline the HAR file as per HAR specification. Defaults to `attach` for `.zip` output
       * files and to `embed` for all other file extensions.
       */
      content?: "omit" | "embed" | "attach";
      /**
       * Path on the filesystem to write the HAR file to. If the file name ends with `.zip`, `content: 'attach'` is used by
       * default.
       */
      path: string;
      /**
       * When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page,
       * cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to `full`.
       */
      mode?: "full" | "minimal";
      /**
       * A glob or regex pattern to filter requests that are stored in the HAR. When a
       * [`baseURL`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-base-url) via the context
       * options was provided and the passed URL is a path, it gets merged via the
       * [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor. Defaults to none.
       */
      urlFilter?: string | RegExp;
    };
    /**
     * Enables video recording for all pages into `recordVideo.dir` directory. If not specified videos are not recorded.
     * Make sure to await
     * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) for
     * videos to be saved.
     */
    recordVideo?: {
      /**
       * Path to the directory to put videos into. If not specified, the videos will be stored in `artifactsDir` (see
       * [browserType.launch([options])](https://playwright.dev/docs/api/class-browsertype#browser-type-launch) options).
       */
      dir?: string;
      /**
       * Optional dimensions of the recorded videos. If not specified the size will be equal to `viewport` scaled down to
       * fit into 800x800. If `viewport` is not configured explicitly the video size defaults to 800x450. Actual picture of
       * each page will be scaled down if necessary to fit the specified size.
       */
      size?: {
        /**
         * Video frame width.
         */
        width: number;
        /**
         * Video frame height.
         */
        height: number;
      };
      /**
       * If specified, enables visual annotations on interacted elements during video recording.
       */
      showActions?: {
        /**
         * How long each annotation is displayed in milliseconds. Defaults to `500`.
         */
        duration?: number;
        /**
         * Position of the action title overlay. Defaults to `"top-right"`.
         */
        position?: "top-left" | "top" | "top-right" | "bottom-left" | "bottom" | "bottom-right";
        /**
         * Font size of the action title in pixels. Defaults to `24`.
         */
        fontSize?: number;
      };
    };
    /**
     * Emulates `'prefers-reduced-motion'` media feature, supported values are `'reduce'`, `'no-preference'`. See
     * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
     * Passing `null` resets emulation to system defaults. Defaults to `'no-preference'`.
     */
    reducedMotion?: null | "reduce" | "no-preference";
    /**
     * Emulates consistent window screen size available inside web page via `window.screen`. Is only used when the
     * [`viewport`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context-option-viewport)
     * is set.
     */
    screen?: {
      /**
       * page width in pixels.
       */
      width: number;
      /**
       * page height in pixels.
       */
      height: number;
    };
    /**
     * Whether to allow sites to register Service workers. Defaults to `'allow'`.
     * - `'allow'`: [Service Workers](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) can be
     *   registered.
     * - `'block'`: Playwright will block all registration of Service Workers.
     */
    serviceWorkers?: "allow" | "block";
    /**
     * Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going
     * on.
     */
    slowMo?: number;
    /**
     * If set to true, enables strict selectors mode for this context. In the strict selectors mode all operations on
     * selectors that imply single target DOM element will throw when more than one element matches the selector. This
     * option does not affect any Locator APIs (Locators are always strict). Defaults to `false`. See
     * [Locator](https://playwright.dev/docs/api/class-locator) to learn more about the strict mode.
     */
    strictSelectors?: boolean;
    /**
     * Maximum time in milliseconds to wait for the browser instance to start. Defaults to `30000` (30 seconds). Pass `0`
     * to disable timeout.
     */
    timeout?: number;
    /**
     * Changes the timezone of the context. See
     * [ICU's metaZones.txt](https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
     * for a list of supported timezone IDs. Defaults to the system timezone.
     */
    timezoneId?: string;
    /**
     * If specified, traces are saved into this directory.
     */
    tracesDir?: string;
    /**
     * Specific user agent to use in this context.
     */
    userAgent?: string;
    /**
     * Emulates consistent viewport for each page. Defaults to an 1280x720 viewport. Use `null` to disable the consistent
     * viewport emulation. Learn more about [viewport emulation](https://playwright.dev/docs/emulation#viewport).
     *
     * **NOTE** The `null` value opts out from the default presets, makes viewport depend on the host window size defined
     * by the operating system. It makes the execution of the tests non-deterministic.
     *
     */
    viewport?: null | {
      /**
       * page width in pixels.
       */
      width: number;
      /**
       * page height in pixels.
       */
      height: number;
    };
  }): Promise<BrowserContext>;
  /**
   * Returns the browser app instance. You can connect to it via
   * [browserType.connect(endpoint[, options])](https://playwright.dev/docs/api/class-browsertype#browser-type-connect),
   * which requires the major/minor client/server version to match (1.2.3 → is compatible with 1.2.x).
   *
   * **Usage**
   *
   * Launches browser server that client can connect to. An example of launching a browser executable and connecting to
   * it later:
   *
   * ```js
   * const { chromium } = require('playwright');  // Or 'webkit' or 'firefox'.
   *
   * (async () => {
   *   const browserServer = await chromium.launchServer();
   *   const wsEndpoint = browserServer.wsEndpoint();
   *   // Use web socket endpoint later to establish a connection.
   *   const browser = await chromium.connect(wsEndpoint);
   *   // Close browser instance.
   *   await browserServer.close();
   * })();
   * ```
   *
   * @param options
   */
  launchServer(options?: {
    /**
     * **NOTE** Use custom browser args at your own risk, as some of them may break Playwright functionality.
     *
     * Additional arguments to pass to the browser instance. The list of Chromium flags can be found
     * [here](https://peter.sh/experiments/chromium-command-line-switches/).
     */
    args?: Array<string>;
    /**
     * If specified, artifacts (traces, videos, downloads, HAR files, etc.) are saved into this directory. The directory
     * is not cleaned up when the browser closes. If not specified, a temporary directory is used and cleaned up when the
     * browser closes.
     */
    artifactsDir?: string;
    /**
     * Browser distribution channel.
     *
     * Use "chromium" to [opt in to new headless mode](https://playwright.dev/docs/browsers#chromium-new-headless-mode).
     *
     * Use "chrome", "chrome-beta", "chrome-dev", "chrome-canary", "msedge", "msedge-beta", "msedge-dev", or
     * "msedge-canary" to use branded [Google Chrome and Microsoft Edge](https://playwright.dev/docs/browsers#google-chrome--microsoft-edge).
     */
    channel?: string;
    /**
     * Enable Chromium sandboxing. Defaults to `false`.
     */
    chromiumSandbox?: boolean;
    /**
     * If specified, accepted downloads are downloaded into this directory. Otherwise, temporary directory is created and
     * is deleted when browser is closed. In either case, the downloads are deleted when the browser context they were
     * created in is closed.
     */
    downloadsPath?: string;
    env?: {
      [key: string]: string | undefined;
    };
    /**
     * Path to a browser executable to run instead of the bundled one. If
     * [`executablePath`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-server-option-executable-path)
     * is a relative path, then it is resolved relative to the current working directory. Note that Playwright only works
     * with the bundled Chromium, Firefox or WebKit, use at your own risk.
     */
    executablePath?: string;
    /**
     * Firefox user preferences. Learn more about the Firefox user preferences at
     * [`about:config`](https://support.mozilla.org/en-US/kb/about-config-editor-firefox).
     *
     * You can also provide a path to a custom [`policies.json` file](https://mozilla.github.io/policy-templates/) via
     * `PLAYWRIGHT_FIREFOX_POLICIES_JSON` environment variable.
     */
    firefoxUserPrefs?: {
      [key: string]: string | number | boolean;
    };
    /**
     * Close the browser process on SIGHUP. Defaults to `true`.
     */
    handleSIGHUP?: boolean;
    /**
     * Close the browser process on Ctrl-C. Defaults to `true`.
     */
    handleSIGINT?: boolean;
    /**
     * Close the browser process on SIGTERM. Defaults to `true`.
     */
    handleSIGTERM?: boolean;
    /**
     * Whether to run browser in headless mode. More details for
     * [Chromium](https://developers.google.com/web/updates/2017/04/headless-chrome) and
     * [Firefox](https://hacks.mozilla.org/2017/12/using-headless-mode-in-firefox/). Defaults to `true`.
     */
    headless?: boolean;
    /**
     * Host to use for the web socket. It is optional and defaults to `localhost`, accepting connections only from the
     * loopback interface. Pass an explicit address (e.g. `0.0.0.0`) to accept connections from the network — be aware
     * this exposes the browser RPC to anything that can reach the listening port.
     */
    host?: string;
    /**
     * If `true`, Playwright does not pass its own configurations args and only uses the ones from
     * [`args`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-server-option-args). If an array is
     * given, then filters out the given default arguments. Dangerous option; use with care. Defaults to `false`.
     */
    ignoreDefaultArgs?: boolean | Array<string>;
    /**
     * Logger sink for Playwright logging.
     * @deprecated The logs received by the logger are incomplete. Please use tracing instead.
     */
    logger?: Logger;
    /**
     * Port to use for the web socket. Defaults to 0 that picks any available port.
     */
    port?: number;
    /**
     * Network proxy settings.
     */
    proxy?: {
      /**
       * Proxy to be used for all requests. HTTP and SOCKS proxies are supported, for example `http://myproxy.com:3128` or
       * `socks5://myproxy.com:3128`. Short form `myproxy.com:3128` is considered an HTTP proxy.
       */
      server: string;
      /**
       * Optional comma-separated domains to bypass proxy, for example `".com, chromium.org, .domain.com"`.
       */
      bypass?: string;
      /**
       * Optional username to use if HTTP proxy requires authentication.
       */
      username?: string;
      /**
       * Optional password to use if HTTP proxy requires authentication.
       */
      password?: string;
    };
    /**
     * Maximum time in milliseconds to wait for the browser instance to start. Defaults to `30000` (30 seconds). Pass `0`
     * to disable timeout.
     */
    timeout?: number;
    /**
     * If specified, traces are saved into this directory.
     */
    tracesDir?: string;
    /**
     * Path at which to serve the Browser Server. For security, this defaults to an unguessable string.
     *
     * **NOTE** Any process or web page (including those running in Playwright) with knowledge of the `wsPath` can take
     * control of the OS user. For this reason, you should use an unguessable token when using this option.
     *
     */
    wsPath?: string;
  }): Promise<BrowserServer>;
  /**
   * Returns browser name. For example: `'chromium'`, `'webkit'` or `'firefox'`.
   */
  name(): string;
}
interface ConnectOverCDPTransport {
  open?(): void;
  send(message: object): void;
  close(): void;
  onmessage?: (message: object) => void;
  onclose?: (reason?: string) => void;
}
/**
 * The `CDPSession` instances are used to talk raw Chrome Devtools Protocol:
 * - protocol methods can be called with `session.send` method.
 * - protocol events can be subscribed to with `session.on` method.
 *
 * Useful links:
 * - Documentation on DevTools Protocol can be found here:
 *   [DevTools Protocol Viewer](https://chromedevtools.github.io/devtools-protocol/).
 * - Getting Started with DevTools Protocol:
 *   https://github.com/aslushnikov/getting-started-with-cdp/blob/master/README.md
 *
 * ```js
 * const client = await page.context().newCDPSession(page);
 * await client.send('Animation.enable');
 * client.on('Animation.animationCreated', () => console.log('Animation created!'));
 * const response = await client.send('Animation.getPlaybackRate');
 * console.log('playback rate is ' + response.playbackRate);
 * await client.send('Animation.setPlaybackRate', {
 *   playbackRate: response.playbackRate / 2
 * });
 * ```
 *
 */
interface CDPSession {
  on<T extends keyof Protocol.Events | symbol>(event: T, listener: (payload: T extends symbol ? any : Protocol.Events[T extends keyof Protocol.Events ? T : never]) => void): this;
  addListener<T extends keyof Protocol.Events | symbol>(event: T, listener: (payload: T extends symbol ? any : Protocol.Events[T extends keyof Protocol.Events ? T : never]) => void): this;
  off<T extends keyof Protocol.Events | symbol>(event: T, listener: (payload: T extends symbol ? any : Protocol.Events[T extends keyof Protocol.Events ? T : never]) => void): this;
  removeListener<T extends keyof Protocol.Events | symbol>(event: T, listener: (payload: T extends symbol ? any : Protocol.Events[T extends keyof Protocol.Events ? T : never]) => void): this;
  once<T extends keyof Protocol.Events | symbol>(event: T, listener: (payload: T extends symbol ? any : Protocol.Events[T extends keyof Protocol.Events ? T : never]) => void): this;
  /**
   * @param method Protocol method name.
   * @param params Optional method parameters.
   */
  send<T extends keyof Protocol.CommandParameters>(method: T, params?: Protocol.CommandParameters[T]): Promise<Protocol.CommandReturnValues[T]>;
  /**
   * Emitted when the session is closed, either because the target was closed or `session.detach()` was called.
   */
  on(event: 'close', listener: (cdpSession: CDPSession) => any): this;
  /**
   * Emitted for every CDP event received from the session. Allows subscribing to all CDP events at once without knowing
   * their names ahead of time.
   *
   * **Usage**
   *
   * ```js
   * session.on('event', ({ name, params }) => {
   *   console.log(`CDP event: ${name}`, params);
   * });
   * ```
   *
   */
  on(event: 'event', listener: (data: {
    /**
     * CDP event name.
     */
    method: string;
    /**
     * CDP event parameters.
     */
    params?: Object;
  }) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'close', listener: (cdpSession: CDPSession) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'event', listener: (data: {
    /**
     * CDP event name.
     */
    method: string;
    /**
     * CDP event parameters.
     */
    params?: Object;
  }) => any): this;
  /**
   * Emitted when the session is closed, either because the target was closed or `session.detach()` was called.
   */
  addListener(event: 'close', listener: (cdpSession: CDPSession) => any): this;
  /**
   * Emitted for every CDP event received from the session. Allows subscribing to all CDP events at once without knowing
   * their names ahead of time.
   *
   * **Usage**
   *
   * ```js
   * session.on('event', ({ name, params }) => {
   *   console.log(`CDP event: ${name}`, params);
   * });
   * ```
   *
   */
  addListener(event: 'event', listener: (data: {
    /**
     * CDP event name.
     */
    method: string;
    /**
     * CDP event parameters.
     */
    params?: Object;
  }) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'close', listener: (cdpSession: CDPSession) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'event', listener: (data: {
    /**
     * CDP event name.
     */
    method: string;
    /**
     * CDP event parameters.
     */
    params?: Object;
  }) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'close', listener: (cdpSession: CDPSession) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'event', listener: (data: {
    /**
     * CDP event name.
     */
    method: string;
    /**
     * CDP event parameters.
     */
    params?: Object;
  }) => any): this;
  /**
   * Emitted when the session is closed, either because the target was closed or `session.detach()` was called.
   */
  prependListener(event: 'close', listener: (cdpSession: CDPSession) => any): this;
  /**
   * Emitted for every CDP event received from the session. Allows subscribing to all CDP events at once without knowing
   * their names ahead of time.
   *
   * **Usage**
   *
   * ```js
   * session.on('event', ({ name, params }) => {
   *   console.log(`CDP event: ${name}`, params);
   * });
   * ```
   *
   */
  prependListener(event: 'event', listener: (data: {
    /**
     * CDP event name.
     */
    method: string;
    /**
     * CDP event parameters.
     */
    params?: Object;
  }) => any): this;
  /**
   * Detaches the CDPSession from the target. Once detached, the CDPSession object won't emit any events and can't be
   * used to send messages.
   */
  detach(): Promise<void>;
}
/**
 * Whenever a [`WebSocket`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) route is set up with
 * [page.routeWebSocket(url, handler)](https://playwright.dev/docs/api/class-page#page-route-web-socket) or
 * [browserContext.routeWebSocket(url, handler)](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-web-socket),
 * the `WebSocketRoute` object allows to handle the WebSocket, like an actual server would do.
 *
 * **Mocking**
 *
 * By default, the routed WebSocket will not connect to the server. This way, you can mock entire communication over
 * the WebSocket. Here is an example that responds to a `"request"` with a `"response"`.
 *
 * ```js
 * await page.routeWebSocket('wss://example.com/ws', ws => {
 *   ws.onMessage(message => {
 *     if (message === 'request')
 *       ws.send('response');
 *   });
 * });
 * ```
 *
 * Since we do not call
 * [webSocketRoute.connectToServer()](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-connect-to-server)
 * inside the WebSocket route handler, Playwright assumes that WebSocket will be mocked, and opens the WebSocket
 * inside the page automatically.
 *
 * Here is another example that handles JSON messages:
 *
 * ```js
 * await page.routeWebSocket('wss://example.com/ws', ws => {
 *   ws.onMessage(message => {
 *     const json = JSON.parse(message);
 *     if (json.request === 'question')
 *       ws.send(JSON.stringify({ response: 'answer' }));
 *   });
 * });
 * ```
 *
 * **Intercepting**
 *
 * Alternatively, you may want to connect to the actual server, but intercept messages in-between and modify or block
 * them. Calling
 * [webSocketRoute.connectToServer()](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-connect-to-server)
 * returns a server-side `WebSocketRoute` instance that you can send messages to, or handle incoming messages.
 *
 * Below is an example that modifies some messages sent by the page to the server. Messages sent from the server to
 * the page are left intact, relying on the default forwarding.
 *
 * ```js
 * await page.routeWebSocket('/ws', ws => {
 *   const server = ws.connectToServer();
 *   ws.onMessage(message => {
 *     if (message === 'request')
 *       server.send('request2');
 *     else
 *       server.send(message);
 *   });
 * });
 * ```
 *
 * After connecting to the server, all **messages are forwarded** between the page and the server by default.
 *
 * However, if you call
 * [webSocketRoute.onMessage(handler)](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-on-message)
 * on the original route, messages from the page to the server **will not be forwarded** anymore, but should instead
 * be handled by the
 * [`handler`](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-on-message-option-handler).
 *
 * Similarly, calling
 * [webSocketRoute.onMessage(handler)](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-on-message)
 * on the server-side WebSocket will **stop forwarding messages** from the server to the page, and
 * [`handler`](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-on-message-option-handler) should
 * take care of them.
 *
 * The following example blocks some messages in both directions. Since it calls
 * [webSocketRoute.onMessage(handler)](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-on-message)
 * in both directions, there is no automatic forwarding at all.
 *
 * ```js
 * await page.routeWebSocket('/ws', ws => {
 *   const server = ws.connectToServer();
 *   ws.onMessage(message => {
 *     if (message !== 'blocked-from-the-page')
 *       server.send(message);
 *   });
 *   server.onMessage(message => {
 *     if (message !== 'blocked-from-the-server')
 *       ws.send(message);
 *   });
 * });
 * ```
 *
 */
interface WebSocketRoute {
  /**
   * This method allows to handle messages that are sent by the WebSocket, either from the page or from the server.
   *
   * When called on the original WebSocket route, this method handles messages sent from the page. You can handle this
   * messages by responding to them with
   * [webSocketRoute.send(message)](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-send),
   * forwarding them to the server-side connection returned by
   * [webSocketRoute.connectToServer()](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-connect-to-server)
   * or do something else.
   *
   * Once this method is called, messages are not automatically forwarded to the server or to the page - you should do
   * that manually by calling
   * [webSocketRoute.send(message)](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-send). See
   * examples at the top for more details.
   *
   * Calling this method again will override the handler with a new one.
   * @param handler Function that will handle messages.
   */
  onMessage(handler: (message: string | Buffer) => any): void;
  /**
   * Allows to handle [`WebSocket.close`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close).
   *
   * By default, closing one side of the connection, either in the page or on the server, will close the other side.
   * However, when
   * [webSocketRoute.onClose(handler)](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-on-close)
   * handler is set up, the default forwarding of closure is disabled, and handler should take care of it.
   * @param handler Function that will handle WebSocket closure. Received an optional
   * [close code](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close#code) and an optional
   * [close reason](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close#reason).
   */
  onClose(handler: (code: number | undefined, reason: string | undefined) => any): void;
  /**
   * Closes one side of the WebSocket connection.
   * @param options
   */
  close(options?: {
    /**
     * Optional [close code](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close#code).
     */
    code?: number;
    /**
     * Optional [close reason](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close#reason).
     */
    reason?: string;
  }): Promise<void>;
  /**
   * By default, routed WebSocket does not connect to the server, so you can mock entire WebSocket communication. This
   * method connects to the actual WebSocket server, and returns the server-side
   * [WebSocketRoute](https://playwright.dev/docs/api/class-websocketroute) instance, giving the ability to send and
   * receive messages from the server.
   *
   * Once connected to the server:
   * - Messages received from the server will be **automatically forwarded** to the WebSocket in the page, unless
   *   [webSocketRoute.onMessage(handler)](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-on-message)
   *   is called on the server-side `WebSocketRoute`.
   * - Messages sent by the [`WebSocket.send()`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send) call
   *   in the page will be **automatically forwarded** to the server, unless
   *   [webSocketRoute.onMessage(handler)](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-on-message)
   *   is called on the original `WebSocketRoute`.
   *
   * See examples at the top for more details.
   */
  connectToServer(): WebSocketRoute;
  /**
   * The list of WebSocket subprotocols requested by the page, as passed via the second argument to the
   * [`WebSocket` constructor](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket). Corresponds to the
   * `Sec-WebSocket-Protocol` request header.
   *
   * Returns an empty array if no protocols were specified.
   *
   * **Usage**
   *
   * ```js
   * await page.routeWebSocket('wss://example.com/ws', ws => {
   *   if (ws.protocols().includes('chat.v2'))
   *     ws.onMessage(message => ws.send(JSON.stringify({ version: 2, echo: message })));
   *   else
   *     ws.close({ code: 1002, reason: 'Unsupported protocol' });
   * });
   * ```
   *
   */
  protocols(): Array<string>;
  /**
   * Sends a message to the WebSocket. When called on the original WebSocket, sends the message to the page. When called
   * on the result of
   * [webSocketRoute.connectToServer()](https://playwright.dev/docs/api/class-websocketroute#web-socket-route-connect-to-server),
   * sends the message to the server. See examples at the top for more details.
   * @param message Message to send.
   */
  send(message: string | Buffer): void;
  /**
   * URL of the WebSocket created in the page.
   */
  url(): string;
  [Symbol.asyncDispose](): Promise<void>;
}
/**
 * Interface for capturing screencast frames from a page.
 */
interface Screencast {
  /**
   * Starts the screencast. When [`path`](https://playwright.dev/docs/api/class-screencast#screencast-start-option-path)
   * is provided, it saves video recording to the specified file. When
   * [`onFrame`](https://playwright.dev/docs/api/class-screencast#screencast-start-option-on-frame) is provided,
   * delivers JPEG-encoded frames to the callback. Both can be used together.
   *
   * **Usage**
   *
   * ```js
   * // Record video
   * await page.screencast.start({ path: 'video.webm', size: { width: 1280, height: 800 } });
   * // ... perform actions ...
   * await page.screencast.stop();
   * ```
   *
   * ```js
   * // Capture frames
   * await page.screencast.start({
   *   onFrame: ({ data, timestamp, viewportWidth, viewportHeight }) => {
   *     console.log(`frame size: ${data.length} (${viewportWidth}x${viewportHeight}) at ${timestamp}`);
   *   },
   *   size: { width: 800, height: 600 },
   * });
   * // ... perform actions ...
   * await page.screencast.stop();
   * ```
   *
   * @param options
   */
  start(options?: {
    onFrame?: (frame: {
      data: Buffer;
      timestamp: number;
      viewportWidth: number;
      viewportHeight: number;
    }) => Promise<any> | any;
    path?: string;
    size?: {
      width: number;
      height: number;
    };
    quality?: number;
    annotate?: {
      duration?: number;
      position?: 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right';
      fontSize?: number;
    };
  }): Promise<Disposable>;
  /**
   * Removes action decorations.
   */
  hideActions(): Promise<void>;
  /**
   * Hides overlays without removing them.
   */
  hideOverlays(): Promise<void>;
  /**
   * Enables visual annotations on interacted elements. Returns a disposable that stops showing actions when disposed.
   * @param options
   */
  showActions(options?: {
    /**
     * Cursor decoration shown for pointer actions. `"pointer"` (the default) renders a mouse pointer that animates from
     * the previous action point to the next one. `"none"` disables the cursor decoration.
     */
    cursor?: "none" | "pointer";
    /**
     * How long each annotation is displayed in milliseconds. Defaults to `500`.
     */
    duration?: number;
    /**
     * Font size of the action title in pixels. Defaults to `24`.
     */
    fontSize?: number;
    /**
     * Position of the action title overlay. Defaults to `"top-right"`.
     */
    position?: "top-left" | "top" | "top-right" | "bottom-left" | "bottom" | "bottom-right";
  }): Promise<Disposable>;
  /**
   * Shows a chapter overlay with a title and optional description, centered on the page with a blurred backdrop. Useful
   * for narrating video recordings. The overlay is removed after the specified duration, or 2000ms.
   * @param title Title text displayed prominently in the overlay.
   * @param options
   */
  showChapter(title: string, options?: {
    /**
     * Optional description text displayed below the title.
     */
    description?: string;
    /**
     * Duration in milliseconds after which the overlay is automatically removed. Defaults to `2000`.
     */
    duration?: number;
  }): Promise<void>;
  /**
   * Adds an overlay with the given HTML content. The overlay is displayed on top of the page until removed. Returns a
   * disposable that removes the overlay when disposed.
   * @param html HTML content for the overlay.
   * @param options
   */
  showOverlay(html: string, options?: {
    /**
     * Duration in milliseconds after which the overlay is automatically removed. Overlay stays until dismissed if not
     * provided.
     */
    duration?: number;
  }): Promise<Disposable>;
  /**
   * Shows overlays.
   */
  showOverlays(): Promise<void>;
  /**
   * Stops the screencast and video recording if active. If a video was being recorded, saves it to the path specified
   * in [screencast.start([options])](https://playwright.dev/docs/api/class-screencast#screencast-start).
   */
  stop(): Promise<void>;
}
/**
 * This API is used for the Web API testing. You can use it to trigger API endpoints, configure micro-services,
 * prepare environment or the service to your e2e test.
 *
 * Each Playwright browser context has an associated
 * [APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext), accessible via
 * [browserContext.request](https://playwright.dev/docs/api/class-browsercontext#browser-context-request) or
 * [page.request](https://playwright.dev/docs/api/class-page#page-request) (these return the
 *
 * **same instance** — `page.request` is a shortcut for `page.context().request`). You can also create a standalone,
 * isolated instance with
 * [apiRequest.newContext([options])](https://playwright.dev/docs/api/class-apirequest#api-request-new-context).
 *
 * **Cookie management**
 *
 * The [APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext) returned by
 * [browserContext.request](https://playwright.dev/docs/api/class-browsercontext#browser-context-request) and
 *
 * [page.request](https://playwright.dev/docs/api/class-page#page-request) uses the same cookie jar as its
 * [BrowserContext](https://playwright.dev/docs/api/class-browsercontext):
 *
 * If you want API requests that do **not** share cookies with the browser, create an isolated context via
 * [apiRequest.newContext([options])](https://playwright.dev/docs/api/class-apirequest#api-request-new-context). Such
 * `APIRequestContext` object will have its own isolated cookie storage.
 */
interface APIRequestContext {
  /**
   * Sends HTTP(S) [DELETE](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE) request and returns its
   * response. The method will populate request cookies from the context and update context cookies from the response.
   * The method will automatically follow redirects.
   * @param url Target URL.
   * @param options
   */
  delete(url: string, options?: {
    /**
     * Allows to set post data of the request. If the data parameter is an object, it will be serialized to json string
     * and `content-type` header will be set to `application/json` if not explicitly set. Otherwise the `content-type`
     * header will be set to `application/octet-stream` if not explicitly set.
     */
    data?: string | Buffer | Serializable;
    /**
     * Whether to throw on response codes other than 2xx and 3xx. By default response object is returned for all status
     * codes.
     */
    failOnStatusCode?: boolean;
    /**
     * Provides an object that will be serialized as html form using `application/x-www-form-urlencoded` encoding and sent
     * as this request body. If this parameter is specified `content-type` header will be set to
     * `application/x-www-form-urlencoded` unless explicitly provided.
     */
    form?: {
      [key: string]: string | number | boolean;
    } | FormData;
    /**
     * Allows to set HTTP headers. These headers will apply to the fetched request as well as any redirects initiated by
     * it.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
     */
    ignoreHTTPSErrors?: boolean;
    /**
     * Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is
     * exceeded. Defaults to `20`. Pass `0` to not follow redirects.
     */
    maxRedirects?: number;
    /**
     * Maximum number of times network errors should be retried. Currently only `ECONNRESET` error is retried. Does not
     * retry based on HTTP response codes. An error will be thrown if the limit is exceeded. Defaults to `0` - no retries.
     */
    maxRetries?: number;
    /**
     * Provides an object that will be serialized as html form using `multipart/form-data` encoding and sent as this
     * request body. If this parameter is specified `content-type` header will be set to `multipart/form-data` unless
     * explicitly provided. File values can be passed either as
     * [`fs.ReadStream`](https://nodejs.org/api/fs.html#fs_class_fs_readstream) or as file-like object containing file
     * name, mime-type and its content.
     */
    multipart?: FormData | {
      [key: string]: string | number | boolean | ReadStream | {
        /**
         * File name
         */
        name: string;
        /**
         * File type
         */
        mimeType: string;
        /**
         * File content
         */
        buffer: Buffer;
      };
    };
    /**
     * Query parameters to be sent with the URL.
     */
    params?: {
      [key: string]: string | number | boolean;
    } | URLSearchParams | string;
    /**
     * Request timeout in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.
     */
    timeout?: number;
  }): Promise<APIResponse>;
  /**
   * All responses returned by
   * [apiRequestContext.get(url[, options])](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-get)
   * and similar methods are stored in the memory, so that you can later call
   * [apiResponse.body()](https://playwright.dev/docs/api/class-apiresponse#api-response-body).This method discards all
   * its resources, calling any method on disposed
   * [APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext) will throw an exception.
   * @param options
   */
  dispose(options?: {
    /**
     * The reason to be reported to the operations interrupted by the context disposal.
     */
    reason?: string;
  }): Promise<void>;
  /**
   * Sends HTTP(S) request and returns its response. The method will populate request cookies from the context and
   * update context cookies from the response. The method will automatically follow redirects.
   *
   * **Usage**
   *
   * JSON objects can be passed directly to the request:
   *
   * ```js
   * await request.fetch('https://example.com/api/createBook', {
   *   method: 'post',
   *   data: {
   *     title: 'Book Title',
   *     author: 'John Doe',
   *   }
   * });
   * ```
   *
   * The common way to send file(s) in the body of a request is to upload them as form fields with `multipart/form-data`
   * encoding, by specifiying the `multipart` parameter:
   *
   * ```js
   * const form = new FormData();
   * form.set('name', 'John');
   * form.append('name', 'Doe');
   * // Send two file fields with the same name.
   * form.append('file', new File(['console.log(2024);'], 'f1.js', { type: 'text/javascript' }));
   * form.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' }));
   * await request.fetch('https://example.com/api/uploadForm', {
   *   multipart: form
   * });
   * ```
   *
   * @param urlOrRequest Target URL or Request to get all parameters from.
   * @param options
   */
  fetch(urlOrRequest: string | Request$1, options?: {
    /**
     * Allows to set post data of the request. If the data parameter is an object, it will be serialized to json string
     * and `content-type` header will be set to `application/json` if not explicitly set. Otherwise the `content-type`
     * header will be set to `application/octet-stream` if not explicitly set.
     */
    data?: string | Buffer | Serializable;
    /**
     * Whether to throw on response codes other than 2xx and 3xx. By default response object is returned for all status
     * codes.
     */
    failOnStatusCode?: boolean;
    /**
     * Provides an object that will be serialized as html form using `application/x-www-form-urlencoded` encoding and sent
     * as this request body. If this parameter is specified `content-type` header will be set to
     * `application/x-www-form-urlencoded` unless explicitly provided.
     */
    form?: {
      [key: string]: string | number | boolean;
    } | FormData;
    /**
     * Allows to set HTTP headers. These headers will apply to the fetched request as well as any redirects initiated by
     * it.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
     */
    ignoreHTTPSErrors?: boolean;
    /**
     * Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is
     * exceeded. Defaults to `20`. Pass `0` to not follow redirects.
     */
    maxRedirects?: number;
    /**
     * Maximum number of times network errors should be retried. Currently only `ECONNRESET` error is retried. Does not
     * retry based on HTTP response codes. An error will be thrown if the limit is exceeded. Defaults to `0` - no retries.
     */
    maxRetries?: number;
    /**
     * If set changes the fetch method (e.g. [PUT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT) or
     * [POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)). If not specified, GET method is used.
     */
    method?: string;
    /**
     * Provides an object that will be serialized as html form using `multipart/form-data` encoding and sent as this
     * request body. If this parameter is specified `content-type` header will be set to `multipart/form-data` unless
     * explicitly provided. File values can be passed either as
     * [`fs.ReadStream`](https://nodejs.org/api/fs.html#fs_class_fs_readstream) or as file-like object containing file
     * name, mime-type and its content.
     */
    multipart?: FormData | {
      [key: string]: string | number | boolean | ReadStream | {
        /**
         * File name
         */
        name: string;
        /**
         * File type
         */
        mimeType: string;
        /**
         * File content
         */
        buffer: Buffer;
      };
    };
    /**
     * Query parameters to be sent with the URL.
     */
    params?: {
      [key: string]: string | number | boolean;
    } | URLSearchParams | string;
    /**
     * Request timeout in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.
     */
    timeout?: number;
  }): Promise<APIResponse>;
  /**
   * Sends HTTP(S) [GET](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET) request and returns its
   * response. The method will populate request cookies from the context and update context cookies from the response.
   * The method will automatically follow redirects.
   *
   * **Usage**
   *
   * Request parameters can be configured with `params` option, they will be serialized into the URL search parameters:
   *
   * ```js
   * // Passing params as object
   * await request.get('https://example.com/api/getText', {
   *   params: {
   *     'isbn': '1234',
   *     'page': 23,
   *   }
   * });
   *
   * // Passing params as URLSearchParams
   * const searchParams = new URLSearchParams();
   * searchParams.set('isbn', '1234');
   * searchParams.append('page', 23);
   * searchParams.append('page', 24);
   * await request.get('https://example.com/api/getText', { params: searchParams });
   *
   * // Passing params as string
   * const queryString = 'isbn=1234&page=23&page=24';
   * await request.get('https://example.com/api/getText', { params: queryString });
   * ```
   *
   * @param url Target URL.
   * @param options
   */
  get(url: string, options?: {
    /**
     * Allows to set post data of the request. If the data parameter is an object, it will be serialized to json string
     * and `content-type` header will be set to `application/json` if not explicitly set. Otherwise the `content-type`
     * header will be set to `application/octet-stream` if not explicitly set.
     */
    data?: string | Buffer | Serializable;
    /**
     * Whether to throw on response codes other than 2xx and 3xx. By default response object is returned for all status
     * codes.
     */
    failOnStatusCode?: boolean;
    /**
     * Provides an object that will be serialized as html form using `application/x-www-form-urlencoded` encoding and sent
     * as this request body. If this parameter is specified `content-type` header will be set to
     * `application/x-www-form-urlencoded` unless explicitly provided.
     */
    form?: {
      [key: string]: string | number | boolean;
    } | FormData;
    /**
     * Allows to set HTTP headers. These headers will apply to the fetched request as well as any redirects initiated by
     * it.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
     */
    ignoreHTTPSErrors?: boolean;
    /**
     * Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is
     * exceeded. Defaults to `20`. Pass `0` to not follow redirects.
     */
    maxRedirects?: number;
    /**
     * Maximum number of times network errors should be retried. Currently only `ECONNRESET` error is retried. Does not
     * retry based on HTTP response codes. An error will be thrown if the limit is exceeded. Defaults to `0` - no retries.
     */
    maxRetries?: number;
    /**
     * Provides an object that will be serialized as html form using `multipart/form-data` encoding and sent as this
     * request body. If this parameter is specified `content-type` header will be set to `multipart/form-data` unless
     * explicitly provided. File values can be passed either as
     * [`fs.ReadStream`](https://nodejs.org/api/fs.html#fs_class_fs_readstream) or as file-like object containing file
     * name, mime-type and its content.
     */
    multipart?: FormData | {
      [key: string]: string | number | boolean | ReadStream | {
        /**
         * File name
         */
        name: string;
        /**
         * File type
         */
        mimeType: string;
        /**
         * File content
         */
        buffer: Buffer;
      };
    };
    /**
     * Query parameters to be sent with the URL.
     */
    params?: {
      [key: string]: string | number | boolean;
    } | URLSearchParams | string;
    /**
     * Request timeout in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.
     */
    timeout?: number;
  }): Promise<APIResponse>;
  /**
   * Sends HTTP(S) [HEAD](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD) request and returns its
   * response. The method will populate request cookies from the context and update context cookies from the response.
   * The method will automatically follow redirects.
   * @param url Target URL.
   * @param options
   */
  head(url: string, options?: {
    /**
     * Allows to set post data of the request. If the data parameter is an object, it will be serialized to json string
     * and `content-type` header will be set to `application/json` if not explicitly set. Otherwise the `content-type`
     * header will be set to `application/octet-stream` if not explicitly set.
     */
    data?: string | Buffer | Serializable;
    /**
     * Whether to throw on response codes other than 2xx and 3xx. By default response object is returned for all status
     * codes.
     */
    failOnStatusCode?: boolean;
    /**
     * Provides an object that will be serialized as html form using `application/x-www-form-urlencoded` encoding and sent
     * as this request body. If this parameter is specified `content-type` header will be set to
     * `application/x-www-form-urlencoded` unless explicitly provided.
     */
    form?: {
      [key: string]: string | number | boolean;
    } | FormData;
    /**
     * Allows to set HTTP headers. These headers will apply to the fetched request as well as any redirects initiated by
     * it.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
     */
    ignoreHTTPSErrors?: boolean;
    /**
     * Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is
     * exceeded. Defaults to `20`. Pass `0` to not follow redirects.
     */
    maxRedirects?: number;
    /**
     * Maximum number of times network errors should be retried. Currently only `ECONNRESET` error is retried. Does not
     * retry based on HTTP response codes. An error will be thrown if the limit is exceeded. Defaults to `0` - no retries.
     */
    maxRetries?: number;
    /**
     * Provides an object that will be serialized as html form using `multipart/form-data` encoding and sent as this
     * request body. If this parameter is specified `content-type` header will be set to `multipart/form-data` unless
     * explicitly provided. File values can be passed either as
     * [`fs.ReadStream`](https://nodejs.org/api/fs.html#fs_class_fs_readstream) or as file-like object containing file
     * name, mime-type and its content.
     */
    multipart?: FormData | {
      [key: string]: string | number | boolean | ReadStream | {
        /**
         * File name
         */
        name: string;
        /**
         * File type
         */
        mimeType: string;
        /**
         * File content
         */
        buffer: Buffer;
      };
    };
    /**
     * Query parameters to be sent with the URL.
     */
    params?: {
      [key: string]: string | number | boolean;
    } | URLSearchParams | string;
    /**
     * Request timeout in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.
     */
    timeout?: number;
  }): Promise<APIResponse>;
  /**
   * Sends HTTP(S) [PATCH](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH) request and returns its
   * response. The method will populate request cookies from the context and update context cookies from the response.
   * The method will automatically follow redirects.
   * @param url Target URL.
   * @param options
   */
  patch(url: string, options?: {
    /**
     * Allows to set post data of the request. If the data parameter is an object, it will be serialized to json string
     * and `content-type` header will be set to `application/json` if not explicitly set. Otherwise the `content-type`
     * header will be set to `application/octet-stream` if not explicitly set.
     */
    data?: string | Buffer | Serializable;
    /**
     * Whether to throw on response codes other than 2xx and 3xx. By default response object is returned for all status
     * codes.
     */
    failOnStatusCode?: boolean;
    /**
     * Provides an object that will be serialized as html form using `application/x-www-form-urlencoded` encoding and sent
     * as this request body. If this parameter is specified `content-type` header will be set to
     * `application/x-www-form-urlencoded` unless explicitly provided.
     */
    form?: {
      [key: string]: string | number | boolean;
    } | FormData;
    /**
     * Allows to set HTTP headers. These headers will apply to the fetched request as well as any redirects initiated by
     * it.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
     */
    ignoreHTTPSErrors?: boolean;
    /**
     * Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is
     * exceeded. Defaults to `20`. Pass `0` to not follow redirects.
     */
    maxRedirects?: number;
    /**
     * Maximum number of times network errors should be retried. Currently only `ECONNRESET` error is retried. Does not
     * retry based on HTTP response codes. An error will be thrown if the limit is exceeded. Defaults to `0` - no retries.
     */
    maxRetries?: number;
    /**
     * Provides an object that will be serialized as html form using `multipart/form-data` encoding and sent as this
     * request body. If this parameter is specified `content-type` header will be set to `multipart/form-data` unless
     * explicitly provided. File values can be passed either as
     * [`fs.ReadStream`](https://nodejs.org/api/fs.html#fs_class_fs_readstream) or as file-like object containing file
     * name, mime-type and its content.
     */
    multipart?: FormData | {
      [key: string]: string | number | boolean | ReadStream | {
        /**
         * File name
         */
        name: string;
        /**
         * File type
         */
        mimeType: string;
        /**
         * File content
         */
        buffer: Buffer;
      };
    };
    /**
     * Query parameters to be sent with the URL.
     */
    params?: {
      [key: string]: string | number | boolean;
    } | URLSearchParams | string;
    /**
     * Request timeout in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.
     */
    timeout?: number;
  }): Promise<APIResponse>;
  /**
   * Sends HTTP(S) [POST](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) request and returns its
   * response. The method will populate request cookies from the context and update context cookies from the response.
   * The method will automatically follow redirects.
   *
   * **Usage**
   *
   * JSON objects can be passed directly to the request:
   *
   * ```js
   * await request.post('https://example.com/api/createBook', {
   *   data: {
   *     title: 'Book Title',
   *     author: 'John Doe',
   *   }
   * });
   * ```
   *
   * To send form data to the server use `form` option. Its value will be encoded into the request body with
   * `application/x-www-form-urlencoded` encoding (see below how to use `multipart/form-data` form encoding to send
   * files):
   *
   * ```js
   * await request.post('https://example.com/api/findBook', {
   *   form: {
   *     title: 'Book Title',
   *     author: 'John Doe',
   *   }
   * });
   * ```
   *
   * The common way to send file(s) in the body of a request is to upload them as form fields with `multipart/form-data`
   * encoding. Use [FormData] to construct request body and pass it to the request as `multipart` parameter:
   *
   * ```js
   * const form = new FormData();
   * form.set('name', 'John');
   * form.append('name', 'Doe');
   * // Send two file fields with the same name.
   * form.append('file', new File(['console.log(2024);'], 'f1.js', { type: 'text/javascript' }));
   * form.append('file', new File(['hello'], 'f2.txt', { type: 'text/plain' }));
   * await request.post('https://example.com/api/uploadForm', {
   *   multipart: form
   * });
   * ```
   *
   * @param url Target URL.
   * @param options
   */
  post(url: string, options?: {
    /**
     * Allows to set post data of the request. If the data parameter is an object, it will be serialized to json string
     * and `content-type` header will be set to `application/json` if not explicitly set. Otherwise the `content-type`
     * header will be set to `application/octet-stream` if not explicitly set.
     */
    data?: string | Buffer | Serializable;
    /**
     * Whether to throw on response codes other than 2xx and 3xx. By default response object is returned for all status
     * codes.
     */
    failOnStatusCode?: boolean;
    /**
     * Provides an object that will be serialized as html form using `application/x-www-form-urlencoded` encoding and sent
     * as this request body. If this parameter is specified `content-type` header will be set to
     * `application/x-www-form-urlencoded` unless explicitly provided.
     */
    form?: {
      [key: string]: string | number | boolean;
    } | FormData;
    /**
     * Allows to set HTTP headers. These headers will apply to the fetched request as well as any redirects initiated by
     * it.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
     */
    ignoreHTTPSErrors?: boolean;
    /**
     * Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is
     * exceeded. Defaults to `20`. Pass `0` to not follow redirects.
     */
    maxRedirects?: number;
    /**
     * Maximum number of times network errors should be retried. Currently only `ECONNRESET` error is retried. Does not
     * retry based on HTTP response codes. An error will be thrown if the limit is exceeded. Defaults to `0` - no retries.
     */
    maxRetries?: number;
    /**
     * Provides an object that will be serialized as html form using `multipart/form-data` encoding and sent as this
     * request body. If this parameter is specified `content-type` header will be set to `multipart/form-data` unless
     * explicitly provided. File values can be passed either as
     * [`fs.ReadStream`](https://nodejs.org/api/fs.html#fs_class_fs_readstream) or as file-like object containing file
     * name, mime-type and its content.
     */
    multipart?: FormData | {
      [key: string]: string | number | boolean | ReadStream | {
        /**
         * File name
         */
        name: string;
        /**
         * File type
         */
        mimeType: string;
        /**
         * File content
         */
        buffer: Buffer;
      };
    };
    /**
     * Query parameters to be sent with the URL.
     */
    params?: {
      [key: string]: string | number | boolean;
    } | URLSearchParams | string;
    /**
     * Request timeout in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.
     */
    timeout?: number;
  }): Promise<APIResponse>;
  /**
   * Sends HTTP(S) [PUT](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT) request and returns its
   * response. The method will populate request cookies from the context and update context cookies from the response.
   * The method will automatically follow redirects.
   * @param url Target URL.
   * @param options
   */
  put(url: string, options?: {
    /**
     * Allows to set post data of the request. If the data parameter is an object, it will be serialized to json string
     * and `content-type` header will be set to `application/json` if not explicitly set. Otherwise the `content-type`
     * header will be set to `application/octet-stream` if not explicitly set.
     */
    data?: string | Buffer | Serializable;
    /**
     * Whether to throw on response codes other than 2xx and 3xx. By default response object is returned for all status
     * codes.
     */
    failOnStatusCode?: boolean;
    /**
     * Provides an object that will be serialized as html form using `application/x-www-form-urlencoded` encoding and sent
     * as this request body. If this parameter is specified `content-type` header will be set to
     * `application/x-www-form-urlencoded` unless explicitly provided.
     */
    form?: {
      [key: string]: string | number | boolean;
    } | FormData;
    /**
     * Allows to set HTTP headers. These headers will apply to the fetched request as well as any redirects initiated by
     * it.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
     */
    ignoreHTTPSErrors?: boolean;
    /**
     * Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is
     * exceeded. Defaults to `20`. Pass `0` to not follow redirects.
     */
    maxRedirects?: number;
    /**
     * Maximum number of times network errors should be retried. Currently only `ECONNRESET` error is retried. Does not
     * retry based on HTTP response codes. An error will be thrown if the limit is exceeded. Defaults to `0` - no retries.
     */
    maxRetries?: number;
    /**
     * Provides an object that will be serialized as html form using `multipart/form-data` encoding and sent as this
     * request body. If this parameter is specified `content-type` header will be set to `multipart/form-data` unless
     * explicitly provided. File values can be passed either as
     * [`fs.ReadStream`](https://nodejs.org/api/fs.html#fs_class_fs_readstream) or as file-like object containing file
     * name, mime-type and its content.
     */
    multipart?: FormData | {
      [key: string]: string | number | boolean | ReadStream | {
        /**
         * File name
         */
        name: string;
        /**
         * File type
         */
        mimeType: string;
        /**
         * File content
         */
        buffer: Buffer;
      };
    };
    /**
     * Query parameters to be sent with the URL.
     */
    params?: {
      [key: string]: string | number | boolean;
    } | URLSearchParams | string;
    /**
     * Request timeout in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.
     */
    timeout?: number;
  }): Promise<APIResponse>;
  /**
   * Returns storage state for this request context, contains current cookies and local storage snapshot if it was
   * passed to the constructor.
   * @param options
   */
  storageState(options?: {
    /**
     * Set to `true` to include IndexedDB in the storage state snapshot.
     */
    indexedDB?: boolean;
    /**
     * The file path to save the storage state to. If
     * [`path`](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-storage-state-option-path) is
     * a relative path, then it is resolved relative to current working directory. If no path is provided, storage state
     * is still returned, but won't be saved to the disk.
     */
    path?: string;
  }): Promise<{
    cookies: Array<{
      name: string;
      value: string;
      domain: string;
      path: string;
      /**
       * Unix time in seconds.
       */
      expires: number;
      httpOnly: boolean;
      secure: boolean;
      sameSite: "Strict" | "Lax" | "None";
    }>;
    origins: Array<{
      origin: string;
      localStorage: Array<{
        name: string;
        value: string;
      }>;
    }>;
  }>;
  tracing: Tracing$1;
  [Symbol.asyncDispose](): Promise<void>;
}
/**
 * [APIResponse](https://playwright.dev/docs/api/class-apiresponse) class represents responses returned by
 * [apiRequestContext.get(url[, options])](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-get)
 * and similar methods.
 */
interface APIResponse {
  /**
   * Returns the buffer with response body.
   */
  body(): Promise<Buffer>;
  /**
   * Disposes the body of this response. If not called then the body will stay in memory until the context closes.
   */
  dispose(): Promise<void>;
  /**
   * An object with all the response HTTP headers associated with this response.
   */
  headers(): {
    [key: string]: string;
  };
  /**
   * An array with all the response HTTP headers associated with this response. Header names are not lower-cased.
   * Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
   */
  headersArray(): Array<{
    /**
     * Name of the header.
     */
    name: string;
    /**
     * Value of the header.
     */
    value: string;
  }>;
  /**
   * Returns the JSON representation of response body.
   *
   * This method will throw if the response body is not parsable via `JSON.parse`.
   */
  json(): Promise<Serializable>;
  /**
   * Contains a boolean stating whether the response was successful (status in the range 200-299) or not.
   */
  ok(): boolean;
  /**
   * Returns SSL and other security information. Resolves to `null` for non-HTTPS responses. For redirected requests,
   * returns the information for the last request in the redirect chain.
   */
  securityDetails(): Promise<null | {
    /**
     * Common Name component of the Issuer field. from the certificate. This should only be used for informational
     * purposes. Optional.
     */
    issuer?: string;
    /**
     * The specific TLS protocol used. (e.g. `TLS 1.3`). Optional.
     */
    protocol?: string;
    /**
     * Common Name component of the Subject field from the certificate. This should only be used for informational
     * purposes. Optional.
     */
    subjectName?: string;
    /**
     * Unix timestamp (in seconds) specifying when this cert becomes valid. Optional.
     */
    validFrom?: number;
    /**
     * Unix timestamp (in seconds) specifying when this cert becomes invalid. Optional.
     */
    validTo?: number;
  }>;
  /**
   * Returns the IP address and port of the server. Resolves to `null` if the server address is not available. For
   * redirected requests, returns the information for the last request in the redirect chain.
   */
  serverAddr(): Promise<null | {
    /**
     * IPv4 or IPV6 address of the server.
     */
    ipAddress: string;
    port: number;
  }>;
  /**
   * Contains the status code of the response (e.g., 200 for a success).
   */
  status(): number;
  /**
   * Contains the status text of the response (e.g. usually an "OK" for a success).
   */
  statusText(): string;
  /**
   * Returns the text representation of response body.
   */
  text(): Promise<string>;
  /**
   * Contains the URL of the response.
   */
  url(): string;
  [Symbol.asyncDispose](): Promise<void>;
}
interface BrowserServer {
  /**
   * Emitted when the browser server closes.
   */
  on(event: 'close', listener: () => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'close', listener: () => any): this;
  /**
   * Emitted when the browser server closes.
   */
  addListener(event: 'close', listener: () => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'close', listener: () => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'close', listener: () => any): this;
  /**
   * Emitted when the browser server closes.
   */
  prependListener(event: 'close', listener: () => any): this;
  /**
   * Closes the browser gracefully and makes sure the process is terminated.
   */
  close(): Promise<void>;
  /**
   * Kills the browser process and waits for the process to exit.
   */
  kill(): Promise<void>;
  /**
   * Spawned browser application process.
   */
  process(): ChildProcess;
  /**
   * Browser websocket url.
   *
   * Browser websocket endpoint which can be used as an argument to
   * [browserType.connect(endpoint[, options])](https://playwright.dev/docs/api/class-browsertype#browser-type-connect)
   * to establish connection to the browser.
   */
  wsEndpoint(): string;
  [Symbol.asyncDispose](): Promise<void>;
}
/**
 * Accurately simulating time-dependent behavior is essential for verifying the correctness of applications. Learn
 * more about [clock emulation](https://playwright.dev/docs/clock).
 *
 * Note that clock is installed for the entire [BrowserContext](https://playwright.dev/docs/api/class-browsercontext),
 * so the time in all the pages and iframes is controlled by the same clock.
 */
interface Clock {
  /**
   * Advance the clock by jumping forward in time. Only fires due timers at most once. This is equivalent to user
   * closing the laptop lid for a while and reopening it later, after given time.
   *
   * **Usage**
   *
   * ```js
   * await page.clock.fastForward(1000);
   * await page.clock.fastForward('30:00');
   * ```
   *
   * @param ticks Time may be the number of milliseconds to advance the clock by or a human-readable string. Valid string formats are
   * "08" for eight seconds, "01:00" for one minute and "02:34:10" for two hours, 34 minutes and ten seconds.
   */
  fastForward(ticks: number | string): Promise<void>;
  /**
   * Install fake implementations for the following time-related functions:
   * - `Date`
   * - `setTimeout`
   * - `clearTimeout`
   * - `setInterval`
   * - `clearInterval`
   * - `requestAnimationFrame`
   * - `cancelAnimationFrame`
   * - `requestIdleCallback`
   * - `cancelIdleCallback`
   * - `performance`
   *
   * Fake timers are used to manually control the flow of time in tests. They allow you to advance time, fire timers,
   * and control the behavior of time-dependent functions. See
   * [clock.runFor(ticks)](https://playwright.dev/docs/api/class-clock#clock-run-for) and
   * [clock.fastForward(ticks)](https://playwright.dev/docs/api/class-clock#clock-fast-forward) for more information.
   * @param options
   */
  install(options?: {
    /**
     * Time to initialize with, current system time by default.
     */
    time?: number | string | Date;
  }): Promise<void>;
  /**
   * Advance the clock by jumping forward in time and pause the time. Once this method is called, no timers are fired
   * unless [clock.runFor(ticks)](https://playwright.dev/docs/api/class-clock#clock-run-for),
   * [clock.fastForward(ticks)](https://playwright.dev/docs/api/class-clock#clock-fast-forward),
   * [clock.pauseAt(time)](https://playwright.dev/docs/api/class-clock#clock-pause-at) or
   * [clock.resume()](https://playwright.dev/docs/api/class-clock#clock-resume) is called.
   *
   * Only fires due timers at most once. This is equivalent to user closing the laptop lid for a while and reopening it
   * at the specified time and pausing.
   *
   * **Usage**
   *
   * ```js
   * await page.clock.pauseAt(new Date('2020-02-02'));
   * await page.clock.pauseAt('2020-02-02');
   * ```
   *
   * For best results, install the clock before navigating the page and set it to a time slightly before the intended
   * test time. This ensures that all timers run normally during page loading, preventing the page from getting stuck.
   * Once the page has fully loaded, you can safely use
   * [clock.pauseAt(time)](https://playwright.dev/docs/api/class-clock#clock-pause-at) to pause the clock.
   *
   * ```js
   * // Initialize clock with some time before the test time and let the page load
   * // naturally. `Date.now` will progress as the timers fire.
   * await page.clock.install({ time: new Date('2024-12-10T08:00:00') });
   * await page.goto('http://localhost:3333');
   * await page.clock.pauseAt(new Date('2024-12-10T10:00:00'));
   * ```
   *
   * @param time Time to pause at.
   */
  pauseAt(time: number | string | Date): Promise<void>;
  /**
   * Resumes timers. Once this method is called, time resumes flowing, timers are fired as usual.
   */
  resume(): Promise<void>;
  /**
   * Advance the clock, firing all the time-related callbacks.
   *
   * **Usage**
   *
   * ```js
   * await page.clock.runFor(1000);
   * await page.clock.runFor('30:00');
   * ```
   *
   * @param ticks Time may be the number of milliseconds to advance the clock by or a human-readable string. Valid string formats are
   * "08" for eight seconds, "01:00" for one minute and "02:34:10" for two hours, 34 minutes and ten seconds.
   */
  runFor(ticks: number | string): Promise<void>;
  /**
   * Makes `Date.now` and `new Date()` return fixed fake time at all times, keeps all the timers running.
   *
   * Use this method for simple scenarios where you only need to test with a predefined time. For more advanced
   * scenarios, use [clock.install([options])](https://playwright.dev/docs/api/class-clock#clock-install) instead. Read
   * docs on [clock emulation](https://playwright.dev/docs/clock) to learn more.
   *
   * **Usage**
   *
   * ```js
   * await page.clock.setFixedTime(Date.now());
   * await page.clock.setFixedTime(new Date('2020-02-02'));
   * await page.clock.setFixedTime('2020-02-02');
   * ```
   *
   * @param time Time to be set in milliseconds.
   */
  setFixedTime(time: number | string | Date): Promise<void>;
  /**
   * Sets system time, but does not trigger any timers. Use this to test how the web page reacts to a time shift, for
   * example switching from summer to winter time, or changing time zones.
   *
   * **Usage**
   *
   * ```js
   * await page.clock.setSystemTime(Date.now());
   * await page.clock.setSystemTime(new Date('2020-02-02'));
   * await page.clock.setSystemTime('2020-02-02');
   * ```
   *
   * @param time Time to be set in milliseconds.
   */
  setSystemTime(time: number | string | Date): Promise<void>;
}
/**
 * [ConsoleMessage](https://playwright.dev/docs/api/class-consolemessage) objects are dispatched by page via the
 * [page.on('console')](https://playwright.dev/docs/api/class-page#page-event-console) event. For each console message
 * logged in the page there will be corresponding event in the Playwright context.
 *
 * ```js
 * // Listen for all console logs
 * page.on('console', msg => console.log(msg.text()));
 *
 * // Listen for all console events and handle errors
 * page.on('console', msg => {
 *   if (msg.type() === 'error')
 *     console.log(`Error text: "${msg.text()}"`);
 * });
 *
 * // Get the next console log
 * const msgPromise = page.waitForEvent('console');
 * await page.evaluate(() => {
 *   console.log('hello', 42, { foo: 'bar' });  // Issue console.log inside the page
 * });
 * const msg = await msgPromise;
 *
 * // Deconstruct console log arguments
 * await msg.args()[0].jsonValue(); // hello
 * await msg.args()[1].jsonValue(); // 42
 * ```
 *
 */
interface ConsoleMessage$1 {
  /**
   * List of arguments passed to a `console` function call. See also
   * [page.on('console')](https://playwright.dev/docs/api/class-page#page-event-console).
   */
  args(): Array<JSHandle>;
  location(): {
    /**
     * URL of the resource.
     */
    url: string;
    /**
     * 0-based line number in the resource.
     */
    line: number;
    /**
     * 0-based column number in the resource.
     */
    column: number;
    /**
     * 0-based line number in the resource. Deprecated, use `line` instead.
     */
    lineNumber: number;
    /**
     * 0-based column number in the resource. Deprecated, use `column` instead.
     */
    columnNumber: number;
  };
  /**
   * The page that produced this console message, if any.
   */
  page(): null | Page$1;
  /**
   * The text of the console message.
   */
  text(): string;
  /**
   * The timestamp of the console message in milliseconds since the Unix epoch.
   */
  timestamp(): number;
  type(): "log" | "debug" | "info" | "error" | "warning" | "dir" | "dirxml" | "table" | "trace" | "clear" | "startGroup" | "startGroupCollapsed" | "endGroup" | "assert" | "profile" | "profileEnd" | "count" | "time" | "timeEnd";
  /**
   * The web worker or service worker that produced this console message, if any. Note that console messages from web
   * workers also have non-null
   * [consoleMessage.page()](https://playwright.dev/docs/api/class-consolemessage#console-message-page).
   */
  worker(): null | Worker;
}
/**
 * Coverage gathers information about parts of JavaScript and CSS that were used by the page.
 *
 * An example of using JavaScript coverage to produce Istanbul report for page load:
 *
 * **NOTE** Coverage APIs are only supported on Chromium-based browsers.
 *
 * ```js
 * const { chromium } = require('playwright');
 * const v8toIstanbul = require('v8-to-istanbul');
 *
 * (async () => {
 *   const browser = await chromium.launch();
 *   const page = await browser.newPage();
 *   await page.coverage.startJSCoverage();
 *   await page.goto('https://chromium.org');
 *   const coverage = await page.coverage.stopJSCoverage();
 *   for (const entry of coverage) {
 *     const converter = v8toIstanbul('', 0, { source: entry.source });
 *     await converter.load();
 *     converter.applyCoverage(entry.functions);
 *     console.log(JSON.stringify(converter.toIstanbul()));
 *   }
 *   await browser.close();
 * })();
 * ```
 *
 */
interface Coverage {
  /**
   * Returns coverage is started
   * @param options
   */
  startCSSCoverage(options?: {
    /**
     * Whether to reset coverage on every navigation. Defaults to `true`.
     */
    resetOnNavigation?: boolean;
  }): Promise<void>;
  /**
   * Returns coverage is started
   *
   * **NOTE** Anonymous scripts are ones that don't have an associated url. These are scripts that are dynamically
   * created on the page using `eval` or `new Function`. If
   * [`reportAnonymousScripts`](https://playwright.dev/docs/api/class-coverage#coverage-start-js-coverage-option-report-anonymous-scripts)
   * is set to `true`, anonymous scripts will have `__playwright_evaluation_script__` as their URL.
   *
   * @param options
   */
  startJSCoverage(options?: {
    /**
     * Whether anonymous scripts generated by the page should be reported. Defaults to `false`.
     */
    reportAnonymousScripts?: boolean;
    /**
     * Whether to reset coverage on every navigation. Defaults to `true`.
     */
    resetOnNavigation?: boolean;
  }): Promise<void>;
  /**
   * Returns the array of coverage reports for all stylesheets
   *
   * **NOTE** CSS Coverage doesn't include dynamically injected style tags without sourceURLs.
   *
   */
  stopCSSCoverage(): Promise<Array<{
    /**
     * StyleSheet URL
     */
    url: string;
    /**
     * StyleSheet content, if available.
     */
    text?: string;
    /**
     * StyleSheet ranges that were used. Ranges are sorted and non-overlapping.
     */
    ranges: Array<{
      /**
       * A start offset in text, inclusive
       */
      start: number;
      /**
       * An end offset in text, exclusive
       */
      end: number;
    }>;
  }>>;
  /**
   * Returns the array of coverage reports for all scripts
   *
   * **NOTE** JavaScript Coverage doesn't include anonymous scripts by default. However, scripts with sourceURLs are
   * reported.
   *
   */
  stopJSCoverage(): Promise<Array<{
    /**
     * Script URL
     */
    url: string;
    /**
     * Script ID
     */
    scriptId: string;
    /**
     * Script content, if applicable.
     */
    source?: string;
    /**
     * V8-specific coverage format.
     */
    functions: Array<{
      functionName: string;
      isBlockCoverage: boolean;
      ranges: Array<{
        count: number;
        startOffset: number;
        endOffset: number;
      }>;
    }>;
  }>>;
}
/**
 * `Credentials` is a virtual WebAuthn authenticator scoped to a
 * [BrowserContext](https://playwright.dev/docs/api/class-browsercontext). It lets tests register passkeys and answer
 * `navigator.credentials.create()` / `navigator.credentials.get()` ceremonies in the page, without a real
 * authenticator or hardware security key.
 *
 * There are two common ways to use it:
 *
 * **Usage: seed a known credential**
 *
 * ```js
 * const context = await browser.newContext();
 *
 * // A passkey your backend already provisioned for a test user.
 * await context.credentials.create('example.com', {
 *   id: knownCredentialId, // base64url
 *   userHandle: knownUserHandle, // base64url
 *   privateKey: knownPrivateKey, // base64url PKCS#8 (DER)
 *   publicKey: knownPublicKey, // base64url SPKI (DER)
 * });
 * await context.credentials.install();
 *
 * const page = await context.newPage();
 * await page.goto('https://example.com/login');
 * // The page's navigator.credentials.get() is answered with the seeded passkey.
 * ```
 *
 * **Usage: capture a passkey, then reuse it**
 *
 * ```js
 * // setup test: let the app register a passkey, then save it.
 * const context = await browser.newContext();
 * await context.credentials.install();
 *
 * const page = await context.newPage();
 * await page.goto('https://example.com/register');
 * await page.getByRole('button', { name: 'Create a passkey' }).click();
 *
 * // Read back the passkey the page registered — it includes the private key.
 * const [credential] = await context.credentials.get({ rpId: 'example.com' });
 * fs.writeFileSync('playwright/.auth/passkey.json', JSON.stringify(credential));
 * ```
 *
 * ```js
 * // later test: seed the captured passkey so the app starts already enrolled.
 * const credential = JSON.parse(fs.readFileSync('playwright/.auth/passkey.json', 'utf8'));
 * const context = await browser.newContext();
 * await context.credentials.create(credential.rpId, credential);
 * await context.credentials.install();
 *
 * const page = await context.newPage();
 * await page.goto('https://example.com/login');
 * // navigator.credentials.get() resolves the captured passkey — already signed in.
 * ```
 *
 * **Defaults**
 */
interface Credentials {
  /**
   * Seeds a virtual WebAuthn credential and returns it.
   *
   * With only [`rpId`](https://playwright.dev/docs/api/class-credentials#credentials-create-option-rp-id), generates a
   * fresh **ECDSA P-256** keypair, credential id and user handle. The seeded credential is discoverable (resident), so
   * the page can resolve it from both username-then-passkey and usernameless passkey flows. The returned object carries
   * the private and public keys, so it can be persisted to disk and re-seeded in a later test.
   *
   * To **import a known credential**, supply all four of
   * [`id`](https://playwright.dev/docs/api/class-credentials#credentials-create-option-id),
   * [`userHandle`](https://playwright.dev/docs/api/class-credentials#credentials-create-option-user-handle),
   * [`privateKey`](https://playwright.dev/docs/api/class-credentials#credentials-create-option-private-key) and
   * [`publicKey`](https://playwright.dev/docs/api/class-credentials#credentials-create-option-public-key) together.
   *
   * Call [credentials.install()](https://playwright.dev/docs/api/class-credentials#credentials-install) before
   * navigating to a page that uses WebAuthn.
   * @param rpId Relying party id (typically the site's effective domain).
   * @param options
   */
  create(rpId: string, options?: {
    /**
     * Base64url-encoded credential id. Auto-generated if omitted.
     */
    id?: string;
    /**
     * Base64url-encoded PKCS#8 (DER) private key. Auto-generated if omitted.
     */
    privateKey?: string;
    /**
     * Base64url-encoded SPKI (DER) public key. Auto-generated if omitted.
     */
    publicKey?: string;
    /**
     * Base64url-encoded user handle. Auto-generated if omitted.
     */
    userHandle?: string;
  }): Promise<{
    /**
     * Base64url-encoded credential id.
     */
    id: string;
    /**
     * Relying party id.
     */
    rpId: string;
    /**
     * Base64url-encoded user handle.
     */
    userHandle: string;
    /**
     * Base64url-encoded PKCS#8 (DER) private key.
     */
    privateKey: string;
    /**
     * Base64url-encoded SPKI (DER) public key.
     */
    publicKey: string;
  }>;
  /**
   * Removes a credential from the authenticator by its id. Works for any credential currently held — both those seeded
   * with [credentials.create(rpId[, options])](https://playwright.dev/docs/api/class-credentials#credentials-create)
   * and those the page registered itself by calling `navigator.credentials.create()`.
   * @param id Base64url-encoded credential id.
   */
  delete(id: string): Promise<void>;
  /**
   * Returns every credential currently held by the authenticator, optionally filtered by
   * [`rpId`](https://playwright.dev/docs/api/class-credentials#credentials-get-option-rp-id) or
   * [`id`](https://playwright.dev/docs/api/class-credentials#credentials-get-option-id). This includes both credentials
   * seeded with
   * [credentials.create(rpId[, options])](https://playwright.dev/docs/api/class-credentials#credentials-create) and
   * credentials the page registered itself by calling `navigator.credentials.create()`.
   *
   * Each returned credential includes its private and public keys, so a passkey the app just registered can be saved
   * and re-seeded into a later test with
   * [credentials.create(rpId[, options])](https://playwright.dev/docs/api/class-credentials#credentials-create) — see
   * the second example in the class overview.
   * @param options
   */
  get(options?: {
    /**
     * Only return the credential with this base64url-encoded id.
     */
    id?: string;
    /**
     * Only return credentials for this relying party id.
     */
    rpId?: string;
  }): Promise<Array<{
    id: string;
    rpId: string;
    userHandle: string;
    privateKey: string;
    publicKey: string;
  }>>;
  /**
   * Installs the virtual WebAuthn authenticator into the context, overriding `navigator.credentials.create()` and
   * `navigator.credentials.get()` in all current and future pages. Call this before the page first touches
   * `navigator.credentials`.
   *
   * Required: until [credentials.install()](https://playwright.dev/docs/api/class-credentials#credentials-install) is
   * called, no interception is in place and the page sees the platform's native (or absent) WebAuthn behaviour. Seeding
   * credentials with
   * [credentials.create(rpId[, options])](https://playwright.dev/docs/api/class-credentials#credentials-create) without
   * installing populates the authenticator, but the page will never see those credentials.
   */
  install(): Promise<void>;
}
/**
 * API for controlling the Playwright debugger. The debugger allows pausing script execution and inspecting the page.
 * Obtain the debugger instance via
 * [browserContext.debugger](https://playwright.dev/docs/api/class-browsercontext#browser-context-debugger).
 */
interface Debugger$1 {
  /**
   * Emitted when the debugger pauses or resumes.
   */
  on(event: 'pausedstatechanged', listener: () => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'pausedstatechanged', listener: () => any): this;
  /**
   * Emitted when the debugger pauses or resumes.
   */
  addListener(event: 'pausedstatechanged', listener: () => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'pausedstatechanged', listener: () => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'pausedstatechanged', listener: () => any): this;
  /**
   * Emitted when the debugger pauses or resumes.
   */
  prependListener(event: 'pausedstatechanged', listener: () => any): this;
  /**
   * Resumes script execution and pauses again before the next action. Throws if the debugger is not paused.
   */
  next(): Promise<void>;
  /**
   * Returns details about the currently paused call. Returns `null` if the debugger is not paused.
   */
  pausedDetails(): null | {
    location: {
      file: string;
      line?: number;
      column?: number;
    };
    title: string;
  };
  /**
   * Configures the debugger to pause before the next action is executed.
   *
   * Throws if the debugger is already paused. Use
   * [debugger.next()](https://playwright.dev/docs/api/class-debugger#debugger-next) or
   * [debugger.runTo(location)](https://playwright.dev/docs/api/class-debugger#debugger-run-to) to step while paused.
   *
   * Note that [page.pause()](https://playwright.dev/docs/api/class-page#page-pause) is equivalent to a "debugger"
   * statement — it pauses execution at the call site immediately. On the contrary,
   * [debugger.requestPause()](https://playwright.dev/docs/api/class-debugger#debugger-request-pause) is equivalent to
   * "pause on next statement" — it configures the debugger to pause before the next action is executed.
   */
  requestPause(): Promise<void>;
  /**
   * Resumes script execution. Throws if the debugger is not paused.
   */
  resume(): Promise<void>;
  /**
   * Resumes script execution and pauses when an action originates from the given source location. Throws if the
   * debugger is not paused.
   * @param location The source location to pause at.
   */
  runTo(location: {
    file: string;
    line?: number;
    column?: number;
  }): Promise<void>;
}
/**
 * [Dialog](https://playwright.dev/docs/api/class-dialog) objects are dispatched by page via the
 * [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) event.
 *
 * An example of using `Dialog` class:
 *
 * ```js
 * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
 *
 * (async () => {
 *   const browser = await chromium.launch();
 *   const page = await browser.newPage();
 *   page.on('dialog', async dialog => {
 *     console.log(dialog.message());
 *     await dialog.dismiss();
 *   });
 *   await page.evaluate(() => alert('1'));
 *   await browser.close();
 * })();
 * ```
 *
 * **NOTE** Dialogs are dismissed automatically, unless there is a
 * [page.on('dialog')](https://playwright.dev/docs/api/class-page#page-event-dialog) listener. When listener is
 * present, it **must** either
 * [dialog.accept([promptText])](https://playwright.dev/docs/api/class-dialog#dialog-accept) or
 * [dialog.dismiss()](https://playwright.dev/docs/api/class-dialog#dialog-dismiss) the dialog - otherwise the page
 * will [freeze](https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#never_blocking) waiting for the
 * dialog, and actions like click will never finish.
 *
 */
interface Dialog {
  /**
   * Returns when the dialog has been accepted.
   * @param promptText A text to enter in prompt. Does not cause any effects if the dialog's `type` is not prompt. Optional.
   */
  accept(promptText?: string): Promise<void>;
  /**
   * If dialog is prompt, returns default prompt value. Otherwise, returns empty string.
   */
  defaultValue(): string;
  /**
   * Returns when the dialog has been dismissed.
   */
  dismiss(): Promise<void>;
  /**
   * A message displayed in the dialog.
   */
  message(): string;
  /**
   * The page that initiated this dialog, if available.
   */
  page(): null | Page$1;
  /**
   * Returns dialog's type, can be one of `alert`, `beforeunload`, `confirm` or `prompt`.
   */
  type(): string;
}
/**
 * [Disposable](https://playwright.dev/docs/api/class-disposable) is returned from various methods to allow undoing
 * the corresponding action. For example,
 * [page.addInitScript(script[, arg])](https://playwright.dev/docs/api/class-page#page-add-init-script) returns a
 * [Disposable](https://playwright.dev/docs/api/class-disposable) that can be used to remove the init script.
 */
interface Disposable {
  /**
   * Removes the associated resource. For example, removes the init script installed via
   * [page.addInitScript(script[, arg])](https://playwright.dev/docs/api/class-page#page-add-init-script) or
   * [browserContext.addInitScript(script[, arg])](https://playwright.dev/docs/api/class-browsercontext#browser-context-add-init-script).
   */
  dispose(): Promise<void>;
  [Symbol.asyncDispose](): Promise<void>;
}
/**
 * [Download](https://playwright.dev/docs/api/class-download) objects are dispatched by page via the
 * [page.on('download')](https://playwright.dev/docs/api/class-page#page-event-download) event.
 *
 * All the downloaded files belonging to the browser context are deleted when the browser context is closed.
 *
 * Download event is emitted once the download starts. Download path becomes available once download completes.
 *
 * ```js
 * // Start waiting for download before clicking. Note no await.
 * const downloadPromise = page.waitForEvent('download');
 * await page.getByText('Download file').click();
 * const download = await downloadPromise;
 *
 * // Wait for the download process to complete and save the downloaded file somewhere.
 * await download.saveAs('/path/to/save/at/' + download.suggestedFilename());
 * ```
 *
 */
interface Download {
  /**
   * Cancels a download. Will not fail if the download is already finished or canceled. Upon successful cancellations,
   * `download.failure()` would resolve to `'canceled'`.
   */
  cancel(): Promise<void>;
  /**
   * Returns a readable stream for a successful download, or throws for a failed/canceled download.
   *
   * **NOTE** If you don't need a readable stream, it's usually simpler to read the file from disk after the download
   * completed. See [download.path()](https://playwright.dev/docs/api/class-download#download-path).
   *
   */
  createReadStream(): Promise<Readable>;
  /**
   * Deletes the downloaded file. Will wait for the download to finish if necessary.
   */
  delete(): Promise<void>;
  /**
   * Returns download error if any. Will wait for the download to finish if necessary.
   */
  failure(): Promise<null | string>;
  /**
   * Get the page that the download belongs to.
   */
  page(): Page$1;
  /**
   * Returns path to the downloaded file for a successful download, or throws for a failed/canceled download. The method
   * will wait for the download to finish if necessary. The method throws when connected remotely.
   *
   * Note that the download's file name is a random GUID, use
   * [download.suggestedFilename()](https://playwright.dev/docs/api/class-download#download-suggested-filename) to get
   * suggested file name.
   */
  path(): Promise<string>;
  /**
   * Copy the download to a user-specified path. It is safe to call this method while the download is still in progress.
   * Will wait for the download to finish if necessary.
   *
   * **Usage**
   *
   * ```js
   * await download.saveAs('/path/to/save/at/' + download.suggestedFilename());
   * ```
   *
   * @param path Path where the download should be copied.
   */
  saveAs(path: string): Promise<void>;
  /**
   * Returns suggested filename for this download. It is typically computed by the browser from the
   * [`Content-Disposition`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) response
   * header or the `download` attribute. See the spec on [whatwg](https://html.spec.whatwg.org/#downloading-resources).
   * Different browsers can use different logic for computing it.
   */
  suggestedFilename(): string;
  /**
   * Returns downloaded url.
   */
  url(): string;
}
/**
 * [FileChooser](https://playwright.dev/docs/api/class-filechooser) objects are dispatched by the page in the
 * [page.on('filechooser')](https://playwright.dev/docs/api/class-page#page-event-file-chooser) event.
 *
 * ```js
 * // Start waiting for file chooser before clicking. Note no await.
 * const fileChooserPromise = page.waitForEvent('filechooser');
 * await page.getByText('Upload file').click();
 * const fileChooser = await fileChooserPromise;
 * await fileChooser.setFiles(path.join(__dirname, 'myfile.pdf'));
 * ```
 *
 */
interface FileChooser {
  /**
   * Returns input element associated with this file chooser.
   */
  element(): ElementHandle;
  /**
   * Returns whether this file chooser accepts multiple files.
   */
  isMultiple(): boolean;
  /**
   * Returns page this file chooser belongs to.
   */
  page(): Page$1;
  /**
   * Sets the value of the file input this chooser is associated with. If some of the `filePaths` are relative paths,
   * then they are resolved relative to the current working directory. For empty array, clears the selected files.
   * @param files
   * @param options
   */
  setFiles(files: string | ReadonlyArray<string> | {
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  } | ReadonlyArray<{
    /**
     * File name
     */
    name: string;
    /**
     * File type
     */
    mimeType: string;
    /**
     * File content
     */
    buffer: Buffer;
  }>, options?: {
    /**
     * This option has no effect.
     * @deprecated This option has no effect.
     */
    noWaitAfter?: boolean;
    /**
     * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
     * option in the config, or by using the
     * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
     * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
     */
    timeout?: number;
  }): Promise<void>;
}
/**
 * FrameLocator represents a view to the `iframe` on the page. It captures the logic sufficient to retrieve the
 * `iframe` and locate elements in that iframe. FrameLocator can be created with either
 * [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame),
 * [page.frameLocator(selector)](https://playwright.dev/docs/api/class-page#page-frame-locator) or
 * [locator.frameLocator(selector)](https://playwright.dev/docs/api/class-locator#locator-frame-locator) method.
 *
 * ```js
 * const locator = page.locator('#my-frame').contentFrame().getByText('Submit');
 * await locator.click();
 * ```
 *
 * **Strictness**
 *
 * Frame locators are strict. This means that all operations on frame locators will throw if more than one element
 * matches a given selector.
 *
 * ```js
 * // Throws if there are several frames in DOM:
 * await page.locator('.result-frame').contentFrame().getByRole('button').click();
 *
 * // Works because we explicitly tell locator to pick the first frame:
 * await page.locator('.result-frame').contentFrame().first().getByRole('button').click();
 * ```
 *
 * **Converting Locator to FrameLocator**
 *
 * If you have a [Locator](https://playwright.dev/docs/api/class-locator) object pointing to an `iframe` it can be
 * converted to [FrameLocator](https://playwright.dev/docs/api/class-framelocator) using
 * [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame).
 *
 * **Converting FrameLocator to Locator**
 *
 * If you have a [FrameLocator](https://playwright.dev/docs/api/class-framelocator) object it can be converted to
 * [Locator](https://playwright.dev/docs/api/class-locator) pointing to the same `iframe` using
 * [frameLocator.owner()](https://playwright.dev/docs/api/class-framelocator#frame-locator-owner).
 */
interface FrameLocator {
  /**
   * Returns locator to the first matching frame.
   * @deprecated Use [locator.first()](https://playwright.dev/docs/api/class-locator#locator-first) followed by
   * [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) instead.
   */
  first(): FrameLocator;
  /**
   * When working with iframes, you can create a frame locator that will enter the iframe and allow selecting elements
   * in that iframe.
   * @param selector A selector to use when resolving DOM element.
   */
  frameLocator(selector: string): FrameLocator;
  /**
   * Allows locating elements by their alt text.
   *
   * **Usage**
   *
   * For example, this method will find the image by alt text "Playwright logo":
   *
   * ```html
   * <img alt='Playwright logo'>
   * ```
   *
   * ```js
   * await page.getByAltText('Playwright logo').click();
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByAltText(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating input elements by the text of the associated `<label>` or `aria-labelledby` element, or by the
   * `aria-label` attribute.
   *
   * **Usage**
   *
   * For example, this method will find inputs by label "Username" and "Password" in the following DOM:
   *
   * ```html
   * <input aria-label="Username">
   * <label for="password-input">Password:</label>
   * <input id="password-input">
   * ```
   *
   * ```js
   * await page.getByLabel('Username').fill('john');
   * await page.getByLabel('Password').fill('secret');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByLabel(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating input elements by the placeholder text.
   *
   * **Usage**
   *
   * For example, consider the following DOM structure.
   *
   * ```html
   * <input type="email" placeholder="name@example.com" />
   * ```
   *
   * You can fill the input after locating it by the placeholder text:
   *
   * ```js
   * await page
   *     .getByPlaceholder('name@example.com')
   *     .fill('playwright@microsoft.com');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByPlaceholder(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating elements by their [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles),
   * [ARIA attributes](https://www.w3.org/TR/wai-aria-1.2/#aria-attributes) and
   * [accessible name](https://w3c.github.io/accname/#dfn-accessible-name).
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <h3>Sign up</h3>
   * <label>
   *   <input type="checkbox" /> Subscribe
   * </label>
   * <br/>
   * <button>Submit</button>
   * ```
   *
   * You can locate each element by its implicit role:
   *
   * ```js
   * await expect(page.getByRole('heading', { name: 'Sign up' })).toBeVisible();
   *
   * await page.getByRole('checkbox', { name: 'Subscribe' }).check();
   *
   * await page.getByRole('button', { name: /submit/i }).click();
   * ```
   *
   * **Details**
   *
   * Role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback
   * about the ARIA guidelines.
   *
   * Many html elements have an implicitly [defined role](https://w3c.github.io/html-aam/#html-element-role-mappings)
   * that is recognized by the role selector. You can find all the
   * [supported roles here](https://www.w3.org/TR/wai-aria-1.2/#role_definitions). ARIA guidelines **do not recommend**
   * duplicating implicit roles and attributes by setting `role` and/or `aria-*` attributes to default values.
   * @param role Required aria role.
   * @param options
   */
  getByRole(role: "alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "insertion" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "meter" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem", options?: {
    /**
     * An attribute that is usually set by `aria-checked` or native `<input type=checkbox>` controls.
     *
     * Learn more about [`aria-checked`](https://www.w3.org/TR/wai-aria-1.2/#aria-checked).
     */
    checked?: boolean;
    /**
     * Option to match the [accessible description](https://w3c.github.io/accname/#dfn-accessible-description). By
     * default, matching is case-insensitive and searches for a substring, use
     * [`exact`](https://playwright.dev/docs/api/class-framelocator#frame-locator-get-by-role-option-exact) to control
     * this behavior.
     *
     * Learn more about [accessible description](https://w3c.github.io/accname/#dfn-accessible-description).
     */
    description?: string | RegExp;
    /**
     * An attribute that is usually set by `aria-disabled` or `disabled`.
     *
     * **NOTE** Unlike most other attributes, `disabled` is inherited through the DOM hierarchy. Learn more about
     * [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.2/#aria-disabled).
     *
     */
    disabled?: boolean;
    /**
     * Whether [`name`](https://playwright.dev/docs/api/class-framelocator#frame-locator-get-by-role-option-name) and
     * [`description`](https://playwright.dev/docs/api/class-framelocator#frame-locator-get-by-role-option-description)
     * are matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when the value is a regular
     * expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
    /**
     * An attribute that is usually set by `aria-expanded`.
     *
     * Learn more about [`aria-expanded`](https://www.w3.org/TR/wai-aria-1.2/#aria-expanded).
     */
    expanded?: boolean;
    /**
     * Option that controls whether hidden elements are matched. By default, only non-hidden elements, as
     * [defined by ARIA](https://www.w3.org/TR/wai-aria-1.2/#tree_exclusion), are matched by role selector.
     *
     * Learn more about [`aria-hidden`](https://www.w3.org/TR/wai-aria-1.2/#aria-hidden).
     */
    includeHidden?: boolean;
    /**
     * A number attribute that is usually present for roles `heading`, `listitem`, `row`, `treeitem`, with default values
     * for `<h1>-<h6>` elements.
     *
     * Learn more about [`aria-level`](https://www.w3.org/TR/wai-aria-1.2/#aria-level).
     */
    level?: number;
    /**
     * Option to match the [accessible name](https://w3c.github.io/accname/#dfn-accessible-name). By default, matching is
     * case-insensitive and searches for a substring, use
     * [`exact`](https://playwright.dev/docs/api/class-framelocator#frame-locator-get-by-role-option-exact) to control
     * this behavior.
     *
     * Learn more about [accessible name](https://w3c.github.io/accname/#dfn-accessible-name).
     */
    name?: string | RegExp;
    /**
     * An attribute that is usually set by `aria-pressed`.
     *
     * Learn more about [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.2/#aria-pressed).
     */
    pressed?: boolean;
    /**
     * An attribute that is usually set by `aria-selected`.
     *
     * Learn more about [`aria-selected`](https://www.w3.org/TR/wai-aria-1.2/#aria-selected).
     */
    selected?: boolean;
  }): Locator;
  /**
   * Locate element by the test id.
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <button data-testid="directions">Itinéraire</button>
   * ```
   *
   * You can locate the element by its test id:
   *
   * ```js
   * await page.getByTestId('directions').click();
   * ```
   *
   * **Details**
   *
   * By default, the `data-testid` attribute is used as a test id. Use
   * [selectors.setTestIdAttribute(attributeName)](https://playwright.dev/docs/api/class-selectors#selectors-set-test-id-attribute)
   * to configure a different test id attribute if necessary.
   *
   * ```js
   * // Set custom test id attribute from @playwright/test config:
   * import { defineConfig } from '@playwright/test';
   *
   * export default defineConfig({
   *   use: {
   *     testIdAttribute: 'data-pw'
   *   },
   * });
   * ```
   *
   * @param testId Id to locate the element by.
   */
  getByTestId(testId: string | RegExp): Locator;
  /**
   * Allows locating elements that contain given text.
   *
   * See also [locator.filter([options])](https://playwright.dev/docs/api/class-locator#locator-filter) that allows to
   * match by another criteria, like an accessible role, and then filter by the text content.
   *
   * **Usage**
   *
   * Consider the following DOM structure:
   *
   * ```html
   * <div>Hello <span>world</span></div>
   * <div>Hello</div>
   * ```
   *
   * You can locate by text substring, exact string, or a regular expression:
   *
   * ```js
   * // Matches <span>
   * page.getByText('world');
   *
   * // Matches first <div>
   * page.getByText('Hello world');
   *
   * // Matches second <div>
   * page.getByText('Hello', { exact: true });
   *
   * // Matches both <div>s
   * page.getByText(/Hello/);
   *
   * // Matches second <div>
   * page.getByText(/^hello$/i);
   * ```
   *
   * **Details**
   *
   * Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into
   * one, turns line breaks into spaces and ignores leading and trailing whitespace.
   *
   * Input elements of the type `button` and `submit` are matched by their `value` instead of the text content. For
   * example, locating by text `"Log in"` matches `<input type=button value="Log in">`.
   * @param text Text to locate the element for.
   * @param options
   */
  getByText(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Allows locating elements by their title attribute.
   *
   * **Usage**
   *
   * Consider the following DOM structure.
   *
   * ```html
   * <span title='Issues count'>25 issues</span>
   * ```
   *
   * You can check the issues count after locating it by the title text:
   *
   * ```js
   * await expect(page.getByTitle('Issues count')).toHaveText('25 issues');
   * ```
   *
   * @param text Text to locate the element for.
   * @param options
   */
  getByTitle(text: string | RegExp, options?: {
    /**
     * Whether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a
     * regular expression. Note that exact match still trims whitespace.
     */
    exact?: boolean;
  }): Locator;
  /**
   * Returns locator to the last matching frame.
   * @deprecated Use [locator.last()](https://playwright.dev/docs/api/class-locator#locator-last) followed by
   * [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) instead.
   */
  last(): FrameLocator;
  /**
   * The method finds an element matching the specified selector in the locator's subtree. It also accepts filter
   * options, similar to [locator.filter([options])](https://playwright.dev/docs/api/class-locator#locator-filter)
   * method.
   *
   * [Learn more about locators](https://playwright.dev/docs/locators).
   * @param selectorOrLocator A selector or locator to use when resolving DOM element.
   * @param options
   */
  locator(selectorOrLocator: string | Locator, options?: {
    /**
     * Narrows down the results of the method to those which contain elements matching this relative locator. For example,
     * `article` that has `text=Playwright` matches `<article><div>Playwright</div></article>`.
     *
     * Inner locator **must be relative** to the outer locator and is queried starting with the outer locator match, not
     * the document root. For example, you can find `content` that has `div` in
     * `<article><content><div>Playwright</div></content></article>`. However, looking for `content` that has `article
     * div` will fail, because the inner locator must be relative and should not use any elements outside the `content`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    has?: Locator;
    /**
     * Matches elements that do not contain an element that matches an inner locator. Inner locator is queried against the
     * outer one. For example, `article` that does not have `div` matches `<article><span>Playwright</span></article>`.
     *
     * Note that outer and inner locators must belong to the same frame. Inner locator must not contain
     * [FrameLocator](https://playwright.dev/docs/api/class-framelocator)s.
     */
    hasNot?: Locator;
    /**
     * Matches elements that do not contain specified text somewhere inside, possibly in a child or a descendant element.
     * When passed a [string], matching is case-insensitive and searches for a substring.
     */
    hasNotText?: string | RegExp;
    /**
     * Matches elements containing specified text somewhere inside, possibly in a child or a descendant element. When
     * passed a [string], matching is case-insensitive and searches for a substring. For example, `"Playwright"` matches
     * `<article><div>Playwright</div></article>`.
     */
    hasText?: string | RegExp;
  }): Locator;
  /**
   * Returns locator to the n-th matching frame. It's zero based, `nth(0)` selects the first frame.
   * @deprecated Use [locator.nth(index)](https://playwright.dev/docs/api/class-locator#locator-nth) followed by
   * [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame) instead.
   * @param index
   */
  nth(index: number): FrameLocator;
  /**
   * Returns a [Locator](https://playwright.dev/docs/api/class-locator) object pointing to the same `iframe` as this
   * frame locator.
   *
   * Useful when you have a [FrameLocator](https://playwright.dev/docs/api/class-framelocator) object obtained
   * somewhere, and later on would like to interact with the `iframe` element.
   *
   * For a reverse operation, use
   * [locator.contentFrame()](https://playwright.dev/docs/api/class-locator#locator-content-frame).
   *
   * **Usage**
   *
   * ```js
   * const frameLocator = page.locator('iframe[name="embedded"]').contentFrame();
   * // ...
   * const locator = frameLocator.owner();
   * await expect(locator).toBeVisible();
   * ```
   *
   */
  owner(): Locator;
}
/**
 * Keyboard provides an api for managing a virtual keyboard. The high level api is
 * [keyboard.type(text[, options])](https://playwright.dev/docs/api/class-keyboard#keyboard-type), which takes raw
 * characters and generates proper `keydown`, `keypress`/`input`, and `keyup` events on your page.
 *
 * For finer control, you can use [keyboard.down(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-down),
 * [keyboard.up(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-up), and
 * [keyboard.insertText(text)](https://playwright.dev/docs/api/class-keyboard#keyboard-insert-text) to manually fire
 * events as if they were generated from a real keyboard.
 *
 * An example of holding down `Shift` in order to select and delete some text:
 *
 * ```js
 * await page.keyboard.type('Hello World!');
 * await page.keyboard.press('ArrowLeft');
 *
 * await page.keyboard.down('Shift');
 * for (let i = 0; i < ' World'.length; i++)
 *   await page.keyboard.press('ArrowLeft');
 * await page.keyboard.up('Shift');
 *
 * await page.keyboard.press('Backspace');
 * // Result text will end up saying 'Hello!'
 * ```
 *
 * An example of pressing uppercase `A`
 *
 * ```js
 * await page.keyboard.press('Shift+KeyA');
 * // or
 * await page.keyboard.press('Shift+A');
 * ```
 *
 * An example to trigger select-all with the keyboard
 *
 * ```js
 * await page.keyboard.press('ControlOrMeta+A');
 * ```
 *
 */
interface Keyboard {
  /**
   * Dispatches a `keydown` event.
   *
   * [`key`](https://playwright.dev/docs/api/class-keyboard#keyboard-down-option-key) can specify the intended
   * [keyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) value or a single character
   * to generate the text for. A superset of the
   * [`key`](https://playwright.dev/docs/api/class-keyboard#keyboard-down-option-key) values can be found
   * [here](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
   *
   * `F1` - `F12`, `Digit0`- `Digit9`, `KeyA`- `KeyZ`, `Backquote`, `Minus`, `Equal`, `Backslash`, `Backspace`, `Tab`,
   * `Delete`, `Escape`, `ArrowDown`, `End`, `Enter`, `Home`, `Insert`, `PageDown`, `PageUp`, `ArrowRight`, `ArrowUp`,
   * etc.
   *
   * Following modification shortcuts are also supported: `Shift`, `Control`, `Alt`, `Meta`, `ShiftLeft`,
   * `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS.
   *
   * Holding down `Shift` will type the text that corresponds to the
   * [`key`](https://playwright.dev/docs/api/class-keyboard#keyboard-down-option-key) in the upper case.
   *
   * If [`key`](https://playwright.dev/docs/api/class-keyboard#keyboard-down-option-key) is a single character, it is
   * case-sensitive, so the values `a` and `A` will generate different respective texts.
   *
   * If [`key`](https://playwright.dev/docs/api/class-keyboard#keyboard-down-option-key) is a modifier key, `Shift`,
   * `Meta`, `Control`, or `Alt`, subsequent key presses will be sent with that modifier active. To release the modifier
   * key, use [keyboard.up(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-up).
   *
   * After the key is pressed once, subsequent calls to
   * [keyboard.down(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-down) will have
   * [repeat](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat) set to true. To release the key,
   * use [keyboard.up(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-up).
   *
   * **NOTE** Modifier keys DO influence `keyboard.down`. Holding down `Shift` will type the text in upper case.
   *
   * @param key Name of the key to press or a character to generate, such as `ArrowLeft` or `a`.
   */
  down(key: string): Promise<void>;
  /**
   * Dispatches only `input` event, does not emit the `keydown`, `keyup` or `keypress` events.
   *
   * **Usage**
   *
   * ```js
   * page.keyboard.insertText('嗨');
   * ```
   *
   * **NOTE** Modifier keys DO NOT effect `keyboard.insertText`. Holding down `Shift` will not type the text in upper
   * case.
   *
   * @param text Sets input to the specified text value.
   */
  insertText(text: string): Promise<void>;
  /**
   * **NOTE** In most cases, you should use
   * [locator.press(key[, options])](https://playwright.dev/docs/api/class-locator#locator-press) instead.
   *
   * [`key`](https://playwright.dev/docs/api/class-keyboard#keyboard-press-option-key) can specify the intended
   * [keyboardEvent.key](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) value or a single character
   * to generate the text for. A superset of the
   * [`key`](https://playwright.dev/docs/api/class-keyboard#keyboard-press-option-key) values can be found
   * [here](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:
   *
   * `F1` - `F12`, `Digit0`- `Digit9`, `KeyA`- `KeyZ`, `Backquote`, `Minus`, `Equal`, `Backslash`, `Backspace`, `Tab`,
   * `Delete`, `Escape`, `ArrowDown`, `End`, `Enter`, `Home`, `Insert`, `PageDown`, `PageUp`, `ArrowRight`, `ArrowUp`,
   * etc.
   *
   * Following modification shortcuts are also supported: `Shift`, `Control`, `Alt`, `Meta`, `ShiftLeft`,
   * `ControlOrMeta`. `ControlOrMeta` resolves to `Control` on Windows and Linux and to `Meta` on macOS.
   *
   * Holding down `Shift` will type the text that corresponds to the
   * [`key`](https://playwright.dev/docs/api/class-keyboard#keyboard-press-option-key) in the upper case.
   *
   * If [`key`](https://playwright.dev/docs/api/class-keyboard#keyboard-press-option-key) is a single character, it is
   * case-sensitive, so the values `a` and `A` will generate different respective texts.
   *
   * Shortcuts such as `key: "Control+o"`, `key: "Control++` or `key: "Control+Shift+T"` are supported as well. When
   * specified with the modifier, modifier is pressed and being held while the subsequent key is being pressed.
   *
   * **Usage**
   *
   * ```js
   * const page = await browser.newPage();
   * await page.goto('https://keycode.info');
   * await page.keyboard.press('A');
   * await page.screenshot({ path: 'A.png' });
   * await page.keyboard.press('ArrowLeft');
   * await page.screenshot({ path: 'ArrowLeft.png' });
   * await page.keyboard.press('Shift+O');
   * await page.screenshot({ path: 'O.png' });
   * await browser.close();
   * ```
   *
   * Shortcut for [keyboard.down(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-down) and
   * [keyboard.up(key)](https://playwright.dev/docs/api/class-keyboard#keyboard-up).
   * @param key Name of the key to press or a character to generate, such as `ArrowLeft` or `a`.
   * @param options
   */
  press(key: string, options?: {
    /**
     * Time to wait between `keydown` and `keyup` in milliseconds. Defaults to 0.
     */
    delay?: number;
  }): Promise<void>;
  /**
   * **NOTE** In most cases, you should use
   * [locator.fill(value[, options])](https://playwright.dev/docs/api/class-locator#locator-fill) instead. You only need
   * to press keys one by one if there is special keyboard handling on the page - in this case use
   * [locator.pressSequentially(text[, options])](https://playwright.dev/docs/api/class-locator#locator-press-sequentially).
   *
   * Sends a `keydown`, `keypress`/`input`, and `keyup` event for each character in the text.
   *
   * To press a special key, like `Control` or `ArrowDown`, use
   * [keyboard.press(key[, options])](https://playwright.dev/docs/api/class-keyboard#keyboard-press).
   *
   * **Usage**
   *
   * ```js
   * await page.keyboard.type('Hello'); // Types instantly
   * await page.keyboard.type('World', { delay: 100 }); // Types slower, like a user
   * ```
   *
   * **NOTE** Modifier keys DO NOT effect `keyboard.type`. Holding down `Shift` will not type the text in upper case.
   *
   * **NOTE** For characters that are not on a US keyboard, only an `input` event will be sent.
   *
   * @param text A text to type into a focused element.
   * @param options
   */
  type(text: string, options?: {
    /**
     * Time to wait between key presses in milliseconds. Defaults to 0.
     */
    delay?: number;
  }): Promise<void>;
  /**
   * Dispatches a `keyup` event.
   * @param key Name of the key to press or a character to generate, such as `ArrowLeft` or `a`.
   */
  up(key: string): Promise<void>;
}
/**
 * Playwright generates a lot of logs and they are accessible via the pluggable logger sink.
 *
 * ```js
 * const { chromium } = require('playwright');  // Or 'firefox' or 'webkit'.
 *
 * (async () => {
 *   const browser = await chromium.launch({
 *     logger: {
 *       isEnabled: (name, severity) => name === 'api',
 *       log: (name, severity, message, args) => console.log(`${name} ${message}`)
 *     }
 *   });
 *   // ...
 * })();
 * ```
 *
 */
interface Logger {
  /**
   * Determines whether sink is interested in the logger with the given name and severity.
   * @param name logger name
   * @param severity
   */
  isEnabled(name: string, severity: "verbose" | "info" | "warning" | "error"): boolean;
  /**
   * @param name logger name
   * @param severity
   * @param message log message format
   * @param args message arguments
   * @param hints optional formatting hints
   */
  log(name: string, severity: "verbose" | "info" | "warning" | "error", message: string | Error, args: ReadonlyArray<Object>, hints: {
    /**
     * Optional preferred logger color.
     */
    color?: string;
  }): void;
}
/**
 * The Mouse class operates in main-frame CSS pixels relative to the top-left corner of the viewport.
 *
 * **NOTE** If you want to debug where the mouse moved, you can use the [Trace viewer](https://playwright.dev/docs/trace-viewer-intro) or
 * [Playwright Inspector](https://playwright.dev/docs/running-tests). A red dot showing the location of the mouse will be shown for every
 * mouse action.
 *
 * Every `page` object has its own Mouse, accessible with
 * [page.mouse](https://playwright.dev/docs/api/class-page#page-mouse).
 *
 * ```js
 * // Using ‘page.mouse’ to trace a 100x100 square.
 * await page.mouse.move(0, 0);
 * await page.mouse.down();
 * await page.mouse.move(0, 100);
 * await page.mouse.move(100, 100);
 * await page.mouse.move(100, 0);
 * await page.mouse.move(0, 0);
 * await page.mouse.up();
 * ```
 *
 */
interface Mouse {
  /**
   * Shortcut for [mouse.move(x, y[, options])](https://playwright.dev/docs/api/class-mouse#mouse-move),
   * [mouse.down([options])](https://playwright.dev/docs/api/class-mouse#mouse-down),
   * [mouse.up([options])](https://playwright.dev/docs/api/class-mouse#mouse-up).
   * @param x X coordinate relative to the main frame's viewport in CSS pixels.
   * @param y Y coordinate relative to the main frame's viewport in CSS pixels.
   * @param options
   */
  click(x: number, y: number, options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * defaults to 1. See [UIEvent.detail].
     */
    clickCount?: number;
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
  }): Promise<void>;
  /**
   * Shortcut for [mouse.move(x, y[, options])](https://playwright.dev/docs/api/class-mouse#mouse-move),
   * [mouse.down([options])](https://playwright.dev/docs/api/class-mouse#mouse-down),
   * [mouse.up([options])](https://playwright.dev/docs/api/class-mouse#mouse-up),
   * [mouse.down([options])](https://playwright.dev/docs/api/class-mouse#mouse-down) and
   * [mouse.up([options])](https://playwright.dev/docs/api/class-mouse#mouse-up).
   * @param x X coordinate relative to the main frame's viewport in CSS pixels.
   * @param y Y coordinate relative to the main frame's viewport in CSS pixels.
   * @param options
   */
  dblclick(x: number, y: number, options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * Time to wait between `mousedown` and `mouseup` in milliseconds. Defaults to 0.
     */
    delay?: number;
  }): Promise<void>;
  /**
   * Dispatches a `mousedown` event.
   * @param options
   */
  down(options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * defaults to 1. See [UIEvent.detail].
     */
    clickCount?: number;
  }): Promise<void>;
  /**
   * Dispatches a `mousemove` event.
   * @param x X coordinate relative to the main frame's viewport in CSS pixels.
   * @param y Y coordinate relative to the main frame's viewport in CSS pixels.
   * @param options
   */
  move(x: number, y: number, options?: {
    /**
     * Defaults to 1. Sends `n` interpolated `mousemove` events to represent travel between Playwright's current cursor
     * position and the provided destination. When set to 1, emits a single `mousemove` event at the destination location.
     */
    steps?: number;
  }): Promise<void>;
  /**
   * Dispatches a `mouseup` event.
   * @param options
   */
  up(options?: {
    /**
     * Defaults to `left`.
     */
    button?: "left" | "right" | "middle";
    /**
     * defaults to 1. See [UIEvent.detail].
     */
    clickCount?: number;
  }): Promise<void>;
  /**
   * Dispatches a `wheel` event. This method is usually used to manually scroll the page. See
   * [scrolling](https://playwright.dev/docs/input#scrolling) for alternative ways to scroll.
   *
   * **NOTE** Wheel events may cause scrolling if they are not handled, and this method does not wait for the scrolling
   * to finish before returning.
   *
   * @param deltaX Pixels to scroll horizontally.
   * @param deltaY Pixels to scroll vertically.
   */
  wheel(deltaX: number, deltaY: number): Promise<void>;
}
/**
 * Whenever the page sends a request for a network resource the following sequence of events are emitted by
 * [Page](https://playwright.dev/docs/api/class-page):
 * - [page.on('request')](https://playwright.dev/docs/api/class-page#page-event-request) emitted when the request is
 *   issued by the page.
 * - [page.on('response')](https://playwright.dev/docs/api/class-page#page-event-response) emitted when/if the
 *   response status and headers are received for the request.
 * - [page.on('requestfinished')](https://playwright.dev/docs/api/class-page#page-event-request-finished) emitted
 *   when the response body is downloaded and the request is complete.
 *
 * If request fails at some point, then instead of `'requestfinished'` event (and possibly instead of 'response'
 * event), the  [page.on('requestfailed')](https://playwright.dev/docs/api/class-page#page-event-request-failed) event
 * is emitted.
 *
 * **NOTE** HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request
 * will complete with `'requestfinished'` event.
 *
 * If request gets a 'redirect' response, the request is successfully finished with the `requestfinished` event, and a
 * new request is  issued to a redirected url.
 */
interface Request$1 {
  /**
   * An object with all the request HTTP headers associated with this request. The header names are lower-cased.
   */
  allHeaders(): Promise<{
    [key: string]: string;
  }>;
  /**
   * Returns the [Response](https://playwright.dev/docs/api/class-response) object if the response has already been
   * received, `null` otherwise.
   *
   * Unlike [request.response()](https://playwright.dev/docs/api/class-request#request-response), this method does not
   * wait for the response to arrive. It returns immediately with the response object if the response has been received,
   * or `null` if the response has not been received yet.
   */
  existingResponse(): null | Response$1;
  /**
   * The method returns `null` unless this request has failed, as reported by `requestfailed` event.
   *
   * **Usage**
   *
   * Example of logging of all the failed requests:
   *
   * ```js
   * page.on('requestfailed', request => {
   *   console.log(request.url() + ' ' + request.failure().errorText);
   * });
   * ```
   *
   */
  failure(): null | {
    /**
     * Human-readable error message, e.g. `'net::ERR_FAILED'`.
     */
    errorText: string;
  };
  /**
   * Returns the [Frame](https://playwright.dev/docs/api/class-frame) that initiated this request.
   *
   * **Usage**
   *
   * ```js
   * const frameUrl = request.frame().url();
   * ```
   *
   * **Details**
   *
   * Note that in some cases the frame is not available, and this method will throw.
   * - When request originates in the Service Worker. You can use `request.serviceWorker()` to check that.
   * - When navigation request is issued before the corresponding frame is created. You can use
   *   [request.isNavigationRequest()](https://playwright.dev/docs/api/class-request#request-is-navigation-request) to
   *   check that.
   *
   * Here is an example that handles all the cases:
   *
   * ```js
   * if (request.serviceWorker())
   *   console.log(`request ${request.url()} from a service worker`);
   * else if (request.isNavigationRequest())
   *   console.log(`request ${request.url()} is a navigation request`);
   * else
   *   console.log(`request ${request.url()} from a frame ${request.frame().url()}`);
   * ```
   *
   */
  frame(): Frame$1;
  /**
   * An object with the request HTTP headers. The header names are lower-cased. Note that this method does not return
   * security-related headers, including cookie-related ones. You can use
   * [request.allHeaders()](https://playwright.dev/docs/api/class-request#request-all-headers) for complete list of
   * headers that include `cookie` information.
   */
  headers(): {
    [key: string]: string;
  };
  /**
   * An array with all the request HTTP headers associated with this request. Unlike
   * [request.allHeaders()](https://playwright.dev/docs/api/class-request#request-all-headers), header names are NOT
   * lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
   */
  headersArray(): Promise<Array<{
    /**
     * Name of the header.
     */
    name: string;
    /**
     * Value of the header.
     */
    value: string;
  }>>;
  /**
   * Returns the value of the header matching the name. The name is case-insensitive.
   * @param name Name of the header.
   */
  headerValue(name: string): Promise<null | string>;
  /**
   * Whether this request is driving frame's navigation.
   *
   * Some navigation requests are issued before the corresponding frame is created, and therefore do not have
   * [request.frame()](https://playwright.dev/docs/api/class-request#request-frame) available.
   */
  isNavigationRequest(): boolean;
  /**
   * Request's method (GET, POST, etc.)
   */
  method(): string;
  /**
   * Request's post body, if any.
   */
  postData(): null | string;
  /**
   * Request's post body in a binary form, if any.
   */
  postDataBuffer(): null | Buffer;
  /**
   * Returns parsed request's body for `form-urlencoded` and JSON as a fallback if any.
   *
   * When the response is `application/x-www-form-urlencoded` then a key/value object of the values will be returned.
   * Otherwise it will be parsed as JSON.
   */
  postDataJSON(): null | Serializable;
  /**
   * Request that was redirected by the server to this one, if any.
   *
   * When the server responds with a redirect, Playwright creates a new
   * [Request](https://playwright.dev/docs/api/class-request) object. The two requests are connected by
   * `redirectedFrom()` and `redirectedTo()` methods. When multiple server redirects has happened, it is possible to
   * construct the whole redirect chain by repeatedly calling `redirectedFrom()`.
   *
   * **Usage**
   *
   * For example, if the website `http://example.com` redirects to `https://example.com`:
   *
   * ```js
   * const response = await page.goto('http://example.com');
   * console.log(response.request().redirectedFrom().url()); // 'http://example.com'
   * ```
   *
   * If the website `https://google.com` has no redirects:
   *
   * ```js
   * const response = await page.goto('https://google.com');
   * console.log(response.request().redirectedFrom()); // null
   * ```
   *
   */
  redirectedFrom(): null | Request$1;
  /**
   * New request issued by the browser if the server responded with redirect.
   *
   * **Usage**
   *
   * This method is the opposite of
   * [request.redirectedFrom()](https://playwright.dev/docs/api/class-request#request-redirected-from):
   *
   * ```js
   * console.log(request.redirectedFrom().redirectedTo() === request); // true
   * ```
   *
   */
  redirectedTo(): null | Request$1;
  /**
   * Contains the request's resource type as it was perceived by the rendering engine. ResourceType will be one of the
   * following: `document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`,
   * `eventsource`, `websocket`, `manifest`, `other`.
   */
  resourceType(): string;
  /**
   * Returns the matching [Response](https://playwright.dev/docs/api/class-response) object, or `null` if the response
   * was not received due to error.
   */
  response(): Promise<null | Response$1>;
  /**
   * The Service [Worker](https://playwright.dev/docs/api/class-worker) that is performing the request.
   *
   * **Details**
   *
   * This method is Chromium only. It's safe to call when using other browsers, but it will always be `null`.
   *
   * Requests originated in a Service Worker do not have a
   * [request.frame()](https://playwright.dev/docs/api/class-request#request-frame) available.
   */
  serviceWorker(): null | Worker;
  /**
   * Returns resource size information for given request.
   */
  sizes(): Promise<{
    /**
     * Size of the request body (POST data payload) in bytes. Set to 0 if there was no body.
     */
    requestBodySize: number;
    /**
     * Total number of bytes from the start of the HTTP request message until (and including) the double CRLF before the
     * body.
     */
    requestHeadersSize: number;
    /**
     * Size of the received response body (encoded) in bytes.
     */
    responseBodySize: number;
    /**
     * Total number of bytes from the start of the HTTP response message until (and including) the double CRLF before the
     * body.
     */
    responseHeadersSize: number;
  }>;
  /**
   * Returns resource timing information for given request. Most of the timing values become available upon the
   * response, `responseEnd` becomes available when request finishes. Find more information at
   * [Resource Timing API](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming).
   *
   * **Usage**
   *
   * ```js
   * const requestFinishedPromise = page.waitForEvent('requestfinished');
   * await page.goto('http://example.com');
   * const request = await requestFinishedPromise;
   * console.log(request.timing());
   * ```
   *
   */
  timing(): {
    /**
     * Request start time in milliseconds elapsed since January 1, 1970 00:00:00 UTC
     */
    startTime: number;
    /**
     * Time immediately before the browser starts the domain name lookup for the resource. The value is given in
     * milliseconds relative to `startTime`, -1 if not available.
     */
    domainLookupStart: number;
    /**
     * Time immediately after the browser starts the domain name lookup for the resource. The value is given in
     * milliseconds relative to `startTime`, -1 if not available.
     */
    domainLookupEnd: number;
    /**
     * Time immediately before the user agent starts establishing the connection to the server to retrieve the resource.
     * The value is given in milliseconds relative to `startTime`, -1 if not available.
     */
    connectStart: number;
    /**
     * Time immediately before the browser starts the handshake process to secure the current connection. The value is
     * given in milliseconds relative to `startTime`, -1 if not available.
     */
    secureConnectionStart: number;
    /**
     * Time immediately before the user agent starts establishing the connection to the server to retrieve the resource.
     * The value is given in milliseconds relative to `startTime`, -1 if not available.
     */
    connectEnd: number;
    /**
     * Time immediately before the browser starts requesting the resource from the server, cache, or local resource. The
     * value is given in milliseconds relative to `startTime`, -1 if not available.
     */
    requestStart: number;
    /**
     * Time immediately after the browser receives the first byte of the response from the server, cache, or local
     * resource. The value is given in milliseconds relative to `startTime`, -1 if not available.
     */
    responseStart: number;
    /**
     * Time immediately after the browser receives the last byte of the resource or immediately before the transport
     * connection is closed, whichever comes first. The value is given in milliseconds relative to `startTime`, -1 if not
     * available.
     */
    responseEnd: number;
  };
  /**
   * URL of the request.
   */
  url(): string;
}
/**
 * [Response](https://playwright.dev/docs/api/class-response) class represents responses which are received by page.
 */
interface Response$1 {
  /**
   * An object with all the response HTTP headers associated with this response.
   */
  allHeaders(): Promise<{
    [key: string]: string;
  }>;
  /**
   * Returns the buffer with response body.
   */
  body(): Promise<Buffer>;
  /**
   * Waits for this response to finish, returns always `null`.
   */
  finished(): Promise<null | Error>;
  /**
   * Returns the [Frame](https://playwright.dev/docs/api/class-frame) that initiated this response.
   */
  frame(): Frame$1;
  /**
   * Indicates whether this Response was fulfilled by a Service Worker's Fetch Handler (i.e. via
   * [FetchEvent.respondWith](https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent/respondWith)).
   */
  fromServiceWorker(): boolean;
  /**
   * An object with the response HTTP headers. The header names are lower-cased. Note that this method does not return
   * security-related headers, including cookie-related ones. You can use
   * [response.allHeaders()](https://playwright.dev/docs/api/class-response#response-all-headers) for complete list of
   * headers that include `cookie` information.
   */
  headers(): {
    [key: string]: string;
  };
  /**
   * An array with all the request HTTP headers associated with this response. Unlike
   * [response.allHeaders()](https://playwright.dev/docs/api/class-response#response-all-headers), header names are NOT
   * lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.
   */
  headersArray(): Promise<Array<{
    /**
     * Name of the header.
     */
    name: string;
    /**
     * Value of the header.
     */
    value: string;
  }>>;
  /**
   * Returns the value of the header matching the name. The name is case-insensitive. If multiple headers have the same
   * name (except `set-cookie`), they are returned as a list separated by `, `. For `set-cookie`, the `\n` separator is
   * used. If no headers are found, `null` is returned.
   * @param name Name of the header.
   */
  headerValue(name: string): Promise<null | string>;
  /**
   * Returns all values of the headers matching the name, for example `set-cookie`. The name is case-insensitive.
   * @param name Name of the header.
   */
  headerValues(name: string): Promise<Array<string>>;
  /**
   * Returns the http version used by the response.
   */
  httpVersion(): Promise<string>;
  /**
   * Returns the JSON representation of response body.
   *
   * This method will throw if the response body is not parsable via `JSON.parse`.
   */
  json(): Promise<Serializable>;
  /**
   * Contains a boolean stating whether the response was successful (status in the range 200-299) or not.
   */
  ok(): boolean;
  /**
   * Returns the matching [Request](https://playwright.dev/docs/api/class-request) object.
   */
  request(): Request$1;
  /**
   * Returns SSL and other security information.
   */
  securityDetails(): Promise<null | {
    /**
     * Common Name component of the Issuer field. from the certificate. This should only be used for informational
     * purposes. Optional.
     */
    issuer?: string;
    /**
     * The specific TLS protocol used. (e.g. `TLS 1.3`). Optional.
     */
    protocol?: string;
    /**
     * Common Name component of the Subject field from the certificate. This should only be used for informational
     * purposes. Optional.
     */
    subjectName?: string;
    /**
     * Unix timestamp (in seconds) specifying when this cert becomes valid. Optional.
     */
    validFrom?: number;
    /**
     * Unix timestamp (in seconds) specifying when this cert becomes invalid. Optional.
     */
    validTo?: number;
  }>;
  /**
   * Returns the IP address and port of the server.
   */
  serverAddr(): Promise<null | {
    /**
     * IPv4 or IPV6 address of the server.
     */
    ipAddress: string;
    port: number;
  }>;
  /**
   * Contains the status code of the response (e.g., 200 for a success).
   */
  status(): number;
  /**
   * Contains the status text of the response (e.g. usually an "OK" for a success).
   */
  statusText(): string;
  /**
   * Returns the text representation of response body.
   */
  text(): Promise<string>;
  /**
   * Contains the URL of the response.
   */
  url(): string;
}
/**
 * Whenever a network route is set up with
 * [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route) or
 * [browserContext.route(url, handler[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route),
 * the `Route` object allows to handle the route.
 *
 * Learn more about [networking](https://playwright.dev/docs/network).
 */
interface Route {
  /**
   * Aborts the route's request.
   * @param errorCode Optional error code. Defaults to `failed`, could be one of the following:
   * - `'aborted'` - An operation was aborted (due to user action)
   * - `'accessdenied'` - Permission to access a resource, other than the network, was denied
   * - `'addressunreachable'` - The IP address is unreachable. This usually means that there is no route to the
   * specified host or network.
   * - `'blockedbyclient'` - The client chose to block the request.
   * - `'blockedbyresponse'` - The request failed because the response was delivered along with requirements which are
   * not met ('X-Frame-Options' and 'Content-Security-Policy' ancestor checks, for instance).
   * - `'connectionaborted'` - A connection timed out as a result of not receiving an ACK for data sent.
   * - `'connectionclosed'` - A connection was closed (corresponding to a TCP FIN).
   * - `'connectionfailed'` - A connection attempt failed.
   * - `'connectionrefused'` - A connection attempt was refused.
   * - `'connectionreset'` - A connection was reset (corresponding to a TCP RST).
   * - `'internetdisconnected'` - The Internet connection has been lost.
   * - `'namenotresolved'` - The host name could not be resolved.
   * - `'timedout'` - An operation timed out.
   * - `'failed'` - A generic failure occurred.
   */
  abort(errorCode?: string): Promise<void>;
  /**
   * Sends route's request to the network with optional overrides.
   *
   * **Usage**
   *
   * ```js
   * await page.route('**\/*', async (route, request) => {
   *   // Override headers
   *   const headers = {
   *     ...request.headers(),
   *     foo: 'foo-value', // set "foo" header
   *     bar: undefined, // remove "bar" header
   *   };
   *   await route.continue({ headers });
   * });
   * ```
   *
   * **Details**
   *
   * The [`headers`](https://playwright.dev/docs/api/class-route#route-continue-option-headers) option applies to both
   * the routed request and any redirects it initiates. However,
   * [`url`](https://playwright.dev/docs/api/class-route#route-continue-option-url),
   * [`method`](https://playwright.dev/docs/api/class-route#route-continue-option-method), and
   * [`postData`](https://playwright.dev/docs/api/class-route#route-continue-option-post-data) only apply to the
   * original request and are not carried over to redirected requests.
   *
   * [route.continue([options])](https://playwright.dev/docs/api/class-route#route-continue) will immediately send the
   * request to the network, other matching handlers won't be invoked. Use
   * [route.fallback([options])](https://playwright.dev/docs/api/class-route#route-fallback) If you want next matching
   * handler in the chain to be invoked.
   *
   * **NOTE** Some request headers are **forbidden** and cannot be overridden (for example, `Cookie`, `Host`,
   * `Content-Length` and others, see
   * [this MDN page](https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header) for full list). If an
   * override is provided for a forbidden header, it will be ignored and the original request header will be used.
   *
   * To set custom cookies, use
   * [browserContext.addCookies(cookies)](https://playwright.dev/docs/api/class-browsercontext#browser-context-add-cookies).
   *
   * @param options
   */
  continue(options?: {
    /**
     * If set changes the request HTTP headers. Header values will be converted to a string.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * If set changes the request method (e.g. GET or POST).
     */
    method?: string;
    /**
     * If set changes the post data of request.
     */
    postData?: string | Buffer | Serializable;
    /**
     * If set changes the request URL. New URL must have same protocol as original one.
     */
    url?: string;
  }): Promise<void>;
  /**
   * Continues route's request with optional overrides. The method is similar to
   * [route.continue([options])](https://playwright.dev/docs/api/class-route#route-continue) with the difference that
   * other matching handlers will be invoked before sending the request.
   *
   * **Usage**
   *
   * When several routes match the given pattern, they run in the order opposite to their registration. That way the
   * last registered route can always override all the previous ones. In the example below, request will be handled by
   * the bottom-most handler first, then it'll fall back to the previous one and in the end will be aborted by the first
   * registered route.
   *
   * ```js
   * await page.route('**\/*', async route => {
   *   // Runs last.
   *   await route.abort();
   * });
   * await page.route('**\/*', async route => {
   *   // Runs second.
   *   await route.fallback();
   * });
   * await page.route('**\/*', async route => {
   *   // Runs first.
   *   await route.fallback();
   * });
   * ```
   *
   * Registering multiple routes is useful when you want separate handlers to handle different kinds of requests, for
   * example API calls vs page resources or GET requests vs POST requests as in the example below.
   *
   * ```js
   * // Handle GET requests.
   * await page.route('**\/*', async route => {
   *   if (route.request().method() !== 'GET') {
   *     await route.fallback();
   *     return;
   *   }
   *   // Handling GET only.
   *   // ...
   * });
   *
   * // Handle POST requests.
   * await page.route('**\/*', async route => {
   *   if (route.request().method() !== 'POST') {
   *     await route.fallback();
   *     return;
   *   }
   *   // Handling POST only.
   *   // ...
   * });
   * ```
   *
   * One can also modify request while falling back to the subsequent handler, that way intermediate route handler can
   * modify url, method, headers and postData of the request.
   *
   * ```js
   * await page.route('**\/*', async (route, request) => {
   *   // Override headers
   *   const headers = {
   *     ...request.headers(),
   *     foo: 'foo-value', // set "foo" header
   *     bar: undefined, // remove "bar" header
   *   };
   *   await route.fallback({ headers });
   * });
   * ```
   *
   * Use [route.continue([options])](https://playwright.dev/docs/api/class-route#route-continue) to immediately send the
   * request to the network, other matching handlers won't be invoked in that case.
   * @param options
   */
  fallback(options?: {
    /**
     * If set changes the request HTTP headers. Header values will be converted to a string.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * If set changes the request method (e.g. GET or POST).
     */
    method?: string;
    /**
     * If set changes the post data of request.
     */
    postData?: string | Buffer | Serializable;
    /**
     * If set changes the request URL. New URL must have same protocol as original one. Changing the URL won't affect the
     * route matching, all the routes are matched using the original request URL.
     */
    url?: string;
  }): Promise<void>;
  /**
   * Performs the request and fetches result without fulfilling it, so that the response could be modified and then
   * fulfilled.
   *
   * **Usage**
   *
   * ```js
   * await page.route('https://dog.ceo/api/breeds/list/all', async route => {
   *   const response = await route.fetch();
   *   const json = await response.json();
   *   json.message['big_red_dog'] = [];
   *   await route.fulfill({ response, json });
   * });
   * ```
   *
   * **Details**
   *
   * Note that [`headers`](https://playwright.dev/docs/api/class-route#route-fetch-option-headers) option will apply to
   * the fetched request as well as any redirects initiated by it. If you want to only apply
   * [`headers`](https://playwright.dev/docs/api/class-route#route-fetch-option-headers) to the original request, but
   * not to redirects, look into [route.continue([options])](https://playwright.dev/docs/api/class-route#route-continue)
   * instead.
   * @param options
   */
  fetch(options?: {
    /**
     * If set changes the request HTTP headers. Header values will be converted to a string.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * Maximum number of request redirects that will be followed automatically. An error will be thrown if the number is
     * exceeded. Defaults to `20`. Pass `0` to not follow redirects.
     */
    maxRedirects?: number;
    /**
     * Maximum number of times network errors should be retried. Currently only `ECONNRESET` error is retried. Does not
     * retry based on HTTP response codes. An error will be thrown if the limit is exceeded. Defaults to `0` - no retries.
     */
    maxRetries?: number;
    /**
     * If set changes the request method (e.g. GET or POST).
     */
    method?: string;
    /**
     * Allows to set post data of the request. If the data parameter is an object, it will be serialized to json string
     * and `content-type` header will be set to `application/json` if not explicitly set. Otherwise the `content-type`
     * header will be set to `application/octet-stream` if not explicitly set.
     */
    postData?: string | Buffer | Serializable;
    /**
     * Request timeout in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.
     */
    timeout?: number;
    /**
     * If set changes the request URL. New URL must have same protocol as original one.
     */
    url?: string;
  }): Promise<APIResponse>;
  /**
   * Fulfills route's request with given response.
   *
   * **Usage**
   *
   * An example of fulfilling all requests with 404 responses:
   *
   * ```js
   * await page.route('**\/*', async route => {
   *   await route.fulfill({
   *     status: 404,
   *     contentType: 'text/plain',
   *     body: 'Not Found!'
   *   });
   * });
   * ```
   *
   * An example of serving static file:
   *
   * ```js
   * await page.route('**\/xhr_endpoint', route => route.fulfill({ path: 'mock_data.json' }));
   * ```
   *
   * @param options
   */
  fulfill(options?: {
    /**
     * Response body.
     */
    body?: string | Buffer;
    /**
     * If set, equals to setting `Content-Type` response header.
     */
    contentType?: string;
    /**
     * Response headers. Header values will be converted to a string.
     */
    headers?: {
      [key: string]: string;
    };
    /**
     * JSON response. This method will set the content type to `application/json` if not set.
     */
    json?: Serializable;
    /**
     * File path to respond with. The content type will be inferred from file extension. If `path` is a relative path,
     * then it is resolved relative to the current working directory.
     */
    path?: string;
    /**
     * [APIResponse](https://playwright.dev/docs/api/class-apiresponse) to fulfill route's request with. Individual fields
     * of the response (such as headers) can be overridden using fulfill options.
     */
    response?: APIResponse;
    /**
     * Response status code, defaults to `200`.
     */
    status?: number;
  }): Promise<void>;
  /**
   * A request to be routed.
   */
  request(): Request$1;
}
/**
 * The Touchscreen class operates in main-frame CSS pixels relative to the top-left corner of the viewport. Methods on
 * the touchscreen can only be used in browser contexts that have been initialized with `hasTouch` set to true.
 *
 * This class is limited to emulating tap gestures. For examples of other gestures simulated by manually dispatching
 * touch events, see the [emulating legacy touch events](https://playwright.dev/docs/touch-events) page.
 */
interface Touchscreen {
  /**
   * Dispatches a `touchstart` and `touchend` event with a single touch at the position
   * ([`x`](https://playwright.dev/docs/api/class-touchscreen#touchscreen-tap-option-x),[`y`](https://playwright.dev/docs/api/class-touchscreen#touchscreen-tap-option-y)).
   *
   * **NOTE** [touchscreen.tap(x, y)](https://playwright.dev/docs/api/class-touchscreen#touchscreen-tap) will throw if
   * the [`hasTouch`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-has-touch) option of the
   * browser context is false.
   *
   * @param x X coordinate relative to the main frame's viewport in CSS pixels.
   * @param y Y coordinate relative to the main frame's viewport in CSS pixels.
   */
  tap(x: number, y: number): Promise<void>;
}
/**
 * API for collecting and saving Playwright traces. Playwright traces can be opened in
 * [Trace Viewer](https://playwright.dev/docs/trace-viewer) after Playwright script runs.
 *
 * **NOTE** You probably want to
 * [enable tracing in your config file](https://playwright.dev/docs/api/class-testoptions#test-options-trace) instead
 * of using `context.tracing`.
 *
 * The `context.tracing` API captures browser operations and network activity, but it doesn't record test assertions
 * (like `expect` calls). We recommend
 * [enabling tracing through Playwright Test configuration](https://playwright.dev/docs/api/class-testoptions#test-options-trace),
 * which includes those assertions and provides a more complete trace for debugging test failures.
 *
 * Start recording a trace before performing actions. At the end, stop tracing and save it to a file.
 *
 * ```js
 * const browser = await chromium.launch();
 * const context = await browser.newContext();
 * await context.tracing.start({ screenshots: true, snapshots: true });
 * const page = await context.newPage();
 * await page.goto('https://playwright.dev');
 * expect(page.url()).toBe('https://playwright.dev');
 * await context.tracing.stop({ path: 'trace.zip' });
 * ```
 *
 */
interface Tracing$1 {
  /**
   * **NOTE** Use `test.step` instead when available.
   *
   * Creates a new group within the trace, assigning any subsequent API calls to this group, until
   * [tracing.groupEnd()](https://playwright.dev/docs/api/class-tracing#tracing-group-end) is called. Groups can be
   * nested and will be visible in the trace viewer.
   *
   * **Usage**
   *
   * ```js
   * // use test.step instead
   * await test.step('Log in', async () => {
   *   // ...
   * });
   * ```
   *
   * @param name Group name shown in the trace viewer.
   * @param options
   */
  group(name: string, options?: {
    /**
     * Specifies a custom location for the group to be shown in the trace viewer. Defaults to the location of the
     * [tracing.group(name[, options])](https://playwright.dev/docs/api/class-tracing#tracing-group) call.
     */
    location?: {
      file: string;
      line?: number;
      column?: number;
    };
  }): Promise<Disposable>;
  /**
   * Closes the last group created by
   * [tracing.group(name[, options])](https://playwright.dev/docs/api/class-tracing#tracing-group).
   */
  groupEnd(): Promise<void>;
  /**
   * Start tracing.
   *
   * **NOTE** You probably want to
   * [enable tracing in your config file](https://playwright.dev/docs/api/class-testoptions#test-options-trace) instead
   * of using `Tracing.start`.
   *
   * The `context.tracing` API captures browser operations and network activity, but it doesn't record test assertions
   * (like `expect` calls). We recommend
   * [enabling tracing through Playwright Test configuration](https://playwright.dev/docs/api/class-testoptions#test-options-trace),
   * which includes those assertions and provides a more complete trace for debugging test failures.
   *
   * **Usage**
   *
   * ```js
   * await context.tracing.start({ screenshots: true, snapshots: true });
   * const page = await context.newPage();
   * await page.goto('https://playwright.dev');
   * expect(page.url()).toBe('https://playwright.dev');
   * await context.tracing.stop({ path: 'trace.zip' });
   * ```
   *
   * @param options
   */
  start(options?: {
    /**
     * When enabled, the trace is written to an unarchived file that is updated in real time as actions occur, instead of
     * caching changes and archiving them into a zip file at the end. This is useful for live trace viewing during test
     * execution.
     */
    live?: boolean;
    /**
     * If specified, intermediate trace files are going to be saved into the files with the given name prefix inside the
     * [`tracesDir`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-traces-dir) directory
     * specified in
     * [browserType.launch([options])](https://playwright.dev/docs/api/class-browsertype#browser-type-launch). To specify
     * the final trace zip file name, you need to pass `path` option to
     * [tracing.stop([options])](https://playwright.dev/docs/api/class-tracing#tracing-stop) instead.
     */
    name?: string;
    /**
     * Whether to capture screenshots during tracing. Screenshots are used to build a timeline preview.
     */
    screenshots?: boolean;
    /**
     * If this option is true tracing will
     * - capture DOM snapshot on every action
     * - record network activity
     */
    snapshots?: boolean;
    /**
     * Whether to include source files for trace actions.
     */
    sources?: boolean;
    /**
     * Trace name to be shown in the Trace Viewer.
     */
    title?: string;
  }): Promise<void>;
  /**
   * Start a new trace chunk. If you'd like to record multiple traces on the same
   * [BrowserContext](https://playwright.dev/docs/api/class-browsercontext), use
   * [tracing.start([options])](https://playwright.dev/docs/api/class-tracing#tracing-start) once, and then create
   * multiple trace chunks with
   * [tracing.startChunk([options])](https://playwright.dev/docs/api/class-tracing#tracing-start-chunk) and
   * [tracing.stopChunk([options])](https://playwright.dev/docs/api/class-tracing#tracing-stop-chunk).
   *
   * **Usage**
   *
   * ```js
   * await context.tracing.start({ screenshots: true, snapshots: true });
   * const page = await context.newPage();
   * await page.goto('https://playwright.dev');
   *
   * await context.tracing.startChunk();
   * await page.getByText('Get Started').click();
   * // Everything between startChunk and stopChunk will be recorded in the trace.
   * await context.tracing.stopChunk({ path: 'trace1.zip' });
   *
   * await context.tracing.startChunk();
   * await page.goto('http://example.com');
   * // Save a second trace file with different actions.
   * await context.tracing.stopChunk({ path: 'trace2.zip' });
   * ```
   *
   * @param options
   */
  startChunk(options?: {
    /**
     * If specified, intermediate trace files are going to be saved into the files with the given name prefix inside the
     * [`tracesDir`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-traces-dir) directory
     * specified in
     * [browserType.launch([options])](https://playwright.dev/docs/api/class-browsertype#browser-type-launch). To specify
     * the final trace zip file name, you need to pass `path` option to
     * [tracing.stopChunk([options])](https://playwright.dev/docs/api/class-tracing#tracing-stop-chunk) instead.
     */
    name?: string;
    /**
     * Trace name to be shown in the Trace Viewer.
     */
    title?: string;
  }): Promise<void>;
  /**
   * Start recording a HAR (HTTP Archive) of network activity in this context. The HAR file is written to disk when
   * [tracing.stopHar()](https://playwright.dev/docs/api/class-tracing#tracing-stop-har) is called, or when the returned
   * [Disposable](https://playwright.dev/docs/api/class-disposable) is disposed.
   *
   * Only one HAR recording can be active at a time per
   * [BrowserContext](https://playwright.dev/docs/api/class-browsercontext).
   *
   * **Usage**
   *
   * ```js
   * await context.tracing.startHar('trace.har');
   * const page = await context.newPage();
   * await page.goto('https://playwright.dev');
   * await context.tracing.stopHar();
   * ```
   *
   * @param path Path on the filesystem to write the HAR file to. If the file name ends with `.zip`, the HAR is saved as a zip
   * archive with response bodies attached as separate files.
   * @param options
   */
  startHar(path: string, options?: {
    /**
     * Optional setting to control resource content management. If `omit` is specified, content is not persisted. If
     * `attach` is specified, resources are persisted as separate files or entries in the ZIP archive. If `embed` is
     * specified, content is stored inline the HAR file as per HAR specification. Defaults to `attach` for `.zip` output
     * files and to `embed` for all other file extensions.
     */
    content?: "omit" | "embed" | "attach";
    /**
     * When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page,
     * cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to `full`.
     */
    mode?: "full" | "minimal";
    /**
     * Only used together with `content: 'attach'`. When set, response bodies are placed in this directory instead of next
     * to the HAR file. Not compatible with a `.zip` HAR file.
     */
    resourcesDir?: string;
    /**
     * A glob or regex pattern to filter requests that are stored in the HAR. Defaults to none.
     */
    urlFilter?: string | RegExp;
  }): Promise<Disposable>;
  /**
   * Stop tracing.
   * @param options
   */
  stop(options?: {
    /**
     * Export trace into the file with the given path.
     */
    path?: string;
  }): Promise<void>;
  /**
   * Stop the trace chunk. See
   * [tracing.startChunk([options])](https://playwright.dev/docs/api/class-tracing#tracing-start-chunk) for more details
   * about multiple trace chunks.
   * @param options
   */
  stopChunk(options?: {
    /**
     * Export trace collected since the last
     * [tracing.startChunk([options])](https://playwright.dev/docs/api/class-tracing#tracing-start-chunk) call into the
     * file with the given path.
     */
    path?: string;
  }): Promise<void>;
  /**
   * Stop HAR recording and save the HAR file to the path given to
   * [tracing.startHar(path[, options])](https://playwright.dev/docs/api/class-tracing#tracing-start-har).
   */
  stopHar(): Promise<void>;
}
/**
 * When browser context is created with the `recordVideo` option, each page has a video object associated with it.
 *
 * ```js
 * console.log(await page.video().path());
 * ```
 *
 */
interface Video {
  /**
   * Deletes the video file. Will wait for the video to finish if necessary.
   */
  delete(): Promise<void>;
  /**
   * Returns the file system path this video will be recorded to. The video is guaranteed to be written to the
   * filesystem upon closing the browser context. This method throws when connected remotely.
   */
  path(): Promise<string>;
  /**
   * Saves the video to a user-specified path. It is safe to call this method while the video is still in progress, or
   * after the page has closed. This method waits until the page is closed and the video is fully saved.
   * @param path Path where the video should be saved.
   */
  saveAs(path: string): Promise<void>;
}
/**
 * [WebError](https://playwright.dev/docs/api/class-weberror) class represents an unhandled exception thrown in the
 * page. It is dispatched via the
 * [browserContext.on('weberror')](https://playwright.dev/docs/api/class-browsercontext#browser-context-event-web-error)
 * event.
 *
 * ```js
 * // Log all uncaught errors to the terminal
 * context.on('weberror', webError => {
 *   console.log(`Uncaught exception: "${webError.error()}"`);
 * });
 *
 * // Navigate to a page with an exception.
 * await page.goto('data:text/html,<script>throw new Error("Test")</script>');
 * ```
 *
 */
interface WebError {
  /**
   * Unhandled error that was thrown.
   */
  error(): Error;
  location(): {
    /**
     * URL of the resource.
     */
    url: string;
    /**
     * 0-based line number in the resource.
     */
    line: number;
    /**
     * 0-based column number in the resource.
     */
    column: number;
  };
  /**
   * The page that produced this unhandled exception, if any.
   */
  page(): null | Page$1;
}
/**
 * The [WebSocket](https://playwright.dev/docs/api/class-websocket) class represents WebSocket connections within a
 * page. It provides the ability to inspect and manipulate the data being transmitted and received.
 *
 * If you want to intercept or modify WebSocket frames, consider using
 * [WebSocketRoute](https://playwright.dev/docs/api/class-websocketroute).
 */
interface WebSocket {
  /**
   * Fired when the websocket closes.
   */
  on(event: 'close', listener: (webSocket: WebSocket) => any): this;
  /**
   * Fired when the websocket receives a frame.
   */
  on(event: 'framereceived', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Fired when the websocket sends a frame.
   */
  on(event: 'framesent', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Fired when the websocket has an error.
   */
  on(event: 'socketerror', listener: (string: string) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'close', listener: (webSocket: WebSocket) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'framereceived', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'framesent', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Adds an event listener that will be automatically removed after it is triggered once. See `addListener` for more information about this event.
   */
  once(event: 'socketerror', listener: (string: string) => any): this;
  /**
   * Fired when the websocket closes.
   */
  addListener(event: 'close', listener: (webSocket: WebSocket) => any): this;
  /**
   * Fired when the websocket receives a frame.
   */
  addListener(event: 'framereceived', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Fired when the websocket sends a frame.
   */
  addListener(event: 'framesent', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Fired when the websocket has an error.
   */
  addListener(event: 'socketerror', listener: (string: string) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'close', listener: (webSocket: WebSocket) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'framereceived', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'framesent', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  removeListener(event: 'socketerror', listener: (string: string) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'close', listener: (webSocket: WebSocket) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'framereceived', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'framesent', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Removes an event listener added by `on` or `addListener`.
   */
  off(event: 'socketerror', listener: (string: string) => any): this;
  /**
   * Fired when the websocket closes.
   */
  prependListener(event: 'close', listener: (webSocket: WebSocket) => any): this;
  /**
   * Fired when the websocket receives a frame.
   */
  prependListener(event: 'framereceived', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Fired when the websocket sends a frame.
   */
  prependListener(event: 'framesent', listener: (data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => any): this;
  /**
   * Fired when the websocket has an error.
   */
  prependListener(event: 'socketerror', listener: (string: string) => any): this;
  /**
   * Indicates that the web socket has been closed.
   */
  isClosed(): boolean;
  /**
   * Contains the URL of the WebSocket.
   */
  url(): string;
  /**
   * Fired when the websocket closes.
   */
  waitForEvent(event: 'close', optionsOrPredicate?: {
    predicate?: (webSocket: WebSocket) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((webSocket: WebSocket) => boolean | Promise<boolean>)): Promise<WebSocket>;
  /**
   * Fired when the websocket receives a frame.
   */
  waitForEvent(event: 'framereceived', optionsOrPredicate?: {
    predicate?: (data: {
      /**
       * frame payload
       */
      payload: string | Buffer;
    }) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => boolean | Promise<boolean>)): Promise<{
    /**
     * frame payload
     */
    payload: string | Buffer;
  }>;
  /**
   * Fired when the websocket sends a frame.
   */
  waitForEvent(event: 'framesent', optionsOrPredicate?: {
    predicate?: (data: {
      /**
       * frame payload
       */
      payload: string | Buffer;
    }) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((data: {
    /**
     * frame payload
     */
    payload: string | Buffer;
  }) => boolean | Promise<boolean>)): Promise<{
    /**
     * frame payload
     */
    payload: string | Buffer;
  }>;
  /**
   * Fired when the websocket has an error.
   */
  waitForEvent(event: 'socketerror', optionsOrPredicate?: {
    predicate?: (string: string) => boolean | Promise<boolean>;
    timeout?: number;
  } | ((string: string) => boolean | Promise<boolean>)): Promise<string>;
}
/**
 * WebStorage exposes the page's `localStorage` or `sessionStorage` for the current origin via an async,
 * [browser-consistent](https://developer.mozilla.org/en-US/docs/Web/API/Storage) API.
 *
 * Instances are accessed through [page.localStorage](https://playwright.dev/docs/api/class-page#page-local-storage)
 * and [page.sessionStorage](https://playwright.dev/docs/api/class-page#page-session-storage).
 *
 * ```js
 * await page.goto('https://example.com');
 * await page.localStorage.setItem('token', 'abc');
 * const token = await page.localStorage.getItem('token');
 * const all = await page.localStorage.items();
 * await page.localStorage.removeItem('token');
 * await page.localStorage.clear();
 * ```
 *
 */
interface WebStorage {
  /**
   * Removes all items from the storage.
   */
  clear(): Promise<void>;
  /**
   * Returns the value for the given
   * [`name`](https://playwright.dev/docs/api/class-webstorage#web-storage-get-item-option-name) if present.
   * @param name Name of the item to retrieve.
   */
  getItem(name: string): Promise<null | string>;
  /**
   * Returns all items in the storage as name/value pairs.
   */
  items(): Promise<Array<{
    name: string;
    value: string;
  }>>;
  /**
   * Removes the item with the given
   * [`name`](https://playwright.dev/docs/api/class-webstorage#web-storage-remove-item-option-name). No-op if the item
   * is absent.
   * @param name Name of the item to remove.
   */
  removeItem(name: string): Promise<void>;
  /**
   * Sets the value for the given
   * [`name`](https://playwright.dev/docs/api/class-webstorage#web-storage-set-item-option-name). Overwrites any
   * existing value for that name.
   * @param name Name of the item to set.
   * @param value New value for the item.
   */
  setItem(name: string, value: string): Promise<void>;
}
interface LaunchOptions {
  /**
   * **NOTE** Use custom browser args at your own risk, as some of them may break Playwright functionality.
   *
   * Additional arguments to pass to the browser instance. The list of Chromium flags can be found
   * [here](https://peter.sh/experiments/chromium-command-line-switches/).
   */
  args?: Array<string>;
  /**
   * If specified, artifacts (traces, videos, downloads, HAR files, etc.) are saved into this directory. The directory
   * is not cleaned up when the browser closes. If not specified, a temporary directory is used and cleaned up when the
   * browser closes.
   */
  artifactsDir?: string;
  /**
   * Browser distribution channel.
   *
   * Use "chromium" to [opt in to new headless mode](https://playwright.dev/docs/browsers#chromium-new-headless-mode).
   *
   * Use "chrome", "chrome-beta", "chrome-dev", "chrome-canary", "msedge", "msedge-beta", "msedge-dev", or
   * "msedge-canary" to use branded [Google Chrome and Microsoft Edge](https://playwright.dev/docs/browsers#google-chrome--microsoft-edge).
   */
  channel?: string;
  /**
   * Enable Chromium sandboxing. Defaults to `false`.
   */
  chromiumSandbox?: boolean;
  /**
   * If specified, accepted downloads are downloaded into this directory. Otherwise, temporary directory is created and
   * is deleted when browser is closed. In either case, the downloads are deleted when the browser context they were
   * created in is closed.
   */
  downloadsPath?: string;
  env?: {
    [key: string]: string | undefined;
  };
  /**
   * Path to a browser executable to run instead of the bundled one. If
   * [`executablePath`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-executable-path) is
   * a relative path, then it is resolved relative to the current working directory. Note that Playwright only works
   * with the bundled Chromium, Firefox or WebKit, use at your own risk.
   */
  executablePath?: string;
  /**
   * Firefox user preferences. Learn more about the Firefox user preferences at
   * [`about:config`](https://support.mozilla.org/en-US/kb/about-config-editor-firefox).
   *
   * You can also provide a path to a custom [`policies.json` file](https://mozilla.github.io/policy-templates/) via
   * `PLAYWRIGHT_FIREFOX_POLICIES_JSON` environment variable.
   */
  firefoxUserPrefs?: {
    [key: string]: string | number | boolean;
  };
  /**
   * Close the browser process on SIGHUP. Defaults to `true`.
   */
  handleSIGHUP?: boolean;
  /**
   * Close the browser process on Ctrl-C. Defaults to `true`.
   */
  handleSIGINT?: boolean;
  /**
   * Close the browser process on SIGTERM. Defaults to `true`.
   */
  handleSIGTERM?: boolean;
  /**
   * Whether to run browser in headless mode. More details for
   * [Chromium](https://developers.google.com/web/updates/2017/04/headless-chrome) and
   * [Firefox](https://hacks.mozilla.org/2017/12/using-headless-mode-in-firefox/). Defaults to `true`.
   */
  headless?: boolean;
  /**
   * If `true`, Playwright does not pass its own configurations args and only uses the ones from
   * [`args`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-args). If an array is given,
   * then filters out the given default arguments. Dangerous option; use with care. Defaults to `false`.
   */
  ignoreDefaultArgs?: boolean | Array<string>;
  /**
   * Logger sink for Playwright logging.
   * @deprecated The logs received by the logger are incomplete. Please use tracing instead.
   */
  logger?: Logger;
  /**
   * Network proxy settings.
   */
  proxy?: {
    /**
     * Proxy to be used for all requests. HTTP and SOCKS proxies are supported, for example `http://myproxy.com:3128` or
     * `socks5://myproxy.com:3128`. Short form `myproxy.com:3128` is considered an HTTP proxy.
     */
    server: string;
    /**
     * Optional comma-separated domains to bypass proxy, for example `".com, chromium.org, .domain.com"`.
     */
    bypass?: string;
    /**
     * Optional username to use if HTTP proxy requires authentication.
     */
    username?: string;
    /**
     * Optional password to use if HTTP proxy requires authentication.
     */
    password?: string;
  };
  /**
   * Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going
   * on.
   */
  slowMo?: number;
  /**
   * Maximum time in milliseconds to wait for the browser instance to start. Defaults to `30000` (30 seconds). Pass `0`
   * to disable timeout.
   */
  timeout?: number;
  /**
   * If specified, traces are saved into this directory.
   */
  tracesDir?: string;
}
interface ConnectOverCDPOptions {
  /**
   * If specified, browser artifacts (such as traces and downloads) are saved into this directory.
   */
  artifactsDir?: string;
  /**
   * @deprecated Use the first argument instead.
   */
  endpointURL?: string;
  /**
   * Additional HTTP headers to be sent with connect request. Optional.
   */
  headers?: {
    [key: string]: string;
  };
  /**
   * Tells Playwright that it runs on the same host as the CDP server. It will enable certain optimizations that rely
   * upon the file system being the same between Playwright and the Browser.
   */
  isLocal?: boolean;
  /**
   * When true, Playwright will not apply its default overrides to the existing default browser context. Specifically,
   * [`acceptDownloads`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-accept-downloads) is
   * left at the browser's setting, focus emulation is not enabled, and media emulation options (such as
   * [`colorScheme`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-color-scheme),
   * [`reducedMotion`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-reduced-motion),
   * [`forcedColors`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-forced-colors), and
   * [`contrast`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-contrast)) are not applied.
   * Useful when attaching to a user's daily-driver browser where these overrides would interfere with existing browser
   * state. New contexts created via
   * [browser.newContext([options])](https://playwright.dev/docs/api/class-browser#browser-new-context) are not
   * affected. Defaults to `false`.
   */
  noDefaults?: boolean;
  /**
   * Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going
   * on. Defaults to 0.
   */
  slowMo?: number;
  /**
   * Maximum time in milliseconds to wait for the connection to be established. Defaults to `30000` (30 seconds). Pass
   * `0` to disable timeout.
   */
  timeout?: number;
}
interface ConnectOptions {
  /**
   * This option exposes network available on the connecting client to the browser being connected to. Consists of a
   * list of rules separated by comma.
   *
   * Available rules:
   * 1. Hostname pattern, for example: `example.com`, `*.org:99`, `x.*.y.com`, `*foo.org`.
   * 1. IP literal, for example: `127.0.0.1`, `0.0.0.0:99`, `[::1]`, `[0:0::1]:99`.
   * 1. `<loopback>` that matches local loopback interfaces: `localhost`, `*.localhost`, `127.0.0.1`, `[::1]`.
   *
   * Some common examples:
   * 1. `"*"` to expose all network.
   * 1. `"<loopback>"` to expose localhost network.
   * 1. `"*.test.internal-domain,*.staging.internal-domain,<loopback>"` to expose test/staging deployments and
   *    localhost.
   */
  exposeNetwork?: string;
  /**
   * Additional HTTP headers to be sent with web socket connect request. Optional.
   */
  headers?: {
    [key: string]: string;
  };
  /**
   * Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going
   * on. Defaults to 0.
   */
  slowMo?: number;
  /**
   * Maximum time in milliseconds to wait for the connection to be established. Defaults to `0` (no timeout).
   */
  timeout?: number;
}
interface LocatorScreenshotOptions {
  /**
   * When set to `"disabled"`, stops CSS animations, CSS transitions and Web Animations. Animations get different
   * treatment depending on their duration:
   * - finite animations are fast-forwarded to completion, so they'll fire `transitionend` event.
   * - infinite animations are canceled to initial state, and then played over after the screenshot.
   *
   * Defaults to `"allow"` that leaves animations untouched.
   */
  animations?: "disabled" | "allow";
  /**
   * When set to `"hide"`, screenshot will hide text caret. When set to `"initial"`, text caret behavior will not be
   * changed.  Defaults to `"hide"`.
   */
  caret?: "hide" | "initial";
  /**
   * Specify locators that should be masked when the screenshot is taken. Masked elements will be overlaid with a pink
   * box `#FF00FF` (customized by
   * [`maskColor`](https://playwright.dev/docs/api/class-locator#locator-screenshot-option-mask-color)) that completely
   * covers its bounding box. The mask is also applied to invisible elements, see
   * [Matching only visible elements](https://playwright.dev/docs/locators#matching-only-visible-elements) to disable that.
   */
  mask?: Array<Locator>;
  /**
   * Specify the color of the overlay box for masked elements, in
   * [CSS color format](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value). Default color is pink `#FF00FF`.
   */
  maskColor?: string;
  /**
   * Hides default white background and allows capturing screenshots with transparency. Not applicable to `jpeg` images.
   * Defaults to `false`.
   */
  omitBackground?: boolean;
  /**
   * The file path to save the image to. The screenshot type will be inferred from file extension. If
   * [`path`](https://playwright.dev/docs/api/class-locator#locator-screenshot-option-path) is a relative path, then it
   * is resolved relative to the current working directory. If no path is provided, the image won't be saved to the
   * disk.
   */
  path?: string;
  /**
   * The quality of the image, between 0-100. Not applicable to `png` images.
   */
  quality?: number;
  /**
   * When set to `"css"`, screenshot will have a single pixel per each css pixel on the page. For high-dpi devices, this
   * will keep screenshots small. Using `"device"` option will produce a single pixel per each device pixel, so
   * screenshots of high-dpi devices will be twice as large or even larger.
   *
   * Defaults to `"device"`.
   */
  scale?: "css" | "device";
  /**
   * Text of the stylesheet to apply while making the screenshot. This is where you can hide dynamic elements, make
   * elements invisible or change their properties to help you creating repeatable screenshots. This stylesheet pierces
   * the Shadow DOM and applies to the inner frames.
   */
  style?: string;
  /**
   * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
   * option in the config, or by using the
   * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
   * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
   */
  timeout?: number;
  /**
   * Specify screenshot type, defaults to `png`.
   */
  type?: "png" | "jpeg";
}
interface ElementHandleWaitForSelectorOptions {
  /**
   * Defaults to `'visible'`. Can be either:
   * - `'attached'` - wait for element to be present in DOM.
   * - `'detached'` - wait for element to not be present in DOM.
   * - `'visible'` - wait for element to have non-empty bounding box and no `visibility:hidden`. Note that element
   *   without any content or with `display:none` has an empty bounding box and is not considered visible.
   * - `'hidden'` - wait for element to be either detached from DOM, or have an empty bounding box or
   *   `visibility:hidden`. This is opposite to the `'visible'` option.
   */
  state?: "attached" | "detached" | "visible" | "hidden";
  /**
   * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
   * element, the call throws an exception.
   */
  strict?: boolean;
  /**
   * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
   * option in the config, or by using the
   * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
   * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
   */
  timeout?: number;
}
interface BrowserContextOptions {
  /**
   * Whether to automatically download all the attachments. Defaults to `true` where all the downloads are accepted.
   */
  acceptDownloads?: boolean;
  /**
   * When using [page.goto(url[, options])](https://playwright.dev/docs/api/class-page#page-goto),
   * [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route),
   * [page.waitForURL(url[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-url),
   * [page.waitForRequest(urlOrPredicate[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-request),
   * or
   * [page.waitForResponse(urlOrPredicate[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-response)
   * it takes the base URL in consideration by using the
   * [`URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor for building the corresponding URL.
   * Unset by default. Examples:
   * - baseURL: `http://localhost:3000` and navigating to `/bar.html` results in `http://localhost:3000/bar.html`
   * - baseURL: `http://localhost:3000/foo/` and navigating to `./bar.html` results in
   *   `http://localhost:3000/foo/bar.html`
   * - baseURL: `http://localhost:3000/foo` (without trailing slash) and navigating to `./bar.html` results in
   *   `http://localhost:3000/bar.html`
   */
  baseURL?: string;
  /**
   * Toggles bypassing page's Content-Security-Policy. Defaults to `false`.
   */
  bypassCSP?: boolean;
  /**
   * TLS Client Authentication allows the server to request a client certificate and verify it.
   *
   * **Details**
   *
   * An array of client certificates to be used. Each certificate object must have either both `certPath` and `keyPath`,
   * a single `pfxPath`, or their corresponding direct value equivalents (`cert` and `key`, or `pfx`). Optionally,
   * `passphrase` property should be provided if the certificate is encrypted. The `origin` property should be provided
   * with an exact match to the request origin that the certificate is valid for.
   *
   * Client certificate authentication is only active when at least one client certificate is provided. If you want to
   * reject all client certificates sent by the server, you need to provide a client certificate with an `origin` that
   * does not match any of the domains you plan to visit.
   *
   * **NOTE** When using WebKit on macOS, accessing `localhost` will not pick up client certificates. You can make it
   * work by replacing `localhost` with `local.playwright`.
   *
   */
  clientCertificates?: Array<{
    /**
     * Exact origin that the certificate is valid for. Origin includes `https` protocol, a hostname and optionally a port.
     */
    origin: string;
    /**
     * Path to the file with the certificate in PEM format.
     */
    certPath?: string;
    /**
     * Direct value of the certificate in PEM format.
     */
    cert?: Buffer;
    /**
     * Path to the file with the private key in PEM format.
     */
    keyPath?: string;
    /**
     * Direct value of the private key in PEM format.
     */
    key?: Buffer;
    /**
     * Path to the PFX or PKCS12 encoded private key and certificate chain.
     */
    pfxPath?: string;
    /**
     * Direct value of the PFX or PKCS12 encoded private key and certificate chain.
     */
    pfx?: Buffer;
    /**
     * Passphrase for the private key (PEM or PFX).
     */
    passphrase?: string;
  }>;
  /**
   * Emulates [prefers-colors-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
   * media feature, supported values are `'light'` and `'dark'`. See
   * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
   * Passing `null` resets emulation to system defaults. Defaults to `'light'`.
   */
  colorScheme?: null | "light" | "dark" | "no-preference";
  /**
   * Emulates `'prefers-contrast'` media feature, supported values are `'no-preference'`, `'more'`. See
   * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
   * Passing `null` resets emulation to system defaults. Defaults to `'no-preference'`.
   */
  contrast?: null | "no-preference" | "more";
  /**
   * Specify device scale factor (can be thought of as dpr). Defaults to `1`. Learn more about
   * [emulating devices with device scale factor](https://playwright.dev/docs/emulation#devices).
   */
  deviceScaleFactor?: number;
  /**
   * An object containing additional HTTP headers to be sent with every request. Defaults to none.
   */
  extraHTTPHeaders?: {
    [key: string]: string;
  };
  /**
   * Emulates `'forced-colors'` media feature, supported values are `'active'`, `'none'`. See
   * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
   * Passing `null` resets emulation to system defaults. Defaults to `'none'`.
   */
  forcedColors?: null | "active" | "none";
  geolocation?: Geolocation;
  /**
   * Specifies if viewport supports touch events. Defaults to false. Learn more about
   * [mobile emulation](https://playwright.dev/docs/emulation#devices).
   */
  hasTouch?: boolean;
  /**
   * Credentials for [HTTP authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication). If no
   * origin is specified, the username and password are sent to any servers upon unauthorized responses.
   */
  httpCredentials?: HTTPCredentials;
  /**
   * Whether to ignore HTTPS errors when sending network requests. Defaults to `false`.
   */
  ignoreHTTPSErrors?: boolean;
  /**
   * Whether the `meta viewport` tag is taken into account and touch events are enabled. isMobile is a part of device,
   * so you don't actually need to set it manually. Defaults to `false` and is not supported in Firefox. Learn more
   * about [mobile emulation](https://playwright.dev/docs/emulation#ismobile).
   */
  isMobile?: boolean;
  /**
   * Whether or not to enable JavaScript in the context. Defaults to `true`. Learn more about
   * [disabling JavaScript](https://playwright.dev/docs/emulation#javascript-enabled).
   */
  javaScriptEnabled?: boolean;
  /**
   * Specify user locale, for example `en-GB`, `de-DE`, etc. Locale will affect `navigator.language` value,
   * `Accept-Language` request header value as well as number and date formatting rules. Defaults to the system default
   * locale. Learn more about emulation in our [emulation guide](https://playwright.dev/docs/emulation#locale--timezone).
   */
  locale?: string;
  /**
   * Logger sink for Playwright logging.
   * @deprecated The logs received by the logger are incomplete. Please use tracing instead.
   */
  logger?: Logger;
  /**
   * Whether to emulate network being offline. Defaults to `false`. Learn more about
   * [network emulation](https://playwright.dev/docs/emulation#offline).
   */
  offline?: boolean;
  /**
   * A list of permissions to grant to all pages in this context. See
   * [browserContext.grantPermissions(permissions[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions)
   * for more details. Defaults to none.
   */
  permissions?: Array<string>;
  /**
   * Network proxy settings to use with this context. Defaults to none.
   */
  proxy?: {
    /**
     * Proxy to be used for all requests. HTTP and SOCKS proxies are supported, for example `http://myproxy.com:3128` or
     * `socks5://myproxy.com:3128`. Short form `myproxy.com:3128` is considered an HTTP proxy.
     */
    server: string;
    /**
     * Optional comma-separated domains to bypass proxy, for example `".com, chromium.org, .domain.com"`.
     */
    bypass?: string;
    /**
     * Optional username to use if HTTP proxy requires authentication.
     */
    username?: string;
    /**
     * Optional password to use if HTTP proxy requires authentication.
     */
    password?: string;
  };
  /**
   * Enables [HAR](http://www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file.
   * If not specified, the HAR is not recorded. Make sure to await
   * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) for
   * the HAR to be saved.
   */
  recordHar?: {
    /**
     * Optional setting to control whether to omit request content from the HAR. Defaults to `false`. Deprecated, use
     * `content` policy instead.
     */
    omitContent?: boolean;
    /**
     * Optional setting to control resource content management. If `omit` is specified, content is not persisted. If
     * `attach` is specified, resources are persisted as separate files or entries in the ZIP archive. If `embed` is
     * specified, content is stored inline the HAR file as per HAR specification. Defaults to `attach` for `.zip` output
     * files and to `embed` for all other file extensions.
     */
    content?: "omit" | "embed" | "attach";
    /**
     * Path on the filesystem to write the HAR file to. If the file name ends with `.zip`, `content: 'attach'` is used by
     * default.
     */
    path: string;
    /**
     * When set to `minimal`, only record information necessary for routing from HAR. This omits sizes, timing, page,
     * cookies, security and other types of HAR information that are not used when replaying from HAR. Defaults to `full`.
     */
    mode?: "full" | "minimal";
    /**
     * A glob or regex pattern to filter requests that are stored in the HAR. When a
     * [`baseURL`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-base-url) via the context
     * options was provided and the passed URL is a path, it gets merged via the
     * [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor. Defaults to none.
     */
    urlFilter?: string | RegExp;
  };
  /**
   * Enables video recording for all pages into `recordVideo.dir` directory. If not specified videos are not recorded.
   * Make sure to await
   * [browserContext.close([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) for
   * videos to be saved.
   */
  recordVideo?: {
    /**
     * Path to the directory to put videos into. If not specified, the videos will be stored in `artifactsDir` (see
     * [browserType.launch([options])](https://playwright.dev/docs/api/class-browsertype#browser-type-launch) options).
     */
    dir?: string;
    /**
     * Optional dimensions of the recorded videos. If not specified the size will be equal to `viewport` scaled down to
     * fit into 800x800. If `viewport` is not configured explicitly the video size defaults to 800x450. Actual picture of
     * each page will be scaled down if necessary to fit the specified size.
     */
    size?: {
      /**
       * Video frame width.
       */
      width: number;
      /**
       * Video frame height.
       */
      height: number;
    };
    /**
     * If specified, enables visual annotations on interacted elements during video recording.
     */
    showActions?: {
      /**
       * How long each annotation is displayed in milliseconds. Defaults to `500`.
       */
      duration?: number;
      /**
       * Position of the action title overlay. Defaults to `"top-right"`.
       */
      position?: "top-left" | "top" | "top-right" | "bottom-left" | "bottom" | "bottom-right";
      /**
       * Font size of the action title in pixels. Defaults to `24`.
       */
      fontSize?: number;
    };
  };
  /**
   * Emulates `'prefers-reduced-motion'` media feature, supported values are `'reduce'`, `'no-preference'`. See
   * [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details.
   * Passing `null` resets emulation to system defaults. Defaults to `'no-preference'`.
   */
  reducedMotion?: null | "reduce" | "no-preference";
  /**
   * Emulates consistent window screen size available inside web page via `window.screen`. Is only used when the
   * [`viewport`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-viewport) is set.
   */
  screen?: {
    /**
     * page width in pixels.
     */
    width: number;
    /**
     * page height in pixels.
     */
    height: number;
  };
  /**
   * Whether to allow sites to register Service workers. Defaults to `'allow'`.
   * - `'allow'`: [Service Workers](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) can be
   *   registered.
   * - `'block'`: Playwright will block all registration of Service Workers.
   */
  serviceWorkers?: "allow" | "block";
  /**
   * Learn more about [storage state and auth](https://playwright.dev/docs/auth).
   *
   * Populates context with given storage state. This option can be used to initialize context with logged-in
   * information obtained via
   * [browserContext.storageState([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-storage-state).
   */
  storageState?: string | {
    /**
     * Cookies to set for context
     */
    cookies: Array<{
      name: string;
      value: string;
      /**
       * Domain and path are required. For the cookie to apply to all subdomains as well, prefix domain with a dot, like
       * this: ".example.com"
       */
      domain: string;
      /**
       * Domain and path are required
       */
      path: string;
      /**
       * Unix time in seconds.
       */
      expires: number;
      httpOnly: boolean;
      secure: boolean;
      /**
       * sameSite flag
       */
      sameSite: "Strict" | "Lax" | "None";
    }>;
    origins: Array<{
      origin: string;
      /**
       * localStorage to set for context
       */
      localStorage: Array<{
        name: string;
        value: string;
      }>;
    }>;
  };
  /**
   * If set to true, enables strict selectors mode for this context. In the strict selectors mode all operations on
   * selectors that imply single target DOM element will throw when more than one element matches the selector. This
   * option does not affect any Locator APIs (Locators are always strict). Defaults to `false`. See
   * [Locator](https://playwright.dev/docs/api/class-locator) to learn more about the strict mode.
   */
  strictSelectors?: boolean;
  /**
   * Changes the timezone of the context. See
   * [ICU's metaZones.txt](https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1)
   * for a list of supported timezone IDs. Defaults to the system timezone.
   */
  timezoneId?: string;
  /**
   * Specific user agent to use in this context.
   */
  userAgent?: string;
  /**
   * Emulates consistent viewport for each page. Defaults to an 1280x720 viewport. Use `null` to disable the consistent
   * viewport emulation. Learn more about [viewport emulation](https://playwright.dev/docs/emulation#viewport).
   *
   * **NOTE** The `null` value opts out from the default presets, makes viewport depend on the host window size defined
   * by the operating system. It makes the execution of the tests non-deterministic.
   *
   */
  viewport?: null | ViewportSize;
}
interface ViewportSize {
  /**
   * page width in pixels.
   */
  width: number;
  /**
   * page height in pixels.
   */
  height: number;
}
interface HTTPCredentials {
  username: string;
  password: string;
  /**
   * Restrain sending http credentials on specific origin (scheme://host:port).
   */
  origin?: string;
  /**
   * This option only applies to the requests sent from corresponding
   * [APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext) and does not affect requests sent from
   * the browser. `'always'` - `Authorization` header with basic authentication credentials will be sent with the each
   * API request. `'unauthorized` - the credentials are only sent when 401 (Unauthorized) response with
   * `WWW-Authenticate` header is received. Defaults to `'unauthorized'`.
   */
  send?: "unauthorized" | "always";
}
interface Geolocation {
  /**
   * Latitude between -90 and 90.
   */
  latitude: number;
  /**
   * Longitude between -180 and 180.
   */
  longitude: number;
  /**
   * Non-negative accuracy value. Defaults to `0`.
   */
  accuracy?: number;
}
interface Cookie$1 {
  name: string;
  value: string;
  domain: string;
  path: string;
  /**
   * Unix time in seconds.
   */
  expires: number;
  httpOnly: boolean;
  secure: boolean;
  sameSite: "Strict" | "Lax" | "None";
  partitionKey?: string;
}
interface PageWaitForSelectorOptions {
  /**
   * Defaults to `'visible'`. Can be either:
   * - `'attached'` - wait for element to be present in DOM.
   * - `'detached'` - wait for element to not be present in DOM.
   * - `'visible'` - wait for element to have non-empty bounding box and no `visibility:hidden`. Note that element
   *   without any content or with `display:none` has an empty bounding box and is not considered visible.
   * - `'hidden'` - wait for element to be either detached from DOM, or have an empty bounding box or
   *   `visibility:hidden`. This is opposite to the `'visible'` option.
   */
  state?: "attached" | "detached" | "visible" | "hidden";
  /**
   * When true, the call requires selector to resolve to a single element. If given selector resolves to more than one
   * element, the call throws an exception.
   */
  strict?: boolean;
  /**
   * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
   * option in the config, or by using the
   * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
   * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
   */
  timeout?: number;
}
interface PageWaitForFunctionOptions {
  /**
   * If [`polling`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-polling) is `'raf'`, then
   * [`pageFunction`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-expression) is constantly
   * executed in `requestAnimationFrame` callback. If
   * [`polling`](https://playwright.dev/docs/api/class-page#page-wait-for-function-option-polling) is a number, then it
   * is treated as an interval in milliseconds at which the function would be executed. Defaults to `raf`.
   */
  polling?: number | "raf";
  /**
   * Maximum time to wait for in milliseconds. Defaults to `0` - no timeout. The default value can be changed via
   * `actionTimeout` option in the config, or by using the
   * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
   * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
   */
  timeout?: number;
}
interface PageScreenshotOptions {
  /**
   * When set to `"disabled"`, stops CSS animations, CSS transitions and Web Animations. Animations get different
   * treatment depending on their duration:
   * - finite animations are fast-forwarded to completion, so they'll fire `transitionend` event.
   * - infinite animations are canceled to initial state, and then played over after the screenshot.
   *
   * Defaults to `"allow"` that leaves animations untouched.
   */
  animations?: "disabled" | "allow";
  /**
   * When set to `"hide"`, screenshot will hide text caret. When set to `"initial"`, text caret behavior will not be
   * changed.  Defaults to `"hide"`.
   */
  caret?: "hide" | "initial";
  /**
   * An object which specifies clipping of the resulting image.
   */
  clip?: {
    /**
     * x-coordinate of top-left corner of clip area
     */
    x: number;
    /**
     * y-coordinate of top-left corner of clip area
     */
    y: number;
    /**
     * width of clipping area
     */
    width: number;
    /**
     * height of clipping area
     */
    height: number;
  };
  /**
   * When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Defaults to
   * `false`.
   */
  fullPage?: boolean;
  /**
   * Specify locators that should be masked when the screenshot is taken. Masked elements will be overlaid with a pink
   * box `#FF00FF` (customized by
   * [`maskColor`](https://playwright.dev/docs/api/class-page#page-screenshot-option-mask-color)) that completely covers
   * its bounding box. The mask is also applied to invisible elements, see
   * [Matching only visible elements](https://playwright.dev/docs/locators#matching-only-visible-elements) to disable that.
   */
  mask?: Array<Locator>;
  /**
   * Specify the color of the overlay box for masked elements, in
   * [CSS color format](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value). Default color is pink `#FF00FF`.
   */
  maskColor?: string;
  /**
   * Hides default white background and allows capturing screenshots with transparency. Not applicable to `jpeg` images.
   * Defaults to `false`.
   */
  omitBackground?: boolean;
  /**
   * The file path to save the image to. The screenshot type will be inferred from file extension. If
   * [`path`](https://playwright.dev/docs/api/class-page#page-screenshot-option-path) is a relative path, then it is
   * resolved relative to the current working directory. If no path is provided, the image won't be saved to the disk.
   */
  path?: string;
  /**
   * The quality of the image, between 0-100. Not applicable to `png` images.
   */
  quality?: number;
  /**
   * When set to `"css"`, screenshot will have a single pixel per each css pixel on the page. For high-dpi devices, this
   * will keep screenshots small. Using `"device"` option will produce a single pixel per each device pixel, so
   * screenshots of high-dpi devices will be twice as large or even larger.
   *
   * Defaults to `"device"`.
   */
  scale?: "css" | "device";
  /**
   * Text of the stylesheet to apply while making the screenshot. This is where you can hide dynamic elements, make
   * elements invisible or change their properties to help you creating repeatable screenshots. This stylesheet pierces
   * the Shadow DOM and applies to the inner frames.
   */
  style?: string;
  /**
   * Maximum time in milliseconds. Defaults to `0` - no timeout. The default value can be changed via `actionTimeout`
   * option in the config, or by using the
   * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout)
   * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.
   */
  timeout?: number;
  /**
   * Specify screenshot type, defaults to `png`.
   */
  type?: "png" | "jpeg";
}
//#endregion
//#region src/schemas.d.ts
/**
 * browser_goto - Navigate to a URL
 */
declare const gotoInputSchema: z.ZodObject<{
  url: z.ZodString;
  waitUntil: z.ZodOptional<z.ZodEnum<{
    domcontentloaded: "domcontentloaded";
    load: "load";
    networkidle: "networkidle";
  }>>;
  timeout: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
type GotoInput = z.output<typeof gotoInputSchema>;
/**
 * browser_snapshot - Get accessibility tree snapshot
 */
declare const snapshotInputSchema: z.ZodObject<{
  interactiveOnly: z.ZodOptional<z.ZodBoolean>;
  maxDepth: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
type SnapshotInput = z.output<typeof snapshotInputSchema>;
/**
 * browser_click - Click an element
 */
declare const clickInputSchema: z.ZodObject<{
  ref: z.ZodString;
  button: z.ZodOptional<z.ZodEnum<{
    left: "left";
    middle: "middle";
    right: "right";
  }>>;
  clickCount: z.ZodOptional<z.ZodNumber>;
  modifiers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
    Alt: "Alt";
    Control: "Control";
    Meta: "Meta";
    Shift: "Shift";
  }>>>;
  waitUntil: z.ZodOptional<z.ZodEnum<{
    domcontentloaded: "domcontentloaded";
    load: "load";
    networkidle: "networkidle";
  }>>;
  timeout: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
type ClickInput = z.output<typeof clickInputSchema>;
/**
 * browser_type - Type text into an element
 */
declare const typeInputSchema: z.ZodObject<{
  ref: z.ZodString;
  text: z.ZodString;
  clear: z.ZodOptional<z.ZodBoolean>;
  delay: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
type TypeInput = z.output<typeof typeInputSchema>;
/**
 * browser_press - Press a keyboard key
 */
declare const pressInputSchema: z.ZodObject<{
  key: z.ZodString;
  modifiers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
    Alt: "Alt";
    Control: "Control";
    Meta: "Meta";
    Shift: "Shift";
  }>>>;
  waitUntil: z.ZodOptional<z.ZodEnum<{
    domcontentloaded: "domcontentloaded";
    load: "load";
    networkidle: "networkidle";
  }>>;
  timeout: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
type PressInput = z.output<typeof pressInputSchema>;
/**
 * browser_select - Select option from dropdown
 */
declare const selectInputSchema: z.ZodObject<{
  ref: z.ZodString;
  value: z.ZodOptional<z.ZodString>;
  label: z.ZodOptional<z.ZodString>;
  index: z.ZodOptional<z.ZodNumber>;
  waitUntil: z.ZodOptional<z.ZodEnum<{
    domcontentloaded: "domcontentloaded";
    load: "load";
    networkidle: "networkidle";
  }>>;
  timeout: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
type SelectInput = z.output<typeof selectInputSchema>;
/**
 * browser_scroll - Scroll the page or element
 */
declare const scrollInputSchema: z.ZodObject<{
  direction: z.ZodEnum<{
    down: "down";
    left: "left";
    right: "right";
    up: "up";
  }>;
  amount: z.ZodOptional<z.ZodNumber>;
  ref: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type ScrollInput = z.output<typeof scrollInputSchema>;
/**
 * browser_close - Close the browser
 */
declare const closeInputSchema: z.ZodObject<{}, z.core.$strip>;
type CloseInput = z.output<typeof closeInputSchema>;
/**
 * browser_hover - Hover over an element
 */
declare const hoverInputSchema: z.ZodObject<{
  ref: z.ZodString;
}, z.core.$strip>;
type HoverInput = z.output<typeof hoverInputSchema>;
/**
 * browser_back - Go back in browser history
 */
declare const backInputSchema: z.ZodObject<{}, z.core.$strip>;
type BackInput = z.output<typeof backInputSchema>;
/**
 * browser_dialog - Click an element that triggers a dialog and handle it
 */
declare const dialogInputSchema: z.ZodObject<{
  triggerRef: z.ZodString;
  action: z.ZodEnum<{
    accept: "accept";
    dismiss: "dismiss";
  }>;
  text: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type DialogInput = z.output<typeof dialogInputSchema>;
/**
 * browser_wait - Wait for an element or condition
 */
declare const waitInputSchema: z.ZodObject<{
  ref: z.ZodOptional<z.ZodString>;
  state: z.ZodOptional<z.ZodEnum<{
    attached: "attached";
    detached: "detached";
    hidden: "hidden";
    visible: "visible";
  }>>;
  timeout: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
type WaitInput = z.output<typeof waitInputSchema>;
/**
 * browser_tabs - Manage browser tabs
 */
declare const tabsInputSchema: z.ZodObject<{
  action: z.ZodEnum<{
    close: "close";
    list: "list";
    new: "new";
    switch: "switch";
  }>;
  index: z.ZodOptional<z.ZodNumber>;
  url: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type TabsInput = z.output<typeof tabsInputSchema>;
/**
 * browser_drag - Drag an element to another element
 */
declare const dragInputSchema: z.ZodObject<{
  sourceRef: z.ZodOptional<z.ZodString>;
  targetRef: z.ZodOptional<z.ZodString>;
  sourceSelector: z.ZodOptional<z.ZodString>;
  targetSelector: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
type DragInput = z.output<typeof dragInputSchema>;
/**
 * browser_screenshot - Capture a screenshot of the current page
 */
declare const screenshotInputSchema: z.ZodObject<{
  fullPage: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>;
type ScreenshotInput = z.output<typeof screenshotInputSchema>;
/**
 * browser_evaluate - Execute JavaScript in the browser
 */
declare const evaluateInputSchema: z.ZodObject<{
  script: z.ZodString;
  arg: z.ZodOptional<z.ZodUnknown>;
}, z.core.$strip>;
type EvaluateInput = z.output<typeof evaluateInputSchema>;
declare const browserSchemas: {
  readonly goto: z.ZodObject<{
    url: z.ZodString;
    waitUntil: z.ZodOptional<z.ZodEnum<{
      domcontentloaded: "domcontentloaded";
      load: "load";
      networkidle: "networkidle";
    }>>;
    timeout: z.ZodOptional<z.ZodNumber>;
  }, z.core.$strip>;
  readonly snapshot: z.ZodObject<{
    interactiveOnly: z.ZodOptional<z.ZodBoolean>;
    maxDepth: z.ZodOptional<z.ZodNumber>;
  }, z.core.$strip>;
  readonly click: z.ZodObject<{
    ref: z.ZodString;
    button: z.ZodOptional<z.ZodEnum<{
      left: "left";
      middle: "middle";
      right: "right";
    }>>;
    clickCount: z.ZodOptional<z.ZodNumber>;
    modifiers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
      Alt: "Alt";
      Control: "Control";
      Meta: "Meta";
      Shift: "Shift";
    }>>>;
    waitUntil: z.ZodOptional<z.ZodEnum<{
      domcontentloaded: "domcontentloaded";
      load: "load";
      networkidle: "networkidle";
    }>>;
    timeout: z.ZodOptional<z.ZodNumber>;
  }, z.core.$strip>;
  readonly type: z.ZodObject<{
    ref: z.ZodString;
    text: z.ZodString;
    clear: z.ZodOptional<z.ZodBoolean>;
    delay: z.ZodOptional<z.ZodNumber>;
  }, z.core.$strip>;
  readonly press: z.ZodObject<{
    key: z.ZodString;
    modifiers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
      Alt: "Alt";
      Control: "Control";
      Meta: "Meta";
      Shift: "Shift";
    }>>>;
    waitUntil: z.ZodOptional<z.ZodEnum<{
      domcontentloaded: "domcontentloaded";
      load: "load";
      networkidle: "networkidle";
    }>>;
    timeout: z.ZodOptional<z.ZodNumber>;
  }, z.core.$strip>;
  readonly select: z.ZodObject<{
    ref: z.ZodString;
    value: z.ZodOptional<z.ZodString>;
    label: z.ZodOptional<z.ZodString>;
    index: z.ZodOptional<z.ZodNumber>;
    waitUntil: z.ZodOptional<z.ZodEnum<{
      domcontentloaded: "domcontentloaded";
      load: "load";
      networkidle: "networkidle";
    }>>;
    timeout: z.ZodOptional<z.ZodNumber>;
  }, z.core.$strip>;
  readonly scroll: z.ZodObject<{
    direction: z.ZodEnum<{
      down: "down";
      left: "left";
      right: "right";
      up: "up";
    }>;
    amount: z.ZodOptional<z.ZodNumber>;
    ref: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
  readonly close: z.ZodObject<{}, z.core.$strip>;
  readonly hover: z.ZodObject<{
    ref: z.ZodString;
  }, z.core.$strip>;
  readonly back: z.ZodObject<{}, z.core.$strip>;
  readonly dialog: z.ZodObject<{
    triggerRef: z.ZodString;
    action: z.ZodEnum<{
      accept: "accept";
      dismiss: "dismiss";
    }>;
    text: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
  readonly wait: z.ZodObject<{
    ref: z.ZodOptional<z.ZodString>;
    state: z.ZodOptional<z.ZodEnum<{
      attached: "attached";
      detached: "detached";
      hidden: "hidden";
      visible: "visible";
    }>>;
    timeout: z.ZodOptional<z.ZodNumber>;
  }, z.core.$strip>;
  readonly tabs: z.ZodObject<{
    action: z.ZodEnum<{
      close: "close";
      list: "list";
      new: "new";
      switch: "switch";
    }>;
    index: z.ZodOptional<z.ZodNumber>;
    url: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
  readonly drag: z.ZodObject<{
    sourceRef: z.ZodOptional<z.ZodString>;
    targetRef: z.ZodOptional<z.ZodString>;
    sourceSelector: z.ZodOptional<z.ZodString>;
    targetSelector: z.ZodOptional<z.ZodString>;
  }, z.core.$strip>;
  readonly screenshot: z.ZodObject<{
    fullPage: z.ZodOptional<z.ZodBoolean>;
  }, z.core.$strip>;
  readonly evaluate: z.ZodObject<{
    script: z.ZodString;
    arg: z.ZodOptional<z.ZodUnknown>;
  }, z.core.$strip>;
};
//#endregion
//#region src/tools/constants.d.ts
/**
 * Browser Tool Constants
 */
declare const BROWSER_TOOLS: {
  readonly GOTO: 'browser_goto';
  readonly SNAPSHOT: 'browser_snapshot';
  readonly CLICK: 'browser_click';
  readonly TYPE: 'browser_type';
  readonly PRESS: 'browser_press';
  readonly SELECT: 'browser_select';
  readonly SCROLL: 'browser_scroll';
  readonly CLOSE: 'browser_close';
  readonly HOVER: 'browser_hover';
  readonly BACK: 'browser_back';
  readonly DIALOG: 'browser_dialog';
  readonly WAIT: 'browser_wait';
  readonly TABS: 'browser_tabs';
  readonly DRAG: 'browser_drag';
  readonly SCREENSHOT: 'browser_screenshot';
  readonly EVALUATE: 'browser_evaluate';
};
type BrowserToolName = (typeof BROWSER_TOOLS)[keyof typeof BROWSER_TOOLS];
//#endregion
//#region src/types.d.ts
/**
 * AgentBrowser-specific configuration extensions.
 */
interface AgentBrowserConfigExtensions {
  /**
   * Headers passed to chromium.connectOverCDP when using `cdpUrl`.
   * Required for providers like Cloudflare Browser Rendering (Authorization bearer token).
   * Distinct from page `extraHTTPHeaders` / navigation headers.
   */
  cdpHeaders?: Record<string, string>;
  /**
   * Path to a Playwright storage state file (JSON) containing cookies and localStorage.
   * This is a lighter-weight alternative to `profile` — it only persists
   * authentication state, not the full browser profile.
   *
   * You can export storage state from a Playwright session and reuse it later.
   *
   * @example
   * ```ts
   * { storageState: './auth-state.json' }
   * ```
   */
  storageState?: string;
  /**
   * Alpha: opt into browser recording tools.
   *
   * Recording tools are disabled by default. Provide an output directory to add
   * `browser_record` and `browser_record_caption` to this browser's toolset.
   */
  recording?: BrowserRecordingOptions;
  /**
   * Tool names to exclude from the browser toolset.
   * Use this to disable specific tools, e.g. `['browser_screenshot']`
   * to skip the screenshot tool for models that don't support vision.
   *
   * @example
   * ```ts
   * new AgentBrowser({ excludeTools: ['browser_screenshot'] })
   * ```
   */
  excludeTools?: BrowserToolName[];
}
/**
 * Configuration options for AgentBrowser.
 * Extends the base BrowserConfig with agent-browser specific options.
 */
type BrowserConfig = BrowserConfig$1 & AgentBrowserConfigExtensions;
//#endregion
//#region src/thread-manager.d.ts
/**
 * Extended session info for AgentBrowser.
 */
interface AgentBrowserSession extends ThreadSession {
  /** For 'thread' scope: dedicated browser manager instance */
  manager?: BrowserManager;
}
/**
 * Configuration for AgentBrowserThreadManager.
 */
interface AgentBrowserThreadManagerConfig extends ThreadManagerConfig {
  /** Browser configuration for launching new instances */
  browserConfig: BrowserConfig;
  /** Function to resolve CDP URL (may be async) */
  resolveCdpUrl?: (cdpUrl: string | (() => string | Promise<string>)) => Promise<string>;
  /** Callback when a new browser manager is created for a thread */
  onBrowserCreated?: (manager: BrowserManager, threadId: string) => void;
}
/**
 * Factory for custom thread managers (e.g. Firecrawl-hosted CDP per session).
 * Defaults to {@link AgentBrowserThreadManager} when omitted.
 */
type CreateAgentBrowserThreadManager = (config: AgentBrowserThreadManagerConfig) => AgentBrowserThreadManager;
/**
 * Thread manager implementation for AgentBrowser.
 *
 * Supports two scope modes:
 * - 'shared': All threads share the shared browser manager
 * - 'thread': Each thread gets a dedicated browser manager instance
 */
declare class AgentBrowserThreadManager extends ThreadManager<BrowserManager> {
  protected readonly browserConfig: BrowserConfig;
  private readonly resolveCdpUrl?;
  protected readonly onBrowserCreated?: (manager: BrowserManager, threadId: string) => void;
  constructor(config: AgentBrowserThreadManagerConfig);
  /**
   * Get the page for a specific thread, creating session if needed.
   */
  getPageForThread(threadId?: string): Promise<Page$1>;
  /**
   * Create a new session for a thread.
   */
  protected createSession(threadId: string): Promise<AgentBrowserSession>;
  /**
   * Restore browser state (multiple tabs) to a browser manager.
   */
  protected restoreBrowserState(manager: BrowserManager, state: BrowserState): Promise<void>;
  /**
   * Get the browser manager for a specific session.
   */
  protected getManagerForSession(session: AgentBrowserSession): BrowserManager;
  /**
   * Destroy a session and clean up resources.
   */
  protected doDestroySession(session: AgentBrowserSession): Promise<void>;
  /**
   * Destroy all sessions (called during browser close).
   * doDestroySession handles closing individual browser managers.
   */
  destroyAllSessions(): Promise<void>;
}
//#endregion
//#region src/agent-browser.d.ts
/** AgentBrowser accepts an optional thread-manager factory (see {@link CreateAgentBrowserThreadManager}). */
type AgentBrowserConfig = BrowserConfig & {
  createThreadManager?: CreateAgentBrowserThreadManager;
};
/**
 * AgentBrowser - Browser automation using agent-browser (vercel-labs/agent-browser)
 *
 * Uses snapshot + refs pattern for LLM-friendly element targeting.
 */
declare class AgentBrowser extends MastraBrowser {
  readonly id: string;
  readonly name: string;
  readonly provider: string;
  /** Shared browser manager instance (for 'shared' scope) - narrowed type from base class */
  protected sharedManager: BrowserManager | null;
  private defaultTimeout;
  /** Pending PID lookups — awaited in disconnect handlers to avoid racing. */
  private pidLookups;
  private readonly pendingCloseReasons;
  private readonly activeUrlChangeSources;
  /** Thread manager - narrowed type from base class */
  protected threadManager: AgentBrowserThreadManager;
  private browserConfig;
  constructor(config?: AgentBrowserConfig);
  /**
   * Ensure browser is ready and thread session exists.
   * Creates a new page/context for the current thread if needed.
   *
   * For 'thread' scope, we need to create the thread session BEFORE
   * calling super.ensureReady() because the base class's ensureReady() will
   * call checkBrowserAlive(), which needs at least one thread browser to exist.
   */
  ensureReady(): Promise<void>;
  /**
   * Get the browser manager for the current thread.
   * Delegates to ThreadManager for scope handling.
   */
  getManagerForThread(threadId?: string): Promise<BrowserManager>;
  protected doLaunch(): Promise<void>;
  /**
   * Set up close event listeners for 'shared' scope browser.
   * This handles the case where the shared browser is closed externally.
   */
  protected setupCloseListenerForSharedScope(manager: BrowserManager): void;
  protected doClose(): Promise<void>;
  closeThreadSession(threadId: string): Promise<void>;
  /**
   * Check if the browser is still alive by verifying the page is connected.
   * Called by base class ensureReady() to detect externally closed browsers.
   */
  protected checkBrowserAlive(): Promise<boolean>;
  /**
   * Get the browser tools for this provider.
   * Returns 16 flat tools for browser automation.
   */
  getTools(): Record<string, Tool$1<any, any>>;
  private browserStateKey;
  markBrowserCloseReason(reason: 'agent' | 'user' | 'process_restart' | 'error', threadId?: string): void;
  private markActiveUrlChangeSource;
  private getCloseReason;
  private getActiveUrlChangeSource;
  private rememberClosedBrowserState;
  /**
   * Get the page for the current thread.
   * Uses thread scope if enabled, otherwise returns the shared page.
   * @param explicitThreadId - Optional thread ID to use instead of getCurrentThread()
   *                           Use this to avoid race conditions in concurrent tool calls.
   */
  private getPage;
  /**
   * Get the active page for a thread (implements abstract method from base class).
   * Returns null if no page is available, unlike getPage which throws.
   */
  protected getActivePage(threadId?: string): Promise<Page$1 | null>;
  /**
   * Set up close event listener for a thread's browser manager.
   * This handles the case where a thread's browser is closed externally.
   */
  private setupCloseListenerForThread;
  /**
   * Create an error response from an exception.
   * Extends base class to add agent-browser specific error handling.
   */
  protected createErrorFromException(error: unknown, context: string): BrowserToolError;
  private requireLocator;
  private getScrollInfo;
  /**
   * Get the current page URL without launching the browser.
   * @param threadId - Optional thread ID for thread-isolated browsers
   * @returns The current URL string, or null if browser is not running
   */
  getCurrentUrl(threadId?: string): Promise<string | null>;
  /**
   * Navigate to a URL (simple form). Used internally for restoring state on relaunch.
   */
  navigateTo(url: string): Promise<void>;
  /**
   * Get the current browser state (all tabs and active tab index).
   */
  getBrowserState(threadId?: string): Promise<BrowserState | null>;
  /**
   * Get browser state for a thread (implements abstract method from base class).
   * Sync version that uses existing manager lookup without creating sessions.
   */
  protected getBrowserStateForThread(threadId?: string): BrowserState | null;
  /**
   * Get browser state from a specific manager instance.
   */
  private getBrowserStateForManager;
  /**
   * Get all open tabs with their URLs and titles.
   */
  getTabState(threadId?: string): Promise<BrowserTabState[]>;
  /**
   * Get the active tab index.
   */
  getActiveTabIndex(threadId?: string): Promise<number>;
  /**
   * Export the current browser session's storage state (cookies, localStorage) to a JSON file.
   * This can later be loaded via the `storageState` config option to restore the session.
   *
   * @param path - File path to save the storage state JSON
   * @param threadId - Optional thread ID (defaults to current thread)
   */
  exportStorageState(path: string, threadId?: string): Promise<void>;
  goto(input: GotoInput, threadId?: string): Promise<{
    success: true;
    url: string;
    title: string;
    hint: string;
  } | BrowserToolError>;
  snapshot(input: SnapshotInput, threadId?: string): Promise<{
    success: true;
    snapshot: string;
    url: string;
    title: string;
    elementCount: number;
    scroll: string;
    hint?: string;
  } | BrowserToolError>;
  screenshot(input: ScreenshotInput, threadId?: string): Promise<{
    base64: string;
    url: string;
    title: string;
  } | BrowserToolError>;
  /**
   * Start a `waitForNavigation` wait (when `waitUntil` is set) and immediately
   * attach a noop catch handler so a navigation timeout/rejection can't become
   * an unhandled rejection (crashing the process) while the caller's action is
   * still pending. Callers should still `await` the returned promise to observe
   * the original error.
   */
  private startNavigationWait;
  click(input: ClickInput, threadId?: string): Promise<{
    success: true;
    url: string;
    hint: string;
  } | BrowserToolError>;
  type(input: TypeInput, threadId?: string): Promise<{
    success: true;
    value: string;
    url: string;
    hint: string;
  } | BrowserToolError>;
  press(input: PressInput, threadId?: string): Promise<{
    success: true;
    url: string;
    hint: string;
  } | BrowserToolError>;
  select(input: SelectInput, threadId?: string): Promise<{
    success: true;
    selected: string[];
    url: string;
    hint: string;
  } | BrowserToolError>;
  scroll(input: ScrollInput, threadId?: string): Promise<{
    success: true;
    position: {
      x: number;
      y: number;
    };
    scroll: string;
    hint: string;
  } | BrowserToolError>;
  hover(input: HoverInput, threadId?: string): Promise<{
    success: true;
    url: string;
    hint: string;
  } | BrowserToolError>;
  back(threadId?: string): Promise<{
    success: true;
    url: string;
    title: string;
    hint: string;
  } | BrowserToolError>;
  dialog(input: DialogInput, threadId?: string): Promise<{
    success: true;
    action: 'accept' | 'dismiss';
    dialogType: string;
    message: string;
    hint: string;
  } | BrowserToolError>;
  wait(input: WaitInput, threadId?: string): Promise<{
    success: true;
    hint: string;
  } | BrowserToolError>;
  tabs(input: TabsInput, threadId?: string): Promise<{
    success: true;
    tabs?: unknown[];
    index?: number;
    url?: string;
    title?: string;
    remaining?: number;
    hint: string;
  } | BrowserToolError>;
  drag(input: DragInput, threadId?: string): Promise<{
    success: true;
    url: string;
    hint: string;
  } | BrowserToolError>;
  evaluate(input: EvaluateInput, threadId?: string): Promise<{
    success: true;
    result: unknown;
    hint: string;
  } | BrowserToolError>;
  closeBrowser(): Promise<{
    success: true;
    hint: string;
  } | BrowserToolError>;
  startScreencast(_options?: ScreencastOptions): Promise<ScreencastStream>;
  injectMouseEvent(event: MouseEventParams, threadId?: string): Promise<void>;
  injectKeyboardEvent(event: KeyboardEventParams, threadId?: string): Promise<void>;
}
//#endregion
//#region src/utils.d.ts
/**
 * Get the browser process PID from a BrowserManager instance via CDP.
 *
 * Playwright doesn't expose the browser process PID directly, so we use CDP's
 * SystemInfo.getProcessInfo to get it. This works for both regular browser
 * launches and persistent contexts (profiles).
 *
 * Returns undefined if the PID can't be retrieved (e.g., browser not running).
 */
declare function getBrowserPid(manager: BrowserManager): Promise<number | undefined>;
//#endregion
//#region src/tools/index.d.ts
/**
 * Creates all browser tools bound to an AgentBrowser instance.
 * The browser is lazily initialized on first tool use.
 */
declare function createAgentBrowserTools(browser: AgentBrowser): Record<string, Tool$1<any, any>>;
//#endregion
export { AgentBrowser, type AgentBrowserConfig, type AgentBrowserSession, AgentBrowserThreadManager, type AgentBrowserThreadManagerConfig, BROWSER_TOOLS, type BackInput, type BrowserConfig, type BrowserToolName, type ClickInput, type CloseInput, type CreateAgentBrowserThreadManager, type DialogInput, type DragInput, type EvaluateInput, type GotoInput, type HoverInput, type PressInput, type ScrollInput, type SelectInput, type SnapshotInput, type TabsInput, type TypeInput, type WaitInput, backInputSchema, browserSchemas, clickInputSchema, closeInputSchema, createAgentBrowserTools, dialogInputSchema, dragInputSchema, evaluateInputSchema, getBrowserPid, gotoInputSchema, hoverInputSchema, pressInputSchema, scrollInputSchema, selectInputSchema, snapshotInputSchema, tabsInputSchema, typeInputSchema, waitInputSchema };
//# sourceMappingURL=index.d.ts.map