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; private lifecycleState; private initializationOperation; private teardownOperation; constructor(log?: Logger); initialize(): Promise; private performInitialize; private releaseInitialization; isReady(): boolean; teardown(): Promise; private performTeardown; private releaseTeardown; on(listener: ExecutionEventListener): void; off(listener: ExecutionEventListener): void; protected emit(event: BaseExecutionEvent): void; protected abstract doInitialize(): Promise; protected abstract doTeardown(): Promise; /** Fence subclass-owned public admission before initialization begins. */ protected onInitializationStarted(): void; /** Reopen admission only after Base has proved initialization was not superseded. */ protected onInitializationCommitted(): void; /** Fence subclass-owned public admission synchronously when teardown is requested. */ protected onTeardownRequested(): void; } //# sourceMappingURL=base.d.ts.map