import { RangeMessage, SpecialMessage } from './index';
/**
 * 分数显示格式的类型定义
 * - binary: 二进制格式
 * - octal: 八进制格式
 * - hex: 十六进制格式
 * - simple: 简单表达式格式
 * - complex: 复杂表达式格式
 */
export type ScoreDisplayFormat = 'binary' | 'octal' | 'hex' | 'simple' | 'complex';
/**
 * 分数显示配置接口
 * @interface ScoreDisplayConfig
 * @property {boolean} enabled 是否启用特殊显示格式
 * @property {string} [date] 特定日期（格式：MM-DD），若指定，则只在该日期使用特殊格式
 * @property {ScoreDisplayFormat} [mode] 显示模式
 */
interface ScoreDisplayConfig {
    enabled: boolean;
    date?: string;
    mode?: ScoreDisplayFormat;
}
interface PixivConfig {
    imagesPath?: string;
    baseDir?: string;
    logger?: any;
}
/**
 * 消息配置接口
 * @interface MsgConfig
 * @property {Array<RangeMessage>} rangeMessages 区间消息数组
 * @property {Array<SpecialMessage>} [specialMessages] 特殊消息数组
 * @property {string} template 消息模板
 * @property {ScoreDisplayConfig} display 分数显示配置
 * @property {boolean} enableRange 是否启用区间消息
 * @property {boolean} enableSpecial 是否启用特殊消息
 */
interface MsgConfig {
    rangeMessages: Array<RangeMessage>;
    specialMessages?: Array<SpecialMessage>;
    template: string;
    display: ScoreDisplayConfig;
    enableRange: boolean;
    enableSpecial: boolean;
}
/**
 * 消息构建器类，用于构建JRRP结果消息
 * @class MsgBuilder
 */
export declare class MsgBuilder {
    private config;
    private dateSpecialMsgsMap;
    private scoreSpecialMsgsMap;
    private rangesCache;
    private pixivConfig;
    /**
     * 创建消息构建器实例
     * @param {MsgConfig} config 消息配置
     * @param {PixivConfig} [pixivConfig] Pixiv配置
     */
    constructor(config: MsgConfig, pixivConfig?: PixivConfig);
    /**
     * 初始化缓存数据
     * @private
     */
    private initializeCache;
    /**
     * 获取一言内容
     * @private
     * @param {string} [params] 一言参数，直接拼接到API URL
     * @returns {Promise<string>} 一言内容，包含出处和作者
     */
    private getHitokoto;
    /**
     * 获取Pixiv图片链接数组（本地无则自动下载）
     */
    private getPixivLinks;
    /**
     * 构建JRRP结果消息
     * @param {number} score 今日人品分数
     * @param {string} userId 用户ID
     * @param {string} username 用户名
     * @returns {Promise<string|string[]>} 格式化后的消息字符串或消息队列
     */
    build(score: number, userId: string, username: string): Promise<string | string[]>;
    /**
     * 替换所有一言占位符
     * @private
     * @param {string} template 模板字符串
     * @returns {Promise<string>} 替换后的字符串
     */
    private replaceHitokotoPlaceholders;
    /**
     * 替换所有Pixiv占位符
     * @private
     * @param {string} template 模板字符串
     * @returns {Promise<string>} 替换后的字符串
     */
    private replacePixivPlaceholders;
    /**
     * 按优先级获取消息内容
     * @private
     * @param {number} score 分数
     * @param {string} date 日期字符串
     * @returns {string} 消息文本
     */
    private getMessage;
    /**
     * 格式化分数显示
     * @private
     * @param {number} score 分数
     * @param {string} todayStr 今日日期字符串
     * @returns {string} 格式化后的分数字符串
     */
    private formatScore;
}
export {};
