import { Image } from "../../image";
import { DisableHoverMode } from "../isomorphic/types";
import type { WdioBrowser } from "../../types";
import { Camera, type CropMargins } from "../camera";
import type * as browserSideScreenshooterImplementation from "../client-scripts/screen-shooter/implementation";
import { ClientBridge } from "../client-bridge";
interface ScreenShooterBrowserProperties {
    isWebdriverProtocol: boolean;
    shouldUsePixelRatio: boolean;
    needsCompatLib: boolean;
}
interface FullPageScreenShooterInputParams {
    camera: Camera;
    browser: WdioBrowser;
    browserProperties: ScreenShooterBrowserProperties;
}
interface FullPageScreenShooterFullParams extends FullPageScreenShooterInputParams {
    browserSideScreenshooter: ClientBridge<typeof browserSideScreenshooterImplementation>;
}
interface FullPageCaptureOpts {
    screenshotDelay?: number;
    disableAnimation?: boolean;
    disableHover?: DisableHoverMode;
    cropMargins?: CropMargins;
}
export declare class FullPageScreenShooter {
    private _browser;
    private _camera;
    private _browserProperties;
    private _browserSideScreenshooter;
    static create(params: FullPageScreenShooterInputParams): Promise<FullPageScreenShooter>;
    constructor({ browser, camera, browserProperties, browserSideScreenshooter }: FullPageScreenShooterFullParams);
    capture(opts?: FullPageCaptureOpts): Promise<Image>;
    private _captureImpl;
    private _isElementPositionsProbeEqual;
    private _cleanup;
    /**
     * Builds the full-page rect in viewport coordinates.
     * The rect always has the full document dimensions, but its top shifts
     * upward as we scroll (the document "moves up" relative to the viewport).
     */
    private _buildFullPageRect;
}
export {};
