import { HotTestElement, HotTestElementOptions } from "./HotTestElement";
import { HotTestDriver } from "./HotTestDriver";
import { HotTestPage } from "./HotTestPage";
import { HotStaq } from "./HotStaq";
import { By, WebDriver, WebElement, Session } from "selenium-webdriver";
/**
 * Runs and executes tests using Selenium.
 */
export declare class HotTestSeleniumDriver extends HotTestDriver {
    /**
     * The current selenium session running.
     */
    session: Session;
    /**
     * The selenium webdriver.
     */
    driver: WebDriver;
    /**
     * The browser to use.
     */
    browser: string;
    /**
     * Run the tests headless.
     */
    headless: boolean;
    /**
     * Disable GPU usage and the Chrome Sandbox. Mostly for usage within Docker.
     */
    disableGPUAndSandbox: boolean;
    /**
     * Automatically open the developer tools on start.
     */
    openDevTools: boolean;
    /**
     * Disables shared memory usage. Mostly for usage within Docker. This works on Chrome,
     * may not work on Firefox as it has not been tested on Firefox.
     */
    disableDevShmUsage: boolean;
    /**
     * Set the remote server to use for testing.
     */
    remoteServer: string;
    /**
     * Set the window size on start.
     */
    windowSize: {
        /**
         * The width of the window.
         */
        width: number;
        /**
         * The height of the window.
         */
        height: number;
    };
    constructor(processor: HotStaq, page?: HotTestPage);
    /**
     * Disconnect this server or destroy anything associated with this HotTestDriver.
     */
    destroy(): Promise<void>;
    /**
     * Load the selenium driver.
     *
     * If a WebDriver session already exists, return without spinning up a
     * fresh one — every destination would otherwise call this and get its
     * own browser, dropping cookies (refreshToken, session) set by an
     * earlier destination's login flow. Reusing the session lets a multi-
     * step suite (login → /account → /change-password) keep the
     * authentication state. Override with HOTSTAQ_FORCE_NEW_SESSION=1.
     */
    loadSeleniumDriver(): Promise<void>;
    /**
     * Get a test object by it's name. If a * is used, it will be used as a
     * wildcard for the object's name. If a > is used, then the name will
     * be treated as a CSS selector.
     */
    getTestObjectByName(name: string): By;
    /**
     * Navigate to a url.
     */
    navigateToUrl(url: string): Promise<void>;
    /**
     * Test-friendly alias for navigateToUrl. Accepts either a fully
     * qualified URL or a path that's resolved against the driver's
     * current origin — that way `.hott` test paths can write
     * `await driver.navigate("/account")` instead of having to know
     * the test server's host:port.
     */
    navigate(urlOrPath: string): Promise<void>;
    /**
     * Wait for a test element using Selenium Webdriver.
     */
    waitForTestElement(name: string | HotTestElement, options?: HotTestElementOptions): Promise<WebElement>;
    /**
     * Get a test element using selenium webdriver.
     */
    findTestElement(name: string | HotTestElement, options?: HotTestElementOptions): Promise<WebElement>;
    /**
     * Run a command using Selenium Webdriver.
     */
    runCommand(testElm: string | HotTestElement, funcName?: string, valueStr?: string, options?: HotTestElementOptions): Promise<any>;
    /**
     * Assert that a named test element exists in the DOM. Used by .hott
     * test paths that just need to verify a control rendered (e.g. an
     * error message, a confirmation banner) without comparing its value.
     *
     * Throws when the element is missing — same shape as
     * `assertElementValue` so test paths can mix the two freely.
     */
    assertElementExists(name: string | HotTestElement, errorMessage?: string, options?: HotTestElementOptions): Promise<WebElement>;
    /**
     * Read a test element's current value. Returns the input's `value`
     * attribute if present, falling back to the element's text content —
     * mirrors the lookup order in assertElementValue so test paths that
     * just need the value (e.g. to check the field was pre-populated)
     * don't have to drop down to executeScript.
     */
    getTestElementValue(name: string | HotTestElement, options?: HotTestElementOptions): Promise<string>;
    /**
     * An expression to test.
     */
    assertElementValue(name: string | HotTestElement, value: any, errorMessage?: string, options?: HotTestElementOptions): Promise<any>;
    /**
     * Run a series of test elements.
     */
    run(executions: string[] | string[][]): Promise<any[]>;
}
//# sourceMappingURL=HotTestSeleniumDriver.d.ts.map