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

import { PaginationParams } from '@/types'

// ==================== 企业设备列表相关 ====================

/**
 * 企业设备列表项
 */
export interface EnterpriseDeviceItem {
  device_id: number // 设备ID
  virtual_no: string // 虚拟号（原 device_no）
  device_name: string // 设备名称
  device_model: string // 设备型号
  card_count: number // 绑定卡数量
  authorized_at: string // 授权时间
}

/**
 * 企业设备列表查询参数
 */
export interface EnterpriseDeviceListParams extends PaginationParams {
  virtual_no?: string // 虚拟号（模糊搜索，原 device_no）
}

/**
 * 企业设备列表分页结果
 */
export interface EnterpriseDevicePageResult {
  list: EnterpriseDeviceItem[] | null // 设备列表
  total: number // 总数
}

// ==================== 授权设备相关 ====================

/**
 * 授权设备请求参数
 */
export interface EnterpriseAllocateDevicesRequest {
  selection_type?: 'list' | 'filter' // 设备选取方式
  device_nos?: string[] | null // 设备号列表（最多100个）
  batch_no?: string // 批次号
  shop_id?: number // 店铺ID
  virtual_no?: string // 设备虚拟号模糊匹配
  remark?: string // 授权备注
}

/**
 * 已授权设备项
 */
export interface AuthorizedDeviceItem {
  device_id: number // 设备ID
  virtual_no: string // 虚拟号（原 device_no）
  card_count: number // 绑定卡数量
}

/**
 * 失败设备项
 */
export interface FailedDeviceItem {
  virtual_no: string // 虚拟号（原 device_no）
  reason: string // 失败原因
}

/**
 * 授权设备响应
 */
export interface EnterpriseAllocateDevicesResponse {
  success_count: number // 成功数量
  fail_count: number // 失败数量
  authorized_devices: AuthorizedDeviceItem[] | null // 已授权设备列表
  failed_items: FailedDeviceItem[] | null // 失败项列表
}

// ==================== 撤销授权相关 ====================

/**
 * 撤销设备授权请求参数
 */
export interface EnterpriseRecallDevicesRequest {
  selection_type?: 'list' | 'filter' // 设备选取方式
  device_nos?: string[] | null // 设备号列表（最多100个）
  batch_no?: string // 批次号
  virtual_no?: string // 设备虚拟号模糊匹配
}

/**
 * 撤销设备授权响应
 */
export interface EnterpriseRecallDevicesResponse {
  success_count: number // 成功数量
  fail_count: number // 失败数量
  failed_items: FailedDeviceItem[] | null // 失败项列表
}
