namespace ZB.MOM.WW.OtOpcUa.Commons.Browsing;

/// <summary>
///     Per-driver factory that opens an ad-hoc browse session against the configuration
///     supplied as JSON. Parallels <c>IDriverProbe</c> in the runtime — one implementation
///     per driver type, registered in AdminUI DI and indexed by <see cref="DriverType"/>.
/// </summary>
public interface IDriverBrowser
{
    /// <summary>Driver type key, matching the AdminUI's persisted DriverType string
    /// (e.g. "OpcUaClient", "Galaxy").</summary>
    string DriverType { get; }

    /// <summary>Opens a browse session against the supplied configuration.</summary>
    /// <param name="configJson">Driver options serialized as JSON; same shape the runtime
    /// driver would consume.</param>
    /// <param name="cancellationToken">Cancellation for the connect phase only.</param>
    /// <returns>The opened browse session.</returns>
    Task<IBrowseSession> OpenAsync(string configJson, CancellationToken cancellationToken);
}
