import OpenAI from 'openai';
import type { AvailableModel } from '../../execution/AvailableModel';
import type { CompletionPromptResult, EmbeddingPromptResult, ImagePromptResult } from '../../execution/PromptResult';
import type { Usage } from '../../execution/Usage';
import type { Prompt } from '../../types/Prompt';
import type { string_markdown_text } from '../../types/string_markdown';
import type { string_title } from '../../types/string_title';
import type { computeOpenAiUsage } from './computeOpenAiUsage';
/**
 * Dependencies required to run non-chat OpenAI-compatible prompt variants.
 */
type OpenAiCompatibleNonChatPromptCallerOptions = {
    readonly getTitle: () => string_title & string_markdown_text;
    readonly isVerbose: boolean | undefined;
    readonly userId: string | number | undefined;
    readonly getClient: () => Promise<OpenAI>;
    readonly executeRateLimitedRequest: <T>(requestFn: () => Promise<T>) => Promise<T>;
    readonly computeUsage: (...args: Parameters<typeof computeOpenAiUsage>) => Usage;
    readonly getDefaultCompletionModel: () => AvailableModel;
    readonly getDefaultEmbeddingModel: () => AvailableModel;
    readonly getDefaultImageGenerationModel: () => AvailableModel;
    readonly getHardcodedModels: () => ReadonlyArray<AvailableModel>;
};
/**
 * Executes completion, embedding, and image-generation prompts for OpenAI-compatible providers.
 *
 * @private helper of `OpenAiCompatibleExecutionTools`
 */
export declare class OpenAiCompatibleNonChatPromptCaller {
    private readonly options;
    constructor(options: OpenAiCompatibleNonChatPromptCallerOptions);
    /**
     * Calls one OpenAI-compatible completion model.
     */
    callCompletionModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements'>): Promise<CompletionPromptResult>;
    /**
     * Calls one OpenAI-compatible embedding model.
     */
    callEmbeddingModel(prompt: Pick<Prompt, 'content' | 'parameters' | 'modelRequirements'>): Promise<EmbeddingPromptResult>;
    /**
     * Calls one OpenAI-compatible image-generation model.
     */
    callImageGenerationModel(prompt: Prompt): Promise<ImagePromptResult>;
    /**
     * Retries completion requests while stripping unsupported model parameters.
     */
    private callCompletionModelWithRetry;
    /**
     * Retries embedding requests while stripping unsupported model parameters.
     */
    private callEmbeddingModelWithRetry;
    /**
     * Retries image-generation requests while stripping unsupported model parameters.
     */
    private callImageGenerationModelWithRetry;
}
export {};
