// For Library Version: 1.108.27

declare module "sap/sac/df/library" {}

declare module "sap/sac/df/FlexAnalysis" {
  import { default as Control, $ControlSettings } from "sap/ui/core/Control";

  import FlexAnalysisPanel from "sap/sac/df/FlexAnalysisPanel";

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

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

  import ElementMetadata from "sap/ui/core/ElementMetadata";

  import SystemType from "sap/sac/df/types/SystemType";

  /**
   * @EXPERIMENTAL
   *
   * Enables users to view, navigate and change multidimensional data exposed via InA.
   *
   * Overview:
   *
   * The user can view the data in a Table, navigate in the data via a context menu or builder panels The
   * data source that the FlexAnalysis consumes or renders has to be provided as a property value.
   */
  export default class FlexAnalysis extends Control {
    /**
     * Constructor for a new `FlexAnalysis`.
     *
     * 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.
     */
    constructor(
      /**
       * ID for the new control, generated automatically if no ID is given
       */
      sId?: string
    );

    /**
     * Creates a new subclass of class sap.sac.df.FlexAnalysis with name `sClassName` and enriches it with the
     * information contained in `oClassInfo`.
     *
     * `oClassInfo` might contain the same kind of information as described in {@link sap.ui.core.Control.extend}.
     *
     * @returns Created class / constructor function
     */
    static extend<T extends Record<string, unknown>>(
      /**
       * Name of the class being created
       */
      sClassName: string,
      /**
       * Object literal with information about the class
       */
      oClassInfo?: sap.ClassInfo<T, FlexAnalysis>,
      /**
       * Constructor function for the metadata object; if not given, it defaults to the metadata implementation
       * used by this class
       */
      FNMetaImpl?: Function
    ): Function;
    /**
     * Returns a metadata object for class sap.sac.df.FlexAnalysis.
     *
     * @returns Metadata object describing this class
     */
    static getMetadata(): ElementMetadata;
    /**
     * Adds some customPanel to the aggregation {@link #getCustomPanels customPanels}.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    addCustomPanel(
      /**
       * The customPanel to add; if empty, nothing is inserted
       */
      oCustomPanel: FlexAnalysisPanel
    ): this;
    /**
     * Binds property {@link #getDataProvider dataProvider} to model data.
     *
     * See {@link sap.ui.base.ManagedObject#bindProperty ManagedObject.bindProperty} for a detailed description
     * of the possible properties of `oBindingInfo`
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    bindDataProvider(
      /**
       * The binding information
       */
      oBindingInfo: PropertyBindingInfo
    ): this;
    /**
     * Destroys all the customPanels in the aggregation {@link #getCustomPanels customPanels}.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    destroyCustomPanels(): this;
    /**
     * Gets current value of property {@link #getAutoUpdate autoUpdate}.
     *
     * Indicates Flexible Analysis component automatically requests the ResultSet for the shown data source
     *
     * Default value is `true`.
     *
     * @returns Value of property `autoUpdate`
     */
    getAutoUpdate(): boolean;
    /**
     * Gets current value of property {@link #getClientIdentifier clientIdentifier}.
     *
     * Client Identifier to be used for underlying InA queries
     *
     * @returns Value of property `clientIdentifier`
     */
    getClientIdentifier(): string;
    /**
     * Gets current value of property {@link #getConfigObject configObject}.
     *
     * JSON object containing the configuration (alternative to configurationURI)
     *
     * @returns Value of property `configObject`
     */
    getConfigObject(): object;
    /**
     * Gets current value of property {@link #getConfigurationURI configurationURI}.
     *
     * URI of the advanced configuration to be fetched
     *
     * @returns Value of property `configurationURI`
     */
    getConfigurationURI(): string;
    /**
     * Gets content of aggregation {@link #getCustomPanels customPanels}.
     *
     * Custom panels for the flexible analysis control
     */
    getCustomPanels(): FlexAnalysisPanel[];
    /**
     * Gets current value of property {@link #getDataProvider dataProvider}.
     *
     * Name of the Data Provider from the corresponding MultiDimModel to be used
     *
     * @returns Value of property `dataProvider`
     */
    getDataProvider(): any;
    /**
     * Gets current value of property {@link #getDataSource dataSource}.
     *
     * Data source (Query name/ View, InA model etc) to be used to get the data from
     *
     * Default value is `"$datasource"`.
     *
     * @returns Value of property `dataSource`
     */
    getDataSource(): string;
    /**
     * Gets current value of property {@link #getEnvironment environment}.
     *
     * Additional Flag to be passed to the control TODO: Document the possibilities
     *
     * Default value is `[]`.
     *
     * @returns Value of property `environment`
     */
    getEnvironment(): string[];
    /**
     * Gets current value of property {@link #getHeight height}.
     *
     * Height of the component
     *
     * Default value is `"100%"`.
     *
     * @returns Value of property `height`
     */
    getHeight(): CSSSize;
    /**
     * Gets current value of property {@link #getHideDesignPanel hideDesignPanel}.
     *
     * Sets if the Design Panel of FlexAnalysis is hidden
     *
     * Default value is `true`.
     *
     * @returns Value of property `hideDesignPanel`
     */
    getHideDesignPanel(): boolean;
    /**
     * Gets current value of property {@link #getHideFilterLine hideFilterLine}.
     *
     * Sets if the filter of FlexAnalysis is hidden
     *
     * Default value is `false`.
     *
     * @returns Value of property `hideFilterLine`
     */
    getHideFilterLine(): boolean;
    /**
     * Gets current value of property {@link #getHideMenuBar hideMenuBar}.
     *
     * Sets if the menu bar of FlexAnalysis is hidden
     *
     * Default value is `true`.
     *
     * @returns Value of property `hideMenuBar`
     */
    getHideMenuBar(): boolean;
    /**
     * Gets current value of property {@link #getHideSideNavigation hideSideNavigation}.
     *
     * Sets if the side navigation bar of FlexAnalysis is hidden
     *
     * Default value is `false`.
     *
     * @returns Value of property `hideSideNavigation`
     */
    getHideSideNavigation(): boolean;
    /**
     * Gets current value of property {@link #getHideStatusBar hideStatusBar}.
     *
     * Sets if the status bar of FlexAnalysis is hidden
     *
     * Default value is `true`.
     *
     * @returns Value of property `hideStatusBar`
     */
    getHideStatusBar(): boolean;
    /**
     * Gets current value of property {@link #getHideToolBar hideToolBar}.
     *
     * Sets if the toolbar of FlexAnalysis is hidden
     *
     * Default value is `true`.
     *
     * @returns Value of property `hideToolBar`
     */
    getHideToolBar(): boolean;
    /**
     * Gets current value of property {@link #getImplicitVariableHandling implicitVariableHandling}.
     *
     * Indicates if the variable are handled internal handling by FlexAnalysis. If set to false it is done via
     * corresponding MultiDimModel
     *
     * Default value is `true`.
     *
     * @returns Value of property `implicitVariableHandling`
     */
    getImplicitVariableHandling(): boolean;
    /**
     * Gets current value of property {@link #getKeepAliveInterval keepAliveInterval}.
     *
     * Interval to keep the InA session alive. values less than 1 deactivates the keep alive handling
     *
     * Default value is `0`.
     *
     * @returns Value of property `keepAliveInterval`
     */
    getKeepAliveInterval(): int;
    /**
     * Gets current value of property {@link #getMultiDimModelId multiDimModelId}.
     *
     * Id of the MultiDimModel to use
     *
     * Default value is `"om"`.
     *
     * @returns Value of property `multiDimModelId`
     */
    getMultiDimModelId(): string;
    /**
     * Gets current value of property {@link #getSystemName systemName}.
     *
     * System to take data from. If not set or set to "local" current url will be used to determine the system
     *
     * @returns Value of property `systemName`
     */
    getSystemName(): string;
    /**
     * Gets current value of property {@link #getSystemType systemType}.
     *
     * Type the system to connect to get data
     *
     * Default value is `BW`.
     *
     * @returns Value of property `systemType`
     */
    getSystemType(): SystemType | keyof typeof SystemType;
    /**
     * Gets current value of property {@link #getWidth width}.
     *
     * Width of the component
     *
     * Default value is `"100%"`.
     *
     * @returns Value of property `width`
     */
    getWidth(): CSSSize;
    /**
     * Checks for the provided `sap.sac.df.FlexAnalysisPanel` in the aggregation {@link #getCustomPanels customPanels}.
     * and returns its index if found or -1 otherwise.
     *
     * @returns The index of the provided control in the aggregation if found, or -1 otherwise
     */
    indexOfCustomPanel(
      /**
       * The customPanel whose index is looked for
       */
      oCustomPanel: FlexAnalysisPanel
    ): int;
    /**
     * Inserts a customPanel into the aggregation {@link #getCustomPanels customPanels}.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    insertCustomPanel(
      /**
       * The customPanel to insert; if empty, nothing is inserted
       */
      oCustomPanel: FlexAnalysisPanel,
      /**
       * The `0`-based index the customPanel should be inserted at; for a negative value of `iIndex`, the customPanel
       * is inserted at position 0; for a value greater than the current size of the aggregation, the customPanel
       * is inserted at the last position
       */
      iIndex: int
    ): this;
    /**
     * Removes all the controls from the aggregation {@link #getCustomPanels customPanels}.
     *
     * Additionally, it unregisters them from the hosting UIArea.
     *
     * @returns An array of the removed elements (might be empty)
     */
    removeAllCustomPanels(): FlexAnalysisPanel[];
    /**
     * Removes a customPanel from the aggregation {@link #getCustomPanels customPanels}.
     *
     * @returns The removed customPanel or `null`
     */
    removeCustomPanel(
      /**
       * The customPanel to remove or its index or id
       */
      vCustomPanel: int | string | FlexAnalysisPanel
    ): FlexAnalysisPanel | null;
    /**
     * Sets a new value for property {@link #getAutoUpdate autoUpdate}.
     *
     * Indicates Flexible Analysis component automatically requests the ResultSet for the shown data source
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `true`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setAutoUpdate(
      /**
       * New value for property `autoUpdate`
       */
      bAutoUpdate?: boolean
    ): this;
    /**
     * Sets a new value for property {@link #getClientIdentifier clientIdentifier}.
     *
     * Client Identifier to be used for underlying InA queries
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setClientIdentifier(
      /**
       * New value for property `clientIdentifier`
       */
      sClientIdentifier: string
    ): this;
    /**
     * Sets a new value for property {@link #getConfigObject configObject}.
     *
     * JSON object containing the configuration (alternative to configurationURI)
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setConfigObject(
      /**
       * New value for property `configObject`
       */
      oConfigObject: object
    ): this;
    /**
     * Sets a new value for property {@link #getConfigurationURI configurationURI}.
     *
     * URI of the advanced configuration to be fetched
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setConfigurationURI(
      /**
       * New value for property `configurationURI`
       */
      sConfigurationURI: string
    ): this;
    /**
     * Sets a new value for property {@link #getDataProvider dataProvider}.
     *
     * Name of the Data Provider from the corresponding MultiDimModel to be used
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setDataProvider(
      /**
       * New value for property `dataProvider`
       */
      oDataProvider: any
    ): this;
    /**
     * Sets a new value for property {@link #getDataSource dataSource}.
     *
     * Data source (Query name/ View, InA model etc) to be used to get the data from
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `"$datasource"`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setDataSource(
      /**
       * New value for property `dataSource`
       */
      sDataSource?: string
    ): this;
    /**
     * Sets a new value for property {@link #getEnvironment environment}.
     *
     * Additional Flag to be passed to the control TODO: Document the possibilities
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `[]`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setEnvironment(
      /**
       * New value for property `environment`
       */
      sEnvironment?: string[]
    ): this;
    /**
     * Sets a new value for property {@link #getHeight height}.
     *
     * Height of the component
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `"100%"`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setHeight(
      /**
       * New value for property `height`
       */
      sHeight?: CSSSize
    ): this;
    /**
     * Sets a new value for property {@link #getHideDesignPanel hideDesignPanel}.
     *
     * Sets if the Design Panel of FlexAnalysis is hidden
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `true`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setHideDesignPanel(
      /**
       * New value for property `hideDesignPanel`
       */
      bHideDesignPanel?: boolean
    ): this;
    /**
     * Sets a new value for property {@link #getHideFilterLine hideFilterLine}.
     *
     * Sets if the filter of FlexAnalysis is hidden
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `false`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setHideFilterLine(
      /**
       * New value for property `hideFilterLine`
       */
      bHideFilterLine?: boolean
    ): this;
    /**
     * Sets a new value for property {@link #getHideMenuBar hideMenuBar}.
     *
     * Sets if the menu bar of FlexAnalysis is hidden
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `true`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setHideMenuBar(
      /**
       * New value for property `hideMenuBar`
       */
      bHideMenuBar?: boolean
    ): this;
    /**
     * Sets a new value for property {@link #getHideSideNavigation hideSideNavigation}.
     *
     * Sets if the side navigation bar of FlexAnalysis is hidden
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `false`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setHideSideNavigation(
      /**
       * New value for property `hideSideNavigation`
       */
      bHideSideNavigation?: boolean
    ): this;
    /**
     * Sets a new value for property {@link #getHideStatusBar hideStatusBar}.
     *
     * Sets if the status bar of FlexAnalysis is hidden
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `true`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setHideStatusBar(
      /**
       * New value for property `hideStatusBar`
       */
      bHideStatusBar?: boolean
    ): this;
    /**
     * Sets a new value for property {@link #getHideToolBar hideToolBar}.
     *
     * Sets if the toolbar of FlexAnalysis is hidden
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `true`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setHideToolBar(
      /**
       * New value for property `hideToolBar`
       */
      bHideToolBar?: boolean
    ): this;
    /**
     * Sets a new value for property {@link #getImplicitVariableHandling implicitVariableHandling}.
     *
     * Indicates if the variable are handled internal handling by FlexAnalysis. If set to false it is done via
     * corresponding MultiDimModel
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `true`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setImplicitVariableHandling(
      /**
       * New value for property `implicitVariableHandling`
       */
      bImplicitVariableHandling?: boolean
    ): this;
    /**
     * Sets a new value for property {@link #getKeepAliveInterval keepAliveInterval}.
     *
     * Interval to keep the InA session alive. values less than 1 deactivates the keep alive handling
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `0`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setKeepAliveInterval(
      /**
       * New value for property `keepAliveInterval`
       */
      iKeepAliveInterval?: int
    ): this;
    /**
     * Sets a new value for property {@link #getMultiDimModelId multiDimModelId}.
     *
     * Id of the MultiDimModel to use
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `"om"`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setMultiDimModelId(
      /**
       * New value for property `multiDimModelId`
       */
      sMultiDimModelId?: string
    ): this;
    /**
     * Sets a new value for property {@link #getSystemName systemName}.
     *
     * System to take data from. If not set or set to "local" current url will be used to determine the system
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setSystemName(
      /**
       * New value for property `systemName`
       */
      sSystemName: string
    ): this;
    /**
     * Sets a new value for property {@link #getSystemType systemType}.
     *
     * Type the system to connect to get data
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `BW`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setSystemType(
      /**
       * New value for property `systemType`
       */
      sSystemType?: SystemType | keyof typeof SystemType
    ): this;
    /**
     * Sets a new value for property {@link #getWidth width}.
     *
     * Width of the component
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `"100%"`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setWidth(
      /**
       * New value for property `width`
       */
      sWidth?: CSSSize
    ): this;
    /**
     * Unbinds property {@link #getDataProvider dataProvider} from model data.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    unbindDataProvider(): this;
  }

  export interface $FlexAnalysisSettings extends $ControlSettings {
    /**
     * Indicates Flexible Analysis component automatically requests the ResultSet for the shown data source
     */
    autoUpdate?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * URI of the advanced configuration to be fetched
     */
    configurationURI?: string | PropertyBindingInfo;

    /**
     * JSON object containing the configuration (alternative to configurationURI)
     */
    configObject?: object | PropertyBindingInfo | `{${string}}`;

    /**
     * Width of the component
     */
    width?: CSSSize | PropertyBindingInfo | `{${string}}`;

    /**
     * Height of the component
     */
    height?: CSSSize | PropertyBindingInfo | `{${string}}`;

    /**
     * Sets if the Design Panel of FlexAnalysis is hidden
     */
    hideDesignPanel?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Sets if the menu bar of FlexAnalysis is hidden
     */
    hideMenuBar?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Sets if the status bar of FlexAnalysis is hidden
     */
    hideStatusBar?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Sets if the toolbar of FlexAnalysis is hidden
     */
    hideToolBar?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Sets if the filter of FlexAnalysis is hidden
     */
    hideFilterLine?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Sets if the side navigation bar of FlexAnalysis is hidden
     */
    hideSideNavigation?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Additional Flag to be passed to the control TODO: Document the possibilities
     */
    environment?: string[] | PropertyBindingInfo | `{${string}}`;

    /**
     * System to take data from. If not set or set to "local" current url will be used to determine the system
     */
    systemName?: string | PropertyBindingInfo;

    /**
     * Data source (Query name/ View, InA model etc) to be used to get the data from
     */
    dataSource?: string | PropertyBindingInfo;

    /**
     * Type the system to connect to get data
     */
    systemType?:
      | (SystemType | keyof typeof SystemType)
      | PropertyBindingInfo
      | `{${string}}`;

    /**
     * Interval to keep the InA session alive. values less than 1 deactivates the keep alive handling
     */
    keepAliveInterval?: int | PropertyBindingInfo | `{${string}}`;

    /**
     * Client Identifier to be used for underlying InA queries
     */
    clientIdentifier?: string | PropertyBindingInfo;

    /**
     * Name of the Data Provider from the corresponding MultiDimModel to be used
     */
    dataProvider?: any | PropertyBindingInfo | `{${string}}`;

    /**
     * Id of the MultiDimModel to use
     */
    multiDimModelId?: string | PropertyBindingInfo;

    /**
     * Indicates if the variable are handled internal handling by FlexAnalysis. If set to false it is done via
     * corresponding MultiDimModel
     */
    implicitVariableHandling?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Custom panels for the flexible analysis control
     */
    customPanels?:
      | FlexAnalysisPanel[]
      | FlexAnalysisPanel
      | AggregationBindingInfo
      | `{${string}}`;
  }
}

