/**
 * Skill Executor
 *
 * Executes skills by interpreting their content and invoking tools.
 */
import { EventEmitter } from 'events';
import type { Skill, SkillExecutionContext, SkillExecutionResult } from './types.js';
export interface SkillExecutorConfig {
    /** Maximum execution time in ms */
    timeout: number;
    /** Enable step-by-step execution */
    stepMode: boolean;
    /** Tool executor function */
    toolExecutor?: ToolExecutorFn;
    /** Code executor function */
    codeExecutor?: CodeExecutorFn;
}
export type ToolExecutorFn = (tool: string, args: Record<string, unknown>) => Promise<unknown>;
export type CodeExecutorFn = (code: string, language: string, context: Record<string, unknown>) => Promise<unknown>;
export declare const DEFAULT_EXECUTOR_CONFIG: SkillExecutorConfig;
export declare class SkillExecutor extends EventEmitter {
    private config;
    constructor(config?: Partial<SkillExecutorConfig>);
    /**
     * Execute a skill
     */
    execute(skill: Skill, context: SkillExecutionContext): Promise<SkillExecutionResult>;
    /**
     * Check if skill requirements are met
     */
    private checkRequirements;
    /**
     * Execute skill steps
     */
    private executeSteps;
    /**
     * Execute tool invocations
     */
    private executeTools;
    /**
     * Execute code blocks
     */
    private executeCodeBlocks;
    /**
     * Format skill as guidance text
     */
    private formatSkillGuidance;
    /**
     * Interpolate template variables in arguments
     */
    private interpolateArgs;
    /**
     * Resolve a variable from context
     */
    private resolveVariable;
    /**
     * Evaluate a condition string
     */
    private evaluateCondition;
    /**
     * Parse a condition value
     */
    private parseConditionValue;
    /**
     * Configure tool executor
     */
    setToolExecutor(executor: ToolExecutorFn): void;
    /**
     * Configure code executor
     */
    setCodeExecutor(executor: CodeExecutorFn): void;
}
export declare function getSkillExecutor(config?: Partial<SkillExecutorConfig>): SkillExecutor;
export declare function resetSkillExecutor(): void;
export default SkillExecutor;
