// For Library Version: 1.108.37

declare module "sap/fe/macros/library" {}

declare module "sap/fe/macros/MacroAPI" {
  import { default as Control, $ControlSettings } from "sap/ui/core/Control";

  import { PropertyBindingInfo } from "sap/ui/base/ManagedObject";

  /**
   * Base API control for building blocks.
   */
  export default class MacroAPI extends Control {
    constructor();
  }

  export interface $MacroAPISettings extends $ControlSettings {
    /**
     * Defines the path of the context used in the current page or block.
     * This setting is defined by the framework.
     */
    contextPath?: string | PropertyBindingInfo;

    /**
     * Defines the relative path of the property in the metamodel, based on the current contextPath.
     */
    metaPath?: string | PropertyBindingInfo;
  }
}

declare module "sap/fe/macros/chart/ChartAPI" {
  import {
    default as MacroAPI,
    $MacroAPISettings,
  } from "sap/fe/macros/MacroAPI";

  import { PropertyBindingInfo } from "sap/ui/base/ManagedObject";

  /**
   * Building block used to create a chart based on the metadata provided by OData V4.
   *
   *
   * Usually, a contextPath and metaPath is expected.
   * Usage example:
   *
   * ```javascript
   *
   * <macro:Chart id="Mychart" contextPath="/RootEntity" metaPath="@com.sap.vocabularies.UI.v1.Chart" />
   * ```
   */
  export default class Chart extends MacroAPI {
    constructor();
  }

  export interface $ChartSettings extends $MacroAPISettings {
    /**
     * Metadata path to the entitySet or navigationProperty
     */
    contextPath?: string | PropertyBindingInfo;

    /**
     * Id of the FilterBar building block associated with the chart.
     */
    filterBar?: string | PropertyBindingInfo;

    /**
     * ID of the chart
     */
    id?: string | PropertyBindingInfo;

    /**
     * Metadata path to the presentation (UI.Chart w or w/o qualifier)
     */
    metaPath?: string | PropertyBindingInfo;

    /**
     * Parameter which sets the personalization of the MDC chart
     */
    personalization?: boolean | string | PropertyBindingInfo | `{${string}}`;

    /**
     * Specifies the selection mode
     */
    selectionMode?: string | PropertyBindingInfo;
  }
}

declare module "sap/fe/macros/field/FieldAPI" {
  import {
    default as MacroAPI,
    $MacroAPISettings,
  } from "sap/fe/macros/MacroAPI";

  import { MessageType } from "sap/ui/core/library";

  import { PropertyBindingInfo } from "sap/ui/base/ManagedObject";

  /**
   * Building block for creating a field based on the metadata provided by OData V4.
   *
   *
   * Usually, a DataField or DataPoint annotation is expected, but the field can also be used to display a
   * property from the entity type.
   * Usage example:
   *
   * ```javascript
   *
   * <macro:Field id="MyField" metaPath="MyProperty" />
   * ```
   */
  export default class Field extends MacroAPI {
    constructor();

    /**
     * Adds a message to the field.
     *
     * @returns The id of the message
     */
    addMessage(
      /**
       * undefined
       */
      parameters: {
        /**
         * Message description
         */
        description?: string;
        /**
         * Message text
         */
        message?: string;
        /**
         * True if the message is persistent
         */
        persistent?: boolean;
        /**
         * Type of the message
         */
        type?: MessageType | keyof typeof MessageType;
      }
    ): string;
    /**
     * Retrieves the current value of the field.
     *
     * @returns The current value of the field
     */
    getValue(): string | boolean;
    /**
     * Removes a message from the field.
     */
    removeMessage(
      /**
       * The id of the message
       */
      id: string
    ): void;
  }
  /**
   * Additional format options for the field.
   */
  export type FieldFormatOptions = {
    /**
     *  Defines how the field value and associated text will be displayed together.
     *
     *  Allowed values are "Value", "Description", "ValueDescription" and "DescriptionValue"
     */
    displayMode: string;
    /**
     * Defines if and how the field measure will be displayed.
     *
     * Allowed values are "Hidden" and "ReadOnly"
     */
    measureDisplayMode: string;
    /**
     * Defines how the full text will be displayed.
     *
     * Allowed values are "InPlace" and "Popover"
     */
    textExpandBehaviorDisplay: string;
    /**
     * Maximum number of lines for multiline texts in edit mode.
     */
    textLinesEdit: number;
    /**
     * Maximum number of characters from the beginning of the text field that are shown initially.
     */
    textMaxCharactersDisplay: number;
    /**
     * Maximum number of lines that multiline texts in edit mode can grow to.
     */
    textMaxLines: number;
  };

