<?php

namespace common\logic\PointSale\PointSale\Module;

use common\logic\AbstractModule;
use common\logic\PointSale\PointSale\Repository\PointSaleRepository;
use common\logic\PointSale\PointSale\Service\PointSaleBuilder;
use common\logic\PointSale\PointSale\Service\PointSaleDefinition;
use common\logic\PointSale\PointSale\Service\PointSaleSolver;

/**
 * @mixin PointSaleDefinition
 * @mixin PointSaleSolver
 * @mixin PointSaleRepository
 * @mixin PointSaleBuilder
 */
class PointSaleModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            PointSaleDefinition::class,
            PointSaleSolver::class,
            PointSaleRepository::class,
            PointSaleBuilder::class,
        ];
    }

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

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

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

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