import { AutomaticJsonStringConversion as __AutomaticJsonStringConversion } from "@smithy/smithy-client";
import { StreamingBlobTypes } from "@smithy/types";
import {
  ConfirmationStatus,
  ContentType,
  DialogActionType,
  DialogState,
  FulfillmentState,
  MessageFormatType,
} from "./enums";
export interface ActiveContextTimeToLive {
  timeToLiveInSeconds?: number | undefined;
  turnsToLive?: number | undefined;
}
export interface ActiveContext {
  name: string | undefined;
  timeToLive: ActiveContextTimeToLive | undefined;
  parameters: Record<string, string> | undefined;
}
export interface DeleteSessionRequest {
  botName: string | undefined;
  botAlias: string | undefined;
  userId: string | undefined;
}
export interface DeleteSessionResponse {
  botName?: string | undefined;
  botAlias?: string | undefined;
  userId?: string | undefined;
  sessionId?: string | undefined;
}
export interface GetSessionRequest {
  botName: string | undefined;
  botAlias: string | undefined;
  userId: string | undefined;
  checkpointLabelFilter?: string | undefined;
}
export interface DialogAction {
  type: DialogActionType | undefined;
  intentName?: string | undefined;
  slots?: Record<string, string> | undefined;
  slotToElicit?: string | undefined;
  fulfillmentState?: FulfillmentState | undefined;
  message?: string | undefined;
  messageFormat?: MessageFormatType | undefined;
}
export interface IntentSummary {
  intentName?: string | undefined;
  checkpointLabel?: string | undefined;
  slots?: Record<string, string> | undefined;
  confirmationStatus?: ConfirmationStatus | undefined;
  dialogActionType: DialogActionType | undefined;
  fulfillmentState?: FulfillmentState | undefined;
  slotToElicit?: string | undefined;
}
export interface GetSessionResponse {
  recentIntentSummaryView?: IntentSummary[] | undefined;
  sessionAttributes?: Record<string, string> | undefined;
  sessionId?: string | undefined;
  dialogAction?: DialogAction | undefined;
  activeContexts?: ActiveContext[] | undefined;
}
export interface PostContentRequest {
  botName: string | undefined;
  botAlias: string | undefined;
  userId: string | undefined;
  sessionAttributes?: __AutomaticJsonStringConversion | string | undefined;
  requestAttributes?: __AutomaticJsonStringConversion | string | undefined;
  contentType: string | undefined;
  accept?: string | undefined;
  inputStream: StreamingBlobTypes | undefined;
  activeContexts?: __AutomaticJsonStringConversion | string | undefined;
}
export interface PostContentResponse {
  contentType?: string | undefined;
  intentName?: string | undefined;
  nluIntentConfidence?: __AutomaticJsonStringConversion | string | undefined;
  alternativeIntents?: __AutomaticJsonStringConversion | string | undefined;
  slots?: __AutomaticJsonStringConversion | string | undefined;
  sessionAttributes?: __AutomaticJsonStringConversion | string | undefined;
  sentimentResponse?: string | undefined;
  message?: string | undefined;
  encodedMessage?: string | undefined;
  messageFormat?: MessageFormatType | undefined;
  dialogState?: DialogState | undefined;
  slotToElicit?: string | undefined;
  inputTranscript?: string | undefined;
  encodedInputTranscript?: string | undefined;
  audioStream?: StreamingBlobTypes | undefined;
  botVersion?: string | undefined;
  sessionId?: string | undefined;
  activeContexts?: __AutomaticJsonStringConversion | string | undefined;
}
export interface PostTextRequest {
  botName: string | undefined;
  botAlias: string | undefined;
  userId: string | undefined;
  sessionAttributes?: Record<string, string> | undefined;
  requestAttributes?: Record<string, string> | undefined;
  inputText: string | undefined;
  activeContexts?: ActiveContext[] | undefined;
}
export interface IntentConfidence {
  score?: number | undefined;
}
export interface PredictedIntent {
  intentName?: string | undefined;
  nluIntentConfidence?: IntentConfidence | undefined;
  slots?: Record<string, string> | undefined;
}
export interface Button {
  text: string | undefined;
  value: string | undefined;
}
export interface GenericAttachment {
  title?: string | undefined;
  subTitle?: string | undefined;
  attachmentLinkUrl?: string | undefined;
  imageUrl?: string | undefined;
  buttons?: Button[] | undefined;
}
export interface ResponseCard {
  version?: string | undefined;
  contentType?: ContentType | undefined;
  genericAttachments?: GenericAttachment[] | undefined;
}
export interface SentimentResponse {
  sentimentLabel?: string | undefined;
  sentimentScore?: string | undefined;
}
export interface PostTextResponse {
  intentName?: string | undefined;
  nluIntentConfidence?: IntentConfidence | undefined;
  alternativeIntents?: PredictedIntent[] | undefined;
  slots?: Record<string, string> | undefined;
  sessionAttributes?: Record<string, string> | undefined;
  message?: string | undefined;
  sentimentResponse?: SentimentResponse | undefined;
  messageFormat?: MessageFormatType | undefined;
  dialogState?: DialogState | undefined;
  slotToElicit?: string | undefined;
  responseCard?: ResponseCard | undefined;
  sessionId?: string | undefined;
  botVersion?: string | undefined;
  activeContexts?: ActiveContext[] | undefined;
}
export interface PutSessionRequest {
  botName: string | undefined;
  botAlias: string | undefined;
  userId: string | undefined;
  sessionAttributes?: Record<string, string> | undefined;
  dialogAction?: DialogAction | undefined;
  recentIntentSummaryView?: IntentSummary[] | undefined;
  accept?: string | undefined;
  activeContexts?: ActiveContext[] | undefined;
}
export interface PutSessionResponse {
  contentType?: string | undefined;
  intentName?: string | undefined;
  slots?: __AutomaticJsonStringConversion | string | undefined;
  sessionAttributes?: __AutomaticJsonStringConversion | string | undefined;
  message?: string | undefined;
  encodedMessage?: string | undefined;
  messageFormat?: MessageFormatType | undefined;
  dialogState?: DialogState | undefined;
  slotToElicit?: string | undefined;
  audioStream?: StreamingBlobTypes | undefined;
  sessionId?: string | undefined;
  activeContexts?: __AutomaticJsonStringConversion | string | undefined;
}