declare module "sap/sac/df/FlexAnalysisPanel" {
  import { default as UI5Element, $ElementSettings } from "sap/ui/core/Element";

  import Control from "sap/ui/core/Control";

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

  import ElementMetadata from "sap/ui/core/ElementMetadata";

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

  /**
   * A panel to be added into FlexAnalysis control
   */
  export default class FlexAnalysisPanel extends UI5Element {
    /**
     * Constructor for a new Flexible Analysis Panel.
     *
     * 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.
     */
    constructor(
      /**
       * initial settings for the new control
       */
      mSettings?: $FlexAnalysisPanelSettings
    );
    /**
     * Constructor for a new Flexible Analysis Panel.
     *
     * 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.
     */
    constructor(
      /**
       * id for the new control, generated automatically if no id is given
       */
      sId?: string,
      /**
       * initial settings for the new control
       */
      mSettings?: $FlexAnalysisPanelSettings
    );

    /**
     * Creates a new subclass of class sap.sac.df.FlexAnalysisPanel with name `sClassName` and enriches it with
     * the information contained in `oClassInfo`.
     *
     * `oClassInfo` might contain the same kind of information as described in {@link sap.ui.core.Element.extend}.
     *
     * @returns Created class / constructor function
     */
    static extend<T extends Record<string, unknown>>(
      /**
       * Name of the class being created
       */
      sClassName: string,
      /**
       * Object literal with information about the class
       */
      oClassInfo?: sap.ClassInfo<T, FlexAnalysisPanel>,
      /**
       * Constructor function for the metadata object; if not given, it defaults to the metadata implementation
       * used by this class
       */
      FNMetaImpl?: Function
    ): Function;
    /**
     * Returns a metadata object for class sap.sac.df.FlexAnalysisPanel.
     *
     * @returns Metadata object describing this class
     */
    static getMetadata(): ElementMetadata;
    /**
     * Destroys the content in the aggregation {@link #getContent content}.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    destroyContent(): this;
    /**
     * Gets content of aggregation {@link #getContent content}.
     *
     * The content of this panel
     */
    getContent(): Control;
    /**
     * Gets current value of property {@link #getDescription description}.
     *
     * The description of the panel, displayed as tooltip on the side navigation item.
     *
     * @returns Value of property `description`
     */
    getDescription(): string;
    /**
     * Gets current value of property {@link #getIcon icon}.
     *
     * The icon of the panel, displayed on the side navigation item and the panel header.
     *
     * @returns Value of property `icon`
     */
    getIcon(): URI;
    /**
     * Gets current value of property {@link #getTitle title}.
     *
     * The title of the panel header.
     *
     * @returns Value of property `title`
     */
    getTitle(): string;
    /**
     * Sets the aggregated {@link #getContent content}.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setContent(
      /**
       * The content to set
       */
      oContent: Control
    ): this;
    /**
     * Sets a new value for property {@link #getDescription description}.
     *
     * The description of the panel, displayed as tooltip on the side navigation item.
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setDescription(
      /**
       * New value for property `description`
       */
      sDescription: string
    ): this;
    /**
     * Sets a new value for property {@link #getIcon icon}.
     *
     * The icon of the panel, displayed on the side navigation item and the panel header.
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setIcon(
      /**
       * New value for property `icon`
       */
      sIcon: URI
    ): this;
    /**
     * Sets a new value for property {@link #getTitle title}.
     *
     * The title of the panel header.
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setTitle(
      /**
       * New value for property `title`
       */
      sTitle: string
    ): this;
  }

  export interface $FlexAnalysisPanelSettings extends $ElementSettings {
    /**
     * The description of the panel, displayed as tooltip on the side navigation item.
     */
    description?: string | PropertyBindingInfo;

    /**
     * The title of the panel header.
     */
    title?: string | PropertyBindingInfo;

    /**
     * The icon of the panel, displayed on the side navigation item and the panel header.
     */
    icon?: URI | PropertyBindingInfo | `{${string}}`;

    /**
     * The content of this panel
     */
    content?: Control;
  }
}

