// Copyright (c) 2009-2026 SAP SE, All Rights Reserved

/**
 * @file This is an empty wrapper for the SearchProvider module implementation to document the required interface
 */
sap.ui.define([
    "sap/ushell/modules/BaseProvider"
], (
    BaseProvider
) => {
    "use strict";

    /**
     * @alias sap.ushell.modules.Search.SearchProvider
     * @class
     * @description The required interface for a Search module.
     *
     * @abstract
     *
     * @since 1.142.0
     * @private
     *
     * @ui5-restricted HAN-AS-INA-UI
     */
    class SearchProvider extends BaseProvider {
        /**
         * Loads the search component and initializes the search functionality.
         * @param {sap.ushell.modules.Search.SearchAPI} oSearchAPI The search API object.
         *
         * @since 1.142.0
         * @private
         * @ui5-restricted HAN-AS-INA-UI
         */
        constructor (oSearchAPI) {
            super(oSearchAPI);
        }

        /**
         * Cleans up the component instance.
         * @returns {Promise} Resolves once destroy is done.
         *
         * @since 1.142.0
         * @private
         * @ui5-restricted HAN-AS-INA-UI
         */
        async exit () {
            // to be overridden by subclasses
        }
    }
    return SearchProvider;
}, false);
