namespace Knot.Contracts.Conversations.Application.Abstractions; /// /// Хранилище для обеспечения идемпотентности операций. /// Если ключ уже существует — возвращает сохранённый результат без повторного выполнения. /// public interface IIdempotencyStore { /// /// Возвращает сохранённый результат по ключу или выполняет factory, сохраняет и возвращает результат. /// Task GetOrCreateAsync( string key, Func> factory, TimeSpan? expiration = null, CancellationToken cancellationToken = default); }