// 表单校验工具函数

/// 邮箱格式校验
String? validateEmail(String? value) {
  if (value == null || value.isEmpty) return '请输入邮箱地址';
  final emailRegex = RegExp(r'^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$');
  if (!emailRegex.hasMatch(value)) return '邮箱格式不正确';
  return null;
}

/// 密码校验（最少 6 位）
String? validatePassword(String? value) {
  if (value == null || value.isEmpty) return '请输入密码';
  if (value.length < 6) return '密码至少 6 位';
  return null;
}

/// 确认密码校验
String? validateConfirmPassword(String? value, String original) {
  if (value == null || value.isEmpty) return '请确认密码';
  if (value != original) return '两次密码不一致';
  return null;
}

/// 金额校验
String? validateAmount(String? value, {double? max}) {
  if (value == null || value.isEmpty) return '请输入金额';
  final amount = double.tryParse(value);
  if (amount == null || amount <= 0) return '请输入有效金额';
  if (max != null && amount > max) return '超出可用余额';
  return null;
}

/// 加密地址校验（基础非空校验）
String? validateAddress(String? value) {
  if (value == null || value.isEmpty) return '请输入提币地址';
  if (value.length < 20) return '地址格式不正确';
  return null;
}

/// 密码强度（0-3）
int passwordStrength(String password) {
  if (password.isEmpty) return 0;
  int score = 0;
  if (password.length >= 8) score++;
  if (RegExp(r'[A-Z]').hasMatch(password)) score++;
  if (RegExp(r'[0-9]').hasMatch(password)) score++;
  if (RegExp(r'[!@#\$%^&*]').hasMatch(password)) score++;
  return score.clamp(0, 3);
}
