<?php

namespace App\EventPaymentModules;

use App\Models\EventParticipant;

/**
 * Fähigkeits-Interface (Interface Segregation): Nur Zahlungsarten mit einem GiroCode (SEPA-QR)
 * implementieren dies -- aktuell ausschließlich die Überweisung. Das Core-Interface
 * {@see EventPaymentModule} bleibt davon unberührt.
 */
interface ProvidesGiroCode
{
    /**
     * Erzeugt den GiroCode (SEPA-QR) als PNG-Binary -- oder null, wenn (z.B. mangels offenem Betrag)
     * kein GiroCode angeboten wird.
     *
     * @param array<string, mixed> $configuration
     */
    public function giroCode(EventParticipant $participant, array $configuration): ?string;
}
