/**
 * Registry of agentic attack providers that support per-turn/per-iteration layer transforms.
 *
 * These are strategies internally implemented as providers that orchestrate
 * adversarial attacks over multiple iterations or turns.
 *
 * Two categories:
 *
 * 1. **Multi-turn conversation** (hydra, crescendo, goat, custom):
 *    - Target sees all previous messages (conversation context)
 *    - Uses hybrid format: text history + audio/image current turn
 *
 * 2. **Multi-attempt single-turn** (meta, tree):
 *    - Each iteration is independent (target sees one message per attempt)
 *    - Transforms each single message directly (no hybrid format needed)
 *
 * Note: This is a subset of MULTI_TURN_STRATEGIES + AGENTIC_STRATEGIES.
 * Not all strategies support per-turn transforms:
 * - simba: Different architecture, not yet supported
 * - mischievous-user: Different implementation pattern
 */
/**
 * Attack providers that support per-turn/per-iteration layer transforms.
 *
 * These providers:
 * 1. Accept `_perTurnLayers` config to apply transforms per turn/iteration
 * 2. Multi-turn: Send hybrid payloads (text history + audio/image current turn)
 * 3. Single-turn iterative: Send transformed single message
 * 4. Store promptAudio/promptImage in redteamHistory for UI rendering
 */
export declare const ATTACK_PROVIDER_IDS: readonly ["hydra", "crescendo", "goat", "custom", "iterative", "iterative:meta", "iterative:tree"];
export type AttackProviderId = (typeof ATTACK_PROVIDER_IDS)[number];
/**
 * Check if a strategy ID corresponds to an attack provider
 * that supports per-turn/per-iteration layer transforms.
 *
 * Handles various ID formats:
 * - Short: 'hydra', 'crescendo', 'goat', 'custom', 'meta', 'tree'
 * - Full: 'trusys:redteam:hydra', 'trusys:redteam:iterative:meta'
 * - Prefixed: 'jailbreak:hydra', 'jailbreak:meta', 'jailbreak:tree'
 *
 * @param id - The strategy ID to check
 * @returns true if this is an attack provider supporting per-turn transforms
 */
export declare function isAttackProvider(id: string): boolean;
/**
 * Get the full provider ID for an attack provider.
 *
 * @param id - The strategy ID (e.g., 'hydra', 'jailbreak', 'jailbreak:hydra', 'jailbreak:meta')
 * @returns The full provider ID (e.g., 'trusys:redteam:hydra', 'trusys:redteam:iterative')
 */
export declare function getAttackProviderFullId(id: string): string;
/**
 * Check if a strategy is a multi-turn strategy (broader than attack providers).
 * This includes all strategies from MULTI_TURN_STRATEGIES constant.
 *
 * Note: Not all multi-turn strategies support per-turn layer transforms.
 * Use isAttackProvider() to check for that capability.
 */
export declare function isMultiTurnStrategy(id: string): boolean;
//# sourceMappingURL=attackProviders.d.ts.map