<?php

namespace common\logic\Product\ProductPrice\Module;

use common\logic\AbstractModule;
use common\logic\Product\ProductPrice\Repository\ProductPriceRepository;
use common\logic\Product\ProductPrice\Service\ProductPriceBuilder;
use common\logic\Product\ProductPrice\Service\ProductPriceDefinition;
use common\logic\Product\ProductPrice\Service\ProductPriceSolver;

/**
 * @mixin ProductPriceDefinition
 * @mixin ProductPriceRepository
 * @mixin ProductPriceBuilder
 */
class ProductPriceModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            ProductPriceDefinition::class,
            ProductPriceSolver::class,
            ProductPriceBuilder::class,
            ProductPriceRepository::class
        ];
    }

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

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

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

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