/**
 * @module botbuilder-m365
 */
/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License.
 */
import { PredictedCommand, PredictionEngine } from './PredictionEngine';
import { TurnState } from './TurnState';
import { DefaultTurnState } from './DefaultTurnStateManager';
import { TurnContext } from 'botbuilder';
import { Configuration, ConfigurationParameters, OpenAIApi, CreateCompletionRequest } from 'openai';
import { AxiosInstance } from 'axios';
import { PromptTemplate } from './PromptParser';
export interface OpenAIPromptOptions {
    prompt: PromptTemplate;
    promptConfig: CreateCompletionRequest;
    conversationHistory?: OpenAIConversationHistoryOptions;
    logRequests?: boolean;
}
export interface OpenAIPredictionOptions extends OpenAIPromptOptions {
    topicFilter?: PromptTemplate;
    topicFilterConfig?: CreateCompletionRequest;
}
export interface OpenAIPredictionEngineOptions {
    configuration: ConfigurationParameters;
    basePath?: string;
    axios?: AxiosInstance;
    prompt?: PromptTemplate;
    promptConfig?: CreateCompletionRequest;
    topicFilter?: PromptTemplate;
    topicFilterConfig?: CreateCompletionRequest;
    conversationHistory?: OpenAIConversationHistoryOptions;
    oneSayPerTurn?: boolean;
    logRequests?: boolean;
}
export interface OpenAIConversationHistoryOptions {
    addTurnToHistory?: boolean;
    userPrefix?: string;
    botPrefix?: string;
    maxLines?: number;
    maxCharacterLength?: number;
    lineSeparator?: string;
    includeDoCommands?: boolean;
}
export declare class OpenAIPredictionEngine<TState extends TurnState = DefaultTurnState> implements PredictionEngine<TState, OpenAIPredictionOptions> {
    private readonly _options;
    private readonly _configuration;
    private readonly _openai;
    constructor(options: OpenAIPredictionEngineOptions);
    get configuration(): Configuration;
    get openai(): OpenAIApi;
    get options(): OpenAIPredictionEngineOptions;
    expandPromptTemplate(context: TurnContext, state: TState, prompt: string): Promise<string>;
    prompt(context: TurnContext, state: TState, options: OpenAIPromptOptions, message?: string): Promise<string | undefined>;
    predictCommands(context: TurnContext, state: TState, data?: Record<string, any>, options?: OpenAIPredictionOptions): Promise<PredictedCommand[]>;
    private createChatCompletionRequest;
    private createCompletionRequest;
    private createChatCompletion;
    private createCompletion;
}
//# sourceMappingURL=OpenAIPredictionEngine.d.ts.map