namespace Meezi.Core.Interfaces;

public record ZarinPalRequestResult(bool Success, string? Authority, string? PaymentUrl, string? ErrorMessage);

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

public interface IZarinPalGateway
{
    Task<bool> IsEnabledAsync(CancellationToken cancellationToken = default);

    Task<ZarinPalRequestResult> RequestPaymentAsync(
        long amountRials,
        string description,
        string callbackUrl,
        CancellationToken cancellationToken = default);

    Task<ZarinPalVerifyResult> VerifyPaymentAsync(
        string authority,
        long amountRials,
        CancellationToken cancellationToken = default);
}
