/**
 * Copyright(c) Microsoft Corporation.All rights reserved.
 * Licensed under the MIT License.
 */

import { z } from 'zod'

/**
 * Enum representing the types of actions.
 */
export enum ActionTypes {
  /**
   * Opens a URL in the default browser.
   */
  OpenUrl = 'openUrl',

  /**
   * Sends a message back to the bot as a simple string.
   */
  ImBack = 'imBack',

  /**
   * Sends a message back to the bot with additional data.
   */
  PostBack = 'postBack',

  /**
   * Plays an audio file.
   */
  PlayAudio = 'playAudio',

  /**
   * Plays a video file.
   */
  PlayVideo = 'playVideo',

  /**
   * Displays an image.
   */
  ShowImage = 'showImage',

  /**
   * Downloads a file.
   */
  DownloadFile = 'downloadFile',

  /**
   * Initiates a sign-in process.
   */
  Signin = 'signin',

  /**
   * Initiates a phone call.
   */
  Call = 'call',

  /**
   * Sends a message back to the bot with additional metadata.
   */
  MessageBack = 'messageBack',

  /**
   * Opens an application.
   */
  OpenApp = 'openApp',
}

/**
 * Zod schema for validating ActionTypes.
 */
export const actionTypesZodSchema = z.enum(['openUrl', 'imBack', 'postBack', 'playAudio', 'showImage', 'downloadFile', 'signin', 'call', 'messageBack', 'openApp'])
