<?php

namespace common\logic\Ticket\Ticket\Module;

use common\logic\AbstractModule;
use common\logic\Ticket\Ticket\Repository\TicketRepository;
use common\logic\Ticket\Ticket\Service\TicketBuilder;
use common\logic\Ticket\Ticket\Service\TicketDefinition;
use common\logic\Ticket\Ticket\Service\TicketSolver;

/**
 * @mixin TicketDefinition
 * @mixin TicketSolver
 * @mixin TicketRepository
 * @mixin TicketBuilder
 */
class TicketModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            TicketDefinition::class,
            TicketSolver::class,
            TicketRepository::class,
            TicketBuilder::class,
        ];
    }

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

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

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

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