declare module '@ember/engine/instance' { /** @module @ember/engine */ import EmberObject from '@ember/object'; import { RSVP } from '@ember/-internals/runtime'; import { Registry } from '@ember/-internals/container'; import { ENGINE_PARENT } from '@ember/engine/parent'; import { ContainerProxyMixin, RegistryProxyMixin } from '@ember/-internals/runtime'; import type { InternalOwner } from '@ember/-internals/owner'; import type Owner from '@ember/-internals/owner'; import { type FullName } from '@ember/-internals/owner'; import type Engine from '@ember/engine'; import type Application from '@ember/application'; import type { SimpleElement } from '@simple-dom/interface'; export interface BootOptions { isBrowser?: boolean; shouldRender?: boolean; document?: Document | null; rootElement?: string | SimpleElement | null; location?: string | null; isInteractive?: boolean; _renderMode?: string; } export interface EngineInstanceOptions { mountPoint?: string; routable?: boolean; } /** The `EngineInstance` encapsulates all of the stateful aspects of a running `Engine`. @public @class EngineInstance @extends EmberObject @uses RegistryProxyMixin @uses ContainerProxyMixin */ interface EngineInstance extends RegistryProxyMixin, ContainerProxyMixin, InternalOwner, Owner {} const EngineInstance_base: Readonly & (new (owner?: Owner | undefined) => EmberObject) & import('@ember/object/mixin').default; class EngineInstance extends EngineInstance_base { /** @private @method setupRegistry @param {Registry} registry @param {BootOptions} options */ static setupRegistry(_registry: Registry, _options?: BootOptions): void; /** The base `Engine` for which this is an instance. @property {Engine} engine @private */ base: Engine; application: Application; mountPoint?: string; routable?: boolean; [ENGINE_PARENT]?: EngineInstance; _booted: boolean; init(properties: object | undefined): void; _bootPromise: RSVP.Promise | null; /** Initialize the `EngineInstance` and return a promise that resolves with the instance itself when the boot process is complete. The primary task here is to run any registered instance initializers. See the documentation on `BootOptions` for the options it takes. @public @method boot @param options {Object} @return {Promise} */ boot(options?: BootOptions): Promise; /** Unfortunately, a lot of existing code assumes booting an instance is synchronous – specifically, a lot of tests assume the last call to `app.advanceReadiness()` or `app.reset()` will result in a new instance being fully-booted when the current runloop completes. We would like new code (like the `visit` API) to stop making this assumption, so we created the asynchronous version above that returns a promise. But until we have migrated all the code, we would have to expose this method for use *internally* in places where we need to boot an instance synchronously. @private */ _bootSync(options?: BootOptions): this; setupRegistry(options?: BootOptions): void; /** Unregister a factory. Overrides `RegistryProxy#unregister` in order to clear any cached instances of the unregistered factory. @public @method unregister @param {String} fullName */ unregister(fullName: FullName): void; /** Build a new `EngineInstance` that's a child of this instance. Engines must be registered by name with their parent engine (or application). @private @method buildChildEngineInstance @param name {String} the registered name of the engine. @param options {Object} options provided to the engine instance. @return {EngineInstance,Error} */ buildChildEngineInstance(name: string, options?: EngineInstanceOptions): EngineInstance; /** Clone dependencies shared between an engine instance and its parent. @private @method cloneParentDependencies */ cloneParentDependencies(): void; } export default EngineInstance; }