/**
 * ╔══════════════════════════════════════════════════════════════════════╗
 * ║   OVERMIND BRIDGE — Helpers & Utilities                             ║
 * ║   retry, logging, SSE parsing, validation                          ║
 * ╚══════════════════════════════════════════════════════════════════════╝
 */
import type { McpResponse } from './types.js';
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
export interface BridgeLogger {
    debug(msg: string, meta?: Record<string, unknown>): void;
    info(msg: string, meta?: Record<string, unknown>): void;
    warn(msg: string, meta?: Record<string, unknown>): void;
    error(msg: string, meta?: Record<string, unknown>): void;
}
/** Crée un logger simple prefixé — peut être remplacé par pino/winston */
export declare function createBridgeLogger(prefix: string): BridgeLogger;
/**
 * Parse une réponse SSE (text/event-stream) ligne par ligne.
 * Retourne le premier objet JSON-RPC valide trouvé dans les lignes "data:".
 */
export declare function parseSseText(text: string): McpResponse | null;
/**
 * Parse le body d'une réponse MCP : SSE d'abord, fallback JSON brut.
 */
export declare function parseMcpResponseBody(text: string): McpResponse;
export interface RetryOptions {
    maxAttempts: number;
    delayMs: number;
    /** Codes d'erreur qui méritent un retry (default: ETIMEDOUT, EBODYREAD, ECONNRESET) */
    retryableCodes?: string[];
}
export declare function withRetry<T>(fn: () => Promise<T>, opts: RetryOptions, logger?: BridgeLogger): Promise<T>;
export declare function validatePrompt(prompt: unknown): string;
export declare function validateAgentName(name: unknown): string;
export declare function sleep(ms: number): Promise<void>;
/** Extrait un sessionId depuis un marqueur textuel "SESSION_ID: xxx" */
export declare function extractSessionIdFromContent(content: Array<{
    type: string;
    text: string;
}>): string | undefined;
/** Formate un contexte Discord pour l'injection dans le prompt agent */
export declare function formatDiscordContext(params: {
    channelId?: string;
    userId?: string;
    username?: string;
    message: string;
}): string;
/**
 * Interpolation de variables ${var} dans un template.
 * Utilisé par ScenarioLoader, PromptSource, et le CLI.
 *
 * Supporte :
 *   - ${var}        → remplacé par vars[var] si défini, sinon laissé tel quel
 *   - ${var:-def}   → valeur par défaut si vars[var] est undefined
 */
export declare function interpolate(template: string, vars?: Record<string, string | undefined>): string;
//# sourceMappingURL=utils.d.ts.map