<?php


namespace AutoAdmin\Bundle\Admin\Controller\Admin;


use AutoAdmin\Bundle\Admin\Configuration\ConfigManager;
use AutoAdmin\Bundle\Admin\Factory\BuilderFactory;
use AutoAdmin\Bundle\Admin\Factory\ContentFactory;
use AutoAdmin\Bundle\Admin\Finder\EntityFinder;
use AutoAdmin\Bundle\Admin\Helper\AccessHelper;
use AutoAdmin\Bundle\Admin\Helper\EntityHelper;
use AutoAdmin\Bundle\Admin\Router\AdminRouter;
use AutoAdmin\Bundle\Content\Routing\ContentRouter;
use AutoAdmin\Bundle\Content\Site\SiteContextHelper;
use AutoAdmin\Bundle\Seo\Generator\GeneratorManager;
use Doctrine\ORM\EntityManagerInterface;

interface AdminControllerInterface
{
    public function setEntityHelper(EntityHelper $entityHelper): void;

    public function setBuilderFactory(BuilderFactory $builderFactory): void;

    public function setAdminRouter(AdminRouter $adminRouter): void;

    public function setContentFactory(ContentFactory $contentFactory): void;

    public function setAccessHelper(AccessHelper $accessHelper): void;

    public function setConfigManager(ConfigManager $configManager): void;

    public function setContentRouter(ContentRouter $contentRouter): void;

    public function setSiteContextHelper(SiteContextHelper $siteContextHelper): void;

    public function setEntityFinder(EntityFinder $entityFinder): void;

    public function setSeoGenerator(GeneratorManager $seoGenerator): void;

    public function setEm(EntityManagerInterface $em): void;

    public function ensureActionIsAllowed(string $entity, string $actionName);

    public function ensureControllerActionIsAllowed(string $controllerFqcn, string $actionName);
}