/// <reference types="node" />
import type * as Core from '@applitools/core';
import { type SDK } from './SDK';
import { EyesSelector } from './input/EyesSelector';
import { SessionType } from './enums/SessionType';
import { StitchMode, StitchModeEnum } from './enums/StitchMode';
import { MatchLevel, MatchLevelEnum } from './enums/MatchLevel';
import { CheckSettingsAutomation, CheckSettingsAutomationFluent, CheckSettingsImage, CheckSettingsImageFluent } from './input/CheckSettings';
import { Image } from './input/Image';
import { OCRSettings } from './input/OCRSettings';
import { VisualLocatorSettings } from './input/VisualLocatorSettings';
import { ProxySettings, ProxySettingsData } from './input/ProxySettings';
import { Configuration, ConfigurationData } from './input/Configuration';
import { BatchInfo, BatchInfoData } from './input/BatchInfo';
import { RectangleSize, RectangleSizeData } from './input/RectangleSize';
import { Region } from './input/Region';
import { OCRRegion } from './input/OCRRegion';
import { ImageRotation, ImageRotationData } from './input/ImageRotation';
import { CutProviderData } from './input/CutProvider';
import { LogHandlerData, LogHandler } from './input/LogHandler';
import { TextRegion } from './output/TextRegion';
import { MatchResultData } from './output/MatchResult';
import { TestResults, TestResultsData } from './output/TestResults';
import { ValidationInfo } from './output/ValidationInfo';
import { ValidationResult } from './output/ValidationResult';
import { SessionEventHandler, SessionEventHandlers } from './SessionEventHandlers';
import { EyesRunner } from './Runners';
import { Logger } from './Logger';
export declare class Eyes<TSpec extends Core.SpecType = Core.SpecType> {
    protected static readonly _sdk: SDK<Core.SpecType>;
    protected get _sdk(): SDK<TSpec>;
    private _logger;
    private _config;
    private _state;
    private _runner;
    private _driver?;
    private _core;
    private _eyes?;
    private _spec?;
    private _events;
    private _handlers;
    static getExecutionCloudUrl(config?: Configuration & {
        maskLog?: boolean;
    }): Promise<string>;
    static setViewportSize(driver: unknown, size: RectangleSize): Promise<void>;
    static setMobileCapabilities<TCapabilities extends Record<string, any>>(capabilities: TCapabilities, config?: Configuration): TCapabilities;
    constructor(runner?: EyesRunner, config?: Configuration<TSpec>);
    constructor(config?: Configuration<TSpec>);
    get logger(): Logger;
    getLogger(): Logger;
    get runner(): EyesRunner;
    getRunner(): EyesRunner;
    get driver(): TSpec['driver'];
    getDriver(): TSpec['driver'];
    get configuration(): Configuration<TSpec>;
    set configuration(config: Configuration<TSpec>);
    getConfiguration(): ConfigurationData<TSpec>;
    setConfiguration(config: Configuration<TSpec>): void;
    get isOpen(): boolean;
    getIsOpen(): boolean;
    /** @undocumented */
    on(handler: (event: string, data?: Record<string, any>) => any): () => void;
    /** @undocumented */
    on(event: 'setSizeWillStart', handler: (data: {
        viewportSize: RectangleSize;
    }) => any): () => void;
    /** @undocumented */
    on(event: 'setSizeEnded', handler: () => any): () => void;
    /** @undocumented */
    on(event: 'initStarted', handler: () => any): () => void;
    /** @undocumented */
    on(event: 'initEnded', handler: () => any): () => void;
    /** @undocumented */
    on(event: 'testStarted', handler: (data: {
        sessionId: string;
    }) => any): () => void;
    /** @undocumented */
    on(event: 'validationWillStart', handler: (data: {
        sessionId: string;
        validationInfo: ValidationInfo;
    }) => any): () => void;
    /** @undocumented */
    on(event: 'validationEnded', handler: (data: {
        sessionId: string;
        validationId: number;
        validationResult: ValidationResult;
    }) => any): () => void;
    /** @undocumented */
    on(event: 'testEnded', handler: (data: {
        sessionId: string;
        testResults: TestResults;
    }) => any): () => void;
    /** @undocumented */
    off(event: string): void;
    /** @undocumented */
    off(handler: (...args: any[]) => any): void;
    getExecutionCloudUrl(): Promise<string>;
    setMobileCapabilities<TCapabilities extends Record<string, any>>(capabilities: TCapabilities): TCapabilities;
    open(driver: TSpec['driver'], config?: Configuration<TSpec>): Promise<TSpec['driver']>;
    open(driver: TSpec['driver'], appName?: string, testName?: string, viewportSize?: RectangleSize, sessionType?: SessionType): Promise<TSpec['driver']>;
    open(config?: Configuration<TSpec>): Promise<void>;
    open(appName?: string, testName?: string, viewportSize?: RectangleSize, sessionType?: SessionType): Promise<void>;
    check(name: string, checkSettings: CheckSettingsImageFluent | CheckSettingsAutomationFluent<TSpec>): Promise<MatchResultData>;
    check(target: Image, checkSettings?: CheckSettingsImage): Promise<MatchResultData>;
    check(checkSettings?: CheckSettingsAutomation<TSpec>): Promise<MatchResultData>;
    /** @deprecated */
    checkWindow(name?: string, timeout?: number, fully?: boolean): Promise<MatchResultData>;
    /** @deprecated */
    checkFrame(element: TSpec['element'] | EyesSelector<TSpec['selector']> | string | number, timeout?: number, name?: string): Promise<MatchResultData>;
    /** @deprecated */
    checkElement(element: TSpec['element'], timeout?: number, name?: string): Promise<MatchResultData>;
    /** @deprecated */
    checkElementBy(selector: EyesSelector<TSpec['selector']>, timeout?: number, name?: string): Promise<MatchResultData>;
    /** @deprecated */
    checkRegion(region: Region, name?: string, timeout?: number): Promise<MatchResultData>;
    /** @deprecated */
    checkRegion(image: Buffer | URL | string, region: Region, name?: string, ignoreMismatch?: boolean): Promise<MatchResultData>;
    /** @deprecated */
    checkRegionByElement(element: TSpec['element'], name?: string, timeout?: number): Promise<MatchResultData>;
    /** @deprecated */
    checkRegionBy(selector: EyesSelector<TSpec['selector']>, name?: string, timeout?: number, fully?: boolean): Promise<MatchResultData>;
    /** @deprecated */
    checkRegionInFrame(frame: TSpec['element'] | EyesSelector<TSpec['selector']> | string | number, selector: EyesSelector<TSpec['selector']>, timeout?: number, name?: string, fully?: boolean): Promise<MatchResultData>;
    /** @deprecated */
    checkImage(image: Buffer | URL | string, name?: string, ignoreMismatch?: boolean): Promise<MatchResultData>;
    locate<TLocator extends string>(target: Image, settings: VisualLocatorSettings<TLocator>): Promise<Record<TLocator, Region[]>>;
    /** @deprecated */
    locate<TLocator extends string>(settingsWithImage: VisualLocatorSettings<TLocator> & {
        image: Image['image'];
    }): Promise<Record<TLocator, Region[]>>;
    locate<TLocator extends string>(settings: VisualLocatorSettings<TLocator>): Promise<Record<TLocator, Region[]>>;
    extractTextRegions<TPattern extends string>(target: Image, settings: OCRSettings<TPattern>): Promise<Record<TPattern, TextRegion[]>>;
    /** @deprecated */
    extractTextRegions<TPattern extends string>(settingsWithImage: OCRSettings<TPattern> & {
        image: Image['image'];
    }): Promise<Record<TPattern, TextRegion[]>>;
    extractTextRegions<TPattern extends string>(settings: OCRSettings<TPattern>): Promise<Record<TPattern, TextRegion[]>>;
    extractText(target: Image, settings: OCRRegion<TSpec>[]): Promise<string[]>;
    /** @deprecated */
    extractText(settingsWithImage: (OCRRegion<never> & {
        image: Image['image'];
    })[]): Promise<string[]>;
    extractText(settings: OCRRegion<TSpec>[]): Promise<string[]>;
    close(throwErr?: boolean): Promise<TestResultsData>;
    closeAsync(): Promise<void>;
    abort(): Promise<TestResultsData>;
    abortAsync(): Promise<void>;
    /** @deprecated */
    abortIfNotClosed(): Promise<TestResults>;
    getResults(throwErr?: boolean): Promise<TestResultsData[]>;
    getViewportSize(): Promise<RectangleSizeData>;
    setViewportSize(size: RectangleSize): Promise<void>;
    getScrollRootElement(): TSpec['element'] | EyesSelector<TSpec['selector']>;
    setScrollRootElement(scrollRootElement: TSpec['element'] | EyesSelector<TSpec['selector']>): void;
    setLogHandler(handler: LogHandlerData | LogHandler): void;
    getLogHandler(): LogHandlerData;
    setCutProvider(cutProvider: CutProviderData): void;
    setImageCut(cutProvider: CutProviderData): void;
    getIsCutProviderExplicitlySet(): boolean;
    getRotation(): ImageRotationData;
    setRotation(rotation: ImageRotation | ImageRotationData): void;
    getScaleRatio(): number;
    setScaleRatio(scaleRatio: number): void;
    getSaveDebugScreenshots(): boolean;
    setSaveDebugScreenshots(save: boolean): void;
    getDebugScreenshotsPath(): string;
    setDebugScreenshotsPath(path: string): void;
    getDebugScreenshotsPrefix(): string;
    setDebugScreenshotsPrefix(prefix: string): void;
    addProperty(name: string, value: string): ConfigurationData<TSpec>;
    clearProperties(): ConfigurationData<TSpec>;
    getBatch(): BatchInfoData;
    setBatch(batch: BatchInfo): void;
    setBatch(name: string, id?: string, startedAt?: Date | string): void;
    getApiKey(): string;
    setApiKey(apiKey: string): void;
    getTestName(): string;
    setTestName(testName: string): void;
    getAppName(): string;
    setAppName(appName: string): void;
    getBaselineBranchName(): string;
    setBaselineBranchName(baselineBranchName: string): void;
    /** @deprecated */
    getBaselineName(): string;
    /** @deprecated */
    setBaselineName(baselineName: string): void;
    getBaselineEnvName(): string;
    setBaselineEnvName(baselineEnvName: string): void;
    getBranchName(): string;
    setBranchName(branchName: string): void;
    getHostApp(): string;
    setHostApp(hostApp: string): void;
    getHostOS(): string;
    setHostOS(hostOS: string): void;
    getHostAppInfo(): string;
    setHostAppInfo(hostAppInfo: string): void;
    getHostOSInfo(): string;
    setHostOSInfo(hostOSInfo: string): void;
    getDeviceInfo(): string;
    setDeviceInfo(deviceInfo: string): void;
    setIgnoreCaret(ignoreCaret: boolean): void;
    getIgnoreCaret(): boolean;
    getIsDisabled(): boolean;
    setIsDisabled(isDisabled: boolean): void;
    getMatchLevel(): MatchLevelEnum;
    setMatchLevel(matchLevel: MatchLevel): void;
    getMatchTimeout(): number;
    setMatchTimeout(matchTimeout: number): void;
    getParentBranchName(): string;
    setParentBranchName(parentBranchName: string): void;
    setProxy(proxy: ProxySettings): void;
    setProxy(url: string, username?: string, password?: string, isHttpOnly?: boolean): void;
    setProxy(isEnabled: false): void;
    getProxy(): ProxySettingsData;
    getSaveDiffs(): boolean;
    setSaveDiffs(saveDiffs: boolean): void;
    getSaveNewTests(): boolean;
    setSaveNewTests(saveNewTests: boolean): void;
    getServerUrl(): string;
    setServerUrl(serverUrl: string): void;
    getSendDom(): boolean;
    setSendDom(sendDom: boolean): void;
    getHideCaret(): boolean;
    setHideCaret(hideCaret: boolean): void;
    getHideScrollbars(): boolean;
    setHideScrollbars(hideScrollbars: boolean): void;
    getForceFullPageScreenshot(): boolean;
    setForceFullPageScreenshot(forceFullPageScreenshot: boolean): void;
    getWaitBeforeScreenshots(): number;
    setWaitBeforeScreenshots(waitBeforeScreenshots: number): void;
    getStitchMode(): StitchModeEnum;
    setStitchMode(stitchMode: StitchMode): void;
    getStitchOverlap(): number;
    setStitchOverlap(stitchOverlap: number): void;
    /**
     * @undocumented
     * @deprecated
     */
    getSessionEventHandlers(): SessionEventHandlers;
    /**
     * @undocumented
     * @deprecated
     */
    addSessionEventHandler(handler: SessionEventHandler): void;
    /**
     * @undocumented
     * @deprecated
     */
    removeSessionEventHandler(handler: SessionEventHandler): void;
    /**
     * @undocumented
     * @deprecated
     */
    clearSessionEventHandlers(): void;
}
