<?php

declare(strict_types=1);

namespace {{namespace}};

use apexl\Io\includes\Module;
{{#services}}
use apexl\Io\includes\System;
use {{namespace}}\Interface\MyInterface;
use {{namespace}}\Service\MyService;
{{/services}}
{{#permissions}}use apexl\Io\modules\user\services\Permissions;{{/permissions}}
{{#menus}}use apexl\Io\modules\menu\services\Menu;{{/menus}}

class {{moduleName}}Module extends Module{{#implements}} implements {{implements}}{{/implements}}
{
    {{#routes}}
    public function routes(): void {
        include __DIR__ . '/routes/routes.php';
    }

    {{/routes}}
    {{#services}}
    public function addServices(): array {
        return [
            MyInterface::class => fn() => System::makeRegisteredService(MyService::class),
        ];
    }

    {{/services}}
    {{#hooks}}
    public function hooks(): array {
        /** @TODO Implement hooks */
        return [];
    }

    {{/hooks}}
    {{#permissions}}
    public function permissions(Permissions $permissions): void {
        /** @TODO Implement permissions */
    }

    {{/permissions}}

    {{#menus}}
    public function menuItems(Menu $menu): void
    {
        // TODO: Implement menuItems() method.
    }

    {{/menus}}
}
