<?php

namespace App\Modules;

use App\Modules\Core\ModulePackage;

interface ModuleContract
{
    /**
     * Check if is module enabled
     */
    public function isEnabled(): bool;

    /**
     * Disable module
     */
    public function disable(): void;

    /**
     * Enable module
     */
    public function enable(): void;

    /**
     * Check if module has a filament resource
     */
    public function hasFilamentResource(): bool;

    /**
     * Get module composer requirements
     *
     * @return array<int, ModulePackage>
     */
    public function getComposerRequirements(): array;

    /**
     * Get module composer suggestions
     *
     * @return array<int, ModulePackage>
     */
    public function getComposerSuggestions(): array;
}
