/**
 * Runtime transform utility for applying strategy transforms per-turn.
 *
 * This module enables multi-turn attack providers (Hydra, Crescendo, etc.)
 * to apply layer transforms (audio, base64, etc.) to each turn's prompt
 * before sending to the target.
 *
 * It reuses existing strategy implementations, avoiding code duplication.
 */
import type { Strategy } from '../strategies/types';
/**
 * Layer configuration - can be a simple string ID or an object with config.
 */
export type LayerConfig = string | {
    id: string;
    config?: Record<string, unknown>;
};
/** Media data (audio or image) */
export interface MediaData {
    data: string;
    format: string;
}
/**
 * Result of runtime transform, including original prompt and any media data.
 */
export interface TransformResult {
    /** The transformed prompt (may be audio/image base64) */
    prompt: string;
    /** Original text before transform */
    originalPrompt: string;
    /** Audio data if audio layer was applied */
    audio?: MediaData;
    /** Image data if image layer was applied */
    image?: MediaData;
    /** Error message if transform failed - caller should skip the turn */
    error?: string;
}
/**
 * Applies strategy transforms to a prompt at runtime (per-turn).
 * This is used by multi-turn attack providers to transform each turn's
 * output before sending to the target.
 *
 * @param prompt - The text prompt to transform
 * @param injectVar - The variable name used for injection (e.g., 'query')
 * @param layerConfigs - Array of layer configurations to apply in order
 * @param strategies - The loaded strategies array (to avoid circular imports)
 * @returns TransformResult with transformed prompt and audio metadata
 *
 * @example
 * ```typescript
 * // In Hydra provider:
 * const result = await applyRuntimeTransforms(
 *   attackPrompt,
 *   'query',
 *   ['audio', 'base64'],
 *   Strategies
 * );
 * // result.prompt = transformed, result.audio = { data, format } if audio
 * ```
 */
export declare function applyRuntimeTransforms(prompt: string, injectVar: string, layerConfigs: LayerConfig[], strategies: Strategy[]): Promise<TransformResult>;
//# sourceMappingURL=runtimeTransform.d.ts.map