import { EventArguments, ExtendedClientEvents, GuildEvent, ValidEvent } from "./eventTypes"; import { Client } from "discord.js"; import { Profiler } from "../Profiler"; export type RelayListener = { (args: EventArguments[TEvent]): any; profilerContext?: string; }; type GuildListenerMap = Map>>>; type AnyListenerMap = Map>>; /** * Relays Discord events to the appropriate plugins. * Guild events are a subset of all events, that apply to a specific guild. */ export declare class EventRelay { protected client: Client; protected profiler: Profiler; protected guildListeners: GuildListenerMap; protected anyListeners: AnyListenerMap; protected registeredRelays: Set; constructor(client: Client, profiler: Profiler); onGuildEvent(guildId: string, ev: TEvent, listener: RelayListener): void; offGuildEvent(guildId: string, ev: TEvent, listener: RelayListener): void; onAnyEvent(ev: TEvent, listener: RelayListener): void; offAnyEvent(ev: TEvent, listener: RelayListener): void; protected registerEventRelay(ev: ValidEvent): void; protected relayEvent(ev: ValidEvent, args: ExtendedClientEvents[ValidEvent]): void; } export {};