// For Library Version: 1.136.16

declare namespace sap {
  namespace ui {
    /**
     * Namespace for UI5 Web Components Retrofit libraries
     *
     * @since 1.92.0
     * @deprecated As of version 1.120. this Web Components consumption model has been discarded. An alternative
     * consumption model is planned for the future.
     * @experimental As of version 1.92.0.
     */
    namespace webc {
      /**
       * UI5 library: sap.ui.webc.common
       *
       * @since 1.92.0
       * @deprecated As of version 1.120. this Web Components consumption model has been discarded. An alternative
       * consumption model is planned for the future.
       * @experimental As of version 1.92.0.
       */
      namespace common {
        namespace WebComponent {
          /**
           * The structure of the "metadata" object which is passed when inheriting from sap.ui.core.Element using
           * its static "extend" method. See {@link sap.ui.core.Element.extend} for details on its usage.
           *
           * @deprecated As of version 1.118.0. because it is part of the deprecated package sap.ui.webc.common.WebComponent
           */
          type MetadataOptions = sap.ui.core.webc.WebComponent.MetadataOptions;
        }
        /**
         * Describes the settings that can be provided to the WebComponent constructor.
         *
         * @deprecated As of version 1.118.0. Use sap.ui.core.webc.WebComponent instead!
         * @experimental As of version 1.92.0. The API might change. It is not intended for productive usage yet!
         */
        interface $WebComponentSettings
          extends sap.ui.core.webc.$WebComponentSettings {}

        /**
         * Base Class for Web Components. Web Components are agnostic UI elements which can be integrated into the
         * UI5 programming model by using this wrapper control. This wrapper control takes care to propagate the
         * properties, the aggregations and the events. It also ensures to render the control and put the aggregated
         * controls in the dedicated slots of the Web Component.
         *
         * @since 1.92.0
         * @deprecated As of version 1.118.0. Use sap.ui.core.webc.WebComponent instead!
         * @experimental As of version 1.92.0. The API might change. It is not intended for productive usage yet!
         */
        class WebComponent extends sap.ui.core.webc.WebComponent {
          /**
           * Constructs and initializes a Web Component Wrapper with the given `sId` and settings.
           */
          constructor(
            /**
             * Object with initial settings for the new control
             */
            mSettings?: sap.ui.webc.common.$WebComponentSettings
          );
          /**
           * Constructs and initializes a Web Component Wrapper with the given `sId` and settings.
           */
          constructor(
            /**
             * Optional ID for the new control; generated automatically if no non-empty ID is given Note: this can be
             * omitted, no matter whether `mSettings` will be given or not!
             */
            sId?: string,
            /**
             * Object with initial settings for the new control
             */
            mSettings?: sap.ui.webc.common.$WebComponentSettings
          );

          /**
           * Defines a new subclass of WebComponent with the name `sClassName` and enriches it with the information
           * contained in `oClassInfo`.
           *
           * `oClassInfo` can contain the same information that {@link sap.ui.base.ManagedObject.extend} already accepts,
           * plus the `dnd` property in the metadata object literal to configure drag-and-drop behavior (see {@link sap.ui.core.webc.WebComponent.MetadataOptions MetadataOptions }
           * for details). Objects describing aggregations can also have a `dnd` property when used for a class extending
           * `WebComponent` (see {@link sap.ui.base.ManagedObject.MetadataOptions.AggregationDnD AggregationDnD}).
           *
           * Example:
           * ```javascript
           *
           * WebComponent.extend('sap.mylib.MyElement', {
           *   metadata : {
           *     library : 'sap.mylib',
           *     tag : 'my-webcomponent',
           *     properties : {
           *       value : 'string',
           *       width : {
           *         type: 'sap.ui.core.CSSSize',
           *         mapping: 'style'
           *       }
           *     },
           *     defaultAggregation: "content",
           *     aggregations : {
           *       content : {
           *         type: 'sap.ui.core.Control',
           *         multiple : true
           *       },
           *       header : {
           *         type : 'sap.ui.core.Control',
           *         multiple : false,
           *         slot: 'header'
           *       }
           *     }
           *   }
           * });
           * ```
           *
           *
           *
           * @returns Created class / constructor function
           */
          static extend<T extends Record<string, unknown>>(
            /**
             * Name of the class to be created
             */
            sClassName: string,
            /**
             * Object literal with information about the class
             */
            oClassInfo?: sap.ClassInfo<T, sap.ui.webc.common.WebComponent>,
            /**
             * Constructor function for the metadata object. If not given, it defaults to `sap.ui.core.ElementMetadata`.
             */
            FNMetaImpl?: Function
          ): Function;
          /**
           * Returns a metadata object for class sap.ui.webc.common.WebComponent.
           *
           *
           * @returns Metadata object describing this class
           */
          static getMetadata(): sap.ui.webc.common.WebComponentMetadata;
        }
        /**
         * @since 1.92.0
         * @deprecated As of version 1.118.0. Use sap.ui.core.webc.WebComponentMetadata instead!
         * @experimental As of version 1.92.0. The API might change. It is not intended for productive usage yet!
         */
        class WebComponentMetadata extends sap.ui.core.webc
          .WebComponentMetadata {
          /**
           * Creates a new metadata object for a WebComponent Wrapper subclass.
           */
          constructor(
            /**
             * fully qualified name of the class that is described by this metadata object
             */
            sClassName: string,
            /**
             * static info to construct the metadata from
             */
            oClassInfo: object
          );
        }
      }
    }
  }

  interface IUI5DefineDependencyNames {
    "sap/ui/webc/common/library": undefined;

    "sap/ui/webc/common/WebComponent": undefined;

    "sap/ui/webc/common/WebComponentMetadata": undefined;
  }
}
