// For Library Version: 1.136.16

declare namespace sap {
  namespace fe {
    /**
     * Library providing the official templates supported by SAP Fiori elements.
     */
    namespace templates {
      namespace ListReport {
        /**
         * Extension API for list reports in SAP Fiori elements for OData V4.
         * To correctly integrate your app extension coding with SAP Fiori elements, use only the extensionAPI of
         * SAP Fiori elements. Don't access or manipulate controls, properties, models, or other internal objects
         * created by the SAP Fiori elements framework.
         *
         *
         * @since 1.79.0
         */
        class ExtensionAPI extends sap.fe.core.ExtensionAPI {
          /**
           * This method converts the filter conditions to filters.
           *
           *
           * @returns Object containing the converted FilterBar filters or undefined.
           */
          createFiltersFromFilterConditions(
            /**
             * Map containing the filter conditions of the FilterBar.
             */
            mFilterConditions: Record<
              string,
              /* was: sap.ui.mdc.condition.Condition.ConditionObject */ any[]
            >
          ): object | undefined;
          /**
           * Provides all the model filters from the filter bar that are currently active
           * along with the search expression.
           *
           *
           * @returns An array of active filters and the search expression or undefined.
           */
          getFilters(): /* was: sap.fe.macros.table.Utils.InternalBindingInfo */
            | any
            | undefined;
          /**
           * Gets the list entries currently selected for the displayed control.
           *
           *
           * @returns Array containing the selected contexts
           */
          getSelectedContexts(): sap.ui.model.odata.v4.Context[];
          /**
           * Refreshes the List Report.
           * This method currently only supports triggering the search (by clicking on the GO button)
           * in the List Report Filter Bar. It can be used to request the initial load or to refresh the
           * currently shown data based on the filters entered by the user.
           * Please note: The Promise is resolved once the search is triggered and not once the data is returned.
           *
           *
           * @returns Resolved once the data is refreshed or rejected if the request failed
           */
          refresh(): Promise<void>;
          /**
           * Refreshes the count of the views in the MultiMode control.
           */
          refreshTabsCount(
            /**
             * The list of the keys identifying the views defined in the manifest for which the views' count will be
             * refreshed. If not provided, all the views' count will be refreshed
             */
            keys?: string[]
          ): void;
          /**
           * Provide an option for showing a custom message in the message strip above the list report table.
           */
          setCustomMessage(
            /**
             * Custom message along with the message type to be set on the table.
             */
            message: /* was: sap.fe.templates.ListReport.LRMessageStrip.LRCustomMessage */
              | any
              | undefined,
            /**
             * The tabKey identifying the table where the custom message is displayed. If tabKey is empty, the message
             * is displayed in all tabs . If tabKey = ['1','2'], the message is displayed in tabs 1 and 2 only
             */
            tabKey?: null | string | string[],
            /**
             * A function that is called when the user closes the message bar.
             */
            onClose?: Function
          ): void;
          /**
           * Set the filter values for the given property in the filter bar.
           * The filter values can be either a single value or an array of values.
           * Each filter value must be represented as a primitive value.
           *
           *
           * @returns A promise for asynchronous handling
           */
          setFilterValues(
            /**
             * The path to the property as a condition path
             */
            sConditionPath: string,
            /**
             * The operator to be used (optional) - if not set, the default operator (EQ) will be used
             */
            sOperator: string | undefined,
            /**
             * The values to be applied
             */
            vValues?:
              | boolean
              | boolean[]
              | number
              | number[]
              | string
              | string[]
              | undefined
          ): Promise<void>;
          /**
           * Provides an option for the selection of a specific tab programamatically.
           */
          setSelectedTab(
            /**
             * Specific tab to be selected.
             */
            tabKey: string
          ): void;
          /**
           * Refreshes the content of the underlying views upon the next opening.
           * Note: The content of the selected view, if part of the provided keys, will be refreshed immediately.
           */
          setTabContentToBeRefreshedOnNextOpening(
            /**
             * The list of the keys identifying the views defined in the manifest for which the views' content will
             * be refreshed. If not provided, all the views' content will be refreshed
             */
            keys?: string[]
          ): void;
        }
        /**
         * Controller class for the list report page, used inside an SAP Fiori elements application.
         */
        class ListReportController extends sap.fe.core.PageController {
          /**
           * Get the extension API for the current page.
           *
           *
           * @returns The extension API.
           */
          getExtensionAPI(): sap.fe.templates.ListReport.ExtensionAPI;
          /**
           * Method called when the 'Clear' button on the FilterBar is pressed.
           */
          onAfterClear(): void;
          /**
           * Method called when a filter or search value has been changed in the FilterBar,
           * but has not been validated yet by the end user (with the 'Go' or 'Search' button).
           * Typically, the content of the current tab is greyed out until the filters are validated.
           * This method can be overwritten by the controller extension in case of customization.
           */
          onPendingFilters(): void;
          /**
           * Method called when the content of a custom view used in a list report needs to be refreshed.
           * This happens either when there is a change on the FilterBar and the search is triggered,
           * or when a tab with custom content is selected,
           * or when the view is forced to be refreshed through the Extension API for the list report's public method
           * setTabContentToBeRefreshedOnNextOpening.
           * This method can be overwritten by the controller extension in case of customization.
           */
          onViewNeedsRefresh(
            /**
             * Map containing the filter conditions of the FilterBar, the currentTabID
             * and the view refresh cause (tabChanged, search or forcedRefresh).
             * The map looks like this:
             *
             * ```javascript
             *
             * {
             * filterConditions: {
             * Country: [
             * {
             * operator: "EQ"
             * validated: "NotValidated"
             * values: ["Germany", ...]
             * },
             * ...
             * ]
             * ...
             * },
             * currentTabId: "fe::CustomTab::tab1",
             * refreshCause: "tabChanged" | "search" | "forcedRefresh"
             * }
             * ```
             */
            mParameters: any
          ): void;
        }
      }

