using System.Collections.Generic;
using XP.Hardware.Detector.Abstractions;
using XP.Hardware.Detector.Abstractions.Enums;
using XP.Hardware.Detector.Config;

namespace XP.Hardware.Detector.Factories
{
    /// <summary>
    /// 探测器工厂接口 | Detector factory interface
    /// 根据配置创建探测器实例
    /// </summary>
    public interface IDetectorFactory
    {
        /// <summary>
        /// 创建探测器实例 | Create detector instance
        /// </summary>
        /// <param name="config">探测器配置 | Detector configuration</param>
        /// <returns>探测器实例或错误结果 | Detector instance or error result</returns>
        DetectorResult<IAreaDetector> CreateDetector(DetectorConfig config);

        /// <summary>
        /// 获取支持的探测器类型 | Get supported detector types
        /// </summary>
        /// <returns>支持的类型列表 | List of supported types</returns>
        IEnumerable<DetectorType> GetSupportedTypes();
    }
}
