import { PolyVClient } from 'polyv-live-api-sdk';
import { SceneConfig } from './scene-config-loader';
export interface ResourceResult {
    id: string;
    type: string;
    output: Record<string, any>;
    status: 'created' | 'would_create' | 'failed';
}
export interface ExecutionResult {
    success: boolean;
    resources: ResourceResult[];
    duration?: number;
    dryRun?: boolean;
    resourceTimings?: Record<string, number>;
}
export interface ProgressEvent {
    phase: 'creating' | 'created' | 'rolling_back' | 'rolled_back';
    resourceId: string;
    resourceType: string;
    current?: number;
    total?: number;
}
export interface ExecutionOptions {
    dryRun?: boolean;
    timeout?: number;
    onProgress?: (event: ProgressEvent) => void;
}
export declare class SceneExecutor {
    private readonly handlers;
    private readonly resolver;
    private progressCallback?;
    private lastExecution;
    constructor(_client: PolyVClient);
    setProgressCallback(callback: (event: ProgressEvent) => void): void;
    getLastExecution(): {
        rolledBack: string[];
        failedAt?: string;
    };
    execute(config: SceneConfig, options?: ExecutionOptions): Promise<ExecutionResult>;
    getExecutionOrder(config: SceneConfig): string[];
    private reportProgress;
    private trackCreatedResource;
}
//# sourceMappingURL=scene-executor.d.ts.map