import { Listener, OnOpts } from "./BasePluginEventManager"; import { BasePluginType } from "../plugins/pluginTypes"; import { AnyPluginData, GlobalPluginData, GuildPluginData } from "../plugins/PluginData"; import { GuildEvent, ValidEvent } from "./eventTypes"; export interface EventListenerBlueprint, TEventName extends ValidEvent = ValidEvent> extends OnOpts { event: TEventName; listener: Listener; } /** * Helper function to create an event listener blueprint with type hints */ type EventListenerBlueprintCreator, TBaseEventName extends ValidEvent> = (blueprint: EventListenerBlueprint) => EventListenerBlueprint; /** * Helper function to create an event listener blueprint for guild events. * Used for type inference from event name. * * To specify `TPluginType` for additional type hints, use: * `guildEventListener()(blueprint)` */ export declare function guildPluginEventListener(blueprint: EventListenerBlueprint, TEventName>): EventListenerBlueprint, TEventName>; /** * Specify `TPluginType` for type hints and return self */ export declare function guildPluginEventListener(): EventListenerBlueprintCreator, GuildEvent>; /** * Helper function to create an event listener blueprint for global events. * Used for type inference from event name. * * To specify `TPluginType` for additional type hints, use: * `globalEventListener()(blueprint)` */ export declare function globalPluginEventListener(blueprint: EventListenerBlueprint, TEventName>): EventListenerBlueprint, TEventName>; /** * Specify `TPluginType` for type hints and return self */ export declare function globalPluginEventListener(): EventListenerBlueprintCreator, ValidEvent>; export {};