/**
 * Resume Strategy Engine - Determines optimal resume approach
 * Supports native resume, prompt concatenation, and hybrid modes
 */
import type { ConversationTurn, ConversationRecord } from './cli-history-store.js';
export type ResumeStrategy = 'native' | 'prompt-concat' | 'hybrid';
export interface ResumeDecision {
    strategy: ResumeStrategy;
    nativeSessionId?: string;
    isLatest?: boolean;
    contextTurns?: ConversationTurn[];
    primaryConversationId?: string;
}
export interface ResumeStrategyOptions {
    tool: string;
    resumeIds: string[];
    customId?: string;
    forceNative?: boolean;
    forcePromptConcat?: boolean;
    getNativeSessionId: (ccwId: string) => string | null;
    getConversation: (ccwId: string) => ConversationRecord | null;
    getConversationTool: (ccwId: string) => string | null;
}
/**
 * Determine the optimal resume strategy based on scenario
 *
 * Scenarios:
 * 1. Single append (no customId) → native if mapping exists
 * 2. Fork (customId provided) → prompt-concat (new conversation)
 * 3. Merge multiple → hybrid (primary native + others as context)
 * 4. Cross-tool → prompt-concat (tools differ)
 * 5. resume=true (latest) → native with isLatest flag
 */
export declare function determineResumeStrategy(options: ResumeStrategyOptions): ResumeDecision;
/**
 * Build context prefix for hybrid mode
 * Formats non-primary conversation turns as context
 */
export declare function buildContextPrefix(contextTurns: ConversationTurn[], format?: 'plain' | 'yaml' | 'json'): string;
/**
 * Check if a resume scenario requires native resume
 */
export declare function shouldUseNativeResume(tool: string, resumeIds: string[], customId: string | undefined, getNativeSessionId: (ccwId: string) => string | null, getConversationTool: (ccwId: string) => string | null): boolean;
/**
 * Get resume mode description for logging
 */
export declare function getResumeModeDescription(decision: ResumeDecision): string;
//# sourceMappingURL=resume-strategy.d.ts.map