import { GreetingPluginConfig, Instance } from './config';
import { LifecycleEvents } from 'koishi-thirdeye';
import { Bot } from 'koishi';
export * from './config';
declare const GreetingPlugin_base: new (ctx: import("koishi").Context, config: {
    instances?: {
        from?: string;
        getBot?: (list: Bot<Bot.Config>[]) => Bot<Bot.Config>;
        to?: {
            userId?: string;
            channelId?: string;
            guildId?: string;
            getDescription?: () => string;
            salt?: string;
            send?: (bot: Bot<Bot.Config>, text: string) => Promise<string[]>;
        }[];
        rules?: {
            fromTime?: string;
            toTime?: string;
            getTimeRange?: () => readonly [import("moment").Moment, import("moment").Moment];
            shouldSend?: (target: import("./config").Target) => boolean;
            salt?: string;
            patterns?: {
                words?: {
                    word?: string;
                    weight?: number;
                    formWord?: () => any;
                    patterns?: any[];
                    toEntry?: () => any;
                }[];
                pickWord?: () => any;
            }[];
            generateText?: () => string;
        }[];
        run?: (list: Bot<Bot.Config>[]) => Promise<Instance>;
    }[];
    runInstances?: (list: Bot<Bot.Config>[], instances?: Instance[]) => Promise<Instance[]>;
}) => {
    ctx: import("koishi").Context;
    config: GreetingPluginConfig;
};
export default class GreetingPlugin extends GreetingPlugin_base implements LifecycleEvents {
    private bots;
    private job;
    private pendingInstances;
    private addPending;
    onBotStatusUpdated(bot: Bot): Promise<void>;
    private resolvePending;
    run(instances?: Instance[]): Promise<void>;
    onConnect(): void;
    onDisconnect(): void;
}
