<?php

namespace domain\Product\ProductPrice\Module;

use domain\Product\ProductPrice\Repository\ProductPriceRepository;
use domain\Product\ProductPrice\Service\ProductPriceBuilder;
use domain\Product\ProductPrice\Service\ProductPriceDefinition;
use domain\Product\ProductPrice\Service\ProductPriceSolver;
use domain\_\AbstractModule;

/**
 * @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();
    }
}