namespace Lattice.Core.DragDrop.Abstractions;
///
/// Определяет контракт для объектов, которые могут быть источником данных
/// в операции перетаскивания с поддержкой асинхронных операций.
///
public interface IAsyncDragSource : IDragSource
{
///
/// Определяет, может ли объект начать операцию перетаскивания (асинхронно).
///
Task<(bool CanStart, Models.DragInfo? DragInfo)> CanStartDragAsync();
///
/// Начинает операцию перетаскивания (асинхронно).
///
Task StartDragAsync(Models.DragInfo dragInfo);
///
/// Вызывается при завершении операции перетаскивания (асинхронно).
///
Task DragCompletedAsync(Models.DragInfo dragInfo, Enums.DragDropEffects effects);
///
/// Вызывается при отмене операции перетаскивания (асинхронно).
///
Task DragCancelledAsync(Models.DragInfo dragInfo);
}