using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
namespace Deal.Modules.Cards.Application.Abstractions;
///
/// Политика контейнера: правила размещения карточек и жизненного цикла зоны.
///
///
/// Роль контейнера (не enum): пользовательская колонка-фильтр, стадия, «Неразобранное», архив/корзина,
/// терминальная зона — каждая реализует политику по-своему. Политика отвечает на два вопроса:
/// (1) можно ли карточке попасть сюда (правила фильтрации) и (2) что происходит с карточкой здесь
/// (возврат, автоочистка, терминальность, напоминания).
///
public interface IContainerPolicy
{
///
/// Правила попадания карточки в контейнер (null — фильтра нет, карточки кладутся вручную/ИИ).
///
public IContainerRules? Rules { get; }
///
/// Можно ли вернуть карточку из контейнера на доску пространства (архив/корзина — да; терминальные — нет).
///
public bool CanRestore { get; }
///
/// Терминальная зона: карточка завершила жизненный путь, ручная очистка без возврата.
///
public bool IsTerminal { get; }
///
/// Автоочистка контейнера: срок хранения карточек (null — автоочистки нет).
///
public TimeSpan? Retention { get; }
}