declare module "sap/sac/df/olap/DataProvider" {
  import OlapModel from "sap/sac/df/olap/OlapModel";

  import Format from "sap/sac/grid/Format";

  /**
   * @EXPERIMENTAL
   *
   * A `DataProvider` is a Analytical query exposed via an OLAP engine and accessed via InA protocol HANA
   * - MDS BW Query. In BW it could be done via a CDS view that is annotated as an AnalyticQuery.
   *
   * Instances of this class should only be created by the {sap.sac.df.olap.OlapModel}. The `OlapModel` populates
   * it's exposed data via Binding to Controls. The structure of data exposed by a DataProvider
   * is as follows:
   *
   * **Structure of Exposed Data**
   *
   *
   * 	 - `Grid/Cells`: The list of all `Cell` representing the data retrieved via `DataProvider`
   * 	 - `FreeDimensions`: The list of all Dimensions lying in the Free Axis
   * 	`Name`: the external name of the dimension  `Description`: the language dependant description of
   * the dimension  `IsStructure`: boolean flag indicating whether the dimension is a structure
   *
   * 	 - RowsDimensions: The list of all Dimensions lying on the Rows Axis
   * 	 Name: the external name of the dimension  Description: the language dependant description of the
   * dimension  IsStructure: boolean flag indicating whether the dimension is a structure   *
   * 	 - ColumnsDimensions: The list of all Dimensions lying on the Columns Axis
   * 	 Name: the external name of the dimension  Description: the language dependant description of the
   * dimension  IsStructure: boolean flag indicating whether the dimension is a structure
   * 	 - Conditions: list of conditions (result set filters)
   * 	 - Exceptions: list of exceptions (conditional formats)
   * 	 - StructureMembers: list of structure members (collection of Members of all Structure Dimension)
   */
  export default class DataProvider {
    /**
     * Constructor for a new DataProvider.
     *
     * A DataProvider represents a navigable queryManager and allows to access and change data from servers
     * providing the InA Protocol.
     */
    constructor(
      /**
       * the model to which the DataProvider belongs
       */
      oOlapModel: OlapModel,
      /**
       * name of the DataProvider
       */
      sDataProviderName: string,
      /**
       * update function for update state
       */
      fUndoUpdater: Function,
      /**
       * the firefly application associated to the `OlapModel`
       */
      oApplication: object,
      /**
       * the firefly queryManager that is wrapped by the `DataProvider`
       */
      oQueryManager: object
    );

