import type { WebDriver as WebDriverOptions, WebdriverIO as WebDriverIOOptions, Connection as ConnectionOptions } from './Options.js';
type JSONLike = {
    [property: string]: JSONLike;
} | readonly JSONLike[] | string | number | boolean | null;
type RemoveAppiumPrefix<T> = {
    [K in keyof T as K extends `appium:${infer R}` ? R : K]: T[K];
};
export type PageLoadingStrategy = 'none' | 'eager' | 'normal';
export type LoggingPreferenceType = 'OFF' | 'SEVERE' | 'WARNING' | 'INFO' | 'CONFIG' | 'FINE' | 'FINER' | 'FINEST' | 'ALL';
export interface LoggingPreferences {
    browser?: LoggingPreferenceType;
    driver?: LoggingPreferenceType;
    server?: LoggingPreferenceType;
    client?: LoggingPreferenceType;
}
export type Timeouts = Record<'script' | 'pageLoad' | 'implicit', number>;
export type ProxyTypes = 'pac' | 'noproxy' | 'autodetect' | 'system' | 'manual';
export interface ProxyObject {
    proxyType?: ProxyTypes;
    proxyAutoconfigUrl?: string;
    ftpProxy?: string;
    ftpProxyPort?: number;
    httpProxy?: string;
    httpProxyPort?: number;
    sslProxy?: string;
    sslProxyPort?: number;
    socksProxy?: string;
    socksProxyPort?: number;
    socksVersion?: string;
    socksUsername?: string;
    socksPassword?: string;
    noProxy?: string[];
}
declare global {
    namespace WebdriverIO {
        interface Capabilities extends VendorExtensions, ConnectionOptions {
            /**
             * Identifies the user agent.
             */
            browserName?: string;
            /**
             * Identifies the version of the user agent.
             */
            browserVersion?: string;
            /**
             * Identifies the operating system of the endpoint node.
             */
            platformName?: string;
            /**
             * Indicates whether untrusted and self-signed TLS certificates are implicitly trusted on navigation for the duration of the session.
             */
            acceptInsecureCerts?: boolean;
            /**
             * Defines the current session’s page load strategy.
             */
            pageLoadStrategy?: PageLoadingStrategy;
            /**
             * Defines the current session’s proxy configuration.
             */
            proxy?: ProxyObject;
            /**
             * Indicates whether the remote end supports all of the resizing and repositioning commands.
             */
            setWindowRect?: boolean;
            /**
             * Describes the timeouts imposed on certain session operations.
             */
            timeouts?: Timeouts;
            /**
             * Defines the current session’s strict file interactability.
             */
            strictFileInteractability?: boolean;
            /**
             * Describes the current session’s user prompt handler. Defaults to the dismiss and notify state.
             */
            unhandledPromptBehavior?: string;
            /**
             * WebDriver clients opt in to a bidirectional connection by requesting a capability with the name "webSocketUrl" and value true.
             */
            webSocketUrl?: boolean;
        }
    }
}
export interface W3CCapabilities {
    alwaysMatch: WebdriverIO.Capabilities;
    firstMatch: WebdriverIO.Capabilities[];
}
export type RequestedStandaloneCapabilities = W3CCapabilities | WebdriverIO.Capabilities;
export type RequestedMultiremoteCapabilities = {
    [instanceName: string]: WebDriverIOOptions & WithRequestedCapabilities;
};
/**
 * Configuration object for the `webdriver` package
 */
export type RemoteConfig = WebDriverOptions & WithRequestedCapabilities;
/**
 * Configuration object for the `webdriverio` package
 */
export type WebdriverIOConfig = WebDriverIOOptions & WithRequestedCapabilities;
export type WebdriverIOMultiremoteConfig = WebDriverIOOptions & {
    capabilities: RequestedMultiremoteCapabilities;
};
/**
 * A type referencing all possible capability types when using Testrunner
 * e.g. everything a user can provide in the `capabilities` property
 */
export type TestrunnerCapabilities = RequestedStandaloneCapabilities[] | RequestedMultiremoteCapabilities | RequestedMultiremoteCapabilities[];
/**
 * The capabilities that will be resolved within a worker instance, e.g. either
 * a single set of capabilities or a single multiremote instance
 */
export type ResolvedTestrunnerCapabilities = WebdriverIO.Capabilities | Record<string, WebdriverIO.Capabilities>;
/**
 * The `capabilities` property is a required property when using the `remote` method.
 */
export interface WithRequestedCapabilities {
    /**
     * Defines the capabilities you want to run in your WebDriver session. Check out the
     * documentation on [Capabilities](https://webdriver.io/docs/capabilities) for more details.
     *
     * @example
     * ```js
     * // WebDriver session
     * const browser = remote({
     *   capabilities: {
     *     browserName: 'chrome',
     *     browserVersion: 86
     *     platformName: 'Windows 10'
     *   }
     * })
     *
     * // multiremote session
     * const browser = remote({
     *   capabilities: {
     *     browserA: {
     *       browserName: 'chrome',
     *       browserVersion: 86
     *       platformName: 'Windows 10'
     *     },
     *     browserB: {
     *       browserName: 'firefox',
     *       browserVersion: 74
     *       platformName: 'Mac OS X'
     *     }
     *   }
     * })
     * ```
     */
    capabilities: RequestedStandaloneCapabilities;
}
/**
 * The `capabilities` property is a required property when defining a testrunner configuration.
 */
export interface WithRequestedTestrunnerCapabilities {
    /**
     * Defines a set of capabilities you want to run in your WebDriver session. Check out the
     * documentation on [Capabilities](https://webdriver.io/docs/capabilities) for more details.
     *
     * @example
     * ```js
     * // wdio.conf.js
     * export const config = {
     *   // define parallel running capabilities
     *   capabilities: [{
     *     browserName: 'safari',
     *     platformName: 'MacOS 10.13',
     *     ...
     *   }, {
     *     browserName: 'microsoftedge',
     *     platformName: 'Windows 10',
     *     ...
     *   }, {
     *     // using alwaysMatch and firstMatch
     *   alwaysMatch: {
     *     browserName: 'chrome',
     *     browserVersion: 86
     *      // ...
     *   },
     *   firstMatch: [{
     *     browserName: 'chrome',
     *      // ...
     *   }]
     * }
     * ```
     */
    capabilities: RequestedStandaloneCapabilities[];
}
/**
 * The `capabilities` property is a required property when using the `remote` method to initiate a multiremote session.
 */
