using Dalamud.Game.Addon.Events;
namespace Dalamud.Plugin.Services;
///
/// Service provider for addon event management.
///
public interface IAddonEventManager
{
///
/// Delegate to be called when an event is received.
///
/// Event type for this event handler.
/// The parent addon for this event handler.
/// The specific node that will trigger this event handler.
public delegate void AddonEventHandler(AddonEventType atkEventType, nint atkUnitBase, nint atkResNode);
///
/// Registers an event handler for the specified addon, node, and type.
///
/// The parent addon for this event.
/// The node that will trigger this event.
/// The event type for this event.
/// The handler to call when event is triggered.
/// IAddonEventHandle used to remove the event. Null if no event was added.
IAddonEventHandle? AddEvent(nint atkUnitBase, nint atkResNode, AddonEventType eventType, AddonEventHandler eventHandler);
///
/// Unregisters an event handler with the specified event id and event type.
///
/// Unique handle identifying this event.
void RemoveEvent(IAddonEventHandle eventHandle);
///
/// Force the game cursor to be the specified cursor.
///
/// Which cursor to use.
void SetCursor(AddonCursorType cursor);
///
/// Un-forces the game cursor.
///
void ResetCursor();
}