import type { CreditBalanceMt, CreditBalanceLogMt } from '@d8d/credit-balance-module-mt';

// 额度查询响应类型
export type CreditBalanceResponse = CreditBalanceMt & {
  userName?: string; // 用户名（需要从用户模块获取）
  userAvatar?: string; // 用户头像
};

// 额度变更记录类型
export type CreditBalanceLogResponse = CreditBalanceLogMt & {
  userName?: string; // 用户名
  operatorName?: string; // 操作人姓名
};

// 额度设置请求类型
export interface SetCreditLimitRequest {
  totalLimit: number;
  remark?: string;
}

// 额度调整请求类型
export interface AdjustCreditLimitRequest {
  changeAmount: number;
  changeType: 'INCREASE' | 'DECREASE';
  remark?: string;
}

// 额度变更记录查询参数
export interface CreditBalanceLogsQueryParams {
  userId?: number;
  changeType?: string;
  startDate?: string;
  endDate?: string;
  page?: number;
  limit?: number;
}

// 额度管理表格数据
export interface CreditBalanceTableData {
  id: number;
  userId: number;
  userName: string;
  userAvatar?: string;
  totalLimit: number;
  usedAmount: number;
  availableAmount: number;
  isEnabled: boolean;
  createdAt: Date;
  updatedAt: Date;
}

// 额度统计信息
export interface CreditBalanceStats {
  totalUsers: number;
  totalCreditLimit: number;
  totalUsedAmount: number;
  totalAvailableAmount: number;
  overdueUsers: number; // 欠款用户数
  totalOverdueAmount: number; // 总欠款金额
}

// 结账恢复额度请求
export interface CheckoutCreditBalanceRequest {
  userId: number;
  amount: number;
  remark?: string;
}

// 对话框组件props
export interface CreditBalanceDialogProps {
  /** 用户ID */
  userId: number;
  /** 用户名 */
  userName?: string;
  /** 用户头像 */
  userAvatar?: string;
  /** 对话框是否打开 */
  open: boolean;
  /** 对话框打开状态变化回调 */
  onOpenChange: (open: boolean) => void;
  /** 租户ID（可选，从上下文中获取） */
  tenantId?: number;
  /** 对话框标题（可选，默认：用户信用额度管理） */
  title?: string;
  /** 对话框描述（可选） */
  description?: string;
  /** 对话框宽度（可选，默认：lg） */
  size?: 'sm' | 'md' | 'lg' | 'xl';
}