import type { Options } from '@wdio/types';
import type { Browser as WDIOBrowser, BrowserCommandsType, ElementCommandsType, remote } from 'webdriverio';
import Controller from '../Controller';
import { type Configuration } from '../utils/writeVariables';
type RemoteOptions = Parameters<typeof remote>[0];
type Options = RemoteOptions & Configuration;
type Browser = WebdriverIO.Browser | WDIOBrowser;
/**
 * Creates a WebDriverIO config that uses axe extension
 *
 * @param arg Config to extend
 */
export declare function wdioConfig({ axe, ...options }: Options): RemoteOptions;
/** @deprecated This method of configuring the TestRunner is no longer supported. */
export declare function wdioTestRunner(axe: Configuration['axe'], config: WebdriverIO.Config): WebdriverIO.Config;
/** Configure WDIO TestRunner with axe Watcher. */
export declare function wdioTestRunner({ axe, ...config }: WebdriverIO.Config & Configuration): WebdriverIO.Config;
export declare class WdioController extends Controller {
    private driver;
    constructor(driver: Browser);
    protected executeScript<T>(fn: string | (() => Promise<T>), ...args: unknown[]): Promise<T>;
    captureScreenshot(): Promise<string>;
}
/** Webdriver `browser` methods. */
export declare const WRAPPED_BROWSER_METHODS: ReadonlyArray<keyof BrowserCommandsType>;
/** Wrapped `element` methods. */
export declare const WRAPPED_ELEMENT_METHODS: ReadonlyArray<keyof ElementCommandsType>;
/** Wrap the given WDIO `browser` object, ensuring axe-core analysis is run after each command. */
export declare const wrapWdio: (browser: Browser, controller: WdioController) => Browser;
export {};
