import { TestFile, TestCase, TestResult, Plugin, ProcedureDefinition, TestDataSet } from '../core';
export interface ExecutorOptions {
    headless?: boolean;
    timeout?: number;
    baseUrl?: string;
    variables?: Record<string, unknown>;
    plugins?: Plugin[];
    procedures?: Record<string, ProcedureDefinition>;
}
export declare class TestExecutor {
    private options;
    private browser;
    private browserContext;
    private page;
    private plugins;
    private procedures;
    constructor(options?: ExecutorOptions);
    initialize(): Promise<void>;
    cleanup(): Promise<void>;
    private requiresBrowser;
    runTestFile(testFile: TestFile): Promise<TestResult[]>;
    private createBaseContext;
    runTestWithData(test: TestCase, testFile: TestFile, dataSet: TestDataSet, dataIndex: number, sharedVariables?: Map<string, unknown>): Promise<TestResult>;
    runTest(test: TestCase, testFile: TestFile, sharedVariables?: Map<string, unknown>): Promise<TestResult>;
    private runSteps;
    private resolveVariableDefaults;
    private registerCustomBlocksFromProcedures;
    private extractStepsFromBlocklyState;
    private blocksToSteps;
    private blockToStep;
    private runStep;
    private executeProcedure;
    private resolveVariablePlaceholders;
    private resolveParams;
    private createLogger;
}
