/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License.
 */
import { AppDefinition } from './AppDefinition';
import { LabeledEntity } from './Entity';
import { FilledEntity } from './FilledEntity';
import { ScoreInput, ScoredAction, ScoreResponse } from './Score';
export declare const MAX_TEXT_VARIATIONS = 20;
export declare const OUT_OF_DOMAIN_INPUT = "[OUT OF DOMAIN]";
export declare enum SenderType {
    User = 0,
    Bot = 1
}
export declare enum ExtractorStepType {
    USER_INPUT = "userInput",
    OUT_OF_DOMAIN = "outOfDomain"
}
export interface TextVariation {
    text: string;
    labelEntities: LabeledEntity[];
}
export interface TrainExtractorStep {
    textVariations: TextVariation[];
    type: ExtractorStepType;
}
export interface LogicResult {
    logicValue: string | undefined;
    changedFilledEntities: FilledEntity[];
}
export interface LogicAPIError {
    APIError: string;
}
export interface TrainScorerStep {
    input: ScoreInput;
    labelAction: string | undefined;
    logicResult: LogicResult | undefined;
    scoredAction: ScoredAction | undefined;
    stubName?: string;
    importText?: string;
    uiScoreResponse?: ScoreResponse;
    importId?: string;
}
export interface TrainRound {
    extractorStep: TrainExtractorStep;
    scorerSteps: TrainScorerStep[];
}
export declare enum Validity {
    VALID = "valid",
    INVALID = "invalid",
    UNKNOWN = "unknown",
    WARNING = "warning"
}
export interface TrainDialogInput {
    sourceLogDialogId: string;
    rounds: TrainRound[];
    definitions?: AppDefinition | null;
    validity?: Validity;
}
export interface TrainDialogClientData {
    importHashes: string[];
}
export interface TrainDialog extends TrainDialogInput {
    createdDateTime: string;
    lastModifiedDateTime: string;
    trainDialogId: string;
    version: number;
    packageCreationId: number;
    packageDeletionId: number;
    initialFilledEntities: FilledEntity[];
    tags: string[];
    description: string;
    clientData?: TrainDialogClientData;
}
export interface TrainResponse {
    packageId: number;
    trainingStatus: string;
    trainDialogId: string;
}
export interface TrainDialogList {
    trainDialogs: TrainDialog[];
    definitions?: AppDefinition;
}
export interface TrainDialogIdList {
    trainDialogIds: string[];
}
export interface CreateTeachParams {
    contextDialog: TrainRound[];
    sourceLogDialogId?: string;
    initialFilledEntities: FilledEntity[];
}