    /**
     * add a new condition (aka resultset filter).
     *
     * @returns resolving to the `DataProvider` to allow chaining.
     */
    addCondition(
      /**
       * Condition Definiton
       */
      oData: object,
      /**
       * Target state of the condition
       */
      bActive: boolean
    ): Promise<this>;
    /**
     * Do a drill operation on a dimension member on an Axis
     *
     * @returns resolving to the `DataProvider` to allow chaining.
     */
    drill(
      /**
       * the external name of the Dimension
       */
      sDim: string,
      /**
       * the Tuple Index of the member in the resultset.
       */
      nIndex: int
    ): this;
    /**
     * Gets the scaling factor of a measure or data cell
     *
     * @returns the current decimal places setting
     */
    getDecimalPlaces(
      /**
       * the Member of the Measure Structure
       */
      sMeasureMember: string,
      /**
       * the Member of the Non Measure Structure, if this is not given the value for the sMeasureMember is returned
       */
      sNonMeasureMember: string
    ): int;
    /**
     * get the list of filters of a dimension
     *
     * @returns list of a range with components
     * 	`Low`: The Low value of the range `High`: The High value of the range `Operator`: The Operator:
     * EQ,LE,..,BT
     */
    getFilterOfDim(
      /**
       * the name of the dimension from which the filter is retrieved
       */
      sDim: string
    ): object[];
    /**
     * get the current resultset from the InA Server
     *
     * @returns resolving to the `DataProvider` to allow chaining.
     */
    getResultSet(): Promise<this>;
    /**
     * get the list of the jump targets associated to a datacell defined via the report report interface.
     *
     * @returns resolving to the List of jump targets.
     */
    getRRITargets(
      /**
       * Row of the data cell
       */
      nRow: int,
      /**
       * Column of the data cell
       */
      nColumn: int
    ): Promise<this>;
    /**
     * Gets the scaling factor of a measure
     *
     * @returns the exponent of the scaling factor in Base 10
     */
    getScalingFactor(
      /**
       * the Member of the Measure Structure
       */
      sMeasureMember: string,
      /**
       * the Member of the Non Measure Structure
       */
      sNonMeasureMember: string
    ): int;
    /**
     * hasVariable Checks whether a Variable is influencing the DataProvider
     *
     * @returns Whether the vairable influences the DataProvider
     */
    hasVariable(
      /**
       * Name of the Variable
       */
      the: string
    ): boolean;
    /**
     * move a dimension one position down on it's axis
     *
     * @returns the `DataProvider` to allow chaining.
     */
    moveDown(
      /**
       * name of the dimension
       */
      sName: string,
      /**
       * Target state of the condition
       */
      bActive: boolean
    ): this;
    /**
     * move a dimension one position up on it's axis
     *
     * @returns the `DataProvider` to allow chaining.
     */
    moveUp(
      /**
       * name of the dimension
       */
      sName: string,
      /**
       * Target state of the condition
       */
      bActive: boolean
    ): this;
    /**
     * Open a dialog that allows to display and change the property of an `Axis` of the `DataProvider`.
     *
     * @returns indicator whether the dialog was confirmed or canceled
     */
    openAxisDialog(
      /**
       * the external name of the Dimension
       */
      sDim: string
    ): Promise<boolean>;
    /**
     * Open a dialog that allows to display and change the property of a `Query Cell` of the `DataProvider`.
     *
     * @returns resolving to the `DataProvider` to allow chaining. In case that a the Currency Translation Settings
     * have been changed in the dialog, the new resultset was retrieved before the promise gets resolved.
     */
    openCellDialog(
      /**
       * the external name of the first structure
       */
      sDim1?: string,
      /**
       * the external name of the member of the first structure
       */
      sMem1?: string,
      /**
       * the external name of the second structure
       */
      sDim2?: string,
      /**
       * the external name of the member of the second structure
       */
      sMem2?: string
    ): Promise<this>;
    /**
     * Open a dialog that allows to display and change the currency translation settings of the `DataProvider`.
     *
     * @returns indicator whether the dialog was confirmed or canceled in the dialog, the new resultset was
     * retrieved before the promise gets resolved.
     */
    openCurrencyTranslationDialog(): Promise<boolean>;
    /**
     * Open a dialog to display and change the settings of a dimension of the `DataProvider`
     *
     * @returns indicator whether the dialog was confirmed or canceled
     */
    openDimDialog(
      /**
       * the external name of the Dimension
       */
      sDim: string
    ): Promise<boolean>;
    /**
     * Open a dialog to display and change the filter on a dimension of the `DataProvider`
     *
     * @returns resolving to a boolean which is false when the dialog is cancelled and true if is was closed
     * with Ok and dynamic filters of the given dimension are updated
     */
    openSelector(
      /**
       * the external name of the Dimension
       */
      sDimensionName: string
    ): Promise<any>;
    /**
     * Remove the filter of a dimension
     *
     * @returns resolving to the `DataProvider` to allow chaining.
     */
    removeFilter(
      /**
       * the external name
       */
      sDim: string
    ): this;
    /**
     * Distribute the dimension among the rows and columns
     *
     * @returns resolving to the `DataProvider` to allow chaining. In case that a the Currency Translation Settings
     * have been changed in the dialog, the new resultset was retrieved before the promise gets resolved.
     */
    setAxesLayout(
      /**
       * an Object containing a `rows` member referencing a string array containing the names of the dimensions
       * and a `columns` member referencing a string array containing the dimension on the columns. The order
       * in the array control the positon on the axis.
       */
      mLayout: object
    ): this;
    /**
     * Sets the number of decimal of a measure/query cell
     *
     * @returns the DataProvider
     */
    setDecimalPlaces(
      /**
       * number of the decimal palaces to be shown after the separator
       */
      nNumberOfDecimalPlaces: int,
      /**
       * the Member of the Measure Structure
       */
      sMeasureMember: string,
      /**
       * Member of the Non Measure Structure, if this is not given the setting is applied for the whole sMeasureMember
       */
      the: string
    ): this;
    /**
     * Set Display Hierachy
     *
     * @returns resolving to the `DataProvider` to allow chaining.
     */
    setDisplayHierarchy(
      /**
       * the external name of the structure on which the new restriction is created
       */
      sDim: string,
      /**
       * whether the hierarchy should be activated
       */
      bActive: boolean,
      /**
       * the name of the hierarchy (optional)
       */
      sHierachy: string,
      /**
       * the version of the hierarchy (optional)
       */
      sVersion: string
    ): this;
    /**
     * Set the filter for a dimension
     *
     * @returns {{this} resolving to the `DataProvider` to allow chaining.
     */
    setFilter(
      /**
       * the external name
       */
      sDim: string,
      /**
       * the filter
       */
      oFilter: object
    ): undefined;
    /**
     * sets the format property of the dataprovider, this can influence the resultset that is aggregated in
     * the `Grid.Cells` collection. Its main purpose is to influence the visualisation of a `sap.sac.df.PivotTable`
     */
    setFormat(
      /**
       * the format to be used
       */
      sFormat: Format | keyof typeof Format
    ): void;
    /**
     * Sets the scaling factor of a measure/query cell
     *
     * @returns the DataProvider
     */
    setScalingFactor(
      /**
       * the exponential of the scaling factor
       */
      nFactor: int,
      /**
       * the Member of the Measure Structure
       */
      sMeasureMember: string,
      /**
       * the Member of the Non Measure Structure
       */
      sNonMeasureMember: string
    ): this;
    /**
     * Sort the members of a dimension
     *
     * @returns resolving to the `DataProvider` to allow chaining.
     */
    sort(
      /**
       * the external name of the Dimension
       */
      sDim: string,
      /**
       * of sorting
       */
      type: /* was: sap.sac.df.types.SortType */ any,
      /**
       * of sorting
       */
      direction: /* was: sap.sac.df.types.SortDirection */ any,
      /**
       * in case of a structure the measure according to which is sorted
       */
      sMember?: string
    ): Promise<this>;
    /**
     * submit the value of the input enabled queries to the InA Server
     *
     * @returns resolving to the `DataProvider` to allow chaining.
     */
    submitVariables(): Promise<this>;
    /**
     * suppress a unit/currency from being populated to the result cells
     *
     * @returns the dataprovider to allow chaining
     */
    suppressUnit(
      /**
       * the key of the suppressed unit
       */
      sUnit: string
    ): this;
    /**
     * retrieve the data of the current naviation state `DataProvider` from the InA Server.
     *
     * @returns to allow chaining.
     */
    synchronize(): Promise<this>;
    /**
     * Move a dimension to the columns axis
     *
     * @returns resolving to the `DataProvider` to allow chaining.
     */
    toColumns(
      /**
       * the external name of the Dimension
       */
      sDim: string
    ): this;
    /**
     * Move a dimension to the rows axis
     *
     * @returns resolving to the `DataProvider` to allow chaining.
     */
    toRows(
      /**
       * the external name of the Dimension
       */
      sDim: string
    ): this;
  }
}