  export interface $FieldSettings extends $MacroAPISettings {
    /**
     * Defines the path of the context used in the current page or block.
     * This setting is defined by the framework.
     */
    contextPath?: string | PropertyBindingInfo;

    /**
     * A set of options that can be configured.
     */
    formatOptions?: FieldFormatOptions | PropertyBindingInfo | `{${string}}`;

    /**
     * The identifier of the Field control.
     */
    id?: string | PropertyBindingInfo;

    /**
     * Defines the relative path of the property in the metamodel, based on the current contextPath.
     */
    metaPath?: string | PropertyBindingInfo;

    /**
     * An expression that allows you to control the read-only state of the field.
     * If you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the
     * current state.
     */
    readOnly?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Option to add semantic objects to a field.
     * Valid options are either a single semantic object, a stringified array of semantic objects
     * or a single binding expression returning either a single semantic object or an array of semantic objects
     */
    semanticObject?: string | PropertyBindingInfo;
  }
}

declare module "sap/fe/macros/filterBar/FilterBarAPI" {
  import {
    default as MacroAPI,
    $MacroAPISettings,
  } from "sap/fe/macros/MacroAPI";

  import { PropertyBindingInfo } from "sap/ui/base/ManagedObject";

  /**
   * Building block for creating a FilterBar based on the metadata provided by OData V4.
   *
   *
   * Usually, a SelectionFields annotation is expected.
   * Usage example:
   *
   * ```javascript
   *
   * <macro:FilterBar id="MyFilterBar" metaPath="@com.sap.vocabularies.UI.v1.SelectionFields" />
   * ```
   */
  export default class FilterBar extends MacroAPI {
    constructor();

    /**
     * Get the Active Filters Text Summary for the filter bar.
     *
     * @returns Active filters summary as text
     */
    getActiveFiltersText(): any;
    /**
     * Provides all the filters that are currently active
     * along with the search expression.
     *
     * @returns An array of active filters and the search expression.
     */
    getFilters(): object;
    /**
     * 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,
      /**
       * undefined
       */
      sOperator: undefined | string,
      /**
       * The values to be applied
       */
      vValues?: string | number | boolean | string[] | number[] | boolean[]
    ): Promise<any>;
  }
  /**
   * Definition of a custom filter to be used inside the FilterBar.
   * The template for the FilterField has to be provided as the default aggregation
   */
  export type FilterField = {
    /**
     * Reference to the key of another filter already displayed in the table to properly place this one
     */
    anchor: string;
    /**
     * The property name of the FilterField
     */
    key: string;
    /**
     * The text that will be displayed for this FilterField
     */
    label: string;
    /**
     * Defines where this filter should be placed relative to the defined anchor
     * Allowed values are `Before` and `After`
     */
    placement: string;
    /**
     * If set, possible errors that occur during the search will be displayed in a message box.
     */
    showMessages: boolean;
  };

  export interface $FilterBarSettings extends $MacroAPISettings {
    /**
     * Defines the path of the context used in the current page or block.
     * This setting is defined by the framework.
     */
    contextPath?: string | PropertyBindingInfo;

    /**
     * The identifier of the FilterBar control.
     */
    id?: string | PropertyBindingInfo;

    /**
     * If true, the search is triggered automatically when a filter value is changed.
     */
    liveMode?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Defines the relative path of the property in the metamodel, based on the current contextPath.
     */
    metaPath?: string | PropertyBindingInfo;

    /**
     * Parameter which sets the visibility of the FilterBar building block
     */
    visible?: boolean | PropertyBindingInfo | `{${string}}`;
  }
}

declare module "sap/fe/macros/form/FormAPI" {
  import {
    default as MacroAPI,
    $MacroAPISettings,
  } from "sap/fe/macros/MacroAPI";

  import { PropertyBindingInfo } from "sap/ui/base/ManagedObject";

  /**
   * Building block for creating a Form based on the metadata provided by OData V4.
   *
   *
   * It is designed to work based on a FieldGroup annotation but can also work if you provide a ReferenceFacet
   * or a CollectionFacet
   * Usage example:
   *
   * ```javascript
   *
   * <macro:Form id="MyForm" metaPath="@com.sap.vocabularies.UI.v1.FieldGroup#GeneralInformation" />
   * ```
   */
  export default class Form extends MacroAPI {
    constructor();
  }

