// For Library Version: 1.96.44

declare namespace sap {
  namespace ui {
    namespace webc {
      /**
       * @SINCE 1.92.0
       * @EXPERIMENTAL (since 1.92.0)
       *
       * UI5 library: sap.ui.webc.common
       */
      namespace common {
        interface $WebComponentSettings extends sap.ui.core.$ControlSettings {}

        /**
         * @SINCE 1.92.0
         * @EXPERIMENTAL (since 1.92.0)
         *
         * 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.
         */
        class WebComponent extends sap.ui.core.Control {
          /**
           * Constructs and initializes a Web Component Wrapper with the given `sId` and settings.
           *
           * 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.
           *
           * This class does not have its own settings, but all settings applicable to the base type {@link sap.ui.core.Control#constructor
           * sap.ui.core.Control} can be used.
           */
          constructor();

          /**
           * Creates a new subclass of class sap.ui.webc.common.WebComponent 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}.
           */
          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, sap.ui.webc.common.WebComponent>,
            /**
             * 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.ui.webc.common.WebComponent.
           */
          static getMetadata(): sap.ui.webc.common.WebComponentMetadata;
        }
        /**
         * @SINCE 1.92.0
         * @EXPERIMENTAL (since 1.92.0)
         */
        class WebComponentMetadata extends sap.ui.core.ElementMetadata {
          /**
           * 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
          );

          /**
           * Returns the list of public getters, proxied by the Component Wrapper to the component itself
           */
          getGetters(): any[];
          /**
           * Returns the list of public methods, proxied by the Component Wrapper to the component itself
           */
          getMethods(): any[];
          /**
           * Retrieves the renderer for the described web component class. Note: this is always the default renderer
           * and Web Component wrappers should not define their own renderers.
           */
          getRenderer(): void;
          /**
           * Returns the tag, used to render the Component Wrapper
           */
          getTag(): string;
        }
      }
    }
  }

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

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

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