<?php

declare(strict_types=1);

namespace VK;

use VK\Loggers\Jasmo;
use VK\Traits\Singleton;
use VK\Traits\Registry;

/**
 * Ядро фреймворка для работы с VK API
 * 
 * @package VK
 * @author Arsen Mirzaev
 */
class Core
{
    use Singleton, Registry {
        Singleton::__construct insteadof Registry;
    }
    
    /**
     * Cчётчик роботов
     */
    public static int $robots_amount = 0;

    /**
     * Создание экземпляра сборщика
     * 
     * @return Builder
     */
    public function build(...$params): Builder
    {
        return new Builder($params);
    }

    /**
     * Установка журналирования
     * 
     * @todo Добавить установку иного журналиста по спецификации PSR-3
     * @return Core
     */
    public function log($file = null): Core
    {
        Jasmo::init()::post($file)::postErrorHandler()::postShutdownHandler();

        return $this;
    }
}