import { type Skill } from "./core/skills.js";
import type { LanguageId } from "./core/language-detector.js";
import type { Provider } from "@kenkaiiii/gg-ai";
/** Combined byte budget for all project instruction files (Codex default). */
export declare const PROJECT_CONTEXT_MAX_BYTES: number;
/**
 * Deterministic hierarchical instruction resolver.
 *
 * Walks from cwd up to the filesystem root picking at most ONE instruction
 * file per directory (CONTEXT_FILES priority order, first match wins), skips
 * empty files, strips BOMs, and renders root-first (broad → narrow) so the
 * nearest file lands last — where LLM recency bias weights it most. A 32 KiB
 * combined budget is filled nearest-first (the nearest instructions are the
 * most binding); files dropped by the cap are reported in a one-line note.
 */
export declare function collectProjectContext(cwd: string): Promise<string[]>;
/**
 * Build the system prompt dynamically based on cwd and context.
 *
 * @param toolNames — if provided, the Tools section only lists these tools.
 *   Pass `tools.map(t => t.name)` from the session so the prompt reflects
 *   exactly what the model can call. Defaults to the full built-in set.
 * @param provider — the active LLM provider. Drives the product identity
 *   (`anthropic` → "Claude Code", everything else → "GG Coder").
 */
export declare function buildSystemPrompt(cwd: string, skills?: Skill[], planMode?: boolean, approvedPlanPath?: string, toolNames?: readonly string[], activeLanguages?: Set<LanguageId>, provider?: Provider): Promise<string>;
//# sourceMappingURL=system-prompt.d.ts.map