using Opc.Ua;
using ZB.MOM.WW.OtOpcUa.Client.Shared.Models;

namespace ZB.MOM.WW.OtOpcUa.Client.Shared.Adapters;

/// <summary>
///     Creates and configures an OPC UA ApplicationConfiguration.
/// </summary>
internal interface IApplicationConfigurationFactory
{
    /// <summary>
    ///     Creates a validated ApplicationConfiguration for the given connection settings.
    /// </summary>
    /// <param name="settings">The connection settings to configure.</param>
    /// <param name="ct">Cancellation token for the operation.</param>
    /// <returns>The validated <see cref="ApplicationConfiguration"/>.</returns>
    Task<ApplicationConfiguration> CreateAsync(ConnectionSettings settings, CancellationToken ct = default);
}