import type { Core, Eyes, FunctionalSession, EyesServerSettings, OpenSettings, ReportSettings, HeartbeatSettings } from '../types';
import { type Fetch } from '@applitools/req';
import { type Logger } from '@applitools/logger';
import type { Heartbeat } from '../heartbeat';
export interface CoreRequests extends Core {
    openEyes(options: {
        settings: OpenSettings;
        heartbeat: Heartbeat;
        logger?: Logger;
    }): Promise<EyesRequests>;
    openFunctionalSession(options: {
        settings: OpenSettings;
        logger?: Logger;
    }): Promise<FunctionalSessionRequests>;
    getBatchBranches(options: {
        settings: EyesServerSettings & {
            batchId: string;
        };
        logger?: Logger;
    }): Promise<{
        branchName?: string;
        parentBranchName?: string;
    }>;
    sendHeartbeat(options: {
        settings: HeartbeatSettings;
        logger?: Logger;
    }): Promise<void>;
}
export interface EyesRequests extends Eyes {
    readonly core: CoreRequests;
    report(options: {
        settings?: ReportSettings;
        logger?: Logger;
    }): Promise<void>;
}
export interface FunctionalSessionRequests extends FunctionalSession {
    readonly core: CoreRequests;
    report(options: {
        settings?: ReportSettings;
        logger?: Logger;
    }): Promise<void>;
}
export declare const makeCoreRequestsWithCache: typeof makeCoreRequests & {
    getCachedValues(): CoreRequests[];
    setCachedValue(key: any, value: CoreRequests): void;
    clearCache(): void;
};
declare function makeCoreRequests({ fetch, logger: defaultLogger }?: {
    fetch?: Fetch;
    logger?: Logger;
}): CoreRequests;
export {};
