import { SeleniumPluginConfig } from '../types';
import { IBrowserProxyPlugin, SavePdfOptions, WindowFeaturesConfig, Selector } from '@testring/types';
import type { Cookie } from '@wdio/protocols';
import type { ClickOptions, MockFilterOptions } from 'webdriverio';
import type { JsonCompatible } from '@wdio/types';
import type { RespondWithOptions } from 'webdriverio/build/utils/interception/types';
import { WebdriverIOConfig } from '@wdio/types/build/Capabilities';
type BrowserObjectCustom = WebdriverIO.Browser & {
    sessionId: string;
};
export declare class SeleniumPlugin implements IBrowserProxyPlugin {
    private logger;
    private clientCheckInterval;
    private expiredBrowserClients;
    private browserClients;
    private customBrowserClientsConfigs;
    private waitForReadyState;
    private localSelenium;
    private config;
    private incrementWinId;
    constructor(config?: Partial<SeleniumPluginConfig>);
    private createConfig;
    private initIntervals;
    private setupProcessCleanup;
    private forceKillSelenium;
    private stopAllSessions;
    private getChromeDriverPath;
    private getChromeDriverArgs;
    private buildSeleniumArgs;
    private runLocalSelenium;
    private getApplicantSessionId;
    private hasBrowserClient;
    private getBrowserClient;
    private pingClients;
    private closeExpiredClients;
    private checkClientsTimeout;
    setCustomBrowserClientConfig(applicant: string, config: WebdriverIOConfig): void;
    getCustomBrowserClientConfig(applicant: string): WebdriverIOConfig | undefined;
    private createClient;
    private enableCDPCoverageClient;
    getCdpCoverageFile(applicant: string): Promise<Buffer[] | undefined>;
    protected addCustromMethods(client: BrowserObjectCustom): BrowserObjectCustom;
    private getElement;
    private getElementFromShadowCss;
    private validateShadowCssSelector;
    private traverseToLastParentSelector;
    private traverseShadowDom;
    end(applicant: string): Promise<void>;
    kill(): Promise<void>;
    refresh(applicant: string): Promise<void>;
    click(applicant: string, selector: Selector, options?: ClickOptions): Promise<void>;
    getSize(applicant: string, selector: Selector): Promise<import("webdriverio/build/commands/element").Size & number>;
    url(applicant: string, val: string): Promise<string | void | WebdriverIO.Request>;
    generateWinId(): string;
    newWindow(applicant: string, val: string, windowName: string, windowFeatures?: WindowFeaturesConfig): Promise<string | {
        handle: string;
        type: "tab" | "window";
    }>;
    waitForExist(applicant: string, selector: Selector, timeout: number): Promise<true>;
    waitForVisible(applicant: string, selector: Selector, timeout: number): Promise<true>;
    isVisible(applicant: string, selector: Selector): Promise<boolean>;
    moveToObject(applicant: string, selector: Selector, xOffset?: number, yOffset?: number): Promise<void>;
    execute(applicant: string, fn: any, args: Array<any>): Promise<unknown>;
    executeAsync(applicant: string, fn: any, args: Array<any>): Promise<unknown>;
    getTitle(applicant: string): Promise<string>;
    clearValue(applicant: string, selector: Selector): Promise<void>;
    keys(applicant: string, value: any): Promise<void>;
    elementIdText(applicant: string, elementId: string): Promise<string>;
    elements(applicant: string, selector: Selector): Promise<{
        ELEMENT: string | undefined;
    }[]>;
    frame(applicant: string, frameID: any): Promise<string | void>;
    frameParent(applicant: string): Promise<void>;
    getValue(applicant: string, selector: Selector): Promise<string>;
    setValue(applicant: string, selector: Selector, value: any): Promise<void>;
    selectByIndex(applicant: string, selector: Selector, value: any): Promise<void>;
    selectByValue(applicant: string, selector: Selector, value: any): Promise<void>;
    selectByVisibleText(applicant: string, selector: Selector, str: string): Promise<void>;
    getAttribute(applicant: string, selector: Selector, attr: string): Promise<any>;
    windowHandleMaximize(applicant: string): Promise<import("@wdio/protocols").RectReturn>;
    isEnabled(applicant: string, selector: Selector): Promise<boolean>;
    scroll(applicant: string, selector: Selector, xOffset: number, yOffset: number): Promise<void>;
    scrollIntoView(applicant: string, selector: Selector, scrollIntoViewOptions?: boolean | null): Promise<void>;
    isAlertOpen(applicant: string): Promise<boolean>;
    alertAccept(applicant: string): Promise<void>;
    alertDismiss(applicant: string): Promise<void>;
    alertText(applicant: string): Promise<string>;
    dragAndDrop(applicant: string, sourceSelector: Selector, destinationSelector: Selector): Promise<void>;
    setCookie(applicant: string, cookieObj: Cookie): Promise<void>;
    getCookie(applicant: string, cookieName?: string | null): Promise<string | Cookie[] | undefined>;
    deleteCookie(applicant: string, cookieName?: string | null): Promise<void>;
    getHTML(applicant: string, selector: Selector, b: any): Promise<any>;
    getCurrentTabId(applicant: string): Promise<string>;
    getTabIds(applicant: string): Promise<string[]>;
    windowHandles(applicant: string): Promise<string[]>;
    window(applicant: string, tabId: string): Promise<void>;
    switchTab(applicant: string, tabId: string): Promise<void>;
    close(applicant: string, tabId: string): Promise<void>;
    getTagName(applicant: string, selector: Selector): Promise<string>;
    isSelected(applicant: string, selector: Selector): Promise<boolean>;
    getText(applicant: string, selector: Selector): Promise<string>;
    elementIdSelected(applicant: string, id: string): Promise<boolean>;
    makeScreenshot(applicant: string): Promise<string | void>;
    uploadFile(applicant: string, filePath: string): Promise<string | void>;
    getCssProperty(applicant: string, selector: Selector, cssProperty: string): Promise<any>;
    getSource(applicant: string): Promise<string>;
    isExisting(applicant: string, selector: Selector): Promise<boolean>;
    waitForValue(applicant: string, selector: Selector, timeout: number, reverse: boolean): Promise<true>;
    waitForSelected(applicant: string, selector: Selector, timeout: number, reverse: boolean): Promise<true>;
    waitUntil(applicant: string, condition: () => Promise<boolean>, timeout?: number, timeoutMsg?: string, interval?: number): Promise<true>;
    selectByAttribute(applicant: string, selector: Selector, attribute: string, value: string): Promise<void>;
    gridTestSession(applicant: string): Promise<import("@wdio/protocols").ProtocolCommandResponse>;
    getHubConfig(applicant: string): Promise<import("@wdio/protocols").ProtocolCommandResponse>;
    /**
     * @param overwrites should NOT be an arrow function, Otherwise it would throw an error
     */
    mock(applicant: string, url: string, overwrites: string | JsonCompatible | Buffer, filterOptions?: MockFilterOptions, mockResponseParams?: Omit<RespondWithOptions, 'body'>): Promise<void>;
    emulateDevice(applicant: string, deviceName: string): Promise<void>;
    status(applicant: string): Promise<import("@wdio/protocols").StatusReturn>;
    back(applicant: string): Promise<void>;
    forward(applicant: string): Promise<void>;
    getActiveElement(applicant: string): Promise<string>;
    getLocation(applicant: string, selector: Selector): Promise<import("webdriverio/build/commands/element").Location & number>;
    setTimeZone(applicant: string, timeZone: string): Promise<void>;
    getWindowSize(applicant: string): Promise<{
        width: number;
        height: number;
    }>;
    savePDF(applicant: string, options: SavePdfOptions): Promise<any>;
    addValue(applicant: string, selector: Selector, value: string | number): Promise<void>;
    doubleClick(applicant: string, selector: Selector): Promise<void>;
    isClickable(applicant: string, selector: Selector): Promise<boolean>;
    waitForClickable(applicant: string, selector: Selector, timeout: number): Promise<true>;
    isFocused(applicant: string, selector: Selector): Promise<boolean>;
    isStable(applicant: string, selector: Selector): Promise<boolean>;
    waitForEnabled(applicant: string, selector: Selector, timeout: number): Promise<true>;
    waitForStable(applicant: string, selector: Selector, timeout: number): Promise<void>;
}
export default function seleniumProxy(config: SeleniumPluginConfig): SeleniumPlugin;
export {};
//# sourceMappingURL=index.d.ts.map