declare module "sap/sac/df/olap/MultiDimDataProvider" {
  import MultiDimModel from "sap/sac/df/olap/MultiDimModel";

  import Format from "sap/sac/grid/Format";

  /**
   * @EXPERIMENTAL
   *
   * A `MultiDimDataProvider` is a Analytical query exposed via an OLAP engine and accessed via InA protocol
   * HANA - MDS BW Query. In BW it could be done via a CDS view that is annotated as an AnalyticQuery.
   *
   * Instances of this class should only be created by the {sap.sac.df.olap.MultiDimModel}. The `MultiDimModel`
   * populates it's exposed data via Binding to Controls. The structure of data exposed by a MultiDimDataProvider
   * is as follows:
   *
   * **Structure of Exposed Data**
   *
   *
   * 	 - `Grid/Cells`: The list of all `Cell` representing the data retrieved via `MultiDimDataProvider`
   * 	 - `FreeDimensions`: The list of all Dimensions lying in the Free Axis
   * 	`Name`: the external name of the dimension  `Description`: the language dependant description of
   * the dimension  `IsStructure`: boolean flag indicating whether the dimension is a structure
   *
   * 	 - RowsDimensions: The list of all Dimensions lying on the Rows Axis
   * 	 Name: the external name of the dimension  Description: the language dependant description of the
   * dimension  IsStructure: boolean flag indicating whether the dimension is a structure   *
   * 	 - ColumnsDimensions: The list of all Dimensions lying on the Columns Axis
   * 	 Name: the external name of the dimension  Description: the language dependant description of the
   * dimension  IsStructure: boolean flag indicating whether the dimension is a structure
   * 	 - Conditions: list of conditions (result set filters)
   * 	 - Exceptions: list of exceptions (conditional formats)
   * 	 - StructureMembers: list of structure members (collection of Members of all Structure Dimension)
   */
  export default class MultiDimDataProvider {
    /**
     * Constructor for a new MultiDimDataProvider.
     *
     * A MultiDimDataProvider represents a navigable queryManager and allows to access and change data from
     * servers providing the InA
     * Protocol.
     */
    constructor(
      /**
       * the model to which the MultiDimDataProvider belongs
       */
      oMultiDimModel: MultiDimModel,
      /**
       * name of the MultiDimDataProvider
       */
      sMultiDimDataProviderName: string,
      /**
       * the firefly application associated to the `MultiDimModel`
       */
      oApplication: object,
      /**
       * the firefly queryManager that is wrapped by the `MultiDimDataProvider`
       */
      oQueryManager: object
    );

    /**
     * add a new condition (aka resultset filter).
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining.
     */
    addCondition(
      /**
       * Condition Definiton
       */
      oData: object,
      /**
       * Target state of the condition
       */
      bActive: boolean
    ): Promise<this>;
    /**
     * Do a drill operation on a dimension member on an Axis
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining.
     */
    drill(
      /**
       * the external name of the Dimension
       */
      sDim: string,
      /**
       * the Tuple Index of the member in the resultset.
       */
      nIndex: int
    ): this;
    /**
     * Gets the scaling factor of a measure or data cell
     *
     * @returns the current decimal places setting
     */
    getDecimalPlaces(
      /**
       * the Member of the Measure Structure
       */
      sMeasureMember: string,
      /**
       * the Member of the Non Measure Structure, if this is not given the value for the sMeasureMember is returned
       */
      sNonMeasureMember: string
    ): int;
    /**
     * get the list of filters of a dimension
     *
     * @returns list of a range with components
     * 	`Low`: The Low value of the range `High`: The High value of the range `Operator`: The Operator:
     * EQ,LE,..,BT
     */
    getFilterOfDim(
      /**
       * the name of the dimension from which the filter is retrieved
       */
      sDim: string
    ): object[];
    /**
     * get the current resultset from the InA Server
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining.
     */
    getResultSet(): Promise<this>;
    /**
     * get the list of the jump targets associated to a datacell defined via the report report interface.
     *
     * @returns resolving to the List of jump targets.
     */
    getRRITargets(
      /**
       * Row of the data cell
       */
      nRow: int,
      /**
       * Column of the data cell
       */
      nColumn: int
    ): Promise<this>;
    /**
     * Gets the scaling factor of a measure
     *
     * @returns the exponent of the scaling factor in Base 10
     */
    getScalingFactor(
      /**
       * the Member of the Measure Structure
       */
      sMeasureMember: string,
      /**
       * the Member of the Non Measure Structure
       */
      sNonMeasureMember: string
    ): int;
    /**
     * hasVariable Checks whether a Variable is influencing the MultiDimDataProvider
     *
     * @returns Whether the vairable influences the MultiDimDataProvider
     */
    hasVariable(
      /**
       * Name of the Variable
       */
      the: string
    ): boolean;
    /**
     * move a dimension one position down on it's axis
     *
     * @returns the `MultiDimDataProvider` to allow chaining.
     */
    moveDown(
      /**
       * name of the dimension
       */
      sName: string,
      /**
       * Target state of the condition
       */
      bActive: boolean
    ): this;
    /**
     * move a dimension one position up on it's axis
     *
     * @returns the `MultiDimDataProvider` to allow chaining.
     */
    moveUp(
      /**
       * name of the dimension
       */
      sName: string,
      /**
       * Target state of the condition
       */
      bActive: boolean
    ): this;
    /**
     * Open a dialog that allows to display and change the property of an `Axis` of the `MultiDimDataProvider`.
     *
     * @returns indicator whether the dialog was confirmed or canceled
     */
    openAxisDialog(
      /**
       * the external name of the Dimension
       */
      sDim: string
    ): Promise<boolean>;
    /**
     * Open a dialog that allows to display and change the property of a `Query Cell` of the `MultiDimDataProvider`.
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining. In case that a the Currency Translation
     * Settings have been changed in the dialog, the new resultset was retrieved before the promise gets resolved.
     */
    openCellDialog(
      /**
       * the external name of the first structure
       */
      sDim1?: string,
      /**
       * the external name of the member of the first structure
       */
      sMem1?: string,
      /**
       * the external name of the second structure
       */
      sDim2?: string,
      /**
       * the external name of the member of the second structure
       */
      sMem2?: string
    ): Promise<this>;
    /**
     * Open a dialog that allows to display and change the currency translation settings of the `MultiDimDataProvider`.
     *
     * @returns indicator whether the dialog was confirmed or canceled in the dialog, the new resultset was
     * retrieved before the promise gets resolved.
     */
    openCurrencyTranslationDialog(): Promise<boolean>;
    /**
     * Open a dialog to display and change the settings of a dimension of the `MultiDimDataProvider`
     *
     * @returns indicator whether the dialog was confirmed or canceled
     */
    openDimDialog(
      /**
       * the external name of the Dimension
       */
      sDim: string
    ): Promise<boolean>;
    /**
     * Open a dialog to display and change the filter on a dimension of the `MultiDimDataProvider`
     *
     * @returns resolving to a boolean which is false when the dialog is cancelled and true if is was closed
     * with Ok and dynamic filters of the given dimension are updated
     */
    openSelector(
      /**
       * the external name of the Dimension
       */
      sDimensionName: string
    ): Promise<any>;
    /**
     * Remove the filter of a dimension
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining.
     */
    removeFilter(
      /**
       * the external name
       */
      sDim: string
    ): this;
    /**
     * Distribute the dimension among the rows and columns
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining. In case that a the Currency Translation
     * Settings have been changed in the dialog, the new resultset was retrieved before the promise gets resolved.
     */
    setAxesLayout(
      /**
       * an Object containing a `rows` member referencing a string array containing the names of the dimensions
       * and a `columns` member referencing a string array containing the dimension on the columns. The order
       * in the array control the positon on the axis.
       */
      mLayout: object
    ): this;
    /**
     * Sets the number of decimal of a measure/query cell
     *
     * @returns the MultiDimDataProvider
     */
    setDecimalPlaces(
      /**
       * number of the decimal palaces to be shown after the separator
       */
      nNumberOfDecimalPlaces: int,
      /**
       * the Member of the Measure Structure
       */
      sMeasureMember: string,
      /**
       * Member of the Non Measure Structure, if this is not given the setting is applied for the whole sMeasureMember
       */
      the: string
    ): this;
    /**
     * Set Display Hierachy
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining.
     */
    setDisplayHierarchy(
      /**
       * the external name of the structure on which the new restriction is created
       */
      sDim: string,
      /**
       * whether the hierarchy should be activated
       */
      bActive: boolean,
      /**
       * the name of the hierarchy (optional)
       */
      sHierachy: string,
      /**
       * the version of the hierarchy (optional)
       */
      sVersion: string
    ): this;
    /**
     * Set the filter for a dimension
     *
     * @returns {{this} resolving to the `MultiDimDataProvider` to allow chaining.
     */
    setFilter(
      /**
       * the external name
       */
      sDim: string,
      /**
       * the filter
       */
      oFilter: object
    ): undefined;
    /**
     * sets the format property of the MultiDimDataProvider, this can influence the resultset that is aggregated
     * in the `Grid.Cells` collection. Its main purpose is to influence the visualisation of a `sap.sac.df.PivotTable`
     */
    setFormat(
      /**
       * the format to be used
       */
      sFormat: Format | keyof typeof Format
    ): void;
    /**
     * Sets the scaling factor of a measure/query cell
     *
     * @returns the MultiDimDataProvider
     */
    setScalingFactor(
      /**
       * the exponential of the scaling factor
       */
      nFactor: int,
      /**
       * the Member of the Measure Structure
       */
      sMeasureMember: string,
      /**
       * the Member of the Non Measure Structure
       */
      sNonMeasureMember: string
    ): this;
    /**
     * Sort the members of a dimension
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining.
     */
    sort(
      /**
       * the external name of the Dimension
       */
      sDim: string,
      /**
       * of sorting
       */
      type: /* was: sap.sac.df.types.SortType */ any,
      /**
       * of sorting
       */
      direction: /* was: sap.sac.df.types.SortDirection */ any,
      /**
       * in case of a structure the measure according to which is sorted
       */
      sMember?: string
    ): Promise<this>;
    /**
     * submit the value of the input enabled queries to the InA Server
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining.
     */
    submitVariables(): Promise<this>;
    /**
     * suppress a unit/currency from being populated to the result cells
     *
     * @returns the MultiDimDataProvider to allow chaining
     */
    suppressUnit(
      /**
       * the key of the suppressed unit
       */
      sUnit: string
    ): this;
    /**
     * retrieve the data of the current naviation state `MultiDimDataProvider` from the InA Server.
     *
     * @returns to allow chaining.
     */
    synchronize(): Promise<this>;
    /**
     * Move a dimension to the columns axis
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining.
     */
    toColumns(
      /**
       * the external name of the Dimension
       */
      sDim: string
    ): this;
    /**
     * Move a dimension to the rows axis
     *
     * @returns resolving to the `MultiDimDataProvider` to allow chaining.
     */
    toRows(
      /**
       * the external name of the Dimension
       */
      sDim: string
    ): this;
  }
}

