<?php

declare(strict_types=1);

namespace App\Module\Transport\Domain\Repository;

use Doctrine\ORM\QueryBuilder;

/**
 * Contrat du repository du referentiel QUALIMAT (M4, lecture seule). Implementation
 * Doctrine : App\Module\Transport\Infrastructure\Doctrine\DoctrineQualimatCarrierRepository.
 *
 * La table `qualimat_carrier` est alimentee/soft-deletee EXCLUSIVEMENT par la
 * commande console `app:qualimat:sync` : ce contrat n'expose que de la lecture.
 */
interface QualimatCarrierRepositoryInterface
{
    /**
     * QueryBuilder de la saisie assistee (§ 4.7 / RG-4.01). Restreint aux lignes
     * actives (is_active = true), recherche fuzzy sur name (+ siret), tri name ASC.
     *
     * @param null|string $search texte de recherche libre (fuzzy name + siret)
     */
    public function createSearchQueryBuilder(?string $search = null): QueryBuilder;
}
