/**
 * EXECUTION TEMPLATES
 *
 * Pre-defined execution templates for common operations.
 * Supports template composition and customization.
 */
import type { OnFailureStrategy } from './types.js';
/**
 * Template step definition
 */
export interface TemplateStep {
    /** Step identifier (optional, auto-generated if not provided) */
    id?: string;
    /** Human-readable name */
    name: string;
    /** Action type to execute */
    action: string;
    /** Action parameters (supports {{path}} placeholders) */
    params?: Record<string, unknown>;
    /** Timeout in milliseconds */
    timeout?: number;
    /** Number of retries on failure */
    retries?: number;
    /** Strategy on failure */
    onFailure?: OnFailureStrategy;
    /** Optional description */
    description?: string;
    /** Estimated duration in milliseconds */
    estimatedDuration?: number;
    /** Whether this step is critical */
    critical?: boolean;
}
/**
 * Execution template definition
 */
export interface ExecutionTemplate {
    /** Unique template name */
    name: string;
    /** Template description */
    description: string;
    /** Template version */
    version: string;
    /** Execution steps */
    steps: TemplateStep[];
    /** Step dependencies (step ID -> dependent step IDs) */
    dependencies?: Record<string, string[]>;
    /** Default timeout multiplier */
    defaultTimeoutMultiplier?: number;
    /** Template metadata */
    metadata?: Record<string, unknown>;
}
/**
 * Get a template by name
 */
export declare function getTemplate(name: string): ExecutionTemplate | undefined;
/**
 * Register a custom template
 */
export declare function registerTemplate(template: ExecutionTemplate): void;
/**
 * List all available templates
 */
export declare function listTemplates(): string[];
/**
 * Compose multiple templates into one
 */
export declare function composeTemplates(name: string, templates: string[], options?: {
    description?: string;
    version?: string;
    sequentialDependencies?: boolean;
}): ExecutionTemplate;
/**
 * Create a template from steps array
 */
export declare function createTemplate(name: string, steps: TemplateStep[], options?: {
    description?: string;
    version?: string;
    dependencies?: Record<string, string[]>;
    metadata?: Record<string, unknown>;
}): ExecutionTemplate;
//# sourceMappingURL=templates.d.ts.map