declare module "sap/sac/df/olap/MultiDimModel" {
  import Metadata from "sap/ui/base/Metadata";

  /**
   * @EXPERIMENTAL
   *
   * Model implementation for InA provider
   *
   * The MultiDimModel can populate it's exposed data via Binding to Controls. The structure of the exposed
   * data is as follows: **Structure of Exposed Data**
   *
   *
   * 	 - DataProvider: The associative array of all `DataProvider` aggregated by the   SemanticStyles:
   * 			The associative array of all `SemanticStyle` for the `MultiDimModel` VariableGroups: The associative
   * 			array of registered Variable Groups Messages: The list of all messages posted by the Analytical Engine
   */
  export default class MultiDimModel
    /* was: sap.sac.df.DFKernel */ extends Object {
    /**
     * Constructor for a new OlapMode.
     *
     * The Olap Model allows to access and change data from servers providing the InA Protocol.
     */
    constructor();

    /**
     * Creates a new subclass of class sap.sac.df.olap.MultiDimModel with name `sClassName` and enriches it
     * with the information contained in `oClassInfo`.
     *
     * `oClassInfo` might contain the same kind of information as described in {@link sap.sac.df.DFKernel.extend}.
     *
     * @returns Created class / constructor function
     */
    static extend<T extends Record<string, unknown>>(
      /**
       * Name of the class being created
       */
      sClassName: string,
      /**
       * Object literal with information about the class
       */
      oClassInfo?: sap.ClassInfo<T, MultiDimModel>,
      /**
       * Constructor function for the metadata object; if not given, it defaults to the metadata implementation
       * used by this class
       */
      FNMetaImpl?: Function
    ): Function;
    /**
     * Returns a metadata object for class sap.sac.df.olap.MultiDimModel.
     *
     * @returns Metadata object describing this class
     */
    static getMetadata(): Metadata;
  }
}

declare module "sap/sac/df/olap/OlapListBinding" {
  import ListBinding from "sap/ui/model/ListBinding";

  import Metadata from "sap/ui/base/Metadata";

  /**
   * List binding implementation for `OlapModel`.
   */
  export default class OlapListBinding extends ListBinding {
    /**
     * Creates a new OlapListBinding.
     *
     * This constructor should only be called by subclasses or model implementations, not by application or
     * control code. Such code should use {@link sap.sac.df.olap.OlapModel#bindList OlapModel#bindList} on the
     * corresponding model instance instead.
     */
    constructor();

    /**
     * Creates a new subclass of class sap.sac.df.olap.OlapListBinding with name `sClassName` and enriches it
     * with the information contained in `oClassInfo`.
     *
     * `oClassInfo` might contain the same kind of information as described in {@link sap.ui.model.ListBinding.extend}.
     *
     * @returns Created class / constructor function
     */
    static extend<T extends Record<string, unknown>>(
      /**
       * Name of the class being created
       */
      sClassName: string,
      /**
       * Object literal with information about the class
       */
      oClassInfo?: sap.ClassInfo<T, OlapListBinding>,
      /**
       * Constructor function for the metadata object; if not given, it defaults to the metadata implementation
       * used by this class
       */
      FNMetaImpl?: Function
    ): Function;
    /**
     * Returns a metadata object for class sap.sac.df.olap.OlapListBinding.
     *
     * @returns Metadata object describing this class
     */
    static getMetadata(): Metadata;
  }
}

declare module "sap/sac/df/olap/OlapListGridBinding" {
  import ListBinding from "sap/ui/model/ListBinding";

  import Metadata from "sap/ui/base/Metadata";

  /**
   * List binding implementation for `OlapModel`.
   */
  export default class OlapListGridBinding extends ListBinding {
    /**
     * Creates a new OlapListGridBinding.
     *
     * This constructor should only be called by subclasses or model implementations, not by application or
     * control code. Such code should use {@link sap.sac.df.OlapModel#bindList OlapModel#bindList} on the corresponding
     * model instance instead.
     */
    constructor();

    /**
     * Creates a new subclass of class sap.sac.df.olap.OlapListGridBinding with name `sClassName` and enriches
     * it with the information contained in `oClassInfo`.
     *
     * `oClassInfo` might contain the same kind of information as described in {@link sap.ui.model.ListBinding.extend}.
     *
     * @returns Created class / constructor function
     */
    static extend<T extends Record<string, unknown>>(
      /**
       * Name of the class being created
       */
      sClassName: string,
      /**
       * Object literal with information about the class
       */
      oClassInfo?: sap.ClassInfo<T, OlapListGridBinding>,
      /**
       * Constructor function for the metadata object; if not given, it defaults to the metadata implementation
       * used by this class
       */
      FNMetaImpl?: Function
    ): Function;
    /**
     * Returns a metadata object for class sap.sac.df.olap.OlapListGridBinding.
     *
     * @returns Metadata object describing this class
     */
    static getMetadata(): Metadata;
  }
}

declare module "sap/sac/df/olap/OlapModel" {
  import Model from "sap/ui/model/Model";

  import DataProvider from "sap/sac/df/olap/DataProvider";

  import Event from "sap/ui/base/Event";

