export type PromptLayer = {
    /** Cache-friendly: rarely changes within a session. */
    stable: boolean;
    /** Human-readable label for diagnostics. */
    label: string;
    /** The text content. Empty strings are filtered out by buildLayeredPrompt. */
    content: string;
};
/**
 * Concatenates layers preserving the stable/dynamic boundary. Returns:
 *   - stablePrefix: all stable layers joined (cache key for provider)
 *   - dynamicSuffix: all dynamic layers joined (per-turn content)
 *   - combined: the full prompt (what callers that don't support caching use)
 *
 * Stable layers are emitted first so providers that match by prefix can hit
 * the cache. Within each tier, order matches input order.
 */
export declare function buildLayeredPrompt(layers: ReadonlyArray<PromptLayer>): {
    stablePrefix: string;
    dynamicSuffix: string;
    combined: string;
};
/**
 * Classify the existing system-prompt sections into layers. Used by
 * get-reply-run.ts as a non-invasive upgrade path: each section that's
 * already produced by buildAgentSystemPrompt + the klaw* sections gets
 * tagged here without changing the section content itself.
 */
export declare function classifyKlawPromptSection(section: string): {
    stable: boolean;
    label: string;
};
