<?php

namespace common\logic\Document\Document\Module;

use common\logic\AbstractModule;
use common\logic\Document\Document\Repository\DocumentRepository;
use common\logic\Document\Document\Service\DocumentBuilder;
use common\logic\Document\Document\Service\DocumentDefinition;
use common\logic\Document\Document\Service\DocumentSolver;
use common\logic\Document\Document\Service\DocumentManager;

/**
 * @mixin DocumentDefinition
 * @mixin DocumentSolver
 * @mixin DocumentBuilder
 * @mixin DocumentManager
 */
class DocumentModule extends AbstractModule
{
    public function getServices(): array
    {
        return [
            DocumentDefinition::class,
            DocumentSolver::class,
            DocumentRepository::class,
            DocumentBuilder::class,
            DocumentManager::class,
        ];
    }

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

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

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

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

    public function getManager()
    {
        return DocumentManager::getInstance();
    }
}