using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using BTCPayServer.Payments.PayJoin; using NBitcoin; namespace BTCPayServer.Plugins.Wabisabi; public class LocalisedUTXOLocker: IUTXOLocker { private HashSet _locked = new(); public Task TryLock(OutPoint outpoint) { return Task.FromResult(_locked.Add(outpoint)); } public Task TryUnlock(params OutPoint[] outPoints) { return Task.FromResult(_locked.RemoveWhere( outPoints.Contains) > 0); } public Task TryLockInputs(OutPoint[] outPoints) { throw new NotImplementedException(); } public Task> FindLocks(OutPoint[] outpoints) { return Task.FromResult(_locked.Where(point => outpoints.Contains(point)).ToHashSet()); } }