// For Library Version: 1.108.7

declare module "sap/esh/search/ui/library" {}

declare module "sap/esh/search/ui/SearchCompositeControl" {
  import { default as Control, $ControlSettings } from "sap/ui/core/Control";

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

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

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

  /**
   * @SINCE 1.93.0
   *
   * This is the SAPUI5 composite control by the Enterprise Search Team which helps to make full use of the
   * Enterprise Search Engine features built into ABAP and HANA. It includes a search input box including
   * a suggestion dropdown, a result list which can have different styles including tiles and table, result
   * facets and more. This control is ready to use with an enterprise search backend service but also allows
   * deep modifications to match requirements of adopting applications.
   */
  export default class SearchCompositeControl extends Control {
    /**
     * Constructs a new `SearchCompositeControl` to interact with SAP Enterprise Search Services.
     * See:
     * 	https://help.sap.com/viewer/691cb949c1034198800afde3e5be6570/2.0.05/en-US/ce86ef2fd97610149eaaaa0244ca4d36.html
     * 	https://help.sap.com/viewer/6522d0462aeb4909a79c3462b090ec51/1709%20002/en-US
     */
    constructor(
      /**
       * Initial settings for the new control
       */
      mSettings?: $SearchCompositeControlSettings
    );
    /**
     * Constructs a new `SearchCompositeControl` to interact with SAP Enterprise Search Services.
     * See:
     * 	https://help.sap.com/viewer/691cb949c1034198800afde3e5be6570/2.0.05/en-US/ce86ef2fd97610149eaaaa0244ca4d36.html
     * 	https://help.sap.com/viewer/6522d0462aeb4909a79c3462b090ec51/1709%20002/en-US
     */
    constructor(
      /**
       * ID for the new control, generated automatically if no ID is given
       */
      sId?: string,
      /**
       * Initial settings for the new control
       */
      mSettings?: $SearchCompositeControlSettings
    );

