export type DeviceReq = {
  /**
   * 模糊搜索
   */
  id?: string;
  /**
   * 模糊搜索
   */
  name?: string;
  /**
   * 页码(1~N)
   */
  page: number;
  /**
   * 单页元素数量(10~100)
   */
  size: number;
  /**
   * true:在线过滤; false:离线过滤
   */
  status?: string;
};

export type DeviceRes = {
  items: DeviceItem[];
  /**
   * 总数，设备总数
   */
  total: number;
};

export type DeviceItem = {
  /**
   * 能力
   */
  ability?: Ability;
  addr?: string;
  /**
   * 音频控制，关闭:0、启用:1
   */
  audio?: string;
  /**
   * 通道数量
   */
  channel_count?: number;
  /**
   * 创建时间
   */
  created_at?: string;
  /**
   * 私有协议扩展字段
   */
  ext?: Ext;
  gb?: Gb;
  gb_code?: string;
  id?: string;
  /**
   * IP地址
   */
  ip?: string;
  is_platform?: boolean;
  last_pushed_at?: string;
  media_transport?: string;
  /**
   * 设备型号
   */
  model?: string;
  /**
   * 设备名称
   */
  name?: string;
  /**
   * LAN/WAN
   */
  network?: string;
  /**
   * 密码
   */
  password?: string;
  /**
   * 端口
   */
  port?: number;
  /**
   * 设备协议，HIKSDK,GB等
   */
  protocol?: string;
  /**
   * 取流模式，native：0、ffmpeg：1
   */
  pull_mode?: number;
  /**
   * 备注
   */
  remark?: string;
  routes?: string;
  rtp_id?: string;
  /**
   * 设备状态
   */
  status?: boolean;
  /**
   * 用户id
   */
  uid?: number;
  /**
   * 修改时间
   */
  updated_at?: string;
  url?: string;
  /**
   * 用户名
   */
  username?: string;
  /**
   * 版本号
   */
  version?: string;
  [property: string]: any;
};

/**
 * 能力
 */
export type Ability = {
  ai: boolean;
  cloud_broadcast: boolean;
  gat_1400: boolean;
  ota: boolean;
  ptz: boolean;
  talk: boolean;
  wifi: boolean;
  [property: string]: any;
};

/**
 * 私有协议扩展字段
 */
export type Ext = {
  lan_ip: string;
  manufacturer: string;
  remote_ip: string;
  wan_ip: string;
  [property: string]: any;
};

export type Gb = {
  sip_transport: string;
  [property: string]: any;
};

type ChannelReq = {
  /**
   * 设备通道 id 模糊搜索
   */
  bid?: string;
  /**
   * 返回级联共享状态
   */
  cascade_id?: string;
  /**
   * 设备唯一标识，过滤属于哪个设备的通道
   */
  device_id?: string;
  /**
   * 名称模糊搜索
   */
  name?: string;
  /**
   * 页码(1~N)
   */
  page: number;
  /**
   * 父级目录 ID，如果按组织结构查询，顶层传 root
   */
  pid?: string;
  /**
   * 返回的信息中包含录像计划状态
   */
  plan_id?: number;
  /**
   * 协议类型过滤
   */
  protocol?: string;
  /**
   * 单页元素数量(10~100)
   */
  size: number;
  /**
   * true:在线; false:离线;
   */
  status?: boolean;
};

export type ChannelRes = {
    items: ChannelItem[];
    /**
     * 总数，通道总数
     */
    total: number;
    [property: string]: any;
}

export type ChannelItem = {
    /**
     * 设备真实ID
     */
    bid: string;
    /**
     * 子设备数量
     */
    child_count: number;
    /**
     * 创建时间
     */
    created_at: string;
    /**
     * 设备ID
     */
    device_id: string;
    /**
     * 启用状态，是否启用
     */
    enabled: boolean;
    ext: Ext;
    /**
     * 唯一ID，设备ID
     */
    id: string;
    /**
     * IP地址
     */
    ip: string;
    /**
     * 是否目录
     */
    is_dir: boolean;
    /**
     * 名称，通道名称
     */
    name: string;
    pid: string;
    /**
     * 是否正在播放
     */
    playing: boolean;
    /**
     * 端口
     */
    port: number;
    /**
     * 设备协议，HIKSDK、GB等
     */
    protocol: string;
    ptz: boolean;
    /**
     * 云台类型
     */
    ptz_type: number;
    /**
     * 备注
     */
    remark: string;
    /**
     * 在线状态，在线或者离线
     */
    status: boolean;
    /**
     * 语音对讲
     */
    talk: boolean;
    /**
     * 传输协议，TCP、UDP等
     */
    transport: string;
    /**
     * 修改时间
     */
    updated_at: string;
    [property: string]: any;
}

export type Ext = {
    parent_id: string;
    parental: number;
    [property: string]: any;
}