/**
 * 通用工具函数集合
 * 提供字符串处理、时间格式化、文件操作等基础功能
 */
export declare const Utils: {
    /**
     * 获取字符串显示宽度（中文字符计为2，其他字符计为1）
     * @param {string} str - 输入字符串
     * @returns {number} 字符串显示宽度
     */
    getStringDisplayWidth(str: string): number;
    /**
     * 按显示宽度截断字符串
     * @param {string} str - 输入字符串
     * @param {number} maxWidth - 最大显示宽度
     * @returns {string} 截断后的字符串
     */
    truncateByDisplayWidth(str: string, maxWidth: number): string;
    /**
     * 清理字符串，移除不可见字符和特殊字符，限制长度
     * @param {string} input - 输入字符串
     * @returns {string} 清理后的字符串
     */
    sanitizeString(input: string): string;
    /**
     * 格式化时间为"多久前"的形式
     * @param {Date} date - 日期对象
     * @returns {string} 格式化后的时间字符串
     */
    formatTimeAgo(date: Date): string;
    /**
     * 格式化日期时间为年月日和24小时制
     * @param {Date} date - 日期对象
     * @returns {string} 格式化后的日期时间字符串
     */
    formatDateTime(date: Date): string;
    /**
     * 获取数据目录
     * @param {string} [subdir='statistical-ranking'] 子目录名称
     * @returns {string} 数据目录的绝对路径
     */
    getDataDirectory(subdir?: string): string;
    /**
     * 获取平台用户ID，尝试从绑定数据中查找
     * @param {any} session - 会话对象
     * @returns {Promise<string>} 平台用户ID
     */
    getPlatformId(session: any): Promise<string>;
    /**
     * 获取会话信息，包括平台、群组、用户等信息
     * @param {any} session - 会话对象
     * @returns {Promise<{platform: string, guildId: string, userId: string, userName: string, guildName: string} | null>}
     * 会话信息对象，获取失败时返回null
     */
    getSessionInfo(session: any): Promise<{
        platform: any;
        guildId: any;
        userId: any;
        userName: any;
        guildName: any;
    }>;
    /**
     * 检查目标是否匹配规则列表中的任何规则
     * @param {string[]} list - 规则列表
     * @param {{platform: string, guildId: string, userId: string, command?: string}} target - 目标对象
     * @returns {boolean} 是否匹配
     */
    matchRuleList(list: string[], target: {
        platform: string;
        guildId: string;
        userId: string;
        command?: string;
    }): boolean;
    /**
     * 构建条件描述
     * @param {Object} options - 包含可能的条件的对象
     * @returns {string[]} 条件描述数组
     */
    buildConditions(options: {
        user?: string;
        guild?: string;
        platform?: string;
        command?: string;
    }): string[];
    /**
     * 标准化统计记录
     * @param {any} record 待处理的记录
     * @param {Object} options 选项
     * @returns {any} 标准化后的记录
     */
    normalizeRecord(record: any, options?: {
        sanitizeNames?: boolean;
    }): any;
    /**
     * 生成统计数据映射表
     * @param {Array<any>} records 记录数组
     * @param {string} keyField 用作键的字段名
     * @param {function} [keyFormatter] 键格式化函数
     * @returns {Map<string, {count: number, lastTime: Date, displayName?: string}>}
     */
    generateStatsMap(records: any[], keyField: string, keyFormatter?: (key: string) => string): Map<string, any>;
    /**
     * 过滤统计记录
     * @param {Array<any>} records 记录数组
     * @param {Object} options 过滤选项
     * @returns {Array<any>} 过滤后的记录
     */
    filterStatRecords(records: any[], options?: {
        keyField?: string;
        displayWhitelist?: string[];
        displayBlacklist?: string[];
        disableCommandMerge?: boolean;
    }): any[];
    /**
     * 通用数据排序函数
     * @param {Array<any>} data 数据数组
     * @param {string} sortBy 排序字段: 'count' | 'key' | 'time'
     * @param {string} keyField 键字段名
     * @returns {Array<any>} 排序后的数组
     */
    sortData(data: any[], sortBy?: string, keyField?: string): any[];
    /**
     * 处理名称显示
     * @param {string} name 原始名称
     * @param {string} id ID标识
     * @param {boolean} truncateId 是否截断ID
     * @returns {string} 格式化后的名称
     */
    formatDisplayName(name: string, id: string, truncateId?: boolean): string;
};
