<?php

declare(strict_types=1);

namespace Xentral\Modules\SystemMailClient;

use Xentral\Core\DependencyInjection\ServiceContainer;

final class Bootstrap
{
    /**
     * @return array
     */
    public static function registerServices(): array
    {
        return [
            'MailClientConfigProvider' => 'onInitMailClientConfigProvider',
            'MailClientProvider'       => 'onInitMailClientProvider',
        ];
    }

    /**
     * @param ServiceContainer $container
     *
     * @return MailClientConfigProvider
     */
    public static function onInitMailClientConfigProvider(ServiceContainer $container): MailClientConfigProvider
    {
        return new MailClientConfigProvider(
            $container->get('EmailAccountGateway'),
            $container->get('GoogleAccountGateway'),
            $container->get('GoogleApiClientFactory')
        );
    }

    /**
     * @param ServiceContainer $container
     *
     * @return MailClientProvider
     */
    public static function onInitMailClientProvider(ServiceContainer $container): MailClientProvider
    {
        return new MailClientProvider(
            $container->get('MailClientFactory'),
            $container->get('MailClientConfigProvider'),
            $container->get('EmailAccountGateway')
        );
    }
}