declare namespace API {
  type AllResult = {
    list?: any;
  };
  type Device = {
    categoryFkId?: number;
    code?: string;
    createTime?: string;
    groupFkId?: number;
    id?: number;
    isEnable?: boolean;
    name?: string;
    param?: string;
    position?: string;
    remark?: string;
    spec?: string;
    updateTime?: string;
  };

  type DeviceCategory = {
    code?: string;
    createTime?: string;
    id?: number;
    name?: string;
    remark?: string;
    updateTime?: string;
  };

  type RtspReq = {
    /** rtsp地址 */
    url?: string;
  };
  type KillRtspReq = {
    /** rtsp地址 */
    pid?: number;
  };

  type RtspRes = {
    host?: string;
    pid?: number;
  };

  type DeviceDeviceCategoryResponse = {
    deviceCategory?: DeviceCategory;
  };

  type DeviceDeviceGroupResponse = {
    deviceGroup?: DeviceGroup;
  };

  type DeviceDeviceRelationResponse = {
    deviceRelation?: DeviceRelation;
  };

  type DeviceDeviceResponse = {
    device?: Device;
  };

  type DeviceGroup = {
    address?: string;
    children?: DeviceGroup[];
    code?: string;
    createTime?: string;
    id?: number;
    isEnable?: boolean;
    key?: string;
    lat?: string;
    lon?: string;
    managerName?: string;
    managerPhone?: string;
    name?: string;
    parentFkId?: number;
    remark?: string;
    telephone?: string;
    updateTime?: string;
  };

  type DeviceRelation = {
    createTime?: string;
    deviceParentFkId?: number;
    deviceSonFkId?: number;
    id?: number;
    updateTime?: string;
  };

  type FkResult = {
    list?: any;
  };

  type GetById = {
    /** 主键ID */
    id?: number;
  };

  type GetFkSelect = {
    /** 关键字 */
    keyword?: string;
  };

  type IdsReq = {
    ids?: number[];
  };

  type NamesResult = {
    list?: any;
  };

  type PageResult = {
    list?: any;
    page?: number;
    pageSize?: number;
    total?: number;
  };

  type Response = {
    code?: number;
    data?: any;
    msg?: string;
    success?: boolean;
  };

  type SearchDeviceCategoryParams = {
    code?: string;
    createTime?: string;
    /** 排序方式:升序false(默认)|降序true */
    desc?: boolean;
    id?: number;
    /** 关键字 */
    keyword?: string;
    name?: string;
    /** 排序 */
    orderKey?: string;
    /** 页码 */
    page?: number;
    /** 每页大小 */
    pageSize?: number;
    remark?: string;
    updateTime?: string;
  };

  type SearchDeviceGroupParams = {
    address?: string;
    children?: DeviceGroup[];
    code?: string;
    createTime?: string;
    /** 排序方式:升序false(默认)|降序true */
    desc?: boolean;
    id?: number;
    isEnable?: boolean;
    key?: string;
    /** 关键字 */
    keyword?: string;
    lat?: string;
    lon?: string;
    managerName?: string;
    managerPhone?: string;
    name?: string;
    /** 排序 */
    orderKey?: string;
    /** 页码 */
    page?: number;
    /** 每页大小 */
    pageSize?: number;
    parentFkId?: number;
    remark?: string;
    telephone?: string;
    updateTime?: string;
  };

  type SearchDeviceParams = {
    categoryFkId?: number;
    code?: string;
    createTime?: string;
    /** 排序方式:升序false(默认)|降序true */
    desc?: boolean;
    groupFkId?: number;
    id?: number;
    isEnable?: boolean;
    /** 关键字 */
    keyword?: string;
    name?: string;
    /** 排序 */
    orderKey?: string;
    /** 页码 */
    page?: number;
    /** 每页大小 */
    pageSize?: number;
    param?: string;
    position?: string;
    remark?: string;
    spec?: string;
    updateTime?: string;
  };

  type SearchDeviceRelationParams = {
    createTime?: string;
    /** 排序方式:升序false(默认)|降序true */
    desc?: boolean;
    deviceParentFkId?: number;
    deviceSonFkId?: number;
    id?: number;
    /** 关键字 */
    keyword?: string;
    /** 排序 */
    orderKey?: string;
    /** 页码 */
    page?: number;
    /** 每页大小 */
    pageSize?: number;
    updateTime?: string;
  };

  type Tree = {
    children?: Tree[];
    key?: number;
    title?: string;
  };

  type TreeResponse = {
    tree?: Tree[];
  };
}
