import { Context } from 'koishi';
/**
 * 用户排名差异数据接口
 * @interface RankDiff
 * @property {string} userId - 用户ID
 * @property {string} userName - 用户名称
 * @property {number} currentCount - 当前计数
 * @property {number} previousCount - 上一时段计数
 * @property {number} diff - 差值（当前减去上一时段）
 * @property {number} rank - 当前排名
 * @property {number} [prevRank] - 上一时段排名
 * @property {number} [rankChange] - 排名变化（正值表示上升，负值表示下降）
 */
interface RankDiff {
    userId: string;
    userName: string;
    currentCount: number;
    previousCount: number;
    diff: number;
    rank: number;
    prevRank?: number;
    rankChange?: number;
}
/**
 * 排行榜配置接口
 * @interface RankConfig
 * @property {string} [updateInterval] - 更新间隔
 * @property {boolean} [defaultImageMode] - 默认是否使用图片模式
 */
interface RankConfig {
    updateInterval?: string;
    defaultImageMode?: boolean;
}
export declare class Rank {
    private ctx;
    private defaultImageMode;
    /**
     * 创建排行榜实例
     * @param {Context} ctx - Koishi 上下文
     * @param {RankConfig} [config={}] - 排行榜配置
     */
    constructor(ctx: Context, config?: RankConfig);
    /**
     * 生成排行榜快照
     * 保存当前消息统计数据到排行数据库中
     * @returns {Promise<void>}
     */
    generateRankSnapshot(): Promise<void>;
    /**
     * 获取排行榜数据
     * @param {string} platform - 平台标识
     * @param {string|null} guildId - 群组ID，为null时表示全局排行
     * @param {number} [hours=24] - 时间范围（小时）
     * @param {number} [limit=10] - 返回结果数量限制，负数表示不限制
     * @param {boolean} [global=false] - 是否获取全局排行
     * @param {Date} [endTime] - 结束时间，默认为当前时间
     * @returns {Promise<RankDiff[]>} 排行榜数据数组
     */
    getRankingData(platform: string, guildId: string | null, hours?: number, limit?: number, global?: boolean, endTime?: Date): Promise<RankDiff[]>;
    /**
     * 注册排行榜相关命令
     * @param {any} stat - 统计命令对象
     */
    registerRankCommands(stat: any): void;
    /**
     * 渲染图片形式的排行榜
     * @private
     * @param {RankDiff[]} data - 排行榜数据
     * @param {string} title - 排行榜标题
     * @returns {Promise<any>} 渲染后的图片或图片数组
     */
    private renderImageRanking;
    /**
     * 解析时间格式字符串
     * @private
     * @param {string} format - 时间格式字符串，如 "1d", "2w" 等
     * @returns {{ hours: number, description: string }} 解析后的小时数和描述文本
     */
    private parseTimeFormat;
    /**
     * 格式化排行榜文本
     * @private
     * @param {RankDiff[]} data - 排行榜数据
     * @param {string} title - 排行榜标题
     * @returns {string} 格式化后的排行榜文本
     */
    formatRankingText(data: RankDiff[], title: string): string;
}
export {};
