#nullable enable
namespace Baya.Application.Contracts.Payments;

/// <summary>
/// Resolves the <see cref="IBnplProvider"/> impl for a <c>provider_code</c> (<c>snapppay</c>/<c>digipay</c>/
/// <c>tara</c>/<c>torobpay</c>) — config-driven selection, <b>never an <c>if (mock)</c> branch in a handler</b>.
/// A real system maps each code to its concrete adapter (<c>SnappPayBnplProvider</c>, <c>DigipayBnplProvider</c>,
/// …); this phase ships the mock behind every known code and a single active route. Returns <c>null</c> for an
/// unknown/unconfigured code so the handler can reject it cleanly rather than throw.
/// </summary>
public interface IBnplProviderResolver
{
    IBnplProvider? Resolve(string providerCode);
}
