<?php

declare(strict_types=1);

namespace App\Shared\Domain\Module;

/**
 * Implemented by every `*Module` declaration class. The set of active modules
 * is listed in config/modules.php and exposed via GET /api/modules.
 */
interface ModuleInterface
{
    public static function id(): string;

    public static function label(): string;

    public static function isRequired(): bool;

    /**
     * @return list<array{code: string, label: string}>
     */
    public static function permissions(): array;
}
