import { Image } from "../../image";
import type { 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 ViewportScreenShooterInputParams {
    camera: Camera;
    browser: WdioBrowser;
    browserProperties: ScreenShooterBrowserProperties;
}
interface ViewportScreenShooterFullParams extends ViewportScreenShooterInputParams {
    browserSideScreenshooter: ClientBridge<typeof browserSideScreenshooterImplementation>;
}
interface ViewportCaptureOpts {
    ignoreElements?: string | string[];
    screenshotDelay?: number;
    disableAnimation?: boolean;
    disableHover?: DisableHoverMode;
    cropMargins?: CropMargins;
}
interface ViewportCaptureResult {
    image: Image;
    meta: {
        canHaveCaret: boolean;
        pixelRatio: number;
    };
}
export declare class ViewportScreenShooter {
    private _browser;
    private _camera;
    private _browserProperties;
    private _browserSideScreenshooter;
    static create(params: ViewportScreenShooterInputParams): Promise<ViewportScreenShooter>;
    constructor({ browser, camera, browserProperties, browserSideScreenshooter }: ViewportScreenShooterFullParams);
    capture(opts?: ViewportCaptureOpts): Promise<ViewportCaptureResult>;
    private _captureImpl;
    private _cleanup;
}
export {};
