<?php

namespace App\Providers;

use App\Core\Hook\HookManager;
use Illuminate\Support\ServiceProvider;

/**
 * PRC-630 — Hook→Event köprüsü.
 *
 * config/hook_events.php map'indeki her (hookName → EventClass) için bir
 * action listener kaydeder; hook fire edildiğinde tipli event dispatch eder.
 *
 * DİKKAT: Listener YALNIZ event dispatch eder, ASLA yeni hook fire etmez
 * (sonsuz döngü olmaması için).
 */
class HookEventServiceProvider extends ServiceProvider
{
    public function boot(HookManager $hooks): void
    {
        foreach (config('hook_events', []) as $hook => $eventClass) {
            $hooks->listenAction($hook, function (array $ctx) use ($eventClass) {
                event(new $eventClass($ctx));
            });
        }
    }
}
