export declare namespace channel {
    /**
    * handle plugin message
    * @param data byte[]
    */
    type ChannelListener = (data: any, exts?: any) => void;
    abstract class Channel {
        private listenerMap;
        /**
         * 注册通道
         * @param plugin 插件
         * @param channel 通道
         * @param exec 执行器
         */
        listen(plugin: any, channel: string, exec: ChannelListener): {
            channel: string;
            listener: any;
            off: () => void;
        };
        /**
         * 关闭插件注册的通道
         * @param plugin 插件
         */
        disable(plugin: any): void;
        /**
         * Send Channel Message
         * @param player recover target
         * @param channel ChannelName
         * @param data byte[]
         */
        abstract send(player: any, channel: string, data: any): any;
        /**
         * register channel
         * @param channel ChannelName
         */
        abstract register(channel: string, listener: ChannelListener): any;
        /**
         * unregister channel
         * @param channel ChannelName
         */
        abstract unregister(channel: string, listener?: any): void;
    }
}
//# sourceMappingURL=channel.d.ts.map