import type { ApiProvider, CallApiContextParams, CallApiOptionsParams, GradingResult, ProviderResponse } from '../../../types/index';
import { type LayerConfig, type MediaData } from '../../shared/runtimeTransform';
import type { BaseRedteamMetadata } from '../../types';
interface HydraMetadata extends BaseRedteamMetadata {
    hydraRoundsCompleted: number;
    hydraBacktrackCount: number;
    hydraResult: boolean;
    stopReason: 'Grader failed' | 'Max turns reached' | 'Max backtracks reached';
    successfulAttacks?: Array<{
        turn: number;
        message: string;
        response: string;
    }>;
    totalSuccessfulAttacks?: number;
    storedGraderResult?: GradingResult;
    redteamHistory: Array<{
        prompt: string;
        promptAudio?: MediaData;
        promptImage?: MediaData;
        output: string;
        outputAudio?: MediaData;
        outputImage?: MediaData;
        graderPassed: boolean | undefined;
    }>;
    sessionIds: string[];
}
interface HydraResponse extends ProviderResponse {
    metadata: HydraMetadata;
}
interface HydraConfig {
    injectVar: string;
    scanId?: string;
    maxTurns?: number;
    maxBacktracks?: number;
    stateful?: boolean;
    excludeTargetOutputFromAgenticAttackGeneration?: boolean;
    /**
     * Per-turn layer transforms to apply to each turn's prompt before sending to target.
     * This enables composing Hydra with delivery strategies like audio, base64, etc.
     * Set by the layer strategy when used as: layer: { steps: [hydra, audio] }
     */
    _perTurnLayers?: LayerConfig[];
}
export declare class HydraProvider implements ApiProvider {
    readonly config: HydraConfig;
    private scanId?;
    private readonly agentProvider;
    private readonly injectVar;
    private readonly maxTurns;
    private readonly maxBacktracks;
    private readonly stateful;
    private readonly excludeTargetOutputFromAgenticAttackGeneration;
    private readonly perTurnLayers;
    private conversationHistory;
    private sessionId?;
    constructor(config: HydraConfig);
    id(): string;
    callApi(_prompt: string, context?: CallApiContextParams, options?: CallApiOptionsParams): Promise<HydraResponse>;
    private runAttack;
}
export default HydraProvider;
//# sourceMappingURL=index.d.ts.map