namespace Inspectron.Epson;

/// <summary>
/// Interface for ENPC printer discovery service
/// </summary>
public interface IDiscoveryService
{
    /// <summary>
    /// Discovers Epson printers on the local network using UDP broadcast
    /// </summary>
    /// <param name="timeout">How long to wait for responses (default: 5 seconds)</param>
    /// <param name="onPrinterDiscovered">Optional callback invoked when a printer is discovered</param>
    /// <returns>List of discovered printer information</returns>
    Task<List<DiscoveredPrinter>> DiscoverPrintersAsync(
        TimeSpan? timeout = null,
        Action<DiscoveredPrinter>? onPrinterDiscovered = null);
}
