import type { UploadProps } from "rc-upload";
import type { RenderFunction } from "./UI";
export interface FileItem {
  uid: string;
  name: string;
  type: string;
  size: number;
  percent: number;
  /** error 文件上传失败的错误信息 */
  error?: string;
  /** response 文件上传后接口的返回值 */
  response?: any
}

// type LessThan<T, U> = T extends U ? false : true; ?参数比较
export interface VoiceProps {
  /** 默认值 { minduration: 150, maxduration: 30000, warnduration: 3000 }
   * 参数失效情况：
   * minduration < 0 || warnduration < 0 || maxduration < 0
   * maxduration <= minduration
   * warnduration >= maxduration
   */
  minduration?: number // 最小时长 单位ms default=150  ?正整数类型
  maxduration?: number // 最大时长 单位ms default=30000
  warnduration?: number // 倒计时时长 单位ms default=3000
}

export default interface INPUTPROPS {
  /** 输入框初始文字 */
  text?: string;
  // 是否展示输入框
  isShowInput?: boolean;
  // 输入框是否禁用
  disabled?: boolean;
  // 占位符文字
  placeholder?: string;
  //  // 点击发送事件监听
  //  onSend?: (text: string) => void;
  // 是否允许语音转文字
  allowVoice?: boolean;
  // 语音输入的参数
  voiceProps?: VoiceProps;
  // 是否允许上传文件
  allowUpload?: boolean;
  // 上传组件的参数
  uploadProps?: UploadProps & {
    maxNumber?: number  // 最大上传文件个数  默认10个
    maxByte?: number    // 最大单个文件字节量 默认204800b
  };

  // 整个输入区域的class
  completeAreaClass?: string;
  // 输入框左侧容器附加内容
  LeftAdditionContainer?: RenderFunction;
  // 输入框右侧容器class
  inputAreaClass?: string;
  // 输入框class
  inputClass?: string;
  // 输入框右侧容器附加顶部内容
  RightAdditionContainer?: RenderFunction;

  // 操作栏自定义图标
  operateLeftCustomIcon?: Array<RenderFunction>;
  operateRightCustomIcon?: Array<RenderFunction>;
}
