<?php

declare(strict_types=1);

namespace App\Services\Payments;

use RuntimeException;

/**
 * Se lanza cuando un pago viola una política de negocio previa al registro
 * (saldo excedido, sin cuotas pendientes, pago parcial/sobrepago no permitido).
 *
 * Lleva los errores en formato campo => [mensajes] para que cada superficie los
 * traduzca: la PWA a una respuesta 422 y Filament a una notificación.
 */
class PaymentPolicyException extends RuntimeException
{
    /**
     * @param  array<string, list<string>>  $errors
     */
    public function __construct(string $message, private readonly array $errors = [])
    {
        parent::__construct($message);
    }

    /**
     * @return array<string, list<string>>
     */
    public function errors(): array
    {
        return $this->errors;
    }
}