  import Metadata from "sap/ui/base/Metadata";

  /**
   * @EXPERIMENTAL
   *
   * Model implementation for InA provider
   *
   * The OlapModel can populate it's exposed data via Binding to Controls. The structure of the exposed data
   * is as follows: **Structure of Exposed Data**
   *
   *
   * 	 - FlatVariables: The list of all input ready variables collected from all aggregated `DataProvider`
   *
   * 	 - DataProvider: The associative array of all `DataProvider` aggregated by the   semanticStyles:
   * 			The associative array of all `SemanticStyle` for the `OlapModel` Messages: The list of all messages
   * 			posted by the Analytical Engine
   */
  export default class OlapModel extends Model {
    /**
     * Constructor for a new OlapMode.
     *
     * The Olap Model allows to access and change data from servers providing the InA Protocol.
     *
     * 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.
     */
    constructor(
      /**
       * the settings for the new Olap Model.
       * 	systemLandscape: The list of addressable Analytic Engines dataProvider: The associative array of
       * all `DataProvider` aggregated by the
       */
      mSettings?: object
    );

    /**
     * Creates a new subclass of class sap.sac.df.olap.OlapModel with name `sClassName` and enriches it with
     * the information contained in `oClassInfo`.
     *
     * `oClassInfo` might contain the same kind of information as described in {@link sap.ui.model.Model.extend}.
     *
     * @returns Created class / constructor function
     */
    static extend<T extends Record<string, unknown>>(
      /**
       * Name of the class being created
       */
      sClassName: string,
      /**
       * Object literal with information about the class
       */
      oClassInfo?: sap.ClassInfo<T, OlapModel>,
      /**
       * Constructor function for the metadata object; if not given, it defaults to the metadata implementation
       * used by this class
       */
      FNMetaImpl?: Function
    ): Function;
    /**
     * Returns a metadata object for class sap.sac.df.olap.OlapModel.
     *
     * @returns Metadata object describing this class
     */
    static getMetadata(): Metadata;
    /**
     * adds a new query as a new `DataProvider` . The query is supposed to be defined as an analytical annotated
     * CDS View  the name of the query is the name of the DDIC view, prefixed by "2C"
     *
     * @returns the Data Provider that was created
     */
    addQuery(
      /**
       * the name of the new `DataProvider`.
       */
      sDataProviderName: string,
      /**
       * the name of the query which the `DataProvider` is supposed to expose.
       */
      sQueryName: string,
      /**
       * the name of the system in the landscape
       */
      sSystem?: string,
      /**
       * the name of the package
       */
      sPackage?: string,
      /**
       * the name of the schema
       */
      sSchema?: string,
      /**
       * the name of the type of the datasource
       */
      sType?: string
    ): Promise<DataProvider>;
    /**
     * Attaches event handler `fnFunction` to the {@link #event:metadataFailed metadataFailed} event of this
     * `sap.sac.df.olap.OlapModel`.
     *
     * When called, the context of the event handler (its `this`) will be bound to `oListener` if specified,
     * otherwise it will be bound to this `sap.sac.df.olap.OlapModel` itself.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    attachMetadataFailed(
      /**
       * An application-specific payload object that will be passed to the event handler along with the event
       * object when firing the event
       */
      oData: object,
      /**
       * The function to be called when the event occurs
       */
      fnFunction: (p1: Event) => void,
      /**
       * Context object to call the event handler with. Defaults to this `sap.sac.df.olap.OlapModel` itself
       */
      oListener?: object
    ): this;
    /**
     * Attaches event handler `fnFunction` to the {@link #event:metadataFailed metadataFailed} event of this
     * `sap.sac.df.olap.OlapModel`.
     *
     * When called, the context of the event handler (its `this`) will be bound to `oListener` if specified,
     * otherwise it will be bound to this `sap.sac.df.olap.OlapModel` itself.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    attachMetadataFailed(
      /**
       * The function to be called when the event occurs
       */
      fnFunction: (p1: Event) => void,
      /**
       * Context object to call the event handler with. Defaults to this `sap.sac.df.olap.OlapModel` itself
       */
      oListener?: object
    ): this;
    /**
     * deserialize the Model with all aggregated `DataProvider` The `OlapModel` be be deserialized from an equivalent
     * such Object.
     *
     * @returns a javascript object which represents the `OlapModel` and which can be JSON stringified.
     */
    deserialize(): object;
    /**
     * Detaches event handler `fnFunction` from the {@link #event:metadataFailed metadataFailed} event of this
     * `sap.sac.df.olap.OlapModel`.
     *
     * The passed function and listener object must match the ones used for event registration.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    detachMetadataFailed(
      /**
       * The function to be called, when the event occurs
       */
      fnFunction: (p1: Event) => void,
      /**
       * Context object on which the given function had to be called
       */
      oListener?: object
    ): this;
    /**
     * Fires event {@link #event:metadataFailed metadataFailed} to attached listeners.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    fireMetadataFailed(
      /**
       * Parameters to pass along with the event
       */
      mParameters?: object
    ): this;
    /**
     * retrieves a `DataProvider` aggregated by the `OlapModel`. sQueryName, sSystem
     *
     * @returns the Data Provider that was requested
     */
    getDataProvider(
      /**
       * the name of the `DataProvider`.
       */
      sDataProviderName: string
    ): DataProvider;
    /**
     * Let the user choose a value for a variable in a dialog
     *
     * @returns the selected value
     */
    openVariableSelector(
      /**
       * the name of the variable
       */
      sVar: string
    ): Promise<string>;
    /**
     * Reset the Olap Model to the default query
     */
    resetModel(): void;
    /**
     * serialize the Model with all aggregated `DataProvider` The `OlapModel` to be deserialized from an equivalent
     * such Object.
     *
     * @returns a javascript object which represents the `OlapModel`.
     */
    serialize(): object;
    /**
     * Replace all input enabled variables with their entered values for all data providers
     *
     * @returns the OlapModel, to allow chaining
     */
    submitVariables(): Promise<this>;
    /**
     * snychronize all aggregated dataproviders if the user does not choose an Analytic Query, then the promise
     * is rejected
     *
     * @returns the OlapModel, to allow chaining
     */
    synchronize(
      /**
       * List of data provider that are to be synchronized (all if not supplied)
       */
      aDataProviderNames: string[]
    ): Promise<OlapModel>;
    /**
     * undoes the last navigation step.
     *
     * @returns the Olap Model
     */
    undo(): Promise<this>;
  }
}

declare module "sap/sac/df/olap/OlapPropertyBinding" {
  import ListBinding from "sap/ui/model/ListBinding";

  import Metadata from "sap/ui/base/Metadata";

  /**
   * Property binding implementation for `OlapModel`.
   */
  export default class OlapPropertyBinding extends ListBinding {
    /**
     * Creates a new OlapPropertyBinding.
     *
     * This constructor should only be called by subclasses or model implementations, not by application or
     * control code. Such code should use {@link sap.sac.df.olap.OlapModel#bindProperty OlapModel#bindProperty}
     * on the corresponding model instance instead.
     */
    constructor();

    /**
     * Creates a new subclass of class sap.sac.df.olap.OlapPropertyBinding with name `sClassName` and enriches
     * it with the information contained in `oClassInfo`.
     *
     * `oClassInfo` might contain the same kind of information as described in {@link sap.ui.model.ListBinding.extend}.
     *
     * @returns Created class / constructor function
     */
    static extend<T extends Record<string, unknown>>(
      /**
       * Name of the class being created
       */
      sClassName: string,
      /**
       * Object literal with information about the class
       */
      oClassInfo?: sap.ClassInfo<T, OlapPropertyBinding>,
      /**
       * Constructor function for the metadata object; if not given, it defaults to the metadata implementation
       * used by this class
       */
      FNMetaImpl?: Function
    ): Function;
    /**
     * Returns a metadata object for class sap.sac.df.olap.OlapPropertyBinding.
     *
     * @returns Metadata object describing this class
     */
    static getMetadata(): Metadata;
  }
}

declare module "sap/sac/df/PivotTable" {
  import { default as Control, $ControlSettings } from "sap/ui/core/Control";

  import Event from "sap/ui/base/Event";

  import NavigationCommandType from "sap/sac/df/types/NavigationCommandType";

  import Format from "sap/sac/grid/Format";

  import ElementMetadata from "sap/ui/core/ElementMetadata";

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

