using System.Threading.Tasks; using BTCPayServer.Abstractions.Contracts; namespace BTCPayServer.Abstractions.Services { public abstract class PluginHookFilter:IPluginHookFilter { public abstract string Hook { get; } public Task Execute(object args) { return Execute(args is T args1 ? args1 : default).ContinueWith(task => task.Result as object); } public abstract Task Execute(T arg); } }