import { Context, h, Logger } from 'koishi';
/**
 * 表情包模板信息接口
 * @interface MemeInfo
 */
export interface MemeInfo {
    id: string;
    keywords: string[];
    tags: string[];
    params_type?: {
        min_images?: number;
        max_images?: number;
        min_texts?: number;
        max_texts?: number;
        default_texts?: string[];
        [key: string]: any;
    };
    [key: string]: any;
}
/**
 * 图片获取信息类型
 * @typedef {Object} ImageFetchInfo
 */
export type ImageFetchInfo = {
    src: string;
} | {
    userId: string;
};
/**
 * 解析后的参数接口
 * @interface ResolvedArgs
 */
export interface ResolvedArgs {
    imageInfos: ImageFetchInfo[];
    texts: string[];
    options: Record<string, any>;
}
/**
 * 表情包生成器类
 * 负责管理模板、解析参数和生成表情包
 * @class MemeGenerator
 */
export declare class MemeGenerator {
    private ctx;
    private logger;
    private apiUrl;
    private memeCache;
    private cachePath;
    /**
     * 创建表情包生成器实例
     * @param {Context} ctx - Koishi 上下文
     * @param {Logger} logger - 日志记录器
     * @param {string} apiUrl - API服务器地址
     */
    constructor(ctx: Context, logger: Logger, apiUrl?: string);
    /**
     * 刷新模板缓存
     * 从API获取最新的模板列表和信息，并更新本地缓存
     * @returns {Promise<MemeInfo[]>} 更新后的模板列表
     */
    refreshCache(): Promise<MemeInfo[]>;
    /**
     * 匹配模板关键词
     * 根据提供的关键词查找匹配的模板，并按优先级排序
     * @param {string} key - 要匹配的关键词
     * @returns {MemeInfo[]} 匹配到的模板列表，按匹配优先级排序
     */
    matchTemplates(key: string): MemeInfo[];
    /**
     * 查找表情包模板
     * 先从缓存中查找，如果找不到则尝试从API获取
     * @param {string} key - 要查找的模板ID或关键词
     * @param {boolean} fuzzy - 是否启用模糊匹配，默认为true
     * @returns {Promise<MemeInfo | null>} 找到的模板信息，如果未找到则返回null
     */
    findTemplate(key: string, fuzzy?: boolean): Promise<MemeInfo | null>;
    /**
     * 获取所有关键词到模板ID的映射
     * 用于快速查找和自动补全功能
     * @returns {Map<string, string>} 关键词到模板ID的映射表
     */
    getAllKeywordMappings(): Map<string, string>;
    /**
     * 生成表情包
     * 解析指令参数，获取所需的图片和文本，然后调用API生成表情包
     * @param {any} session - 消息会话对象
     * @param {string} key - 模板ID或关键词
     * @param {h[]} args - 参数元素列表
     * @returns {Promise<h | string>} 生成的表情包图片元素或错误消息
     */
    generateMeme(session: any, key: string, args: h[]): Promise<any>;
}
