<?php

namespace Lc\CaracoleBundle\Container\Product;

use Lc\CaracoleBundle\Factory\Product\ProductFactory;
use Lc\CaracoleBundle\Repository\Product\ProductRepositoryQuery;
use Lc\CaracoleBundle\Repository\Product\ProductStore;
use Lc\CaracoleBundle\Solver\Product\ProductSolver;

class ProductContainer
{
    protected ProductFactory $factory;
    protected ProductSolver $solver;
    protected ProductRepositoryQuery $repositoryQuery;
    protected ProductStore $store;

    public function __construct(
            ProductFactory $factory,
            ProductSolver $solver,
            ProductRepositoryQuery $repositoryQuery,
            ProductStore $store
    ) {
        $this->factory = $factory;
        $this->solver = $solver;
        $this->repositoryQuery = $repositoryQuery;
        $this->store = $store;
    }

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

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

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

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

}