import { ILifeCycle } from './ILifeCycle';
import { IComponent } from './IComponent';
import Application from '../application';
import Session from '../common/service/session/session';
export interface IComponentConstructor {
    new (app: Application, opts?: any): IComponent;
}
export interface IApplicationEvent {
    bindSession?: (session: Session) => void;
    unbindSession?: (session: Session) => void;
    closeSession?: (session: Session) => void;
    startServer?: (serverId: string) => void;
    startAll?: () => void;
}
export interface IApplicationEventConstructor {
    new (app: Application, opts?: any): IApplicationEvent;
}
export interface IPlugin extends ILifeCycle {
    /**
     * 插件的名称
     */
    name: string;
    /**
     * 启动插件时需要自动加载的组件
     */
    components?: IComponentConstructor[];
    /**
     * 启动插件时需要侦听的应用程序事件
     */
    events?: IApplicationEventConstructor[];
    /**
     * 插件暴漏的handler所在的路径
     */
    handlerPath?: string;
    /**
     * 插件暴漏的remoter所在的路径
     */
    remoterPath?: string;
    /**
     * 插件暴漏的crons所在的路径
     */
    cronPath?: string;
}