export interface WithRequestedMultiremoteCapabilities {
    /**
     * Defines the capabilities for each Multiremote client. Check out the
     * documentation on [Capabilities](https://webdriver.io/docs/capabilities) for more details.
     *
     * @example
     * ```
     * // wdio.conf.js
     * export const config = {
     *   // multiremote example
     *   capabilities: {
     *     browserA: {
     *       browserName: 'chrome',
     *       browserVersion: 86
     *       platformName: 'Windows 10'
     *     },
     *     browserB: {
     *       browserName: 'firefox',
     *       browserVersion: 74
     *       platformName: 'Mac OS X'
     *     }
     *   }
     * })
     * ```
     * // or with parallel multiremote sessions
     * ```
     * // wdio.conf.js
     * export const config = {
     *   capabilities: [{
     *     browserA: {
     *       port: 4444,
     *       capabilities: {
     *         browserName: 'chrome',
     *         browserVersion: 86
     *         platformName: 'Windows 10'
     *       }
     *     },
     *     browserB: {
     *       port: 4444,
     *       capabilities: {
     *         browserName: 'firefox',
     *         browserVersion: 74
     *         platformName: 'Mac OS X'
     *       }
     *     }
     *   }, {
     *     browserA: {
     *       port: 4444,
     *       capabilities: {
     *         browserName: 'chrome',
     *         browserVersion: 86
     *         platformName: 'Windows 10'
     *       }
     *     },
     *     browserB: {
     *       port: 4444,
     *       capabilities: {
     *         browserName: 'firefox',
     *         browserVersion: 74
     *         platformName: 'Mac OS X'
     *       }
     *     }
     *   }]
     * })
     * ```
     */
    capabilities: RequestedMultiremoteCapabilities | RequestedMultiremoteCapabilities[];
}
export interface VendorExtensions extends EdgeCapabilities, AppiumCapabilities, WebdriverIOCapabilities, WebdriverIO.WDIOVSCodeServiceOptions, AppiumXCUITestCapabilities, AppiumAndroidCapabilities {
    'appium:options'?: AppiumOptions;
    'selenoid:options'?: SelenoidOptions;
    'moon:options'?: MoonOptions;
    'tb:options'?: TestingbotCapabilities;
    'sauce:options'?: SauceLabsCapabilities;
    'sauce:visual'?: SauceLabsVisualCapabilities;
    'experitest:accessKey'?: string;
    'LT:Options'?: LambdaTestCapabilities;
    'lt:options'?: LambdaTestCapabilities;
    'bstack:options'?: BrowserStackCapabilities;
    'browserstack.local'?: boolean;
    'browserstack.accessibility'?: boolean;
    'browserstack.accessibilityOptions'?: {
        [key: string]: any;
    };
    /**
     * @private
     */
    'browserstack.wdioService'?: string;
    'browserstack.buildIdentifier'?: string;
    'browserstack.localIdentifier'?: string;
    'browserstack.testhubBuildUuid'?: string;
    'browserstack.buildProductMap'?: {
        [key: string]: boolean;
    };
    'goog:chromeOptions'?: ChromeOptions;
    'moz:firefoxOptions'?: FirefoxOptions;
    'moz:debuggerAddress'?: string | boolean;
    'ms:edgeOptions'?: MicrosoftEdgeOptions;
    'ms:edgeChromium'?: MicrosoftEdgeOptions;
    'ms:experimental-webdriver'?: boolean;
    'ms:waitForAppLaunch'?: string;
    'safari.options'?: {
        [name: string]: any;
    };
    /**
     * Selenium 4.0 Specific
     */
    'se:cdp'?: string;
}
export type AppiumOptions = RemoveAppiumPrefix<AppiumCapabilities & AppiumXCUITestCapabilities & AppiumAndroidCapabilities>;
export interface WebdriverIOCapabilities {
    /**
     * process id of driver attached to given session
     */
    'wdio:driverPID'?: number;
    'wdio:chromedriverOptions'?: WebdriverIO.ChromedriverOptions;
    'wdio:safaridriverOptions'?: WebdriverIO.SafaridriverOptions;
    'wdio:geckodriverOptions'?: WebdriverIO.GeckodriverOptions;
    'wdio:edgedriverOptions'?: WebdriverIO.EdgedriverOptions;
    /**
    * Maximum number of total parallel running workers (per capability)
    */
    'wdio:maxInstances'?: number;
    /**
    * Define specs for test execution. You can either specify a glob
    * pattern to match multiple files at once or wrap a glob or set of
    * paths into an array to run them within a single worker process.
    */
    'wdio:specs'?: string[];
    /**
     * Exclude specs from test execution.
     */
    'wdio:exclude'?: string[];
    /**
     * If flag is set to `true` WebdriverIO will not automatically opt-in
     * to the WebDriver BiDi protocol. This is useful if you want to use
     * the WebDriver protocol only.
     */
    'wdio:enforceWebDriverClassic'?: boolean;
}
export interface ChromeOptions {
    /**
     * List of command-line arguments to use when starting Chrome. Arguments with an
     * associated value should be separated by a '=' sign (e.g., `['start-maximized', 'user-data-dir=/tmp/temp_profile']`).
     * See here for a list of Chrome arguments.
     */
    args?: string[];
    /**
     * Path to the Chrome executable to use (on Mac OS X, this should be the actual binary,
     * not just the app. e.g., '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome')
     */
    binary?: string;
    /**
     * A list of Chrome extensions to install on startup. Each item in the list should
     * be a base-64 encoded packed Chrome extension (.crx)
     */
    extensions?: string[];
    /**
     * A dictionary with each entry consisting of the name of the preference and its value.
     * These preferences are applied to the Local State file in the user data folder.
     */
    localState?: {
        [name: string]: any;
    };
    /**
     * If false, Chrome will be quit when ChromeDriver is killed, regardless of whether
     * the session is quit. If true, Chrome will only be quit if the session is quit
     * (or closed). Note, if true, and the session is not quit, ChromeDriver cannot clean
     * up the temporary user data directory that the running Chrome instance is using.
     */
    detach?: boolean;
    /**
     * An address of a Chrome debugger server to connect to, in the form of `<hostname/ip:port>`,
     * e.g. '127.0.0.1:38947'
     */
    debuggerAddress?: string;
    /**
     * List of Chrome command line switches to exclude that ChromeDriver by default passes
     * when starting Chrome.  Do not prefix switches with --.
     */
    excludeSwitches?: string[];
    /**
     * Directory to store Chrome minidumps . (Supported only on Linux.)
     */
    minidumpPath?: string;
    /**
     * A dictionary with either a value for "deviceName", or values for "deviceMetrics" and
     * "userAgent". Refer to Mobile Emulation for more information.
     */
    mobileEmulation?: {
        userAgent?: string;
        deviceName?: string;
        deviceMetrics?: {
            width?: number;
            height?: number;
            pixelRatio?: number;
            touch?: boolean;
        };
    };
    /**
     * An optional dictionary that specifies performance logging preferences. See
     * [Chromedriver docs](http://chromedriver.chromium.org/capabilities) for
     * more information.
     */
    perfLoggingPrefs?: {
        /**
         * Whether or not to collect events from Network domain.
         * @default true
         */
        enableNetwork?: boolean;
        /**
         * Whether or not to collect events from Page domain.
         * @default true
         */
        enablePage?: boolean;
        /**
         * A comma-separated string of Chrome tracing categories for which trace events
         * should be collected. An unspecified or empty string disables tracing.
         * @default ''
         */
        tracingCategories?: string;
        /**
         * The requested number of milliseconds between DevTools trace buffer
         * usage events. For example, if 1000, then once per second, DevTools
         * will report how full the trace buffer is. If a report indicates the
         * buffer usage is 100%, a warning will be issued.
         * @default 1000
         */
        bufferUsageReportingInterval?: number;
    };
    /**
     * A dictionary with each entry consisting of the name of the preference and its value.
     * These preferences are only applied to the user profile in use. See the 'Preferences'
     * file in Chrome's user data directory for examples.
     */
    prefs?: Record<string, JSONLike>;
    /**
     * A list of window types that will appear in the list of window handles. For access
     * to <webview> elements, include "webview" in this list.
     */
    windowTypes?: string[];
    /**
     * The package name of the Chrome browser to run on Android (e.g. 'com.android.chrome').
     * When set, chromedriver will connect to the browser on Android over ADB
     * instead of launching a desktop Chrome.
     */
    androidPackage?: string;
    /**
     * Serial number of the Android device to use (as reported by `adb devices`).
     */
    androidDeviceSerial?: string;
    /**
     * The activity name for the Android activity to launch.
     */
    androidActivity?: string;
}
/**
 * Chromium Edge
 */
