<?php

namespace MintyPHP\Repository\Auth;

interface RememberTokenRepositoryInterface
{
    public function create(int $userId, string $selector, string $tokenHash, string $expiresAt): ?int;

    public function findBySelector(string $selector): ?array;

    public function updateToken(int $id, string $tokenHash, string $expiresAt): bool;

    public function expireAllByAdmin(): int;

    public function deleteById(int $id): bool;

    public function deleteByUserId(int $userId): bool;

    public function listByUserId(int $userId, int $limit = 20): array;

    public function countActive(): int;
}
