<?php

namespace GravityKit\GravityExport\ServiceProvider;

use GFExcel\Routing\Router;
use GFExcel\ServiceProvider\AbstractServiceProvider;
use GFExcel\Vendor\League\Container\Container;
use GravityKit\GravityExport\Routing\GravityExportRouter;

/**
 * Service provider for Gravity Export.
 *
 * @since 1.5.0
 */
final class GravityExportProvider extends AbstractServiceProvider
{
    /**
     * @inheritDoc
     * @since 1.5.0
     */
    protected $provides = [
        GravityExportRouter::class,
    ];

    /**
     * @inheritDoc
     * @since 1.5.0
     */
    public function register(): void
    {
    }

    /**
     * @inheritDoc
     * @since 1.5.0
     */
    public function boot(): void
    {
        $container = $this->getContainer();
        if ( ! $container instanceof Container ) {
            return;
        }

        if ( $container->has( Router::class ) ) {
            // Replace the router.
            $container->extend( Router::class )->setConcrete( GravityExportRouter::class );
        }
    }
}
