import { By, ThenableWebDriver, WebElement, WebElementCondition } from "selenium-webdriver";
import { WaitCondition } from "./conditions";
/**
 * This class encapsulates common location and interaction functionality over a {@link ThenableWebDriver}.
 */
export declare class WebApp {
    driver: ThenableWebDriver;
    constructor(driver: ThenableWebDriver);
    find(locator: By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<WebElement>;
    findAll(locator: By | string): Promise<WebElement[]>;
    findChild(rootElement: WebElement | By | string, locator: By | string, { waitForChild, timeout, pollTimeout }?: {
        waitForChild?: boolean;
        timeout?: number;
        pollTimeout?: number;
    }): Promise<WebElement>;
    findChildren(rootElement: WebElement | By | string, locator: By | string, { waitForChild, timeout, pollTimeout }?: {
        waitForChild?: boolean;
        timeout?: number;
        pollTimeout?: number;
    }): Promise<WebElement[]>;
    click(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    hover(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    focus(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    contextClick(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    doubleClick(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    waitForAnimationAndClick(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    scrollAndClick(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    scrollIntoView(locator: By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    dragTo(source: WebElement | By, target: WebElement | By): Promise<void>;
    dragByOffset(element: WebElement | By | string, offsetX: number, offsetY: number): Promise<void>;
    type(element: WebElement | By | string, text: string, { clear, sendEnter }?: {
        clear?: boolean;
        sendEnter?: boolean;
    }): Promise<void>;
    sendKey(key: string): Promise<void>;
    sendKeyCombination(key1: string, key2: string): Promise<void>;
    sendKeysCombination(keys: string[]): Promise<void>;
    sendControlKeyCombination(key: string): Promise<void>;
    isVisible(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<boolean>;
    isNotVisible(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<boolean>;
    isInViewport(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<boolean>;
    isNotInViewport(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<boolean>;
    hasFocus(element: WebElement | By | string): Promise<boolean>;
    hasNoFocus(element: WebElement | By | string): Promise<boolean>;
    hasText(element: WebElement | By | string, text: string): Promise<boolean>;
    hasValue(element: WebElement | By | string, value: string): Promise<boolean>;
    hasAttribute(element: WebElement | By | string, attribute: string, value: string, exactMatch?: boolean): Promise<boolean>;
    hasClass(element: WebElement | By | string, value: string, exactMatch?: boolean): Promise<boolean>;
    sleep(milliseconds: number): Promise<void>;
    wait(condition: WebElementCondition | WaitCondition, { timeout, message, pollTimeout }?: {
        timeout?: number;
        message?: string;
        pollTimeout?: number;
    }): Promise<void>;
    waitSafely(condition: WebElementCondition | WaitCondition, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<boolean>;
    waitForAnimation(element: WebElement | By | string, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    getScreenshot(): Promise<string>;
    executeScript(script: string | Function): Promise<unknown>;
    getText(element: WebElement | By | string): Promise<string>;
    getAttribute(element: WebElement | By | string, attribute: string): Promise<string>;
    getProperty(element: WebElement | By | string, property: string): Promise<string>;
    getColor(element: WebElement | By | string): Promise<string>;
    getBackgroundColor(element: WebElement | By | string): Promise<string>;
}