interface MicrosoftEdgeOptions extends ChromeOptions {
}
export type FirefoxLogLevels = 'trace' | 'debug' | 'config' | 'info' | 'warn' | 'error' | 'fatal';
export interface FirefoxLogObject {
    level: FirefoxLogLevels;
}
export interface FirefoxOptions {
    debuggerAddress?: string;
    binary?: string;
    args?: string[];
    profile?: string;
    log?: FirefoxLogObject;
    prefs?: {
        [name: string]: string[] | string | number | boolean;
    };
    /**
     * The package name of the Firefox browser to run on Android (e.g. 'org.mozilla.fenix').
     * When set, geckodriver will connect to Firefox on Android over ADB
     * instead of launching a desktop Firefox.
     */
    androidPackage?: string;
    /**
     * Serial number of the Android device to use (as reported by `adb devices`).
     */
    androidDeviceSerial?: string;
    /**
     * The activity name for the Android activity to launch.
     */
    androidActivity?: string;
}
export interface SelenoidOptions {
    enableVNC?: boolean;
    screenResolution?: string;
    enableVideo?: boolean;
    videoName?: string;
    videoScreenSize?: string;
    videoFrameRate?: number;
    videoCodec?: string;
    enableLog?: boolean;
    logName?: string;
    name?: string;
    sessionTimeout?: string;
    timeZone?: string;
    env?: string[];
    applicationContainers?: string[];
    hostsEntries?: string[];
    dnsServers?: string[];
    additionalNetworks?: string[];
    labels?: Map<string, string>;
    skin?: string;
    s3KeyPattern?: string;
}
export type MoonMobileDeviceOrientation = 'portrait' | 'vertical' | 'landscape' | 'horizontal';
export interface MoonOptions extends SelenoidOptions {
    mobileDevice?: {
        deviceName: string;
        orientation: MoonMobileDeviceOrientation;
    };
    logLevel?: string;
}
export interface EdgeCapabilities {
    'ms:inPrivate'?: boolean;
    'ms:extensionPaths'?: string[];
    'ms:startPage'?: string;
}
/**
 * Appium General W3C Capabilities
 *
 * @see https://appium.io/docs/en/latest/guides/caps/
 */
export interface AppiumCapabilities {
    /**
     * Which automation engine to use.
     *
     * Acceptable values:
     * + 'Appium' (default)
     * + 'UiAutomator2' for Android
     * + 'Espresso' for Android
     * + 'UiAutomator1' for Android
     * + 'XCUITest' or 'Instruments' for iOS
     * + 'YouiEngine' for application built with You.i Engine
     */
    'appium:automationName'?: string;
    /**
     * Which mobile OS platform to use.
     *
     * Acceptable values:
     * + 'iOS'
     * + 'Android'
     * + 'FirefoxOS'
     */
    'appium:platformName'?: string;
    /**
     * Expected mobile OS version, eg: '7.1', '4.4' etc.
     */
    'appium:platformVersion'?: string;
    /**
     * The kind of mobile device or emulator to use, for each platform, it accept different kind of values.
     *
     * ### For iOS, it could be:
     *
     * + Simulator name, eg: 'iPhone Simulator', 'iPad Simulator', 'iPhone Retina 4-inch'.
     * + Instruments name, which comes from 'instruments -s devices' command.
     * + xctrace device name, which comes from 'xcrun xctrace list devices' command. (since Xcode 12)
     *
     * ### For Android, this capability is currently ignored, though it remains required.
     * Note: This document is written with appium 1.22.1 release, this behavior may changed later.
     */
    'appium:deviceName'?: string;
    /**
     * The absolute local path or remote http URL to a .ipa file (IOS), .app folder (IOS Simulator), .apk file (Android)
     * or [.apks file (Android App Bundle)](https://github.com/appium/appium-uiautomator2-driver/blob/master/docs/android-appbundle.md),
     * or a .zip file containing one of these.
     *
     * Appium will attempt to install this app binary on the appropriate device first.
     * Note that this capability is not required for Android if you specify appPackage and appActivity capabilities.
     * UiAutomator2 and XCUITest allow to start the session without app or appPackage.
     */
    'appium:app'?: string;
    /**
     * The id of the app to be tested. eg: 'com.android.chrome'.
     */
    'appium:appPackage'?: string;
    'appium:appWaitActivity'?: string;
    'appium:newCommandTimeout'?: number;
    'appium:language'?: string;
    'appium:locale'?: string;
    'appium:animationCoolOffTimeout'?: number;
    /**
     * iOS Unique Device Identifier
     */
    'appium:udid'?: string;
    'appium:orientation'?: string;
    'appium:autoWebview'?: boolean;
    'appium:noReset'?: boolean;
    'appium:fullReset'?: boolean;
    'appium:eventTimings'?: boolean;
    'appium:enablePerformanceLogging'?: boolean;
    'appium:printPageSourceOnFindFailure'?: boolean;
    'appium:nativeWebTap'?: boolean;
    /**
     * Users as directConnect feature by the server
     * https://appiumpro.com/editions/86-connecting-directly-to-appium-hosts-in-distributed-environments
     */
    'appium:directConnectProtocol'?: string;
    'appium:directConnectHost'?: string;
    'appium:directConnectPort'?: number;
    'appium:directConnectPath'?: string;
    /**
     * Windows-specific capability: Please see https://github.com/appium/appium-windows-driver#usage
     * This is a hexadecimal handle of an existing application top level window to attach to. Either this
     * capability or 'appium:app' must be provided on session startup.
     */
    'appium:appTopLevelWindow'?: string;
    /**
     * https://appium.io/docs/en/latest/guides/settings/#initializing-settings-via-capabilities
     */
    'appium:settings'?: Record<string, any>;
}
/**
 * Appium Android Only Capabilities
 *
 * @see https://github.com/appium/appium-uiautomator2-driver#capabilities
 */
export interface AppiumAndroidCapabilities {
    'appium:appiumVersion'?: string;
    'appium:appActivity'?: string;
    'appium:appPackage'?: string;
    'appium:appWaitActivity'?: string;
    'appium:appWaitPackage'?: string;
    'appium:appWaitDuration'?: number;
    'appium:deviceReadyTimeout'?: number;
    'appium:allowTestPackages'?: boolean;
    'appium:androidCoverage'?: string;
    'appium:androidCoverageEndIntent'?: string;
    'appium:androidDeviceReadyTimeout'?: number;
    'appium:androidInstallTimeout'?: number;
    'appium:androidInstallPath'?: string;
    'appium:adbPort'?: number;
    'appium:systemPort'?: number;
    'appium:remoteAdbHost'?: string;
    'appium:androidDeviceSocket'?: string;
    'appium:avd'?: string;
    'appium:avdLaunchTimeout'?: number;
    'appium:avdReadyTimeout'?: number;
    'appium:avdArgs'?: string;
    'appium:useKeystore'?: boolean;
    'appium:keystorePath'?: string;
    'appium:keystorePassword'?: string;
    'appium:keyAlias'?: string;
    'appium:keyPassword'?: string;
    'appium:chromedriverExecutable'?: string;
    'appium:chromedriverArgs'?: string[];
    'appium:chromedriverExecutableDir'?: string;
    'appium:chromedriverChromeMappingFile'?: string;
    'appium:chromedriverUseSystemExecutable'?: boolean;
    'appium:autoWebviewTimeout'?: number;
    'appium:chromedriverPort'?: number;
    'appium:chromedriverPorts'?: (number | number[])[];
    'appium:intentAction'?: string;
    'appium:intentCategory'?: string;
    'appium:intentFlags'?: string;
    'appium:optionalIntentArguments'?: string;
    'appium:dontStopAppOnReset'?: boolean;
    'appium:unicodeKeyboard'?: boolean;
    'appium:resetKeyboard'?: boolean;
    'appium:noSign'?: boolean;
    'appium:ignoreUnimportantViews'?: boolean;
    'appium:disableAndroidWatchers'?: boolean;
    'appium:recreateChromeDriverSessions'?: boolean;
    'appium:nativeWebScreenshot'?: boolean;
    'appium:androidScreenshotPath'?: string;
    'appium:autoGrantPermissions'?: boolean;
    'appium:networkSpeed'?: string;
    'appium:gpsEnabled'?: boolean;
    'appium:isHeadless'?: boolean;
    'appium:adbExecTimeout'?: number;
    'appium:localeScript'?: string;
    'appium:skipDeviceInitialization'?: boolean;
    'appium:chromedriverDisableBuildCheck'?: boolean;
    'appium:skipUnlock'?: boolean;
    'appium:unlockType'?: string;
    'appium:unlockKey'?: string;
    'appium:autoLaunch'?: boolean;
    'appium:skipLogcatCapture'?: boolean;
    'appium:uninstallOtherPackages'?: string;
    'appium:disableWindowAnimation'?: boolean;
    'appium:otherApps'?: string | string[];
    'appium:uiautomator2ServerLaunchTimeout'?: number;
    'appium:uiautomator2ServerInstallTimeout'?: number;
    'appium:skipServerInstallation'?: boolean;
    'appium:espressoServerLaunchTimeout'?: number;
    'appium:disableSuppressAccessibilityService'?: boolean;
    'appium:hideKeyboard'?: boolean;
    'appium:autoWebviewName'?: string;
    'appium:uiautomator2ServerReadTimeout'?: number;
    'appium:appWaitForLaunch'?: boolean;
    'appium:remoteAppsCacheLimit'?: number;
    'appium:enforceAppInstall'?: boolean;
    'appium:clearDeviceLogsOnStart'?: boolean;
    'appium:buildToolsVersion'?: string;
    'appium:suppressKillServer'?: boolean;
    'appium:ignoreHiddenApiPolicyError'?: boolean;
    'appium:mockLocationApp'?: string;
    'appium:logcatFormat'?: string;
    'appium:logcatFilterSpecs'?: string;
    'appium:allowDelayAdb'?: boolean;
    'appium:avdEnv'?: {
        [key: string]: string;
    };
    'appium:unlockStrategy'?: string;
    'appium:unlockSuccessTimeout'?: number;
    'appium:webviewDevtoolsPort'?: number;
    'appium:ensureWebviewsHavePages'?: boolean;
    'appium:enableWebviewDetailsCollection'?: boolean;
    'appium:extractChromeAndroidPackageFromContextName'?: boolean;
    'appium:showChromedriverLog'?: boolean;
    'appium:chromeOptions'?: {
        [key: string]: any;
    };
    'appium:chromeLoggingPrefs'?: {
        [key: string]: any;
    };
    'appium:userProfile'?: number;
}
/**
 * Appium xcuitest Capabilities
 *
 * @see https://appium.github.io/appium-xcuitest-driver/latest/reference/capabilities/
 */
