import { promptFlashWithFallbacks } from './llm-api/gemini-with-fallbacks';
import { promptRelaceAI } from './llm-api/relace-api';
import type { PromptAiSdkFn } from '@levelcode/common/types/contracts/llm';
import type { Logger } from '@levelcode/common/types/contracts/logger';
import type { ParamsExcluding } from '@levelcode/common/types/function-params';
import type { Message } from '@levelcode/common/types/messages/levelcode-message';
/**
 * Rewrites file content using Relace AI with fallback to OpenAI.
 *
 * @throws {Error} When the request is aborted by user. Check with `isAbortError()`.
 */
export declare function fastRewrite(params: {
    initialContent: string;
    editSnippet: string;
    filePath: string;
    userMessage: string | undefined;
    logger: Logger;
} & ParamsExcluding<typeof promptRelaceAI, 'initialCode'> & ParamsExcluding<typeof rewriteWithOpenAI, 'oldContent'>): Promise<string>;
/**
 * Rewrites file content using OpenAI's o3-mini model when Gemini Flash output limit is exceeded.
 * Gemini flash can only output 8k tokens, openai models can do at least 16k tokens.
 *
 * @throws {Error} When the request is aborted by user. Check with `isAbortError()`.
 */
export declare function rewriteWithOpenAI(params: {
    oldContent: string;
    editSnippet: string;
    promptAiSdk: PromptAiSdkFn;
} & ParamsExcluding<PromptAiSdkFn, 'messages' | 'model'>): Promise<string>;
/**
 * Checks if Claude forgot to add "... existing code ..." placeholders.
 *
 * This handles a specific case where Claude sketches an update to a single function,
 * but forgets to add ... existing code ... above and below the function.
 *
 * @throws {Error} When the request is aborted by user. Check with `isAbortError()`.
 */
export declare const shouldAddFilePlaceholders: (params: {
    filePath: string;
    oldContent: string;
    rewrittenNewContent: string;
    messageHistory: Message[];
    fullResponse: string;
    logger: Logger;
} & ParamsExcluding<typeof promptFlashWithFallbacks, "messages" | "model">) => Promise<boolean>;
