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

/// <summary>
/// Seam for outbound SMS delivery — the OTP rail plus later transactional messages. The mock logs the
/// OTP code (never the full phone number); the real implementation swaps to an Iranian gateway
/// (Kavenegar/Ghasedak/SMS.ir) behind the same interface via a registration change only.
/// </summary>
public interface ISmsSender
{
    /// <summary>Delivers a one-time login code to the given (normalized) phone number.</summary>
    Task SendOtpAsync(string phone, string code, CancellationToken cancellationToken = default);

    /// <summary>Delivers a free-form transactional message (booking updates etc., later phases).</summary>
    Task SendAsync(string phone, string message, CancellationToken cancellationToken = default);
}