<?php

namespace domain\Producer\Producer;

use domain\_\AbstractModule;

class ProducerModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            ProducerDefinition::class,
            ProducerSolver::class,
            ProducerRepository::class,
            ProducerBuilder::class,
            ProducerNotifier::class,
            ProducerResolver::class,
            ProducerManager::class,
            ProducerPageSizer::class,
            DolibarrProducerUtils::class,
            ProducerSeoGenerator::class,
        ];
    }

    public function getDefinition(): ProducerDefinition
    {
        return ProducerDefinition::getInstance();
    }

    public function getSolver(): ProducerSolver
    {
        return ProducerSolver::getInstance();
    }

    public function getRepository(): ProducerRepository
    {
        return ProducerRepository::getInstance();
    }

    public function getBuilder(): ProducerBuilder
    {
        return ProducerBuilder::getInstance();
    }

    public function getNotifier(): ProducerNotifier
    {
        return ProducerNotifier::getInstance();
    }

    public function getResolver(): ProducerResolver
    {
        return ProducerResolver::getInstance();
    }

    public function getUtils(): ProducerManager
    {
        return ProducerManager::getInstance();
    }

    public function getManager(): ProducerManager
    {
        return ProducerManager::getInstance();
    }

    public function getProducerPageSizer(): ProducerPageSizer
    {
        return ProducerPageSizer::getInstance();
    }

    public function getDolibarrUtils(): DolibarrProducerUtils
    {
        return DolibarrProducerUtils::getInstance();
    }

    public function getSeoGenerator(): ProducerSeoGenerator
    {
        return ProducerSeoGenerator::getInstance();
    }
}