<?php
/**
 * Contract every third party integration implements.
 *
 * @package MenuVerse
 */

namespace WPXero\MenuVerse\Compat;

defined( 'ABSPATH' ) || exit;

/**
 * An integration describes one other plugin MenuVerse can cooperate with.
 *
 * Everything needed to *describe* an integration is static, so the registry can
 * report what is active without constructing anything — the same discipline the
 * module registry follows. Only an integration that actually has hooks to
 * register is ever instantiated.
 */
interface Integration {

	/**
	 * Returns the integration identifier used in settings and `ui.requires`.
	 *
	 * @return string
	 */
	public static function id();

	/**
	 * Returns the translated name of the plugin being integrated with.
	 *
	 * @return string
	 */
	public static function label();

	/**
	 * Tells whether the other plugin is present and usable on this site.
	 *
	 * @return bool
	 */
	public static function is_active();
}