export interface AppiumXCUITestCapabilities {
    'appium:platformName'?: string;
    'appium:browserName'?: string;
    'appium:app'?: string;
    'appium:calendarFormat'?: string;
    'appium:bundleId'?: string;
    'appium:launchTimeout'?: number;
    'appium:udid'?: string;
    'appium:appName'?: string;
    'appium:waitForAppScript'?: string;
    'appium:sendKeyStrategy'?: string;
    'appium:screenshotWaitTimeout'?: number;
    'appium:interKeyDelay'?: number;
    'appium:nativeInstrumentsLib'?: boolean;
    'appium:autoAcceptAlerts'?: boolean;
    'appium:autoDismissAlerts'?: boolean;
    'appium:nativeWebTap'?: boolean;
    'appium:safariInitialUrl'?: string;
    'appium:safariAllowPopups'?: boolean;
    'appium:safariIgnoreFraudWarning'?: boolean;
    'appium:safariOpenLinksInBackground'?: boolean;
    'appium:safariShowFullResponse'?: boolean;
    'appium:keepKeyChains'?: boolean;
    'appium:locationServicesEnabled'?: boolean;
    'appium:locationServicesAuthorized'?: boolean;
    'appium:resetLocationService'?: boolean;
    'appium:localizableStringsDir'?: string;
    'appium:processArguments'?: string | AppiumXCUIProcessArguments;
    'appium:showIOSLog'?: boolean;
    'appium:webviewConnectRetries'?: number;
    'appium:clearSystemFiles'?: boolean;
    'appium:customSSLCert'?: string;
    'appium:webkitResponseTimeout'?: number;
    'appium:webkitDebugProxyPort'?: number;
    'appium:remoteDebugProxy'?: string;
    'appium:enablePerformanceLogging'?: boolean;
    'appium:enableAsyncExecuteFromHttps'?: boolean;
    'appium:fullContextList'?: boolean;
    'appium:ignoreAboutBlankUrl'?: boolean;
    'appium:skipLogCapture'?: boolean;
    'appium:deviceName'?: string;
    'appium:showXcodeLog'?: boolean;
    'appium:wdaLocalPort'?: number;
    'appium:wdaBaseUrl'?: string;
    'appium:iosInstallPause'?: number;
    'appium:xcodeConfigFile'?: string;
    'appium:xcodeOrgId'?: string;
    'appium:xcodeSigningId'?: string;
    'appium:keychainPath'?: string;
    'appium:keychainPassword'?: string;
    'appium:bootstrapPath'?: string;
    'appium:agentPath'?: string;
    'appium:tapWithShortPressDuration'?: number;
    'appium:scaleFactor'?: string;
    'appium:usePrebuiltWDA'?: boolean;
    'appium:usePreinstalledWDA'?: boolean;
    'appium:webDriverAgentUrl'?: string;
    'appium:derivedDataPath'?: string;
    'appium:launchWithIDB'?: boolean;
    'appium:useNewWDA'?: boolean;
    'appium:wdaLaunchTimeout'?: number;
    'appium:wdaConnectionTimeout'?: number;
    'appium:updatedWDABundleId'?: string;
    'appium:resetOnSessionStartOnly'?: boolean;
    'appium:commandTimeouts'?: string | AppiumXCUICommandTimeouts;
    'appium:wdaStartupRetries'?: number;
    'appium:wdaStartupRetryInterval'?: number;
    'appium:prebuildWDA'?: boolean;
    'appium:connectHardwareKeyboard'?: boolean;
    'appium:forceTurnOnSoftwareKeyboardSimulator'?: boolean;
    'appium:simulatorPasteboardAutomaticSync'?: string;
    'appium:simulatorDevicesSetPath'?: string;
    'appium:calendarAccessAuthorized'?: boolean;
    'appium:useSimpleBuildTest'?: boolean;
    'appium:waitForQuiescence'?: boolean;
    'appium:maxTypingFrequency'?: number;
    'appium:nativeTyping'?: boolean;
    'appium:simpleIsVisibleCheck'?: boolean;
    'appium:shouldUseSingletonTestManager'?: boolean;
    'appium:isHeadless'?: boolean;
    'appium:autoGrantPermissions'?: boolean;
    'appium:useXctestrunFile'?: boolean;
    'appium:absoluteWebLocations'?: boolean;
    'appium:simulatorWindowCenter'?: string;
    'appium:simulatorStartupTimeout'?: number;
    'appium:simulatorTracePointer'?: boolean;
    'appium:useJSONSource'?: boolean;
    'appium:enforceFreshSimulatorCreation'?: boolean;
    'appium:shutdownOtherSimulators'?: boolean;
    'appium:keychainsExcludePatterns'?: string;
    'appium:showSafariConsoleLog'?: boolean;
    'appium:showSafariNetworkLog'?: boolean;
    'appium:safariGarbageCollect'?: boolean;
    'appium:safariGlobalPreferences'?: AppiumXCUISafariGlobalPreferences;
    'appium:safariLogAllCommunication'?: boolean;
    'appium:safariLogAllCommunicationHexDump'?: boolean;
    'appium:safariSocketChunkSize'?: number;
    'appium:mjpegServerPort'?: number;
    'appium:reduceMotion'?: boolean;
    'appium:mjpegScreenshotUrl'?: string;
    'appium:permissions'?: string;
    'appium:screenshotQuality'?: number;
    'appium:wdaEventloopIdleDelay'?: number;
    'appium:otherApps'?: string | string[];
    'appium:includeSafariInWebviews'?: boolean;
    'appium:additionalWebviewBundleIds'?: Array<string>;
    'appium:webviewAtomWaitTimeout'?: number;
    'appium:webviewConnectTimeout'?: number;
    'appium:iosSimulatorLogsPredicate'?: string;
    'appium:appPushTimeout'?: number;
    'appium:nativeWebTapStrict'?: boolean;
    'appium:safariWebInspectorMaxFrameLength'?: number;
    'appium:allowProvisioningDeviceRegistration'?: boolean;
    'appium:waitForIdleTimeout'?: number;
    'appium:resultBundlePath'?: string;
    'appium:resultBundleVersion'?: number;
    'appium:safariIgnoreWebHostnames'?: string;
    'appium:includeDeviceCapsToSessionInfo'?: boolean;
    'appium:disableAutomaticScreenshots'?: boolean;
    'appium:shouldTerminateApp'?: boolean;
    'appium:forceAppLaunch'?: boolean;
    'appium:useNativeCachingStrategy'?: boolean;
    'appium:appInstallStrategy'?: string;
    /**
     * Windows Application Driver capabilities
     */
    'appium:appArguments'?: string;
}
export interface AppiumXCUISafariGlobalPreferences {
    [key: string]: any;
}
export interface AppiumXCUIProcessArguments {
    args?: Array<string>;
    env?: {
        [key: string]: any;
    };
}
export interface AppiumXCUICommandTimeouts {
    [key: string]: any;
}
/**
 * see also https://docs.saucelabs.com/dev/test-configuration-options
 */