  /**
   * @EXPERIMENTAL
   *
   * Enables users to view, navigate and change multidimensional data exposed via InA in a PivotTable.
   *
   * Overview:
   *
   * The user can view the data in the Pivot Table, navigate in the data via a context menu or enter data
   * in input enables cells cells.
   *
   * Usage:
   *
   * The `PivotTable` is mimicked after the OData Smart Controls. Instead of OData they bind against an {sap.sac.df.olap.OlapModel}
   * with the name "om". Each Analytical Query in the `Olap Model` is exposed as a DataProvider. The data
   * provider that the PivotTable consumes needs to be provided as a property value.
   */
  export default class PivotTable extends Control {
    /**
     * Constructor for a new `PivotTable`.
     *
     * 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.
     */
    constructor(
      /**
       * Initial settings for the new control
       */
      mSettings?: $PivotTableSettings
    );
    /**
     * Constructor for a new `PivotTable`.
     *
     * 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.
     */
    constructor(
      /**
       * ID for the new control, generated automatically if no ID is given
       */
      sId?: string,
      /**
       * Initial settings for the new control
       */
      mSettings?: $PivotTableSettings
    );

    /**
     * Creates a new subclass of class sap.sac.df.PivotTable with name `sClassName` and enriches it with the
     * information contained in `oClassInfo`.
     *
     * `oClassInfo` might contain the same kind of information as described in {@link sap.ui.core.Control.extend}.
     *
     * @returns Created class / constructor function
     */
    static extend<T extends Record<string, unknown>>(
      /**
       * Name of the class being created
       */
      sClassName: string,
      /**
       * Object literal with information about the class
       */
      oClassInfo?: sap.ClassInfo<T, PivotTable>,
      /**
       * Constructor function for the metadata object; if not given, it defaults to the metadata implementation
       * used by this class
       */
      FNMetaImpl?: Function
    ): Function;
    /**
     * Returns a metadata object for class sap.sac.df.PivotTable.
     *
     * @returns Metadata object describing this class
     */
    static getMetadata(): ElementMetadata;
    /**
     * Attaches event handler `fnFunction` to the {@link #event:navigationCmd navigationCmd} event of this `sap.sac.df.PivotTable`.
     *
     * When called, the context of the event handler (its `this`) will be bound to `oListener` if specified,
     * otherwise it will be bound to this `sap.sac.df.PivotTable` itself.
     *
     * Fired when a user launches a navigation command
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    attachNavigationCmd(
      /**
       * An application-specific payload object that will be passed to the event handler along with the event
       * object when firing the event
       */
      oData: object,
      /**
       * The function to be called when the event occurs
       */
      fnFunction: (p1: Event) => void,
      /**
       * Context object to call the event handler with. Defaults to this `sap.sac.df.PivotTable` itself
       */
      oListener?: object
    ): this;
    /**
     * Attaches event handler `fnFunction` to the {@link #event:navigationCmd navigationCmd} event of this `sap.sac.df.PivotTable`.
     *
     * When called, the context of the event handler (its `this`) will be bound to `oListener` if specified,
     * otherwise it will be bound to this `sap.sac.df.PivotTable` itself.
     *
     * Fired when a user launches a navigation command
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    attachNavigationCmd(
      /**
       * The function to be called when the event occurs
       */
      fnFunction: (p1: Event) => void,
      /**
       * Context object to call the event handler with. Defaults to this `sap.sac.df.PivotTable` itself
       */
      oListener?: object
    ): this;
    /**
     * Detaches event handler `fnFunction` from the {@link #event:navigationCmd navigationCmd} event of this
     * `sap.sac.df.PivotTable`.
     *
     * The passed function and listener object must match the ones used for event registration.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    detachNavigationCmd(
      /**
       * The function to be called, when the event occurs
       */
      fnFunction: (p1: Event) => void,
      /**
       * Context object on which the given function had to be called
       */
      oListener?: object
    ): this;
    /**
     * Fires event {@link #event:navigationCmd navigationCmd} to attached listeners.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    fireNavigationCmd(
      /**
       * Parameters to pass along with the event
       */
      mParameters?: {
        /**
         * The control in the cell on which the command was initiated
         */
        anchor?: Control;
        /**
         * Type of the navigation command: Context Menu, Drill, Row/Col request, Data Entry
         */
        navigationCmdType?:
          | NavigationCommandType
          | keyof typeof NavigationCommandType;
        /**
         * The Row and Column Selection of the cell on which the command was initiated
         */
        selection?: object;
        /**
         * the function that executed the command. The function will return a Promise that resolves/rejects when
         * the command execution finished.
         */
        cmd?: Function;
      }
    ): this;
    /**
     * Gets current value of property {@link #getDataProviderName dataProviderName}.
     *
     * Name of the Data Provider within {sap.sac.df.olap.OlapModel} with name `om`, which is displayed and available
     * for interactions
     *
     * Default value is `"0"`.
     *
     * @returns Value of property `dataProviderName`
     */
    getDataProviderName(): string;
    /**
     * Gets current value of property {@link #getFormat format}.
     *
     * Property for different table formats
     *
     * Default value is `ExcelStyle`.
     *
     * @returns Value of property `format`
     */
    getFormat(): Format | keyof typeof Format;
    /**
     * Sets a new value for property {@link #getDataProviderName dataProviderName}.
     *
     * Name of the Data Provider within {sap.sac.df.olap.OlapModel} with name `om`, which is displayed and available
     * for interactions
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `"0"`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setDataProviderName(
      /**
       * New value for property `dataProviderName`
       */
      sDataProviderName?: string
    ): this;
    /**
     * Sets a new value for property {@link #getFormat format}.
     *
     * Property for different table formats
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `ExcelStyle`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setFormat(
      /**
       * New value for property `format`
       */
      sFormat?: Format | keyof typeof Format
    ): this;
  }

  export interface $PivotTableSettings extends $ControlSettings {
    /**
     * Name of the Data Provider within {sap.sac.df.olap.OlapModel} with name `om`, which is displayed and available
     * for interactions
     */
    dataProviderName?: string | PropertyBindingInfo;

    /**
     * Property for different table formats
     */
    format?:
      | (Format | keyof typeof Format)
      | PropertyBindingInfo
      | `{${string}}`;

    /**
     * Fired when a user launches a navigation command
     */
    navigationCmd?: (oEvent: Event) => void;
  }
}

declare module "sap/sac/df/types/NavigationCommandType" {
  /**
   * Types of navigation commands.
   */
  enum NavigationCommandType {
    /**
     * Click on a cell
     */
    CellClick = "CellClick",
    /**
     * request for additional columns
     */
    ColumnRequest = "ColumnRequest",
    /**
     * Context menu entry
     */
    ContextMenuCmd = "ContextMenuCmd",
    /**
     * Hierachy drill operation
     */
    HierarchyNavigation = "HierarchyNavigation",
    /**
     * request for additional rows
     */
    RowRequest = "RowRequest",
  }
  export default NavigationCommandType;
}

declare module "sap/sac/df/types/SystemType" {
  /**
   * System Type of an InA System
   */
  enum SystemType {
    /**
     * The ABAP analytic engine
     */
    ABAP_MDS = "ABAP_MDS",
    /**
     * The BW analytic engine
     */
    BW = "BW",
    /**
     * The Data Warehouce Cloud analytic engine
     */
    DWC = "DWC",
    /**
     * The HANA/MDS analytic engine
     */
    HANA = "HANA",
  }
  export default SystemType;
}

declare namespace sap {
  interface IUI5DefineDependencyNames {
    "sap/sac/df/FlexAnalysis": undefined;

    "sap/sac/df/FlexAnalysisPanel": undefined;

    "sap/sac/df/library": undefined;

    "sap/sac/df/olap/DataProvider": undefined;

    "sap/sac/df/olap/MultiDimDataProvider": undefined;

    "sap/sac/df/olap/MultiDimModel": undefined;

    "sap/sac/df/olap/OlapListBinding": undefined;

    "sap/sac/df/olap/OlapListGridBinding": undefined;

    "sap/sac/df/olap/OlapModel": undefined;

    "sap/sac/df/olap/OlapPropertyBinding": undefined;

    "sap/sac/df/PivotTable": undefined;

    "sap/sac/df/types/NavigationCommandType": undefined;

    "sap/sac/df/types/SystemType": undefined;
  }
}
