import { SessionConfig, AgentRunResult, WarpGrepStep } from './types.js';
import { WarpGrepProvider } from '../providers/types.js';
import '../../utils/resilience.js';

type EventName = 'initial_state' | 'round_start' | 'round_end' | 'finish' | 'error';
type EventCallback = (name: EventName, payload: Record<string, unknown>) => void;
/**
 * Streaming version of runWarpGrep that yields step information after each turn.
 * Yields WarpGrepStep with tool calls for each turn, then returns the final AgentRunResult.
 */
declare function runWarpGrepStreaming(config: SessionConfig & {
    provider: WarpGrepProvider;
}): AsyncGenerator<WarpGrepStep, AgentRunResult, undefined>;
/**
 * Non-streaming version. Runs the agent loop and returns the final result.
 */
declare function runWarpGrep(config: SessionConfig & {
    provider: WarpGrepProvider;
}): Promise<AgentRunResult>;

export { type EventCallback, runWarpGrep, runWarpGrepStreaming };
