export declare namespace event {
    /**
     * 事件监听优先级
     */
    enum EventPriority {
        LOWEST = "LOWEST",
        LOW = "LOW",
        NORMAL = "NORMAL",
        HIGH = "HIGH",
        HIGHEST = "HIGHEST",
        MONITOR = "MONITOR"
    }
    abstract class Event {
        EventPriority: typeof EventPriority;
        private mapEvent;
        private listenerMap;
        private cacheSlowEventKey;
        protected baseEventDir: string;
        constructor(baseEventDir: string);
        /**
         * abstract event map function
         * ig: org.bukkit.event.player.PlayerLoginEvent => playerloginevent
         *     org.spongepowered.api.event.game.GameRegistryEvent.Register => gameregistryevent$register
         */
        mapEventName(): number;
        getJarFile(resource: string, loader?: any): any;
        class2Name(clazz: any): any;
        name2Class(name: any, event: string): any;
        /**
         * 创建命令执行器
         * @param name 插件名称
         * @param exec 执行方法
         * @param eventCls 事件类
         * @returns
         */
        createExecute(name: any, exec: any, eventCls: any): (...args: any[]) => number;
        /**
        * 添加事件监听
        * @param plugin {any} 插件
        * @param event {string} 事件名称
        * @param exec {function} 事件执行器
        * @param priority {string} [LOWEST,LOW,NORMAL,HIGH,HIGHEST,MONITOR] 优先级
        * @param ignoreCancel 是否忽略已取消事件
        */
        listen(plugin: any, event: string, exec: (event: any) => void, priority?: EventPriority, ignoreCancel?: boolean): () => void;
        /**
         * 关闭插件监听任务
         * @param plugin 插件
         */
        disable(plugin: any): void;
        /**
         * 判断
         * @param clazz 事件类
         */
        abstract isValidEvent(clazz: any): boolean;
        /**
         * 注册事件
         * @param eventCls 事件类
         * @param exec 执行器
         * @param priority 优先级
         * @param ignoreCancel 是否忽略已取消的事件
         */
        abstract register(eventCls: any, exec: Function, priority: any, ignoreCancel: boolean): any;
        /**
         * 取消监听事件
         * @param event 事件
         * @param listener 监听器
         */
        abstract unregister(event: any, listener: any): void;
    }
}
//# sourceMappingURL=event.d.ts.map