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 type { IosDeviceTargetNames } from '../enums/IosMultiDeviceTarget';
import type { AndroidDeviceTargetNames } from '../enums/AndroidMultiDeviceTarget';
import { IosDeviceTarget } from './IosDeviceTarget';
import { AndroidDeviceTarget } from './AndroidDeviceTarget';
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';
import { LatestCommitInfo } from './LatestCommitInfo';
type MultiDeviceTargetTypes = IosDeviceTargetNames | AndroidDeviceTargetNames | IosDeviceTarget | AndroidDeviceTarget;
export type Configuration<TSpec extends Core.SpecType = Core.SpecType> = {
    accessibilityValidation?: AccessibilitySettings;
    agentId?: string;
    apiKey?: string;
    appName?: string;
    autProxy?: AUTProxySettings;
    baselineBranchName?: string;
    baselineEnvName?: string;
    batch?: BatchInfo;
    branchName?: string;
    browsersInfo?: RenderInfo[];
    captureStatusBar?: boolean;
    compareWithParentBranch?: boolean;
    /** @undocumented */
    concurrentSessions?: number;
    /** @undocumented */
    connectionTimeout?: number;
    cut?: CutProvider;
    /** @undocumented */
    debugScreenshots?: DebugScreenshotProvider;
    defaultMatchSettings?: ImageMatchSettings;
    deviceInfo?: string;
    bypassCSP?: boolean;
    disableBrowserFetching?: boolean;
    disableNMLUrlCache?: boolean;
    displayName?: string;
    /** @undocumented */
    dontCloseBatches?: boolean;
    enablePatterns?: boolean;
    environmentName?: string;
    /** @deprecated use fully instead */
    forceFullPageScreenshot?: boolean;
    fully?: boolean;
    gitMergeBaseTimestamp?: string;
    latestCommitInfo?: LatestCommitInfo;
    hideCaret?: boolean;
    hideScrollbars?: boolean;
    hostApp?: string;
    hostAppInfo?: string;
    hostOS?: string;
    hostOSInfo?: string;
    /** @internal */
    httpVersion?: 1 | 2;
    ignoreBaseline?: boolean;
    ignoreCaret?: boolean;
    ignoreDisplacements?: boolean;
    ignoreGitMergeBase?: boolean;
    isDisabled?: boolean;
    layoutBreakpoints?: boolean | number[] | {
        breakpoints: number[] | boolean;
        heightBreakpoints?: boolean;
        reload?: boolean;
    };
    matchLevel?: MatchLevel;
    matchTimeout?: number;
    mobileOptions?: {
        keepNavigationBar?: boolean;
    };
    parentBranchName?: string;
    properties?: PropertyData[];
    proxy?: ProxySettings;
    /** @undocumented */
    removeSession?: boolean;
    rotation?: ImageRotation;
    saveDiffs?: boolean;
    saveFailedTests?: boolean;
    saveNewTests?: boolean;
    scaleRatio?: number;
    scrollRootElement?: TSpec['element'] | EyesSelector<TSpec['selector']>;
    sendDom?: boolean;
    serverUrl?: string;
    sessionType?: SessionType;
    stitchMode?: StitchMode;
    stitchOverlap?: number;
    testName?: string;
    useDom?: boolean;
    viewportSize?: RectangleSize;
    visualGridOptions?: Record<string, any>;
    waitBeforeCapture?: number | (() => Promise<void>);
    waitBeforeScreenshots?: number;
    /** @internal */
    skipRootHtmlResource?: boolean;
};
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>);
    /** @internal */
    get skipRootHtmlResource(): boolean;
    /** @internal */
    set skipRootHtmlResource(skipRootHtmlResource: boolean);
    /** @internal */
    getSkipRootHtmlResource(): boolean;
    /** @internal */
    setSkipRootHtmlResource(skipRootHtmlResource: boolean): this;
    get accessibilityValidation(): AccessibilitySettings;
    set accessibilityValidation(accessibilityValidation: AccessibilitySettings);
    getAccessibilityValidation(): AccessibilitySettings;
    setAccessibilityValidation(accessibilityValidation: AccessibilitySettings): 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 appName(): string;
    set appName(appName: string);
    getAppName(): string;
    setAppName(appName: string): this;
    get autProxy(): AUTProxySettings;
    set autProxy(autProxy: AUTProxySettings);
    getAutProxy(): AUTProxySettings;
    setAutProxy(autProxy: AUTProxySettings): this;
    get baselineBranchName(): string;
    set baselineBranchName(baselineBranchName: string);
    getBaselineBranchName(): string;
    setBaselineBranchName(baselineBranchName: string): this;
    get baselineEnvName(): string;
    set baselineEnvName(baselineEnvName: string);
    getBaselineEnvName(): string;
    setBaselineEnvName(baselineEnvName: string): this;
    get batch(): BatchInfo;
    set batch(batch: BatchInfo);
    getBatch(): BatchInfoData;
    setBatch(batch: BatchInfo): this;
    get branchName(): string;
    set branchName(branchName: string);
    getBranchName(): string;
    setBranchName(branchName: string): 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;
    /**
     * Add iOS and/or Android devices for multi-device testing.
     *
     * @param devices - Device targets. Supports three formats:
     *   - Plain strings: `'iPhone 13'`, `'Galaxy S25'`
     *   - Enum values: `IosMultiDeviceTarget.iPhone_13`, `AndroidMultiDeviceTarget.Galaxy_S25`
     *   - Fluent API: `IosMultiDeviceTarget.iPhone_13.landscape()`, `AndroidMultiDeviceTarget.Galaxy_S25.portrait()`
     *
     * @example
     * ```typescript
     * // Plain strings (backward compatible)
     * config.addMultiDeviceTarget('iPhone 13', 'Galaxy S25')
     *
     * // Enum values
     * config.addMultiDeviceTarget(IosMultiDeviceTarget.iPhone_13, AndroidMultiDeviceTargetEnum.Galaxy_S25)
     *
     * // Fluent API with orientation
     * config.addMultiDeviceTarget(
     *   IosMultiDeviceTarget.iPhone_13.landscape(),
     *   AndroidMultiDeviceTarget.Galaxy_S25.portrait()
     * )
     *
     * // Mix all three styles
     * config.addMultiDeviceTarget(
     *   'iPhone 14',
     *   IosMultiDeviceTarget.iPhone_15,
     *   IosMultiDeviceTarget.iPhone_16.landscape()
     * )
     * ```
     */
    addMultiDeviceTarget(...devices: MultiDeviceTargetTypes[]): this;
    private _isIosDevice;
    private _isAndroidDevice;
    get captureStatusBar(): boolean;
    set captureStatusBar(captureStatusBar: boolean);
    getCaptureStatusBar(): boolean;
    setCaptureStatusBar(captureStatusBar: boolean): this;
    get compareWithParentBranch(): boolean;
    set compareWithParentBranch(compareWithParentBranch: boolean);
    getCompareWithParentBranch(): boolean;
    setCompareWithParentBranch(compareWithParentBranch: boolean): this;
    /** @undocumented */
    get concurrentSessions(): number;
    /** @undocumented */
    set concurrentSessions(concurrentSessions: number);
    /** @undocumented */
    getConcurrentSessions(): number;
    /** @undocumented */
    setConcurrentSessions(concurrentSessions: number): this;
    /** @undocumented */
    get connectionTimeout(): number;
    /** @undocumented */
    set connectionTimeout(connectionTimeout: number);
    /** @undocumented */
    getConnectionTimeout(): number;
    /** @undocumented */
    setConnectionTimeout(connectionTimeout: number): this;
    get cut(): CutProvider;
    set cut(cut: CutProvider);
    getCut(): CutProvider;
    setCut(cut: CutProvider): this;
    /** @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 defaultMatchSettings(): ImageMatchSettings;
    set defaultMatchSettings(defaultMatchSettings: ImageMatchSettings);
    getDefaultMatchSettings(): ImageMatchSettings;
    setDefaultMatchSettings(defaultMatchSettings: ImageMatchSettings): this;
    get deviceInfo(): string;
    set deviceInfo(deviceInfo: string);
    getDeviceInfo(): string;
    setDeviceInfo(deviceInfo: string): this;
    get bypassCSP(): boolean;
    set bypassCSP(bypassCSP: boolean);
    getBypassCSP(): boolean;
    setBypassCSP(bypassCSP: boolean): this;
    get disableBrowserFetching(): boolean;
    set disableBrowserFetching(disableBrowserFetching: boolean);
    getDisableBrowserFetching(): boolean;
    setDisableBrowserFetching(disableBrowserFetching: boolean): this;
    get disableNMLUrlCache(): boolean;
    set disableNMLUrlCache(disableNMLUrlCache: boolean);
    getDisableNMLUrlCache(): boolean;
    setDisableNMLUrlCache(disableNMLUrlCache: boolean): this;
    get displayName(): string;
    set displayName(displayName: string);
    getDisplayName(): string;
    setDisplayName(displayName: string): this;
    /** @undocumented */
    get dontCloseBatches(): boolean;
    /** @undocumented */
    set dontCloseBatches(dontCloseBatches: boolean);
    /** @undocumented */
    getDontCloseBatches(): boolean;
    /** @undocumented */
    setDontCloseBatches(dontCloseBatches: boolean): this;
    get enablePatterns(): boolean;
    set enablePatterns(enablePatterns: boolean);
    getEnablePatterns(): boolean;
    setEnablePatterns(enablePatterns: boolean): this;
    get environmentName(): string;
    set environmentName(environmentName: string);
    getEnvironmentName(): string;
    setEnvironmentName(environmentName: string): this;
    get forceFullPageScreenshot(): boolean;
    set forceFullPageScreenshot(forceFullPageScreenshot: boolean);
    getForceFullPageScreenshot(): boolean;
    setForceFullPageScreenshot(forceFullPageScreenshot: boolean): this;
    get gitMergeBaseTimestamp(): string;
    set gitMergeBaseTimestamp(gitMergeBaseTimestamp: string);
    getGitMergeBaseTimestamp(): string;
    setGitMergeBaseTimestamp(gitMergeBaseTimestamp: string): this;
    get latestCommitInfo(): LatestCommitInfo;
    set latestCommitInfo(latestCommitInfo: LatestCommitInfo);
    getLatestCommitInfo(): LatestCommitInfo;
    setLatestCommitInfo(latestCommitInfo: LatestCommitInfo): this;
    get hideCaret(): boolean;
    set hideCaret(hideCaret: boolean);
    getHideCaret(): boolean;
    setHideCaret(hideCaret: boolean): this;
    get hideScrollbars(): boolean;
    set hideScrollbars(hideScrollbars: boolean);
    getHideScrollbars(): boolean;
    setHideScrollbars(hideScrollbars: boolean): this;
    get hostApp(): string;
    set hostApp(hostApp: string);
    getHostApp(): string;
    setHostApp(hostApp: string): this;
    get hostAppInfo(): string;
    set hostAppInfo(hostAppInfo: string);
    getHostAppInfo(): string;
    setHostAppInfo(hostAppInfo: string): this;
    get hostOS(): string;
    set hostOS(hostOS: string);
    getHostOS(): string;
    setHostOS(hostOS: string): this;
    get hostOSInfo(): string;
    set hostOSInfo(hostOSInfo: string);
    getHostOSInfo(): string;
    setHostOSInfo(hostOSInfo: string): this;
    /** @internal */
    get httpVersion(): 1 | 2;
    /** @internal */
    set httpVersion(httpVersion: 1 | 2);
    /** @internal */
    getHttpVersion(): 1 | 2;
    /** @internal */
    setHttpVersion(httpVersion: 1 | 2): this;
    get ignoreBaseline(): boolean;
    set ignoreBaseline(ignoreBaseline: boolean);
    getIgnoreBaseline(): boolean;
    setIgnoreBaseline(ignoreBaseline: boolean): this;
    get ignoreCaret(): boolean;
    set ignoreCaret(ignoreCaret: boolean);
    getIgnoreCaret(): boolean;
    setIgnoreCaret(ignoreCaret: boolean): this;
    get ignoreDisplacements(): boolean;
    set ignoreDisplacements(ignoreDisplacements: boolean);
    getIgnoreDisplacements(): boolean;
    setIgnoreDisplacements(ignoreDisplacements: boolean): this;
    get ignoreGitMergeBase(): boolean;
    set ignoreGitMergeBase(ignoreGitMergeBase: boolean);
    getIgnoreGitMergeBase(): boolean;
    setIgnoreGitMergeBase(ignoreGitMergeBase: boolean): this;
    get isDisabled(): boolean;
    set isDisabled(isDisabled: boolean);
    getIsDisabled(): boolean;
    setIsDisabled(isDisabled: boolean): this;
    get layoutBreakpoints(): boolean | number[] | {
        breakpoints: number[] | boolean;
        heightBreakpoints?: boolean;
        reload?: boolean;
    };
    set layoutBreakpoints(layoutBreakpoints: boolean | number[] | {
        breakpoints: number[] | boolean;
        heightBreakpoints?: boolean;
        reload?: boolean;
    });
    getLayoutBreakpoints(): boolean | number[] | {
        breakpoints: number[] | boolean;
        heightBreakpoints?: boolean;
        reload?: boolean;
    };
    setLayoutBreakpoints(layoutBreakpoints: boolean | number[] | {
        breakpoints: number[] | boolean;
        heightBreakpoints?: boolean;
        reload?: boolean;
    }): this;
    get matchLevel(): MatchLevel;
    set matchLevel(matchLevel: MatchLevel);
    getMatchLevel(): MatchLevelEnum;
    setMatchLevel(matchLevel: MatchLevel): this;
    get matchTimeout(): number;
    set matchTimeout(matchTimeout: number);
    getMatchTimeout(): number;
    setMatchTimeout(matchTimeout: number): this;
    get mobileOptions(): {
        keepNavigationBar?: boolean;
    };
    set mobileOptions(mobileOptions: {
        keepNavigationBar?: boolean;
    });
    getMobileOptions(): {
        keepNavigationBar?: boolean;
    };
    setMobileOptions(mobileOptions: {
        keepNavigationBar?: boolean;
    }): this;
    get parentBranchName(): string;
    set parentBranchName(parentBranchName: string);
    getParentBranchName(): string;
    setParentBranchName(parentBranchName: string): 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 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;
    /** @undocumented */
    get removeSession(): boolean;
    /** @undocumented */
    set removeSession(removeSession: boolean);
    /** @undocumented */
    getRemoveSession(): boolean;
    /** @undocumented */
    setRemoveSession(removeSession: boolean): this;
    get rotation(): ImageRotation;
    set rotation(rotation: ImageRotation);
    getRotation(): ImageRotationData;
    setRotation(rotation: ImageRotation | ImageRotationData): this;
    get saveDiffs(): boolean;
    set saveDiffs(saveDiffs: boolean);
    getSaveDiffs(): boolean;
    setSaveDiffs(saveDiffs: 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 scaleRatio(): number;
    set scaleRatio(scaleRatio: number);
    getScaleRatio(): number;
    setScaleRatio(scaleRatio: 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 sendDom(): boolean;
    set sendDom(sendDom: boolean);
    getSendDom(): boolean;
    setSendDom(sendDom: boolean): this;
    get serverUrl(): string;
    set serverUrl(serverUrl: string);
    getServerUrl(): string;
    setServerUrl(serverUrl: string): this;
    get sessionType(): SessionType;
    set sessionType(sessionType: SessionType);
    getSessionType(): SessionTypeEnum;
    setSessionType(sessionType: SessionType): this;
    get stitchMode(): StitchMode;
    set stitchMode(stitchMode: StitchMode);
    getStitchMode(): StitchModeEnum;
    setStitchMode(stitchMode: StitchMode): this;
    get stitchOverlap(): number;
    set stitchOverlap(stitchOverlap: number);
    getStitchOverlap(): number;
    setStitchOverlap(stitchOverlap: number): this;
    get testName(): string;
    set testName(testName: string);
    getTestName(): string;
    setTestName(testName: string): this;
    get useDom(): boolean;
    set useDom(useDom: boolean);
    getUseDom(): boolean;
    setUseDom(useDom: boolean): this;
    get viewportSize(): RectangleSize;
    set viewportSize(viewportSize: RectangleSize);
    getViewportSize(): RectangleSizeData;
    setViewportSize(viewportSize: RectangleSize): 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 waitBeforeCapture(): number | (() => Promise<void>);
    set waitBeforeCapture(waitBeforeCapture: number | (() => Promise<void>));
    getWaitBeforeCapture(): number | (() => Promise<void>);
    setWaitBeforeCapture(waitBeforeCapture: number | (() => Promise<void>)): this;
    get waitBeforeScreenshots(): number;
    set waitBeforeScreenshots(waitBeforeScreenshots: number);
    getWaitBeforeScreenshots(): number;
    setWaitBeforeScreenshots(waitBeforeScreenshots: number): this;
    get fully(): boolean;
    set fully(fully: boolean);
    getFully(): boolean;
    setFully(fully: boolean): this;
    /** @internal */
    toObject(): Configuration<TSpec>;
    /** @internal */
    toJSON(): Core.Config<TSpec, 'classic'> & Core.Config<TSpec, 'ufg'>;
    /** @internal */
    toString(): string;
}
export {};
