using DysonNetwork.Shared.Models; using MagicOnion; using NodaTime; namespace DysonNetwork.Shared.Services; public interface IMagicSpellService : IService { /// /// Creates a new magic spell /// Task CreateMagicSpell( Account account, MagicSpellType type, Dictionary meta, Instant? expiredAt = null, Instant? affectedAt = null, bool preventRepeat = false ); /// /// Gets a magic spell by its token /// Task GetMagicSpellAsync(string token); /// /// Gets a magic spell by its ID. /// /// The ID of the magic spell. /// The magic spell if found, otherwise null. Task GetMagicSpellByIdAsync(Guid spellId); /// /// Applies a password reset magic spell. /// /// The magic spell object. /// The new password. Task ApplyPasswordReset(MagicSpell spell, string newPassword); /// /// Consumes a magic spell /// Task ApplyMagicSpell(string token); }