<?php
/**
 * Module contract for Noesia Smart Waiter.
 *
 * @package Noesia_Smart_Waiter
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

if ( ! interface_exists( 'Noesia_SWA_Module_Interface' ) ) {
    /**
     * Common contract for all free and pro modules.
     */
    interface Noesia_SWA_Module_Interface {

        /**
         * Unique module identifier.
         *
         * Example: requests, reminders, analytics.
         *
         * @return string
         */
        public function get_id();

        /**
         * Human-readable module label.
         *
         * @return string
         */
        public function get_label();

        /**
         * Module tier.
         *
         * Allowed values: free, pro.
         *
         * @return string
         */
        public function get_tier();

        /**
         * Whether the module should be loaded.
         *
         * @return bool
         */
        public function is_enabled();

        /**
         * Register all module hooks.
         *
         * This method should attach actions, filters, shortcodes,
         * AJAX endpoints, asset hooks, or any other runtime callbacks.
         *
         * @return void
         */
        public function register_hooks();
    }
}