  export interface $FormSettings extends $MacroAPISettings {
    /**
     * Defines the path of the context used in the current page or block.
     * This setting is defined by the framework.
     */
    contextPath?: string | PropertyBindingInfo;

    /**
     * The identifier of the form control.
     */
    id?: string | PropertyBindingInfo;

    /**
     * Defines the relative path of the property in the metamodel, based on the current contextPath.
     */
    metaPath?: string | PropertyBindingInfo;

    /**
     * The title of the form control.
     */
    title?: string | PropertyBindingInfo;
  }
}

declare module "sap/fe/macros/table/TableAPI" {
  import {
    default as MacroAPI,
    $MacroAPISettings,
  } from "sap/fe/macros/MacroAPI";

  import { MessageType } from "sap/ui/core/library";

  import Context from "sap/ui/model/odata/v4/Context";

  import { PropertyBindingInfo } from "sap/ui/base/ManagedObject";

  /**
   * Building block used to create a table based on the metadata provided by OData V4.
   *
   *
   * Usually, a LineItem or PresentationVariant annotation is expected, but the Table building block can also
   * be used to display an EntitySet.
   * Usage example:
   *
   * ```javascript
   *
   * <macro:Table id="MyTable" metaPath="@com.sap.vocabularies.UI.v1.LineItem" />
   * ```
   */
  export default class Table extends MacroAPI {
    constructor();

    /**
     * Adds a message to the table.
     * The message applies to the whole table and not to an individual table row.
     *
     *
     * @returns The ID of the message
     */
    addMessage(
      /**
       * undefined
       */
      parameters: {
        /**
         * Message description
         */
        description?: string;
        /**
         * Message text
         */
        message?: string;
        /**
         * True if the message is persistent
         */
        persistent?: boolean;
        /**
         * Message type
         */
        type?: MessageType | keyof typeof MessageType;
      }
    ): string;
    /**
     * Gets contexts from the table that have been selected by the user.
     *
     * @returns Contexts of the rows selected by the user
     */
    getSelectedContexts(): Context[];
    /**
     * Removes a message from the table.
     */
    removeMessage(
      /**
       * The id of the message
       */
      id: string
    ): void;
  }
  /**
   * Definition of a custom action to be used inside the table toolbar
   */
  export type Action = {
    /**
     * Reference to the key of another action already displayed in the toolbar to properly place this one
     */
    anchor: string;
    /**
     * Enables or disables the action
     */
    enabled: boolean;
    /**
     * Unique identifier of the action
     */
    key: string;
    /**
     * Defines where this action should be placed relative to the defined anchor
     * Allowed values are `Before` and `After`
     */
    placement: string;
    /**
     * Event handler to be called when the user chooses the action
     */
    press: string;
    /**
     * Defines if the action requires a selection.
     */
    requiresSelection: boolean;
    /**
     * The text that will be displayed for this action
     */
    text: string;
  };

  /**
   * Definition of a custom column to be used inside the table.
   * The template for the column has to be provided as the default aggregation
   */
  export type Column = {
    /**
     * Reference to the key of another column already displayed in the table to properly place this one
     */
    anchor: string;
    /**
     * The text that will be displayed for this column header
     */
    header: string;
    /**
     * Defines the column importance
     * You can define which columns should be automatically moved to the pop-in area based on their importance
     */
    importance: string;
    /**
     * Unique identifier of the column
     */
    key: string;
    /**
     * Defines where this column should be placed relative to the defined anchor
     * Allowed values are `Before` and `After`
     */
    placement: string;
  };

  export interface $TableSettings extends $MacroAPISettings {
    /**
     * An expression that allows you to control the 'busy' state of the table.
     */
    busy?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Defines the path of the context used in the current page or block.
     * This setting is defined by the framework.
     */
    contextPath?: string | PropertyBindingInfo;

    /**
     * Specifies the header text that is shown in the table.
     */
    enableAutoColumnWidth?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Controls if the export functionality of the table is enabled or not.
     */
    enableExport?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Controls whether the table can be opened in fullscreen mode or not.
     */
    enableFullScreen?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Controls if the paste functionality of the table is enabled or not.
     */
    enablePaste?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * ID of the FilterBar building block associated with the table.
     */
    filterBar?: string | PropertyBindingInfo;

    /**
     * Specifies the header text that is shown in the table.
     */
    header?: string | PropertyBindingInfo;

    /**
     * Controls if the header text should be shown or not.
     */
    headerVisible?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * The identifier of the table control.
     */
    id?: string | PropertyBindingInfo;

