export interface ScriptData {
  _id: string;
  workspace_id: string;
  agent_id: string;
  key: string;
  name: string | null;
  image: string | null;
  colour: string | null;
  font_colour: string | null;
  title: string | null;
  description: string | null;
  script_status: string;
  updated_at: number;
  created_at: number;
  __v: number;
}

export interface Agent {
  _id: string;
  agent_type: string;
  twilio_config: any | null;
  knowledge_base_id: string[];
  knowledge_base_id_for_website: string[];
  workspace_id: string;
  name: string;
  type: string;
  image: string;
  phone_no: string | null;
  country_code: string | null;
  call_prompt: string;
  call_first_message: string;
  chat_prompt: string;
  chat_first_message: string;
  voice: string;
  ai_model: string;
  ai_model_version: string | null;
  idle_reminder: boolean;
  call_cut_ability: boolean;
  call_limit_duration: number | null;
  call_transfer: boolean;
  send_message: boolean;
  real_time_booking: boolean;
  is_default: boolean;
  created_by: string | null;
  status: string;
  is_deleted: boolean;
  created_at: number;
  updated_at: number;
  auto_assign: boolean;
  __v: number;
  chat_count: number;
  script_data?: ScriptData | null;
}

// Payload used to update an agent (fields optional for partial updates)
export interface UpdateAgentPayload {
  name?: string;
  type?: string;
  voice?: string;
  image?: string;
  chat_first_message?: string;
  chat_prompt?: string;
  call_first_message?: string;
  call_prompt?: string;
  twilio_config?: any | string | null;
  country_code?: string | null;
  knowledge_base_id?: string[];
  ai_model?: string;
  idle_reminder?: boolean;
  call_cut_ability?: boolean;
  call_limit_duration?: number | null;
  call_transfer?: boolean;
  send_message?: boolean;
  real_time_booking?: boolean;
}
