<?php

declare(strict_types=1);

namespace SiteFort\Includes\Interfaces;

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

/**
 * Interface for plugin modules.
 *
 * Ensures that all modules implement a standard set of methods for initialization
 * and hook registration.
 *
 * @since      1.0.0
 * @package    SiteFort
 * @subpackage SiteFort/Includes/Interfaces
 */
interface Module {

	/**
	 * Constructor.
	 *
	 * @param string $plugin_name The name of the plugin.
	 * @param string $version The version of this plugin.
	 */
	public function __construct( string $plugin_name, string $version );

	/**
	 * Initialize the module and register hooks.
	 *
	 * @param \SiteFort\Includes\Module_Loader $loader The instance of the module loader.
	 */
	public function initialize( \SiteFort\Includes\Module_Loader $loader );
}
