import { ChatCompletionRequest } from "./convo-openai-types.js";
import { ConvoCompletionMessage, ConvoConversationConverter, ConvoModelInfo, FlatConvoConversation } from "./convo-types.js";
import { ChatCompletion } from './open-ai/resources/chat/index.js';
export interface BaseOpenAiConvoConverterOptions {
    chatModel?: string;
    visionModel?: string;
    supportedInputTypes?: string[];
    supportedOutputTypes?: string[];
    /**
     * Roles that will map to the user role
     */
    userRoles?: string[];
    /**
     * Roles that will map to the assistant role
     */
    assistantRoles?: string[];
    /**
     * Roles that will map to the system role
     */
    systemRoles?: string[];
    includeModalities?: boolean;
    /**
     * Roles that will map to the function role
     */
    functionRoles?: string[];
    models?: ConvoModelInfo[];
    hasVision?: (modelName: string) => boolean;
    transformInput?: (input: ChatCompletionRequest) => ChatCompletionRequest;
    transformOutput?: (output: ChatCompletion) => ChatCompletion;
}
/**
 * A conversation converter for OpenAI like APIs
 */
export declare class BaseOpenAiConvoConverter implements ConvoConversationConverter<ChatCompletionRequest, ChatCompletion> {
    readonly supportedInputTypes: string[];
    readonly supportedOutputTypes: string[];
    readonly userRoles: string[];
    readonly assistantRoles: string[];
    readonly systemRoles: string[];
    readonly functionRoles: string[];
    readonly chatModel?: string;
    readonly visionModel?: string;
    readonly models?: ConvoModelInfo[];
    readonly includeModalities?: boolean;
    readonly hasVision?: (modelName: string) => boolean;
    readonly transformInput?: (input: ChatCompletionRequest) => ChatCompletionRequest;
    readonly transformOutput?: (output: ChatCompletion) => ChatCompletion;
    readonly getModelsAsync?: () => Promise<ConvoModelInfo[]>;
    constructor({ chatModel, visionModel, supportedInputTypes, supportedOutputTypes, userRoles, assistantRoles, systemRoles, functionRoles, models, hasVision, transformInput, transformOutput, includeModalities, }: BaseOpenAiConvoConverterOptions);
    convertOutputToConvo(output: ChatCompletion, outputType: string, input: ChatCompletionRequest, inputType: string, flat: FlatConvoConversation): ConvoCompletionMessage[];
    convertConvoToInput(flat: FlatConvoConversation, inputType: string): ChatCompletionRequest;
    private isKnownRole;
}
