using Extrudex.Domain.Enums;
namespace Extrudex.Domain.Interfaces;
///
/// Service interface for generating QR codes that encode deep links to
/// Extrudex resources (spools, printers, locations). QR codes are
/// high-contrast and optimized for small label printing.
///
public interface IQrCodeService
{
///
/// Generates a PNG QR code image for the specified resource type and ID.
/// The encoded URL points to the resource's detail page in the Extrudex frontend.
///
/// The type of resource (Spool, Printer, Location).
/// The unique identifier of the resource.
///
/// Pixel density per QR module. Higher values produce larger images.
/// Default (20) balances readability and label size.
///
/// A byte array containing the PNG image data.
byte[] GeneratePng(QrResourceType resourceType, Guid id, int pixelsPerModule = 20);
///
/// Generates an SVG QR code image for the specified resource type and ID.
/// SVG is resolution-independent and ideal for printing at any scale.
///
/// The type of resource (Spool, Printer, Location).
/// The unique identifier of the resource.
/// A string containing the SVG markup.
string GenerateSvg(QrResourceType resourceType, Guid id);
///
/// Constructs the URL that will be encoded into the QR code for the given resource.
///
/// The type of resource.
/// The unique identifier of the resource.
/// The absolute URL to be encoded in the QR code.
string GetResourceUrl(QrResourceType resourceType, Guid id);
}