import { Context, Service } from 'koishi';
import { Config } from './config';
import { AIAnalyzeResult, AICategorizeResult, Category, EmojiAddOptions, EmojiItem, EmojiSearchOptions } from './types';
export declare class EmojiLunaService extends Service {
    config: Config;
    private _emojiStorage;
    private _categories;
    private _model;
    constructor(ctx: Context, config: Config);
    private initializeStorage;
    initializeAI(): Promise<void>;
    private parseAIResult;
    categorizeEmoji(imageBase64: string): Promise<AICategorizeResult | null>;
    analyzeEmoji(imageBase64: string): Promise<AIAnalyzeResult | null>;
    addEmoji(options: EmojiAddOptions, imageData: Buffer, aiAnalysis?: boolean): Promise<EmojiItem>;
    addEmojis(emojis: {
        options: EmojiAddOptions;
        buffer: Buffer;
    }[], aiAnalysis: boolean): Promise<EmojiItem[]>;
    getEmojiByName(name: string): Promise<EmojiItem | null>;
    getEmojisByName(name: string): Promise<EmojiItem[]>;
    categorizeExistingEmojis(): Promise<{
        success: number;
        failed: number;
    }>;
    getEmojiList(options?: EmojiSearchOptions): Promise<EmojiItem[]>;
    searchEmoji(keyword: string): Promise<EmojiItem[]>;
    getEmojiById(id: string): Promise<EmojiItem | null>;
    deleteEmoji(id: string): Promise<boolean>;
    deleteAllEmojis(): Promise<boolean>;
    addCategory(name: string, description?: string): Promise<Category>;
    getCategories(): Promise<Category[]>;
    getCategoryByName(name: string): Promise<Category | null>;
    deleteCategory(id: string): Promise<boolean>;
    getAllTags(): Promise<string[]>;
    updateEmojiTags(id: string, tags: string[]): Promise<boolean>;
    updateEmojiCategory(id: string, category: string): Promise<boolean>;
    private loadEmojis;
    private loadCategories;
    getEmojiCount(): number;
    getCategoryCount(): number;
    private updateCategoryEmojiCount;
    static inject: string[];
}
declare module 'koishi' {
    interface Context {
        emojiluna: EmojiLunaService;
    }
    interface Tables {
        emojiluna_emojis: {
            id: string;
            name: string;
            category: string;
            path: string;
            size: number;
            created_at: Date;
            tags: string;
        };
        emojiluna_categories: {
            id: string;
            name: string;
            description: string;
            emoji_count: number;
            created_at: Date;
        };
    }
    interface Events {
        'emojiluna/emoji-added': (emoji: EmojiItem) => void;
        'emojiluna/emoji-deleted': (id: string) => void;
        'emojiluna/emoji-updated': (emoji: EmojiItem) => void;
        'emojiluna/category-added': (category: Category) => void;
        'emojiluna/category-deleted': (id: string) => void;
    }
}