    /**
     * Creates a new subclass of class sap.esh.search.ui.SearchCompositeControl 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, SearchCompositeControl>,
      /**
       * 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.esh.search.ui.SearchCompositeControl.
     *
     * @returns Metadata object describing this class
     */
    static getMetadata(): ElementMetadata;
    /**
     * Adds some content to the aggregation {@link #getContent content}.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    addContent(
      /**
       * The content to add; if empty, nothing is inserted
       */
      oContent: Control
    ): this;
    /**
     * Attaches event handler `fnFunction` to the {@link #event:searchFinished searchFinished} event of this
     * `sap.esh.search.ui.SearchCompositeControl`.
     *
     * 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.esh.search.ui.SearchCompositeControl` itself.
     *
     * Event is fired when search is finished.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    attachSearchFinished(
      /**
       * 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.esh.search.ui.SearchCompositeControl`
       * itself
       */
      oListener?: object
    ): this;
    /**
     * Attaches event handler `fnFunction` to the {@link #event:searchFinished searchFinished} event of this
     * `sap.esh.search.ui.SearchCompositeControl`.
     *
     * 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.esh.search.ui.SearchCompositeControl` itself.
     *
     * Event is fired when search is finished.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    attachSearchFinished(
      /**
       * 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.esh.search.ui.SearchCompositeControl`
       * itself
       */
      oListener?: object
    ): this;
    /**
     * Attaches event handler `fnFunction` to the {@link #event:searchStarted searchStarted} event of this `sap.esh.search.ui.SearchCompositeControl`.
     *
     * 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.esh.search.ui.SearchCompositeControl` itself.
     *
     * Event is fired when search is started.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    attachSearchStarted(
      /**
       * 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.esh.search.ui.SearchCompositeControl`
       * itself
       */
      oListener?: object
    ): this;
    /**
     * Attaches event handler `fnFunction` to the {@link #event:searchStarted searchStarted} event of this `sap.esh.search.ui.SearchCompositeControl`.
     *
     * 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.esh.search.ui.SearchCompositeControl` itself.
     *
     * Event is fired when search is started.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    attachSearchStarted(
      /**
       * 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.esh.search.ui.SearchCompositeControl`
       * itself
       */
      oListener?: object
    ): this;
    /**
     * Destroys all the content in the aggregation {@link #getContent content}.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    destroyContent(): this;
    /**
     * Detaches event handler `fnFunction` from the {@link #event:searchFinished searchFinished} event of this
     * `sap.esh.search.ui.SearchCompositeControl`.
     *
     * The passed function and listener object must match the ones used for event registration.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    detachSearchFinished(
      /**
       * 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;
    /**
     * Detaches event handler `fnFunction` from the {@link #event:searchStarted searchStarted} event of this
     * `sap.esh.search.ui.SearchCompositeControl`.
     *
     * The passed function and listener object must match the ones used for event registration.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    detachSearchStarted(
      /**
       * 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:searchFinished searchFinished} to attached listeners.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    fireSearchFinished(
      /**
       * Parameters to pass along with the event
       */
      mParameters?: object
    ): this;
    /**
     * Fires event {@link #event:searchStarted searchStarted} to attached listeners.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    fireSearchStarted(
      /**
       * Parameters to pass along with the event
       */
      mParameters?: object
    ): this;
    /**
     * @SINCE 1.103.0
     *
     * Gets current value of property {@link #getAssembleSearchCountBreadcrumbs assembleSearchCountBreadcrumbs}.
     *
     * Function callback for assembling the search count breadcumbs. The function callback shall return a control
     * which is displayed on the top of the result list. Typically this is used for displaying the total count.
     *
     * @returns Value of property `assembleSearchCountBreadcrumbs`
     */
    getAssembleSearchCountBreadcrumbs(): Function;
    /**
     * @SINCE 1.106.0
     *
     * Gets current value of property {@link #getAutoAdjustResultViewTypeInFolderMode autoAdjustResultViewTypeInFolderMode}.
     *
     * In case folder mode is active: Automatically switch result view type to list in search mode and to table
     * in folder mode.
     *
     * Default value is `false`.
     *
     * @returns Value of property `autoAdjustResultViewTypeInFolderMode`
     */
    getAutoAdjustResultViewTypeInFolderMode(): boolean;
    /**
     * Gets content of aggregation {@link #getContent content}.
     *
     * Control instances which are part of this composite control.
     */
    getContent(): Control[];
    /**
     * @SINCE 1.93.0
     *
     * Gets current value of property {@link #getCssClass cssClass}.
     *
     * An additional CSS class to add to this control
     *
     * @returns Value of property `cssClass`
     */
    getCssClass(): string;
    /**
     * @SINCE 1.98.0
     *
     * Gets current value of property {@link #getDataSource dataSource}.
     *
     * The id of the data source in which it will search right after initialization.
     *
     * @returns Value of property `dataSource`
     */
    getDataSource(): string;
    /**
     * @SINCE 1.107.0
     *
     * Gets current value of property {@link #getEnableQueryLanguage enableQueryLanguage}.
     *
     * Enables the query language for the hana_odata provider. With query language it is possible for the end
     * user to enter complex search queries with logical operators.
     *
     * Default value is `false`.
     *
     * @returns Value of property `enableQueryLanguage`
     */
    getEnableQueryLanguage(): boolean;
    /**
     * @SINCE 1.98.0
     *
     * Gets current value of property {@link #getFilterRootCondition filterRootCondition}.
     *
     * Defines the filter root condition of a filter tree which shall be applied to the search request. This
     * control only allows filter trees which have a the following structure: complex condition (root level)
     * \ complex condition (attribute level) \ simple condition (attribute value level) Filter root conditions
     * which do not follow this structure won't be accepted and an error will be thrown. Please see the below
     * for a more in-depth example.
     *
     * @returns Value of property `filterRootCondition`
     */
    getFilterRootCondition(): object;
    /**
     * @SINCE 1.106.0
     *
     * Gets current value of property {@link #getFolderMode folderMode}.
     *
     * Activates the folder mode. Precondition for folder mode is 1) Search model: In the search model for the
     * current datasource a hierarchy attribute (representing the folders) is defined 1.1) the hierarchy attribute
     * is annotated with displayType=TREE and for the hierarchy there is a helper connector representing the
     * hierarchy or 1.2) the current datasource is the helper datasource representing the folder hierarchy.
     * The hierarchy attribute is annotated with displayType=FLAT 2) Search query: The folder mode is only active
     * in case the search query has an empty search term and no filter conditions (except the hierarchy attribute)
     * are set.
     *
     * In folder mode and in case a folder filter is set the result view only shows direct children of a folder.
     * In contrast the counts in the facets are calculated by counting direct and not direct children. In case
     * the folder mode is not active the UI uses the search mode: The result list shows direct and not direct
     * children of a folder.
     *
     * @returns Value of property `folderMode`
     */
    getFolderMode(): boolean;
    /**
     * @SINCE 1.100.0
     *
     * Gets current value of property {@link #getResultViewSettings resultViewSettings}.
     *
     * Defines a pair of search result view settings. The value is an object of properties `resultViewTypes`
     * and `resultViewType`. An example: `{resultViewTypes: ["searchResultList", "searchResultTable"], resultViewType:
     * "searchResultList"}` Find more detail in the definition of each child property. The value can be set/get
     * in attached event "searchFinished". Function `setResultViewSettings` prevents incompatibility of sequential
     * execution of functions `setResultViewTypes` and `setResultViewType`. Note: The value of `resultViewTypes`
     * and `resultViewType` must be compatible to each other.
     *
     * Default value is `...see text or source`.
     *
     * @returns Value of property `resultViewSettings`
     */
    getResultViewSettings(): string;
    /**
     * @SINCE 1.98.0
     *
     * Gets current value of property {@link #getResultViewType resultViewType}.
     *
     * Defines active search result view type. The value can be set/get in attach event "searchFinished", and
     * it must be contained in resultViewTypes. Case 1, Search in Apps: result is displayed in a mandatory view
     * type `"appSearchResult"`. Case 2.1, Search in All or other Category (configuration.isUshell !== true):
     * result is switchable between different view types. Possible value is `"searchResultList"`, or `"searchResultGrid"`.
     * Case 2.2, Search in All or other Category (configuration.isUshell === true): result is displayed in a
     * mandatory view type `"searchResultList"`. Case 3, Search in Business Object: result is switchable between
     * different view types. Possible value is `"searchResultList"`, `"searchResultTable"` or `"searchResultGrid"`.
     * Note: The value of `resultViewTypes` and `resultViewType` must be compatible to each other.
     *
     * Default value is `"searchResultList"`.
     *
     * @returns Value of property `resultViewType`
     */
    getResultViewType(): string;
    /**
     * @SINCE 1.98.0
     *
     * Gets current value of property {@link #getResultViewTypes resultViewTypes}.
     *
     * Defines selectable search result view types. The value can be set/get in attach event "searchFinished".
     * Case 1: Search in Apps: result is displayed in a mandatory view type `["appSearchResult"]`, and it is
     * not switchable. Case 2: Search in All or other Category: result is switchable between different view
     * types. Possible values for the array items are `"searchResultList"` and `"searchResultGrid"`. Case 3,
     * Search in Business Object: result is switchable between different view types. Possible values for the
     * array items are `"searchResultList"`, `"searchResultTable"` and `"searchResultGrid"`. Note: The value
     * of `resultViewTypes` and `resultViewType` must be compatible to each other.
     *
     * Default value is `["searchResultList", "searchResultTable"]`.
     *
     * @returns Value of property `resultViewTypes`
     */
    getResultViewTypes(): string[];
    /**
     * @SINCE 1.93.0
     *
     * Gets current value of property {@link #getSearchOnStart searchOnStart}.
     *
     * Defines if the search control will search for the given term right on control instantiation.
     *
     * Default value is `true`.
     *
     * @returns Value of property `searchOnStart`
     */
    getSearchOnStart(): boolean;
    /**
     * @SINCE 1.93.0
     *
     * Gets current value of property {@link #getSearchTerm searchTerm}.
     *
     * Defines the initial search term for the search input.
     *
     * Default value is `empty string`.
     *
     * @returns Value of property `searchTerm`
     */
    getSearchTerm(): string;
    /**
     * @SINCE 1.93.0
     *
     * Gets current value of property {@link #getSinaConfiguration sinaConfiguration}.
     *
     * Configuration for the Enterprise Search Client API.
     *
     * @returns Value of property `sinaConfiguration`
     */
    getSinaConfiguration(): object;
    /**
     * @SINCE 1.103.0
     *
     * Gets current value of property {@link #getTabStripsFormatter tabStripsFormatter}.
     *
     * Function callback for formatting the datasource tabstrips in the top toolbar. To the callback function
     * a list of datasources is passed. The callback functions return a modified list of datasources to be displayed
     * in the tabstrips.
     *
     * @returns Value of property `tabStripsFormatter`
     */
    getTabStripsFormatter(): Function;
    /**
     * Checks for the provided `sap.ui.core.Control` in the aggregation {@link #getContent content}. and returns
     * its index if found or -1 otherwise.
     *
     * @returns The index of the provided control in the aggregation if found, or -1 otherwise
     */
    indexOfContent(
      /**
       * The content whose index is looked for
       */
      oContent: Control
    ): int;
    /**
     * Inserts a content into the aggregation {@link #getContent content}.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    insertContent(
      /**
       * The content to insert; if empty, nothing is inserted
       */
      oContent: Control,
      /**
       * The `0`-based index the content should be inserted at; for a negative value of `iIndex`, the content
       * is inserted at position 0; for a value greater than the current size of the aggregation, the content
       * is inserted at the last position
       */
      iIndex: int
    ): this;
    /**
     * Removes all the controls from the aggregation {@link #getContent content}.
     *
     * Additionally, it unregisters them from the hosting UIArea.
     *
     * @returns An array of the removed elements (might be empty)
     */
    removeAllContent(): Control[];
    /**
     * Removes a content from the aggregation {@link #getContent content}.
     *
     * @returns The removed content or `null`
     */
    removeContent(
      /**
       * The content to remove or its index or id
       */
      vContent: int | string | Control
    ): Control | null;
    /**
     * @SINCE 1.103.0
     *
     * Sets a new value for property {@link #getAssembleSearchCountBreadcrumbs assembleSearchCountBreadcrumbs}.
     *
     * Function callback for assembling the search count breadcumbs. The function callback shall return a control
     * which is displayed on the top of the result list. Typically this is used for displaying the total count.
     *
     * 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
     */
    setAssembleSearchCountBreadcrumbs(
      /**
       * New value for property `assembleSearchCountBreadcrumbs`
       */
      fnAssembleSearchCountBreadcrumbs: Function
    ): this;
    /**
     * @SINCE 1.106.0
     *
     * Sets a new value for property {@link #getAutoAdjustResultViewTypeInFolderMode autoAdjustResultViewTypeInFolderMode}.
     *
     * In case folder mode is active: Automatically switch result view type to list in search mode and to table
     * in folder mode.
     *
     * 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
     */
    setAutoAdjustResultViewTypeInFolderMode(
      /**
       * New value for property `autoAdjustResultViewTypeInFolderMode`
       */
      bAutoAdjustResultViewTypeInFolderMode?: boolean
    ): this;
    /**
     * @SINCE 1.93.0
     *
     * Sets a new value for property {@link #getCssClass cssClass}.
     *
     * An additional CSS class to add to this control
     *
     * 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
     */
    setCssClass(
      /**
       * New value for property `cssClass`
       */
      sCssClass: string
    ): this;
    /**
     * @SINCE 1.98.0
     *
     * Sets a new value for property {@link #getDataSource dataSource}.
     *
     * The id of the data source in which it will search right after initialization.
     *
     * 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
     */
    setDataSource(
      /**
       * New value for property `dataSource`
       */
      sDataSource: string
    ): this;
    /**
     * @SINCE 1.107.0
     *
     * Sets a new value for property {@link #getEnableQueryLanguage enableQueryLanguage}.
     *
     * Enables the query language for the hana_odata provider. With query language it is possible for the end
     * user to enter complex search queries with logical operators.
     *
     * 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
     */
    setEnableQueryLanguage(
      /**
       * New value for property `enableQueryLanguage`
       */
      bEnableQueryLanguage?: boolean
    ): this;
    /**
     * @SINCE 1.98.0
     *
     * Sets a new value for property {@link #getFilterRootCondition filterRootCondition}.
     *
     * Defines the filter root condition of a filter tree which shall be applied to the search request. This
     * control only allows filter trees which have a the following structure: complex condition (root level)
     * \ complex condition (attribute level) \ simple condition (attribute value level) Filter root conditions
     * which do not follow this structure won't be accepted and an error will be thrown. Please see the below
     * for a more in-depth example.
     *
     * 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
     */
    setFilterRootCondition(
      /**
       * New value for property `filterRootCondition`
       */
      oFilterRootCondition: object
    ): this;
    /**
     * @SINCE 1.106.0
     *
     * Sets a new value for property {@link #getFolderMode folderMode}.
     *
     * Activates the folder mode. Precondition for folder mode is 1) Search model: In the search model for the
     * current datasource a hierarchy attribute (representing the folders) is defined 1.1) the hierarchy attribute
     * is annotated with displayType=TREE and for the hierarchy there is a helper connector representing the
     * hierarchy or 1.2) the current datasource is the helper datasource representing the folder hierarchy.
     * The hierarchy attribute is annotated with displayType=FLAT 2) Search query: The folder mode is only active
     * in case the search query has an empty search term and no filter conditions (except the hierarchy attribute)
     * are set.
     *
     * In folder mode and in case a folder filter is set the result view only shows direct children of a folder.
     * In contrast the counts in the facets are calculated by counting direct and not direct children. In case
     * the folder mode is not active the UI uses the search mode: The result list shows direct and not direct
     * children of a folder.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setFolderMode(
      /**
       * New value for property `folderMode`
       */
      bFolderMode?: boolean
    ): this;
    /**
     * @SINCE 1.100.0
     *
     * Sets a new value for property {@link #getResultViewSettings resultViewSettings}.
     *
     * Defines a pair of search result view settings. The value is an object of properties `resultViewTypes`
     * and `resultViewType`. An example: `{resultViewTypes: ["searchResultList", "searchResultTable"], resultViewType:
     * "searchResultList"}` Find more detail in the definition of each child property. The value can be set/get
     * in attached event "searchFinished". Function `setResultViewSettings` prevents incompatibility of sequential
     * execution of functions `setResultViewTypes` and `setResultViewType`. Note: The value of `resultViewTypes`
     * and `resultViewType` must be compatible to each other.
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `...see text or source`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setResultViewSettings(
      /**
       * New value for property `resultViewSettings`
       */
      sResultViewSettings?: string
    ): this;
    /**
     * @SINCE 1.98.0
     *
     * Sets a new value for property {@link #getResultViewType resultViewType}.
     *
     * Defines active search result view type. The value can be set/get in attach event "searchFinished", and
     * it must be contained in resultViewTypes. Case 1, Search in Apps: result is displayed in a mandatory view
     * type `"appSearchResult"`. Case 2.1, Search in All or other Category (configuration.isUshell !== true):
     * result is switchable between different view types. Possible value is `"searchResultList"`, or `"searchResultGrid"`.
     * Case 2.2, Search in All or other Category (configuration.isUshell === true): result is displayed in a
     * mandatory view type `"searchResultList"`. Case 3, Search in Business Object: result is switchable between
     * different view types. Possible value is `"searchResultList"`, `"searchResultTable"` or `"searchResultGrid"`.
     * Note: The value of `resultViewTypes` and `resultViewType` must be compatible to each other.
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `"searchResultList"`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setResultViewType(
      /**
       * New value for property `resultViewType`
       */
      sResultViewType?: string
    ): this;
    /**
     * @SINCE 1.98.0
     *
     * Sets a new value for property {@link #getResultViewTypes resultViewTypes}.
     *
     * Defines selectable search result view types. The value can be set/get in attach event "searchFinished".
     * Case 1: Search in Apps: result is displayed in a mandatory view type `["appSearchResult"]`, and it is
     * not switchable. Case 2: Search in All or other Category: result is switchable between different view
     * types. Possible values for the array items are `"searchResultList"` and `"searchResultGrid"`. Case 3,
     * Search in Business Object: result is switchable between different view types. Possible values for the
     * array items are `"searchResultList"`, `"searchResultTable"` and `"searchResultGrid"`. Note: The value
     * of `resultViewTypes` and `resultViewType` must be compatible to each other.
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `["searchResultList", "searchResultTable"]`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setResultViewTypes(
      /**
       * New value for property `resultViewTypes`
       */
      sResultViewTypes?: string[]
    ): this;
    /**
     * @SINCE 1.93.0
     *
     * Sets a new value for property {@link #getSearchOnStart searchOnStart}.
     *
     * Defines if the search control will search for the given term right on control instantiation.
     *
     * 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
     */
    setSearchOnStart(
      /**
       * New value for property `searchOnStart`
       */
      bSearchOnStart?: boolean
    ): this;
    /**
     * @SINCE 1.93.0
     *
     * Sets a new value for property {@link #getSearchTerm searchTerm}.
     *
     * Defines the initial search term for the search input.
     *
     * When called with a value of `null` or `undefined`, the default value of the property will be restored.
     *
     * Default value is `empty string`.
     *
     * @returns Reference to `this` in order to allow method chaining
     */
    setSearchTerm(
      /**
       * New value for property `searchTerm`
       */
      sSearchTerm?: string
    ): this;
    /**
     * @SINCE 1.93.0
     *
     * Sets a new value for property {@link #getSinaConfiguration sinaConfiguration}.
     *
     * Configuration for the Enterprise Search Client API.
     *
     * 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
     */
    setSinaConfiguration(
      /**
       * New value for property `sinaConfiguration`
       */
      oSinaConfiguration: object
    ): this;
    /**
     * @SINCE 1.103.0
     *
     * Sets a new value for property {@link #getTabStripsFormatter tabStripsFormatter}.
     *
     * Function callback for formatting the datasource tabstrips in the top toolbar. To the callback function
     * a list of datasources is passed. The callback functions return a modified list of datasources to be displayed
     * in the tabstrips.
     *
     * 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
     */
    setTabStripsFormatter(
      /**
       * New value for property `tabStripsFormatter`
       */
      fnTabStripsFormatter: Function
    ): this;
  }

  export interface $SearchCompositeControlSettings extends $ControlSettings {
    /**
     * @SINCE 1.93.0
     *
     * An additional CSS class to add to this control
     */
    cssClass?: string | PropertyBindingInfo;

    /**
     * @SINCE 1.93.0
     *
     * Defines the initial search term for the search input.
     */
    searchTerm?: string | PropertyBindingInfo;

    /**
     * @SINCE 1.93.0
     *
     * Defines if the search control will search for the given term right on control instantiation.
     */
    searchOnStart?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * @SINCE 1.98.0
     *
     * Defines the filter root condition of a filter tree which shall be applied to the search request. This
     * control only allows filter trees which have a the following structure: complex condition (root level)
     * \ complex condition (attribute level) \ simple condition (attribute value level) Filter root conditions
     * which do not follow this structure won't be accepted and an error will be thrown. Please see the below
     * for a more in-depth example.
     */
    filterRootCondition?: object | PropertyBindingInfo | `{${string}}`;

    /**
     * @SINCE 1.93.0
     *
     * Configuration for the Enterprise Search Client API.
     */
    sinaConfiguration?: object | PropertyBindingInfo | `{${string}}`;

    /**
     * @SINCE 1.98.0
     *
     * The id of the data source in which it will search right after initialization.
     */
    dataSource?: string | PropertyBindingInfo;

    /**
     * @SINCE 1.98.0
     *
     * Defines selectable search result view types. The value can be set/get in attach event "searchFinished".
     * Case 1: Search in Apps: result is displayed in a mandatory view type `["appSearchResult"]`, and it is
     * not switchable. Case 2: Search in All or other Category: result is switchable between different view
     * types. Possible values for the array items are `"searchResultList"` and `"searchResultGrid"`. Case 3,
     * Search in Business Object: result is switchable between different view types. Possible values for the
     * array items are `"searchResultList"`, `"searchResultTable"` and `"searchResultGrid"`. Note: The value
     * of `resultViewTypes` and `resultViewType` must be compatible to each other.
     */
    resultViewTypes?: string[] | PropertyBindingInfo | `{${string}}`;

    /**
     * @SINCE 1.98.0
     *
     * Defines active search result view type. The value can be set/get in attach event "searchFinished", and
     * it must be contained in resultViewTypes. Case 1, Search in Apps: result is displayed in a mandatory view
     * type `"appSearchResult"`. Case 2.1, Search in All or other Category (configuration.isUshell !== true):
     * result is switchable between different view types. Possible value is `"searchResultList"`, or `"searchResultGrid"`.
     * Case 2.2, Search in All or other Category (configuration.isUshell === true): result is displayed in a
     * mandatory view type `"searchResultList"`. Case 3, Search in Business Object: result is switchable between
     * different view types. Possible value is `"searchResultList"`, `"searchResultTable"` or `"searchResultGrid"`.
     * Note: The value of `resultViewTypes` and `resultViewType` must be compatible to each other.
     */
    resultViewType?: string | PropertyBindingInfo;

    /**
     * @SINCE 1.100.0
     *
     * Defines a pair of search result view settings. The value is an object of properties `resultViewTypes`
     * and `resultViewType`. An example: `{resultViewTypes: ["searchResultList", "searchResultTable"], resultViewType:
     * "searchResultList"}` Find more detail in the definition of each child property. The value can be set/get
     * in attached event "searchFinished". Function `setResultViewSettings` prevents incompatibility of sequential
     * execution of functions `setResultViewTypes` and `setResultViewType`. Note: The value of `resultViewTypes`
     * and `resultViewType` must be compatible to each other.
     */
    resultViewSettings?: string | PropertyBindingInfo;

    /**
     * @SINCE 1.103.0
     *
     * Function callback for formatting the datasource tabstrips in the top toolbar. To the callback function
     * a list of datasources is passed. The callback functions return a modified list of datasources to be displayed
     * in the tabstrips.
     */
    tabStripsFormatter?: Function | PropertyBindingInfo | `{${string}}`;

    /**
     * @SINCE 1.103.0
     *
     * Function callback for assembling the search count breadcumbs. The function callback shall return a control
     * which is displayed on the top of the result list. Typically this is used for displaying the total count.
     */
    assembleSearchCountBreadcrumbs?:
      | Function
      | PropertyBindingInfo
      | `{${string}}`;

    /**
     * Activates the folder mode. Precondition for folder mode is 1) Search model: In the search model for the
     * current datasource a hierarchy attribute (representing the folders) is defined 1.1) the hierarchy attribute
     * is annotated with displayType=TREE and for the hierarchy there is a helper connector representing the
     * hierarchy or 1.2) the current datasource is the helper datasource representing the folder hierarchy.
     * The hierarchy attribute is annotated with displayType=FLAT 2) Search query: The folder mode is only active
     * in case the search query has an empty search term and no filter conditions (except the hierarchy attribute)
     * are set.
     *
     * In folder mode and in case a folder filter is set the result view only shows direct children of a folder.
     * In contrast the counts in the facets are calculated by counting direct and not direct children. In case
     * the folder mode is not active the UI uses the search mode: The result list shows direct and not direct
     * children of a folder. * @since 1.106.0
     */
    folderMode?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * @SINCE 1.106.0
     *
     * In case folder mode is active: Automatically switch result view type to list in search mode and to table
     * in folder mode.
     */
    autoAdjustResultViewTypeInFolderMode?:
      | boolean
      | PropertyBindingInfo
      | `{${string}}`;

    /**
     * @SINCE 1.107.0
     *
     * Enables the query language for the hana_odata provider. With query language it is possible for the end
     * user to enter complex search queries with logical operators.
     */
    enableQueryLanguage?: boolean | PropertyBindingInfo | `{${string}}`;

    /**
     * Control instances which are part of this composite control.
     */
    content?: Control[] | Control | AggregationBindingInfo | `{${string}}`;

    /**
     * Event is fired when search is started.
     */
    searchStarted?: (oEvent: Event) => void;

    /**
     * Event is fired when search is finished.
     */
    searchFinished?: (oEvent: Event) => void;
  }
}

declare namespace sap {
  interface IUI5DefineDependencyNames {
    "sap/esh/search/ui/library": undefined;

    "sap/esh/search/ui/SearchCompositeControl": undefined;
  }
}
