import { CronJob } from 'cron';
import { Command, Filter, type SessionMsg } from '../components';
import { Symbols } from '../global';
import { type CommandConfig, type FilterOption, type MidwareCallback, type RegexpCallback, type TaskCallback, type TaskOptions } from '../types';
import type { Context } from './core';
interface MidwareData {
    callback: MidwareCallback;
    priority: number;
}
interface RegexpData {
    match: RegExp;
    callback: RegexpCallback;
}
export declare class Message {
    readonly [Symbols.midware]: Set<MidwareData>;
    readonly [Symbols.command]: Set<Command>;
    readonly [Symbols.regexp]: Set<RegexpData>;
    readonly [Symbols.task]: Set<CronJob>;
    readonly [Symbols.filter]: Map<string, Filter>;
    readonly [Symbols.promise]: Map<string, ((value: SessionMsg['message']) => void)[]>;
    private handleMidware;
    private handleRegexp;
    private handleCommand;
    private readonly ctx;
    constructor(ctx: Context);
    midware(callback: MidwareCallback, priority?: number): () => boolean;
    command<T extends string>(template: T, config?: CommandConfig): Command<T, {}, "all">;
    regexp(match: RegExp, callback: RegexpCallback): () => boolean;
    boardcast(): void;
    notify(): void;
    task(options: TaskOptions, callback: TaskCallback): () => boolean;
    filter(option: FilterOption): any;
}
export default Message;
