/**
 * Relocate a non-Claude-Code client's `system` blocks into the message stream.
 *
 * Anthropic's subscription/OAuth path rejects any `system` content it does not
 * recognise as the genuine Claude Code system prompt — anti-abuse fingerprinting
 * surfaced as a header-less `rate_limit_error: "Error"` (NOT a real rate limit).
 * Custom clients (Curator/Tara) send their own system prompt, so we move it into
 * a leading user block and keep only the recognised billing+agent blocks in
 * `system`. The model still honours the instructions, and any `cache_control` is
 * carried over so the prompt prefix stays cacheable.
 *
 * Shared by both proxy entry points (`oauthFetch.ts` and `claudeProxyRoutes.ts`)
 * so the OAuth anti-abuse workaround stays in one place and can't drift between
 * the two paths.
 */
export declare function relocateClientSystemIntoMessages(parsed: {
    messages?: unknown;
}, instructionBlocks: Array<{
    text?: unknown;
    cache_control?: unknown;
}>): void;
