<?php

namespace common\logic\Distribution\ProductDistribution\Module;

use common\logic\AbstractModule;
use common\logic\Distribution\ProductDistribution\Repository\ProductDistributionRepository;
use common\logic\Distribution\ProductDistribution\Service\ProductDistributionBuilder;
use common\logic\Distribution\ProductDistribution\Service\ProductDistributionDefinition;

/**
 * @mixin ProductDistributionDefinition
 * @mixin ProductDistributionRepository
 * @mixin ProductDistributionBuilder
 */
class ProductDistributionModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            ProductDistributionDefinition::class,
            ProductDistributionRepository::class,
            ProductDistributionBuilder::class,
        ];
    }

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

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

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