import type { DriverTarget, Core, TypedCore, Batch, Eyes, Config, OpenSettings } from './types';
import { type AsyncCache, type UFGClient } from '@applitools/ufg-client';
import { type NMLClient } from '@applitools/nml-client';
import { type Logger } from '@applitools/logger';
import { type SpecType, type SpecDriver } from '@applitools/driver';
type Options<TSpec extends SpecType, TType extends 'classic' | 'ufg'> = {
    type?: TType;
    clients?: {
        ufg?: UFGClient;
        nml?: NMLClient;
    };
    batch?: Batch;
    core: Core<TSpec, TType>;
    cores?: {
        [TKey in 'classic' | 'ufg']: TypedCore<TSpec, TKey>;
    };
    spec?: SpecDriver<TSpec>;
    environment?: Record<string, any>;
    logger: Logger;
    asyncCache?: AsyncCache;
};
export declare function makeOpenEyes<TSpec extends SpecType, TDefaultType extends 'classic' | 'ufg' = 'classic'>({ type: defaultType, clients, batch, core, cores, spec, environment, logger: mainLogger, asyncCache, }: Options<TSpec, TDefaultType>): <TType extends "classic" | "ufg" = TDefaultType>({ type, settings, config, target, logger, }: {
    type?: TType | undefined;
    settings?: Partial<OpenSettings<TDefaultType> & OpenSettings<TType>> | undefined;
    config?: (Config<TSpec, TDefaultType> & Config<TSpec, TType>) | undefined;
    target?: DriverTarget<TSpec> | undefined;
    logger?: Logger | undefined;
}) => Promise<Eyes<TSpec, TType>>;
export {};
