/**
 * 企业卡授权相关类型定义
 */

/**
 * 失败项
 */
export interface FailedItem {
  /** ICCID */
  iccid: string
  /** 失败原因 */
  reason: string
}

/**
 * 分配的设备
 */
export interface AllocatedDevice {
  /** 设备ID */
  device_id: number
  /** 虚拟号（原 device_no） */
  virtual_no: string
  /** 卡数量 */
  card_count: number
  /** 卡ICCID列表 */
  iccids: string[]
}

/**
 * 授权卡给企业请求
 */
export interface AllocateCardsRequest {
  /** 卡片选取方式 */
  selection_type?: 'list' | 'range' | 'filter'
  /** 需要授权的 ICCID 列表 */
  iccids?: string[]
  /** 起始 ICCID */
  iccid_start?: string
  /** 结束 ICCID */
  iccid_end?: string
  /** 运营商ID */
  carrier_id?: number
  /** 单个店铺ID */
  shop_id?: number
  /** 多个店铺ID */
  shop_ids?: number[]
  /** 批次号 */
  batch_no?: string
  /** ICCID模糊匹配 */
  iccid?: string
  /** 授权备注 */
  remark?: string
  /** 确认整体授权设备下所有卡 */
  confirm_device_bundles?: boolean
}

/**
 * 授权卡给企业响应
 */
export interface AllocateCardsResponse {
  /** 成功数量 */
  success_count: number
  /** 失败数量 */
  fail_count: number
  /** 失败详情 */
  failed_items: FailedItem[] | null
  /** 连带授权的设备列表 */
  allocated_devices: AllocatedDevice[] | null
}

/**
 * 卡授权预检请求
 */
export interface AllocateCardsPreviewRequest {
  /** 需要授权的 ICCID 列表（最多1000个） */
  iccids: string[]
}

/**
 * 独立卡信息
 */
export interface StandaloneCard {
  /** 卡ID */
  iot_card_id: number
  /** ICCID */
  iccid: string
  /** 手机号 */
  msisdn: string
  /** 运营商ID */
  carrier_id: number
  /** 状态名称 */
  status_name: string
}

/**
 * 设备捆绑卡
 */
export interface DeviceBundleCard {
  /** 卡ID */
  iot_card_id: number
  /** ICCID */
  iccid: string
  /** 手机号 */
  msisdn: string
}

/**
 * 设备包
 */
export interface DeviceBundle {
  /** 设备ID */
  device_id: number
  /** 虚拟号（原 device_no） */
  virtual_no: string
  /** 触发卡（用户选择的卡） */
  trigger_card: DeviceBundleCard
  /** 连带卡（同设备的其他卡） */
  bundle_cards: DeviceBundleCard[]
}

/**
 * 授权预检汇总
 */
export interface AllocatePreviewSummary {
  /** 总卡数量 */
  total_card_count: number
  /** 独立卡数量 */
  standalone_card_count: number
  /** 设备数量 */
  device_count: number
  /** 设备卡数量 */
  device_card_count: number
  /** 失败数量 */
  failed_count: number
}

/**
 * 卡授权预检响应
 */
export interface AllocateCardsPreviewResponse {
  /** 汇总信息 */
  summary: AllocatePreviewSummary
  /** 可直接授权的卡（未绑定设备） */
  standalone_cards: StandaloneCard[] | null
  /** 需要整体授权的设备包 */
  device_bundles: DeviceBundle[] | null
  /** 失败的卡 */
  failed_items: FailedItem[] | null
}

/**
 * 企业卡项
 */
export interface EnterpriseCardItem {
  /** 卡ID */
  id: number
  /** ICCID */
  iccid: string
  /** 手机号 */
  msisdn: string
  /** 运营商ID */
  carrier_id: number
  /** 运营商名称 */
  carrier_name: string
  /** 状态 */
  status: number
  /** 状态名称 */
  status_name: string
  /** 网络状态 */
  network_status: number
  /** 网络状态名称 */
  network_status_name: string
  /** 套餐ID */
  package_id?: number | null
  /** 套餐名称 */
  package_name?: string
  /** 设备ID */
  device_id?: number | null
  /** 虚拟号（原 device_no） */
  virtual_no?: string
}

/**
 * 企业卡列表查询参数
 */
export interface EnterpriseCardListParams {
  /** 页码 */
  page?: number
  /** 每页数量 */
  page_size?: number
  /** 卡状态 */
  status?: number
  /** 运营商ID */
  carrier_id?: number
  /** ICCID（模糊查询） */
  iccid?: string
  /** 虚拟号（模糊查询，原 device_no） */
  virtual_no?: string
}

/**
 * 企业卡列表响应
 */
export interface EnterpriseCardPageResult {
  /** 卡列表 */
  items: EnterpriseCardItem[]
  /** 当前页码 */
  page: number
  /** 每页数量 */
  size: number
  /** 总记录数 */
  total: number
}

/**
 * 回收的设备
 */
export interface RecalledDevice {
  /** 设备ID */
  device_id: number
  /** 虚拟号（原 device_no） */
  virtual_no: string
  /** 卡数量 */
  card_count: number
  /** 卡ICCID列表 */
  iccids: string[]
}

/**
 * 回收卡授权请求
 */
export interface RecallCardsRequest {
  /** 卡片选取方式 */
  selection_type?: 'list' | 'range' | 'filter'
  /** 需要回收授权的 ICCID 列表 */
  iccids?: string[]
  /** 起始 ICCID */
  iccid_start?: string
  /** 结束 ICCID */
  iccid_end?: string
  /** 运营商ID */
  carrier_id?: number
  /** 批次号 */
  batch_no?: string
  /** ICCID模糊匹配 */
  iccid?: string
  /** 回收备注 */
  remark?: string
}

/**
 * 回收卡授权响应
 */
export interface RecallCardsResponse {
  /** 成功数量 */
  success_count: number
  /** 失败数量 */
  fail_count: number
  /** 失败详情 */
  failed_items: FailedItem[] | null
  /** 连带回收的设备列表 */
  recalled_devices: RecalledDevice[] | null
}