    /**
     * Defines whether to display the search action.
     */
    isSearchable?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Groups menu actions by key.
     */
    menu?: string | PropertyBindingInfo;

    /**
     * Defines the relative path of the property in the metamodel, based on the current contextPath.
     */
    metaPath?: string | PropertyBindingInfo;

    /**
     * Controls which options should be enabled for the table personalization dialog.
     * If it is set to `true`, all possible options for this kind of table are enabled.
     *
     * If it is set to `false`, personalization is disabled.
     *
     *
     *
     * You can also provide a more granular control for the personalization by providing a comma-separated list
     * with the options you want to be available.
     *
     * Available options are:
     *
     *  - Sort
     *
     *  - Column
     *
     *  - Filter
     */
    personalization?: boolean | string | PropertyBindingInfo | `{${string}}`;

    /**
     * An expression that allows you to control the 'read-only' state of the table.
     * If you do not set any expression, SAP Fiori elements hooks into the standard lifecycle to determine the
     * current state.
     */
    readOnly?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Defines the selection mode to be used by the table.
     * Allowed values are `None`, `Single`, `Multi` or `Auto`
     */
    selectionMode?: string | PropertyBindingInfo;

    /**
     * Defines the type of table that will be used by the building block to render the data.
     * Allowed values are `GridTable` and `ResponsiveTable`
     */
    type?: string | PropertyBindingInfo;

    /**
     * Controls the kind of variant management that should be enabled for the table.
     * Allowed value is `Control`.
     *
     * If set with value `Control`, a variant management control is seen within the table and the table is linked
     * to this.
     *
     * If not set with any value, control level variant management is not available for this table.
     */
    variantManagement?: string | PropertyBindingInfo;
  }
}

declare namespace sap {
  namespace fe {
    /**
     * Library containing the building blocks for SAP Fiori elements.
     */
    namespace macros {
      /**
       * @SINCE 1.90.0
       *
       * Accepts an object literal `mSettings` that defines initial property values, aggregated and associated
       * objects as well as event handlers. See {@link sap.ui.base.ManagedObject#constructor} for a general description
       * of the syntax of the settings object.
       */
      export const FormElement: undefined;

      /**
       * @SINCE 1.93.0
       *
       * Building block used specifically in an app using the flexible column layout to add the ‘expand’, ‘reduce’,
       * and ‘close’ action buttons.
       *
       * Usage example:
       * ```javascript
       *
       * <f:DynamicPageTitle id="incidentProcessFlowDynamicPageTitle">
       * 	 <f:navigationActions>
       * 	   <macros:FlexibleColumnLayoutActions />
       * 	 </f:navigationActions>
       * </f:DynamicPageTitle>
       * <macro:FlexibleColumnLayoutActions />
       * ```
       */
      class FlexibleColumnLayoutActions {
        constructor();
      }
      /**
       * @SINCE 1.93.0
       *
       * Building block used to create a MicroChart based on the metadata provided by OData V4.
       */
      class MicroChart {
        constructor();
      }
      /**
       * @SINCE 1.94.0
       *
       * Building block used to create a paginator control.
       *
       * Usage example:
       * ```javascript
       *
       * <macro:Paginator />
       * ```
       */
      class Paginator {
        constructor();
      }
      /**
       * @SINCE 1.93.0
       *
       * Building block used to create the ‘Share’ functionality.
       *  Please note that the 'Share in SAP Jam' option is only available on platforms that are integrated with
       * SAP Jam.
       *  If you are consuming this building block in an environment where the SAP Fiori launchpad is not available,
       * then the 'Save as Tile' option is not visible.
       *
       * Usage example:
       * ```javascript
       *
       * <macro:Share
       * 	id="someID"
       * 	visible="true"
       * />
       * ```
       */
      class Share {
        constructor();
      }
    }
  }

  interface IUI5DefineDependencyNames {
    "sap/fe/macros/chart/ChartAPI": undefined;

    "sap/fe/macros/fcl/FlexibleColumnLayoutActions.metadata": undefined;

    "sap/fe/macros/field/FieldAPI": undefined;

    "sap/fe/macros/filterBar/FilterBarAPI": undefined;

    "sap/fe/macros/form/FormAPI": undefined;

    "sap/fe/macros/library": undefined;

    "sap/fe/macros/MacroAPI": undefined;

    "sap/fe/macros/microchart/MicroChart.metadata": undefined;

    "sap/fe/macros/paginator/Paginator.metadata": undefined;

    "sap/fe/macros/share/Share.block": undefined;

    "sap/fe/macros/table/TableAPI": undefined;
  }
}
