<?php

namespace domain\Product\Product;

use domain\_\AbstractModule;
use domain\_\DefinitionInterface;

class ProductModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            ProductDefinition::class,
            ProductSolver::class,
            ProductBuilder::class,
            ProductRepository::class,
            ProductManager::class
        ];
    }

    public function getDefinition(): DefinitionInterface
    {
        return ProductDefinition::getInstance();
    }

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

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

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

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