using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Data.Models; namespace SharedLibraryCore.Interfaces; public interface IInteractionRegistration { void RegisterScriptInteraction(string interactionName, string source, Delegate interactionRegistration); void RegisterInteraction(string interactionName, Func<int?, Reference.Game?, CancellationToken, Task<IInteractionData>> interactionRegistration); void UnregisterInteraction(string interactionName); Task<IEnumerable<IInteractionData>> GetInteractions(string interactionPrefix = null, int? clientId = null, Reference.Game? game = null, CancellationToken token = default); Task<string> ProcessInteraction(string interactionId, int originId, int? targetId = null, Reference.Game? game = null, IDictionary<string, string> meta = null, CancellationToken token = default); }