<?php

namespace App\Repository\Prospect;

use App\Entity\Prospect;

interface ProspectRepositoryInterface
{
    /**
     * @param int $id
     *
     * @return Prospect
     */
    public function findById(int $id): ?Prospect;

    /**
     * @param Prospect $prospect
     */
    public function save(Prospect $prospect): void;

    /**
     * @param Prospect $prospect
     */
    public function delete(Prospect $prospect): void;

    public function getByEmail(string $email);

    /**
     * Finds entities by a set of criteria.
     *
     * @param array      $criteria
     * @param array|null $orderBy
     * @param int|null   $limit
     * @param int|null   $offset
     *
     * @return array the objects
     */
    public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null);

    public function getTypes(): array;

    public function getNotUpdatedLastMonth();
}
