<?php

namespace FleekDash\Interfaces;

/**
 * Standard contract for FleekDash modules.
 *
 * Ensures every module exposes the core lifecycle methods.
 */
interface ModuleInterface
{
    /**
     * Initialize the module.
     *
     * @return void
     */
    public function init();

    /**
     * Get the module name.
     *
     * @return string
     */
    public function getName();

    /**
     * Get the module version.
     *
     * @return string
     */
    public function getVersion();

    /**
     * Whether the module is active.
     *
     * @return bool
     */
    public function isActive();

    /**
     * Activate the module.
     *
     * @return void
     */
    public function activate();

    /**
     * Deactivate the module.
     *
     * @return void
     */
    public function deactivate();

    /**
     * Get declared module dependencies.
     *
     * @return array
     */
    public function getDependencies();
}
