<?php

namespace common\logic\Distribution\PointSaleDistribution\Module;

use common\logic\AbstractModule;
use common\logic\Distribution\PointSaleDistribution\Repository\PointSaleDistributionRepository;
use common\logic\Distribution\PointSaleDistribution\Service\PointSaleDistributionBuilder;
use common\logic\Distribution\PointSaleDistribution\Service\PointSaleDistributionDefinition;

/**
 * @mixin PointSaleDistributionDefinition
 * @mixin PointSaleDistributionRepository
 * @mixin PointSaleDistributionBuilder
 */
class PointSaleDistributionModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            PointSaleDistributionDefinition::class,
            PointSaleDistributionRepository::class,
            PointSaleDistributionBuilder::class,
        ];
    }

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

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

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