export interface SauceLabsCapabilities {
    /**
     * Desktop Browser Capabilities: Sauce-Specific – Optional
     * see https://docs.saucelabs.com/dev/test-configuration-options/#desktop-browser-capabilities-sauce-specific--optional
     */
    /**
     * Allows you to specify the ChromeDriver version you want to use for your tests.
     * The default version of ChromeDriver when no value is specified depends on the version of Chrome used.
     * As of Chrome 73, the major version of the driver and the browser must match.
     *
     * Desktop Virtual Devices only.
     *
     * For a list of ChromeDriver versions, see chromedriver versions list.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#chromedriverversion
     * @see https://chromedriver.storage.googleapis.com/index.html
     */
    chromedriverVersion?: string;
    /**
     * Specifies the Microsoft Edge driver version you want to use for your tests.
     *
     * Desktop Virtual Devices only.
     *
     * For a list of edgedriver versions, see the Microsoft Edge Driver website.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#edgedriverversion
     * @see https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
     */
    edgedriverVersion?: string;
    /**
     * Specifies the Firefox GeckoDriver version.
     * The default geckodriver version varies based on the version of Firefox specified.
     *
     * Desktop Virtual Devices only.
     *
     * For a list of geckodriver versions and the Firefox versions they support, see geckodriver Supported Platforms.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#geckodriverversion
     * @see https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html
     */
    geckodriverVersion?: string;
    /**
     * Specifies the Internet Explorer Driver version. If no version is specified, it defaults to 2.53.1.
     *
     * Desktop Virtual Devices only.
     *
     * For a list of IE Driver versions, see Internet Explorer Driver Server CHANGELOG.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#iedriverversion
     * @see https://raw.githubusercontent.com/SeleniumHQ/selenium/trunk/cpp/iedriverserver/CHANGELOG
     */
    iedriverVersion?: string;
    /**
     * Specifies the Selenium version you want to use for your test.
     * Sauce Labs will default to different versions, depending on the age of the browser and platform,
     * and whether or not you're initializing a session with valid W3C syntax.
     *
     * Desktop Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#seleniumversion
     */
    seleniumVersion?: string;
    /**
     * Allows the browser to communicate directly with servers without going through a proxy.
     * By default, Sauce routes traffic from Internet Explorer and Safari through an HTTP proxy server
     * so that HTTPS connections with self-signed certificates will work.
     *
     * The proxy server can cause problems for some users, and this setting allows you to avoid it.
     *
     * Any test run with a Sauce Connect tunnel has to use the proxy and this flag will be ignored.
     *
     * Desktop Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#avoidproxy
     */
    avoidProxy?: boolean;
    /**
     * Enables Extended Debugging features. This applies to Firefox and Chrome only.
     * It records HAR files and console logs for both of these browsers.
     * In Chrome, it also enables network interception, network and cpu throttling as well as access to network logs
     * during the session. It is required to be true for capturePerformance. The default value is false.
     *
     * Desktop Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#extendeddebugging
     * @see https://docs.saucelabs.com/insights/debug/
     */
    extendedDebugging?: boolean;
    /**
     * Enables Performance Capture feature.
     * Sauce Performance Testing can be enabled by setting both extendedDebugging and capturePerformance to true.
     * Default value is false.
     *
     * Desktop Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#captureperformance
     * @see https://docs.saucelabs.com/performance/
     */
    capturePerformance?: boolean;
    /**
     * Specifies the screen resolution to be used during your test session.
     * Default screen resolution for Sauce tests is 1024x768.
     *
     * Desktop Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#screenresolution
     */
    screenResolution?: string;
    /**
     * Sets command timeout in seconds.
     * As a safety measure to prevent Selenium crashes from making your tests run indefinitely,
     * we limit how long Selenium can take to run a command in our browsers.
     * This is set to 300 seconds by default. The maximum command timeout value allowed is 600 seconds.
     *
     * Desktop Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#commandtimeout
     */
    commandTimeout?: number;
    /**
     * Sets idle test timeout in seconds.
     * As a safety measure to prevent tests from running too long after something has gone wrong,
     * we limit how long a browser can wait for a test to send a new command.
     * This is set to 90 seconds by default and limited to a maximum value of 1000 seconds.
     *
     * Desktop Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#idletimeout
     */
    idleTimeout?: number;
    /**
     * Mobile App Appium Capabilities: Sauce-Specific – Optional
     * see https://docs.saucelabs.com/dev/test-configuration-options/#mobile-app-appium-capabilities-sauce-specific--optional
     */
    /**
     * Specifies the Appium driver version you want to use.
     * For most use cases, setting the appiumVersion is unnecessary because Sauce Labs defaults to the version that supports the broadest number of device combinations.
     * Sauce Labs advises against setting this property unless you need to test a particular Appium feature or patch.
     *
     * Virtual and Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#appiumversion
     */
    appiumVersion?: string;
    /**
     * Specifies the orientation of the virtual skin and screen during the test.
     *
     * Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#deviceorientation
     */
    deviceOrientation?: 'portrait' | 'landscape';
    /**
     * If your app creates an extra log then you can use the customLogFiles to store those additional logs in the "Logs" tab of the executed automated session.
     * It is created in the form of a list of search filters that enumerate after an app test to locate text files to upload as logs.
     * Files are uploaded with the .log extension appended. The search paths are rooted at the application under test.
     *
     * Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#customlogfiles
     */
    customLogFiles?: string[];
    /**
     * By default, our emulator uses software rendering to handle graphics for maximum compatibility.
     * This involves the CPU calculating how everything looks on your app's screen.
     * However, this could lead to an emulator crash when testing apps with intricate or heavy graphical elements.
     * To mitigate this, use the hardware rendering option by specifying "android.gpu.mode"="hardware" in your test capabilities.
     *
     * Android Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#androidgpumode
     */
    'android.gpu.mode'?: 'software' | 'hardware';
    /**
     * Android allows apps to use the full screen, hiding the status bar and navigation bar.
     * This is called "immersive mode". When you run an Android test, the device will show a popup asking if you want to allow the app to use immersive mode.
     * This popup can interfere with your test, and by default we disable it.
     * If you want to enable it, set disableImmersiveModePopUp to false.
     *
     * Android Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#disableimmersivemodepopup
     */
    disableImmersiveModePopUp?: boolean;
    /**
     * Sets up the device pin code for the automated test session.
     * This capability sets your device in the state required for your application to launch successfully.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#disableimmersivemodepopup
     */
    setupDeviceLock?: boolean;
    /**
     * Use this capability to select only tablet devices for testing.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#tabletonly
     */
    tabletOnly?: boolean;
    /**
     * Use this capability to select only phone devices for testing.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#phoneonly
     */
    phoneOnly?: boolean;
    /**
     * Use this capability to select only private devices for testing.
     *
     * Private Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#privatedevicesonly
     */
    privateDevicesOnly?: boolean;
    /**
     * Use this capability to select only public devices for testing.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#publicdevicesonly
     */
    publicDevicesOnly?: boolean;
    /**
     * Use this capability to allocate only devices connected to a carrier network.
     *
     * Private Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#carrierconnectivityonly
     */
    carrierConnectivityOnly?: boolean;
    /**
     * Keeps the device allocated to you between test sessions and bypasses the device cleaning process and session exit that occurs by default after each test completes.
     * Normally, you'd need to start over and reopen another device.
     * You'll need to launch your next test within 10 seconds of your previous test ending
     * to ensure that the same device will be allocated for the test (not cleaned or reset).
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#cacheid
     */
    cacheId?: string;
    /**
     * Controls Sauce Labs default resigning (iOS) or instrumentation (Android) of mobile apps installed on our devices.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#resigningenabled
     */
    resigningEnabled?: boolean;
    /**
     * Enables the camera image injection feature. resigningEnabled needs to be enabled if this is set to true.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/mobile-apps/features/camera-image-injection/
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#saucelabsimageinjectionenabled
     */
    sauceLabsImageInjectionEnabled?: boolean;
    /**
     * Bypasses the restriction on taking screenshots for secure screens (i.e., secure text entry). resigningEnabled needs to be enabled if this is set to true.
     *
     * Android Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#saucelabsbypassscreenshotrestriction
     */
    sauceLabsBypassScreenshotRestriction?: boolean;
    /**
     * Enables the interception of biometric input, allowing the test to simulate Touch ID interactions (not a Sauce Labs-specific capability).
     * resigningEnabled needs to be enabled if this is set to true.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#allowtouchidenroll
     */
    allowTouchIdEnroll?: boolean;
    /**
     * Enables audio recording in your iOS and Android native mobile app tests.
     * The audio will be part of the Test Results page video file, which you can play back and download in our built-in media player.
     * The default value is false.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#audiocapture
     */
    audioCapture?: boolean;
    /**
     * Enables mobile app instrumentation (Android or iOS) and recording of HTTP/HTTPS network traffic for debugging purposes.
     * API calls are collected into a HAR file, which you can view and download from your Test Results > Network tab console.
     * The default value is false.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#networkcapture
     */
    networkCapture?: boolean;
    /**
     * Enables the use of the app's private app container directory instead of the shared app group container directory.
     * For testing on the Real Device Cloud, the app gets resigned, which is why the shared directory is not accessible.
     *
     * iOS Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#groupfolderredirectenabled
     */
    groupFolderRedirectEnabled?: boolean;
    /**
     * Use this capability to enable animations for Android real devices by setting it to true. By default, animations are disabled.
     *
     * Android Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#enableanimations
     */
    enableAnimations?: boolean;
    /**
     * Delays system alerts, such as alerts asking for permission to access the camera, to prevent app crashes at startup.
     * resigningEnabled needs to be enabled if this is set to true.
     *
     * iOS Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#systemalertsdelayenabled
     */
    systemAlertsDelayEnabled?: boolean;
    /**
     * Specify the amount of time (in milliseconds) that the test should be allowed to find and assign an available device before the test will fail.
     * The default value is 900000 milliseconds (15 minutes) and the max is 1800000 milliseconds (30 minutes).
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#sessioncreationtimeout
     */
    sessionCreationTimeout?: boolean;
    /**
     * Specify the amount of automatic retries that Sauce Labs will execute to find and assign an available device before the test will fail.
     * The default value is 1 and the max is 3.
     *
     * Real Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#sessioncreationretry
     */
    sessionCreationRetry?: number;
    /**
     * Desktop and Mobile Capabilities: Sauce-Specific – Optional
     * see https://docs.saucelabs.com/dev/test-configuration-options/#desktop-and-mobile-capabilities-sauce-specific--optional
     */
    /**
     * Used to record test names for jobs and make it easier to find individual tests.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#name
     */
    name?: string;
    /**
     * Used to associate jobs with a build number or app version, which is then displayed
     * on both the Dashboard and Archives view
     *
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#build
     * @example `build-1234`
     */
    build?: string | number;
    /**
     * User-defined tags for grouping and filtering jobs in the Dashboard and Archives view.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#tags
     * @example
     * ```
     * ["tag1", "tag2", "tag3"]
     * ```
     */
    tags?: string[];
    /**
     * Sets your Sauce Labs username for a test.
     *
     * You can either set "username" in capabilities or specify it in the Sauce URL as Basic Authentication. For Visual Tests), this must be set in capabilities.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#username
     */
    username?: string;
    /**
     * Sets your Sauce Labs access key for the test.
     *
     * You can either set "accessKey" in capabilities or specify it in the Sauce URL as Basic Authentication. For Visual Tests, this must be set in capabilities.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#accesskey
     */
    accessKey?: string;
    /**
     * User-defined custom data that will accept any valid JSON object, limited to 64KB in size.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#custom-data
     * @example
     * ```
     * {
     *   "release": "1.0",
     *   "commit": "0k392a9dkjr",
     *   "staging": true,
     *   "execution_number": 5,
     *   "server": "test.customer.com"
     * }
     * ```
     */
    'custom-data'?: any;
    /**
     * We support several test/job result visibility levels, which control who can view the test details.
     * The visibility level for a test can be set manually from the test results page, but also programmatically when starting a test or with our REST API.
     * For more information about sharing test results, see the topics under Sharing the Results of Sauce Labs Tests.
     *
     * Desktop and Virtual Devices only.
     *
     * @see https://docs.saucelabs.com/test-results/sharing-test-results/
     */
    public?: 'public' | 'public restricted' | 'share' | 'team' | 'private';
    /**
     * Specify a Sauce Connect tunnel to establish connectivity with Sauce Labs for your test.
     * Tunnels allow you to test an app that is behind a firewall or on your local machine by providing a secure connection to the Sauce Labs platform.
     * @see https://docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/basic-setup/
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#tunnelname
     */
    tunnelName?: string;
    /**
     * Specify a Sauce Connect tunnel name to establish connectivity with a Sauce Labs test platform. This is an alias for tunnelName.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#tunnelidentifier
     * @deprecated
     */
    tunnelIdentifier?: string;
    /**
     * If the tunnelName you've specified to establish connectivity with a Sauce Labs test platform is a shared tunnel,
     * and you are not the user who created the tunnel, you must identify the Sauce Labs user who did create the tunnel in order to use it for your test.
     * @see https://docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/basic-setup/#using-tunnel-names
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#tunnelowner
     */
    tunnelOwner?: string;
    /**
     * If the tunnelName (or tunnelIdentifier) you've specified to establish connectivity with a Sauce Labs test platform is a shared tunnel,
     * and you are not the user who created the tunnel, you must identify the Sauce Labs user who did create the tunnel in order to use it for your test.
     * This is an alias for tunnelOwner.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#parenttunnel
     * @deprecated
     */
    parentTunnel?: string;
    /**
     * Use this to disable video recording. By default, Sauce Labs records a video of every test you run.
     * Disabling video recording can be useful for debugging failing tests as well as having a visual confirmation that a certain feature works (or still works).
     * However, there is an added wait time for screen recording during a test run.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#recordvideo
     */
    recordVideo?: boolean;
    /**
     * Disables video upload for passing tests. videoUploadOnPass is an alternative to recordVideo; it lets you discard videos for tests you've marked as passing.
     * It disables video post-processing and uploading that may otherwise consume some extra time after your test is complete.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#videouploadonpass
     */
    videoUploadOnPass?: boolean;
    /**
     * Disables step-by-step screenshots. In addition to capturing video, Sauce Labs captures step-by-step screenshots of every test you run.
     * Most users find it very useful to get a quick overview of what happened without having to watch the complete video.
     * However, this feature may add some extra time to your tests.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#recordscreenshots
     */
    recordScreenshots?: boolean;
    /**
     * In the same way Sauce Labs captures step-by-step screenshots, you can capture the HTML source at each step of a test.
     * This feature is disabled by default, but when it is enabled you can view the HTML source captures on the Test Results page.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#capturehtml
     */
    captureHtml?: boolean;
    /**
     * Disables log recording. By default, Sauce creates a log of all the actions that you execute to create a report for the test run
     * that lets you troubleshoot test failures more easily.
     * This option disables only the recording of the log.json file; the selenium-server.log will still be recorded.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#recordlogs
     */
    recordLogs?: boolean;
    /**
     * Desktop and Virtual Device Capabilities: Sauce-Specific – Optional
     * see https://docs.saucelabs.com/dev/test-configuration-options/#desktop-and-virtual-device-capabilities-sauce-specific--optional
     */
    /**
     * Sets maximum test duration in seconds. As a safety measure to prevent tests from running indefinitely,
     * the default is 1,800 seconds (30 minutes) and the maximum is 10,800 seconds (three hours).
     *
     * Desktop and Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#maxduration
     */
    maxDuration?: number;
    /**
     * Setting to prioritize jobs. If you have multiple new jobs waiting to start (i.e., across a collection of sub-accounts),
     * jobs with a lower priority number take precedence over jobs with a higher number.
     *
     * So, for example, if you have multiple jobs simultaneously waiting to start,
     *  we'll first attempt to find resources to start all the jobs with priority 0,then all the jobs with priority 1, etc.
     *
     * When we run out of available virtual machines, or when you hit your concurrency limit, any jobs not yet started will wait.
     * Within each priority level, jobs that have been waiting the longest take precedence.
     *
     * Desktop and Virtual Devices only.
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#priority
     */
    priority?: number;
    /**
     * Allows you to set a custom time zone for your test based on a city name. Most major cities are supported.
     *
     * Desktop and Virtual Devices only.
     * @example Los_Angeles
     * @example Honolulu
     * @see https://docs.saucelabs.com/dev/test-configuration-options/#timezone
     */
    timeZone?: string;
    /**
     * You can provide a URL to an executable file, which will be downloaded and executed to configure the
     * VM before the test starts. For faster performance, you may want to upload the executable to [Sauce Storage](https://docs.saucelabs.com/mobile-apps/app-storage/#uploading-apps),
     * a private temporary storage space. This capability takes a JSON object with four main keys.
     * Check out the topics under [Using Pre-Run Executables to Configure Browsers and Virtual Machines](https://docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/) for
     * more information.
     *
     * __Running AutoIt Scripts__
     *
     * If you want to run an AutoIt script during your test, compile it as an .exe, send it using this
     * capability, and set background to true to allow AutoIt to continue running throughout the full
     * duration of your test.
     *
     * __Using Multiple Pre-Run Executables__
     *
     * If you need to send multiple pre-run executables, the best way is to bundle them into a single
     * executable file, such as a self-extracting zip file.
     */
    prerun?: {
        executable: string;
        args: string[];
        background: boolean;
        timeout: number;
    };
    recordDeviceVitals?: boolean;
}
export interface LambdaTestCapabilities {
    username?: string;
    accessKey?: string;
    platformName?: string;
    deviceName?: string;
    platformVersion?: string;
    app?: string;
    appiumVersion?: string;
    browserName?: string;
    browserVersion?: string;
    w3c?: boolean;
    /**
     * Set the resolution of the VM.
     */
    resolution?: string;
    selenium_version?: string;
    driver_version?: string;
    headless?: boolean;
    seCdp?: boolean;
    /**
     * Specify a name for a logical group of builds.
     */
    project?: string;
    /**
     * Specify a name for a logical group of tests.
     */
    build?: string | number;
    /**
     * Use this capability to add a custom tag to the builds.
     * These tags can be used to filter the builds on the Automate dashboard.
     */
    buildTags?: Array<string>;
    'smartUI.project'?: string;
    /**
     * Use this capability to add names to the tests.
     */
    name?: string;
    /**
     * Use this capability to add a custom tag to the tests.
     * These tags can be used to filter the tests on the Automate dashboard.
     */
    tags?: Array<string>;
    devicelog?: boolean;
    visual?: boolean;
    video?: boolean;
    /**
     * Test locally hosted websites on TestMu AI (Formerly LambdaTest).
     * To enable access to the local machine you need to setup the
     * TestMu AI Tunnel (https://www.testmuai.com/support/docs/testing-locally-hosted-pages/).
     */
    tunnel?: boolean;
    tunnelName?: string;
    /**
     * Capture browser console logs at various steps in the test.
     */
    console?: 'warn' | 'error' | 'warn' | 'info' | 'true' | 'false';
    network?: boolean;
    timezone?: string;
    geoLocation?: string;
    location?: {
        lat: string;
        long: string;
    };
    language?: string;
    locale?: string;
    idleTimeout?: number;
    queueTimeout?: number;
    /**
     * Appium specific
     */
    autoGrantPermissions?: boolean;
    autoAcceptAlerts?: boolean;
    otherApps?: Array<string>;
    isRealMobile?: boolean;
    networkThrottling?: string;
    deviceOrientation?: 'portrait' | 'landscape';
    bundleId?: string;
    appPackage?: string;
    appActivity?: string;
    appWaitActivity?: string;
    appWaitPackage?: string;
    autoWebview?: boolean;
}
export interface BrowserStackCapabilities {
    browser?: string;
    browser_version?: string;
    os?: string;
    os_version?: string;
    osVersion?: string;
    desired?: unknown;
    device?: string;
    platformName?: string;
    platformVersion?: string;
    /**
     * Specify a name for a logical group of builds.
     */
    projectName?: string;
    /**
     * Specify a name for a logical group of tests.
     */
    buildName?: string;
    /**
     * Specify an identifier for the test run.
     */
    sessionName?: string;
    /**
     * Test locally hosted websites on BrowserStack.
     * To enable access to the local machine you need to setup the
     * [BrowserStack Local Binary](https://www.browserstack.com/local-testing/automate).
     */
    local?: boolean;
    /**
     * Generate screenshots at various steps of the test.
     *
     * @default false
     */
    debug?: boolean;
    networkLogs?: boolean;
    /**
     * https://www.browserstack.com/docs/app-automate/appium/debug-failed-tests/network-logs
     * Enable viewing the response data in the Network Logs tab on your session
     */
    networkLogsOptions?: {
        captureContent?: boolean;
    };
    networkLogsExcludeHosts?: Array<string>;
    networkLogsIncludeHosts?: Array<string>;
    /**
     * https://www.browserstack.com/docs/app-automate/appium/debug-failed-tests/interactive-session
     * Enable an interactive debugging session while your test session is running
     */
    interactiveDebugging?: boolean;
    seleniumVersion?: string;
    seleniumCdp?: boolean;
    ie?: {
        noFlash?: boolean;
        compatibility?: number;
        arch?: string;
        driver?: string;
        enablePopups?: boolean;
    };
    userName?: string;
    accessKey?: string;
    localIdentifier?: string;
    /**
     * Capture browser console logs at various steps in the test.
     * Console Logs are available for Selenium tests on Desktop Chrome
     * and Mobile Chrome (Android devices).
     *
     * @default 'errors'
     */
    consoleLogs?: 'disable' | 'errors' | 'warnings' | 'info' | 'verbose';
    appiumLogs?: boolean;
    video?: boolean;
    seleniumLogs?: boolean;
    geoLocation?: string;
    timezone?: string;
    /**
     * Set the resolution of the VM.
     */
    resolution?: string;
    /**
     * Mask the data sent or retrieved by certain commands.
     *
     * Note: Multiple commands can be passed in a single array, separated by commas.
     */
    'browserstack.maskCommands'?: string[];
    /**
     * BrowserStack triggers `BROWSERSTACK_IDLE_TIMEOUT` error when a session
     * is left idle for more than `idleTimeout` seconds. This happens as BrowserStack by
     * default waits for the timeout duration for additional steps or commands
     * to run. If no command is received during that time, the session is stopped,
     * changing the session status to `TIMEOUT` on the Automate dashboard.
     *
     * Valid range: 0-300 seconds.
     *
     * @default 90
     */
    idleTimeout?: number;
    /**
     * Mask credentials from test logs if using basic authentication.
     */
    maskBasicAuth?: boolean;
    /**
     * Specify a custom delay between the execution of Selenium commands.
     *
     * @default 20
     */
    autoWait?: number;
    /**
     * iOS specific. For IOS 13 & above, behavior will flip if popup has more than 2 buttons
     * @see https://www.browserstack.com/docs/app-automate/appium/advanced-features/handle-permission-pop-ups
     */
    autoAcceptAlerts?: boolean;
    /**
     * iOS specific. For IOS 13 & above, behavior will flip if popup has more than 2 buttons
     * @see https://www.browserstack.com/docs/app-automate/appium/advanced-features/handle-permission-pop-ups
     */
    autoDismissAlerts?: boolean;
    /**
     * Add a host entry (/etc/hosts) to the remote BrowserStack machine.
     *
     * Format: ip_address domain_name
     * @example
     * { "bstack:options": { hosts: "1.2.3.4 staging.website.com" } }
     */
    hosts?: string;
    /**
     * IE 11 uses cached pages when navigating using the backward or forward buttons.
     * To disable page caching, set this value to 1.
     *
     * @default 0
     */
    bfcache?: 0 | 1;
    /**
     * Enable WSS (WebSocket Secure) connections to work with Network Logs
     * on Chrome v71 and above.
     *
     * Note: if using `localhost` in your test, change it to `bs-local.com`.
     *
     * @default false
     */
    wsLocalSupport?: boolean;
    /**
     * Use this capability to disable cross origin restrictions in Safari.
     * Available for Monterey, Big Sur, Catalina and Mojave.
     *
     * @default false
     */
    disableCorsRestrictions?: boolean;
    /**
     * Use this capability to add a custom tag to the builds.
     * These tags can be used to filter the builds on the Automate dashboard.
     */
    buildTag?: string;
    /**
     * Specify a particular mobile device for the test environment.
     */
    deviceName?: string;
    /**
     * Use this flag to test on a physical mobile device.
     *
     * @default false
     */
    realMobile?: boolean;
    appiumVersion?: string;
    deviceOrientation?: 'portrait' | 'landscape';
    customNetwork?: string;
    networkProfile?: string;
    chrome?: {
        driver?: string;
    };
    edge?: {
        enablePopups?: boolean;
    };
    'browserstack.sendKeys'?: boolean;
    safari?: {
        enablePopups?: boolean;
        allowAllCookies?: boolean;
    };
    firefox?: {
        driver?: string;
    };
    browserName?: string;
    browserVersion?: string;
    /**
     * Ignore invalid certificate errors.
     *
     * @default false
     */
    acceptSslCerts?: boolean;
    /**
     * @private
     */
    wdioService?: string;
    /**
     * Specify an identifier for a build consists group of tests.
     */
    buildIdentifier?: string;
    accessibility?: boolean;
    accessibilityOptions?: {
        [key: string]: any;
    };
    'browserstack.buildIdentifier'?: string;
    'browserstack.localIdentifier'?: string;
    'browserstack.accessibility'?: boolean;
    'browserstack.accessibilityOptions'?: {
        [key: string]: any;
    };
    appStoreConfiguration?: {
        username: string;
        password: string;
    };
    gpsLocation?: string;
    disableAnimations?: boolean;
    midSessionInstallApps?: Array<string>;
    uploadMedia?: Array<string>;
    enablePasscode?: boolean;
    deviceLogs?: boolean;
    /**
     * Disable re-signing of Enterprise signed app uploaded on BrowserStack
     * @default true
     */
    resignApp?: boolean;
    /**
     * Hides data that you send to or retrieve from the remote browsers through the following commands:
     * Example: 'setValues, getValues, setCookies, getCookies'
     */
    maskCommands?: string;
    /**
     * Enables the camera image injection feature.
     *
     * Real Devices only.
     * @see https://www.browserstack.com/docs/app-automate/appium/advanced-features/camera-image-injection
     */
    enableCameraImageInjection?: boolean;
    testhubBuildUuid?: string;
    buildProductMap?: {
        [key: string]: boolean;
    };
}
export interface SauceLabsVisualCapabilities {
    /**
     * Project name
     */
    projectName?: string;
    /**
     * API Key for user's Screener account.
     */
    apiKey?: string;
    /**
     * A <width>x<height> representation of desired viewport size.
     * @default "1024x768"
     */
    viewportSize?: string;
    /**
     * Branch or environment name.
     * @example "main"
     */
    branch?: string;
    /**
     * Branch name of project's base branch. Used for baseline branching and merging.
     * @example "main"
     */
    baseBranch?: string;
    /**
     * Visual diff options to control validations.
     * @default
     * ```js
     * {
     *   structure: true,
     *   layout: true,
     *   style: true,
     *   content: true,
     *   minLayoutPosition: 4,
     *   minLayoutDimension: 10
     * }
     * ```
     */
    diffOptions?: {
        structure?: boolean;
        layout?: boolean;
        style?: boolean;
        content?: boolean;
        minLayoutPosition?: number;
        minLayoutDimension?: number;
    };
    /**
     * A comma-delimited list of css selectors to ignore when performing visual diffs.
     * @example "#some-id, .some-selector"
     */
    ignore?: string;
    /**
     * Option to set build to failure when new states are found, and to disable
     * using new states as a baseline.
     *
     * This option defaults to true, and can be set to false if user wants new
     * states to automatically be the visual baseline without needing to review
     * and accept them.
     * @default true
     */
    failOnNewStates?: boolean;
    /**
     * Option to automatically accept new and changed states in base branch.
     * Assumes base branch should always be correct.
     * @default false
     */
    alwaysAcceptBaseBranch?: boolean;
    /**
     * Option to disable independent baseline for each feature branch, and
     * only use base branch as baseline. Must be used with "baseBranch" option.
     * @default false
     */
    disableBranchBaseline?: boolean;
    /**
     * Option to capture a full-page screenshot using a scrolling and stitching
     * strategy instead of using native browser full-page screenshot capabilities.
     * @default false
     */
    scrollAndStitchScreenshots?: boolean;
    /**
     * Option to disable adding CORS headers. By default, CORS headers are set
     * for all cross-origin requests.
     * @default false
     */
    disableCORS?: boolean;
}
/**
 * https://testingbot.com/support/other/test-options#platform
 */
export interface TestingbotCapabilities {
    appiumVersion?: string;
    appiumPlugins?: string[];
    name?: string;
    tags?: string[];
    build?: string | number;
    public?: boolean;
    'tunnel-identifier'?: string;
    realDevice?: boolean;
    'selenium-version'?: string;
    chromedriverVersion?: string;
    iedriverVersion?: string;
    edgedriverVersion?: string;
    geckodriverVersion?: string;
    operaDriverVersion?: string;
    'screen-resolution'?: string;
    timeZone?: string;
    'throttle_network'?: any;
    tabletOnly?: boolean;
    phoneOnly?: boolean;
    recordLogs?: boolean;
    screenshot?: boolean;
    screenrecorder?: boolean;
    maxDuration?: number;
    upload?: string;
    'testingbot.geoCountryCode'?: string;
    idletimeout?: number;
    'load-extension'?: string;
}
export {};
//# sourceMappingURL=Capabilities.d.ts.map