/**
 * System Prompt Sections — CC systemPromptSections.ts parity.
 *
 * Provides a section-based system prompt assembly mechanism:
 *   - Memoized sections (computed once, cached until clear)
 *   - Volatile sections (recompute every turn, cache-breaking)
 *   - User-provided appendSystemPrompt / customSystemPrompt
 *   - Clear on session reset / compact
 *
 * CC reference: src/constants/systemPromptSections.ts
 */
type ComputeFn = () => string | null | Promise<string | null>;
export interface SystemPromptSection {
    name: string;
    compute: ComputeFn;
    /** If true, recompute every turn (breaks prompt cache). CC: cacheBreak. */
    cacheBreak: boolean;
}
/**
 * Create a memoized system prompt section.
 * Computed once, cached until clearSystemPromptSections() is called.
 */
export declare function systemPromptSection(name: string, compute: ComputeFn): SystemPromptSection;
/**
 * Create a volatile system prompt section that recomputes every turn.
 * WARNING: This WILL break prompt cache when the value changes.
 * Use sparingly — only for time-sensitive or frequently changing context.
 *
 * @param _reason - Why this section must be volatile (documentation only, CC parity).
 */
export declare function volatileSystemPromptSection(name: string, compute: ComputeFn, _reason?: string): SystemPromptSection;
/**
 * Resolve all system prompt sections, returning non-null prompt strings.
 * Memoized sections are cached; volatile sections are always recomputed.
 */
export declare function resolveSystemPromptSections(sections: SystemPromptSection[]): Promise<string[]>;
/**
 * Clear all section caches. Called on session reset, /clear, or /compact.
 */
export declare function clearSystemPromptSections(): void;
export interface SystemPromptAssemblyOptions {
    /** Include the current prompt policy version header. Defaults to true. */
    includePromptPolicy?: boolean;
    /** Base system prompt (from Gateway config) */
    basePrompt?: string;
    /** Prepended instruction block (from INSTRUCTIONS.md files) */
    instructionBlock?: string;
    /** User-provided custom system prompt (replaces base) */
    customSystemPrompt?: string;
    /** User-provided append text (appended after all sections) */
    appendSystemPrompt?: string;
    /** Dynamic sections to resolve */
    sections?: SystemPromptSection[];
}
/**
 * Assemble the final system prompt from all sources.
 *
 * Order:
 *   1. Instruction block (INSTRUCTIONS.md files)
 *   2. Custom system prompt (replaces base) OR base prompt
 *   3. Resolved sections
 *   4. Append system prompt (user-provided suffix)
 */
export declare function assembleSystemPrompt(opts: SystemPromptAssemblyOptions): Promise<string>;
export {};
