<?php

namespace App\EventPaymentModules\DTO;

use App\Enumerations\PaymentStatus;

/**
 * Ausgabe von {@see \App\EventPaymentModules\EventPaymentModule::doPayment()}.
 * Von allen Modulen geteilt -- jedes Modul befüllt nur die für es relevanten Felder.
 *
 * $status ist ein Lebenszyklus-Status (PaymentStatus-Slug, DB-gestützt). Reine Steuersignale
 * wie ein Redirect bleiben transiente Felder (redirectUrl), nicht Teil des Status-Vokabulars.
 */
final class DoPaymentResponse
{
    public bool $success = false;
    public string $status = PaymentStatus::PAYMENT_STATUS_PENDING;
    public ?string $redirectUrl = null;
    public ?\DateTimeImmutable $scheduledFor = null;
    public ?string $reference = null;
    public ?string $message = null;
}
