/**
 * Environment Context — CC environment-aware system prompt parity.
 *
 * Injects OS, shell, CWD, and platform info into the system prompt
 * so the agent can generate platform-appropriate commands.
 *
 * CC reference: ShellSnapshot.ts (shell type detection),
 *               shellCompletion.ts (platform-aware command generation)
 *
 * This is a system prompt section that provides:
 *   - OS name + version
 *   - Shell type (bash/powershell/zsh)
 *   - Current working directory
 *   - Node.js version
 *   - Available package managers
 */
import { type SystemPromptSection } from "./system-prompt-sections.js";
import type { TaskDomain } from "./task-domain.js";
export type ShellType = "bash" | "powershell" | "zsh" | "cmd" | "fish" | "unknown";
/**
 * Create a system prompt section that provides environment context.
 * Memoized — computed once per session (environment doesn't change mid-session).
 */
export declare function createEnvironmentContextSection(cwdOverride?: string): SystemPromptSection;
/**
 * Create the task guidance system prompt section.
 * Domain-aware: selects appropriate guidance based on detected or overridden task domain.
 *
 * @param domain - Task domain from auto-detection or host override.
 */
export declare function createTaskGuidanceSection(domain?: TaskDomain): SystemPromptSection;
/**
 * Create a system prompt section that provides tool usage guidance.
 * CC parity: matches claude-code's getUsingYourToolsSection().
 * Tells the LLM when to use specialized tools vs. primitives.
 */
export declare function createToolGuidanceSection(): SystemPromptSection;
/**
 * Index of deferred tools so the model KNOWS these capabilities exist even
 * though their schemas are not loaded. Without this the model sees only the
 * non-deferred tool list and will wrongly claim it lacks e.g. video generation.
 *
 * Volatile (recomputed each turn) because the deferred set can change when
 * dynamic registrations (MCP, session bootstrap) land; the rendered text is
 * stable across turns otherwise, so prompt cache is preserved in practice.
 */
export declare function createDeferredToolIndexSection(listDeferredTools: () => Array<{
    name: string;
    description: string;
}>): SystemPromptSection;
/**
 * Create a system prompt section that instructs the model on response language.
 * CC parity: only injected when language is explicitly set; when absent,
 * the model follows the user's message language naturally.
 *
 * Key rule: always respond in the SAME language as the user's current message.
 * This prevents confusion when system prompt contains mixed-language content
 * (e.g., Chinese INDEX.md + English tool guidance).
 */
export declare function createLanguageSection(language?: string): SystemPromptSection;
