import type { ApiProvider, CallApiContextParams, CallApiOptionsParams, RedteamFileConfig } from '../../../types';
import type { Message } from '../shared';
export declare const DEFAULT_MAX_ROUNDS = 10;
export declare const DEFAULT_MAX_BACKTRACKS = 10;
interface CrescendoConfig {
    injectVar: string;
    maxRounds?: number;
    maxBacktracks?: number;
    redteamProvider: RedteamFileConfig['provider'];
    stateless?: boolean;
    stateful?: boolean;
}
export declare class MemorySystem {
    private conversations;
    addMessage(conversationId: string, message: Message): void;
    getConversation(conversationId: string): Message[];
    duplicateConversationExcludingLastTurn(conversationId: string): string;
}
export declare class CrescendoProvider implements ApiProvider {
    readonly config: CrescendoConfig;
    private readonly nunjucks;
    private userGoal;
    private redTeamProvider;
    private scoringProvider;
    private memory;
    private targetConversationId;
    private redTeamingChatConversationId;
    private maxRounds;
    private maxBacktracks;
    private stateful;
    constructor(config: CrescendoConfig);
    private getRedTeamProvider;
    private getScoringProvider;
    id(): string;
    callApi(prompt: string, context?: CallApiContextParams, options?: CallApiOptionsParams): Promise<{
        output: string;
        metadata: {
            redteamFinalPrompt: string | undefined;
            messages: string;
            crescendoRoundsCompleted: number;
            crescendoBacktrackCount: number;
            crescendoResult: boolean;
            crescendoConfidence: number | null;
            stopReason: string;
        };
        tokenUsage: {
            total: number;
            prompt: number;
            completion: number;
            numRequests: number;
            cached: number;
        };
        guardrails: import("../../../types").GuardrailResponse | undefined;
    }>;
    private runAttack;
    private getAttackPrompt;
    private sendPrompt;
    private getRefusalScore;
    private getEvalScore;
    private backtrackMemory;
    private logChatHistory;
}
export default CrescendoProvider;
//# sourceMappingURL=index.d.ts.map