import { EventEmitter } from 'events';
import { ILogger, PromptDefinition } from '../types/common';
import { ExecutionOptions } from '../types/execution';
import { StandardTool } from '../types/tool';
import { IAIProvider } from '../types/provider';
interface PromptRegistry {
    get(name: string): StructuredPrompt;
    getPromptsSortedByPriority(): StructuredPrompt[];
    getPromptsByConfig(config: Partial<NonNullable<PromptDefinition['config']>>): StructuredPrompt[];
}
interface StructuredPrompt {
    definition: PromptDefinition;
    render(variables: Record<string, string>, availablePrompts: PromptDefinition[]): string;
    getPriority(): number | undefined;
    getConfig(): PromptDefinition['config'] | undefined;
}
export declare class PromptExecution extends EventEmitter {
    private registry;
    private initialPrompt;
    private provider;
    private availablePrompts;
    private options;
    private logger;
    private state;
    private ajv;
    private toolManager;
    constructor(registry: PromptRegistry, initialPrompt: StructuredPrompt, provider: IAIProvider, availablePrompts: PromptDefinition[], options: ExecutionOptions | undefined, logger: ILogger);
    execute(initialReplacements?: Record<string, string>): Promise<void>;
    registerTool(tool: StandardTool): void;
    private executePromptWithRetry;
    private executePromptWithTimeout;
    private executePrompt;
    private processToolCall;
    private validateResponse;
    private evaluateCondition;
    private saveState;
    private loadState;
}
export {};
