import { Image } from "../../image";
import type { AssertViewOpts } from "../../config/types";
import { WdioBrowser } from "../../types";
import { Camera } from "../camera";
import type * as browserSideScreenshooterImplementation from "../client-scripts/screen-shooter/implementation";
import { ClientBridge } from "../client-bridge";
import type { PrepareScreenshotSuccess } from "../client-scripts/screen-shooter/types";
interface ScreenShooterOpts extends AssertViewOpts {
    debugId?: string;
}
interface CaptureImageResult {
    image: Image;
    meta: PrepareScreenshotSuccess;
}
interface ScreenShooterBrowserProperties {
    isWebdriverProtocol: boolean;
    shouldUsePixelRatio: boolean;
    needsCompatLib: boolean;
}
interface ScreenShooterInputParams {
    camera: Camera;
    browser: WdioBrowser;
    browserProperties: ScreenShooterBrowserProperties;
}
interface ScreenShooterFullParams extends ScreenShooterInputParams {
    browserSideScreenshooter: ClientBridge<typeof browserSideScreenshooterImplementation>;
}
export declare class ElementsScreenShooter {
    private _browser;
    private _camera;
    private _browserProperties;
    private _browserSideScreenshooter;
    static create(params: ScreenShooterInputParams): Promise<ElementsScreenShooter>;
    constructor({ browser, camera, browserProperties, browserSideScreenshooter }: ScreenShooterFullParams);
    capture(selectorOrSelectors: string | string[], opts?: ScreenShooterOpts): Promise<CaptureImageResult>;
    private _prepareScreenshot;
    private _cleanupScreenshot;
    /** Scrolls through the entire capture area to trigger lazy loading, then restores scroll and records anchor baselines. */
    private _preloadCaptureArea;
    private _scrollThroughCaptureArea;
    private _performCaptureAttempt;
}
export {};
