<?php
/**
 * Module interface.
 *
 * @package MonitorCat\Module
 */

declare(strict_types=1);

namespace MonitorCat\Module;

defined( 'ABSPATH' ) || exit;

/**
 * Contract for all plugin modules.
 */
interface ModuleInterface {

	/**
	 * Get the unique module slug.
	 *
	 * @return string Module slug (e.g. 'seo', 'speed', 'diagnostics').
	 */
	public function slug(): string;

	/**
	 * Get the human-readable module name.
	 *
	 * @return string Module name.
	 */
	public function name(): string;

	/**
	 * Get the FontAwesome icon class.
	 *
	 * @return string Icon class (e.g. 'fa-magnifying-glass-chart').
	 */
	public function icon(): string;

	/**
	 * Get a short description of the module.
	 *
	 * @return string Module description.
	 */
	public function description(): string;

	/**
	 * Whether this module is active and functional.
	 *
	 * @return bool True if active, false if coming-soon or disabled.
	 */
	public function is_active(): bool;

	/**
	 * Boot the module and register hooks.
	 */
	public function boot(): void;

	/**
	 * Register REST API endpoints.
	 */
	public function register_routes(): void;

	/**
	 * Get summary data for the dashboard card.
	 *
	 * @return array<string, mixed> Summary data.
	 */
	public function get_dashboard_summary(): array;
}
