import { ConvoCompletionService, ConvoModelInfo, FlatConvoConversationBase } from "@convo-lang/convo-lang";
import { SecretManager } from "@iyio/common";
import { ChatCompletion, ChatCompletionCreateParamsNonStreaming } from './open-ai/resources/chat';
export interface BaseOpenAiConvoCompletionServiceOptions {
    apiKey?: string;
    apiBaseUrl?: string;
    completionsEndpoint?: string;
    secretManager?: SecretManager;
    secretsName?: string;
    models: ConvoModelInfo[];
    inputType: string;
    outputType: string;
    apiKeyHeader?: string;
    apiKeyHeaderValuePrefix?: string | null;
    headers?: Record<string, string>;
    updateRequest?: (requestBody: Record<string, any>, headers: Record<string, string | undefined>) => void;
    completeAsync?: (input: ChatCompletionCreateParamsNonStreaming, flat: FlatConvoConversationBase, apiKey: string | undefined, url: string) => Promise<ChatCompletion | undefined>;
    isFallback?: boolean;
}
export declare class BaseOpenAiConvoCompletionService implements ConvoCompletionService<ChatCompletionCreateParamsNonStreaming, ChatCompletion> {
    readonly inputType: string;
    readonly outputType: string;
    private readonly secretManager?;
    private readonly apiKey?;
    private readonly apiBaseUrl;
    private readonly completionsEndpoint;
    private readonly secretsName?;
    private readonly models;
    private readonly apiKeyHeader;
    private readonly apiKeyHeaderValuePrefix?;
    private readonly headers;
    private readonly isFallback;
    private readonly updateRequest?;
    private readonly completeAsync?;
    constructor({ apiKey, secretManager, secretsName, apiBaseUrl, completionsEndpoint, inputType, outputType, models, isFallback, apiKeyHeader, apiKeyHeaderValuePrefix, headers, completeAsync, updateRequest, }: BaseOpenAiConvoCompletionServiceOptions);
    canComplete(model: string | undefined, flat: FlatConvoConversationBase): boolean;
    private clientPromises;
    private getApiClientAsync;
    completeConvoAsync(input: ChatCompletionCreateParamsNonStreaming, flat: FlatConvoConversationBase): Promise<ChatCompletion>;
    getModelsAsync(): Promise<ConvoModelInfo[]>;
}
