<?php

namespace common\logic\User\UserProducer\Module;

use common\logic\AbstractModule;
use common\logic\User\UserProducer\Repository\UserProducerRepository;
use common\logic\User\UserProducer\Service\UserProducerBuilder;
use common\logic\User\UserProducer\Service\UserProducerDefinition;
use common\logic\User\UserProducer\Service\UserProducerSolver;

/**
 * @mixin UserProducerDefinition
 * @mixin UserProducerSolver
 * @mixin UserProducerRepository
 * @mixin UserProducerBuilder
 */
class UserProducerModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            UserProducerDefinition::class,
            UserProducerSolver::class,
            UserProducerRepository::class,
            UserProducerBuilder::class,
        ];
    }

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

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

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

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