import type { ElementReference } from '@wdio/protocols';
import { StrictSelectorError } from './strictSelectorError.js';
import type { ElementQueryOptions, Selector } from '../types.js';
/**
 * re-exported for backwards compatibility - moved to its own leaf module so
 * that leaf utilities like `implicitWait.ts` can check `instanceof
 * StrictSelectorError` without pulling in this module's `findElements` /
 * `findDeepElements` imports, which transitively close a circular import back
 * onto `refetchElement.ts` / `implicitWait.ts` themselves.
 */
export { StrictSelectorError };
export declare function isStrictQuery(scope: WebdriverIO.Browser | WebdriverIO.Element, options?: ElementQueryOptions): boolean;
/**
 * Selectors that can't resolve to more than one element are exempt from the
 * strictness check, e.g. element references returned by `getActiveElement` or
 * `HTMLElement`s handed over from the browser runner.
 */
export declare function isCountableSelector(selector: Selector): boolean;
/**
 * Query a single element while asserting that the selector only matches one
 * element. Contrary to `findElement` this goes through the "find elements"
 * code path as that is the only way to know how many elements match.
 *
 * @param  selector selector to query
 * @return the single matching element reference or an error if nothing matched
 */
export declare function findStrictElement(this: WebdriverIO.Browser | WebdriverIO.Element, selector: Selector): Promise<ElementReference | Error>;
//# sourceMappingURL=strictMode.d.ts.map