using MainShell.Models;
using System.Threading;
using System.Threading.Tasks;

namespace MainShell.Vision
{
    /// <summary>
    /// Die 定位服务接口。
    /// </summary>
    public interface IFindDieService
    {
        /// <summary>
        /// 采集图像并执行单颗 Die 定位。
        /// </summary>
        Task<VisionProcessResult<FindDieResult>> ProcessAsync(
            FindDieRequest request,
            CancellationToken cancellationToken = default(CancellationToken));

        /// <summary>
        /// 对输入图像直接执行单颗 Die 定位。
        /// </summary>
        Task<VisionProcessResult<FindDieResult>> ProcessImageAsync(
            MxImage image,
            FindDieImageRequest request,
            CancellationToken cancellationToken = default(CancellationToken));

        /// <summary>
        /// 采集图像并执行多颗 Die 定位。
        /// </summary>
        Task<VisionProcessResult<FindDiesResult>> ProcessMultipleAsync(
            FindDieRequest request,
            CancellationToken cancellationToken = default(CancellationToken));

        /// <summary>
        /// 对输入图像直接执行多颗 Die 定位。
        /// </summary>
        Task<VisionProcessResult<FindDiesResult>> ProcessMultipleImageAsync(
            MxImage image,
            FindDieImageRequest request,
            CancellationToken cancellationToken = default(CancellationToken));
    }
}
