import type { ExecutionContextLifecycle, ExecutionEnvironment } from '../types/execution/index.js';
import { type Logger } from '../utils/logger.js';
export interface BaseExecutionEvent {
    type: string;
    contextId: string;
    [key: string]: unknown;
}
export type ExecutionEventListener = (event: BaseExecutionEvent) => void;
export declare abstract class BaseExecutionContext implements ExecutionContextLifecycle {
    abstract readonly id: string;
    abstract readonly environment: ExecutionEnvironment;
    protected log: Logger;
    protected ready: boolean;
    private listeners;
    constructor();
    initialize(): Promise<void>;
    isReady(): boolean;
    teardown(): Promise<void>;
    on(listener: ExecutionEventListener): void;
    off(listener: ExecutionEventListener): void;
    protected emit(event: BaseExecutionEvent): void;
    protected abstract doInitialize(): Promise<void>;
    protected abstract doTeardown(): Promise<void>;
}
//# sourceMappingURL=base.d.ts.map