<?php

declare(strict_types=1);

namespace Services\{{ service }};

use Core\Contracts\Service as ServiceContract;
use Illuminate\Support\ServiceProvider as LaravelServiceProvider;
use Services\{{ service }}\Contracts\{{ service }}Contract;

/**
 * @intent Porta de entrada/saída do service {{ service }} (ADR-015).
 *
 * @description Declara os contratos (absorvidos pelo Core) e os metadados do service.
 *              O contrato vive em `Contracts/`; o Core descobre este provider por convenção.
 */
final class ServiceProvider extends LaravelServiceProvider implements ServiceContract
{
    /**
     * @return array<class-string, class-string>
     */
    public function contracts(): array
    {
        return [
            {{ service }}Contract::class => {{ service }}Service::class,
        ];
    }

    /**
     * @return array<string, mixed>
     */
    public function config(): array
    {
        return [
            'title' => '{{ service }}',
            'description' => 'Descreva a capacidade transversal {{ service }}.',
            'component' => null,
        ];
    }
}
