namespace ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Services;

/// <summary>
/// Resolves an instance unique name to its site identifier.
/// Used by Inbound API's Route.To() to determine which site to route requests to.
/// </summary>
public interface IInstanceLocator
{
    /// <summary>
    /// Resolves the site identifier for a given instance unique name.
    /// Returns null if the instance is not found.
    /// </summary>
    /// <param name="instanceUniqueName">System-wide unique name of the instance to look up.</param>
    /// <param name="cancellationToken">Cancellation token.</param>
    /// <returns>A task that resolves to the site identifier for the instance, or <c>null</c> if the instance is not found.</returns>
    Task<string?> GetSiteIdForInstanceAsync(
        string instanceUniqueName,
        CancellationToken cancellationToken = default);
}
