import { Browser, Page, BrowserContext } from 'playwright';
import { TestFile, TestStep, StepResult, ExecutionContext, Logger, Plugin, ProcedureDefinition } from '../types';
export interface ExecutorOptions {
    headless?: boolean;
    timeout?: number;
    baseUrl?: string;
    variables?: Record<string, unknown>;
    plugins?: Plugin[];
    testIdAttribute?: string;
    baseDir?: string;
}
/**
 * Base class for test execution providing shared functionality
 * for both server and CLI executors
 */
export declare abstract class BaseTestExecutor {
    protected options: ExecutorOptions;
    protected browser: Browser | null;
    protected browserContext: BrowserContext | null;
    protected page: Page | null;
    protected plugins: Map<string, Plugin>;
    protected procedures: Map<string, ProcedureDefinition>;
    constructor(options?: ExecutorOptions);
    /**
     * Initialize browser for test execution
     */
    initialize(): Promise<void>;
    /**
     * Cleanup browser resources
     */
    cleanup(): Promise<void>;
    /**
     * Check if a test file requires browser initialization
     */
    protected requiresBrowser(testFile: TestFile): boolean;
    /**
     * Register custom blocks from procedure definitions
     */
    protected registerCustomBlocksFromProcedures(procedures: Record<string, ProcedureDefinition>): void;
    /**
     * Execute a single step
     */
    protected runStep(step: TestStep, context: ExecutionContext): Promise<StepResult>;
    /**
     * Resolve step parameters, executing nested blocks
     */
    protected resolveParams(params: Record<string, unknown>, context: ExecutionContext): Promise<Record<string, unknown>>;
    /**
     * Create a logger instance
     */
    protected createLogger(): Logger;
    /**
     * Resolve variable defaults from globals format
     */
    protected resolveVariableDefaults(vars?: Record<string, unknown>): Record<string, unknown>;
    /**
     * Extract steps from Blockly state
     */
    protected extractStepsFromBlocklyState(state: unknown): TestStep[];
}
