import type { BoundingBox } from '@mablhq-internal/runtime/core/common-types';
import { MobileFindCustomDescriptor, MobileFindElementDescriptor, SimpleElementSelector } from '@mablhq/test-model/mablscriptFind';
import { StepWithMobileFindDescriptor } from '@mablhq/test-model/types/mobile/StepWithMobileFindDescriptor';
import { FindHintGenerator, FindTimings } from '@mablhq-internal/runtime/execution';
import { MobileTestExecutionContext } from '../contexts/MobileTestExecutionContext';
import { AndroidWebViewContext, iOSWebViewContext, NativeContext } from './find/strategies/FindStrategy';
export declare function isWebViewElementHandle(handle: ObservableMobileElementHandle): boolean;
export interface ObservableMobileElementHandle {
    mobileElement?: WebdriverIO.Element;
    boundingBox?: BoundingBox;
    findTimings?: FindTimings;
    context: AndroidWebViewContext | iOSWebViewContext | NativeContext;
    webViewElementBoundingClientRect?: DOMRect;
    webViewElementSelector?: SimpleElementSelector;
}
export interface MobileMultiFindResult {
    elements?: WebdriverIO.ElementArray;
}
export declare class FindMobileElement {
    static run(stepWithFindDescriptor: StepWithMobileFindDescriptor, executionContext: MobileTestExecutionContext, findHintGenerator?: FindHintGenerator, disableCache?: boolean): Promise<ObservableMobileElementHandle>;
    static runImpl(stepWithFindDescriptor: StepWithMobileFindDescriptor, executionContext: MobileTestExecutionContext, findHintGenerator?: FindHintGenerator, _disableCache?: boolean): Promise<ObservableMobileElementHandle>;
    static emitFindBoxInfo(executionContext: MobileTestExecutionContext, foundElement: ObservableMobileElementHandle, isACandidateElement: boolean): void;
    static runCustomFind(findDescriptor: MobileFindCustomDescriptor, executionContext: MobileTestExecutionContext): Promise<ObservableMobileElementHandle>;
    static normalizeDescriptorAndFindOneElement(findDescriptor: MobileFindElementDescriptor, executionContext: MobileTestExecutionContext, findHintGenerator?: FindHintGenerator, maxFindExecutionTimeMs?: number): Promise<ObservableMobileElementHandle>;
    private static findElement;
    static runMultipleResultFind(findDescriptor: MobileFindElementDescriptor | MobileFindCustomDescriptor, executionContext: MobileTestExecutionContext): Promise<MobileMultiFindResult>;
    static isWebdriverIOElement(value: any): value is WebdriverIO.Element;
}
//# sourceMappingURL=FindMobileElement.d.ts.map