<?php

declare(strict_types=1);

namespace CloudXM\SDK\Contracts;

/**
 * Plugin interface for CloudXM plugins
 *
 * Defines the contract for plugin bootstrap classes used across
 * all CloudXM plugins. Provides lifecycle management and service
 * registration methods.
 */
interface PluginInterface
{
    /**
     * Boot the plugin - call from main file on plugins_loaded
     */
    public function boot(): void;

    /**
     * Get the service container
     */
    public function container(): ContainerInterface;

    /**
     * Child plugin supplies list of provider class-names
     */
    public function getProviders(): array;

    /**
     * Check plugin requirements before booting
     */
    public function checkRequirements(): bool;

    /**
     * Get minimum PHP version required
     */
    public function getMinPhpVersion(): string;
}