declare module '@ember/component' {
  /**
      @module @ember/component
      @public
     */
  export { setComponentTemplate, getComponentTemplate } from '@glimmer/manager';
  export { Component as default, Input, Textarea } from '@ember/-internals/glimmer';
  export {
    componentCapabilities as capabilities,
    setComponentManager,
  } from '@ember/-internals/glimmer';
  /**
   * Assigns a TemplateFactory to a component class.
   *
   * @method setComponentTemplate
   * @static
   * @for @ember/component
   * @public
   *
   * ```js
   * import Component from '@glimmer/component';
   * import { hbs } from 'ember-cli-htmlbars';
   * import { setComponentTemplate } from '@ember/component';
   *
   * export default class Demo extends Component {
   *   // ...
   * }
   *
   * setComponentTemplate(hbs`
   *  <div>my template</div>
   * `, Demo);
   * ```
   *
   * @param {TemplateFactory} templateFactory
   * @param {object} componentDefinition
   */
  /**
   * Returns the TemplateFactory associated with a component
   *
   * @method getComponentTemplate
   * @static
   * @for @ember/component
   * @public
   *
   * ```js
   * import Component from '@glimmer/component';
   * import { hbs } from 'ember-cli-htmlbars';
   * import { getComponentTemplate } from '@ember/component';
   *
   * export default class Demo extends Component {
   *   // ...
   * }
   *
   * let theTemplateFactory = getTemplateFactory(Demo)
   * ```
   *
   * @param {object} componentDefinition
   * @returns {TemplateFactory}
   */
  /**
   * Tell the VM how manage a type of object / class when encountered
   * via component-invocation.
   *
   * A Component Manager, must implement this interface:
   * - static create()
   * - createComponent()
   * - updateComponent()
   * - destroyComponent()
   * - getContext()
   *
   * @method setComponentManager
   * @static
   * @for @ember/component
   * @public
   *
   *
   * After a component manager is registered via `setComponentManager`,
   *
   * ```js
   * import { StateNode } from 'xstate';
   * import ComponentManager from './-private/statechart-manager';
   *
   * setComponentManager((owner) => ComponentManager.create(owner), StateNode.prototype);
   * ```
   *
   * Instances of the class can be used as component.
   * No need to extend from `@glimmer/component`.
   *
   * ```js
   * // app/components/my-component.js
   * import { createMachine } from 'xstate';
   *
   * export default createMachine({ ... });
   * ```
   * ```hbs
   * {{!-- app/templates/application.hbs}}
   * <MyComponent />
   * ```
   *
   * @param {(owner: Owner) => import('@glimmer/interfaces').ComponentManager} managerFactory
   * @param {object} object that will be managed by the return value of `managerFactory`
   *
   */
  /**
   * Tells Glimmer what capabilities a Component Manager will have
   *
   * ```js
   * import { capabilities } from '@ember/component';
   *
   * export class MyComponentManager {
   *   capabilities = capabilities('3.13', {
   *     // capabilities listed here
   *   })
   * }
   * ```
   *
   *
   * For a full list of capabilities, their defaults, and how they are used, see [@glimmer/manager](https://github.com/glimmerjs/glimmer-vm/blob/4f1bef0d9a8a3c3ebd934c5b6e09de4c5f6e4468/packages/%40glimmer/manager/lib/public/component.ts#L26)
   *
   *
   * @method capabilities
   * @static
   * @for @ember/component
   * @public
   * @param {'3.13'} managerApiVersion
   * @param {Parameters<import('@ember/-internals/glimmer').componentCapabilities>[1]} options
   *
   */
}
