import type { ProducerLogger } from "../../logger.js";
import type { ProgressCallback } from "../renderOrchestrator.js";
import { OrderedRenderEventPublisher } from "./renderEventPublisher.js";
export interface RenderExecutionRequestIdentity {
    renderJobId: string;
    projectDir: string;
    outputPath: string;
}
export type RenderDisposer = () => Promise<void> | void;
export interface RenderExecutionContextOptions {
    request: RenderExecutionRequestIdentity;
    logger: ProducerLogger;
    progressSink?: ProgressCallback;
    signal?: AbortSignal;
    deadlineAtMs?: number;
}
/** Owns one render execution's control-plane resources and terminal cleanup. */
export declare class RenderExecutionContext {
    readonly request: Readonly<RenderExecutionRequestIdentity>;
    readonly signal: AbortSignal | undefined;
    readonly logger: ProducerLogger;
    readonly events: OrderedRenderEventPublisher;
    readonly onProgress: ProgressCallback | undefined;
    private readonly disposers;
    private disposePromise;
    constructor(options: RenderExecutionContextOptions);
    /** Register cleanup in acquisition order; execution is LIFO and exactly once. */
    defer(label: string, dispose: RenderDisposer): () => void;
    assertActive(createError?: () => Error): void;
    dispose(): Promise<void>;
    private disposeOnce;
}
//# sourceMappingURL=renderExecutionContext.d.ts.map