namespace Meezi.Core.Interfaces;

public record SnappPayInitResult(bool Success, string? PaymentToken, string? PaymentUrl, string? ErrorMessage);

public record SnappPayVerifyResult(bool Success, string? RefId, string? ErrorMessage);

public interface ISnappPayGateway
{
    Task<bool> IsEnabledAsync(CancellationToken cancellationToken = default);
    Task<SnappPayInitResult> RequestPaymentAsync(
        long amountRials,
        string transactionId,
        string returnUrl,
        CancellationToken cancellationToken = default);
    Task<SnappPayVerifyResult> VerifyAndSettleAsync(
        string paymentToken,
        CancellationToken cancellationToken = default);
}
