<?php

namespace common\logic\Product\ProductCategory\Module;

use common\logic\AbstractModule;
use common\logic\DefinitionInterface;
use common\logic\Product\ProductCategory\Repository\ProductCategoryRepository;
use common\logic\Product\ProductCategory\Service\ProductCategoryBuilder;
use common\logic\Product\ProductCategory\Service\ProductCategoryDefinition;

/**
 * @mixin ProductCategoryDefinition
 * @mixin ProductCategoryRepository
 * @mixin ProductCategoryBuilder
 */
class ProductCategoryModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            ProductCategoryDefinition::class,
            ProductCategoryRepository::class,
            ProductCategoryBuilder::class,
        ];
    }

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

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

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