import { UiControllerClient } from './ui-controller-client';
import { InferenceClient } from './inference-client';
import { Annotation } from '../core/annotation/annotation';
import { CustomElementJson } from '../core/model/custom-element-json';
import { DetectedElement } from '../core/model/annotation-result/detected-element';
import { UiControllerClientConnectionState } from './ui-controller-client-connection-state';
import { Instruction, StepReporter } from '../core/reporting';
import { RetryStrategy } from './retry-strategies/retry-strategy';
import { ModelCompositionBranch } from './model-composition-branch';
export declare class ExecutionRuntime {
    private uiControllerClient;
    private inferenceClient;
    private stepReporter;
    private retryStrategy;
    constructor(uiControllerClient: UiControllerClient, inferenceClient: InferenceClient, stepReporter: StepReporter, retryStrategy: RetryStrategy);
    connect(): Promise<UiControllerClientConnectionState>;
    disconnect(): void;
    startVideoRecording(): Promise<void>;
    stopVideoRecording(): Promise<void>;
    readVideoRecording(): Promise<string>;
    private requestControl;
    executeInstruction(instruction: Instruction, modelComposition: ModelCompositionBranch[]): Promise<void>;
    private readonly EXEC_REPETITION_COUNT;
    private executeCommandRepeatedly;
    /**
     * Command prediction may fail, e.g., due to application still loading
     * --> retry with linear back-off
     */
    private predictCommandWithRetry;
    private isImageRequiredByConfig;
    private isImageRequired;
    private isAnnotationRequired;
    getScreenshot(): Promise<string>;
    private buildSnapshot;
    private predictCommand;
    annotateInteractively(): Promise<void>;
    takeScreenshotIfImageisNotProvided(imagePath?: string): Promise<string>;
    getDetectedElements(instruction: string, customElementJson?: CustomElementJson[]): Promise<DetectedElement[]>;
    annotateImage(imagePath?: string, customElementJson?: CustomElementJson[], elements?: DetectedElement[]): Promise<Annotation>;
    predictVQA(prompt: string, config?: object): Promise<any>;
}
