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