import { Deserializable, GetSerialized, Serializable } from "@skeldjs/protocol"; import { PacketContext } from "../../worker"; import { Plugin, RoomPlugin, WorkerPlugin } from "../../handlers"; import { MethodDecorator } from "../types"; export declare enum MessageHandlerAttach { Worker = 0, Room = 1 } export interface MessageHandlerOptions { override: boolean; attachTo: MessageHandlerAttach; } export declare type MessageHandlerCallback = (message: Message, ctx: PacketContext) => any; export declare type MessageHandlerCallbackOriginalListeners = (message: Message, ctx: PacketContext, originalListeners: MessageHandlerCallback[]) => any; export interface PluginRegisteredMessageHandlerInfo { messageClass: Deserializable; options: MessageHandlerOptions; handler: MessageHandlerCallbackOriginalListeners; } export declare function MessageHandler(messageClass: T, options?: Partial<{ override: false; attachTo: MessageHandlerAttach; }>): MethodDecorator>>; export declare function MessageHandler(messageClass: T, options: Partial<{ override: true; attachTo: MessageHandlerAttach; }>): MethodDecorator>>; export declare function MessageHandler(pluginClass: typeof WorkerPlugin | typeof RoomPlugin, messageClass: T, options?: Partial<{ override: false; attachTo: MessageHandlerAttach; }>): MethodDecorator>>; export declare function MessageHandler(pluginClass: typeof WorkerPlugin | typeof RoomPlugin, messageClass: T, options: Partial<{ override: true; attachTo: MessageHandlerAttach; }>): MethodDecorator>>; export declare function getPluginMessageHandlers(pluginCtr: typeof Plugin | Plugin): PluginRegisteredMessageHandlerInfo[];