<?php

declare(strict_types=1);

namespace App\Shared\Infrastructure\RateLimit;

use Symfony\Component\HttpFoundation\Request;

/**
 * Implémentation "null" du rate limiter pour les environnements de test.
 *
 * Cette implémentation ne fait rien - elle permet de bypasser le rate limiting
 * pour les tests E2E où l'IP est partagée entre tous les tests.
 */
final readonly class NullLoginRateLimiter implements LoginRateLimiterInterface
{
    public function check(Request $request, string $email): LoginRateLimitResult
    {
        return LoginRateLimitResult::allowed(attempts: 0, delaySeconds: 0, requiresCaptcha: false);
    }

    public function recordFailure(Request $request, string $email): LoginRateLimitResult
    {
        return LoginRateLimitResult::allowed(attempts: 1, delaySeconds: 0, requiresCaptcha: false);
    }

    public function reset(string $email): void
    {
        // No-op
    }

    public function blockIp(string $ip): void
    {
        // No-op
    }

    public function isIpBlocked(string $ip): bool
    {
        return false;
    }
}
