import type * as Core from '@applitools/core';
import { EyesSelector } from './EyesSelector';
import { SessionType, SessionTypeEnum } from '../enums/SessionType';
import { StitchMode, StitchModeEnum } from '../enums/StitchMode';
import { MatchLevel, MatchLevelEnum } from '../enums/MatchLevel';
import { BrowserType } from '../enums/BrowserType';
import { DeviceName } from '../enums/DeviceName';
import { AndroidDeviceName } from '../enums/AndroidDeviceName';
import { AndroidVersion } from '../enums/AndroidVersion';
import { IosDeviceName } from '../enums/IosDeviceName';
import { IosVersion } from '../enums/IosVersion';
import { IosMultiDeviceTarget } from '../enums/IosMultiDeviceTarget';
import { ScreenOrientation } from '../enums/ScreenOrientation';
import { AccessibilitySettings } from './AccessibilitySettings';
import { RenderInfo, RenderInfoLegacy } from './RenderInfo';
import { CutProvider } from './CutProvider';
import { DebugScreenshotProvider } from './DebugScreenshotProvider';
import { RectangleSize, RectangleSizeData } from './RectangleSize';
import { ImageRotation, ImageRotationData } from './ImageRotation';
import { ProxySettings, ProxySettingsData } from './ProxySettings';
import { AUTProxySettings } from './AUTProxySettings';
import { BatchInfo, BatchInfoData } from './BatchInfo';
import { PropertyData, PropertyDataData } from './PropertyData';
import { ImageMatchSettings } from './ImageMatchSettings';
export type Configuration<TSpec extends Core.SpecType = Core.SpecType> = {
    /** @undocumented */
    debugScreenshots?: DebugScreenshotProvider;
    agentId?: string;
    apiKey?: string;
    serverUrl?: string;
    proxy?: ProxySettings;
    autProxy?: AUTProxySettings;
    isDisabled?: boolean;
    /** @undocumented */
    connectionTimeout?: number;
    /** @undocumented */
    removeSession?: boolean;
    appName?: string;
    testName?: string;
    displayName?: string;
    viewportSize?: RectangleSize;
    sessionType?: SessionType;
    properties?: PropertyData[];
    batch?: BatchInfo;
    defaultMatchSettings?: ImageMatchSettings;
    hostApp?: string;
    hostOS?: string;
    hostAppInfo?: string;
    hostOSInfo?: string;
    deviceInfo?: string;
    baselineEnvName?: string;
    environmentName?: string;
    branchName?: string;
    parentBranchName?: string;
    gitMergeBaseTimestamp?: string;
    baselineBranchName?: string;
    compareWithParentBranch?: boolean;
    ignoreBaseline?: boolean;
    ignoreGitMergeBase?: boolean;
    saveFailedTests?: boolean;
    saveNewTests?: boolean;
    saveDiffs?: boolean;
    /** @undocumented */
    dontCloseBatches?: boolean;
    sendDom?: boolean;
    matchTimeout?: number;
    forceFullPageScreenshot?: boolean;
    waitBeforeScreenshots?: number;
    stitchMode?: StitchMode;
    hideScrollbars?: boolean;
    hideCaret?: boolean;
    stitchOverlap?: number;
    scrollRootElement?: TSpec['element'] | EyesSelector<TSpec['selector']>;
    cut?: CutProvider;
    rotation?: ImageRotation;
    scaleRatio?: number;
    /** @undocumented */
    concurrentSessions?: number;
    browsersInfo?: RenderInfo[];
    visualGridOptions?: Record<string, any>;
    layoutBreakpoints?: boolean | number[] | {
        breakpoints: number[] | boolean;
        reload?: boolean;
    };
    disableBrowserFetching?: boolean;
    waitBeforeCapture?: number;
};
export declare class ConfigurationData<TSpec extends Core.SpecType = Core.SpecType> implements Required<Configuration<TSpec>> {
    protected static readonly _spec: Core.SpecDriver<Core.SpecType>;
    private _spec;
    private _config;
    private _isElementReference;
    private _isSelectorReference;
    constructor(config?: Configuration<TSpec>);
    /** @internal */
    constructor(config?: Configuration<TSpec>, spec?: Core.SpecDriver<TSpec>);
    /** @undocumented */
    get debugScreenshots(): DebugScreenshotProvider;
    /** @undocumented */
    set debugScreenshots(debugScreenshots: DebugScreenshotProvider);
    /** @undocumented */
    getSaveDebugScreenshots(): boolean;
    /** @undocumented */
    setSaveDebugScreenshots(save: boolean): this;
    /** @undocumented */
    getDebugScreenshotsPath(): string;
    /** @undocumented */
    setDebugScreenshotsPath(path: string): this;
    /** @undocumented */
    getDebugScreenshotsPrefix(): string;
    /** @undocumented */
    setDebugScreenshotsPrefix(prefix: string): this;
    get appName(): string;
    set appName(appName: string);
    getAppName(): string;
    setAppName(appName: string): this;
    get testName(): string;
    set testName(testName: string);
    getTestName(): string;
    setTestName(testName: string): this;
    get displayName(): string;
    set displayName(displayName: string);
    getDisplayName(): string;
    setDisplayName(displayName: string): this;
    get isDisabled(): boolean;
    set isDisabled(isDisabled: boolean);
    getIsDisabled(): boolean;
    setIsDisabled(isDisabled: boolean): this;
    get matchTimeout(): number;
    set matchTimeout(matchTimeout: number);
    getMatchTimeout(): number;
    setMatchTimeout(matchTimeout: number): this;
    get sessionType(): SessionType;
    set sessionType(sessionType: SessionType);
    getSessionType(): SessionTypeEnum;
    setSessionType(sessionType: SessionType): this;
    get viewportSize(): RectangleSize;
    set viewportSize(viewportSize: RectangleSize);
    getViewportSize(): RectangleSizeData;
    setViewportSize(viewportSize: RectangleSize): this;
    get agentId(): string;
    set agentId(agentId: string);
    getAgentId(): string;
    setAgentId(agentId: string): this;
    get apiKey(): string;
    set apiKey(apiKey: string);
    getApiKey(): string;
    setApiKey(apiKey: string): this;
    get serverUrl(): string;
    set serverUrl(serverUrl: string);
    getServerUrl(): string;
    setServerUrl(serverUrl: string): this;
    get proxy(): ProxySettings;
    set proxy(proxy: ProxySettings);
    getProxy(): ProxySettingsData;
    setProxy(proxy: ProxySettings): this;
    setProxy(url: string, username?: string, password?: string, deprecatedIsHttpOnly?: boolean): this;
    setProxy(isEnabled: false): this;
    get autProxy(): AUTProxySettings;
    set autProxy(autProxy: AUTProxySettings);
    getAutProxy(): AUTProxySettings;
    setAutProxy(autProxy: AUTProxySettings): this;
    /** @undocumented */
    get connectionTimeout(): number;
    /** @undocumented */
    set connectionTimeout(connectionTimeout: number);
    /** @undocumented */
    getConnectionTimeout(): number;
    /** @undocumented */
    setConnectionTimeout(connectionTimeout: number): this;
    /** @undocumented */
    get removeSession(): boolean;
    /** @undocumented */
    set removeSession(removeSession: boolean);
    /** @undocumented */
    getRemoveSession(): boolean;
    /** @undocumented */
    setRemoveSession(removeSession: boolean): this;
    get batch(): BatchInfo;
    set batch(batch: BatchInfo);
    getBatch(): BatchInfoData;
    setBatch(batch: BatchInfo): this;
    get properties(): PropertyData[];
    set properties(properties: PropertyData[]);
    getProperties(): PropertyDataData[];
    setProperties(properties: PropertyData[]): this;
    addProperty(name: string, value: string): this;
    addProperty(prop: PropertyData): this;
    clearProperties(): this;
    get baselineEnvName(): string;
    set baselineEnvName(baselineEnvName: string);
    getBaselineEnvName(): string;
    setBaselineEnvName(baselineEnvName: string): this;
    get environmentName(): string;
    set environmentName(environmentName: string);
    getEnvironmentName(): string;
    setEnvironmentName(environmentName: string): this;
    get branchName(): string;
    set branchName(branchName: string);
    getBranchName(): string;
    setBranchName(branchName: string): this;
    get parentBranchName(): string;
    set parentBranchName(parentBranchName: string);
    getParentBranchName(): string;
    setParentBranchName(parentBranchName: string): this;
    get baselineBranchName(): string;
    set baselineBranchName(baselineBranchName: string);
    getBaselineBranchName(): string;
    setBaselineBranchName(baselineBranchName: string): this;
    get gitMergeBaseTimestamp(): string;
    set gitMergeBaseTimestamp(gitMergeBaseTimestamp: string);
    getGitMergeBaseTimestamp(): string;
    setGitMergeBaseTimestamp(gitMergeBaseTimestamp: string): this;
    get compareWithParentBranch(): boolean;
    set compareWithParentBranch(compareWithParentBranch: boolean);
    getCompareWithParentBranch(): boolean;
    setCompareWithParentBranch(compareWithParentBranch: boolean): this;
    get ignoreGitMergeBase(): boolean;
    set ignoreGitMergeBase(ignoreGitMergeBase: boolean);
    getIgnoreGitMergeBase(): boolean;
    setIgnoreGitMergeBase(ignoreGitMergeBase: boolean): this;
    get ignoreBaseline(): boolean;
    set ignoreBaseline(ignoreBaseline: boolean);
    getIgnoreBaseline(): boolean;
    setIgnoreBaseline(ignoreBaseline: boolean): this;
    get saveFailedTests(): boolean;
    set saveFailedTests(saveFailedTests: boolean);
    getSaveFailedTests(): boolean;
    setSaveFailedTests(saveFailedTests: boolean): this;
    get saveNewTests(): boolean;
    set saveNewTests(saveNewTests: boolean);
    getSaveNewTests(): boolean;
    setSaveNewTests(saveNewTests: boolean): this;
    get saveDiffs(): boolean;
    set saveDiffs(saveDiffs: boolean);
    getSaveDiffs(): boolean;
    setSaveDiffs(saveDiffs: boolean): this;
    get sendDom(): boolean;
    set sendDom(sendDom: boolean);
    getSendDom(): boolean;
    setSendDom(sendDom: boolean): this;
    get hostApp(): string;
    set hostApp(hostApp: string);
    getHostApp(): string;
    setHostApp(hostApp: string): this;
    get hostOS(): string;
    set hostOS(hostOS: string);
    getHostOS(): string;
    setHostOS(hostOS: string): this;
    get hostAppInfo(): string;
    set hostAppInfo(hostAppInfo: string);
    getHostAppInfo(): string;
    setHostAppInfo(hostAppInfo: string): this;
    get hostOSInfo(): string;
    set hostOSInfo(hostOSInfo: string);
    getHostOSInfo(): string;
    setHostOSInfo(hostOSInfo: string): this;
    get deviceInfo(): string;
    set deviceInfo(deviceInfo: string);
    getDeviceInfo(): string;
    setDeviceInfo(deviceInfo: string): this;
    get defaultMatchSettings(): ImageMatchSettings;
    set defaultMatchSettings(defaultMatchSettings: ImageMatchSettings);
    getDefaultMatchSettings(): ImageMatchSettings;
    setDefaultMatchSettings(defaultMatchSettings: ImageMatchSettings): this;
    getMatchLevel(): MatchLevelEnum;
    setMatchLevel(matchLevel: MatchLevel): this;
    getAccessibilityValidation(): AccessibilitySettings;
    setAccessibilityValidation(accessibilityValidation: AccessibilitySettings): this;
    getUseDom(): boolean;
    setUseDom(useDom: boolean): this;
    getEnablePatterns(): boolean;
    setEnablePatterns(enablePatterns: boolean): this;
    getIgnoreDisplacements(): boolean;
    setIgnoreDisplacements(ignoreDisplacements: boolean): this;
    getIgnoreCaret(): boolean;
    setIgnoreCaret(ignoreCaret: boolean): this;
    get forceFullPageScreenshot(): boolean;
    set forceFullPageScreenshot(forceFullPageScreenshot: boolean);
    getForceFullPageScreenshot(): boolean;
    setForceFullPageScreenshot(forceFullPageScreenshot: boolean): this;
    get waitBeforeScreenshots(): number;
    set waitBeforeScreenshots(waitBeforeScreenshots: number);
    getWaitBeforeScreenshots(): number;
    setWaitBeforeScreenshots(waitBeforeScreenshots: number): this;
    get waitBeforeCapture(): number;
    set waitBeforeCapture(waitBeforeCapture: number);
    getWaitBeforeCapture(): number;
    setWaitBeforeCapture(waitBeforeCapture: number): this;
    get stitchMode(): StitchMode;
    set stitchMode(stitchMode: StitchMode);
    getStitchMode(): StitchModeEnum;
    setStitchMode(stitchMode: StitchMode): this;
    get hideScrollbars(): boolean;
    set hideScrollbars(hideScrollbars: boolean);
    getHideScrollbars(): boolean;
    setHideScrollbars(hideScrollbars: boolean): this;
    get hideCaret(): boolean;
    set hideCaret(hideCaret: boolean);
    getHideCaret(): boolean;
    setHideCaret(hideCaret: boolean): this;
    get stitchOverlap(): number;
    set stitchOverlap(stitchOverlap: number);
    getStitchOverlap(): number;
    setStitchOverlap(stitchOverlap: number): this;
    get scrollRootElement(): TSpec['element'] | EyesSelector<TSpec['selector']>;
    set scrollRootElement(scrollRootElement: TSpec['element'] | EyesSelector<TSpec['selector']>);
    getScrollRootElement(): TSpec['element'] | EyesSelector<TSpec['selector']>;
    setScrollRootElement(scrollRootElement: TSpec['element'] | EyesSelector<TSpec['selector']>): this;
    get cut(): CutProvider;
    set cut(cut: CutProvider);
    getCut(): CutProvider;
    setCut(cut: CutProvider): this;
    get rotation(): ImageRotation;
    set rotation(rotation: ImageRotation);
    getRotation(): ImageRotationData;
    setRotation(rotation: ImageRotation | ImageRotationData): this;
    get scaleRatio(): number;
    set scaleRatio(scaleRatio: number);
    getScaleRatio(): number;
    setScaleRatio(scaleRatio: number): this;
    /** @undocumented */
    get concurrentSessions(): number;
    /** @undocumented */
    set concurrentSessions(concurrentSessions: number);
    /** @undocumented */
    getConcurrentSessions(): number;
    /** @undocumented */
    setConcurrentSessions(concurrentSessions: number): this;
    get browsersInfo(): RenderInfo[];
    set browsersInfo(browsersInfo: RenderInfo[]);
    getBrowsersInfo(): RenderInfo[];
    setBrowsersInfo(browsersInfo: RenderInfoLegacy[]): this;
    addBrowsers(...browsersInfo: RenderInfoLegacy[]): this;
    addBrowser(browserInfo: RenderInfoLegacy): this;
    addBrowser(width: number, height: number, name?: BrowserType): this;
    addDeviceEmulation(deviceName: DeviceName, screenOrientation?: ScreenOrientation): this;
    addMobileDevice(deviceName: AndroidDeviceName, screenOrientation: ScreenOrientation, version?: AndroidVersion): this;
    addMobileDevice(deviceName: IosDeviceName, screenOrientation: ScreenOrientation, version?: IosVersion): this;
    addMultiDeviceTarget(deviceName: IosMultiDeviceTarget): this;
    get visualGridOptions(): {
        [key: string]: any;
    };
    set visualGridOptions(visualGridOptions: {
        [key: string]: any;
    });
    getVisualGridOptions(): {
        [key: string]: any;
    };
    setVisualGridOptions(visualGridOptions: {
        [key: string]: any;
    }): this;
    setVisualGridOption(key: string, value: any): this;
    get layoutBreakpoints(): boolean | number[] | {
        breakpoints: number[] | boolean;
        reload?: boolean;
    };
    set layoutBreakpoints(layoutBreakpoints: boolean | number[] | {
        breakpoints: number[] | boolean;
        reload?: boolean;
    });
    getLayoutBreakpoints(): boolean | number[] | {
        breakpoints: number[] | boolean;
        reload?: boolean;
    };
    setLayoutBreakpoints(layoutBreakpoints: boolean | number[] | {
        breakpoints: number[] | boolean;
        reload?: boolean;
    }): this;
    get disableBrowserFetching(): boolean;
    set disableBrowserFetching(disableBrowserFetching: boolean);
    getDisableBrowserFetching(): boolean;
    setDisableBrowserFetching(disableBrowserFetching: boolean): this;
    /** @undocumented */
    get dontCloseBatches(): boolean;
    /** @undocumented */
    set dontCloseBatches(dontCloseBatches: boolean);
    /** @undocumented */
    getDontCloseBatches(): boolean;
    /** @undocumented */
    setDontCloseBatches(dontCloseBatches: boolean): this;
    /** @internal */
    toObject(): Configuration<TSpec>;
    /** @internal */
    toJSON(): Core.Config<TSpec, 'classic'> & Core.Config<TSpec, 'ufg'>;
    /** @internal */
    toString(): string;
}
