/**
 * @module teams-ai
 */
/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License.
 */
import { Plan } from '../planners';
import { TurnState } from '../TurnState';
import { TurnContext } from 'botbuilder';
import { OpenAIClient, CreateModerationResponseResultsInner } from '../internals';
import { Moderator } from './Moderator';
/**
 * Options for the OpenAI based moderator.
 */
export interface OpenAIModeratorOptions {
    /**
     * OpenAI API key
     */
    apiKey: string;
    /**
     * Which parts of the conversation to moderate.
     */
    moderate: 'input' | 'output' | 'both';
    /**
     * Optional. OpenAI organization.
     */
    organization?: string;
    /**
     * Optional. OpenAI endpoint.
     */
    endpoint?: string;
    /**
     * Optional. OpenAI model to use.
     */
    model?: string;
    /**
     * Optional. Azure Content Safety API version.
     */
    apiVersion?: string;
}
/**
 * A moderator that uses OpenAI's moderation API to review prompts and plans for safety.
 * @remarks
 * This moderation can be configure to review the input from the user, output from the model, or both.
 * @template TState Optional. Type of the applications turn state.
 */
export declare class OpenAIModerator<TState extends TurnState = TurnState> implements Moderator<TState> {
    private readonly _options;
    private readonly _client;
    /**
     * Creates a new instance of the OpenAI based moderator.
     * @param {OpenAIModeratorOptions} options Configuration options for the moderator.
     */
    constructor(options: OpenAIModeratorOptions);
    /**
     * Reviews an incoming utterance for safety violations.
     * @param {TurnContext} context - Context for the current turn of conversation.
     * @param {TState} state - Application state for the current turn of conversation.
     * @returns {Promise<Plan | undefined>} An undefined value to approve the prompt or a new plan to redirect to if not approved.
     */
    reviewInput(context: TurnContext, state: TState): Promise<Plan | undefined>;
    /**
     * Reviews the SAY commands generated by the planner for safety violations.
     * @param {TurnContext} context - Context for the current turn of conversation.
     * @param {TState} state - Application state for the current turn of conversation.
     * @param {Plan} plan - Plan generated by the planner.
     * @returns {Promise<Plan>} The plan to execute. Either the current plan passed in for review or a new plan.
     */
    reviewOutput(context: TurnContext, state: TState, plan: Plan): Promise<Plan>;
    get options(): OpenAIModeratorOptions;
    protected createClient(options: OpenAIModeratorOptions): OpenAIClient;
    protected createModeration(input: string, model?: string): Promise<CreateModerationResponseResultsInner | undefined>;
}
//# sourceMappingURL=OpenAIModerator.d.ts.map