<?php

namespace Lc\SovBundle\Container\User;

use Lc\SovBundle\Builder\User\UserBuilder;
use Lc\SovBundle\Factory\User\UserFactory;
use Lc\SovBundle\Repository\User\UserRepositoryQuery;
use Lc\SovBundle\Repository\User\UserStore;
use Lc\SovBundle\Solver\User\UserSolver;

class UserContainer
{
    protected UserFactory $factory;
    protected UserBuilder $builder;
    protected UserRepositoryQuery $repositoryQuery;
    protected UserStore $store;
    protected UserSolver $solver;

    public function __construct(
            UserFactory $factory,
            UserBuilder $builder,
            UserRepositoryQuery $repositoryQuery,
            UserStore $store,
            UserSolver $solver
    ) {
        $this->factory = $factory;
        $this->builder = $builder;
        $this->repositoryQuery = $repositoryQuery;
        $this->store = $store;
        $this->solver = $solver;
    }

    public function getFactory(): UserFactory
    {
        return $this->factory;
    }

    public function getBuilder(): UserBuilder
    {
        return $this->builder;
    }

    public function getRepositoryQuery(): UserRepositoryQuery
    {
        return $this->repositoryQuery;
    }

    public function getStore(): UserStore
    {
        return $this->store;
    }

    public function getSolver(): UserSolver
    {
        return $this->solver;
    }
}
