import { MablApiClient } from '@mablhq-internal/runtime/api/mablApiClient';
import { Action, ExecutionPhase, MablCoreEventEmitter } from '@mablhq-internal/runtime/core/messaging/messaging';
import { BaseExecutionContext, ExecutionContextWithBrowser } from '@mablhq-internal/runtime/execution';
import { TestContext } from '@mablhq-internal/runtime/execution';
import { MobileConsoleLogger } from '@mablhq-internal/runtime/execution';
import { MablStep } from '@mablhq/test-model/MablStep';
import { StepDescriptor } from '@mablhq/test-model/types/StepDescriptor';
import { ExecutionStepResult, MobileExecutorInterface } from '@mablhq-internal/runtime/execution';
import { MobileExecutorStore } from '@mablhq-internal/runtime/execution';
import { MobileTestEnvironment } from '../MobileTestEnvironment';
import { MobileEnvConfig } from '../types';
import { CookieJar } from 'tough-cookie';
import ElementContextSwitcher from './ElementContextSwitcher';
import { Browser } from '@mablhq-internal/runtime/browserLauncher';
import { TestCreationContext } from '@mablhq-internal/runtime/mablApi';
import { TestExecutionProxy } from '@mablhq-internal/runtime/execution';
import { ExecutionAgentBridge } from '@mablhq-internal/runtime/execution';
export declare const MAX_STEP_EXECUTION_TIME_MS: number;
export declare class MobileTestExecutionContext extends BaseExecutionContext implements ExecutionContextWithBrowser {
    readonly mobileEnvConfig: MobileEnvConfig;
    readonly mablApiClient: MablApiClient;
    readonly testContext: TestContext;
    readonly mablEventEmitter: MablCoreEventEmitter;
    log: MobileConsoleLogger;
    readonly executorStore: MobileExecutorStore;
    private readonly testExecutionProxy?;
    readonly isMobile: true;
    mobileTestEnvironment: MobileTestEnvironment;
    private cookieJar?;
    browser?: Browser;
    private findExecutionShortCircuited;
    private recordingWhileTrainingMode;
    private isStepExecutionInProgress;
    contextSwitcher: ElementContextSwitcher;
    action: Action;
    executionPhase: ExecutionPhase;
    chromeInitHasOcurred: boolean;
    constructor(mobileEnvConfig: MobileEnvConfig, mablApiClient: MablApiClient, testContext: TestContext, mablEventEmitter: MablCoreEventEmitter, log?: MobileConsoleLogger, executorStore?: MobileExecutorStore, currentMobileTestEnv?: MobileTestEnvironment, testExecutionProxy?: TestExecutionProxy | undefined);
    initializeMobileTestEnvironment(): Promise<void>;
    initializeHeadlessBrowserForSnippetExecution(): Promise<void>;
    injectAppiumWebdriverCode(): Promise<void>;
    private initializeContextSwitcher;
    runStep(step: MablStep, executor: MobileExecutorInterface<StepDescriptor>, maxTimeout?: number): Promise<ExecutionStepResult>;
    shutdown(): Promise<void>;
    getCookieJar(): CookieJar;
    isFindExecutionShortCircuited(): boolean;
    setRecordingWhileTrainingMode(recordingWhileTrainingMode: boolean): void;
    isRecordingWhileTrainingMode(): boolean;
    setShortCircuitFindExecution(): void;
    clearShortCircuitFindExecution(): void;
    isRunningStep(): boolean;
    generateTestCreationContext(): TestCreationContext;
    getExecutionAgentBridge(): ExecutionAgentBridge;
}
export declare function isMobileTestExecutionContext(context: BaseExecutionContext): context is MobileTestExecutionContext;
//# sourceMappingURL=MobileTestExecutionContext.d.ts.map