import App from "../app";
export type LogConsoleType = "info" | "warning" | "error" | "debug";
/**
 * 日志项接口
 */
interface LogItem {
    type: LogConsoleType;
    title: string;
    date?: string;
    metadata?: any;
}
interface LogFile {
    fileName: string;
    date: string;
    fileContent: LogFileContent;
}
interface LogFileContent {
    metadata: any;
    logs: LogItem[];
}
export interface LoggerOptions {
    prefix?: string;
    checkInterval?: number;
    feishuConfig?: any;
    retentionDays?: number;
}
/**
 * 日志管理器类
 */
declare class LoggerManager {
    private logBuffer;
    private timer;
    private checkInterval;
    private prefix;
    private metadata;
    private db;
    private app;
    private feishuConfig;
    private retentionDays;
    private metadataFunction;
    /**
     * 构造函数
     * @param prefix 日志前缀
     * @param checkInterval 检查间隔时间，默认5分钟
     */
    constructor(app: App, options?: LoggerOptions);
    init(): void;
    /**
     * 初始化 IndexDB
     */
    private initDB;
    /**
     * 设置元数据
     * @param metadata 元数据
     */
    setMetadata(metadata: any): void;
    setMetadataFunction(metadataFunction: () => any): void;
    /**
     * 初始化定时器
     */
    initTimer(): void;
    /**
     * 添加日志
     * @param log 日志项
     */
    addLog(log: LogItem): void;
    /**
     * 发送飞书通知
     * @param log 日志项
     */
    private sendFeishuNotification;
    /**
     * 创建日志文件名
     * @returns 日志文件名
     */
    private createFileName;
    /**
     * 创建日志文件
     * @param _fileName 文件名
     * @returns 日志文件对象
     */
    private createFile;
    /**
     * 存储日志到持久化存储
     */
    private storeLog;
    /**
     * 清理旧日志，只保留最近指定天数的日志
     */
    private cleanupOldLogs;
    /**
     * 获取日志文件列表
     * @returns 日志文件列表
     */
    getLogFiles(): Promise<LogFile[]>;
    /**
     * 获取指定日志文件的内容
     * @param fileName 日志文件名
     * @returns 日志文件内容
     */
    getLogFile(fileName: string): Promise<LogFile | null>;
    /**
     * 清空指定日志文件
     * @param fileName 日志文件名，不指定则清空所有日志
     * @returns 是否成功
     */
    clearLogs(fileName?: string): Promise<boolean>;
    /**
     * 设置日志保留天数
     * @param days 保留天数
     */
    setRetentionDays(days: number): void;
    /**
     * 手动触发清理旧日志
     */
    manualCleanup(): Promise<void>;
    /**
     * 销毁实例
     */
    destroy(): void;
}
export default LoggerManager;
