import type { BrowserUserContext } from './browser.js';
import type { BrowsingContextBrowsingContext } from './browsing_context.js';
import type { EmptyResult, JsUint } from './common.js';
export type EmulationCommand = EmulationSetForcedColorsModeThemeOverride | EmulationSetGeolocationOverride | EmulationSetLocaleOverride | EmulationSetNetworkConditions | EmulationSetScreenOrientationOverride | EmulationSetScreenSettingsOverride | EmulationSetScriptingEnabled | EmulationSetScrollbarTypeOverride | EmulationSetTimezoneOverride | EmulationSetTouchOverride | EmulationSetUserAgentOverride;
export type EmulationResult = EmulationSetForcedColorsModeThemeOverrideResult | EmulationSetGeolocationOverrideResult | EmulationSetLocaleOverrideResult | EmulationSetScreenOrientationOverrideResult | EmulationSetScriptingEnabledResult | EmulationSetScrollbarTypeOverrideResult | EmulationSetTimezoneOverrideResult | EmulationSetTouchOverrideResult | EmulationSetUserAgentOverrideResult;
export interface EmulationSetForcedColorsModeThemeOverride {
    method: "emulation.setForcedColorsModeThemeOverride";
    params: EmulationSetForcedColorsModeThemeOverrideParameters;
}
export interface EmulationSetForcedColorsModeThemeOverrideParameters {
    theme: EmulationForcedColorsModeTheme | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationForcedColorsModeTheme = "light" | "dark";
export type EmulationSetForcedColorsModeThemeOverrideResult = EmptyResult;
export interface EmulationSetGeolocationOverride {
    method: "emulation.setGeolocationOverride";
    params: EmulationSetGeolocationOverrideParameters;
}
export type EmulationSetGeolocationOverrideParameters = ({
    coordinates: EmulationGeolocationCoordinates | null;
} | {
    error: EmulationGeolocationPositionError;
}) & {
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
};
export interface EmulationGeolocationCoordinates {
    latitude: number;
    longitude: number;
    /**
     * @default 1
     */
    accuracy?: number;
    /**
     * @default null
     */
    altitude?: number | null;
    /**
     * @default null
     */
    altitudeAccuracy?: number | null;
    /**
     * @default null
     */
    heading?: number | null;
    /**
     * @default null
     */
    speed?: number | null;
}
export interface EmulationGeolocationPositionError {
    type: "positionUnavailable";
}
export type EmulationSetGeolocationOverrideResult = EmptyResult;
export interface EmulationSetLocaleOverride {
    method: "emulation.setLocaleOverride";
    params: EmulationSetLocaleOverrideParameters;
}
export interface EmulationSetLocaleOverrideParameters {
    locale: string | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationSetLocaleOverrideResult = EmptyResult;
export interface EmulationSetNetworkConditions {
    method: "emulation.setNetworkConditions";
    params: EmulationSetNetworkConditionsParameters;
}
export interface EmulationSetNetworkConditionsParameters {
    networkConditions: EmulationNetworkConditions | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationNetworkConditions = EmulationNetworkConditionsOffline;
export interface EmulationNetworkConditionsOffline {
    type: "offline";
}
export type EmulationSetNetworkConditionsResult = EmptyResult;
export interface EmulationSetScreenSettingsOverride {
    method: "emulation.setScreenSettingsOverride";
    params: EmulationSetScreenSettingsOverrideParameters;
}
export interface EmulationScreenArea {
    width: JsUint;
    height: JsUint;
}
export interface EmulationSetScreenSettingsOverrideParameters {
    screenArea: EmulationScreenArea | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationSetScreenSettingsOverrideResult = EmptyResult;
export interface EmulationSetScreenOrientationOverride {
    method: "emulation.setScreenOrientationOverride";
    params: EmulationSetScreenOrientationOverrideParameters;
}
export type EmulationScreenOrientationNatural = "portrait" | "landscape";
export type EmulationScreenOrientationType = "portrait-primary" | "portrait-secondary" | "landscape-primary" | "landscape-secondary";
export interface EmulationScreenOrientation {
    natural: EmulationScreenOrientationNatural;
    type: EmulationScreenOrientationType;
}
export interface EmulationSetScreenOrientationOverrideParameters {
    screenOrientation: EmulationScreenOrientation | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationSetScreenOrientationOverrideResult = EmptyResult;
export interface EmulationSetUserAgentOverride {
    method: "emulation.setUserAgentOverride";
    params: EmulationSetUserAgentOverrideParameters;
}
export interface EmulationSetUserAgentOverrideParameters {
    userAgent: string | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationSetUserAgentOverrideResult = EmptyResult;
export interface EmulationSetScriptingEnabled {
    method: "emulation.setScriptingEnabled";
    params: EmulationSetScriptingEnabledParameters;
}
export interface EmulationSetScriptingEnabledParameters {
    enabled: false | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationSetScriptingEnabledResult = EmptyResult;
export interface EmulationSetScrollbarTypeOverride {
    method: "emulation.setScrollbarTypeOverride";
    params: EmulationSetScrollbarTypeOverrideParameters;
}
export interface EmulationSetScrollbarTypeOverrideParameters {
    scrollbarType: "classic" | "overlay" | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationSetScrollbarTypeOverrideResult = EmptyResult;
export interface EmulationSetTimezoneOverride {
    method: "emulation.setTimezoneOverride";
    params: EmulationSetTimezoneOverrideParameters;
}
export interface EmulationSetTimezoneOverrideParameters {
    timezone: string | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationSetTimezoneOverrideResult = EmptyResult;
export interface EmulationSetTouchOverride {
    method: "emulation.setTouchOverride";
    params: EmulationSetTouchOverrideParameters;
}
export interface EmulationSetTouchOverrideParameters {
    maxTouchPoints: JsUint | null;
    contexts?: BrowsingContextBrowsingContext[];
    userContexts?: BrowserUserContext[];
}
export type EmulationSetTouchOverrideResult = EmptyResult;
export declare class Emulation {
    private readonly bidi;
    private constructor();
    static create(driver: unknown): Promise<Emulation>;
    setForcedColorsModeThemeOverride(params: EmulationSetForcedColorsModeThemeOverrideParameters): Promise<void>;
    setGeolocationOverride(params: EmulationSetGeolocationOverrideParameters): Promise<void>;
    setLocaleOverride(params: EmulationSetLocaleOverrideParameters): Promise<void>;
    setNetworkConditions(params: EmulationSetNetworkConditionsParameters): Promise<void>;
    setScreenOrientationOverride(params: EmulationSetScreenOrientationOverrideParameters): Promise<void>;
    setScreenSettingsOverride(params: EmulationSetScreenSettingsOverrideParameters): Promise<void>;
    setScriptingEnabled(params: EmulationSetScriptingEnabledParameters): Promise<void>;
    setScrollbarTypeOverride(params: EmulationSetScrollbarTypeOverrideParameters): Promise<void>;
    setTimezoneOverride(params: EmulationSetTimezoneOverrideParameters): Promise<void>;
    setTouchOverride(params: EmulationSetTouchOverrideParameters): Promise<void>;
    setUserAgentOverride(params: EmulationSetUserAgentOverrideParameters): Promise<void>;
}
