import { ClassValue } from 'clsx';

/**
 * 时间格式化工具
 */
declare const formatTime: {
    /**
     * 将秒数转换为 MM:SS 格式
     */
    toMinutesSeconds(seconds: number): string;
    /**
     * 将秒数转换为 HH:MM:SS 格式
     */
    toHoursMinutesSeconds(seconds: number): string;
    /**
     * 格式化日期为用户友好的格式
     */
    formatDate(date: string | Date, locale?: string): string;
};

/**
 * 日语文本处理工具
 */
declare const japaneseUtils: {
    /**
     * 提取文本中的汉字
     */
    extractKanji(text: string): string[];
    /**
     * 提取文本中的假名
     */
    extractKana(text: string): string[];
    /**
     * 清理文本，移除特殊字符但保留日语字符
     */
    cleanText(text: string): string;
};

/**
 * 验证工具
 */
declare const validators: {
    /**
     * 验证邮箱格式
     */
    isValidEmail(email: string): boolean;
    /**
     * 验证密码强度
     */
    isValidPassword(password: string): {
        isValid: boolean;
        errors: string[];
    };
    /**
     * 验证用户名格式
     */
    isValidUsername(username: string): boolean;
    /**
     * 验证文件大小
     */
    isValidFileSize(size: number, maxSize: number): boolean;
    /**
     * 验证文件类型
     */
    isValidFileType(type: string, supportedTypes: string[]): boolean;
    /**
     * 验证 URL 格式
     */
    isValidUrl(url: string): boolean;
};

/**
 * 文件处理工具
 */
declare const fileUtils: {
    /**
     * 格式化文件大小
     */
    formatFileSize(bytes: number): string;
    /**
     * 获取文件扩展名
     */
    getFileExtension(filename: string): string;
    /**
     * 生成唯一文件名
     */
    generateUniqueFileName(originalName: string): string;
    /**
     * 验证文件名是否有效
     */
    isValidFilename(filename: string): boolean;
};

/**
 * 数组和对象工具
 */
declare const arrayUtils: {
    /**
     * 数组去重
     */
    unique<T>(array: T[]): T[];
    /**
     * 数组分组
     */
    groupBy<T>(array: T[], key: keyof T): Record<string, T[]>;
    /**
     * 数组分页
     */
    paginate<T>(array: T[], page: number, limit: number): {
        data: T[];
        total: number;
        page: number;
        pages: number;
        hasNext: boolean;
        hasPrev: boolean;
    };
    /**
     * 数组随机排序
     */
    shuffle<T>(array: T[]): T[];
};

/**
 * 字符串工具
 */
declare const stringUtils: {
    /**
     * 截断文本
     */
    truncate(text: string, length: number, suffix?: string): string;
    /**
     * 首字母大写
     */
    capitalize(text: string): string;
    /**
     * 驼峰转下划线
     */
    camelToSnake(text: string): string;
    /**
     * 下划线转驼峰
     */
    snakeToCamel(text: string): string;
    /**
     * 生成随机字符串
     */
    generateRandom(length: number): string;
};

/**
 * 调试工具
 */
declare const debugUtils: {
    /**
     * 安全的 JSON 序列化
     */
    safeStringify(obj: any): string;
    /**
     * 性能计时器
     */
    createTimer(label?: string): {
        end: () => number;
    };
    /**
     * 内存使用情况（仅在 Node.js 环境）
     */
    getMemoryUsage(): Record<string, string> | null;
};

/**
 * 错误处理工具
 */
declare const errorUtils: {
    /**
     * 创建标准化的错误对象
     */
    createError(code: string, message: string, details?: any): Error & {
        code: string;
        details?: any;
    };
    /**
     * 安全的错误信息提取
     */
    extractErrorMessage(error: unknown): string;
    /**
     * 错误重试机制
     */
    retry<T>(fn: () => Promise<T>, maxAttempts?: number, delay?: number): Promise<T>;
};

declare function cn(...inputs: ClassValue[]): string;

export { arrayUtils, cn, debugUtils, errorUtils, fileUtils, formatTime, japaneseUtils, stringUtils, validators };
