<?php

namespace SugarCalendarBookings\Integrations;

/**
 * Integration capability interface.
 *
 * Base contract for all integration capabilities. Each capability type
 * (meetings, calendar sync, automation) extends this interface.
 * Integrations register their capabilities with the IntegrationCapabilityRegistry.
 *
 * @since 1.4.0
 */
interface IntegrationCapabilityInterface {

	/**
	 * Get the provider slug identifier.
	 *
	 * Used to match capabilities to appointments and settings.
	 * Must be unique within each capability type.
	 *
	 * @since 1.4.0
	 *
	 * @return string
	 */
	public function get_provider_slug(): string;

	/**
	 * Get the provider display name.
	 *
	 * @since 1.4.0
	 *
	 * @return string
	 */
	public function get_display_name(): string;

	/**
	 * Check if the integration is available for use.
	 *
	 * Should return true only when the integration is both enabled
	 * and has an active connection.
	 *
	 * @since 1.4.0
	 *
	 * @return bool
	 */
	public function is_available(): bool;
}
