/**
 * 套餐相关类型定义
 */

import { PaginationParams } from './common'
import { Operator } from './card'

// 套餐状态
export enum PackageStatus {
  ENABLED = 1, // 启用
  DISABLED = 0 // 禁用
}

// 套餐类型
export enum PackageType {
  MONTHLY = 'monthly', // 月套餐
  ANNUAL = 'annual', // 年套餐
  FLOW = 'flow' // 流量包
}

// 套餐系列
export interface PackageSeries {
  id: string | number
  seriesCode: string // 系列编码
  seriesName: string // 系列名称
  operator: Operator // 运营商
  description?: string
  status: PackageStatus
  packageCount?: number // 系列下套餐数量
  createTime: string
  updateTime?: string
  creatorName?: string
}

// 套餐实体
export interface Package {
  id: string | number
  packageCode: string // 套餐编码
  packageName: string // 套餐名称
  seriesId: string | number // 所属系列ID
  seriesName?: string
  operator: Operator
  packageType: PackageType
  // 套餐内容
  totalFlow: number // 总流量（MB）
  duration: number // 有效期（天）
  price: number // 价格
  description?: string
  // 状态和可见性
  status: PackageStatus
  isPublic: boolean // 是否公开（管理员可见全部，代理商只能看到自己的）
  // 创建信息
  creatorId: string | number
  creatorName?: string
  creatorType: 'admin' | 'agent' // 创建者类型
  createTime: string
  updateTime?: string
}

// 套餐查询参数
export interface PackageQueryParams extends PaginationParams {
  keyword?: string // 套餐名称/编码
  seriesId?: string | number
  operator?: Operator
  packageType?: PackageType
  status?: PackageStatus
  isPublic?: boolean
  creatorId?: string | number
  priceRange?: [number, number]
}

// 套餐系列查询参数
export interface PackageSeriesQueryParams extends PaginationParams {
  keyword?: string
  operator?: Operator
  status?: PackageStatus
}

// 创建/编辑套餐系列参数
export interface PackageSeriesFormData {
  seriesCode: string
  seriesName: string
  operator: Operator
  description?: string
  status: PackageStatus
}

// 创建/编辑套餐参数
export interface PackageFormData {
  packageCode: string
  packageName: string
  seriesId: string | number
  operator: Operator
  packageType: PackageType
  totalFlow: number
  duration: number
  price: number
  description?: string
  status: PackageStatus
  isPublic: boolean
}

// 套餐分配参数
export interface PackageAssignParams {
  packageId: string | number
  agentId: string | number // 直级代理ID
  commissionMode: 'template' | 'custom' // 佣金模式
  commissionTemplateId?: string | number
  commissionRate?: number // 自定义佣金比例
}

// 套餐变更记录
export interface PackageChangeRecord {
  id: string | number
  iccid: string
  oldPackageId?: string | number
  oldPackageName?: string
  newPackageId: string | number
  newPackageName: string
  changeType: 'upgrade' | 'downgrade' | 'renew' // 升级/降级/续费
  amount?: number
  status: 'pending' | 'success' | 'failed'
  operatorId: string | number
  operatorName: string
  changeTime: string
  remark?: string
}

// 套餐分配记录
export interface PackageAssignRecord {
  id: string | number
  packageId: string | number
  packageName: string
  agentId: string | number
  agentName: string
  commissionMode: 'template' | 'custom'
  commissionTemplateId?: string | number
  commissionTemplateName?: string
  commissionRate?: number
  assignTime: string
  operatorName?: string
}
