<?php
/**
 * Service Provider Interface
 *
 * Defines the contract for service providers that register and boot services.
 *
 * @package Sequensy
 * @since 2.0.0
 */

declare(strict_types=1);

namespace Sequensy\Providers;

use Sequensy\Container;

// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
	die;
}

/**
 * Interface ServiceProvider
 *
 * Service providers are responsible for registering services in the container
 * and hooking into WordPress during the boot phase.
 */
interface ServiceProvider {

	/**
	 * Register services in the container.
	 *
	 * This method is called during container setup and should only register
	 * service definitions. No actual service instantiation should happen here.
	 *
	 * @param Container $container Service container instance.
	 * @return void
	 */
	public function register( Container $container ): void;

	/**
	 * Boot the service provider.
	 *
	 * This method is called after all providers have registered their services.
	 * Use this to hook into WordPress actions/filters and perform initialization.
	 *
	 * @param Container $container Service container instance.
	 * @return void
	 */
	public function boot( Container $container ): void;
}