      namespace ObjectPage {
        /**
         * Extension API for object pages on SAP Fiori elements for OData V4.
         * To correctly integrate your app extension coding with SAP Fiori elements, use only the extensionAPI of
         * SAP Fiori elements. Don't access or manipulate controls, properties, models, or other internal objects
         * created by the SAP Fiori elements framework.
         *
         *
         * @since 1.79.0
         */
        class ExtensionAPI extends sap.fe.core.ExtensionAPI {
          /**
           * Gets the bound context of the current object page.
           *
           *
           * @returns Context bound to the object page
           */
          getBindingContext(): null | sap.ui.model.Context | undefined;
          /**
           * Gets the list entries currently selected for the table.
           *
           *
           * @returns Array containing the selected contexts
           */
          getSelectedContexts(
            /**
             * The ID identifying the table the selected context is requested for
             */
            sTableId: string
          ): sap.ui.model.odata.v4.Context[];
          /**
           * Hides the message strip below the anchor bar.
           */
          hideMessage(): void;
          /**
           * Refreshes either the whole object page or only parts of it.
           *
           *
           * @returns Resolved once the data is refreshed or rejected if the request failed
           */
          refresh(
            /**
             * Path or array of paths referring to entities or properties to be refreshed.
             * If omitted, the whole object page is refreshed. The path "" refreshes the entity assigned to the object
             * page
             * without navigations
             */
            vPath?: string | string[]
          ): Promise<void>;
          /**
           * Defines a control to be the title owner of its section/subsection. As the title owners of standard subsections
           * are determined automatically, it is recommended to use this function for custom section/subsection.
           * The title owner can be either one of the standard building blocks (Form, Chart, Table), or reuse components,
           * or sap.m.Title.
           * The framework adapts the value of these properties to be aligned with the title that is shown in the
           * anchor bar (or icon tab bar) for the section. Moreover, the title of the subsection (and if applicable
           * also of the section) is hidden in order to prevent redundant titles, if the subsection possesses a title
           * owner.
           * Hint: If you choose to set sap.m.Title as the title owner, styling adjustments may be required in the
           * custom view. For example, if sap.m.Title is set as title owner which belongs to sap.m.OverflowToolbar
           * or to sap.m.Toolbar, then the ‘design’ property of the toolbar control is to be set to ‘Transparent’.
           */
          setAsSectionTitleOwner(
            /**
             * The single content control can be either one of the standard building blocks (Form, Chart, Table), or
             * reuse components, or sap.m.Title.
             */
            control: sap.ui.base.ManagedObject
          ): void;
          /**
           * Displays the message strip between the title and the header of the ObjectPage.
           */
          showMessages(
            /**
             * The message to be displayed
             */
            messages: sap.ui.core.message.Message[]
          ): void;
          /**
           * Displays or hides the side content of an object page.
           */
          showSideContent(
            /**
             * Key of the side content fragment as defined in the manifest.json
             */
            sSubSectionKey: string,
            /**
             * Optional Boolean flag to show or hide the side content
             */
            bShow?: boolean
          ): void;
        }
      }
    }
  }

  interface IUI5DefineDependencyNames {
    "sap/fe/templates/library": undefined;

    "sap/fe/templates/ListReport/ExtensionAPI": undefined;

    "sap/fe/templates/ListReport/ListReportController.controller": undefined;

    "sap/fe/templates/ObjectPage/ExtensionAPI": undefined;
  }
}
