/**
 * Shared conversation loop for interactive modes (assistant & persona).
 *
 * Extracts the common patterns:
 * - Provider/session initialization
 * - Session state display/clear
 * - Conversation loop (slash commands, AI messaging, /go summary)
 */
import { type WorkflowContext, type InteractiveModeResult, type InteractiveSeedInput, type PostSummaryAction } from './interactive.js';
import { type SessionContext } from './aiCaller.js';
export { type CallAIResult, type SessionContext, callAIWithRetry } from './aiCaller.js';
/**
 * Display and clear previous session state if present.
 */
export declare function displayAndClearSessionState(cwd: string, lang: 'en' | 'ja'): void;
export type { PostSummaryAction } from './interactive.js';
/** Strategy for customizing conversation loop behavior */
export interface ConversationStrategy {
    /** System prompt for AI calls */
    systemPrompt: string;
    /** Allowed tools for AI calls */
    allowedTools: string[];
    /** Transform user message before sending to AI (e.g., policy injection) */
    transformPrompt: (userMessage: string, sourceContext?: string) => string;
    /** Intro message displayed at start */
    introMessage: string;
    /** Custom action selector (optional). If not provided, uses default selectPostSummaryAction. */
    selectAction?: (task: string, lang: 'en' | 'ja') => Promise<PostSummaryAction | null>;
    /** Previous order.md content for /replay command (retry/instruct only) */
    previousOrderContent?: string;
    /** Enable /retry slash command (retry mode only) */
    enableRetryCommand?: boolean;
    /** Context prepended to the first regular prompt in this conversation. */
    initialPromptContext?: string;
    /** Context prepended to summary prompts. */
    summaryPromptContext?: string;
}
/**
 * Run the shared conversation loop.
 *
 * Handles: EOF, /play, /accept, /retry, /go (summary), /cancel, regular AI messaging.
 * The Strategy object controls system prompt, tool access, and prompt transformation.
 */
export declare function runConversationLoop(cwd: string, ctx: SessionContext, strategy: ConversationStrategy, workflowContext: WorkflowContext | undefined, initialInput: InteractiveSeedInput | undefined): Promise<InteractiveModeResult>;
//# sourceMappingURL=conversationLoop.d.ts.map