import { Context, Schema } from 'koishi';
import { CaveHashObject } from './HashManager';
import { CaveMetaObject } from './AIManager';
export declare const name = "best-cave";
export declare const inject: string[];
export declare const usage = "\n<div style=\"border-radius: 10px; border: 1px solid #ddd; padding: 16px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);\">\n  <h2 style=\"margin-top: 0; color: #4a6ee0;\">\uD83D\uDCCC \u63D2\u4EF6\u8BF4\u660E</h2>\n  <p>\uD83D\uDCD6 <strong>\u4F7F\u7528\u6587\u6863</strong>\uFF1A\u8BF7\u70B9\u51FB\u5DE6\u4E0A\u89D2\u7684 <strong>\u63D2\u4EF6\u4E3B\u9875</strong> \u67E5\u770B\u63D2\u4EF6\u4F7F\u7528\u6587\u6863</p>\n  <p>\uD83D\uDD0D <strong>\u66F4\u591A\u63D2\u4EF6</strong>\uFF1A\u53EF\u8BBF\u95EE <a href=\"https://github.com/YisRime\" style=\"color:#4a6ee0;text-decoration:none;\">\u82E1\u6DDE\u7684 GitHub</a> \u67E5\u770B\u672C\u4EBA\u7684\u6240\u6709\u63D2\u4EF6</p>\n</div>\n<div style=\"border-radius: 10px; border: 1px solid #ddd; padding: 16px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);\">\n  <h2 style=\"margin-top: 0; color: #e0574a;\">\u2764\uFE0F \u652F\u6301\u4E0E\u53CD\u9988</h2>\n  <p>\uD83C\uDF1F \u559C\u6B22\u8FD9\u4E2A\u63D2\u4EF6\uFF1F\u8BF7\u5728 <a href=\"https://github.com/YisRime\" style=\"color:#e0574a;text-decoration:none;\">GitHub</a> \u4E0A\u7ED9\u6211\u4E00\u4E2A Star\uFF01</p>\n  <p>\uD83D\uDC1B \u9047\u5230\u95EE\u9898\uFF1F\u8BF7\u901A\u8FC7 <strong>Issues</strong> \u63D0\u4EA4\u53CD\u9988\uFF0C\u6216\u52A0\u5165 QQ \u7FA4 <a href=\"https://qm.qq.com/q/PdLMx9Jowq\" style=\"color:#e0574a;text-decoration:none;\"><strong>855571375</strong></a> \u8FDB\u884C\u4EA4\u6D41</p>\n</div>\n";
/**
 * @description 存储在合并转发中的单个节点的数据结构。
 */
export interface ForwardNode {
    userId: string;
    userName: string;
    elements: StoredElement[];
}
/**
 * @description 存储在数据库中的单个消息元素。
 */
export interface StoredElement {
    type: 'text' | 'image' | 'video' | 'audio' | 'file' | 'at' | 'forward' | 'reply' | 'face';
    content?: string | ForwardNode[];
    file?: string;
}
/**
 * @description 数据库 \`cave\` 表的完整对象模型。
 */
export interface CaveObject {
    id: number;
    elements: StoredElement[];
    channelId: string;
    userId: string;
    userName: string;
    status: 'active' | 'delete' | 'pending' | 'preload';
    time: Date;
}
declare module 'koishi' {
    interface Tables {
        cave: CaveObject;
        cave_hash: CaveHashObject;
        cave_meta: CaveMetaObject;
    }
}
export interface Config {
    perChannel: boolean;
    adminChannel: string;
    enableName: boolean;
    enableIO: boolean;
    enablePend: boolean;
    caveFormat: string;
    enableSimilarity: boolean;
    textThreshold: number;
    imageThreshold: number;
    localPath?: string;
    enableS3: boolean;
    endpoint?: string;
    region?: string;
    accessKeyId?: string;
    secretAccessKey?: string;
    bucket?: string;
    publicUrl?: string;
    enableAI: boolean;
    endpoints?: {
        url: string;
        key: string;
        model: string;
    }[];
    enableApprove: boolean;
    approveThreshold: number;
    onAIReviewFail: boolean;
    systemPrompt: string;
}
export declare const Config: Schema<Config>;
export declare function apply(ctx: Context, config: Config): void;
