<?php
declare(strict_types=1);

namespace App\Core\Contracts;

interface PaymentProcessorInterface
{
    public function processPayment(array $data): array;

    public function voidPayment(int $paymentId, string $reason): array;

    public function hasPaid(int $memberId, string $paymentType, ?string $relatedEntityType = null, ?int $relatedEntityId = null): bool;

    public function totalPaid(int $memberId, ?string $paymentType = null): string;

    public function generateReceiptNumber(): string;

    public function getPaymentTypeLabel(string $type): string;
}
