UNPKG

621 kBTypeScriptView Raw
1/**
2 * @license Angular v17.2.3
3 * (c) 2010-2022 Google LLC. https://angular.io/
4 * License: MIT
5 */
6
7
8import { BehaviorSubject } from 'rxjs';
9import { Observable } from 'rxjs';
10import { ReactiveNode } from '@angular/core/primitives/signals';
11import { SIGNAL } from '@angular/core/primitives/signals';
12import { SignalNode } from '@angular/core/primitives/signals';
13import { Subject } from 'rxjs';
14import { Subscribable } from 'rxjs';
15import { Subscription } from 'rxjs';
16
17/**
18 * @description
19 *
20 * Represents an abstract class `T`, if applied to a concrete class it would stop being
21 * instantiable.
22 *
23 * @publicApi
24 */
25export declare interface AbstractType<T> extends Function {
26 prototype: T;
27}
28
29/**
30 * @description
31 * A lifecycle hook that is called after the default change detector has
32 * completed checking all content of a directive. It will run after the content
33 * has been checked and most of the time it's during a change detection cycle.
34 *
35 * @see {@link AfterViewChecked}
36 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
37 *
38 * @usageNotes
39 * The following snippet shows how a component can implement this interface to
40 * define its own after-check functionality.
41 *
42 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentChecked'}
43 *
44 * @publicApi
45 */
46export declare interface AfterContentChecked {
47 /**
48 * A callback method that is invoked immediately after the
49 * default change detector has completed checking all of the directive's
50 * content.
51 */
52 ngAfterContentChecked(): void;
53}
54
55/**
56 * @description
57 * A lifecycle hook that is called after Angular has fully initialized
58 * all content of a directive. It will run only once when the projected content is initialized.
59 * Define an `ngAfterContentInit()` method to handle any additional initialization tasks.
60 *
61 * @see {@link OnInit}
62 * @see {@link AfterViewInit}
63 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
64 *
65 * @usageNotes
66 * The following snippet shows how a component can implement this interface to
67 * define its own content initialization method.
68 *
69 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentInit'}
70 *
71 * @publicApi
72 */
73export declare interface AfterContentInit {
74 /**
75 * A callback method that is invoked immediately after
76 * Angular has completed initialization of all of the directive's
77 * content.
78 * It is invoked only once when the directive is instantiated.
79 */
80 ngAfterContentInit(): void;
81}
82
83/**
84 * Register a callback to be invoked the next time the application
85 * finishes rendering.
86 *
87 * <div class="alert is-critical">
88 *
89 * You should always explicitly specify a non-default [phase](api/core/AfterRenderPhase), or you
90 * risk significant performance degradation.
91 *
92 * </div>
93 *
94 * Note that the callback will run
95 * - in the order it was registered
96 * - on browser platforms only
97 *
98 * <div class="alert is-important">
99 *
100 * Components are not guaranteed to be [hydrated](guide/hydration) before the callback runs.
101 * You must use caution when directly reading or writing the DOM and layout.
102 *
103 * </div>
104 *
105 * @param callback A callback function to register
106 *
107 * @usageNotes
108 *
109 * Use `afterNextRender` to read or write the DOM once,
110 * for example to initialize a non-Angular library.
111 *
112 * ### Example
113 * ```ts
114 * @Component({
115 * selector: 'my-chart-cmp',
116 * template: `<div #chart>{{ ... }}</div>`,
117 * })
118 * export class MyChartCmp {
119 * @ViewChild('chart') chartRef: ElementRef;
120 * chart: MyChart|null;
121 *
122 * constructor() {
123 * afterNextRender(() => {
124 * this.chart = new MyChart(this.chartRef.nativeElement);
125 * }, {phase: AfterRenderPhase.Write});
126 * }
127 * }
128 * ```
129 *
130 * @developerPreview
131 */
132export declare function afterNextRender(callback: VoidFunction, options?: AfterRenderOptions): AfterRenderRef;
133
134/**
135 * Register a callback to be invoked each time the application
136 * finishes rendering.
137 *
138 * <div class="alert is-critical">
139 *
140 * You should always explicitly specify a non-default [phase](api/core/AfterRenderPhase), or you
141 * risk significant performance degradation.
142 *
143 * </div>
144 *
145 * Note that the callback will run
146 * - in the order it was registered
147 * - once per render
148 * - on browser platforms only
149 *
150 * <div class="alert is-important">
151 *
152 * Components are not guaranteed to be [hydrated](guide/hydration) before the callback runs.
153 * You must use caution when directly reading or writing the DOM and layout.
154 *
155 * </div>
156 *
157 * @param callback A callback function to register
158 *
159 * @usageNotes
160 *
161 * Use `afterRender` to read or write the DOM after each render.
162 *
163 * ### Example
164 * ```ts
165 * @Component({
166 * selector: 'my-cmp',
167 * template: `<span #content>{{ ... }}</span>`,
168 * })
169 * export class MyComponent {
170 * @ViewChild('content') contentRef: ElementRef;
171 *
172 * constructor() {
173 * afterRender(() => {
174 * console.log('content height: ' + this.contentRef.nativeElement.scrollHeight);
175 * }, {phase: AfterRenderPhase.Read});
176 * }
177 * }
178 * ```
179 *
180 * @developerPreview
181 */
182export declare function afterRender(callback: VoidFunction, options?: AfterRenderOptions): AfterRenderRef;
183
184/**
185 * Options passed to `afterRender` and `afterNextRender`.
186 *
187 * @developerPreview
188 */
189export declare interface AfterRenderOptions {
190 /**
191 * The `Injector` to use during creation.
192 *
193 * If this is not provided, the current injection context will be used instead (via `inject`).
194 */
195 injector?: Injector;
196 /**
197 * The phase the callback should be invoked in.
198 *
199 * <div class="alert is-critical">
200 *
201 * Defaults to `AfterRenderPhase.MixedReadWrite`. You should choose a more specific
202 * phase instead. See `AfterRenderPhase` for more information.
203 *
204 * </div>
205 */
206 phase?: AfterRenderPhase;
207}
208
209/**
210 * The phase to run an `afterRender` or `afterNextRender` callback in.
211 *
212 * Callbacks in the same phase run in the order they are registered. Phases run in the
213 * following order after each render:
214 *
215 * 1. `AfterRenderPhase.EarlyRead`
216 * 2. `AfterRenderPhase.Write`
217 * 3. `AfterRenderPhase.MixedReadWrite`
218 * 4. `AfterRenderPhase.Read`
219 *
220 * Angular is unable to verify or enforce that phases are used correctly, and instead
221 * relies on each developer to follow the guidelines documented for each value and
222 * carefully choose the appropriate one, refactoring their code if necessary. By doing
223 * so, Angular is better able to minimize the performance degradation associated with
224 * manual DOM access, ensuring the best experience for the end users of your application
225 * or library.
226 *
227 * @developerPreview
228 */
229export declare enum AfterRenderPhase {
230 /**
231 * Use `AfterRenderPhase.EarlyRead` for callbacks that only need to **read** from the
232 * DOM before a subsequent `AfterRenderPhase.Write` callback, for example to perform
233 * custom layout that the browser doesn't natively support. **Never** use this phase
234 * for callbacks that can write to the DOM or when `AfterRenderPhase.Read` is adequate.
235 *
236 * <div class="alert is-important">
237 *
238 * Using this value can degrade performance.
239 * Instead, prefer using built-in browser functionality when possible.
240 *
241 * </div>
242 */
243 EarlyRead = 0,
244 /**
245 * Use `AfterRenderPhase.Write` for callbacks that only **write** to the DOM. **Never**
246 * use this phase for callbacks that can read from the DOM.
247 */
248 Write = 1,
249 /**
250 * Use `AfterRenderPhase.MixedReadWrite` for callbacks that read from or write to the
251 * DOM, that haven't been refactored to use a different phase. **Never** use this phase
252 * for callbacks that can use a different phase instead.
253 *
254 * <div class="alert is-critical">
255 *
256 * Using this value can **significantly** degrade performance.
257 * Instead, prefer refactoring into multiple callbacks using a more specific phase.
258 *
259 * </div>
260 */
261 MixedReadWrite = 2,
262 /**
263 * Use `AfterRenderPhase.Read` for callbacks that only **read** from the DOM. **Never**
264 * use this phase for callbacks that can write to the DOM.
265 */
266 Read = 3
267}
268
269/**
270 * A callback that runs after render.
271 *
272 * @developerPreview
273 */
274export declare interface AfterRenderRef {
275 /**
276 * Shut down the callback, preventing it from being called again.
277 */
278 destroy(): void;
279}
280
281/**
282 * @description
283 * A lifecycle hook that is called after the default change detector has
284 * completed checking a component's view for changes.
285 *
286 * @see {@link AfterContentChecked}
287 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
288 *
289 * @usageNotes
290 * The following snippet shows how a component can implement this interface to
291 * define its own after-check functionality.
292 *
293 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewChecked'}
294 *
295 * @publicApi
296 */
297export declare interface AfterViewChecked {
298 /**
299 * A callback method that is invoked immediately after the
300 * default change detector has completed one change-check cycle
301 * for a component's view.
302 */
303 ngAfterViewChecked(): void;
304}
305
306/**
307 * @description
308 * A lifecycle hook that is called after Angular has fully initialized
309 * a component's view.
310 * Define an `ngAfterViewInit()` method to handle any additional initialization tasks.
311 *
312 * @see {@link OnInit}
313 * @see {@link AfterContentInit}
314 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
315 *
316 * @usageNotes
317 * The following snippet shows how a component can implement this interface to
318 * define its own view initialization method.
319 *
320 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewInit'}
321 *
322 * @publicApi
323 */
324export declare interface AfterViewInit {
325 /**
326 * A callback method that is invoked immediately after
327 * Angular has completed initialization of a component's view.
328 * It is invoked only once when the view is instantiated.
329 *
330 */
331 ngAfterViewInit(): void;
332}
333
334/**
335 * A [DI token](api/core/InjectionToken) that indicates which animations
336 * module has been loaded.
337 * @publicApi
338 */
339export declare const ANIMATION_MODULE_TYPE: InjectionToken<"NoopAnimations" | "BrowserAnimations">;
340
341/**
342 * A [DI token](guide/glossary#di-token "DI token definition") that provides a set of callbacks to
343 * be called for every component that is bootstrapped.
344 *
345 * Each callback must take a `ComponentRef` instance and return nothing.
346 *
347 * `(componentRef: ComponentRef) => void`
348 *
349 * @publicApi
350 */
351export declare const APP_BOOTSTRAP_LISTENER: InjectionToken<readonly ((compRef: ComponentRef<any>) => void)[]>;
352
353/**
354 * A [DI token](guide/glossary#di-token "DI token definition") representing a string ID, used
355 * primarily for prefixing application attributes and CSS styles when
356 * {@link ViewEncapsulation#Emulated} is being used.
357 *
358 * The token is needed in cases when multiple applications are bootstrapped on a page
359 * (for example, using `bootstrapApplication` calls). In this case, ensure that those applications
360 * have different `APP_ID` value setup. For example:
361 *
362 * ```
363 * bootstrapApplication(ComponentA, {
364 * providers: [
365 * { provide: APP_ID, useValue: 'app-a' },
366 * // ... other providers ...
367 * ]
368 * });
369 *
370 * bootstrapApplication(ComponentB, {
371 * providers: [
372 * { provide: APP_ID, useValue: 'app-b' },
373 * // ... other providers ...
374 * ]
375 * });
376 * ```
377 *
378 * By default, when there is only one application bootstrapped, you don't need to provide the
379 * `APP_ID` token (the `ng` will be used as an app ID).
380 *
381 * @publicApi
382 */
383export declare const APP_ID: InjectionToken<string>;
384
385/**
386 * A [DI token](guide/glossary#di-token "DI token definition") that you can use to provide
387 * one or more initialization functions.
388 *
389 * The provided functions are injected at application startup and executed during
390 * app initialization. If any of these functions returns a Promise or an Observable, initialization
391 * does not complete until the Promise is resolved or the Observable is completed.
392 *
393 * You can, for example, create a factory function that loads language data
394 * or an external configuration, and provide that function to the `APP_INITIALIZER` token.
395 * The function is executed during the application bootstrap process,
396 * and the needed data is available on startup.
397 *
398 * @see {@link ApplicationInitStatus}
399 *
400 * @usageNotes
401 *
402 * The following example illustrates how to configure a multi-provider using `APP_INITIALIZER` token
403 * and a function returning a promise.
404 * ### Example with NgModule-based application
405 * ```
406 * function initializeApp(): Promise<any> {
407 * return new Promise((resolve, reject) => {
408 * // Do some asynchronous stuff
409 * resolve();
410 * });
411 * }
412 *
413 * @NgModule({
414 * imports: [BrowserModule],
415 * declarations: [AppComponent],
416 * bootstrap: [AppComponent],
417 * providers: [{
418 * provide: APP_INITIALIZER,
419 * useFactory: () => initializeApp,
420 * multi: true
421 * }]
422 * })
423 * export class AppModule {}
424 * ```
425 *
426 * ### Example with standalone application
427 * ```
428 * export function initializeApp(http: HttpClient) {
429 * return (): Promise<any> =>
430 * firstValueFrom(
431 * http
432 * .get("https://someUrl.com/api/user")
433 * .pipe(tap(user => { ... }))
434 * );
435 * }
436 *
437 * bootstrapApplication(App, {
438 * providers: [
439 * provideHttpClient(),
440 * {
441 * provide: APP_INITIALIZER,
442 * useFactory: initializeApp,
443 * multi: true,
444 * deps: [HttpClient],
445 * },
446 * ],
447 * });
448
449 * ```
450 *
451 *
452 * It's also possible to configure a multi-provider using `APP_INITIALIZER` token and a function
453 * returning an observable, see an example below. Note: the `HttpClient` in this example is used for
454 * demo purposes to illustrate how the factory function can work with other providers available
455 * through DI.
456 *
457 * ### Example with NgModule-based application
458 * ```
459 * function initializeAppFactory(httpClient: HttpClient): () => Observable<any> {
460 * return () => httpClient.get("https://someUrl.com/api/user")
461 * .pipe(
462 * tap(user => { ... })
463 * );
464 * }
465 *
466 * @NgModule({
467 * imports: [BrowserModule, HttpClientModule],
468 * declarations: [AppComponent],
469 * bootstrap: [AppComponent],
470 * providers: [{
471 * provide: APP_INITIALIZER,
472 * useFactory: initializeAppFactory,
473 * deps: [HttpClient],
474 * multi: true
475 * }]
476 * })
477 * export class AppModule {}
478 * ```
479 *
480 * ### Example with standalone application
481 * ```
482 * function initializeAppFactory(httpClient: HttpClient): () => Observable<any> {
483 * return () => httpClient.get("https://someUrl.com/api/user")
484 * .pipe(
485 * tap(user => { ... })
486 * );
487 * }
488 *
489 * bootstrapApplication(App, {
490 * providers: [
491 * provideHttpClient(),
492 * {
493 * provide: APP_INITIALIZER,
494 * useFactory: initializeAppFactory,
495 * multi: true,
496 * deps: [HttpClient],
497 * },
498 * ],
499 * });
500 * ```
501 *
502 * @publicApi
503 */
504export declare const APP_INITIALIZER: InjectionToken<readonly (() => Observable<unknown> | Promise<unknown> | void)[]>;
505
506/**
507 * Set of config options available during the application bootstrap operation.
508 *
509 * @publicApi
510 */
511export declare interface ApplicationConfig {
512 /**
513 * List of providers that should be available to the root component and all its children.
514 */
515 providers: Array<Provider | EnvironmentProviders>;
516}
517
518/**
519 * A class that reflects the state of running {@link APP_INITIALIZER} functions.
520 *
521 * @publicApi
522 */
523export declare class ApplicationInitStatus {
524 private resolve;
525 private reject;
526 private initialized;
527 readonly done = false;
528 readonly donePromise: Promise<any>;
529 private readonly appInits;
530 constructor();
531 static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationInitStatus, never>;
532 static ɵprov: i0.ɵɵInjectableDeclaration<ApplicationInitStatus>;
533}
534
535/**
536 * Re-exported by `BrowserModule`, which is included automatically in the root
537 * `AppModule` when you create a new app with the CLI `new` command. Eagerly injects
538 * `ApplicationRef` to instantiate it.
539 *
540 * @publicApi
541 */
542export declare class ApplicationModule {
543 constructor(appRef: ApplicationRef);
544 static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationModule, never>;
545 static ɵmod: i0.ɵɵNgModuleDeclaration<ApplicationModule, never, never, never>;
546 static ɵinj: i0.ɵɵInjectorDeclaration<ApplicationModule>;
547}
548
549/**
550 * A reference to an Angular application running on a page.
551 *
552 * @usageNotes
553 * {@a is-stable-examples}
554 * ### isStable examples and caveats
555 *
556 * Note two important points about `isStable`, demonstrated in the examples below:
557 * - the application will never be stable if you start any kind
558 * of recurrent asynchronous task when the application starts
559 * (for example for a polling process, started with a `setInterval`, a `setTimeout`
560 * or using RxJS operators like `interval`);
561 * - the `isStable` Observable runs outside of the Angular zone.
562 *
563 * Let's imagine that you start a recurrent task
564 * (here incrementing a counter, using RxJS `interval`),
565 * and at the same time subscribe to `isStable`.
566 *
567 * ```
568 * constructor(appRef: ApplicationRef) {
569 * appRef.isStable.pipe(
570 * filter(stable => stable)
571 * ).subscribe(() => console.log('App is stable now');
572 * interval(1000).subscribe(counter => console.log(counter));
573 * }
574 * ```
575 * In this example, `isStable` will never emit `true`,
576 * and the trace "App is stable now" will never get logged.
577 *
578 * If you want to execute something when the app is stable,
579 * you have to wait for the application to be stable
580 * before starting your polling process.
581 *
582 * ```
583 * constructor(appRef: ApplicationRef) {
584 * appRef.isStable.pipe(
585 * first(stable => stable),
586 * tap(stable => console.log('App is stable now')),
587 * switchMap(() => interval(1000))
588 * ).subscribe(counter => console.log(counter));
589 * }
590 * ```
591 * In this example, the trace "App is stable now" will be logged
592 * and then the counter starts incrementing every second.
593 *
594 * Note also that this Observable runs outside of the Angular zone,
595 * which means that the code in the subscription
596 * to this Observable will not trigger the change detection.
597 *
598 * Let's imagine that instead of logging the counter value,
599 * you update a field of your component
600 * and display it in its template.
601 *
602 * ```
603 * constructor(appRef: ApplicationRef) {
604 * appRef.isStable.pipe(
605 * first(stable => stable),
606 * switchMap(() => interval(1000))
607 * ).subscribe(counter => this.value = counter);
608 * }
609 * ```
610 * As the `isStable` Observable runs outside the zone,
611 * the `value` field will be updated properly,
612 * but the template will not be refreshed!
613 *
614 * You'll have to manually trigger the change detection to update the template.
615 *
616 * ```
617 * constructor(appRef: ApplicationRef, cd: ChangeDetectorRef) {
618 * appRef.isStable.pipe(
619 * first(stable => stable),
620 * switchMap(() => interval(1000))
621 * ).subscribe(counter => {
622 * this.value = counter;
623 * cd.detectChanges();
624 * });
625 * }
626 * ```
627 *
628 * Or make the subscription callback run inside the zone.
629 *
630 * ```
631 * constructor(appRef: ApplicationRef, zone: NgZone) {
632 * appRef.isStable.pipe(
633 * first(stable => stable),
634 * switchMap(() => interval(1000))
635 * ).subscribe(counter => zone.run(() => this.value = counter));
636 * }
637 * ```
638 *
639 * @publicApi
640 */
641export declare class ApplicationRef {
642 private _runningTick;
643 private _destroyed;
644 private _destroyListeners;
645 private readonly internalErrorHandler;
646 private readonly afterRenderEffectManager;
647 /**
648 * Indicates whether this instance was destroyed.
649 */
650 get destroyed(): boolean;
651 /**
652 * Get a list of component types registered to this application.
653 * This list is populated even before the component is created.
654 */
655 readonly componentTypes: Type<any>[];
656 /**
657 * Get a list of components registered to this application.
658 */
659 readonly components: ComponentRef<any>[];
660 /**
661 * Returns an Observable that indicates when the application is stable or unstable.
662 */
663 readonly isStable: Observable<boolean>;
664 private readonly _injector;
665 /**
666 * The `EnvironmentInjector` used to create this application.
667 */
668 get injector(): EnvironmentInjector;
669 /**
670 * Bootstrap a component onto the element identified by its selector or, optionally, to a
671 * specified element.
672 *
673 * @usageNotes
674 * ### Bootstrap process
675 *
676 * When bootstrapping a component, Angular mounts it onto a target DOM element
677 * and kicks off automatic change detection. The target DOM element can be
678 * provided using the `rootSelectorOrNode` argument.
679 *
680 * If the target DOM element is not provided, Angular tries to find one on a page
681 * using the `selector` of the component that is being bootstrapped
682 * (first matched element is used).
683 *
684 * ### Example
685 *
686 * Generally, we define the component to bootstrap in the `bootstrap` array of `NgModule`,
687 * but it requires us to know the component while writing the application code.
688 *
689 * Imagine a situation where we have to wait for an API call to decide about the component to
690 * bootstrap. We can use the `ngDoBootstrap` hook of the `NgModule` and call this method to
691 * dynamically bootstrap a component.
692 *
693 * {@example core/ts/platform/platform.ts region='componentSelector'}
694 *
695 * Optionally, a component can be mounted onto a DOM element that does not match the
696 * selector of the bootstrapped component.
697 *
698 * In the following example, we are providing a CSS selector to match the target element.
699 *
700 * {@example core/ts/platform/platform.ts region='cssSelector'}
701 *
702 * While in this example, we are providing reference to a DOM node.
703 *
704 * {@example core/ts/platform/platform.ts region='domNode'}
705 */
706 bootstrap<C>(component: Type<C>, rootSelectorOrNode?: string | any): ComponentRef<C>;
707 /**
708 * Bootstrap a component onto the element identified by its selector or, optionally, to a
709 * specified element.
710 *
711 * @usageNotes
712 * ### Bootstrap process
713 *
714 * When bootstrapping a component, Angular mounts it onto a target DOM element
715 * and kicks off automatic change detection. The target DOM element can be
716 * provided using the `rootSelectorOrNode` argument.
717 *
718 * If the target DOM element is not provided, Angular tries to find one on a page
719 * using the `selector` of the component that is being bootstrapped
720 * (first matched element is used).
721 *
722 * ### Example
723 *
724 * Generally, we define the component to bootstrap in the `bootstrap` array of `NgModule`,
725 * but it requires us to know the component while writing the application code.
726 *
727 * Imagine a situation where we have to wait for an API call to decide about the component to
728 * bootstrap. We can use the `ngDoBootstrap` hook of the `NgModule` and call this method to
729 * dynamically bootstrap a component.
730 *
731 * {@example core/ts/platform/platform.ts region='componentSelector'}
732 *
733 * Optionally, a component can be mounted onto a DOM element that does not match the
734 * selector of the bootstrapped component.
735 *
736 * In the following example, we are providing a CSS selector to match the target element.
737 *
738 * {@example core/ts/platform/platform.ts region='cssSelector'}
739 *
740 * While in this example, we are providing reference to a DOM node.
741 *
742 * {@example core/ts/platform/platform.ts region='domNode'}
743 *
744 * @deprecated Passing Component factories as the `Application.bootstrap` function argument is
745 * deprecated. Pass Component Types instead.
746 */
747 bootstrap<C>(componentFactory: ComponentFactory<C>, rootSelectorOrNode?: string | any): ComponentRef<C>;
748 /**
749 * Invoke this method to explicitly process change detection and its side-effects.
750 *
751 * In development mode, `tick()` also performs a second change detection cycle to ensure that no
752 * further changes are detected. If additional changes are picked up during this second cycle,
753 * bindings in the app have side-effects that cannot be resolved in a single change detection
754 * pass.
755 * In this case, Angular throws an error, since an Angular application can only have one change
756 * detection pass during which all change detection must complete.
757 */
758 tick(): void;
759 private detectChangesInAttachedViews;
760 private detectChangesInView;
761 /**
762 * Attaches a view so that it will be dirty checked.
763 * The view will be automatically detached when it is destroyed.
764 * This will throw if the view is already attached to a ViewContainer.
765 */
766 attachView(viewRef: ViewRef): void;
767 /**
768 * Detaches a view from dirty checking again.
769 */
770 detachView(viewRef: ViewRef): void;
771 private _loadComponent;
772 /**
773 * Registers a listener to be called when an instance is destroyed.
774 *
775 * @param callback A callback function to add as a listener.
776 * @returns A function which unregisters a listener.
777 */
778 onDestroy(callback: () => void): VoidFunction;
779 /**
780 * Destroys an Angular application represented by this `ApplicationRef`. Calling this function
781 * will destroy the associated environment injectors as well as all the bootstrapped components
782 * with their views.
783 */
784 destroy(): void;
785 /**
786 * Returns the number of attached views.
787 */
788 get viewCount(): number;
789 private warnIfDestroyed;
790 static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationRef, never>;
791 static ɵprov: i0.ɵɵInjectableDeclaration<ApplicationRef>;
792}
793
794
795/**
796 * Marks a component for check (in case of OnPush components) and synchronously
797 * performs change detection on the application this component belongs to.
798 *
799 * @param component Component to {@link ChangeDetectorRef#markForCheck mark for check}.
800 *
801 * @publicApi
802 * @globalApi ng
803 */
804declare function applyChanges(component: {}): void;
805
806/**
807 * @publicApi
808 */
809export declare function asNativeElements(debugEls: DebugElement[]): any;
810
811/**
812 * Asserts that the current stack frame is within an [injection
813 * context](guide/dependency-injection-context) and has access to `inject`.
814 *
815 * @param debugFn a reference to the function making the assertion (used for the error message).
816 *
817 * @publicApi
818 */
819export declare function assertInInjectionContext(debugFn: Function): void;
820
821
822/**
823 * Asserts that the current stack frame is not within a reactive context. Useful
824 * to disallow certain code from running inside a reactive context (see {@link toSignal}).
825 *
826 * @param debugFn a reference to the function making the assertion (used for the error message).
827 *
828 * @publicApi
829 */
830export declare function assertNotInReactiveContext(debugFn: Function, extraContext?: string): void;
831
832/**
833 * Checks that there is currently a platform that contains the given token as a provider.
834 *
835 * @publicApi
836 */
837export declare function assertPlatform(requiredToken: any): PlatformRef;
838
839/**
840 * Type of the Attribute metadata.
841 *
842 * @publicApi
843 */
844export declare interface Attribute {
845 /**
846 * The name of the attribute whose value can be injected.
847 */
848 attributeName: string;
849}
850
851/**
852 * Attribute decorator and metadata.
853 *
854 * @Annotation
855 * @publicApi
856 */
857export declare const Attribute: AttributeDecorator;
858
859
860/**
861 * Type of the Attribute decorator / constructor function.
862 *
863 * @publicApi
864 */
865export declare interface AttributeDecorator {
866 /**
867 * Parameter decorator for a directive constructor that designates
868 * a host-element attribute whose value is injected as a constant string literal.
869 *
870 * @usageNotes
871 *
872 * Suppose we have an `<input>` element and want to know its `type`.
873 *
874 * ```html
875 * <input type="text">
876 * ```
877 *
878 * The following example uses the decorator to inject the string literal `text` in a directive.
879 *
880 * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}
881 *
882 * The following example uses the decorator in a component constructor.
883 *
884 * {@example core/ts/metadata/metadata.ts region='attributeFactory'}
885 *
886 */
887 (name: string): any;
888 new (name: string): Attribute;
889}
890
891
892/**
893 * Transforms a value (typically a string) to a boolean.
894 * Intended to be used as a transform function of an input.
895 *
896 * @usageNotes
897 * ```typescript
898 * @Input({ transform: booleanAttribute }) status!: boolean;
899 * ```
900 * @param value Value to be transformed.
901 *
902 * @publicApi
903 */
904export declare function booleanAttribute(value: unknown): boolean;
905
906/**
907 * Provides additional options to the bootstrapping process.
908 *
909 * @publicApi
910 */
911export declare interface BootstrapOptions {
912 /**
913 * Optionally specify which `NgZone` should be used.
914 *
915 * - Provide your own `NgZone` instance.
916 * - `zone.js` - Use default `NgZone` which requires `Zone.js`.
917 * - `noop` - Use `NoopNgZone` which does nothing.
918 */
919 ngZone?: NgZone | 'zone.js' | 'noop';
920 /**
921 * Optionally specify coalescing event change detections or not.
922 * Consider the following case.
923 *
924 * ```
925 * <div (click)="doSomething()">
926 * <button (click)="doSomethingElse()"></button>
927 * </div>
928 * ```
929 *
930 * When button is clicked, because of the event bubbling, both
931 * event handlers will be called and 2 change detections will be
932 * triggered. We can coalesce such kind of events to only trigger
933 * change detection only once.
934 *
935 * By default, this option will be false. So the events will not be
936 * coalesced and the change detection will be triggered multiple times.
937 * And if this option be set to true, the change detection will be
938 * triggered async by scheduling a animation frame. So in the case above,
939 * the change detection will only be triggered once.
940 */
941 ngZoneEventCoalescing?: boolean;
942 /**
943 * Optionally specify if `NgZone#run()` method invocations should be coalesced
944 * into a single change detection.
945 *
946 * Consider the following case.
947 * ```
948 * for (let i = 0; i < 10; i ++) {
949 * ngZone.run(() => {
950 * // do something
951 * });
952 * }
953 * ```
954 *
955 * This case triggers the change detection multiple times.
956 * With ngZoneRunCoalescing options, all change detections in an event loop trigger only once.
957 * In addition, the change detection executes in requestAnimation.
958 *
959 */
960 ngZoneRunCoalescing?: boolean;
961}
962
963
964/**
965 * The strategy that the default change detector uses to detect changes.
966 * When set, takes effect the next time change detection is triggered.
967 *
968 * @see {@link ChangeDetectorRef#usage-notes Change detection usage}
969 *
970 * @publicApi
971 */
972export declare enum ChangeDetectionStrategy {
973 /**
974 * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated
975 * until reactivated by setting the strategy to `Default` (`CheckAlways`).
976 * Change detection can still be explicitly invoked.
977 * This strategy applies to all child directives and cannot be overridden.
978 */
979 OnPush = 0,
980 /**
981 * Use the default `CheckAlways` strategy, in which change detection is automatic until
982 * explicitly deactivated.
983 */
984 Default = 1
985}
986
987declare type ChangeDetectionStrategy_2 = number;
988
989/**
990 * Base class that provides change detection functionality.
991 * A change-detection tree collects all views that are to be checked for changes.
992 * Use the methods to add and remove views from the tree, initiate change-detection,
993 * and explicitly mark views as _dirty_, meaning that they have changed and need to be re-rendered.
994 *
995 * @see [Using change detection hooks](guide/lifecycle-hooks#using-change-detection-hooks)
996 * @see [Defining custom change detection](guide/lifecycle-hooks#defining-custom-change-detection)
997 *
998 * @usageNotes
999 *
1000 * The following examples demonstrate how to modify default change-detection behavior
1001 * to perform explicit detection when needed.
1002 *
1003 * ### Use `markForCheck()` with `CheckOnce` strategy
1004 *
1005 * The following example sets the `OnPush` change-detection strategy for a component
1006 * (`CheckOnce`, rather than the default `CheckAlways`), then forces a second check
1007 * after an interval.
1008 *
1009 * <code-example path="core/ts/change_detect/change-detection.ts"
1010 * region="mark-for-check"></code-example>
1011 *
1012 * ### Detach change detector to limit how often check occurs
1013 *
1014 * The following example defines a component with a large list of read-only data
1015 * that is expected to change constantly, many times per second.
1016 * To improve performance, we want to check and update the list
1017 * less often than the changes actually occur. To do that, we detach
1018 * the component's change detector and perform an explicit local check every five seconds.
1019 *
1020 * <code-example path="core/ts/change_detect/change-detection.ts" region="detach"></code-example>
1021 *
1022 *
1023 * ### Reattaching a detached component
1024 *
1025 * The following example creates a component displaying live data.
1026 * The component detaches its change detector from the main change detector tree
1027 * when the `live` property is set to false, and reattaches it when the property
1028 * becomes true.
1029 *
1030 * <code-example path="core/ts/change_detect/change-detection.ts" region="reattach"></code-example>
1031 *
1032 * @publicApi
1033 */
1034export declare abstract class ChangeDetectorRef {
1035 /**
1036 * When a view uses the {@link ChangeDetectionStrategy#OnPush} (checkOnce)
1037 * change detection strategy, explicitly marks the view as changed so that
1038 * it can be checked again.
1039 *
1040 * Components are normally marked as dirty (in need of rerendering) when inputs
1041 * have changed or events have fired in the view. Call this method to ensure that
1042 * a component is checked even if these triggers have not occurred.
1043 *
1044 * <!-- TODO: Add a link to a chapter on OnPush components -->
1045 *
1046 */
1047 abstract markForCheck(): void;
1048 /**
1049 * Detaches this view from the change-detection tree.
1050 * A detached view is not checked until it is reattached.
1051 * Use in combination with `detectChanges()` to implement local change detection checks.
1052 *
1053 * Detached views are not checked during change detection runs until they are
1054 * re-attached, even if they are marked as dirty.
1055 *
1056 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
1057 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
1058 *
1059 */
1060 abstract detach(): void;
1061 /**
1062 * Checks this view and its children. Use in combination with {@link ChangeDetectorRef#detach}
1063 * to implement local change detection checks.
1064 *
1065 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
1066 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
1067 *
1068 */
1069 abstract detectChanges(): void;
1070 /**
1071 * Checks the change detector and its children, and throws if any changes are detected.
1072 *
1073 * Use in development mode to verify that running change detection doesn't introduce
1074 * other changes. Calling it in production mode is a noop.
1075 *
1076 * @deprecated This is a test-only API that does not have a place in production interface.
1077 * `checkNoChanges` is already part of an `ApplicationRef` tick when the app is running in dev
1078 * mode. For more granular `checkNoChanges` validation, use `ComponentFixture`.
1079 */
1080 abstract checkNoChanges(): void;
1081 /**
1082 * Re-attaches the previously detached view to the change detection tree.
1083 * Views are attached to the tree by default.
1084 *
1085 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
1086 *
1087 */
1088 abstract reattach(): void;
1089}
1090
1091declare interface ChangeDetectorRefInterface extends ChangeDetectorRef {
1092}
1093
1094declare const CHILD_HEAD = 12;
1095
1096declare const CHILD_TAIL = 13;
1097
1098declare interface ClassDebugInfo {
1099 className: string;
1100 filePath?: string;
1101 lineNumber?: number;
1102 forbidOrphanRendering?: boolean;
1103}
1104
1105/**
1106 * Configures the `Injector` to return an instance of `useClass` for a token.
1107 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1108 *
1109 * @usageNotes
1110 *
1111 * {@example core/di/ts/provider_spec.ts region='ClassProvider'}
1112 *
1113 * Note that following two providers are not equal:
1114 *
1115 * {@example core/di/ts/provider_spec.ts region='ClassProviderDifference'}
1116 *
1117 * ### Multi-value example
1118 *
1119 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
1120 *
1121 * @publicApi
1122 */
1123export declare interface ClassProvider extends ClassSansProvider {
1124 /**
1125 * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
1126 */
1127 provide: any;
1128 /**
1129 * When true, injector returns an array of instances. This is useful to allow multiple
1130 * providers spread across many files to provide configuration information to a common token.
1131 */
1132 multi?: boolean;
1133}
1134
1135/**
1136 * Configures the `Injector` to return a value by invoking a `useClass` function.
1137 * Base for `ClassProvider` decorator.
1138 *
1139 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1140 *
1141 * @publicApi
1142 */
1143export declare interface ClassSansProvider {
1144 /**
1145 * Class to instantiate for the `token`.
1146 */
1147 useClass: Type<any>;
1148}
1149
1150declare const CLEANUP = 7;
1151
1152/**
1153 * Low-level service for running the angular compiler during runtime
1154 * to create {@link ComponentFactory}s, which
1155 * can later be used to create and render a Component instance.
1156 *
1157 * Each `@NgModule` provides an own `Compiler` to its injector,
1158 * that will use the directives/pipes of the ng module for compilation
1159 * of components.
1160 *
1161 * @publicApi
1162 *
1163 * @deprecated
1164 * Ivy JIT mode doesn't require accessing this symbol.
1165 * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for
1166 * additional context.
1167 */
1168export declare class Compiler {
1169 /**
1170 * Compiles the given NgModule and all of its components. All templates of the components
1171 * have to be inlined.
1172 */
1173 compileModuleSync<T>(moduleType: Type<T>): NgModuleFactory<T>;
1174 /**
1175 * Compiles the given NgModule and all of its components
1176 */
1177 compileModuleAsync<T>(moduleType: Type<T>): Promise<NgModuleFactory<T>>;
1178 /**
1179 * Same as {@link #compileModuleSync} but also creates ComponentFactories for all components.
1180 */
1181 compileModuleAndAllComponentsSync<T>(moduleType: Type<T>): ModuleWithComponentFactories<T>;
1182 /**
1183 * Same as {@link #compileModuleAsync} but also creates ComponentFactories for all components.
1184 */
1185 compileModuleAndAllComponentsAsync<T>(moduleType: Type<T>): Promise<ModuleWithComponentFactories<T>>;
1186 /**
1187 * Clears all caches.
1188 */
1189 clearCache(): void;
1190 /**
1191 * Clears the cache for the given component/ngModule.
1192 */
1193 clearCacheFor(type: Type<any>): void;
1194 /**
1195 * Returns the id for a given NgModule, if one is defined and known to the compiler.
1196 */
1197 getModuleId(moduleType: Type<any>): string | undefined;
1198 static ɵfac: i0.ɵɵFactoryDeclaration<Compiler, never>;
1199 static ɵprov: i0.ɵɵInjectableDeclaration<Compiler>;
1200}
1201
1202/**
1203 * Token to provide CompilerOptions in the platform injector.
1204 *
1205 * @publicApi
1206 */
1207export declare const COMPILER_OPTIONS: InjectionToken<CompilerOptions[]>;
1208
1209/**
1210 * A factory for creating a Compiler
1211 *
1212 * @publicApi
1213 *
1214 * @deprecated
1215 * Ivy JIT mode doesn't require accessing this symbol.
1216 * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for
1217 * additional context.
1218 */
1219export declare abstract class CompilerFactory {
1220 abstract createCompiler(options?: CompilerOptions[]): Compiler;
1221}
1222
1223/**
1224 * Options for creating a compiler.
1225 *
1226 * @publicApi
1227 */
1228export declare type CompilerOptions = {
1229 defaultEncapsulation?: ViewEncapsulation;
1230 providers?: StaticProvider[];
1231 preserveWhitespaces?: boolean;
1232};
1233
1234/**
1235 * Supplies configuration metadata for an Angular component.
1236 *
1237 * @publicApi
1238 */
1239export declare interface Component extends Directive {
1240 /**
1241 * The change-detection strategy to use for this component.
1242 *
1243 * When a component is instantiated, Angular creates a change detector,
1244 * which is responsible for propagating the component's bindings.
1245 * The strategy is one of:
1246 * - `ChangeDetectionStrategy#OnPush` sets the strategy to `CheckOnce` (on demand).
1247 * - `ChangeDetectionStrategy#Default` sets the strategy to `CheckAlways`.
1248 */
1249 changeDetection?: ChangeDetectionStrategy;
1250 /**
1251 * Defines the set of injectable objects that are visible to its view DOM children.
1252 * See [example](#injecting-a-class-with-a-view-provider).
1253 *
1254 */
1255 viewProviders?: Provider[];
1256 /**
1257 * The module ID of the module that contains the component.
1258 * The component must be able to resolve relative URLs for templates and styles.
1259 * SystemJS exposes the `__moduleName` variable within each module.
1260 * In CommonJS, this can be set to `module.id`.
1261 *
1262 * @deprecated This option does not have any effect. Will be removed in Angular v17.
1263 */
1264 moduleId?: string;
1265 /**
1266 * The relative path or absolute URL of a template file for an Angular component.
1267 * If provided, do not supply an inline template using `template`.
1268 *
1269 */
1270 templateUrl?: string;
1271 /**
1272 * An inline template for an Angular component. If provided,
1273 * do not supply a template file using `templateUrl`.
1274 *
1275 */
1276 template?: string;
1277 /**
1278 * One relative paths or an absolute URL for files containing CSS stylesheet to use
1279 * in this component.
1280 */
1281 styleUrl?: string;
1282 /**
1283 * Relative paths or absolute URLs for files containing CSS stylesheets to use in this component.
1284 */
1285 styleUrls?: string[];
1286 /**
1287 * One or more inline CSS stylesheets to use
1288 * in this component.
1289 */
1290 styles?: string | string[];
1291 /**
1292 * One or more animation `trigger()` calls, containing
1293 * [`state()`](api/animations/state) and `transition()` definitions.
1294 * See the [Animations guide](/guide/animations) and animations API documentation.
1295 *
1296 */
1297 animations?: any[];
1298 /**
1299 * An encapsulation policy for the component's styling.
1300 * Possible values:
1301 * - `ViewEncapsulation.Emulated`: Apply modified component styles in order to emulate
1302 * a native Shadow DOM CSS encapsulation behavior.
1303 * - `ViewEncapsulation.None`: Apply component styles globally without any sort of encapsulation.
1304 * - `ViewEncapsulation.ShadowDom`: Use the browser's native Shadow DOM API to encapsulate styles.
1305 *
1306 * If not supplied, the value is taken from the `CompilerOptions`
1307 * which defaults to `ViewEncapsulation.Emulated`.
1308 *
1309 * If the policy is `ViewEncapsulation.Emulated` and the component has no
1310 * {@link Component#styles styles} nor {@link Component#styleUrls styleUrls},
1311 * the policy is automatically switched to `ViewEncapsulation.None`.
1312 */
1313 encapsulation?: ViewEncapsulation;
1314 /**
1315 * Overrides the default interpolation start and end delimiters (`{{` and `}}`).
1316 */
1317 interpolation?: [string, string];
1318 /**
1319 * True to preserve or false to remove potentially superfluous whitespace characters
1320 * from the compiled template. Whitespace characters are those matching the `\s`
1321 * character class in JavaScript regular expressions. Default is false, unless
1322 * overridden in compiler options.
1323 */
1324 preserveWhitespaces?: boolean;
1325 /**
1326 * Angular components marked as `standalone` do not need to be declared in an NgModule. Such
1327 * components directly manage their own template dependencies (components, directives, and pipes
1328 * used in a template) via the imports property.
1329 *
1330 * More information about standalone components, directives, and pipes can be found in [this
1331 * guide](guide/standalone-components).
1332 */
1333 standalone?: boolean;
1334 /**
1335 * The imports property specifies the standalone component's template dependencies — those
1336 * directives, components, and pipes that can be used within its template. Standalone components
1337 * can import other standalone components, directives, and pipes as well as existing NgModules.
1338 *
1339 * This property is only available for standalone components - specifying it for components
1340 * declared in an NgModule generates a compilation error.
1341 *
1342 * More information about standalone components, directives, and pipes can be found in [this
1343 * guide](guide/standalone-components).
1344 */
1345 imports?: (Type<any> | ReadonlyArray<any>)[];
1346 /**
1347 * The set of schemas that declare elements to be allowed in a standalone component. Elements and
1348 * properties that are neither Angular components nor directives must be declared in a schema.
1349 *
1350 * This property is only available for standalone components - specifying it for components
1351 * declared in an NgModule generates a compilation error.
1352 *
1353 * More information about standalone components, directives, and pipes can be found in [this
1354 * guide](guide/standalone-components).
1355 */
1356 schemas?: SchemaMetadata[];
1357}
1358
1359/**
1360 * Component decorator and metadata.
1361 *
1362 * @Annotation
1363 * @publicApi
1364 */
1365export declare const Component: ComponentDecorator;
1366
1367/**
1368 * Component decorator interface
1369 *
1370 * @publicApi
1371 */
1372export declare interface ComponentDecorator {
1373 /**
1374 * Decorator that marks a class as an Angular component and provides configuration
1375 * metadata that determines how the component should be processed,
1376 * instantiated, and used at runtime.
1377 *
1378 * Components are the most basic UI building block of an Angular app.
1379 * An Angular app contains a tree of Angular components.
1380 *
1381 * Angular components are a subset of directives, always associated with a template.
1382 * Unlike other directives, only one component can be instantiated for a given element in a
1383 * template.
1384 *
1385 * A component must belong to an NgModule in order for it to be available
1386 * to another component or application. To make it a member of an NgModule,
1387 * list it in the `declarations` field of the `NgModule` metadata.
1388 *
1389 * Note that, in addition to these options for configuring a directive,
1390 * you can control a component's runtime behavior by implementing
1391 * life-cycle hooks. For more information, see the
1392 * [Lifecycle Hooks](guide/lifecycle-hooks) guide.
1393 *
1394 * @usageNotes
1395 *
1396 * ### Setting component inputs
1397 *
1398 * The following example creates a component with two data-bound properties,
1399 * specified by the `inputs` value.
1400 *
1401 * <code-example path="core/ts/metadata/directives.ts" region="component-input"></code-example>
1402 *
1403 *
1404 * ### Setting component outputs
1405 *
1406 * The following example shows two event emitters that emit on an interval. One
1407 * emits an output every second, while the other emits every five seconds.
1408 *
1409 * {@example core/ts/metadata/directives.ts region='component-output-interval'}
1410 *
1411 * ### Injecting a class with a view provider
1412 *
1413 * The following simple example injects a class into a component
1414 * using the view provider specified in component metadata:
1415 *
1416 * ```ts
1417 * class Greeter {
1418 * greet(name:string) {
1419 * return 'Hello ' + name + '!';
1420 * }
1421 * }
1422 *
1423 * @Directive({
1424 * selector: 'needs-greeter'
1425 * })
1426 * class NeedsGreeter {
1427 * greeter:Greeter;
1428 *
1429 * constructor(greeter:Greeter) {
1430 * this.greeter = greeter;
1431 * }
1432 * }
1433 *
1434 * @Component({
1435 * selector: 'greet',
1436 * viewProviders: [
1437 * Greeter
1438 * ],
1439 * template: `<needs-greeter></needs-greeter>`
1440 * })
1441 * class HelloWorld {
1442 * }
1443 *
1444 * ```
1445 *
1446 * ### Preserving whitespace
1447 *
1448 * Removing whitespace can greatly reduce AOT-generated code size and speed up view creation.
1449 * As of Angular 6, the default for `preserveWhitespaces` is false (whitespace is removed).
1450 * To change the default setting for all components in your application, set
1451 * the `preserveWhitespaces` option of the AOT compiler.
1452 *
1453 * By default, the AOT compiler removes whitespace characters as follows:
1454 * * Trims all whitespaces at the beginning and the end of a template.
1455 * * Removes whitespace-only text nodes. For example,
1456 *
1457 * ```html
1458 * <button>Action 1</button> <button>Action 2</button>
1459 * ```
1460 *
1461 * becomes:
1462 *
1463 * ```html
1464 * <button>Action 1</button><button>Action 2</button>
1465 * ```
1466 *
1467 * * Replaces a series of whitespace characters in text nodes with a single space.
1468 * For example, `<span>\n some text\n</span>` becomes `<span> some text </span>`.
1469 * * Does NOT alter text nodes inside HTML tags such as `<pre>` or `<textarea>`,
1470 * where whitespace characters are significant.
1471 *
1472 * Note that these transformations can influence DOM nodes layout, although impact
1473 * should be minimal.
1474 *
1475 * You can override the default behavior to preserve whitespace characters
1476 * in certain fragments of a template. For example, you can exclude an entire
1477 * DOM sub-tree by using the `ngPreserveWhitespaces` attribute:
1478 *
1479 * ```html
1480 * <div ngPreserveWhitespaces>
1481 * whitespaces are preserved here
1482 * <span> and here </span>
1483 * </div>
1484 * ```
1485 *
1486 * You can force a single space to be preserved in a text node by using `&ngsp;`,
1487 * which is replaced with a space character by Angular's template
1488 * compiler:
1489 *
1490 * ```html
1491 * <a>Spaces</a>&ngsp;<a>between</a>&ngsp;<a>links.</a>
1492 * <!-- compiled to be equivalent to:
1493 * <a>Spaces</a> <a>between</a> <a>links.</a> -->
1494 * ```
1495 *
1496 * Note that sequences of `&ngsp;` are still collapsed to just one space character when
1497 * the `preserveWhitespaces` option is set to `false`.
1498 *
1499 * ```html
1500 * <a>before</a>&ngsp;&ngsp;&ngsp;<a>after</a>
1501 * <!-- compiled to be equivalent to:
1502 * <a>before</a> <a>after</a> -->
1503 * ```
1504 *
1505 * To preserve sequences of whitespace characters, use the
1506 * `ngPreserveWhitespaces` attribute.
1507 *
1508 * @Annotation
1509 */
1510 (obj: Component): TypeDecorator;
1511 /**
1512 * See the `Component` decorator.
1513 */
1514 new (obj: Component): Component;
1515}
1516
1517declare interface ComponentDefFeature {
1518 <T>(componentDef: ɵComponentDef<T>): void;
1519 /**
1520 * Marks a feature as something that {@link InheritDefinitionFeature} will execute
1521 * during inheritance.
1522 *
1523 * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers
1524 * identifying the change as a side effect, and the feature will be included in
1525 * every bundle.
1526 */
1527 ngInherit?: true;
1528}
1529
1530declare interface ComponentDefinition<T> extends Omit<DirectiveDefinition<T>, 'features'> {
1531 /**
1532 * The number of nodes, local refs, and pipes in this component template.
1533 *
1534 * Used to calculate the length of this component's LView array, so we
1535 * can pre-fill the array and set the binding start index.
1536 */
1537 decls: number;
1538 /**
1539 * The number of bindings in this component template (including pure fn bindings).
1540 *
1541 * Used to calculate the length of this component's LView array, so we
1542 * can pre-fill the array and set the host binding start index.
1543 */
1544 vars: number;
1545 /**
1546 * Template function use for rendering DOM.
1547 *
1548 * This function has following structure.
1549 *
1550 * ```
1551 * function Template<T>(ctx:T, creationMode: boolean) {
1552 * if (creationMode) {
1553 * // Contains creation mode instructions.
1554 * }
1555 * // Contains binding update instructions
1556 * }
1557 * ```
1558 *
1559 * Common instructions are:
1560 * Creation mode instructions:
1561 * - `elementStart`, `elementEnd`
1562 * - `text`
1563 * - `container`
1564 * - `listener`
1565 *
1566 * Binding update instructions:
1567 * - `bind`
1568 * - `elementAttribute`
1569 * - `elementProperty`
1570 * - `elementClass`
1571 * - `elementStyle`
1572 *
1573 */
1574 template: ComponentTemplate<T>;
1575 /**
1576 * Constants for the nodes in the component's view.
1577 * Includes attribute arrays, local definition arrays etc.
1578 */
1579 consts?: TConstantsOrFactory;
1580 /**
1581 * An array of `ngContent[selector]` values that were found in the template.
1582 */
1583 ngContentSelectors?: string[];
1584 /**
1585 * A list of optional features to apply.
1586 *
1587 * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}
1588 */
1589 features?: ComponentDefFeature[];
1590 /**
1591 * Defines template and style encapsulation options available for Component's {@link Component}.
1592 */
1593 encapsulation?: ViewEncapsulation;
1594 /**
1595 * Defines arbitrary developer-defined data to be stored on a renderer instance.
1596 * This is useful for renderers that delegate to other renderers.
1597 *
1598 * see: animation
1599 */
1600 data?: {
1601 [kind: string]: any;
1602 };
1603 /**
1604 * A set of styles that the component needs to be present for component to render correctly.
1605 */
1606 styles?: string[];
1607 /**
1608 * The strategy that the default change detector uses to detect changes.
1609 * When set, takes effect the next time change detection is triggered.
1610 */
1611 changeDetection?: ChangeDetectionStrategy;
1612 /**
1613 * Registry of directives, components, and pipes that may be found in this component's view.
1614 *
1615 * This property is either an array of types or a function that returns the array of types. This
1616 * function may be necessary to support forward declarations.
1617 */
1618 dependencies?: TypeOrFactory<DependencyTypeList>;
1619 /**
1620 * The set of schemas that declare elements to be allowed in the component's template.
1621 */
1622 schemas?: SchemaMetadata[] | null;
1623}
1624
1625/** Component dependencies info as calculated during runtime by the deps tracker. */
1626declare interface ComponentDependencies {
1627 dependencies: DependencyTypeList;
1628}
1629
1630/**
1631 * Base class for a factory that can create a component dynamically.
1632 * Instantiate a factory for a given type of component with `resolveComponentFactory()`.
1633 * Use the resulting `ComponentFactory.create()` method to create a component of that type.
1634 *
1635 * @publicApi
1636 *
1637 * @deprecated Angular no longer requires Component factories. Please use other APIs where
1638 * Component class can be used directly.
1639 */
1640declare abstract class ComponentFactory<C> {
1641 /**
1642 * The component's HTML selector.
1643 */
1644 abstract get selector(): string;
1645 /**
1646 * The type of component the factory will create.
1647 */
1648 abstract get componentType(): Type<any>;
1649 /**
1650 * Selector for all <ng-content> elements in the component.
1651 */
1652 abstract get ngContentSelectors(): string[];
1653 /**
1654 * The inputs of the component.
1655 */
1656 abstract get inputs(): {
1657 propName: string;
1658 templateName: string;
1659 transform?: (value: any) => any;
1660 }[];
1661 /**
1662 * The outputs of the component.
1663 */
1664 abstract get outputs(): {
1665 propName: string;
1666 templateName: string;
1667 }[];
1668 /**
1669 * Creates a new component.
1670 */
1671 abstract create(injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string | any, environmentInjector?: EnvironmentInjector | NgModuleRef<any>): ComponentRef<C>;
1672}
1673export { ComponentFactory }
1674export { ComponentFactory as ɵComponentFactory }
1675
1676/**
1677 * A simple registry that maps `Components` to generated `ComponentFactory` classes
1678 * that can be used to create instances of components.
1679 * Use to obtain the factory for a given component type,
1680 * then use the factory's `create()` method to create a component of that type.
1681 *
1682 * Note: since v13, dynamic component creation via
1683 * [`ViewContainerRef.createComponent`](api/core/ViewContainerRef#createComponent)
1684 * does **not** require resolving component factory: component class can be used directly.
1685 *
1686 * @publicApi
1687 *
1688 * @deprecated Angular no longer requires Component factories. Please use other APIs where
1689 * Component class can be used directly.
1690 */
1691export declare abstract class ComponentFactoryResolver {
1692 static NULL: ComponentFactoryResolver;
1693 /**
1694 * Retrieves the factory object that creates a component of the given type.
1695 * @param component The component type.
1696 */
1697 abstract resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1698}
1699
1700declare class ComponentFactoryResolver_2 extends ComponentFactoryResolver {
1701 private ngModule?;
1702 /**
1703 * @param ngModule The NgModuleRef to which all resolved factories are bound.
1704 */
1705 constructor(ngModule?: NgModuleRef<any> | undefined);
1706 resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1707}
1708
1709/**
1710 * An interface that describes the subset of component metadata
1711 * that can be retrieved using the `reflectComponentType` function.
1712 *
1713 * @publicApi
1714 */
1715export declare interface ComponentMirror<C> {
1716 /**
1717 * The component's HTML selector.
1718 */
1719 get selector(): string;
1720 /**
1721 * The type of component the factory will create.
1722 */
1723 get type(): Type<C>;
1724 /**
1725 * The inputs of the component.
1726 */
1727 get inputs(): ReadonlyArray<{
1728 readonly propName: string;
1729 readonly templateName: string;
1730 readonly transform?: (value: any) => any;
1731 }>;
1732 /**
1733 * The outputs of the component.
1734 */
1735 get outputs(): ReadonlyArray<{
1736 readonly propName: string;
1737 readonly templateName: string;
1738 }>;
1739 /**
1740 * Selector for all <ng-content> elements in the component.
1741 */
1742 get ngContentSelectors(): ReadonlyArray<string>;
1743 /**
1744 * Whether this component is marked as standalone.
1745 * Note: an extra flag, not present in `ComponentFactory`.
1746 */
1747 get isStandalone(): boolean;
1748}
1749
1750/**
1751 * Represents a component created by a `ComponentFactory`.
1752 * Provides access to the component instance and related objects,
1753 * and provides the means of destroying the instance.
1754 *
1755 * @publicApi
1756 */
1757export declare abstract class ComponentRef<C> {
1758 /**
1759 * Updates a specified input name to a new value. Using this method will properly mark for check
1760 * component using the `OnPush` change detection strategy. It will also assure that the
1761 * `OnChanges` lifecycle hook runs when a dynamically created component is change-detected.
1762 *
1763 * @param name The name of an input.
1764 * @param value The new value of an input.
1765 */
1766 abstract setInput(name: string, value: unknown): void;
1767 /**
1768 * The host or anchor [element](guide/glossary#element) for this component instance.
1769 */
1770 abstract get location(): ElementRef;
1771 /**
1772 * The [dependency injector](guide/glossary#injector) for this component instance.
1773 */
1774 abstract get injector(): Injector;
1775 /**
1776 * This component instance.
1777 */
1778 abstract get instance(): C;
1779 /**
1780 * The [host view](guide/glossary#view-hierarchy) defined by the template
1781 * for this component instance.
1782 */
1783 abstract get hostView(): ViewRef;
1784 /**
1785 * The change detector for this component instance.
1786 */
1787 abstract get changeDetectorRef(): ChangeDetectorRef;
1788 /**
1789 * The type of this component (as created by a `ComponentFactory` class).
1790 */
1791 abstract get componentType(): Type<any>;
1792 /**
1793 * Destroys the component instance and all of the data structures associated with it.
1794 */
1795 abstract destroy(): void;
1796 /**
1797 * A lifecycle hook that provides additional developer-defined cleanup
1798 * functionality for the component.
1799 * @param callback A handler function that cleans up developer-defined data
1800 * associated with this component. Called when the `destroy()` method is invoked.
1801 */
1802 abstract onDestroy(callback: Function): void;
1803}
1804
1805/**
1806 * Definition of what a template rendering function should look like for a component.
1807 */
1808declare type ComponentTemplate<T> = {
1809 <U extends T>(rf: ɵRenderFlags, ctx: T | U): void;
1810};
1811
1812/**
1813 * Create a computed `Signal` which derives a reactive value from an expression.
1814 */
1815export declare function computed<T>(computation: () => T, options?: CreateComputedOptions<T>): Signal<T>;
1816
1817/**
1818 * Configures the `Injector` to return an instance of a token.
1819 *
1820 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1821 *
1822 * @usageNotes
1823 *
1824 * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
1825 *
1826 * ### Multi-value example
1827 *
1828 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
1829 *
1830 * @publicApi
1831 */
1832export declare interface ConstructorProvider extends ConstructorSansProvider {
1833 /**
1834 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
1835 */
1836 provide: Type<any>;
1837 /**
1838 * When true, injector returns an array of instances. This is useful to allow multiple
1839 * providers spread across many files to provide configuration information to a common token.
1840 */
1841 multi?: boolean;
1842}
1843
1844/**
1845 * Configures the `Injector` to return an instance of a token.
1846 *
1847 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1848 *
1849 * @usageNotes
1850 *
1851 * ```ts
1852 * @Injectable(SomeModule, {deps: []})
1853 * class MyService {}
1854 * ```
1855 *
1856 * @publicApi
1857 */
1858export declare interface ConstructorSansProvider {
1859 /**
1860 * A list of `token`s to be resolved by the injector.
1861 */
1862 deps?: any[];
1863}
1864
1865declare const CONTAINERS = "c";
1866
1867/**
1868 * Type of the ContentChild metadata.
1869 *
1870 * @publicApi
1871 */
1872export declare type ContentChild = Query;
1873
1874/**
1875 * ContentChild decorator and metadata.
1876 *
1877 *
1878 * @Annotation
1879 *
1880 * @publicApi
1881 */
1882export declare const ContentChild: ContentChildDecorator;
1883
1884/**
1885 * Initializes a content child query. Consider using `contentChild.required` for queries that should
1886 * always match.
1887 *
1888 * @usageNotes
1889 * Create a child query in your component by declaring a
1890 * class field and initializing it with the `contentChild()` function.
1891 *
1892 * ```ts
1893 * @Component({...})
1894 * export class TestComponent {
1895 * headerEl = contentChild<ElementRef>('h'); // Signal<ElementRef|undefined>
1896 * headerElElRequired = contentChild.required<ElementRef>('h'); // Signal<ElementRef>
1897 * header = contentChild(MyHeader); // Signal<MyHeader|undefined>
1898 * headerRequired = contentChild.required(MyHeader); // Signal<MyHeader>
1899 * }
1900 * ```
1901 */
1902export declare const contentChild: ContentChildFunction;
1903
1904/**
1905 * Type of the ContentChild decorator / constructor function.
1906 *
1907 * @publicApi
1908 */
1909export declare interface ContentChildDecorator {
1910 /**
1911 * @description
1912 * Property decorator that configures a content query.
1913 *
1914 * Use to get the first element or the directive matching the selector from the content DOM.
1915 * If the content DOM changes, and a new child matches the selector,
1916 * the property will be updated.
1917 *
1918 * Does not retrieve elements or directives that are in other components' templates,
1919 * since a component's template is always a black box to its ancestors.
1920 *
1921 * **Metadata Properties**:
1922 *
1923 * * **selector** - The directive type or the name used for querying.
1924 * * **descendants** - If `true` (default) include all descendants of the element. If `false` then
1925 * only query direct children of the element.
1926 * * **read** - Used to read a different token from the queried element.
1927 * * **static** - True to resolve query results before change detection runs,
1928 * false to resolve after change detection. Defaults to false.
1929 *
1930 * The following selectors are supported.
1931 * * Any class with the `@Component` or `@Directive` decorator
1932 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
1933 * with `@ContentChild('cmp')`)
1934 * * Any provider defined in the child component tree of the current component (e.g.
1935 * `@ContentChild(SomeService) someService: SomeService`)
1936 * * Any provider defined through a string token (e.g. `@ContentChild('someToken') someTokenVal:
1937 * any`)
1938 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ContentChild(TemplateRef)
1939 * template;`)
1940 *
1941 * The following values are supported by `read`:
1942 * * Any class with the `@Component` or `@Directive` decorator
1943 * * Any provider defined on the injector of the component that is matched by the `selector` of
1944 * this query
1945 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
1946 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
1947 *
1948 * Difference between dynamic and static queries:
1949 *
1950 * | Queries | Details |
1951 * |:--- |:--- |
1952 * | Dynamic queries \(`static: false`\) | The query resolves before the `ngAfterContentInit()`
1953 * callback is called. The result will be updated for changes to your view, such as changes to
1954 * `ngIf` and `ngFor` blocks. | | Static queries \(`static: true`\) | The query resolves once
1955 * the view has been created, but before change detection runs (before the `ngOnInit()` callback
1956 * is called). The result, though, will never be updated to reflect changes to your view, such as
1957 * changes to `ngIf` and `ngFor` blocks. |
1958 *
1959 * @usageNotes
1960 *
1961 * {@example core/di/ts/contentChild/content_child_howto.ts region='HowTo'}
1962 *
1963 * ### Example
1964 *
1965 * {@example core/di/ts/contentChild/content_child_example.ts region='Component'}
1966 *
1967 * @Annotation
1968 */
1969 (selector: ProviderToken<unknown> | Function | string, opts?: {
1970 descendants?: boolean;
1971 read?: any;
1972 static?: boolean;
1973 }): any;
1974 new (selector: ProviderToken<unknown> | Function | string, opts?: {
1975 descendants?: boolean;
1976 read?: any;
1977 static?: boolean;
1978 }): ContentChild;
1979}
1980
1981/**
1982 * Type of the `contentChild` function.
1983 *
1984 * The contentChild function creates a singular content query. It is a special function that also
1985 * provides access to required query results via the `.required` property.
1986 *
1987 * @developerPreview
1988 */
1989export declare interface ContentChildFunction {
1990 /**
1991 * Initializes a content child query.
1992 *
1993 * Consider using `contentChild.required` for queries that should always match.
1994 * @developerPreview
1995 */
1996 <LocatorT>(locator: ProviderToken<LocatorT> | string, opts?: {
1997 descendants?: boolean;
1998 read?: undefined;
1999 }): Signal<LocatorT | undefined>;
2000 <LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
2001 descendants?: boolean;
2002 read: ProviderToken<ReadT>;
2003 }): Signal<ReadT | undefined>;
2004 /**
2005 * Initializes a content child query that is always expected to match.
2006 *
2007 * @developerPreview
2008 */
2009 required: {
2010 <LocatorT>(locator: ProviderToken<LocatorT> | string, opts?: {
2011 descendants?: boolean;
2012 read?: undefined;
2013 }): Signal<LocatorT>;
2014 <LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
2015 descendants?: boolean;
2016 read: ProviderToken<ReadT>;
2017 }): Signal<ReadT>;
2018 };
2019}
2020
2021/**
2022 * Type of the ContentChildren metadata.
2023 *
2024 *
2025 * @Annotation
2026 * @publicApi
2027 */
2028export declare type ContentChildren = Query;
2029
2030/**
2031 * ContentChildren decorator and metadata.
2032 *
2033 *
2034 * @Annotation
2035 * @publicApi
2036 */
2037export declare const ContentChildren: ContentChildrenDecorator;
2038
2039export declare function contentChildren<LocatorT>(locator: ProviderToken<LocatorT> | string, opts?: {
2040 descendants?: boolean;
2041 read?: undefined;
2042}): Signal<ReadonlyArray<LocatorT>>;
2043
2044export declare function contentChildren<LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
2045 descendants?: boolean;
2046 read: ProviderToken<ReadT>;
2047}): Signal<ReadonlyArray<ReadT>>;
2048
2049/**
2050 * Type of the ContentChildren decorator / constructor function.
2051 *
2052 * @see {@link ContentChildren}
2053 * @publicApi
2054 */
2055export declare interface ContentChildrenDecorator {
2056 /**
2057 * @description
2058 * Property decorator that configures a content query.
2059 *
2060 * Use to get the `QueryList` of elements or directives from the content DOM.
2061 * Any time a child element is added, removed, or moved, the query list will be
2062 * updated, and the changes observable of the query list will emit a new value.
2063 *
2064 * Content queries are set before the `ngAfterContentInit` callback is called.
2065 *
2066 * Does not retrieve elements or directives that are in other components' templates,
2067 * since a component's template is always a black box to its ancestors.
2068 *
2069 * **Metadata Properties**:
2070 *
2071 * * **selector** - The directive type or the name used for querying.
2072 * * **descendants** - If `true` include all descendants of the element. If `false` then only
2073 * query direct children of the element.
2074 * * **emitDistinctChangesOnly** - The ` QueryList#changes` observable will emit new values only
2075 * if the QueryList result has changed. When `false` the `changes` observable might emit even
2076 * if the QueryList has not changed.
2077 * ** Note: *** This config option is **deprecated**, it will be permanently set to `true` and
2078 * removed in future versions of Angular.
2079 * * **read** - Used to read a different token from the queried elements.
2080 *
2081 * The following selectors are supported.
2082 * * Any class with the `@Component` or `@Directive` decorator
2083 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
2084 * with `@ContentChildren('cmp')`)
2085 * * Any provider defined in the child component tree of the current component (e.g.
2086 * `@ContentChildren(SomeService) someService: SomeService`)
2087 * * Any provider defined through a string token (e.g. `@ContentChildren('someToken')
2088 * someTokenVal: any`)
2089 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with
2090 * `@ContentChildren(TemplateRef) template;`)
2091 *
2092 * In addition, multiple string selectors can be separated with a comma (e.g.
2093 * `@ContentChildren('cmp1,cmp2')`)
2094 *
2095 * The following values are supported by `read`:
2096 * * Any class with the `@Component` or `@Directive` decorator
2097 * * Any provider defined on the injector of the component that is matched by the `selector` of
2098 * this query
2099 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
2100 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
2101 *
2102 * @usageNotes
2103 *
2104 * Here is a simple demonstration of how the `ContentChildren` decorator can be used.
2105 *
2106 * {@example core/di/ts/contentChildren/content_children_howto.ts region='HowTo'}
2107 *
2108 * ### Tab-pane example
2109 *
2110 * Here is a slightly more realistic example that shows how `ContentChildren` decorators
2111 * can be used to implement a tab pane component.
2112 *
2113 * {@example core/di/ts/contentChildren/content_children_example.ts region='Component'}
2114 *
2115 * @Annotation
2116 */
2117 (selector: ProviderToken<unknown> | Function | string, opts?: {
2118 descendants?: boolean;
2119 emitDistinctChangesOnly?: boolean;
2120 read?: any;
2121 }): any;
2122 new (selector: ProviderToken<unknown> | Function | string, opts?: {
2123 descendants?: boolean;
2124 emitDistinctChangesOnly?: boolean;
2125 read?: any;
2126 }): Query;
2127}
2128
2129/**
2130 * Definition of what a content queries function should look like.
2131 */
2132declare type ContentQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U, directiveIndex: number) => void;
2133
2134declare const CONTEXT = 8;
2135
2136/**
2137 * Creates a `ComponentRef` instance based on provided component type and a set of options.
2138 *
2139 * @usageNotes
2140 *
2141 * The example below demonstrates how the `createComponent` function can be used
2142 * to create an instance of a ComponentRef dynamically and attach it to an ApplicationRef,
2143 * so that it gets included into change detection cycles.
2144 *
2145 * Note: the example uses standalone components, but the function can also be used for
2146 * non-standalone components (declared in an NgModule) as well.
2147 *
2148 * ```typescript
2149 * @Component({
2150 * standalone: true,
2151 * template: `Hello {{ name }}!`
2152 * })
2153 * class HelloComponent {
2154 * name = 'Angular';
2155 * }
2156 *
2157 * @Component({
2158 * standalone: true,
2159 * template: `<div id="hello-component-host"></div>`
2160 * })
2161 * class RootComponent {}
2162 *
2163 * // Bootstrap an application.
2164 * const applicationRef = await bootstrapApplication(RootComponent);
2165 *
2166 * // Locate a DOM node that would be used as a host.
2167 * const hostElement = document.getElementById('hello-component-host');
2168 *
2169 * // Get an `EnvironmentInjector` instance from the `ApplicationRef`.
2170 * const environmentInjector = applicationRef.injector;
2171 *
2172 * // We can now create a `ComponentRef` instance.
2173 * const componentRef = createComponent(HelloComponent, {hostElement, environmentInjector});
2174 *
2175 * // Last step is to register the newly created ref using the `ApplicationRef` instance
2176 * // to include the component view into change detection cycles.
2177 * applicationRef.attachView(componentRef.hostView);
2178 * componentRef.changeDetectorRef.detectChanges();
2179 * ```
2180 *
2181 * @param component Component class reference.
2182 * @param options Set of options to use:
2183 * * `environmentInjector`: An `EnvironmentInjector` instance to be used for the component, see
2184 * additional info about it [here](/guide/standalone-components#environment-injectors).
2185 * * `hostElement` (optional): A DOM node that should act as a host node for the component. If not
2186 * provided, Angular creates one based on the tag name used in the component selector (and falls
2187 * back to using `div` if selector doesn't have tag name info).
2188 * * `elementInjector` (optional): An `ElementInjector` instance, see additional info about it
2189 * [here](/guide/hierarchical-dependency-injection#elementinjector).
2190 * * `projectableNodes` (optional): A list of DOM nodes that should be projected through
2191 * [`<ng-content>`](api/core/ng-content) of the new component instance.
2192 * @returns ComponentRef instance that represents a given Component.
2193 *
2194 * @publicApi
2195 */
2196export declare function createComponent<C>(component: Type<C>, options: {
2197 environmentInjector: EnvironmentInjector;
2198 hostElement?: Element;
2199 elementInjector?: Injector;
2200 projectableNodes?: Node[][];
2201}): ComponentRef<C>;
2202
2203/**
2204 * Options passed to the `computed` creation function.
2205 */
2206export declare interface CreateComputedOptions<T> {
2207 /**
2208 * A comparison function which defines equality for computed values.
2209 */
2210 equal?: ValueEqualityFn<T>;
2211}
2212
2213/**
2214 * Options passed to the `effect` function.
2215 *
2216 * @developerPreview
2217 */
2218export declare interface CreateEffectOptions {
2219 /**
2220 * The `Injector` in which to create the effect.
2221 *
2222 * If this is not provided, the current [injection context](guide/dependency-injection-context)
2223 * will be used instead (via `inject`).
2224 */
2225 injector?: Injector;
2226 /**
2227 * Whether the `effect` should require manual cleanup.
2228 *
2229 * If this is `false` (the default) the effect will automatically register itself to be cleaned up
2230 * with the current `DestroyRef`.
2231 */
2232 manualCleanup?: boolean;
2233 /**
2234 * Whether the `effect` should allow writing to signals.
2235 *
2236 * Using effects to synchronize data by writing to signals can lead to confusing and potentially
2237 * incorrect behavior, and should be enabled only when necessary.
2238 */
2239 allowSignalWrites?: boolean;
2240}
2241
2242/**
2243 * Create a new environment injector.
2244 *
2245 * Learn more about environment injectors in
2246 * [this guide](guide/standalone-components#environment-injectors).
2247 *
2248 * @param providers An array of providers.
2249 * @param parent A parent environment injector.
2250 * @param debugName An optional name for this injector instance, which will be used in error
2251 * messages.
2252 *
2253 * @publicApi
2254 */
2255export declare function createEnvironmentInjector(providers: Array<Provider | EnvironmentProviders>, parent: EnvironmentInjector, debugName?: string | null): EnvironmentInjector;
2256
2257/**
2258 * Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.
2259 *
2260 * @param ngModule NgModule class.
2261 * @param parentInjector Optional injector instance to use as a parent for the module injector. If
2262 * not provided, `NullInjector` will be used instead.
2263 * @returns NgModuleRef that represents an NgModule instance.
2264 *
2265 * @publicApi
2266 */
2267export declare function createNgModule<T>(ngModule: Type<T>, parentInjector?: Injector): NgModuleRef<T>;
2268
2269/**
2270 * The `createNgModule` function alias for backwards-compatibility.
2271 * Please avoid using it directly and use `createNgModule` instead.
2272 *
2273 * @deprecated Use `createNgModule` instead.
2274 */
2275export declare const createNgModuleRef: typeof createNgModule;
2276
2277/**
2278 * Creates a platform.
2279 * Platforms must be created on launch using this function.
2280 *
2281 * @publicApi
2282 */
2283export declare function createPlatform(injector: Injector): PlatformRef;
2284
2285/**
2286 * Creates a factory for a platform. Can be used to provide or override `Providers` specific to
2287 * your application's runtime needs, such as `PLATFORM_INITIALIZER` and `PLATFORM_ID`.
2288 * @param parentPlatformFactory Another platform factory to modify. Allows you to compose factories
2289 * to build up configurations that might be required by different libraries or parts of the
2290 * application.
2291 * @param name Identifies the new platform factory.
2292 * @param providers A set of dependency providers for platforms created with the new factory.
2293 *
2294 * @publicApi
2295 */
2296export declare function createPlatformFactory(parentPlatformFactory: ((extraProviders?: StaticProvider[]) => PlatformRef) | null, name: string, providers?: StaticProvider[]): (extraProviders?: StaticProvider[]) => PlatformRef;
2297
2298/**
2299 * Options passed to the `signal` creation function.
2300 */
2301export declare interface CreateSignalOptions<T> {
2302 /**
2303 * A comparison function which defines equality for signal values.
2304 */
2305 equal?: ValueEqualityFn<T>;
2306}
2307
2308/**
2309 * Token used to configure the [Content Security Policy](https://web.dev/strict-csp/) nonce that
2310 * Angular will apply when inserting inline styles. If not provided, Angular will look up its value
2311 * from the `ngCspNonce` attribute of the application root node.
2312 *
2313 * @publicApi
2314 */
2315export declare const CSP_NONCE: InjectionToken<string | null>;
2316
2317
2318/**
2319 * Expresses a single CSS Selector.
2320 *
2321 * Beginning of array
2322 * - First index: element name
2323 * - Subsequent odd indices: attr keys
2324 * - Subsequent even indices: attr values
2325 *
2326 * After SelectorFlags.CLASS flag
2327 * - Class name values
2328 *
2329 * SelectorFlags.NOT flag
2330 * - Changes the mode to NOT
2331 * - Can be combined with other flags to set the element / attr / class mode
2332 *
2333 * e.g. SelectorFlags.NOT | SelectorFlags.ELEMENT
2334 *
2335 * Example:
2336 * Original: `div.foo.bar[attr1=val1][attr2]`
2337 * Parsed: ['div', 'attr1', 'val1', 'attr2', '', SelectorFlags.CLASS, 'foo', 'bar']
2338 *
2339 * Original: 'div[attr1]:not(.foo[attr2])
2340 * Parsed: [
2341 * 'div', 'attr1', '',
2342 * SelectorFlags.NOT | SelectorFlags.ATTRIBUTE 'attr2', '', SelectorFlags.CLASS, 'foo'
2343 * ]
2344 *
2345 * See more examples in node_selector_matcher_spec.ts
2346 */
2347declare type CssSelector = (string | SelectorFlags)[];
2348
2349/**
2350 * An object literal of this type is used to represent the metadata of a constructor dependency.
2351 * The type itself is never referred to from generated code.
2352 *
2353 * @publicApi
2354 */
2355declare type CtorDependency = {
2356 /**
2357 * If an `@Attribute` decorator is used, this represents the injected attribute's name. If the
2358 * attribute name is a dynamic expression instead of a string literal, this will be the unknown
2359 * type.
2360 */
2361 attribute?: string | unknown;
2362 /**
2363 * If `@Optional()` is used, this key is set to true.
2364 */
2365 optional?: true;
2366 /**
2367 * If `@Host` is used, this key is set to true.
2368 */
2369 host?: true;
2370 /**
2371 * If `@Self` is used, this key is set to true.
2372 */
2373 self?: true;
2374 /**
2375 * If `@SkipSelf` is used, this key is set to true.
2376 */
2377 skipSelf?: true;
2378} | null;
2379
2380/**
2381 * Defines a schema that allows an NgModule to contain the following:
2382 * - Non-Angular elements named with dash case (`-`).
2383 * - Element properties named with dash case (`-`).
2384 * Dash case is the naming convention for custom elements.
2385 *
2386 * @publicApi
2387 */
2388export declare const CUSTOM_ELEMENTS_SCHEMA: SchemaMetadata;
2389
2390/**
2391 * @publicApi
2392 *
2393 * @see [Component testing scenarios](guide/testing-components-scenarios)
2394 * @see [Basics of testing components](guide/testing-components-basics)
2395 * @see [Testing utility APIs](guide/testing-utility-apis)
2396 */
2397export declare class DebugElement extends DebugNode {
2398 constructor(nativeNode: Element);
2399 /**
2400 * The underlying DOM element at the root of the component.
2401 */
2402 get nativeElement(): any;
2403 /**
2404 * The element tag name, if it is an element.
2405 */
2406 get name(): string;
2407 /**
2408 * Gets a map of property names to property values for an element.
2409 *
2410 * This map includes:
2411 * - Regular property bindings (e.g. `[id]="id"`)
2412 * - Host property bindings (e.g. `host: { '[id]': "id" }`)
2413 * - Interpolated property bindings (e.g. `id="{{ value }}")
2414 *
2415 * It does not include:
2416 * - input property bindings (e.g. `[myCustomInput]="value"`)
2417 * - attribute bindings (e.g. `[attr.role]="menu"`)
2418 */
2419 get properties(): {
2420 [key: string]: any;
2421 };
2422 /**
2423 * A map of attribute names to attribute values for an element.
2424 */
2425 get attributes(): {
2426 [key: string]: string | null;
2427 };
2428 /**
2429 * The inline styles of the DOM element.
2430 */
2431 get styles(): {
2432 [key: string]: string | null;
2433 };
2434 /**
2435 * A map containing the class names on the element as keys.
2436 *
2437 * This map is derived from the `className` property of the DOM element.
2438 *
2439 * Note: The values of this object will always be `true`. The class key will not appear in the KV
2440 * object if it does not exist on the element.
2441 *
2442 * @see [Element.className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className)
2443 */
2444 get classes(): {
2445 [key: string]: boolean;
2446 };
2447 /**
2448 * The `childNodes` of the DOM element as a `DebugNode` array.
2449 *
2450 * @see [Node.childNodes](https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes)
2451 */
2452 get childNodes(): DebugNode[];
2453 /**
2454 * The immediate `DebugElement` children. Walk the tree by descending through `children`.
2455 */
2456 get children(): DebugElement[];
2457 /**
2458 * @returns the first `DebugElement` that matches the predicate at any depth in the subtree.
2459 */
2460 query(predicate: Predicate<DebugElement>): DebugElement;
2461 /**
2462 * @returns All `DebugElement` matches for the predicate at any depth in the subtree.
2463 */
2464 queryAll(predicate: Predicate<DebugElement>): DebugElement[];
2465 /**
2466 * @returns All `DebugNode` matches for the predicate at any depth in the subtree.
2467 */
2468 queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
2469 /**
2470 * Triggers the event by its name if there is a corresponding listener in the element's
2471 * `listeners` collection.
2472 *
2473 * If the event lacks a listener or there's some other problem, consider
2474 * calling `nativeElement.dispatchEvent(eventObject)`.
2475 *
2476 * @param eventName The name of the event to trigger
2477 * @param eventObj The _event object_ expected by the handler
2478 *
2479 * @see [Testing components scenarios](guide/testing-components-scenarios#trigger-event-handler)
2480 */
2481 triggerEventHandler(eventName: string, eventObj?: any): void;
2482}
2483
2484/**
2485 * @publicApi
2486 */
2487export declare class DebugEventListener {
2488 name: string;
2489 callback: Function;
2490 constructor(name: string, callback: Function);
2491}
2492
2493/**
2494 * @publicApi
2495 */
2496export declare class DebugNode {
2497 /**
2498 * The underlying DOM node.
2499 */
2500 readonly nativeNode: any;
2501 constructor(nativeNode: Node);
2502 /**
2503 * The `DebugElement` parent. Will be `null` if this is the root element.
2504 */
2505 get parent(): DebugElement | null;
2506 /**
2507 * The host dependency injector. For example, the root element's component instance injector.
2508 */
2509 get injector(): Injector;
2510 /**
2511 * The element's own component instance, if it has one.
2512 */
2513 get componentInstance(): any;
2514 /**
2515 * An object that provides parent context for this element. Often an ancestor component instance
2516 * that governs this element.
2517 *
2518 * When an element is repeated within *ngFor, the context is an `NgForOf` whose `$implicit`
2519 * property is the value of the row instance value. For example, the `hero` in `*ngFor="let hero
2520 * of heroes"`.
2521 */
2522 get context(): any;
2523 /**
2524 * The callbacks attached to the component's @Output properties and/or the element's event
2525 * properties.
2526 */
2527 get listeners(): DebugEventListener[];
2528 /**
2529 * Dictionary of objects associated with template local variables (e.g. #foo), keyed by the local
2530 * variable name.
2531 */
2532 get references(): {
2533 [key: string]: any;
2534 };
2535 /**
2536 * This component's injector lookup tokens. Includes the component itself plus the tokens that the
2537 * component lists in its providers metadata.
2538 */
2539 get providerTokens(): any[];
2540}
2541
2542declare const DECLARATION_COMPONENT_VIEW = 15;
2543
2544declare const DECLARATION_LCONTAINER = 16;
2545
2546declare const DECLARATION_VIEW = 14;
2547
2548/**
2549 * Provide this token to set the default currency code your application uses for
2550 * CurrencyPipe when there is no currency code passed into it. This is only used by
2551 * CurrencyPipe and has no relation to locale currency. Defaults to USD if not configured.
2552 *
2553 * See the [i18n guide](guide/i18n-common-locale-id) for more information.
2554 *
2555 * <div class="alert is-helpful">
2556 *
2557 * **Deprecation notice:**
2558 *
2559 * The default currency code is currently always `USD` but this is deprecated from v9.
2560 *
2561 * **In v10 the default currency code will be taken from the current locale.**
2562 *
2563 * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in
2564 * your application `NgModule`:
2565 *
2566 * ```ts
2567 * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}
2568 * ```
2569 *
2570 * </div>
2571 *
2572 * @usageNotes
2573 * ### Example
2574 *
2575 * ```typescript
2576 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
2577 * import { AppModule } from './app/app.module';
2578 *
2579 * platformBrowserDynamic().bootstrapModule(AppModule, {
2580 * providers: [{provide: DEFAULT_CURRENCY_CODE, useValue: 'EUR' }]
2581 * });
2582 * ```
2583 *
2584 * @publicApi
2585 */
2586export declare const DEFAULT_CURRENCY_CODE: InjectionToken<string>;
2587
2588/**
2589 * @deprecated v4.0.0 - Should not be part of public API.
2590 * @publicApi
2591 */
2592export declare class DefaultIterableDiffer<V> implements IterableDiffer<V>, IterableChanges<V> {
2593 readonly length: number;
2594 readonly collection: V[] | Iterable<V> | null;
2595 private _linkedRecords;
2596 private _unlinkedRecords;
2597 private _previousItHead;
2598 private _itHead;
2599 private _itTail;
2600 private _additionsHead;
2601 private _additionsTail;
2602 private _movesHead;
2603 private _movesTail;
2604 private _removalsHead;
2605 private _removalsTail;
2606 private _identityChangesHead;
2607 private _identityChangesTail;
2608 private _trackByFn;
2609 constructor(trackByFn?: TrackByFunction<V>);
2610 forEachItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2611 forEachOperation(fn: (item: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void;
2612 forEachPreviousItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2613 forEachAddedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2614 forEachMovedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2615 forEachRemovedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2616 forEachIdentityChange(fn: (record: IterableChangeRecord_<V>) => void): void;
2617 diff(collection: NgIterable<V> | null | undefined): DefaultIterableDiffer<V> | null;
2618 onDestroy(): void;
2619 check(collection: NgIterable<V>): boolean;
2620 get isDirty(): boolean;
2621 private _addToRemovals;
2622}
2623
2624/**
2625 * Describes the state of defer block dependency loading.
2626 */
2627declare enum DeferDependenciesLoadingState {
2628 /** Initial state, dependency loading is not yet triggered */
2629 NOT_STARTED = 0,
2630 /** Dependency loading is in progress */
2631 IN_PROGRESS = 1,
2632 /** Dependency loading has completed successfully */
2633 COMPLETE = 2,
2634 /** Dependency loading has failed */
2635 FAILED = 3
2636}
2637
2638/** Configuration object for a loading block as it is stored in the component constants. */
2639declare type DeferredLoadingBlockConfig = [minimumTime: number | null, afterTime: number | null];
2640
2641/** Configuration object for a placeholder block as it is stored in the component constants. */
2642declare type DeferredPlaceholderBlockConfig = [minimumTime: number | null];
2643
2644/**
2645 * @deprecated in v8, delete after v10. This API should be used only by generated code, and that
2646 * code should now use ɵɵdefineInjectable instead.
2647 * @publicApi
2648 */
2649export declare const defineInjectable: typeof ɵɵdefineInjectable;
2650
2651/**
2652 * Below are constants for LContainer indices to help us look up LContainer members
2653 * without having to remember the specific indices.
2654 * Uglify will inline these when minifying so there shouldn't be a cost.
2655 */
2656declare const DEHYDRATED_VIEWS = 6;
2657
2658/**
2659 * An object that contains hydration-related information serialized
2660 * on the server, as well as the necessary references to segments of
2661 * the DOM, to facilitate the hydration process for a given view
2662 * inside a view container (either an embedded view or a view created
2663 * for a component).
2664 */
2665declare interface DehydratedContainerView extends DehydratedView {
2666 data: Readonly<SerializedContainerView>;
2667}
2668
2669/**
2670 * An object that contains hydration-related information serialized
2671 * on the server, as well as the necessary references to segments of
2672 * the DOM, to facilitate the hydration process for a given hydration
2673 * boundary on the client.
2674 */
2675declare interface DehydratedView {
2676 /**
2677 * The readonly hydration annotation data.
2678 */
2679 data: Readonly<SerializedView>;
2680 /**
2681 * A reference to the first child in a DOM segment associated
2682 * with a given hydration boundary.
2683 *
2684 * Once a view becomes hydrated, the value is set to `null`, which
2685 * indicates that further detaching/attaching view actions should result
2686 * in invoking corresponding DOM actions (attaching DOM nodes action is
2687 * skipped when we hydrate, since nodes are already in the DOM).
2688 */
2689 firstChild: RNode | null;
2690 /**
2691 * Stores references to first nodes in DOM segments that
2692 * represent either an <ng-container> or a view container.
2693 */
2694 segmentHeads?: {
2695 [index: number]: RNode | null;
2696 };
2697 /**
2698 * An instance of a Set that represents nodes disconnected from
2699 * the DOM tree at the serialization time, but otherwise present
2700 * in the internal data structures.
2701 *
2702 * The Set is based on the `SerializedView[DISCONNECTED_NODES]` data
2703 * and is needed to have constant-time lookups.
2704 *
2705 * If the value is `null`, it means that there were no disconnected
2706 * nodes detected in this view at serialization time.
2707 */
2708 disconnectedNodes?: Set<number> | null;
2709}
2710
2711/**
2712 * Describes the shape of a function generated by the compiler
2713 * to download dependencies that can be defer-loaded.
2714 */
2715declare type DependencyResolverFn = () => Array<Promise<DependencyType>>;
2716
2717declare type DependencyType = ɵDirectiveType<any> | ɵComponentType<any> | PipeType<any> | Type<any>;
2718
2719declare type DependencyTypeList = Array<DependencyType>;
2720
2721/**
2722 * An implementation of DepsTrackerApi which will be used for JIT and local compilation.
2723 */
2724declare class DepsTracker implements DepsTrackerApi {
2725 private ownerNgModule;
2726 private ngModulesWithSomeUnresolvedDecls;
2727 private ngModulesScopeCache;
2728 private standaloneComponentsScopeCache;
2729 /**
2730 * Attempts to resolve ng module's forward ref declarations as much as possible and add them to
2731 * the `ownerNgModule` map. This method normally should be called after the initial parsing when
2732 * all the forward refs are resolved (e.g., when trying to render a component)
2733 */
2734 private resolveNgModulesDecls;
2735 /** @override */
2736 getComponentDependencies(type: ɵComponentType<any>, rawImports?: RawScopeInfoFromDecorator[]): ComponentDependencies;
2737 /**
2738 * @override
2739 * This implementation does not make use of param scopeInfo since it assumes the scope info is
2740 * already added to the type itself through methods like {@link ɵɵsetNgModuleScope}
2741 */
2742 registerNgModule(type: Type<any>, scopeInfo: NgModuleScopeInfoFromDecorator): void;
2743 /** @override */
2744 clearScopeCacheFor(type: Type<any>): void;
2745 /** @override */
2746 getNgModuleScope(type: ɵNgModuleType<any>): NgModuleScope;
2747 /** Compute NgModule scope afresh. */
2748 private computeNgModuleScope;
2749 /** @override */
2750 getStandaloneComponentScope(type: ɵComponentType<any>, rawImports?: RawScopeInfoFromDecorator[]): StandaloneComponentScope;
2751 private computeStandaloneComponentScope;
2752 /** @override */
2753 isOrphanComponent(cmp: Type<any>): boolean;
2754}
2755
2756/**
2757 * Public API for runtime deps tracker (RDT).
2758 *
2759 * All downstream tools should only use these methods.
2760 */
2761declare interface DepsTrackerApi {
2762 /**
2763 * Computes the component dependencies, i.e., a set of components/directive/pipes that could be
2764 * present in the component's template (This set might contain directives/components/pipes not
2765 * necessarily used in the component's template depending on the implementation).
2766 *
2767 * Standalone components should specify `rawImports` as this information is not available from
2768 * their type. The consumer (e.g., {@link getStandaloneDefFunctions}) is expected to pass this
2769 * parameter.
2770 *
2771 * The implementation is expected to use some caching mechanism in order to optimize the resources
2772 * needed to do this computation.
2773 */
2774 getComponentDependencies(cmp: ɵComponentType<any>, rawImports?: (Type<any> | (() => Type<any>))[]): ComponentDependencies;
2775 /**
2776 * Registers an NgModule into the tracker with the given scope info.
2777 *
2778 * This method should be called for every NgModule whether it is compiled in local mode or not.
2779 * This is needed in order to compute component's dependencies as some dependencies might be in
2780 * different compilation units with different compilation mode.
2781 */
2782 registerNgModule(type: Type<any>, scopeInfo: NgModuleScopeInfoFromDecorator): void;
2783 /**
2784 * Clears the scope cache for NgModule or standalone component. This will force re-calculation of
2785 * the scope, which could be an expensive operation as it involves aggregating transitive closure.
2786 *
2787 * The main application of this method is for test beds where we want to clear the cache to
2788 * enforce scope update after overriding.
2789 */
2790 clearScopeCacheFor(type: Type<any>): void;
2791 /**
2792 * Returns the scope of NgModule. Mainly to be used by JIT and test bed.
2793 *
2794 * The scope value here is memoized. To enforce a new calculation bust the cache by using
2795 * `clearScopeCacheFor` method.
2796 */
2797 getNgModuleScope(type: ɵNgModuleType<any>): NgModuleScope;
2798 /**
2799 * Returns the scope of standalone component. Mainly to be used by JIT. This method should be
2800 * called lazily after the initial parsing so that all the forward refs can be resolved.
2801 *
2802 * @param rawImports the imports statement as appears on the component decorate which consists of
2803 * Type as well as forward refs.
2804 *
2805 * The scope value here is memoized. To enforce a new calculation bust the cache by using
2806 * `clearScopeCacheFor` method.
2807 */
2808 getStandaloneComponentScope(type: ɵComponentType<any>, rawImports: (Type<any> | (() => Type<any>))[]): StandaloneComponentScope;
2809 /**
2810 * Checks if the NgModule declaring the component is not loaded into the browser yet. Always
2811 * returns false for standalone components.
2812 */
2813 isOrphanComponent(cmp: ɵComponentType<any>): boolean;
2814}
2815
2816/**
2817 * Array of destroy hooks that should be executed for a view and their directive indices.
2818 *
2819 * The array is set up as a series of number/function or number/(number|function)[]:
2820 * - Even indices represent the context with which hooks should be called.
2821 * - Odd indices are the hook functions themselves. If a value at an odd index is an array,
2822 * it represents the destroy hooks of a `multi` provider where:
2823 * - Even indices represent the index of the provider for which we've registered a destroy hook,
2824 * inside of the `multi` provider array.
2825 * - Odd indices are the destroy hook functions.
2826 * For example:
2827 * LView: `[0, 1, 2, AService, 4, [BService, CService, DService]]`
2828 * destroyHooks: `[3, AService.ngOnDestroy, 5, [0, BService.ngOnDestroy, 2, DService.ngOnDestroy]]`
2829 *
2830 * In the example above `AService` is a type provider with an `ngOnDestroy`, whereas `BService`,
2831 * `CService` and `DService` are part of a `multi` provider where only `BService` and `DService`
2832 * have an `ngOnDestroy` hook.
2833 */
2834declare type DestroyHookData = (HookEntry | HookData)[];
2835
2836/**
2837 * Destroys the current Angular platform and all Angular applications on the page.
2838 * Destroys all modules and listeners registered with the platform.
2839 *
2840 * @publicApi
2841 */
2842export declare function destroyPlatform(): void;
2843
2844
2845/**
2846 * `DestroyRef` lets you set callbacks to run for any cleanup or destruction behavior.
2847 * The scope of this destruction depends on where `DestroyRef` is injected. If `DestroyRef`
2848 * is injected in a component or directive, the callbacks run when that component or
2849 * directive is destroyed. Otherwise the callbacks run when a corresponding injector is destroyed.
2850 *
2851 * @publicApi
2852 */
2853export declare abstract class DestroyRef {
2854 /**
2855 * Registers a destroy callback in a given lifecycle scope. Returns a cleanup function that can
2856 * be invoked to unregister the callback.
2857 *
2858 * @usageNotes
2859 * ### Example
2860 * ```typescript
2861 * const destroyRef = inject(DestroyRef);
2862 *
2863 * // register a destroy callback
2864 * const unregisterFn = destroyRef.onDestroy(() => doSomethingOnDestroy());
2865 *
2866 * // stop the destroy callback from executing if needed
2867 * unregisterFn();
2868 * ```
2869 */
2870 abstract onDestroy(callback: () => void): () => void;
2871}
2872
2873/**
2874 * Directive decorator and metadata.
2875 *
2876 * @Annotation
2877 * @publicApi
2878 */
2879export declare interface Directive {
2880 /**
2881 * The CSS selector that identifies this directive in a template
2882 * and triggers instantiation of the directive.
2883 *
2884 * Declare as one of the following:
2885 *
2886 * - `element-name`: Select by element name.
2887 * - `.class`: Select by class name.
2888 * - `[attribute]`: Select by attribute name.
2889 * - `[attribute=value]`: Select by attribute name and value.
2890 * - `:not(sub_selector)`: Select only if the element does not match the `sub_selector`.
2891 * - `selector1, selector2`: Select if either `selector1` or `selector2` matches.
2892 *
2893 * Angular only allows directives to apply on CSS selectors that do not cross
2894 * element boundaries.
2895 *
2896 * For the following template HTML, a directive with an `input[type=text]` selector,
2897 * would be instantiated only on the `<input type="text">` element.
2898 *
2899 * ```html
2900 * <form>
2901 * <input type="text">
2902 * <input type="radio">
2903 * <form>
2904 * ```
2905 *
2906 */
2907 selector?: string;
2908 /**
2909 * Enumerates the set of data-bound input properties for a directive
2910 *
2911 * Angular automatically updates input properties during change detection.
2912 * The `inputs` property accepts either strings or object literals that configure the directive
2913 * properties that should be exposed as inputs.
2914 *
2915 * When an object literal is passed in, the `name` property indicates which property on the
2916 * class the input should write to, while the `alias` determines the name under
2917 * which the input will be available in template bindings. The `required` property indicates that
2918 * the input is required which will trigger a compile-time error if it isn't passed in when the
2919 * directive is used.
2920 *
2921 * When a string is passed into the `inputs` array, it can have a format of `'name'` or
2922 * `'name: alias'` where `name` is the property on the class that the directive should write
2923 * to, while the `alias` determines the name under which the input will be available in
2924 * template bindings. String-based input definitions are assumed to be optional.
2925 *
2926 * @usageNotes
2927 *
2928 * The following example creates a component with two data-bound properties.
2929 *
2930 * ```typescript
2931 * @Component({
2932 * selector: 'bank-account',
2933 * inputs: ['bankName', {name: 'id', alias: 'account-id'}],
2934 * template: `
2935 * Bank Name: {{bankName}}
2936 * Account Id: {{id}}
2937 * `
2938 * })
2939 * class BankAccount {
2940 * bankName: string;
2941 * id: string;
2942 * }
2943 * ```
2944 *
2945 */
2946 inputs?: ({
2947 name: string;
2948 alias?: string;
2949 required?: boolean;
2950 transform?: (value: any) => any;
2951 } | string)[];
2952 /**
2953 * Enumerates the set of event-bound output properties.
2954 *
2955 * When an output property emits an event, an event handler attached to that event
2956 * in the template is invoked.
2957 *
2958 * The `outputs` property defines a set of `directiveProperty` to `alias`
2959 * configuration:
2960 *
2961 * - `directiveProperty` specifies the component property that emits events.
2962 * - `alias` specifies the DOM property the event handler is attached to.
2963 *
2964 * @usageNotes
2965 *
2966 * ```typescript
2967 * @Component({
2968 * selector: 'child-dir',
2969 * outputs: [ 'bankNameChange' ],
2970 * template: `<input (input)="bankNameChange.emit($event.target.value)" />`
2971 * })
2972 * class ChildDir {
2973 * bankNameChange: EventEmitter<string> = new EventEmitter<string>();
2974 * }
2975 *
2976 * @Component({
2977 * selector: 'main',
2978 * template: `
2979 * {{ bankName }} <child-dir (bankNameChange)="onBankNameChange($event)"></child-dir>
2980 * `
2981 * })
2982 * class MainComponent {
2983 * bankName: string;
2984 *
2985 * onBankNameChange(bankName: string) {
2986 * this.bankName = bankName;
2987 * }
2988 * }
2989 * ```
2990 *
2991 */
2992 outputs?: string[];
2993 /**
2994 * Configures the [injector](guide/glossary#injector) of this
2995 * directive or component with a [token](guide/glossary#di-token)
2996 * that maps to a [provider](guide/glossary#provider) of a dependency.
2997 */
2998 providers?: Provider[];
2999 /**
3000 * Defines the name that can be used in the template to assign this directive to a variable.
3001 *
3002 * @usageNotes
3003 *
3004 * ```ts
3005 * @Directive({
3006 * selector: 'child-dir',
3007 * exportAs: 'child'
3008 * })
3009 * class ChildDir {
3010 * }
3011 *
3012 * @Component({
3013 * selector: 'main',
3014 * template: `<child-dir #c="child"></child-dir>`
3015 * })
3016 * class MainComponent {
3017 * }
3018 * ```
3019 *
3020 */
3021 exportAs?: string;
3022 /**
3023 * Configures the queries that will be injected into the directive.
3024 *
3025 * Content queries are set before the `ngAfterContentInit` callback is called.
3026 * View queries are set before the `ngAfterViewInit` callback is called.
3027 *
3028 * @usageNotes
3029 *
3030 * The following example shows how queries are defined
3031 * and when their results are available in lifecycle hooks:
3032 *
3033 * ```ts
3034 * @Component({
3035 * selector: 'someDir',
3036 * queries: {
3037 * contentChildren: new ContentChildren(ChildDirective),
3038 * viewChildren: new ViewChildren(ChildDirective)
3039 * },
3040 * template: '<child-directive></child-directive>'
3041 * })
3042 * class SomeDir {
3043 * contentChildren: QueryList<ChildDirective>,
3044 * viewChildren: QueryList<ChildDirective>
3045 *
3046 * ngAfterContentInit() {
3047 * // contentChildren is set
3048 * }
3049 *
3050 * ngAfterViewInit() {
3051 * // viewChildren is set
3052 * }
3053 * }
3054 * ```
3055 *
3056 * @Annotation
3057 */
3058 queries?: {
3059 [key: string]: any;
3060 };
3061 /**
3062 * Maps class properties to host element bindings for properties,
3063 * attributes, and events, using a set of key-value pairs.
3064 *
3065 * Angular automatically checks host property bindings during change detection.
3066 * If a binding changes, Angular updates the directive's host element.
3067 *
3068 * When the key is a property of the host element, the property value is
3069 * propagated to the specified DOM property.
3070 *
3071 * When the key is a static attribute in the DOM, the attribute value
3072 * is propagated to the specified property in the host element.
3073 *
3074 * For event handling:
3075 * - The key is the DOM event that the directive listens to.
3076 * To listen to global events, add the target to the event name.
3077 * The target can be `window`, `document` or `body`.
3078 * - The value is the statement to execute when the event occurs. If the
3079 * statement evaluates to `false`, then `preventDefault` is applied on the DOM
3080 * event. A handler method can refer to the `$event` local variable.
3081 *
3082 */
3083 host?: {
3084 [key: string]: string;
3085 };
3086 /**
3087 * When present, this directive/component is ignored by the AOT compiler.
3088 * It remains in distributed code, and the JIT compiler attempts to compile it
3089 * at run time, in the browser.
3090 * To ensure the correct behavior, the app must import `@angular/compiler`.
3091 */
3092 jit?: true;
3093 /**
3094 * Angular directives marked as `standalone` do not need to be declared in an NgModule. Such
3095 * directives don't depend on any "intermediate context" of an NgModule (ex. configured
3096 * providers).
3097 *
3098 * More information about standalone components, directives, and pipes can be found in [this
3099 * guide](guide/standalone-components).
3100 */
3101 standalone?: boolean;
3102 /**
3103 * Standalone directives that should be applied to the host whenever the directive is matched.
3104 * By default, none of the inputs or outputs of the host directives will be available on the host,
3105 * unless they are specified in the `inputs` or `outputs` properties.
3106 *
3107 * You can additionally alias inputs and outputs by putting a colon and the alias after the
3108 * original input or output name. For example, if a directive applied via `hostDirectives`
3109 * defines an input named `menuDisabled`, you can alias this to `disabled` by adding
3110 * `'menuDisabled: disabled'` as an entry to `inputs`.
3111 */
3112 hostDirectives?: (Type<unknown> | {
3113 directive: Type<unknown>;
3114 inputs?: string[];
3115 outputs?: string[];
3116 })[];
3117}
3118
3119/**
3120 * Type of the Directive metadata.
3121 *
3122 * @publicApi
3123 */
3124export declare const Directive: DirectiveDecorator;
3125
3126/**
3127 * Partial metadata for a given directive instance.
3128 * This information might be useful for debugging purposes or tooling.
3129 * Currently only `inputs` and `outputs` metadata is available.
3130 *
3131 * @publicApi
3132 */
3133declare interface DirectiveDebugMetadata {
3134 inputs: Record<string, string>;
3135 outputs: Record<string, string>;
3136}
3137
3138/**
3139 * Type of the Directive decorator / constructor function.
3140 * @publicApi
3141 */
3142export declare interface DirectiveDecorator {
3143 /**
3144 * Decorator that marks a class as an Angular directive.
3145 * You can define your own directives to attach custom behavior to elements in the DOM.
3146 *
3147 * The options provide configuration metadata that determines
3148 * how the directive should be processed, instantiated and used at
3149 * runtime.
3150 *
3151 * Directive classes, like component classes, can implement
3152 * [life-cycle hooks](guide/lifecycle-hooks) to influence their configuration and behavior.
3153 *
3154 *
3155 * @usageNotes
3156 * To define a directive, mark the class with the decorator and provide metadata.
3157 *
3158 * ```ts
3159 * import {Directive} from '@angular/core';
3160 *
3161 * @Directive({
3162 * selector: 'my-directive',
3163 * })
3164 * export class MyDirective {
3165 * ...
3166 * }
3167 * ```
3168 *
3169 * ### Declaring directives
3170 *
3171 * In order to make a directive available to other components in your application, you should do
3172 * one of the following:
3173 * - either mark the directive as [standalone](guide/standalone-components),
3174 * - or declare it in an NgModule by adding it to the `declarations` and `exports` fields.
3175 *
3176 * ** Marking a directive as standalone **
3177 *
3178 * You can add the `standalone: true` flag to the Directive decorator metadata to declare it as
3179 * [standalone](guide/standalone-components):
3180 *
3181 * ```ts
3182 * @Directive({
3183 * standalone: true,
3184 * selector: 'my-directive',
3185 * })
3186 * class MyDirective {}
3187 * ```
3188 *
3189 * When marking a directive as standalone, please make sure that the directive is not already
3190 * declared in an NgModule.
3191 *
3192 *
3193 * ** Declaring a directive in an NgModule **
3194 *
3195 * Another approach is to declare a directive in an NgModule:
3196 *
3197 * ```ts
3198 * @Directive({
3199 * selector: 'my-directive',
3200 * })
3201 * class MyDirective {}
3202 *
3203 * @NgModule({
3204 * declarations: [MyDirective, SomeComponent],
3205 * exports: [MyDirective], // making it available outside of this module
3206 * })
3207 * class SomeNgModule {}
3208 * ```
3209 *
3210 * When declaring a directive in an NgModule, please make sure that:
3211 * - the directive is declared in exactly one NgModule.
3212 * - the directive is not standalone.
3213 * - you do not re-declare a directive imported from another module.
3214 * - the directive is included into the `exports` field as well if you want this directive to be
3215 * accessible for components outside of the NgModule.
3216 *
3217 *
3218 * @Annotation
3219 */
3220 (obj?: Directive): TypeDecorator;
3221 /**
3222 * See the `Directive` decorator.
3223 */
3224 new (obj?: Directive): Directive;
3225}
3226
3227declare interface DirectiveDefFeature {
3228 <T>(directiveDef: ɵDirectiveDef<T>): void;
3229 /**
3230 * Marks a feature as something that {@link InheritDefinitionFeature} will execute
3231 * during inheritance.
3232 *
3233 * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers
3234 * identifying the change as a side effect, and the feature will be included in
3235 * every bundle.
3236 */
3237 ngInherit?: true;
3238}
3239
3240declare interface DirectiveDefinition<T> {
3241 /**
3242 * Directive type, needed to configure the injector.
3243 */
3244 type: Type<T>;
3245 /** The selectors that will be used to match nodes to this directive. */
3246 selectors?: ɵCssSelectorList;
3247 /**
3248 * A map of input names.
3249 */
3250 inputs?: DirectiveInputs<T>;
3251 /**
3252 * A map of output names.
3253 *
3254 * The format is in: `{[actualPropertyName: string]:string}`.
3255 *
3256 * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`.
3257 *
3258 * This allows the render to re-construct the minified and non-minified names
3259 * of properties.
3260 */
3261 outputs?: {
3262 [P in keyof T]?: string;
3263 };
3264 /**
3265 * A list of optional features to apply.
3266 *
3267 * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}, {@link InheritDefinitionFeature}
3268 */
3269 features?: DirectiveDefFeature[];
3270 /**
3271 * Function executed by the parent template to allow child directive to apply host bindings.
3272 */
3273 hostBindings?: HostBindingsFunction<T>;
3274 /**
3275 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
3276 *
3277 * Used to calculate the length of the component's LView array, so we
3278 * can pre-fill the array and set the host binding start index.
3279 */
3280 hostVars?: number;
3281 /**
3282 * Assign static attribute values to a host element.
3283 *
3284 * This property will assign static attribute values as well as class and style
3285 * values to a host element. Since attribute values can consist of different types of values,
3286 * the `hostAttrs` array must include the values in the following format:
3287 *
3288 * attrs = [
3289 * // static attributes (like `title`, `name`, `id`...)
3290 * attr1, value1, attr2, value,
3291 *
3292 * // a single namespace value (like `x:id`)
3293 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
3294 *
3295 * // another single namespace value (like `x:name`)
3296 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
3297 *
3298 * // a series of CSS classes that will be applied to the element (no spaces)
3299 * CLASSES_MARKER, class1, class2, class3,
3300 *
3301 * // a series of CSS styles (property + value) that will be applied to the element
3302 * STYLES_MARKER, prop1, value1, prop2, value2
3303 * ]
3304 *
3305 * All non-class and non-style attributes must be defined at the start of the list
3306 * first before all class and style values are set. When there is a change in value
3307 * type (like when classes and styles are introduced) a marker must be used to separate
3308 * the entries. The marker values themselves are set via entries found in the
3309 * [AttributeMarker] enum.
3310 */
3311 hostAttrs?: TAttributes;
3312 /**
3313 * Function to create instances of content queries associated with a given directive.
3314 */
3315 contentQueries?: ContentQueriesFunction<T>;
3316 /**
3317 * Additional set of instructions specific to view query processing. This could be seen as a
3318 * set of instructions to be inserted into the template function.
3319 */
3320 viewQuery?: ViewQueriesFunction<T> | null;
3321 /**
3322 * Defines the name that can be used in the template to assign this directive to a variable.
3323 *
3324 * See: {@link Directive.exportAs}
3325 */
3326 exportAs?: string[];
3327 /**
3328 * Whether this directive/component is standalone.
3329 */
3330 standalone?: boolean;
3331 /**
3332 * Whether this directive/component is signal-based.
3333 */
3334 signals?: boolean;
3335}
3336
3337declare type DirectiveDefList = (ɵDirectiveDef<any> | ɵComponentDef<any>)[];
3338
3339/**
3340 * Type used for directiveDefs on component definition.
3341 *
3342 * The function is necessary to be able to support forward declarations.
3343 */
3344declare type DirectiveDefListOrFactory = (() => DirectiveDefList) | DirectiveDefList;
3345
3346/**
3347 * Map of inputs for a given directive/component.
3348 *
3349 * Given:
3350 * ```
3351 * class MyComponent {
3352 * @Input()
3353 * publicInput1: string;
3354 *
3355 * @Input('publicInput2')
3356 * declaredInput2: string;
3357 *
3358 * @Input({transform: (value: boolean) => value ? 1 : 0})
3359 * transformedInput3: number;
3360 *
3361 * signalInput = input(3);
3362 * }
3363 * ```
3364 *
3365 * is described as:
3366 * ```
3367 * {
3368 * publicInput1: 'publicInput1',
3369 * declaredInput2: [InputFlags.None, 'declaredInput2', 'publicInput2'],
3370 * transformedInput3: [
3371 * InputFlags.None,
3372 * 'transformedInput3',
3373 * 'transformedInput3',
3374 * (value: boolean) => value ? 1 : 0
3375 * ],
3376 * signalInput: [InputFlags.SignalBased, "signalInput"],
3377 * }
3378 * ```
3379 *
3380 * Which the minifier may translate to:
3381 * ```
3382 * {
3383 * minifiedPublicInput1: 'publicInput1',
3384 * minifiedDeclaredInput2: [InputFlags.None, 'publicInput2', 'declaredInput2'],
3385 * minifiedTransformedInput3: [
3386 * InputFlags.None,
3387 * 'transformedInput3',
3388 * 'transformedInput3',
3389 * (value: boolean) => value ? 1 : 0
3390 * ],
3391 * minifiedSignalInput: [InputFlags.SignalBased, "signalInput"],
3392 * }
3393 * ```
3394 *
3395 * This allows the render to re-construct the minified, public, and declared names
3396 * of properties.
3397 *
3398 * NOTE:
3399 * - Because declared and public name are usually same we only generate the array
3400 * `['declared', 'public']` format when they differ, or there is a transform.
3401 * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has
3402 * inconsistent behavior in that it uses declared names rather than minified or public.
3403 */
3404declare type DirectiveInputs<T> = {
3405 [P in keyof T]?: string | [
3406 flags: ɵɵInputFlags,
3407 publicName: string,
3408 declaredName?: string,
3409 transform?: InputTransformFunction
3410 ];
3411};
3412
3413declare const DISCONNECTED_NODES = "d";
3414
3415/**
3416 * @description
3417 * Hook for manual bootstrapping of the application instead of using `bootstrap` array in @NgModule
3418 * annotation. This hook is invoked only when the `bootstrap` array is empty or not provided.
3419 *
3420 * Reference to the current application is provided as a parameter.
3421 *
3422 * See ["Bootstrapping"](guide/bootstrapping).
3423 *
3424 * @usageNotes
3425 * The example below uses `ApplicationRef.bootstrap()` to render the
3426 * `AppComponent` on the page.
3427 *
3428 * ```typescript
3429 * class AppModule implements DoBootstrap {
3430 * ngDoBootstrap(appRef: ApplicationRef) {
3431 * appRef.bootstrap(AppComponent); // Or some other component
3432 * }
3433 * }
3434 * ```
3435 *
3436 * @publicApi
3437 */
3438export declare interface DoBootstrap {
3439 ngDoBootstrap(appRef: ApplicationRef): void;
3440}
3441
3442/**
3443 * A lifecycle hook that invokes a custom change-detection function for a directive,
3444 * in addition to the check performed by the default change-detector.
3445 *
3446 * The default change-detection algorithm looks for differences by comparing
3447 * bound-property values by reference across change detection runs. You can use this
3448 * hook to check for and respond to changes by some other means.
3449 *
3450 * When the default change detector detects changes, it invokes `ngOnChanges()` if supplied,
3451 * regardless of whether you perform additional change detection.
3452 * Typically, you should not use both `DoCheck` and `OnChanges` to respond to
3453 * changes on the same input.
3454 *
3455 * @see {@link OnChanges}
3456 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
3457 *
3458 * @usageNotes
3459 * The following snippet shows how a component can implement this interface
3460 * to invoke it own change-detection cycle.
3461 *
3462 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='DoCheck'}
3463 *
3464 * For a more complete example and discussion, see
3465 * [Defining custom change detection](guide/lifecycle-hooks#defining-custom-change-detection).
3466 *
3467 * @publicApi
3468 */
3469export declare interface DoCheck {
3470 /**
3471 * A callback method that performs change-detection, invoked
3472 * after the default change-detector runs.
3473 * See `KeyValueDiffers` and `IterableDiffers` for implementing
3474 * custom change checking for collections.
3475 *
3476 */
3477 ngDoCheck(): void;
3478}
3479
3480/**
3481 * Create a global `Effect` for the given reactive function.
3482 *
3483 * @developerPreview
3484 */
3485export declare function effect(effectFn: (onCleanup: EffectCleanupRegisterFn) => void, options?: CreateEffectOptions): EffectRef;
3486
3487/**
3488 * An effect can, optionally, register a cleanup function. If registered, the cleanup is executed
3489 * before the next effect run. The cleanup function makes it possible to "cancel" any work that the
3490 * previous effect run might have started.
3491 *
3492 * @developerPreview
3493 */
3494export declare type EffectCleanupFn = () => void;
3495
3496/**
3497 * A callback passed to the effect function that makes it possible to register cleanup logic.
3498 *
3499 * @developerPreview
3500 */
3501export declare type EffectCleanupRegisterFn = (cleanupFn: EffectCleanupFn) => void;
3502
3503/**
3504 * A global reactive effect, which can be manually destroyed.
3505 *
3506 * @developerPreview
3507 */
3508export declare interface EffectRef {
3509 /**
3510 * Shut down the effect, removing it from any upcoming scheduled executions.
3511 */
3512 destroy(): void;
3513}
3514
3515declare const EFFECTS_TO_SCHEDULE = 22;
3516
3517/**
3518 * Keys within serialized view data structure to represent various
3519 * parts. See the `SerializedView` interface below for additional information.
3520 */
3521declare const ELEMENT_CONTAINERS = "e";
3522
3523/**
3524 * Marks that the next string is an element name.
3525 *
3526 * See `I18nMutateOpCodes` documentation.
3527 */
3528declare const ELEMENT_MARKER: ELEMENT_MARKER;
3529
3530declare interface ELEMENT_MARKER {
3531 marker: 'element';
3532}
3533
3534/**
3535 * A wrapper around a native element inside of a View.
3536 *
3537 * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM
3538 * element.
3539 *
3540 * @security Permitting direct access to the DOM can make your application more vulnerable to
3541 * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the
3542 * [Security Guide](https://g.co/ng/security).
3543 *
3544 * @publicApi
3545 */
3546export declare class ElementRef<T = any> {
3547 /**
3548 * <div class="callout is-critical">
3549 * <header>Use with caution</header>
3550 * <p>
3551 * Use this API as the last resort when direct access to DOM is needed. Use templating and
3552 * data-binding provided by Angular instead. Alternatively you can take a look at {@link
3553 * Renderer2} which provides an API that can be safely used.
3554 * </p>
3555 * </div>
3556 */
3557 nativeElement: T;
3558 constructor(nativeElement: T);
3559}
3560
3561declare const EMBEDDED_VIEW_INJECTOR = 20;
3562
3563/**
3564 * Represents an Angular [view](guide/glossary#view) in a view container.
3565 * An [embedded view](guide/glossary#view-hierarchy) can be referenced from a component
3566 * other than the hosting component whose template defines it, or it can be defined
3567 * independently by a `TemplateRef`.
3568 *
3569 * Properties of elements in a view can change, but the structure (number and order) of elements in
3570 * a view cannot. Change the structure of elements by inserting, moving, or
3571 * removing nested views in a view container.
3572 *
3573 * @see {@link ViewContainerRef}
3574 *
3575 * @usageNotes
3576 *
3577 * The following template breaks down into two separate `TemplateRef` instances,
3578 * an outer one and an inner one.
3579 *
3580 * ```
3581 * Count: {{items.length}}
3582 * <ul>
3583 * <li *ngFor="let item of items">{{item}}</li>
3584 * </ul>
3585 * ```
3586 *
3587 * This is the outer `TemplateRef`:
3588 *
3589 * ```
3590 * Count: {{items.length}}
3591 * <ul>
3592 * <ng-template ngFor let-item [ngForOf]="items"></ng-template>
3593 * </ul>
3594 * ```
3595 *
3596 * This is the inner `TemplateRef`:
3597 *
3598 * ```
3599 * <li>{{item}}</li>
3600 * ```
3601 *
3602 * The outer and inner `TemplateRef` instances are assembled into views as follows:
3603 *
3604 * ```
3605 * <!-- ViewRef: outer-0 -->
3606 * Count: 2
3607 * <ul>
3608 * <ng-template view-container-ref></ng-template>
3609 * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->
3610 * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->
3611 * </ul>
3612 * <!-- /ViewRef: outer-0 -->
3613 * ```
3614 * @publicApi
3615 */
3616export declare abstract class EmbeddedViewRef<C> extends ViewRef {
3617 /**
3618 * The context for this view, inherited from the anchor element.
3619 */
3620 abstract context: C;
3621 /**
3622 * The root nodes for this embedded view.
3623 */
3624 abstract get rootNodes(): any[];
3625}
3626
3627/**
3628 * Disable Angular's development mode, which turns off assertions and other
3629 * checks within the framework.
3630 *
3631 * One important assertion this disables verifies that a change detection pass
3632 * does not result in additional changes to any bindings (also known as
3633 * unidirectional data flow).
3634 *
3635 * Using this method is discouraged as the Angular CLI will set production mode when using the
3636 * `optimization` option.
3637 * @see {@link cli/build ng build}
3638 *
3639 * @publicApi
3640 */
3641export declare function enableProdMode(): void;
3642
3643declare const ENVIRONMENT = 10;
3644
3645/**
3646 * A multi-provider token for initialization functions that will run upon construction of an
3647 * environment injector.
3648 *
3649 * @publicApi
3650 */
3651export declare const ENVIRONMENT_INITIALIZER: InjectionToken<readonly (() => void)[]>;
3652
3653/**
3654 * An `Injector` that's part of the environment injector hierarchy, which exists outside of the
3655 * component tree.
3656 */
3657export declare abstract class EnvironmentInjector implements Injector {
3658 /**
3659 * Retrieves an instance from the injector based on the provided token.
3660 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3661 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3662 */
3663 abstract get<T>(token: ProviderToken<T>, notFoundValue: undefined, options: InjectOptions & {
3664 optional?: false;
3665 }): T;
3666 /**
3667 * Retrieves an instance from the injector based on the provided token.
3668 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3669 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3670 */
3671 abstract get<T>(token: ProviderToken<T>, notFoundValue: null | undefined, options: InjectOptions): T | null;
3672 /**
3673 * Retrieves an instance from the injector based on the provided token.
3674 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3675 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3676 */
3677 abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, options?: InjectOptions): T;
3678 /**
3679 * Retrieves an instance from the injector based on the provided token.
3680 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3681 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3682 * @deprecated use object-based flags (`InjectOptions`) instead.
3683 */
3684 abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
3685 /**
3686 * @deprecated from v4.0.0 use ProviderToken<T>
3687 * @suppress {duplicate}
3688 */
3689 abstract get(token: any, notFoundValue?: any): any;
3690 /**
3691 * Runs the given function in the context of this `EnvironmentInjector`.
3692 *
3693 * Within the function's stack frame, [`inject`](api/core/inject) can be used to inject
3694 * dependencies from this injector. Note that `inject` is only usable synchronously, and cannot be
3695 * used in any asynchronous callbacks or after any `await` points.
3696 *
3697 * @param fn the closure to be run in the context of this injector
3698 * @returns the return value of the function, if any
3699 * @deprecated use the standalone function `runInInjectionContext` instead
3700 */
3701 abstract runInContext<ReturnT>(fn: () => ReturnT): ReturnT;
3702 abstract destroy(): void;
3703}
3704
3705/**
3706 * Encapsulated `Provider`s that are only accepted during creation of an `EnvironmentInjector` (e.g.
3707 * in an `NgModule`).
3708 *
3709 * Using this wrapper type prevents providers which are only designed to work in
3710 * application/environment injectors from being accidentally included in
3711 * `@Component.providers` and ending up in a component injector.
3712 *
3713 * This wrapper type prevents access to the `Provider`s inside.
3714 *
3715 * @see {@link makeEnvironmentProviders}
3716 * @see {@link importProvidersFrom}
3717 *
3718 * @publicApi
3719 */
3720export declare type EnvironmentProviders = {
3721 ɵbrand: 'EnvironmentProviders';
3722};
3723
3724/**
3725 * Provides a hook for centralized exception handling.
3726 *
3727 * The default implementation of `ErrorHandler` prints error messages to the `console`. To
3728 * intercept error handling, write a custom exception handler that replaces this default as
3729 * appropriate for your app.
3730 *
3731 * @usageNotes
3732 * ### Example
3733 *
3734 * ```
3735 * class MyErrorHandler implements ErrorHandler {
3736 * handleError(error) {
3737 * // do something with the exception
3738 * }
3739 * }
3740 *
3741 * @NgModule({
3742 * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]
3743 * })
3744 * class MyModule {}
3745 * ```
3746 *
3747 * @publicApi
3748 */
3749export declare class ErrorHandler {
3750 handleError(error: any): void;
3751}
3752
3753/**
3754 * Use in components with the `@Output` directive to emit custom events
3755 * synchronously or asynchronously, and register handlers for those events
3756 * by subscribing to an instance.
3757 *
3758 * @usageNotes
3759 *
3760 * Extends
3761 * [RxJS `Subject`](https://rxjs.dev/api/index/class/Subject)
3762 * for Angular by adding the `emit()` method.
3763 *
3764 * In the following example, a component defines two output properties
3765 * that create event emitters. When the title is clicked, the emitter
3766 * emits an open or close event to toggle the current visibility state.
3767 *
3768 * ```html
3769 * @Component({
3770 * selector: 'zippy',
3771 * template: `
3772 * <div class="zippy">
3773 * <div (click)="toggle()">Toggle</div>
3774 * <div [hidden]="!visible">
3775 * <ng-content></ng-content>
3776 * </div>
3777 * </div>`})
3778 * export class Zippy {
3779 * visible: boolean = true;
3780 * @Output() open: EventEmitter<any> = new EventEmitter();
3781 * @Output() close: EventEmitter<any> = new EventEmitter();
3782 *
3783 * toggle() {
3784 * this.visible = !this.visible;
3785 * if (this.visible) {
3786 * this.open.emit(null);
3787 * } else {
3788 * this.close.emit(null);
3789 * }
3790 * }
3791 * }
3792 * ```
3793 *
3794 * Access the event object with the `$event` argument passed to the output event
3795 * handler:
3796 *
3797 * ```html
3798 * <zippy (open)="onOpen($event)" (close)="onClose($event)"></zippy>
3799 * ```
3800 *
3801 * @see [Observables in Angular](guide/observables-in-angular)
3802 * @publicApi
3803 */
3804export declare interface EventEmitter<T> extends Subject<T> {
3805 /**
3806 * Creates an instance of this class that can
3807 * deliver events synchronously or asynchronously.
3808 *
3809 * @param [isAsync=false] When true, deliver events asynchronously.
3810 *
3811 */
3812 new (isAsync?: boolean): EventEmitter<T>;
3813 /**
3814 * Emits an event containing a given value.
3815 * @param value The value to emit.
3816 */
3817 emit(value?: T): void;
3818 /**
3819 * Registers handlers for events emitted by this instance.
3820 * @param next When supplied, a custom handler for emitted events.
3821 * @param error When supplied, a custom handler for an error notification from this emitter.
3822 * @param complete When supplied, a custom handler for a completion notification from this
3823 * emitter.
3824 */
3825 subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
3826 /**
3827 * Registers handlers for events emitted by this instance.
3828 * @param observerOrNext When supplied, a custom handler for emitted events, or an observer
3829 * object.
3830 * @param error When supplied, a custom handler for an error notification from this emitter.
3831 * @param complete When supplied, a custom handler for a completion notification from this
3832 * emitter.
3833 */
3834 subscribe(observerOrNext?: any, error?: any, complete?: any): Subscription;
3835}
3836
3837/**
3838 * @publicApi
3839 */
3840export declare const EventEmitter: {
3841 new (isAsync?: boolean): EventEmitter<any>;
3842 new <T>(isAsync?: boolean): EventEmitter<T>;
3843 readonly prototype: EventEmitter<any>;
3844};
3845
3846/**
3847 * Configures the `Injector` to return a value of another `useExisting` token.
3848 *
3849 * @see ["Dependency Injection Guide"](guide/dependency-injection).
3850 *
3851 * @usageNotes
3852 *
3853 * {@example core/di/ts/provider_spec.ts region='ExistingProvider'}
3854 *
3855 * ### Multi-value example
3856 *
3857 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
3858 *
3859 * @publicApi
3860 */
3861export declare interface ExistingProvider extends ExistingSansProvider {
3862 /**
3863 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
3864 */
3865 provide: any;
3866 /**
3867 * When true, injector returns an array of instances. This is useful to allow multiple
3868 * providers spread across many files to provide configuration information to a common token.
3869 */
3870 multi?: boolean;
3871}
3872
3873/**
3874 * Configures the `Injector` to return a value of another `useExisting` token.
3875 *
3876 * @see {@link ExistingProvider}
3877 * @see ["Dependency Injection Guide"](guide/dependency-injection).
3878 *
3879 * @publicApi
3880 */
3881export declare interface ExistingSansProvider {
3882 /**
3883 * Existing `token` to return. (Equivalent to `injector.get(useExisting)`)
3884 */
3885 useExisting: any;
3886}
3887
3888/**
3889 * Definition of what a factory function should look like.
3890 */
3891declare type FactoryFn<T> = {
3892 /**
3893 * Subclasses without an explicit constructor call through to the factory of their base
3894 * definition, providing it with their own constructor to instantiate.
3895 */
3896 <U extends T>(t?: Type<U>): U;
3897 /**
3898 * If no constructor to instantiate is provided, an instance of type T itself is created.
3899 */
3900 (t?: undefined): T;
3901};
3902
3903/**
3904 * Configures the `Injector` to return a value by invoking a `useFactory` function.
3905 * @see ["Dependency Injection Guide"](guide/dependency-injection).
3906 *
3907 * @usageNotes
3908 *
3909 * {@example core/di/ts/provider_spec.ts region='FactoryProvider'}
3910 *
3911 * Dependencies can also be marked as optional:
3912 *
3913 * {@example core/di/ts/provider_spec.ts region='FactoryProviderOptionalDeps'}
3914 *
3915 * ### Multi-value example
3916 *
3917 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
3918 *
3919 * @publicApi
3920 */
3921export declare interface FactoryProvider extends FactorySansProvider {
3922 /**
3923 * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
3924 */
3925 provide: any;
3926 /**
3927 * When true, injector returns an array of instances. This is useful to allow multiple
3928 * providers spread across many files to provide configuration information to a common token.
3929 */
3930 multi?: boolean;
3931}
3932
3933/**
3934 * Configures the `Injector` to return a value by invoking a `useFactory` function.
3935 *
3936 * @see {@link FactoryProvider}
3937 * @see ["Dependency Injection Guide"](guide/dependency-injection).
3938 *
3939 * @publicApi
3940 */
3941export declare interface FactorySansProvider {
3942 /**
3943 * A function to invoke to create a value for this `token`. The function is invoked with
3944 * resolved values of `token`s in the `deps` field.
3945 */
3946 useFactory: Function;
3947 /**
3948 * A list of `token`s to be resolved by the injector. The list of values is then
3949 * used as arguments to the `useFactory` function.
3950 */
3951 deps?: any[];
3952}
3953
3954declare const FLAGS = 2;
3955
3956/**
3957 * Allows to refer to references which are not yet defined.
3958 *
3959 * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of
3960 * DI is declared, but not yet defined. It is also used when the `token` which we use when creating
3961 * a query is not yet defined.
3962 *
3963 * `forwardRef` is also used to break circularities in standalone components imports.
3964 *
3965 * @usageNotes
3966 * ### Circular dependency example
3967 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}
3968 *
3969 * ### Circular standalone reference import example
3970 * ```ts
3971 * @Component({
3972 * standalone: true,
3973 * imports: [ChildComponent],
3974 * selector: 'app-parent',
3975 * template: `<app-child [hideParent]="hideParent"></app-child>`,
3976 * })
3977 * export class ParentComponent {
3978 * @Input() hideParent: boolean;
3979 * }
3980 *
3981 *
3982 * @Component({
3983 * standalone: true,
3984 * imports: [CommonModule, forwardRef(() => ParentComponent)],
3985 * selector: 'app-child',
3986 * template: `<app-parent *ngIf="!hideParent"></app-parent>`,
3987 * })
3988 * export class ChildComponent {
3989 * @Input() hideParent: boolean;
3990 * }
3991 * ```
3992 *
3993 * @publicApi
3994 */
3995export declare function forwardRef(forwardRefFn: ForwardRefFn): Type<any>;
3996
3997/**
3998 * An interface that a function passed into `forwardRef` has to implement.
3999 *
4000 * @usageNotes
4001 * ### Example
4002 *
4003 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref_fn'}
4004 * @publicApi
4005 */
4006export declare interface ForwardRefFn {
4007 (): any;
4008}
4009
4010/**
4011 * Retrieves the component instance associated with a given DOM element.
4012 *
4013 * @usageNotes
4014 * Given the following DOM structure:
4015 *
4016 * ```html
4017 * <app-root>
4018 * <div>
4019 * <child-comp></child-comp>
4020 * </div>
4021 * </app-root>
4022 * ```
4023 *
4024 * Calling `getComponent` on `<child-comp>` will return the instance of `ChildComponent`
4025 * associated with this DOM element.
4026 *
4027 * Calling the function on `<app-root>` will return the `MyApp` instance.
4028 *
4029 *
4030 * @param element DOM element from which the component should be retrieved.
4031 * @returns Component instance associated with the element or `null` if there
4032 * is no component associated with it.
4033 *
4034 * @publicApi
4035 * @globalApi ng
4036 */
4037declare function getComponent<T>(element: Element): T | null;
4038
4039/**
4040 * If inside an embedded view (e.g. `*ngIf` or `*ngFor`), retrieves the context of the embedded
4041 * view that the element is part of. Otherwise retrieves the instance of the component whose view
4042 * owns the element (in this case, the result is the same as calling `getOwningComponent`).
4043 *
4044 * @param element Element for which to get the surrounding component instance.
4045 * @returns Instance of the component that is around the element or null if the element isn't
4046 * inside any component.
4047 *
4048 * @publicApi
4049 * @globalApi ng
4050 */
4051declare function getContext<T extends {}>(element: Element): T | null;
4052
4053/**
4054 * @publicApi
4055 */
4056declare function getDebugNode(nativeNode: any): DebugNode | null;
4057export { getDebugNode }
4058export { getDebugNode as ɵgetDebugNode }
4059
4060/**
4061 * Discovers the dependencies of an injectable instance. Provides DI information about each
4062 * dependency that the injectable was instantiated with, including where they were provided from.
4063 *
4064 * @param injector An injector instance
4065 * @param token a DI token that was constructed by the given injector instance
4066 * @returns an object that contains the created instance of token as well as all of the dependencies
4067 * that it was instantiated with OR undefined if the token was not created within the given
4068 * injector.
4069 */
4070declare function getDependenciesFromInjectable<T>(injector: Injector, token: Type<T> | InjectionToken<T>): {
4071 instance: T;
4072 dependencies: Omit<InjectedService, 'injectedIn'>[];
4073} | undefined;
4074
4075/**
4076 * Returns the debug (partial) metadata for a particular directive or component instance.
4077 * The function accepts an instance of a directive or component and returns the corresponding
4078 * metadata.
4079 *
4080 * @param directiveOrComponentInstance Instance of a directive or component
4081 * @returns metadata of the passed directive or component
4082 *
4083 * @publicApi
4084 * @globalApi ng
4085 */
4086declare function getDirectiveMetadata(directiveOrComponentInstance: any): ɵComponentDebugMetadata | DirectiveDebugMetadata | null;
4087
4088/**
4089 * Retrieves an `Injector` associated with an element, component or directive instance.
4090 *
4091 * @param elementOrDir DOM element, component or directive instance for which to
4092 * retrieve the injector.
4093 * @returns Injector associated with the element, component or directive instance.
4094 *
4095 * @publicApi
4096 * @globalApi ng
4097 */
4098declare function getInjector(elementOrDir: Element | {}): Injector;
4099
4100/**
4101 *
4102 * Given an injector, this function will return
4103 * an object containing the type and source of the injector.
4104 *
4105 * | | type | source |
4106 * |--------------|-------------|-------------------------------------------------------------|
4107 * | NodeInjector | element | DOM element that created this injector |
4108 * | R3Injector | environment | `injector.source` |
4109 * | NullInjector | null | null |
4110 *
4111 * @param injector the Injector to get metadata for
4112 * @returns an object containing the type and source of the given injector. If the injector metadata
4113 * cannot be determined, returns null.
4114 */
4115declare function getInjectorMetadata(injector: Injector): {
4116 type: 'element';
4117 source: RElement;
4118} | {
4119 type: 'environment';
4120 source: string | null;
4121} | {
4122 type: 'null';
4123 source: null;
4124} | null;
4125
4126/**
4127 * Gets the providers configured on an injector.
4128 *
4129 * @param injector the injector to lookup the providers of
4130 * @returns ProviderRecord[] an array of objects representing the providers of the given injector
4131 */
4132declare function getInjectorProviders(injector: Injector): ɵProviderRecord[];
4133
4134declare function getInjectorResolutionPath(injector: Injector): Injector[];
4135
4136/**
4137 * Retrieves a list of event listeners associated with a DOM element. The list does include host
4138 * listeners, but it does not include event listeners defined outside of the Angular context
4139 * (e.g. through `addEventListener`).
4140 *
4141 * @usageNotes
4142 * Given the following DOM structure:
4143 *
4144 * ```html
4145 * <app-root>
4146 * <div (click)="doSomething()"></div>
4147 * </app-root>
4148 * ```
4149 *
4150 * Calling `getListeners` on `<div>` will return an object that looks as follows:
4151 *
4152 * ```ts
4153 * {
4154 * name: 'click',
4155 * element: <div>,
4156 * callback: () => doSomething(),
4157 * useCapture: false
4158 * }
4159 * ```
4160 *
4161 * @param element Element for which the DOM listeners should be retrieved.
4162 * @returns Array of event listeners on the DOM element.
4163 *
4164 * @publicApi
4165 * @globalApi ng
4166 */
4167declare function getListeners(element: Element): Listener[];
4168
4169/**
4170 * Returns the NgModuleFactory with the given id (specified using [@NgModule.id
4171 * field](api/core/NgModule#id)), if it exists and has been loaded. Factories for NgModules that do
4172 * not specify an `id` cannot be retrieved. Throws if an NgModule cannot be found.
4173 * @publicApi
4174 * @deprecated Use `getNgModuleById` instead.
4175 */
4176export declare function getModuleFactory(id: string): NgModuleFactory<any>;
4177
4178/**
4179 * Returns the NgModule class with the given id (specified using [@NgModule.id
4180 * field](api/core/NgModule#id)), if it exists and has been loaded. Classes for NgModules that do
4181 * not specify an `id` cannot be retrieved. Throws if an NgModule cannot be found.
4182 * @publicApi
4183 */
4184export declare function getNgModuleById<T>(id: string): Type<T>;
4185
4186/**
4187 * Retrieves the component instance whose view contains the DOM element.
4188 *
4189 * For example, if `<child-comp>` is used in the template of `<app-comp>`
4190 * (i.e. a `ViewChild` of `<app-comp>`), calling `getOwningComponent` on `<child-comp>`
4191 * would return `<app-comp>`.
4192 *
4193 * @param elementOrDir DOM element, component or directive instance
4194 * for which to retrieve the root components.
4195 * @returns Component instance whose view owns the DOM element or null if the element is not
4196 * part of a component view.
4197 *
4198 * @publicApi
4199 * @globalApi ng
4200 */
4201declare function getOwningComponent<T>(elementOrDir: Element | {}): T | null;
4202
4203/**
4204 * Returns the current platform.
4205 *
4206 * @publicApi
4207 */
4208export declare function getPlatform(): PlatformRef | null;
4209
4210/**
4211 * Retrieves all root components associated with a DOM element, directive or component instance.
4212 * Root components are those which have been bootstrapped by Angular.
4213 *
4214 * @param elementOrDir DOM element, component or directive instance
4215 * for which to retrieve the root components.
4216 * @returns Root components associated with the target object.
4217 *
4218 * @publicApi
4219 * @globalApi ng
4220 */
4221declare function getRootComponents(elementOrDir: Element | {}): {}[];
4222
4223/**
4224 * Adapter interface for retrieving the `Testability` service associated for a
4225 * particular context.
4226 *
4227 * @publicApi
4228 */
4229export declare interface GetTestability {
4230 addToWindow(registry: TestabilityRegistry): void;
4231 findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean): Testability | null;
4232}
4233
4234/**
4235 * This value reflects the property on the window where the dev
4236 * tools are patched (window.ng).
4237 * */
4238declare const GLOBAL_PUBLISH_EXPANDO_KEY = "ng";
4239
4240/**
4241 * The goal here is to make sure that the browser DOM API is the Renderer.
4242 * We do this by defining a subset of DOM API to be the renderer and then
4243 * use that at runtime for rendering.
4244 *
4245 * At runtime we can then use the DOM api directly, in server or web-worker
4246 * it will be easy to implement such API.
4247 */
4248declare type GlobalTargetName = 'document' | 'window' | 'body';
4249
4250declare type GlobalTargetResolver = (element: any) => EventTarget;
4251
4252declare const globalUtilsFunctions: {
4253 /**
4254 * Warning: functions that start with `ɵ` are considered *INTERNAL* and should not be relied upon
4255 * in application's code. The contract of those functions might be changed in any release and/or a
4256 * function can be removed completely.
4257 */
4258 ɵgetDependenciesFromInjectable: typeof getDependenciesFromInjectable;
4259 ɵgetInjectorProviders: typeof getInjectorProviders;
4260 ɵgetInjectorResolutionPath: typeof getInjectorResolutionPath;
4261 ɵgetInjectorMetadata: typeof getInjectorMetadata;
4262 ɵsetProfiler: (profiler: ɵProfiler | null) => void;
4263 getDirectiveMetadata: typeof getDirectiveMetadata;
4264 getComponent: typeof getComponent;
4265 getContext: typeof getContext;
4266 getListeners: typeof getListeners;
4267 getOwningComponent: typeof getOwningComponent;
4268 getHostElement: typeof ɵgetHostElement;
4269 getInjector: typeof getInjector;
4270 getRootComponents: typeof getRootComponents;
4271 getDirectives: typeof ɵgetDirectives;
4272 applyChanges: typeof applyChanges;
4273 isSignal: typeof isSignal;
4274};
4275
4276/**
4277 * Array of hooks that should be executed for a view and their directive indices.
4278 *
4279 * For each node of the view, the following data is stored:
4280 * 1) Node index (optional)
4281 * 2) A series of number/function pairs where:
4282 * - even indices are directive indices
4283 * - odd indices are hook functions
4284 *
4285 * Special cases:
4286 * - a negative directive index flags an init hook (ngOnInit, ngAfterContentInit, ngAfterViewInit)
4287 */
4288declare type HookData = HookEntry[];
4289
4290/**
4291 * Information necessary to call a hook. E.g. the callback that
4292 * needs to invoked and the index at which to find its context.
4293 */
4294declare type HookEntry = number | HookFn;
4295
4296/** Single hook callback function. */
4297declare type HookFn = () => void;
4298
4299declare const HOST = 0;
4300
4301/**
4302 * Type of the Host metadata.
4303 *
4304 * @publicApi
4305 */
4306export declare interface Host {
4307}
4308
4309/**
4310 * Host decorator and metadata.
4311 *
4312 * @Annotation
4313 * @publicApi
4314 */
4315export declare const Host: HostDecorator;
4316
4317/**
4318 * Type of the HostBinding metadata.
4319 *
4320 * @publicApi
4321 */
4322export declare interface HostBinding {
4323 /**
4324 * The DOM property that is bound to a data property.
4325 * This field also accepts:
4326 * * classes, prefixed by `class.`
4327 * * styles, prefixed by `style.`
4328 * * attributes, prefixed by `attr.`
4329 */
4330 hostPropertyName?: string;
4331}
4332
4333/**
4334 * @Annotation
4335 * @publicApi
4336 */
4337export declare const HostBinding: HostBindingDecorator;
4338
4339/**
4340 * Type of the HostBinding decorator / constructor function.
4341 *
4342 * @publicApi
4343 */
4344export declare interface HostBindingDecorator {
4345 /**
4346 * Decorator that marks a DOM property or an element class, style or attribute as a host-binding
4347 * property and supplies configuration metadata. Angular automatically checks host bindings during
4348 * change detection, and if a binding changes it updates the host element of the directive.
4349 *
4350 * @usageNotes
4351 *
4352 * The following example creates a directive that sets the `valid` and `invalid`
4353 * class, a style color, and an id on the DOM element that has an `ngModel` directive on it.
4354 *
4355 * ```typescript
4356 * @Directive({selector: '[ngModel]'})
4357 * class NgModelStatus {
4358 * constructor(public control: NgModel) {}
4359 * // class bindings
4360 * @HostBinding('class.valid') get valid() { return this.control.valid; }
4361 * @HostBinding('class.invalid') get invalid() { return this.control.invalid; }
4362 *
4363 * // style binding
4364 * @HostBinding('style.color') get color() { return this.control.valid ? 'green': 'red'; }
4365 *
4366 * // style binding also supports a style unit extension
4367 * @HostBinding('style.width.px') @Input() width: number = 500;
4368 *
4369 * // attribute binding
4370 * @HostBinding('attr.aria-required')
4371 * @Input() required: boolean = false;
4372 *
4373 * // property binding
4374 * @HostBinding('id') get id() { return this.control.value?.length ? 'odd': 'even'; }
4375 *
4376 * @Component({
4377 * selector: 'app',
4378 * template: `<input [(ngModel)]="prop">`,
4379 * })
4380 * class App {
4381 * prop;
4382 * }
4383 * ```
4384 *
4385 */
4386 (hostPropertyName?: string): any;
4387 new (hostPropertyName?: string): any;
4388}
4389
4390/**
4391 * Stores a set of OpCodes to process `HostBindingsFunction` associated with a current view.
4392 *
4393 * In order to invoke `HostBindingsFunction` we need:
4394 * 1. 'elementIdx`: Index to the element associated with the `HostBindingsFunction`.
4395 * 2. 'directiveIdx`: Index to the directive associated with the `HostBindingsFunction`. (This will
4396 * become the context for the `HostBindingsFunction` invocation.)
4397 * 3. `bindingRootIdx`: Location where the bindings for the `HostBindingsFunction` start. Internally
4398 * `HostBindingsFunction` binding indexes start from `0` so we need to add `bindingRootIdx` to
4399 * it.
4400 * 4. `HostBindingsFunction`: A host binding function to execute.
4401 *
4402 * The above information needs to be encoded into the `HostBindingOpCodes` in an efficient manner.
4403 *
4404 * 1. `elementIdx` is encoded into the `HostBindingOpCodes` as `~elementIdx` (so a negative number);
4405 * 2. `directiveIdx`
4406 * 3. `bindingRootIdx`
4407 * 4. `HostBindingsFunction` is passed in as is.
4408 *
4409 * The `HostBindingOpCodes` array contains:
4410 * - negative number to select the element index.
4411 * - followed by 1 or more of:
4412 * - a number to select the directive index
4413 * - a number to select the bindingRoot index
4414 * - and a function to invoke.
4415 *
4416 * ## Example
4417 *
4418 * ```
4419 * const hostBindingOpCodes = [
4420 * ~30, // Select element 30
4421 * 40, 45, MyDirdir.hostBindings // Invoke host bindings on MyDir on element 30;
4422 * // directiveIdx = 40; bindingRootIdx = 45;
4423 * 50, 55, OtherDir.ɵdir.hostBindings // Invoke host bindings on OtherDire on element 30
4424 * // directiveIdx = 50; bindingRootIdx = 55;
4425 * ]
4426 * ```
4427 *
4428 * ## Pseudocode
4429 * ```
4430 * const hostBindingOpCodes = tView.hostBindingOpCodes;
4431 * if (hostBindingOpCodes === null) return;
4432 * for (let i = 0; i < hostBindingOpCodes.length; i++) {
4433 * const opCode = hostBindingOpCodes[i] as number;
4434 * if (opCode < 0) {
4435 * // Negative numbers are element indexes.
4436 * setSelectedIndex(~opCode);
4437 * } else {
4438 * // Positive numbers are NumberTuple which store bindingRootIndex and directiveIndex.
4439 * const directiveIdx = opCode;
4440 * const bindingRootIndx = hostBindingOpCodes[++i] as number;
4441 * const hostBindingFn = hostBindingOpCodes[++i] as HostBindingsFunction<any>;
4442 * setBindingRootForHostBindings(bindingRootIndx, directiveIdx);
4443 * const context = lView[directiveIdx];
4444 * hostBindingFn(RenderFlags.Update, context);
4445 * }
4446 * }
4447 * ```
4448 *
4449 */
4450declare interface HostBindingOpCodes extends Array<number | HostBindingsFunction<any>> {
4451 __brand__: 'HostBindingOpCodes';
4452 debug?: string[];
4453}
4454
4455declare type HostBindingsFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void;
4456
4457/**
4458 * Type of the `Host` decorator / constructor function.
4459 *
4460 * @publicApi
4461 */
4462export declare interface HostDecorator {
4463 /**
4464 * Parameter decorator on a view-provider parameter of a class constructor
4465 * that tells the DI framework to resolve the view by checking injectors of child
4466 * elements, and stop when reaching the host element of the current component.
4467 *
4468 * @usageNotes
4469 *
4470 * The following shows use with the `@Optional` decorator, and allows for a `null` result.
4471 *
4472 * <code-example path="core/di/ts/metadata_spec.ts" region="Host">
4473 * </code-example>
4474 *
4475 * For an extended example, see ["Dependency Injection
4476 * Guide"](guide/dependency-injection-in-action#optional).
4477 */
4478 (): any;
4479 new (): Host;
4480}
4481
4482/**
4483 * Mapping between the public aliases of directive bindings and the underlying inputs/outputs that
4484 * they represent. Also serves as an allowlist of the inputs/outputs from the host directive that
4485 * the author has decided to expose.
4486 */
4487declare type HostDirectiveBindingMap = {
4488 [publicName: string]: string;
4489};
4490
4491/** Values that can be used to define a host directive through the `HostDirectivesFeature`. */
4492declare type HostDirectiveConfig = Type<unknown> | {
4493 directive: Type<unknown>;
4494 inputs?: string[];
4495 outputs?: string[];
4496};
4497
4498/** Runtime information used to configure a host directive. */
4499declare interface HostDirectiveDef<T = unknown> {
4500 /** Class representing the host directive. */
4501 directive: Type<T>;
4502 /** Directive inputs that have been exposed. */
4503 inputs: HostDirectiveBindingMap;
4504 /** Directive outputs that have been exposed. */
4505 outputs: HostDirectiveBindingMap;
4506}
4507
4508/**
4509 * Mapping between a directive that was used as a host directive
4510 * and the configuration that was used to define it as such.
4511 */
4512declare type HostDirectiveDefs = Map<ɵDirectiveDef<unknown>, HostDirectiveDef>;
4513
4514/**
4515 * Type of the HostListener metadata.
4516 *
4517 * @publicApi
4518 */
4519export declare interface HostListener {
4520 /**
4521 * The DOM event to listen for.
4522 */
4523 eventName?: string;
4524 /**
4525 * A set of arguments to pass to the handler method when the event occurs.
4526 */
4527 args?: string[];
4528}
4529
4530/**
4531 * Decorator that binds a DOM event to a host listener and supplies configuration metadata.
4532 * Angular invokes the supplied handler method when the host element emits the specified event,
4533 * and updates the bound element with the result.
4534 *
4535 * If the handler method returns false, applies `preventDefault` on the bound element.
4536 *
4537 * @usageNotes
4538 *
4539 * The following example declares a directive
4540 * that attaches a click listener to a button and counts clicks.
4541 *
4542 * ```ts
4543 * @Directive({selector: 'button[counting]'})
4544 * class CountClicks {
4545 * numberOfClicks = 0;
4546 *
4547 * @HostListener('click', ['$event.target'])
4548 * onClick(btn) {
4549 * console.log('button', btn, 'number of clicks:', this.numberOfClicks++);
4550 * }
4551 * }
4552 *
4553 * @Component({
4554 * selector: 'app',
4555 * template: '<button counting>Increment</button>',
4556 * })
4557 * class App {}
4558 *
4559 * ```
4560 *
4561 * The following example registers another DOM event handler that listens for `Enter` key-press
4562 * events on the global `window`.
4563 * ``` ts
4564 * import { HostListener, Component } from "@angular/core";
4565 *
4566 * @Component({
4567 * selector: 'app',
4568 * template: `<h1>Hello, you have pressed enter {{counter}} number of times!</h1> Press enter key
4569 * to increment the counter.
4570 * <button (click)="resetCounter()">Reset Counter</button>`
4571 * })
4572 * class AppComponent {
4573 * counter = 0;
4574 * @HostListener('window:keydown.enter', ['$event'])
4575 * handleKeyDown(event: KeyboardEvent) {
4576 * this.counter++;
4577 * }
4578 * resetCounter() {
4579 * this.counter = 0;
4580 * }
4581 * }
4582 * ```
4583 * The list of valid key names for `keydown` and `keyup` events
4584 * can be found here:
4585 * https://www.w3.org/TR/DOM-Level-3-Events-key/#named-key-attribute-values
4586 *
4587 * Note that keys can also be combined, e.g. `@HostListener('keydown.shift.a')`.
4588 *
4589 * The global target names that can be used to prefix an event name are
4590 * `document:`, `window:` and `body:`.
4591 *
4592 * @Annotation
4593 * @publicApi
4594 */
4595export declare const HostListener: HostListenerDecorator;
4596
4597/**
4598 * Type of the HostListener decorator / constructor function.
4599 *
4600 * @publicApi
4601 */
4602export declare interface HostListenerDecorator {
4603 /**
4604 * Decorator that declares a DOM event to listen for,
4605 * and provides a handler method to run when that event occurs.
4606 *
4607 * Angular invokes the supplied handler method when the host element emits the specified event,
4608 * and updates the bound element with the result.
4609 *
4610 * If the handler method returns false, applies `preventDefault` on the bound element.
4611 */
4612 (eventName: string, args?: string[]): any;
4613 new (eventName: string, args?: string[]): any;
4614}
4615
4616declare const HYDRATION = 6;
4617
4618declare const HYDRATION_INFO_KEY = "__ngDebugHydrationInfo__";
4619
4620/**
4621 * Internal type that represents a claimed node.
4622 * Only used in dev mode.
4623 */
4624declare enum HydrationStatus {
4625 Hydrated = "hydrated",
4626 Skipped = "skipped",
4627 Mismatched = "mismatched"
4628}
4629
4630declare namespace i0 {
4631 export {
4632 ɵɵinject,
4633 ɵɵdefineInjectable,
4634 ɵɵdefineInjector,
4635 ɵɵInjectableDeclaration,
4636 ɵNgModuleDef as NgModuleDef,
4637 ɵɵdefineNgModule,
4638 ɵɵFactoryDeclaration,
4639 ɵɵInjectorDeclaration,
4640 ɵɵNgModuleDeclaration,
4641 ɵsetClassMetadata as setClassMetadata,
4642 ɵsetClassMetadataAsync as setClassMetadataAsync,
4643 ɵNgModuleFactory as NgModuleFactory,
4644 ɵnoSideEffects,
4645 ITS_JUST_ANGULAR
4646 }
4647}
4648
4649/**
4650 * Array storing OpCode for dynamically creating `i18n` translation DOM elements.
4651 *
4652 * This array creates a sequence of `Text` and `Comment` (as ICU anchor) DOM elements. It consists
4653 * of a pair of `number` and `string` pairs which encode the operations for the creation of the
4654 * translated block.
4655 *
4656 * The number is shifted and encoded according to `I18nCreateOpCode`
4657 *
4658 * Pseudocode:
4659 * ```
4660 * const i18nCreateOpCodes = [
4661 * 10 << I18nCreateOpCode.SHIFT, "Text Node add to DOM",
4662 * 11 << I18nCreateOpCode.SHIFT | I18nCreateOpCode.COMMENT, "Comment Node add to DOM",
4663 * 12 << I18nCreateOpCode.SHIFT | I18nCreateOpCode.APPEND_LATER, "Text Node added later"
4664 * ];
4665 *
4666 * for(var i=0; i<i18nCreateOpCodes.length; i++) {
4667 * const opcode = i18NCreateOpCodes[i++];
4668 * const index = opcode >> I18nCreateOpCode.SHIFT;
4669 * const text = i18NCreateOpCodes[i];
4670 * let node: Text|Comment;
4671 * if (opcode & I18nCreateOpCode.COMMENT === I18nCreateOpCode.COMMENT) {
4672 * node = lView[~index] = document.createComment(text);
4673 * } else {
4674 * node = lView[index] = document.createText(text);
4675 * }
4676 * if (opcode & I18nCreateOpCode.APPEND_EAGERLY !== I18nCreateOpCode.APPEND_EAGERLY) {
4677 * parentNode.appendChild(node);
4678 * }
4679 * }
4680 * ```
4681 */
4682declare interface I18nCreateOpCodes extends Array<number | string>, I18nDebug {
4683 __brand__: 'I18nCreateOpCodes';
4684}
4685
4686declare interface I18nDebug {
4687 /**
4688 * Human readable representation of the OpCode arrays.
4689 *
4690 * NOTE: This property only exists if `ngDevMode` is set to `true` and it is not present in
4691 * production. Its presence is purely to help debug issue in development, and should not be relied
4692 * on in production application.
4693 */
4694 debug?: string[];
4695}
4696
4697/**
4698 * Stores a list of nodes which need to be removed.
4699 *
4700 * Numbers are indexes into the `LView`
4701 * - index > 0: `removeRNode(lView[0])`
4702 * - index < 0: `removeICU(~lView[0])`
4703 */
4704declare interface I18nRemoveOpCodes extends Array<number> {
4705 __brand__: 'I18nRemoveOpCodes';
4706}
4707
4708/**
4709 * Stores DOM operations which need to be applied to update DOM render tree due to changes in
4710 * expressions.
4711 *
4712 * The basic idea is that `i18nExp` OpCodes capture expression changes and update a change
4713 * mask bit. (Bit 1 for expression 1, bit 2 for expression 2 etc..., bit 32 for expression 32 and
4714 * higher.) The OpCodes then compare its own change mask against the expression change mask to
4715 * determine if the OpCodes should execute.
4716 *
4717 * NOTE: 32nd bit is special as it says 32nd or higher. This way if we have more than 32 bindings
4718 * the code still works, but with lower efficiency. (it is unlikely that a translation would have
4719 * more than 32 bindings.)
4720 *
4721 * These OpCodes can be used by both the i18n block as well as ICU sub-block.
4722 *
4723 * ## Example
4724 *
4725 * Assume
4726 * ```ts
4727 * if (rf & RenderFlags.Update) {
4728 * i18nExp(ctx.exp1); // If changed set mask bit 1
4729 * i18nExp(ctx.exp2); // If changed set mask bit 2
4730 * i18nExp(ctx.exp3); // If changed set mask bit 3
4731 * i18nExp(ctx.exp4); // If changed set mask bit 4
4732 * i18nApply(0); // Apply all changes by executing the OpCodes.
4733 * }
4734 * ```
4735 * We can assume that each call to `i18nExp` sets an internal `changeMask` bit depending on the
4736 * index of `i18nExp`.
4737 *
4738 * ### OpCodes
4739 * ```ts
4740 * <I18nUpdateOpCodes>[
4741 * // The following OpCodes represent: `<div i18n-title="pre{{exp1}}in{{exp2}}post">`
4742 * // If `changeMask & 0b11`
4743 * // has changed then execute update OpCodes.
4744 * // has NOT changed then skip `8` values and start processing next OpCodes.
4745 * 0b11, 8,
4746 * // Concatenate `newValue = 'pre'+lView[bindIndex-4]+'in'+lView[bindIndex-3]+'post';`.
4747 * 'pre', -4, 'in', -3, 'post',
4748 * // Update attribute: `elementAttribute(1, 'title', sanitizerFn(newValue));`
4749 * 1 << SHIFT_REF | Attr, 'title', sanitizerFn,
4750 *
4751 * // The following OpCodes represent: `<div i18n>Hello {{exp3}}!">`
4752 * // If `changeMask & 0b100`
4753 * // has changed then execute update OpCodes.
4754 * // has NOT changed then skip `4` values and start processing next OpCodes.
4755 * 0b100, 4,
4756 * // Concatenate `newValue = 'Hello ' + lView[bindIndex -2] + '!';`.
4757 * 'Hello ', -2, '!',
4758 * // Update text: `lView[1].textContent = newValue;`
4759 * 1 << SHIFT_REF | Text,
4760 *
4761 * // The following OpCodes represent: `<div i18n>{exp4, plural, ... }">`
4762 * // If `changeMask & 0b1000`
4763 * // has changed then execute update OpCodes.
4764 * // has NOT changed then skip `2` values and start processing next OpCodes.
4765 * 0b1000, 2,
4766 * // Concatenate `newValue = lView[bindIndex -1];`.
4767 * -1,
4768 * // Switch ICU: `icuSwitchCase(lView[1], 0, newValue);`
4769 * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuSwitch,
4770 *
4771 * // Note `changeMask & -1` is always true, so the IcuUpdate will always execute.
4772 * -1, 1,
4773 * // Update ICU: `icuUpdateCase(lView[1], 0);`
4774 * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuUpdate,
4775 *
4776 * ];
4777 * ```
4778 *
4779 */
4780declare interface I18nUpdateOpCodes extends Array<string | number | SanitizerFn | null>, I18nDebug {
4781 __brand__: 'I18nUpdateOpCodes';
4782}
4783
4784/**
4785 * Marks that the next string is comment text need for ICU.
4786 *
4787 * See `I18nMutateOpCodes` documentation.
4788 */
4789declare const ICU_MARKER: ICU_MARKER;
4790
4791declare interface ICU_MARKER {
4792 marker: 'ICU';
4793}
4794
4795/**
4796 * Array storing OpCode for dynamically creating `i18n` blocks.
4797 *
4798 * Example:
4799 * ```ts
4800 * <I18nCreateOpCode>[
4801 * // For adding text nodes
4802 * // ---------------------
4803 * // Equivalent to:
4804 * // lView[1].appendChild(lView[0] = document.createTextNode('xyz'));
4805 * 'xyz', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
4806 *
4807 * // For adding element nodes
4808 * // ---------------------
4809 * // Equivalent to:
4810 * // lView[1].appendChild(lView[0] = document.createElement('div'));
4811 * ELEMENT_MARKER, 'div', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
4812 *
4813 * // For adding comment nodes
4814 * // ---------------------
4815 * // Equivalent to:
4816 * // lView[1].appendChild(lView[0] = document.createComment(''));
4817 * ICU_MARKER, '', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
4818 *
4819 * // For moving existing nodes to a different location
4820 * // --------------------------------------------------
4821 * // Equivalent to:
4822 * // const node = lView[1];
4823 * // lView[2].appendChild(node);
4824 * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
4825 *
4826 * // For removing existing nodes
4827 * // --------------------------------------------------
4828 * // const node = lView[1];
4829 * // removeChild(tView.data(1), node, lView);
4830 * 1 << SHIFT_REF | Remove,
4831 *
4832 * // For writing attributes
4833 * // --------------------------------------------------
4834 * // const node = lView[1];
4835 * // node.setAttribute('attr', 'value');
4836 * 1 << SHIFT_REF | Attr, 'attr', 'value'
4837 * ];
4838 * ```
4839 */
4840declare interface IcuCreateOpCodes extends Array<number | string | ELEMENT_MARKER | ICU_MARKER | null>, I18nDebug {
4841 __brand__: 'I18nCreateOpCodes';
4842}
4843
4844/**
4845 * Defines the ICU type of `select` or `plural`
4846 */
4847declare const enum IcuType {
4848 select = 0,
4849 plural = 1
4850}
4851
4852declare const ID = 19;
4853
4854/**
4855 * Providers that were imported from NgModules via the `importProvidersFrom` function.
4856 *
4857 * These providers are meant for use in an application injector (or other environment injectors) and
4858 * should not be used in component injectors.
4859 *
4860 * This type cannot be directly implemented. It's returned from the `importProvidersFrom` function
4861 * and serves to prevent the extracted NgModule providers from being used in the wrong contexts.
4862 *
4863 * @see {@link importProvidersFrom}
4864 *
4865 * @publicApi
4866 * @deprecated replaced by `EnvironmentProviders`
4867 */
4868export declare type ImportedNgModuleProviders = EnvironmentProviders;
4869
4870/**
4871 * Collects providers from all NgModules and standalone components, including transitively imported
4872 * ones.
4873 *
4874 * Providers extracted via `importProvidersFrom` are only usable in an application injector or
4875 * another environment injector (such as a route injector). They should not be used in component
4876 * providers.
4877 *
4878 * More information about standalone components can be found in [this
4879 * guide](guide/standalone-components).
4880 *
4881 * @usageNotes
4882 * The results of the `importProvidersFrom` call can be used in the `bootstrapApplication` call:
4883 *
4884 * ```typescript
4885 * await bootstrapApplication(RootComponent, {
4886 * providers: [
4887 * importProvidersFrom(NgModuleOne, NgModuleTwo)
4888 * ]
4889 * });
4890 * ```
4891 *
4892 * You can also use the `importProvidersFrom` results in the `providers` field of a route, when a
4893 * standalone component is used:
4894 *
4895 * ```typescript
4896 * export const ROUTES: Route[] = [
4897 * {
4898 * path: 'foo',
4899 * providers: [
4900 * importProvidersFrom(NgModuleOne, NgModuleTwo)
4901 * ],
4902 * component: YourStandaloneComponent
4903 * }
4904 * ];
4905 * ```
4906 *
4907 * @returns Collected providers from the specified list of types.
4908 * @publicApi
4909 */
4910export declare function importProvidersFrom(...sources: ImportProvidersSource[]): EnvironmentProviders;
4911
4912/**
4913 * A source of providers for the `importProvidersFrom` function.
4914 *
4915 * @publicApi
4916 */
4917export declare type ImportProvidersSource = Type<unknown> | ModuleWithProviders<unknown> | Array<ImportProvidersSource>;
4918
4919/**
4920 * This array contains information about input properties that
4921 * need to be set once from attribute data. It's ordered by
4922 * directive index (relative to element) so it's simple to
4923 * look up a specific directive's initial input data.
4924 *
4925 * Within each sub-array:
4926 *
4927 * i+0: attribute name
4928 * i+1: minified/internal input name
4929 * i+2: initial value
4930 *
4931 * If a directive on a node does not have any input properties
4932 * that should be set from attributes, its index is set to null
4933 * to avoid a sparse array.
4934 *
4935 * e.g. [null, ['role-min', 'minified-input', 'button']]
4936 */
4937declare type InitialInputData = (InitialInputs | null)[];
4938
4939/**
4940 * Used by InitialInputData to store input properties
4941 * that should be set once from attributes.
4942 *
4943 * i+0: attribute name
4944 * i+1: minified/internal input name
4945 * i+2: input flags
4946 * i+3: initial value
4947 *
4948 * e.g. ['role-min', 'minified-input', 'button']
4949 */
4950declare type InitialInputs = (string | ɵɵInputFlags)[];
4951
4952/**
4953 * Type of the Inject metadata.
4954 *
4955 * @publicApi
4956 */
4957export declare interface Inject {
4958 /**
4959 * A [DI token](guide/glossary#di-token) that maps to the dependency to be injected.
4960 */
4961 token: any;
4962}
4963
4964/**
4965 * Inject decorator and metadata.
4966 *
4967 * @Annotation
4968 * @publicApi
4969 */
4970export declare const Inject: InjectDecorator;
4971
4972/**
4973 * @param token A token that represents a dependency that should be injected.
4974 * @returns the injected value if operation is successful, `null` otherwise.
4975 * @throws if called outside of a supported context.
4976 *
4977 * @publicApi
4978 */
4979export declare function inject<T>(token: ProviderToken<T>): T;
4980
4981/**
4982 * @param token A token that represents a dependency that should be injected.
4983 * @param flags Control how injection is executed. The flags correspond to injection strategies that
4984 * can be specified with parameter decorators `@Host`, `@Self`, `@SkipSelf`, and `@Optional`.
4985 * @returns the injected value if operation is successful, `null` otherwise.
4986 * @throws if called outside of a supported context.
4987 *
4988 * @publicApi
4989 * @deprecated prefer an options object instead of `InjectFlags`
4990 */
4991export declare function inject<T>(token: ProviderToken<T>, flags?: InjectFlags): T | null;
4992
4993/**
4994 * @param token A token that represents a dependency that should be injected.
4995 * @param options Control how injection is executed. Options correspond to injection strategies
4996 * that can be specified with parameter decorators `@Host`, `@Self`, `@SkipSelf`, and
4997 * `@Optional`.
4998 * @returns the injected value if operation is successful.
4999 * @throws if called outside of a supported context, or if the token is not found.
5000 *
5001 * @publicApi
5002 */
5003export declare function inject<T>(token: ProviderToken<T>, options: InjectOptions & {
5004 optional?: false;
5005}): T;
5006
5007/**
5008 * @param token A token that represents a dependency that should be injected.
5009 * @param options Control how injection is executed. Options correspond to injection strategies
5010 * that can be specified with parameter decorators `@Host`, `@Self`, `@SkipSelf`, and
5011 * `@Optional`.
5012 * @returns the injected value if operation is successful, `null` if the token is not
5013 * found and optional injection has been requested.
5014 * @throws if called outside of a supported context, or if the token is not found and optional
5015 * injection was not requested.
5016 *
5017 * @publicApi
5018 */
5019export declare function inject<T>(token: ProviderToken<T>, options: InjectOptions): T | null;
5020
5021/**
5022 * Type of the Injectable metadata.
5023 *
5024 * @publicApi
5025 */
5026export declare interface Injectable {
5027 /**
5028 * Determines which injectors will provide the injectable.
5029 *
5030 * - `Type<any>` - associates the injectable with an `@NgModule` or other `InjectorType`. This
5031 * option is DEPRECATED.
5032 * - 'null' : Equivalent to `undefined`. The injectable is not provided in any scope automatically
5033 * and must be added to a `providers` array of an [@NgModule](api/core/NgModule#providers),
5034 * [@Component](api/core/Directive#providers) or [@Directive](api/core/Directive#providers).
5035 *
5036 * The following options specify that this injectable should be provided in one of the following
5037 * injectors:
5038 * - 'root' : The application-level injector in most apps.
5039 * - 'platform' : A special singleton platform injector shared by all
5040 * applications on the page.
5041 * - 'any' : Provides a unique instance in each lazy loaded module while all eagerly loaded
5042 * modules share one instance. This option is DEPRECATED.
5043 *
5044 */
5045 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
5046}
5047
5048/**
5049 * Injectable decorator and metadata.
5050 *
5051 * @Annotation
5052 * @publicApi
5053 */
5054export declare const Injectable: InjectableDecorator;
5055
5056/**
5057 * Type of the Injectable decorator / constructor function.
5058 *
5059 * @publicApi
5060 */
5061export declare interface InjectableDecorator {
5062 /**
5063 * Decorator that marks a class as available to be
5064 * provided and injected as a dependency.
5065 *
5066 * @see [Introduction to Services and DI](guide/architecture-services)
5067 * @see [Dependency Injection Guide](guide/dependency-injection)
5068 *
5069 * @usageNotes
5070 *
5071 * Marking a class with `@Injectable` ensures that the compiler
5072 * will generate the necessary metadata to create the class's
5073 * dependencies when the class is injected.
5074 *
5075 * The following example shows how a service class is properly
5076 * marked so that a supporting service can be injected upon creation.
5077 *
5078 * <code-example path="core/di/ts/metadata_spec.ts" region="Injectable"></code-example>
5079 *
5080 */
5081 (): TypeDecorator;
5082 (options?: {
5083 providedIn: Type<any> | 'root' | 'platform' | 'any' | null;
5084 } & InjectableProvider): TypeDecorator;
5085 new (): Injectable;
5086 new (options?: {
5087 providedIn: Type<any> | 'root' | 'platform' | 'any' | null;
5088 } & InjectableProvider): Injectable;
5089}
5090
5091/**
5092 * Injectable providers used in `@Injectable` decorator.
5093 *
5094 * @publicApi
5095 */
5096export declare type InjectableProvider = ValueSansProvider | ExistingSansProvider | StaticClassSansProvider | ConstructorSansProvider | FactorySansProvider | ClassSansProvider;
5097
5098/**
5099 * A `Type` which has a `ɵprov: ɵɵInjectableDeclaration` static field.
5100 *
5101 * `InjectableType`s contain their own Dependency Injection metadata and are usable in an
5102 * `InjectorDef`-based `StaticInjector`.
5103 *
5104 * @publicApi
5105 */
5106export declare interface InjectableType<T> extends Type<T> {
5107 /**
5108 * Opaque type whose structure is highly version dependent. Do not rely on any properties.
5109 */
5110 ɵprov: unknown;
5111}
5112
5113
5114/**
5115 * Type of the Inject decorator / constructor function.
5116 *
5117 * @publicApi
5118 */
5119export declare interface InjectDecorator {
5120 /**
5121 * Parameter decorator on a dependency parameter of a class constructor
5122 * that specifies a custom provider of the dependency.
5123 *
5124 * @usageNotes
5125 * The following example shows a class constructor that specifies a
5126 * custom provider of a dependency using the parameter decorator.
5127 *
5128 * When `@Inject()` is not present, the injector uses the type annotation of the
5129 * parameter as the provider.
5130 *
5131 * <code-example path="core/di/ts/metadata_spec.ts" region="InjectWithoutDecorator">
5132 * </code-example>
5133 *
5134 * @see ["Dependency Injection Guide"](guide/dependency-injection)
5135 *
5136 */
5137 (token: any): any;
5138 new (token: any): Inject;
5139}
5140
5141/**
5142 * An object that contains information a service that has been injected within an
5143 * InjectorProfilerContext
5144 */
5145declare interface InjectedService {
5146 /**
5147 * DI token of the Service that is injected
5148 */
5149 token?: Type<unknown> | InjectionToken<unknown>;
5150 /**
5151 * Value of the injected service
5152 */
5153 value: unknown;
5154 /**
5155 * Flags that this service was injected with
5156 */
5157 flags?: InternalInjectFlags | InjectFlags | InjectOptions;
5158 /**
5159 * Injector that this service was provided in.
5160 */
5161 providedIn?: Injector;
5162 /**
5163 * In NodeInjectors, the LView and TNode that serviced this injection.
5164 */
5165 injectedIn?: {
5166 lView: LView;
5167 tNode: TNode;
5168 };
5169}
5170
5171/**
5172 * Injection flags for DI.
5173 *
5174 * @publicApi
5175 * @deprecated use an options object for [`inject`](api/core/inject) instead.
5176 */
5177export declare enum InjectFlags {
5178 /** Check self and check parent injector if needed */
5179 Default = 0,
5180 /**
5181 * Specifies that an injector should retrieve a dependency from any injector until reaching the
5182 * host element of the current component. (Only used with Element Injector)
5183 */
5184 Host = 1,
5185 /** Don't ascend to ancestors of the node requesting injection. */
5186 Self = 2,
5187 /** Skip the node that is requesting injection. */
5188 SkipSelf = 4,
5189 /** Inject `defaultValue` instead if token not found. */
5190 Optional = 8
5191}
5192
5193/**
5194 * Creates a token that can be used in a DI Provider.
5195 *
5196 * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a
5197 * runtime representation) such as when injecting an interface, callable type, array or
5198 * parameterized type.
5199 *
5200 * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by
5201 * the `Injector`. This provides an additional level of type safety.
5202 *
5203 * <div class="alert is-helpful">
5204 *
5205 * **Important Note**: Ensure that you use the same instance of the `InjectionToken` in both the
5206 * provider and the injection call. Creating a new instance of `InjectionToken` in different places,
5207 * even with the same description, will be treated as different tokens by Angular's DI system,
5208 * leading to a `NullInjectorError`.
5209 *
5210 * </div>
5211 *
5212 * <code-example format="typescript" language="typescript" path="injection-token/src/main.ts"
5213 * region="InjectionToken"></code-example>
5214 *
5215 * When creating an `InjectionToken`, you can optionally specify a factory function which returns
5216 * (possibly by creating) a default value of the parameterized type `T`. This sets up the
5217 * `InjectionToken` using this factory as a provider as if it was defined explicitly in the
5218 * application's root injector. If the factory function, which takes zero arguments, needs to inject
5219 * dependencies, it can do so using the [`inject`](api/core/inject) function.
5220 * As you can see in the Tree-shakable InjectionToken example below.
5221 *
5222 * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which
5223 * overrides the above behavior and marks the token as belonging to a particular `@NgModule` (note:
5224 * this option is now deprecated). As mentioned above, `'root'` is the default value for
5225 * `providedIn`.
5226 *
5227 * The `providedIn: NgModule` and `providedIn: 'any'` options are deprecated.
5228 *
5229 * @usageNotes
5230 * ### Basic Examples
5231 *
5232 * ### Plain InjectionToken
5233 *
5234 * {@example core/di/ts/injector_spec.ts region='InjectionToken'}
5235 *
5236 * ### Tree-shakable InjectionToken
5237 *
5238 * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
5239 *
5240 * @publicApi
5241 */
5242export declare class InjectionToken<T> {
5243 protected _desc: string;
5244 readonly ɵprov: unknown;
5245 /**
5246 * @param _desc Description for the token,
5247 * used only for debugging purposes,
5248 * it should but does not need to be unique
5249 * @param options Options for the token's usage, as described above
5250 */
5251 constructor(_desc: string, options?: {
5252 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
5253 factory: () => T;
5254 });
5255 toString(): string;
5256}
5257
5258/**
5259 * Type of the options argument to [`inject`](api/core/inject).
5260 *
5261 * @publicApi
5262 */
5263export declare interface InjectOptions {
5264 /**
5265 * Use optional injection, and return `null` if the requested token is not found.
5266 */
5267 optional?: boolean;
5268 /**
5269 * Start injection at the parent of the current injector.
5270 */
5271 skipSelf?: boolean;
5272 /**
5273 * Only query the current injector for the token, and don't fall back to the parent injector if
5274 * it's not found.
5275 */
5276 self?: boolean;
5277 /**
5278 * Stop injection at the host component's injector. Only relevant when injecting from an element
5279 * injector, and a no-op for environment injectors.
5280 */
5281 host?: boolean;
5282}
5283
5284/**
5285 * An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.
5286 *
5287 * Requesting this token instead of `Injector` allows `StaticInjector` to be tree-shaken from a
5288 * project.
5289 *
5290 * @publicApi
5291 */
5292export declare const INJECTOR: InjectionToken<Injector>;
5293
5294/**
5295 * Concrete injectors implement this interface. Injectors are configured
5296 * with [providers](guide/dependency-injection-providers) that associate
5297 * dependencies of various types with [injection tokens](guide/dependency-injection-providers).
5298 *
5299 * @see [DI Providers](guide/dependency-injection-providers).
5300 * @see {@link StaticProvider}
5301 *
5302 * @usageNotes
5303 *
5304 * The following example creates a service injector instance.
5305 *
5306 * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
5307 *
5308 * ### Usage example
5309 *
5310 * {@example core/di/ts/injector_spec.ts region='Injector'}
5311 *
5312 * `Injector` returns itself when given `Injector` as a token:
5313 *
5314 * {@example core/di/ts/injector_spec.ts region='injectInjector'}
5315 *
5316 * @publicApi
5317 */
5318export declare abstract class Injector {
5319 static THROW_IF_NOT_FOUND: {};
5320 static NULL: Injector;
5321 /**
5322 * Internal note on the `options?: InjectOptions|InjectFlags` override of the `get`
5323 * method: consider dropping the `InjectFlags` part in one of the major versions.
5324 * It can **not** be done in minor/patch, since it's breaking for custom injectors
5325 * that only implement the old `InjectorFlags` interface.
5326 */
5327 /**
5328 * Retrieves an instance from the injector based on the provided token.
5329 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
5330 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
5331 */
5332 abstract get<T>(token: ProviderToken<T>, notFoundValue: undefined, options: InjectOptions & {
5333 optional?: false;
5334 }): T;
5335 /**
5336 * Retrieves an instance from the injector based on the provided token.
5337 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
5338 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
5339 */
5340 abstract get<T>(token: ProviderToken<T>, notFoundValue: null | undefined, options: InjectOptions): T | null;
5341 /**
5342 * Retrieves an instance from the injector based on the provided token.
5343 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
5344 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
5345 */
5346 abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, options?: InjectOptions | InjectFlags): T;
5347 /**
5348 * Retrieves an instance from the injector based on the provided token.
5349 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
5350 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
5351 * @deprecated use object-based flags (`InjectOptions`) instead.
5352 */
5353 abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
5354 /**
5355 * @deprecated from v4.0.0 use ProviderToken<T>
5356 * @suppress {duplicate}
5357 */
5358 abstract get(token: any, notFoundValue?: any): any;
5359 /**
5360 * @deprecated from v5 use the new signature Injector.create(options)
5361 */
5362 static create(providers: StaticProvider[], parent?: Injector): Injector;
5363 /**
5364 * Creates a new injector instance that provides one or more dependencies,
5365 * according to a given type or types of `StaticProvider`.
5366 *
5367 * @param options An object with the following properties:
5368 * * `providers`: An array of providers of the [StaticProvider type](api/core/StaticProvider).
5369 * * `parent`: (optional) A parent injector.
5370 * * `name`: (optional) A developer-defined identifying name for the new injector.
5371 *
5372 * @returns The new injector instance.
5373 *
5374 */
5375 static create(options: {
5376 providers: Array<Provider | StaticProvider>;
5377 parent?: Injector;
5378 name?: string;
5379 }): Injector;
5380 /** @nocollapse */
5381 static ɵprov: unknown;
5382}
5383
5384declare const INJECTOR_2 = 9;
5385
5386declare type InjectorScope = 'root' | 'platform' | 'environment';
5387
5388/**
5389 * A type which has an `InjectorDef` static field.
5390 *
5391 * `InjectorTypes` can be used to configure a `StaticInjector`.
5392 *
5393 * This is an opaque type whose structure is highly version dependent. Do not rely on any
5394 * properties.
5395 *
5396 * @publicApi
5397 */
5398export declare interface InjectorType<T> extends Type<T> {
5399 ɵfac?: unknown;
5400 ɵinj: unknown;
5401}
5402
5403/**
5404 * Describes the `InjectorDef` equivalent of a `ModuleWithProviders`, an `InjectorType` with an
5405 * associated array of providers.
5406 *
5407 * Objects of this type can be listed in the imports section of an `InjectorDef`.
5408 *
5409 * NOTE: This is a private type and should not be exported
5410 */
5411declare interface InjectorTypeWithProviders<T> {
5412 ngModule: InjectorType<T>;
5413 providers?: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | EnvironmentProviders | any[])[];
5414}
5415
5416/**
5417 * Type of metadata for an `Input` property.
5418 *
5419 * @publicApi
5420 */
5421export declare interface Input {
5422 /**
5423 * The name of the DOM property to which the input property is bound.
5424 */
5425 alias?: string;
5426 /**
5427 * Whether the input is required for the directive to function.
5428 */
5429 required?: boolean;
5430 /**
5431 * Function with which to transform the input value before assigning it to the directive instance.
5432 */
5433 transform?: (value: any) => any;
5434}
5435
5436/**
5437 * @Annotation
5438 * @publicApi
5439 */
5440export declare const Input: InputDecorator;
5441
5442/**
5443 * The `input` function allows declaration of inputs in directives and
5444 * components.
5445 *
5446 * Initializes an input with an initial value. If no explicit value
5447 * is specified, Angular will use `undefined`.
5448 *
5449 * Consider using `input.required` for inputs that don't need an
5450 * initial value.
5451 *
5452 * @usageNotes
5453 * Initialize an input in your directive or component by declaring a
5454 * class field and initializing it with the `input()` function.
5455 *
5456 * ```ts
5457 * @Directive({..})
5458 * export class MyDir {
5459 * firstName = input<string>(); // string|undefined
5460 * lastName = input.required<string>(); // string
5461 * age = input(0); // number
5462 * }
5463 * ```
5464 *
5465 * @developerPreview
5466 */
5467export declare const input: InputFunction;
5468
5469/**
5470 * @publicApi
5471 */
5472export declare interface InputDecorator {
5473 /**
5474 * Decorator that marks a class field as an input property and supplies configuration metadata.
5475 * The input property is bound to a DOM property in the template. During change detection,
5476 * Angular automatically updates the data property with the DOM property's value.
5477 *
5478 * @usageNotes
5479 *
5480 * You can supply an optional name to use in templates when the
5481 * component is instantiated, that maps to the
5482 * name of the bound property. By default, the original
5483 * name of the bound property is used for input binding.
5484 *
5485 * The following example creates a component with two input properties,
5486 * one of which is given a special binding name.
5487 *
5488 * ```typescript
5489 * import { Component, Input, numberAttribute, booleanAttribute } from '@angular/core';
5490 * @Component({
5491 * selector: 'bank-account',
5492 * template: `
5493 * Bank Name: {{bankName}}
5494 * Account Id: {{id}}
5495 * Account Status: {{status ? 'Active' : 'InActive'}}
5496 * `
5497 * })
5498 * class BankAccount {
5499 * // This property is bound using its original name.
5500 * // Defining argument required as true inside the Input Decorator
5501 * // makes this property deceleration as mandatory
5502 * @Input({ required: true }) bankName!: string;
5503 * // Argument alias makes this property value is bound to a different property name
5504 * // when this component is instantiated in a template.
5505 * // Argument transform convert the input value from string to number
5506 * @Input({ alias:'account-id', transform: numberAttribute }) id: number;
5507 * // Argument transform the input value from string to boolean
5508 * @Input({ transform: booleanAttribute }) status: boolean;
5509 * // this property is not bound, and is not automatically updated by Angular
5510 * normalizedBankName: string;
5511 * }
5512 *
5513 * @Component({
5514 * selector: 'app',
5515 * template: `
5516 * <bank-account bankName="RBC" account-id="4747" status="true"></bank-account>
5517 * `
5518 * })
5519 * class App {}
5520 * ```
5521 *
5522 * @see [Input and Output properties](guide/inputs-outputs)
5523 */
5524 (arg?: string | Input): any;
5525 new (arg?: string | Input): any;
5526}
5527
5528/**
5529 * The `input` function allows declaration of inputs in directives and
5530 * components.
5531 *
5532 * The function exposes an API for also declaring required inputs via the
5533 * `input.required` function.
5534 *
5535 * @usageNotes
5536 * Initialize an input in your directive or component by declaring a
5537 * class field and initializing it with the `input()` or `input.required()`
5538 * function.
5539 *
5540 * ```ts
5541 * @Directive({..})
5542 * export class MyDir {
5543 * firstName = input<string>(); // string|undefined
5544 * lastName = input.required<string>(); // string
5545 * age = input(0); // number
5546 * }
5547 * ```
5548 *
5549 * @developerPreview
5550 */
5551export declare interface InputFunction {
5552 /**
5553 * Initializes an input with an initial value. If no explicit value
5554 * is specified, Angular will use `undefined`.
5555 *
5556 * Consider using `input.required` for inputs that don't need an
5557 * initial value.
5558 *
5559 * @developerPreview
5560 */
5561 <ReadT>(): InputSignal<ReadT | undefined>;
5562 <ReadT>(initialValue: ReadT, opts?: InputOptionsWithoutTransform<ReadT>): InputSignal<ReadT>;
5563 <ReadT, WriteT>(initialValue: ReadT, opts: InputOptionsWithTransform<ReadT, WriteT>): InputSignalWithTransform<ReadT, WriteT>;
5564 /**
5565 * Initializes a required input.
5566 *
5567 * Users of your directive/component need to bind to this
5568 * input. If unset, a compile time error will be reported.
5569 *
5570 * @developerPreview
5571 */
5572 required: {
5573 <ReadT>(opts?: InputOptionsWithoutTransform<ReadT>): InputSignal<ReadT>;
5574 <ReadT, WriteT>(opts: InputOptionsWithTransform<ReadT, WriteT>): InputSignalWithTransform<ReadT, WriteT>;
5575 };
5576}
5577
5578/**
5579 * @developerPreview
5580 *
5581 * Options for signal inputs.
5582 */
5583export declare interface InputOptions<ReadT, WriteT> {
5584 /** Optional public name for the input. By default, the class field name is used. */
5585 alias?: string;
5586 /**
5587 * Optional transform that runs whenever a new value is bound. Can be used to
5588 * transform the input value before the input is updated.
5589 *
5590 * The transform function can widen the type of the input. For example, consider
5591 * an input for `disabled`. In practice, as the component author, you want to only
5592 * deal with a boolean, but users may want to bind a string if they just use the
5593 * attribute form to bind to the input via `<my-dir input>`. A transform can then
5594 * handle such string values and convert them to `boolean`. See: {@link booleanAttribute}.
5595 */
5596 transform?: (v: WriteT) => ReadT;
5597}
5598
5599/**
5600 * Signal input options without the transform option.
5601 *
5602 * @developerPreview
5603 */
5604export declare type InputOptionsWithoutTransform<ReadT> = Omit<InputOptions<ReadT, ReadT>, 'transform'> & {
5605 transform?: undefined;
5606};
5607
5608/**
5609 * Signal input options with the transform option required.
5610 *
5611 * @developerPreview
5612 */
5613export declare type InputOptionsWithTransform<ReadT, WriteT> = Required<Pick<InputOptions<ReadT, WriteT>, 'transform'>> & InputOptions<ReadT, WriteT>;
5614
5615/**
5616 * `InputSignal` represents a special `Signal` for a directive/component input.
5617 *
5618 * An input signal is similar to a non-writable signal except that it also
5619 * carries additional type-information for transforms, and that Angular internally
5620 * updates the signal whenever a new value is bound.
5621 *
5622 * @see {@link InputOptionsWithTransform} for inputs with transforms.
5623 *
5624 * @developerPreview
5625 */
5626export declare interface InputSignal<ReadT> extends InputSignalWithTransform<ReadT, ReadT> {
5627}
5628
5629/**
5630 * Reactive node type for an input signal. An input signal extends a signal.
5631 * There are special properties to enable transforms and required inputs.
5632 */
5633declare interface InputSignalNode<ReadT, WriteT> extends SignalNode<ReadT> {
5634 /**
5635 * User-configured transform that will run whenever a new value is applied
5636 * to the input signal node.
5637 */
5638 transformFn: ((value: WriteT) => ReadT) | undefined;
5639 /**
5640 * Applies a new value to the input signal. Expects transforms to be run
5641 * manually before.
5642 *
5643 * This function is called by the framework runtime code whenever a binding
5644 * changes. The value can in practice be anything at runtime, but for typing
5645 * purposes we assume it's a valid `ReadT` value. Type-checking will enforce that.
5646 */
5647 applyValueToInputSignal<ReadT, WriteT>(node: InputSignalNode<ReadT, WriteT>, value: ReadT): void;
5648}
5649
5650/**
5651 * `InputSignalWithTransform` represents a special `Signal` for a
5652 * directive/component input with a `transform` function.
5653 *
5654 * Signal inputs with transforms capture an extra generic for their transform write
5655 * type. Transforms can expand the accepted bound values for an input while ensuring
5656 * value retrievals of the signal input are still matching the generic input type.
5657 *
5658 * ```ts
5659 * class MyDir {
5660 * disabled = input(false, {
5661 * transform: (v: string|boolean) => convertToBoolean(v),
5662 * }); // InputSignalWithTransform<boolean, string|boolean>
5663 *
5664 * click() {
5665 * this.disabled() // always returns a `boolean`.
5666 * }
5667 * }
5668 * ```
5669 *
5670 * @see {@link InputSignal} for additional information.
5671 *
5672 * @developerPreview
5673 */
5674export declare interface InputSignalWithTransform<ReadT, WriteT> extends Signal<ReadT> {
5675 [SIGNAL]: InputSignalNode<ReadT, WriteT>;
5676 [ɵINPUT_SIGNAL_BRAND_READ_TYPE]: ReadT;
5677 [ɵINPUT_SIGNAL_BRAND_WRITE_TYPE]: WriteT;
5678}
5679
5680/** Function that can be used to transform incoming input values. */
5681declare type InputTransformFunction = (value: any) => any;
5682
5683/**
5684 * See `TNode.insertBeforeIndex`
5685 */
5686declare type InsertBeforeIndex = null | number | number[];
5687
5688/**
5689 * Options passed to `internalAfterNextRender`.
5690 */
5691declare interface InternalAfterNextRenderOptions {
5692 /**
5693 * The `Injector` to use during creation.
5694 *
5695 * If this is not provided, the current injection context will be used instead (via `inject`).
5696 */
5697 injector?: Injector;
5698 /**
5699 * When true, the hook will execute both on client and on the server.
5700 *
5701 * When false or undefined, the hook only executes in the browser.
5702 */
5703 runOnServer?: boolean;
5704}
5705
5706/**
5707 * This enum is an exact copy of the `InjectFlags` enum above, but the difference is that this is a
5708 * const enum, so actual enum values would be inlined in generated code. The `InjectFlags` enum can
5709 * be turned into a const enum when ViewEngine is removed (see TODO at the `InjectFlags` enum
5710 * above). The benefit of inlining is that we can use these flags at the top level without affecting
5711 * tree-shaking (see "no-toplevel-property-access" tslint rule for more info).
5712 * Keep this enum in sync with `InjectFlags` enum above.
5713 */
5714declare const enum InternalInjectFlags {
5715 /** Check self and check parent injector if needed */
5716 Default = 0,
5717 /**
5718 * Specifies that an injector should retrieve a dependency from any injector until reaching the
5719 * host element of the current component. (Only used with Element Injector)
5720 */
5721 Host = 1,
5722 /** Don't ascend to ancestors of the node requesting injection. */
5723 Self = 2,
5724 /** Skip the node that is requesting injection. */
5725 SkipSelf = 4,
5726 /** Inject `defaultValue` instead if token not found. */
5727 Optional = 8,
5728 /**
5729 * This token is being injected into a pipe.
5730 *
5731 * This flag is intentionally not in the public facing `InjectFlags` because it is only added by
5732 * the compiler and is not a developer applicable flag.
5733 */
5734 ForPipe = 16
5735}
5736
5737declare interface InternalNgModuleRef<T> extends NgModuleRef<T> {
5738 _bootstrapComponents: Type<any>[];
5739}
5740
5741
5742/**
5743 * Returns whether Angular is in development mode.
5744 *
5745 * By default, this is true, unless `enableProdMode` is invoked prior to calling this method or the
5746 * application is built using the Angular CLI with the `optimization` option.
5747 * @see {@link cli/build ng build}
5748 *
5749 * @publicApi
5750 */
5751export declare function isDevMode(): boolean;
5752
5753/**
5754 * Checks if the given `value` is a reactive `Signal`.
5755 */
5756export declare function isSignal(value: unknown): value is Signal<unknown>;
5757
5758/**
5759 * Checks whether a given Component, Directive or Pipe is marked as standalone.
5760 * This will return false if passed anything other than a Component, Directive, or Pipe class
5761 * See [this guide](/guide/standalone-components) for additional information:
5762 *
5763 * @param type A reference to a Component, Directive or Pipe.
5764 * @publicApi
5765 */
5766export declare function isStandalone(type: Type<unknown>): boolean;
5767
5768/**
5769 * Record representing the item change information.
5770 *
5771 * @publicApi
5772 */
5773export declare interface IterableChangeRecord<V> {
5774 /** Current index of the item in `Iterable` or null if removed. */
5775 readonly currentIndex: number | null;
5776 /** Previous index of the item in `Iterable` or null if added. */
5777 readonly previousIndex: number | null;
5778 /** The item. */
5779 readonly item: V;
5780 /** Track by identity as computed by the `TrackByFunction`. */
5781 readonly trackById: any;
5782}
5783
5784declare class IterableChangeRecord_<V> implements IterableChangeRecord<V> {
5785 item: V;
5786 trackById: any;
5787 currentIndex: number | null;
5788 previousIndex: number | null;
5789 constructor(item: V, trackById: any);
5790}
5791
5792/**
5793 * An object describing the changes in the `Iterable` collection since last time
5794 * `IterableDiffer#diff()` was invoked.
5795 *
5796 * @publicApi
5797 */
5798export declare interface IterableChanges<V> {
5799 /**
5800 * Iterate over all changes. `IterableChangeRecord` will contain information about changes
5801 * to each item.
5802 */
5803 forEachItem(fn: (record: IterableChangeRecord<V>) => void): void;
5804 /**
5805 * Iterate over a set of operations which when applied to the original `Iterable` will produce the
5806 * new `Iterable`.
5807 *
5808 * NOTE: These are not necessarily the actual operations which were applied to the original
5809 * `Iterable`, rather these are a set of computed operations which may not be the same as the
5810 * ones applied.
5811 *
5812 * @param record A change which needs to be applied
5813 * @param previousIndex The `IterableChangeRecord#previousIndex` of the `record` refers to the
5814 * original `Iterable` location, where as `previousIndex` refers to the transient location
5815 * of the item, after applying the operations up to this point.
5816 * @param currentIndex The `IterableChangeRecord#currentIndex` of the `record` refers to the
5817 * original `Iterable` location, where as `currentIndex` refers to the transient location
5818 * of the item, after applying the operations up to this point.
5819 */
5820 forEachOperation(fn: (record: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void;
5821 /**
5822 * Iterate over changes in the order of original `Iterable` showing where the original items
5823 * have moved.
5824 */
5825 forEachPreviousItem(fn: (record: IterableChangeRecord<V>) => void): void;
5826 /** Iterate over all added items. */
5827 forEachAddedItem(fn: (record: IterableChangeRecord<V>) => void): void;
5828 /** Iterate over all moved items. */
5829 forEachMovedItem(fn: (record: IterableChangeRecord<V>) => void): void;
5830 /** Iterate over all removed items. */
5831 forEachRemovedItem(fn: (record: IterableChangeRecord<V>) => void): void;
5832 /**
5833 * Iterate over all items which had their identity (as computed by the `TrackByFunction`)
5834 * changed.
5835 */
5836 forEachIdentityChange(fn: (record: IterableChangeRecord<V>) => void): void;
5837}
5838
5839/**
5840 * A strategy for tracking changes over time to an iterable. Used by {@link NgForOf} to
5841 * respond to changes in an iterable by effecting equivalent changes in the DOM.
5842 *
5843 * @publicApi
5844 */
5845export declare interface IterableDiffer<V> {
5846 /**
5847 * Compute a difference between the previous state and the new `object` state.
5848 *
5849 * @param object containing the new value.
5850 * @returns an object describing the difference. The return value is only valid until the next
5851 * `diff()` invocation.
5852 */
5853 diff(object: NgIterable<V> | undefined | null): IterableChanges<V> | null;
5854}
5855
5856/**
5857 * Provides a factory for {@link IterableDiffer}.
5858 *
5859 * @publicApi
5860 */
5861export declare interface IterableDifferFactory {
5862 supports(objects: any): boolean;
5863 create<V>(trackByFn?: TrackByFunction<V>): IterableDiffer<V>;
5864}
5865
5866/**
5867 * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.
5868 *
5869 * @publicApi
5870 */
5871export declare class IterableDiffers {
5872 private factories;
5873 /** @nocollapse */
5874 static ɵprov: unknown;
5875 constructor(factories: IterableDifferFactory[]);
5876 static create(factories: IterableDifferFactory[], parent?: IterableDiffers): IterableDiffers;
5877 /**
5878 * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the
5879 * inherited {@link IterableDiffers} instance with the provided factories and return a new
5880 * {@link IterableDiffers} instance.
5881 *
5882 * @usageNotes
5883 * ### Example
5884 *
5885 * The following example shows how to extend an existing list of factories,
5886 * which will only be applied to the injector for this component and its children.
5887 * This step is all that's required to make a new {@link IterableDiffer} available.
5888 *
5889 * ```
5890 * @Component({
5891 * viewProviders: [
5892 * IterableDiffers.extend([new ImmutableListDiffer()])
5893 * ]
5894 * })
5895 * ```
5896 */
5897 static extend(factories: IterableDifferFactory[]): StaticProvider;
5898 find(iterable: any): IterableDifferFactory;
5899}
5900
5901/**
5902 * The existence of this constant (in this particular file) informs the Angular compiler that the
5903 * current program is actually @angular/core, which needs to be compiled specially.
5904 */
5905declare const ITS_JUST_ANGULAR = true;
5906
5907/**
5908 * `KeyValueArray` is an array where even positions contain keys and odd positions contain values.
5909 *
5910 * `KeyValueArray` provides a very efficient way of iterating over its contents. For small
5911 * sets (~10) the cost of binary searching an `KeyValueArray` has about the same performance
5912 * characteristics that of a `Map` with significantly better memory footprint.
5913 *
5914 * If used as a `Map` the keys are stored in alphabetical order so that they can be binary searched
5915 * for retrieval.
5916 *
5917 * See: `keyValueArraySet`, `keyValueArrayGet`, `keyValueArrayIndexOf`, `keyValueArrayDelete`.
5918 */
5919declare interface KeyValueArray<VALUE> extends Array<VALUE | string> {
5920 __brand__: 'array-map';
5921}
5922
5923/**
5924 * Record representing the item change information.
5925 *
5926 * @publicApi
5927 */
5928export declare interface KeyValueChangeRecord<K, V> {
5929 /**
5930 * Current key in the Map.
5931 */
5932 readonly key: K;
5933 /**
5934 * Current value for the key or `null` if removed.
5935 */
5936 readonly currentValue: V | null;
5937 /**
5938 * Previous value for the key or `null` if added.
5939 */
5940 readonly previousValue: V | null;
5941}
5942
5943/**
5944 * An object describing the changes in the `Map` or `{[k:string]: string}` since last time
5945 * `KeyValueDiffer#diff()` was invoked.
5946 *
5947 * @publicApi
5948 */
5949export declare interface KeyValueChanges<K, V> {
5950 /**
5951 * Iterate over all changes. `KeyValueChangeRecord` will contain information about changes
5952 * to each item.
5953 */
5954 forEachItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
5955 /**
5956 * Iterate over changes in the order of original Map showing where the original items
5957 * have moved.
5958 */
5959 forEachPreviousItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
5960 /**
5961 * Iterate over all keys for which values have changed.
5962 */
5963 forEachChangedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
5964 /**
5965 * Iterate over all added items.
5966 */
5967 forEachAddedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
5968 /**
5969 * Iterate over all removed items.
5970 */
5971 forEachRemovedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
5972}
5973
5974/**
5975 * A differ that tracks changes made to an object over time.
5976 *
5977 * @publicApi
5978 */
5979export declare interface KeyValueDiffer<K, V> {
5980 /**
5981 * Compute a difference between the previous state and the new `object` state.
5982 *
5983 * @param object containing the new value.
5984 * @returns an object describing the difference. The return value is only valid until the next
5985 * `diff()` invocation.
5986 */
5987 diff(object: Map<K, V>): KeyValueChanges<K, V> | null;
5988 /**
5989 * Compute a difference between the previous state and the new `object` state.
5990 *
5991 * @param object containing the new value.
5992 * @returns an object describing the difference. The return value is only valid until the next
5993 * `diff()` invocation.
5994 */
5995 diff(object: {
5996 [key: string]: V;
5997 }): KeyValueChanges<string, V> | null;
5998}
5999
6000/**
6001 * Provides a factory for {@link KeyValueDiffer}.
6002 *
6003 * @publicApi
6004 */
6005export declare interface KeyValueDifferFactory {
6006 /**
6007 * Test to see if the differ knows how to diff this kind of object.
6008 */
6009 supports(objects: any): boolean;
6010 /**
6011 * Create a `KeyValueDiffer`.
6012 */
6013 create<K, V>(): KeyValueDiffer<K, V>;
6014}
6015
6016/**
6017 * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.
6018 *
6019 * @publicApi
6020 */
6021export declare class KeyValueDiffers {
6022 /** @nocollapse */
6023 static ɵprov: unknown;
6024 /**
6025 * @deprecated v4.0.0 - Should be private.
6026 */
6027 factories: KeyValueDifferFactory[];
6028 constructor(factories: KeyValueDifferFactory[]);
6029 static create<S>(factories: KeyValueDifferFactory[], parent?: KeyValueDiffers): KeyValueDiffers;
6030 /**
6031 * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the
6032 * inherited {@link KeyValueDiffers} instance with the provided factories and return a new
6033 * {@link KeyValueDiffers} instance.
6034 *
6035 * @usageNotes
6036 * ### Example
6037 *
6038 * The following example shows how to extend an existing list of factories,
6039 * which will only be applied to the injector for this component and its children.
6040 * This step is all that's required to make a new {@link KeyValueDiffer} available.
6041 *
6042 * ```
6043 * @Component({
6044 * viewProviders: [
6045 * KeyValueDiffers.extend([new ImmutableMapDiffer()])
6046 * ]
6047 * })
6048 * ```
6049 */
6050 static extend<S>(factories: KeyValueDifferFactory[]): StaticProvider;
6051 find(kv: any): KeyValueDifferFactory;
6052}
6053
6054/**
6055 * The state associated with a container.
6056 *
6057 * This is an array so that its structure is closer to LView. This helps
6058 * when traversing the view tree (which is a mix of containers and component
6059 * views), so we can jump to viewOrContainer[NEXT] in the same way regardless
6060 * of type.
6061 */
6062declare interface LContainer extends Array<any> {
6063 /**
6064 * The host element of this LContainer.
6065 *
6066 * The host could be an LView if this container is on a component node.
6067 * In that case, the component LView is its HOST.
6068 */
6069 readonly [HOST]: RElement | RComment | LView;
6070 /**
6071 * This is a type field which allows us to differentiate `LContainer` from `StylingContext` in an
6072 * efficient way. The value is always set to `true`
6073 */
6074 [TYPE]: true;
6075 /** Flags for this container. See LContainerFlags for more info. */
6076 [FLAGS]: LContainerFlags;
6077 /**
6078 * Access to the parent view is necessary so we can propagate back
6079 * up from inside a container to parent[NEXT].
6080 */
6081 [PARENT]: LView;
6082 /**
6083 * This allows us to jump from a container to a sibling container or component
6084 * view with the same parent, so we can remove listeners efficiently.
6085 */
6086 [NEXT]: LView | LContainer | null;
6087 /**
6088 * A collection of views created based on the underlying `<ng-template>` element but inserted into
6089 * a different `LContainer`. We need to track views created from a given declaration point since
6090 * queries collect matches from the embedded view declaration point and _not_ the insertion point.
6091 */
6092 [MOVED_VIEWS]: LView[] | null;
6093 /**
6094 * Pointer to the `TNode` which represents the host of the container.
6095 */
6096 [T_HOST]: TNode;
6097 /** The comment element that serves as an anchor for this LContainer. */
6098 [NATIVE]: RComment;
6099 /**
6100 * Array of `ViewRef`s used by any `ViewContainerRef`s that point to this container.
6101 *
6102 * This is lazily initialized by `ViewContainerRef` when the first view is inserted.
6103 *
6104 * NOTE: This is stored as `any[]` because render3 should really not be aware of `ViewRef` and
6105 * doing so creates circular dependency.
6106 */
6107 [VIEW_REFS]: unknown[] | null;
6108 /**
6109 * Array of dehydrated views within this container.
6110 *
6111 * This information is used during the hydration process on the client.
6112 * The hydration logic tries to find a matching dehydrated view, "claim" it
6113 * and use this information to do further matching. After that, this "claimed"
6114 * view is removed from the list. The remaining "unclaimed" views are
6115 * "garbage-collected" later on, i.e. removed from the DOM once the hydration
6116 * logic finishes.
6117 */
6118 [DEHYDRATED_VIEWS]: DehydratedContainerView[] | null;
6119}
6120
6121/** Flags associated with an LContainer (saved in LContainer[FLAGS]) */
6122declare enum LContainerFlags {
6123 None = 0,
6124 /**
6125 * Flag to signify that this `LContainer` may have transplanted views which need to be change
6126 * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
6127 *
6128 * This flag, once set, is never unset for the `LContainer`.
6129 */
6130 HasTransplantedViews = 2
6131}
6132
6133declare type LegacyInputPartialMapping = string | [bindingPropertyName: string, classPropertyName: string, transformFunction?: Function];
6134
6135/**
6136 * Event listener configuration returned from `getListeners`.
6137 * @publicApi
6138 */
6139declare interface Listener {
6140 /** Name of the event listener. */
6141 name: string;
6142 /** Element that the listener is bound to. */
6143 element: Element;
6144 /** Callback that is invoked when the event is triggered. */
6145 callback: (value: any) => any;
6146 /** Whether the listener is using event capturing. */
6147 useCapture: boolean;
6148 /**
6149 * Type of the listener (e.g. a native DOM event or a custom @Output).
6150 */
6151 type: 'dom' | 'output';
6152}
6153
6154/**
6155 * Provide this token to set the locale of your application.
6156 * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,
6157 * DecimalPipe and PercentPipe) and by ICU expressions.
6158 *
6159 * See the [i18n guide](guide/i18n-common-locale-id) for more information.
6160 *
6161 * @usageNotes
6162 * ### Example
6163 *
6164 * ```typescript
6165 * import { LOCALE_ID } from '@angular/core';
6166 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
6167 * import { AppModule } from './app/app.module';
6168 *
6169 * platformBrowserDynamic().bootstrapModule(AppModule, {
6170 * providers: [{provide: LOCALE_ID, useValue: 'en-US' }]
6171 * });
6172 * ```
6173 *
6174 * @publicApi
6175 */
6176export declare const LOCALE_ID: InjectionToken<string>;
6177
6178/**
6179 * Type for a function that extracts a value for a local refs.
6180 * Example:
6181 * - `<div #nativeDivEl>` - `nativeDivEl` should point to the native `<div>` element;
6182 * - `<ng-template #tplRef>` - `tplRef` should point to the `TemplateRef` instance;
6183 */
6184declare type LocalRefExtractor = (tNode: TNodeWithLocalRefs, currentView: LView) => any;
6185
6186/**
6187 * lQueries represent a collection of individual LQuery objects tracked in a given view.
6188 */
6189declare interface LQueries {
6190 /**
6191 * A collection of queries tracked in a given view.
6192 */
6193 queries: LQuery<any>[];
6194 /**
6195 * A method called when a new embedded view is created. As a result a set of LQueries applicable
6196 * for a new embedded view is instantiated (cloned) from the declaration view.
6197 * @param tView
6198 */
6199 createEmbeddedView(tView: TView): LQueries | null;
6200 /**
6201 * A method called when an embedded view is inserted into a container. As a result all impacted
6202 * `LQuery` objects (and associated `QueryList`) are marked as dirty.
6203 * @param tView
6204 */
6205 insertView(tView: TView): void;
6206 /**
6207 * A method called when an embedded view is detached from a container. As a result all impacted
6208 * `LQuery` objects (and associated `QueryList`) are marked as dirty.
6209 * @param tView
6210 */
6211 detachView(tView: TView): void;
6212 /**
6213 * A method called when a view finishes its creation pass. As a result all impacted
6214 * `LQuery` objects (and associated `QueryList`) are marked as dirty. This additional dirty
6215 * marking gives us a precise point in time where we can collect results for a given view in an
6216 * atomic way.
6217 * @param tView
6218 */
6219 finishViewCreation(tView: TView): void;
6220}
6221
6222/**
6223 * An interface that represents query-related information specific to a view instance. Most notably
6224 * it contains:
6225 * - materialized query matches;
6226 * - a pointer to a QueryList where materialized query results should be reported.
6227 */
6228declare interface LQuery<T> {
6229 /**
6230 * Materialized query matches for a given view only (!). Results are initialized lazily so the
6231 * array of matches is set to `null` initially.
6232 */
6233 matches: (T | null)[] | null;
6234 /**
6235 * A QueryList where materialized query results should be reported.
6236 */
6237 queryList: QueryList<T>;
6238 /**
6239 * Clones an LQuery for an embedded view. A cloned query shares the same `QueryList` but has a
6240 * separate collection of materialized matches.
6241 */
6242 clone(): LQuery<T>;
6243 /**
6244 * Called when an embedded view, impacting results of this query, is inserted or removed.
6245 */
6246 setDirty(): void;
6247}
6248
6249/**
6250 * `LView` stores all of the information needed to process the instructions as
6251 * they are invoked from the template. Each embedded view and component view has its
6252 * own `LView`. When processing a particular view, we set the `viewData` to that
6253 * `LView`. When that view is done processing, the `viewData` is set back to
6254 * whatever the original `viewData` was before (the parent `LView`).
6255 *
6256 * Keeping separate state for each view facilities view insertion / deletion, so we
6257 * don't have to edit the data array based on which views are present.
6258 */
6259declare interface LView<T = unknown> extends Array<any> {
6260 /**
6261 * The node into which this `LView` is inserted.
6262 */
6263 [HOST]: RElement | null;
6264 /**
6265 * The static data for this view. We need a reference to this so we can easily walk up the
6266 * node tree in DI and get the TView.data array associated with a node (where the
6267 * directive defs are stored).
6268 */
6269 readonly [TVIEW]: TView;
6270 /** Flags for this view. See LViewFlags for more info. */
6271 [FLAGS]: LViewFlags;
6272 /**
6273 * This may store an {@link LView} or {@link LContainer}.
6274 *
6275 * `LView` - The parent view. This is needed when we exit the view and must restore the previous
6276 * LView. Without this, the render method would have to keep a stack of
6277 * views as it is recursively rendering templates.
6278 *
6279 * `LContainer` - The current view is part of a container, and is an embedded view.
6280 */
6281 [PARENT]: LView | LContainer | null;
6282 /**
6283 *
6284 * The next sibling LView or LContainer.
6285 *
6286 * Allows us to propagate between sibling view states that aren't in the same
6287 * container. Embedded views already have a node.next, but it is only set for
6288 * views in the same container. We need a way to link component views and views
6289 * across containers as well.
6290 */
6291 [NEXT]: LView | LContainer | null;
6292 /** Queries active for this view - nodes from a view are reported to those queries. */
6293 [QUERIES]: LQueries | null;
6294 /**
6295 * Store the `TNode` of the location where the current `LView` is inserted into.
6296 *
6297 * Given:
6298 * ```
6299 * <div>
6300 * <ng-template><span></span></ng-template>
6301 * </div>
6302 * ```
6303 *
6304 * We end up with two `TView`s.
6305 * - `parent` `TView` which contains `<div><!-- anchor --></div>`
6306 * - `child` `TView` which contains `<span></span>`
6307 *
6308 * Typically the `child` is inserted into the declaration location of the `parent`, but it can be
6309 * inserted anywhere. Because it can be inserted anywhere it is not possible to store the
6310 * insertion information in the `TView` and instead we must store it in the `LView[T_HOST]`.
6311 *
6312 * So to determine where is our insertion parent we would execute:
6313 * ```
6314 * const parentLView = lView[PARENT];
6315 * const parentTNode = lView[T_HOST];
6316 * const insertionParent = parentLView[parentTNode.index];
6317 * ```
6318 *
6319 *
6320 * If `null`, this is the root view of an application (root component is in this view) and it has
6321 * no parents.
6322 */
6323 [T_HOST]: TNode | null;
6324 /**
6325 * When a view is destroyed, listeners need to be released and outputs need to be
6326 * unsubscribed. This context array stores both listener functions wrapped with
6327 * their context and output subscription instances for a particular view.
6328 *
6329 * These change per LView instance, so they cannot be stored on TView. Instead,
6330 * TView.cleanup saves an index to the necessary context in this array.
6331 *
6332 * After `LView` is created it is possible to attach additional instance specific functions at the
6333 * end of the `lView[CLEANUP]` because we know that no more `T` level cleanup functions will be
6334 * added here.
6335 */
6336 [CLEANUP]: any[] | null;
6337 /**
6338 * - For dynamic views, this is the context with which to render the template (e.g.
6339 * `NgForContext`), or `{}` if not defined explicitly.
6340 * - For root view of the root component it's a reference to the component instance itself.
6341 * - For components, the context is a reference to the component instance itself.
6342 * - For inline views, the context is null.
6343 */
6344 [CONTEXT]: T;
6345 /** An optional Module Injector to be used as fall back after Element Injectors are consulted. */
6346 readonly [INJECTOR_2]: Injector | null;
6347 /**
6348 * Contextual data that is shared across multiple instances of `LView` in the same application.
6349 */
6350 [ENVIRONMENT]: LViewEnvironment;
6351 /** Renderer to be used for this view. */
6352 [RENDERER]: Renderer;
6353 /**
6354 * Reference to the first LView or LContainer beneath this LView in
6355 * the hierarchy.
6356 *
6357 * Necessary to store this so views can traverse through their nested views
6358 * to remove listeners and call onDestroy callbacks.
6359 */
6360 [CHILD_HEAD]: LView | LContainer | null;
6361 /**
6362 * The last LView or LContainer beneath this LView in the hierarchy.
6363 *
6364 * The tail allows us to quickly add a new state to the end of the view list
6365 * without having to propagate starting from the first child.
6366 */
6367 [CHILD_TAIL]: LView | LContainer | null;
6368 /**
6369 * View where this view's template was declared.
6370 *
6371 * The template for a dynamically created view may be declared in a different view than
6372 * it is inserted. We already track the "insertion view" (view where the template was
6373 * inserted) in LView[PARENT], but we also need access to the "declaration view"
6374 * (view where the template was declared). Otherwise, we wouldn't be able to call the
6375 * view's template function with the proper contexts. Context should be inherited from
6376 * the declaration view tree, not the insertion view tree.
6377 *
6378 * Example (AppComponent template):
6379 *
6380 * <ng-template #foo></ng-template> <-- declared here -->
6381 * <some-comp [tpl]="foo"></some-comp> <-- inserted inside this component -->
6382 *
6383 * The <ng-template> above is declared in the AppComponent template, but it will be passed into
6384 * SomeComp and inserted there. In this case, the declaration view would be the AppComponent,
6385 * but the insertion view would be SomeComp. When we are removing views, we would want to
6386 * traverse through the insertion view to clean up listeners. When we are calling the
6387 * template function during change detection, we need the declaration view to get inherited
6388 * context.
6389 */
6390 [DECLARATION_VIEW]: LView | null;
6391 /**
6392 * Points to the declaration component view, used to track transplanted `LView`s.
6393 *
6394 * See: `DECLARATION_VIEW` which points to the actual `LView` where it was declared, whereas
6395 * `DECLARATION_COMPONENT_VIEW` points to the component which may not be same as
6396 * `DECLARATION_VIEW`.
6397 *
6398 * Example:
6399 * ```
6400 * <#VIEW #myComp>
6401 * <div *ngIf="true">
6402 * <ng-template #myTmpl>...</ng-template>
6403 * </div>
6404 * </#VIEW>
6405 * ```
6406 * In the above case `DECLARATION_VIEW` for `myTmpl` points to the `LView` of `ngIf` whereas
6407 * `DECLARATION_COMPONENT_VIEW` points to `LView` of the `myComp` which owns the template.
6408 *
6409 * The reason for this is that all embedded views are always check-always whereas the component
6410 * view can be check-always or on-push. When we have a transplanted view it is important to
6411 * determine if we have transplanted a view from check-always declaration to on-push insertion
6412 * point. In such a case the transplanted view needs to be added to the `LContainer` in the
6413 * declared `LView` and CD during the declared view CD (in addition to the CD at the insertion
6414 * point.) (Any transplanted views which are intra Component are of no interest because the CD
6415 * strategy of declaration and insertion will always be the same, because it is the same
6416 * component.)
6417 *
6418 * Queries already track moved views in `LView[DECLARATION_LCONTAINER]` and
6419 * `LContainer[MOVED_VIEWS]`. However the queries also track `LView`s which moved within the same
6420 * component `LView`. Transplanted views are a subset of moved views, and we use
6421 * `DECLARATION_COMPONENT_VIEW` to differentiate them. As in this example.
6422 *
6423 * Example showing intra component `LView` movement.
6424 * ```
6425 * <#VIEW #myComp>
6426 * <div *ngIf="condition; then thenBlock else elseBlock"></div>
6427 * <ng-template #thenBlock>Content to render when condition is true.</ng-template>
6428 * <ng-template #elseBlock>Content to render when condition is false.</ng-template>
6429 * </#VIEW>
6430 * ```
6431 * The `thenBlock` and `elseBlock` is moved but not transplanted.
6432 *
6433 * Example showing inter component `LView` movement (transplanted view).
6434 * ```
6435 * <#VIEW #myComp>
6436 * <ng-template #myTmpl>...</ng-template>
6437 * <insertion-component [template]="myTmpl"></insertion-component>
6438 * </#VIEW>
6439 * ```
6440 * In the above example `myTmpl` is passed into a different component. If `insertion-component`
6441 * instantiates `myTmpl` and `insertion-component` is on-push then the `LContainer` needs to be
6442 * marked as containing transplanted views and those views need to be CD as part of the
6443 * declaration CD.
6444 *
6445 *
6446 * When change detection runs, it iterates over `[MOVED_VIEWS]` and CDs any child `LView`s where
6447 * the `DECLARATION_COMPONENT_VIEW` of the current component and the child `LView` does not match
6448 * (it has been transplanted across components.)
6449 *
6450 * Note: `[DECLARATION_COMPONENT_VIEW]` points to itself if the LView is a component view (the
6451 * simplest / most common case).
6452 *
6453 * see also:
6454 * - https://hackmd.io/@mhevery/rJUJsvv9H write up of the problem
6455 * - `LContainer[HAS_TRANSPLANTED_VIEWS]` which marks which `LContainer` has transplanted views.
6456 * - `LContainer[TRANSPLANT_HEAD]` and `LContainer[TRANSPLANT_TAIL]` storage for transplanted
6457 * - `LView[DECLARATION_LCONTAINER]` similar problem for queries
6458 * - `LContainer[MOVED_VIEWS]` similar problem for queries
6459 */
6460 [DECLARATION_COMPONENT_VIEW]: LView;
6461 /**
6462 * A declaration point of embedded views (ones instantiated based on the content of a
6463 * <ng-template>), null for other types of views.
6464 *
6465 * We need to track all embedded views created from a given declaration point so we can prepare
6466 * query matches in a proper order (query matches are ordered based on their declaration point and
6467 * _not_ the insertion point).
6468 */
6469 [DECLARATION_LCONTAINER]: LContainer | null;
6470 /**
6471 * More flags for this view. See PreOrderHookFlags for more info.
6472 */
6473 [PREORDER_HOOK_FLAGS]: PreOrderHookFlags;
6474 /** Unique ID of the view. Used for `__ngContext__` lookups in the `LView` registry. */
6475 [ID]: number;
6476 /**
6477 * A container related to hydration annotation information that's associated with this LView.
6478 */
6479 [HYDRATION]: DehydratedView | null;
6480 /**
6481 * Optional injector assigned to embedded views that takes
6482 * precedence over the element and module injectors.
6483 */
6484 readonly [EMBEDDED_VIEW_INJECTOR]: Injector | null;
6485 /**
6486 * Effect scheduling operations that need to run during this views's update pass.
6487 */
6488 [EFFECTS_TO_SCHEDULE]: Array<() => void> | null;
6489 /**
6490 * A collection of callbacks functions that are executed when a given LView is destroyed. Those
6491 * are user defined, LView-specific destroy callbacks that don't have any corresponding TView
6492 * entries.
6493 */
6494 [ON_DESTROY_HOOKS]: Array<() => void> | null;
6495 /**
6496 * The `Consumer` for this `LView`'s template so that signal reads can be tracked.
6497 *
6498 * This is initially `null` and gets assigned a consumer after template execution
6499 * if any signals were read.
6500 */
6501 [REACTIVE_TEMPLATE_CONSUMER]: ReactiveLViewConsumer | null;
6502}
6503
6504/**
6505 * Contextual data that is shared across multiple instances of `LView` in the same application.
6506 */
6507declare interface LViewEnvironment {
6508 /** Factory to be used for creating Renderer. */
6509 rendererFactory: RendererFactory;
6510 /** An optional custom sanitizer. */
6511 sanitizer: Sanitizer | null;
6512 /** Container for reactivity system `effect`s. */
6513 inlineEffectRunner: ɵEffectScheduler | null;
6514 /** Container for after render hooks */
6515 afterRenderEventManager: ɵAfterRenderEventManager | null;
6516 /** Scheduler for change detection to notify when application state changes. */
6517 changeDetectionScheduler: ɵChangeDetectionScheduler | null;
6518}
6519
6520/** Flags associated with an LView (saved in LView[FLAGS]) */
6521declare const enum LViewFlags {
6522 /** The state of the init phase on the first 2 bits */
6523 InitPhaseStateIncrementer = 1,
6524 InitPhaseStateMask = 3,
6525 /**
6526 * Whether or not the view is in creationMode.
6527 *
6528 * This must be stored in the view rather than using `data` as a marker so that
6529 * we can properly support embedded views. Otherwise, when exiting a child view
6530 * back into the parent view, `data` will be defined and `creationMode` will be
6531 * improperly reported as false.
6532 */
6533 CreationMode = 4,
6534 /**
6535 * Whether or not this LView instance is on its first processing pass.
6536 *
6537 * An LView instance is considered to be on its "first pass" until it
6538 * has completed one creation mode run and one update mode run. At this
6539 * time, the flag is turned off.
6540 */
6541 FirstLViewPass = 8,
6542 /** Whether this view has default change detection strategy (checks always) or onPush */
6543 CheckAlways = 16,
6544 /** Whether there are any i18n blocks inside this LView. */
6545 HasI18n = 32,
6546 /** Whether or not this view is currently dirty (needing check) */
6547 Dirty = 64,
6548 /** Whether or not this view is currently attached to change detection tree. */
6549 Attached = 128,
6550 /** Whether or not this view is destroyed. */
6551 Destroyed = 256,
6552 /** Whether or not this view is the root view */
6553 IsRoot = 512,
6554 /**
6555 * Whether this moved LView was needs to be refreshed. Similar to the Dirty flag, but used for
6556 * transplanted and signal views where the parent/ancestor views are not marked dirty as well.
6557 * i.e. "Refresh just this view". Used in conjunction with the HAS_CHILD_VIEWS_TO_REFRESH
6558 * flag.
6559 */
6560 RefreshView = 1024,
6561 /** Indicates that the view **or any of its ancestors** have an embedded view injector. */
6562 HasEmbeddedViewInjector = 2048,
6563 /** Indicates that the view was created with `signals: true`. */
6564 SignalView = 4096,
6565 /**
6566 * Indicates that this LView has a view underneath it that needs to be refreshed during change
6567 * detection. This flag indicates that even if this view is not dirty itself, we still need to
6568 * traverse its children during change detection.
6569 */
6570 HasChildViewsToRefresh = 8192,
6571 /**
6572 * This is the count of the bits the 1 was shifted above (base 10)
6573 */
6574 IndexWithinInitPhaseShift = 14,
6575 /**
6576 * Index of the current init phase on last 21 bits
6577 */
6578 IndexWithinInitPhaseIncrementer = 16384,
6579 IndexWithinInitPhaseReset = 16383
6580}
6581
6582/**
6583 * Wrap an array of `Provider`s into `EnvironmentProviders`, preventing them from being accidentally
6584 * referenced in `@Component` in a component injector.
6585 */
6586export declare function makeEnvironmentProviders(providers: (Provider | EnvironmentProviders)[]): EnvironmentProviders;
6587
6588/**
6589 * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.
6590 *
6591 * Example:
6592 *
6593 * ```
6594 * const COUNTER_KEY = makeStateKey<number>('counter');
6595 * let value = 10;
6596 *
6597 * transferState.set(COUNTER_KEY, value);
6598 * ```
6599 *
6600 * @publicApi
6601 */
6602export declare function makeStateKey<T = void>(key: string): StateKey<T>;
6603
6604/**
6605 * Merge multiple application configurations from left to right.
6606 *
6607 * @param configs Two or more configurations to be merged.
6608 * @returns A merged [ApplicationConfig](api/core/ApplicationConfig).
6609 *
6610 * @publicApi
6611 */
6612export declare function mergeApplicationConfig(...configs: ApplicationConfig[]): ApplicationConfig;
6613
6614/**
6615 * Use this enum at bootstrap as an option of `bootstrapModule` to define the strategy
6616 * that the compiler should use in case of missing translations:
6617 * - Error: throw if you have missing translations.
6618 * - Warning (default): show a warning in the console and/or shell.
6619 * - Ignore: do nothing.
6620 *
6621 * See the [i18n guide](guide/i18n-common-merge#report-missing-translations) for more information.
6622 *
6623 * @usageNotes
6624 * ### Example
6625 * ```typescript
6626 * import { MissingTranslationStrategy } from '@angular/core';
6627 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
6628 * import { AppModule } from './app/app.module';
6629 *
6630 * platformBrowserDynamic().bootstrapModule(AppModule, {
6631 * missingTranslation: MissingTranslationStrategy.Error
6632 * });
6633 * ```
6634 *
6635 * @publicApi
6636 */
6637export declare enum MissingTranslationStrategy {
6638 Error = 0,
6639 Warning = 1,
6640 Ignore = 2
6641}
6642
6643/**
6644 * `model` declares a writeable signal that is exposed as an input/output pair on the containing
6645 * directive. The input name is taken either from the class member or from the `alias` option.
6646 * The output name is generated by taking the input name and appending `Change`.
6647 *
6648 * Initializes a model with an initial value. If no explicit value
6649 * is specified, Angular will use `undefined`.
6650 *
6651 * Consider using `model.required` for models that don't need an
6652 * initial value.
6653 *
6654 * @usageNotes
6655 * Initialize a model in your directive or component by declaring a
6656 * class field and initializing it with the `model()` or `model.required()`
6657 * function.
6658 *
6659 * ```ts
6660 * @Directive({..})
6661 * export class MyDir {
6662 * firstName = model<string>(); // string|undefined
6663 * lastName = model.required<string>(); // string
6664 * age = model(0); // number
6665 * }
6666 * ```
6667 *
6668 * @developerPreview
6669 */
6670export declare const model: ModelFunction;
6671
6672/**
6673 * `model` declares a writeable signal that is exposed as an input/output pair on the containing
6674 * directive. The input name is taken either from the class member or from the `alias` option.
6675 * The output name is generated by taking the input name and appending `Change`.
6676 *
6677 * The function exposes an API for also declaring required models via the
6678 * `model.required` function.
6679 *
6680 * @usageNotes
6681 * Initialize a model in your directive or component by declaring a
6682 * class field and initializing it with the `model()` or `model.required()`
6683 * function.
6684 *
6685 * ```ts
6686 * @Directive({..})
6687 * export class MyDir {
6688 * firstName = model<string>(); // string|undefined
6689 * lastName = model.required<string>(); // string
6690 * age = model(0); // number
6691 * }
6692 * ```
6693 *
6694 * @developerPreview
6695 */
6696export declare interface ModelFunction {
6697 /**
6698 * Initializes a model with an initial value. If no explicit value
6699 * is specified, Angular will use `undefined`.
6700 *
6701 * Consider using `model.required` for models that don't need an
6702 * initial value.
6703 *
6704 * @developerPreview
6705 */
6706 <T>(): ModelSignal<T | undefined>;
6707 <T>(initialValue: T, opts?: ModelOptions): ModelSignal<T>;
6708 /**
6709 * Initializes a required model.
6710 *
6711 * Users of your directive/component need to bind to the input side of the model.
6712 * If unset, a compile time error will be reported.
6713 *
6714 * @developerPreview
6715 */
6716 required<T>(opts?: ModelOptions): ModelSignal<T>;
6717}
6718
6719/**
6720 * @developerPreview
6721 *
6722 * Options for model signals.
6723 */
6724export declare interface ModelOptions {
6725 /**
6726 * Optional public name of the input side of the model. The output side will have the same
6727 * name as the input, but suffixed with `Change`. By default, the class field name is used.
6728 */
6729 alias?: string;
6730}
6731
6732/**
6733 * `ModelSignal` represents a special `Signal` for a directive/component model field.
6734 *
6735 * A model signal is a writeable signal that can be exposed as an output.
6736 * Whenever its value is updated, it emits to the output.
6737 *
6738 * @developerPreview
6739 */
6740export declare interface ModelSignal<T> extends WritableSignal<T> {
6741 [SIGNAL]: InputSignalNode<T, T>;
6742 [ɵINPUT_SIGNAL_BRAND_READ_TYPE]: T;
6743 [ɵINPUT_SIGNAL_BRAND_WRITE_TYPE]: T;
6744 /** @deprecated Do not use, will be removed. */
6745 subscribe(callback: (value: T) => void): () => void;
6746}
6747
6748/**
6749 * Combination of NgModuleFactory and ComponentFactories.
6750 *
6751 * @publicApi
6752 *
6753 * @deprecated
6754 * Ivy JIT mode doesn't require accessing this symbol.
6755 * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for
6756 * additional context.
6757 */
6758export declare class ModuleWithComponentFactories<T> {
6759 ngModuleFactory: NgModuleFactory<T>;
6760 componentFactories: ComponentFactory<any>[];
6761 constructor(ngModuleFactory: NgModuleFactory<T>, componentFactories: ComponentFactory<any>[]);
6762}
6763
6764/**
6765 * A wrapper around an NgModule that associates it with [providers](guide/glossary#provider
6766 * "Definition"). Usage without a generic type is deprecated.
6767 *
6768 * @see [Deprecations](guide/deprecations#modulewithproviders-type-without-a-generic)
6769 *
6770 * @publicApi
6771 */
6772export declare interface ModuleWithProviders<T> {
6773 ngModule: Type<T>;
6774 providers?: Array<Provider | EnvironmentProviders>;
6775}
6776
6777declare const MOVED_VIEWS = 9;
6778
6779declare const MULTIPLIER = "x";
6780
6781declare type Mutable<T extends {
6782 [x: string]: any;
6783}, K extends string> = {
6784 [P in K]: T[P];
6785};
6786
6787declare const NATIVE = 7;
6788
6789declare const NEXT = 4;
6790
6791/**
6792 * A type describing supported iterable types.
6793 *
6794 * @publicApi
6795 */
6796export declare type NgIterable<T> = Array<T> | Iterable<T>;
6797
6798/**
6799 * Type of the NgModule metadata.
6800 *
6801 * @publicApi
6802 */
6803export declare interface NgModule {
6804 /**
6805 * The set of injectable objects that are available in the injector
6806 * of this module.
6807 *
6808 * @see [Dependency Injection guide](guide/dependency-injection)
6809 * @see [NgModule guide](guide/providers)
6810 *
6811 * @usageNotes
6812 *
6813 * Dependencies whose providers are listed here become available for injection
6814 * into any component, directive, pipe or service that is a child of this injector.
6815 * The NgModule used for bootstrapping uses the root injector, and can provide dependencies
6816 * to any part of the app.
6817 *
6818 * A lazy-loaded module has its own injector, typically a child of the app root injector.
6819 * Lazy-loaded services are scoped to the lazy-loaded module's injector.
6820 * If a lazy-loaded module also provides the `UserService`, any component created
6821 * within that module's context (such as by router navigation) gets the local instance
6822 * of the service, not the instance in the root injector.
6823 * Components in external modules continue to receive the instance provided by their injectors.
6824 *
6825 * ### Example
6826 *
6827 * The following example defines a class that is injected in
6828 * the HelloWorld NgModule:
6829 *
6830 * ```
6831 * class Greeter {
6832 * greet(name:string) {
6833 * return 'Hello ' + name + '!';
6834 * }
6835 * }
6836 *
6837 * @NgModule({
6838 * providers: [
6839 * Greeter
6840 * ]
6841 * })
6842 * class HelloWorld {
6843 * greeter:Greeter;
6844 *
6845 * constructor(greeter:Greeter) {
6846 * this.greeter = greeter;
6847 * }
6848 * }
6849 * ```
6850 */
6851 providers?: Array<Provider | EnvironmentProviders>;
6852 /**
6853 * The set of components, directives, and pipes ([declarables](guide/glossary#declarable))
6854 * that belong to this module.
6855 *
6856 * @usageNotes
6857 *
6858 * The set of selectors that are available to a template include those declared here, and
6859 * those that are exported from imported NgModules.
6860 *
6861 * Declarables must belong to exactly one module.
6862 * The compiler emits an error if you try to declare the same class in more than one module.
6863 * Be careful not to declare a class that is imported from another module.
6864 *
6865 * ### Example
6866 *
6867 * The following example allows the CommonModule to use the `NgFor`
6868 * directive.
6869 *
6870 * ```javascript
6871 * @NgModule({
6872 * declarations: [NgFor]
6873 * })
6874 * class CommonModule {
6875 * }
6876 * ```
6877 */
6878 declarations?: Array<Type<any> | any[]>;
6879 /**
6880 * The set of NgModules whose exported [declarables](guide/glossary#declarable)
6881 * are available to templates in this module.
6882 *
6883 * @usageNotes
6884 *
6885 * A template can use exported declarables from any
6886 * imported module, including those from modules that are imported indirectly
6887 * and re-exported.
6888 * For example, `ModuleA` imports `ModuleB`, and also exports
6889 * it, which makes the declarables from `ModuleB` available
6890 * wherever `ModuleA` is imported.
6891 *
6892 * ### Example
6893 *
6894 * The following example allows MainModule to use anything exported by
6895 * `CommonModule`:
6896 *
6897 * ```javascript
6898 * @NgModule({
6899 * imports: [CommonModule]
6900 * })
6901 * class MainModule {
6902 * }
6903 * ```
6904 *
6905 */
6906 imports?: Array<Type<any> | ModuleWithProviders<{}> | any[]>;
6907 /**
6908 * The set of components, directives, and pipes declared in this
6909 * NgModule that can be used in the template of any component that is part of an
6910 * NgModule that imports this NgModule. Exported declarations are the module's public API.
6911 *
6912 * A declarable belongs to one and only one NgModule.
6913 * A module can list another module among its exports, in which case all of that module's
6914 * public declaration are exported.
6915 *
6916 * @usageNotes
6917 *
6918 * Declarations are private by default.
6919 * If this ModuleA does not export UserComponent, then only the components within this
6920 * ModuleA can use UserComponent.
6921 *
6922 * ModuleA can import ModuleB and also export it, making exports from ModuleB
6923 * available to an NgModule that imports ModuleA.
6924 *
6925 * ### Example
6926 *
6927 * The following example exports the `NgFor` directive from CommonModule.
6928 *
6929 * ```javascript
6930 * @NgModule({
6931 * exports: [NgFor]
6932 * })
6933 * class CommonModule {
6934 * }
6935 * ```
6936 */
6937 exports?: Array<Type<any> | any[]>;
6938 /**
6939 * The set of components that are bootstrapped when this module is bootstrapped.
6940 */
6941 bootstrap?: Array<Type<any> | any[]>;
6942 /**
6943 * The set of schemas that declare elements to be allowed in the NgModule.
6944 * Elements and properties that are neither Angular components nor directives
6945 * must be declared in a schema.
6946 *
6947 * Allowed value are `NO_ERRORS_SCHEMA` and `CUSTOM_ELEMENTS_SCHEMA`.
6948 *
6949 * @security When using one of `NO_ERRORS_SCHEMA` or `CUSTOM_ELEMENTS_SCHEMA`
6950 * you must ensure that allowed elements and properties securely escape inputs.
6951 */
6952 schemas?: Array<SchemaMetadata | any[]>;
6953 /**
6954 * A name or path that uniquely identifies this NgModule in `getNgModuleById`.
6955 * If left `undefined`, the NgModule is not registered with `getNgModuleById`.
6956 */
6957 id?: string;
6958 /**
6959 * When present, this module is ignored by the AOT compiler.
6960 * It remains in distributed code, and the JIT compiler attempts to compile it
6961 * at run time, in the browser.
6962 * To ensure the correct behavior, the app must import `@angular/compiler`.
6963 */
6964 jit?: true;
6965}
6966
6967/**
6968 * @Annotation
6969 */
6970export declare const NgModule: NgModuleDecorator;
6971
6972/**
6973 * Type of the NgModule decorator / constructor function.
6974 *
6975 * @publicApi
6976 */
6977export declare interface NgModuleDecorator {
6978 /**
6979 * Decorator that marks a class as an NgModule and supplies configuration metadata.
6980 */
6981 (obj?: NgModule): TypeDecorator;
6982 new (obj?: NgModule): NgModule;
6983}
6984
6985/**
6986 * @publicApi
6987 *
6988 * @deprecated
6989 * This class was mostly used as a part of ViewEngine-based JIT API and is no longer needed in Ivy
6990 * JIT mode. See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes)
6991 * for additional context. Angular provides APIs that accept NgModule classes directly (such as
6992 * [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and
6993 * [createNgModule](api/core/createNgModule)), consider switching to those APIs instead of
6994 * using factory-based ones.
6995 */
6996export declare abstract class NgModuleFactory<T> {
6997 abstract get moduleType(): Type<T>;
6998 abstract create(parentInjector: Injector | null): NgModuleRef<T>;
6999}
7000
7001/**
7002 * Represents an instance of an `NgModule` created by an `NgModuleFactory`.
7003 * Provides access to the `NgModule` instance and related objects.
7004 *
7005 * @publicApi
7006 */
7007export declare abstract class NgModuleRef<T> {
7008 /**
7009 * The injector that contains all of the providers of the `NgModule`.
7010 */
7011 abstract get injector(): EnvironmentInjector;
7012 /**
7013 * The resolver that can retrieve component factories in a context of this module.
7014 *
7015 * Note: since v13, dynamic component creation via
7016 * [`ViewContainerRef.createComponent`](api/core/ViewContainerRef#createComponent)
7017 * does **not** require resolving component factory: component class can be used directly.
7018 *
7019 * @deprecated Angular no longer requires Component factories. Please use other APIs where
7020 * Component class can be used directly.
7021 */
7022 abstract get componentFactoryResolver(): ComponentFactoryResolver;
7023 /**
7024 * The `NgModule` instance.
7025 */
7026 abstract get instance(): T;
7027 /**
7028 * Destroys the module instance and all of the data structures associated with it.
7029 */
7030 abstract destroy(): void;
7031 /**
7032 * Registers a callback to be executed when the module is destroyed.
7033 */
7034 abstract onDestroy(callback: () => void): void;
7035}
7036
7037/** Represents scope data for NgModule as calculated during runtime by the deps tracker. */
7038declare interface NgModuleScope {
7039 compilation: ScopeData;
7040 exported: ScopeData;
7041}
7042
7043/**
7044 * NgModule scope info as provided by AoT compiler
7045 *
7046 * In full compilation Ivy resolved all the "module with providers" and forward refs the whole array
7047 * if at least one element is forward refed. So we end up with type `Type<any>[]|(() =>
7048 * Type<any>[])`.
7049 *
7050 * In local mode the compiler passes the raw info as they are to the runtime functions as it is not
7051 * possible to resolve them any further due to limited info at compile time. So we end up with type
7052 * `RawScopeInfoFromDecorator[]`.
7053 */
7054declare interface NgModuleScopeInfoFromDecorator {
7055 /** List of components, directives, and pipes declared by this module. */
7056 declarations?: Type<any>[] | (() => Type<any>[]) | RawScopeInfoFromDecorator[];
7057 /** List of modules or `ModuleWithProviders` or standalone components imported by this module. */
7058 imports?: Type<any>[] | (() => Type<any>[]) | RawScopeInfoFromDecorator[];
7059 /**
7060 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
7061 * module.
7062 */
7063 exports?: Type<any>[] | (() => Type<any>[]) | RawScopeInfoFromDecorator[];
7064 /**
7065 * The set of components that are bootstrapped when this module is bootstrapped. This field is
7066 * only available in local compilation mode. In full compilation mode bootstrap info is passed
7067 * directly to the module def runtime after statically analyzed and resolved.
7068 */
7069 bootstrap?: Type<any>[] | (() => Type<any>[]) | RawScopeInfoFromDecorator[];
7070}
7071
7072/**
7073 * A token for third-party components that can register themselves with NgProbe.
7074 *
7075 * @deprecated
7076 * @publicApi
7077 */
7078export declare class NgProbeToken {
7079 name: string;
7080 token: any;
7081 constructor(name: string, token: any);
7082}
7083
7084/**
7085 * An injectable service for executing work inside or outside of the Angular zone.
7086 *
7087 * The most common use of this service is to optimize performance when starting a work consisting of
7088 * one or more asynchronous tasks that don't require UI updates or error handling to be handled by
7089 * Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks
7090 * can reenter the Angular zone via {@link #run}.
7091 *
7092 * <!-- TODO: add/fix links to:
7093 * - docs explaining zones and the use of zones in Angular and change-detection
7094 * - link to runOutsideAngular/run (throughout this file!)
7095 * -->
7096 *
7097 * @usageNotes
7098 * ### Example
7099 *
7100 * ```
7101 * import {Component, NgZone} from '@angular/core';
7102 * import {NgIf} from '@angular/common';
7103 *
7104 * @Component({
7105 * selector: 'ng-zone-demo',
7106 * template: `
7107 * <h2>Demo: NgZone</h2>
7108 *
7109 * <p>Progress: {{progress}}%</p>
7110 * <p *ngIf="progress >= 100">Done processing {{label}} of Angular zone!</p>
7111 *
7112 * <button (click)="processWithinAngularZone()">Process within Angular zone</button>
7113 * <button (click)="processOutsideOfAngularZone()">Process outside of Angular zone</button>
7114 * `,
7115 * })
7116 * export class NgZoneDemo {
7117 * progress: number = 0;
7118 * label: string;
7119 *
7120 * constructor(private _ngZone: NgZone) {}
7121 *
7122 * // Loop inside the Angular zone
7123 * // so the UI DOES refresh after each setTimeout cycle
7124 * processWithinAngularZone() {
7125 * this.label = 'inside';
7126 * this.progress = 0;
7127 * this._increaseProgress(() => console.log('Inside Done!'));
7128 * }
7129 *
7130 * // Loop outside of the Angular zone
7131 * // so the UI DOES NOT refresh after each setTimeout cycle
7132 * processOutsideOfAngularZone() {
7133 * this.label = 'outside';
7134 * this.progress = 0;
7135 * this._ngZone.runOutsideAngular(() => {
7136 * this._increaseProgress(() => {
7137 * // reenter the Angular zone and display done
7138 * this._ngZone.run(() => { console.log('Outside Done!'); });
7139 * });
7140 * });
7141 * }
7142 *
7143 * _increaseProgress(doneCallback: () => void) {
7144 * this.progress += 1;
7145 * console.log(`Current progress: ${this.progress}%`);
7146 *
7147 * if (this.progress < 100) {
7148 * window.setTimeout(() => this._increaseProgress(doneCallback), 10);
7149 * } else {
7150 * doneCallback();
7151 * }
7152 * }
7153 * }
7154 * ```
7155 *
7156 * @publicApi
7157 */
7158export declare class NgZone {
7159 readonly hasPendingMacrotasks: boolean;
7160 readonly hasPendingMicrotasks: boolean;
7161 /**
7162 * Whether there are no outstanding microtasks or macrotasks.
7163 */
7164 readonly isStable: boolean;
7165 /**
7166 * Notifies when code enters Angular Zone. This gets fired first on VM Turn.
7167 */
7168 readonly onUnstable: EventEmitter<any>;
7169 /**
7170 * Notifies when there is no more microtasks enqueued in the current VM Turn.
7171 * This is a hint for Angular to do change detection, which may enqueue more microtasks.
7172 * For this reason this event can fire multiple times per VM Turn.
7173 */
7174 readonly onMicrotaskEmpty: EventEmitter<any>;
7175 /**
7176 * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which
7177 * implies we are about to relinquish VM turn.
7178 * This event gets called just once.
7179 */
7180 readonly onStable: EventEmitter<any>;
7181 /**
7182 * Notifies that an error has been delivered.
7183 */
7184 readonly onError: EventEmitter<any>;
7185 constructor({ enableLongStackTrace, shouldCoalesceEventChangeDetection, shouldCoalesceRunChangeDetection }: {
7186 enableLongStackTrace?: boolean | undefined;
7187 shouldCoalesceEventChangeDetection?: boolean | undefined;
7188 shouldCoalesceRunChangeDetection?: boolean | undefined;
7189 });
7190 /**
7191 This method checks whether the method call happens within an Angular Zone instance.
7192 */
7193 static isInAngularZone(): boolean;
7194 /**
7195 Assures that the method is called within the Angular Zone, otherwise throws an error.
7196 */
7197 static assertInAngularZone(): void;
7198 /**
7199 Assures that the method is called outside of the Angular Zone, otherwise throws an error.
7200 */
7201 static assertNotInAngularZone(): void;
7202 /**
7203 * Executes the `fn` function synchronously within the Angular zone and returns value returned by
7204 * the function.
7205 *
7206 * Running functions via `run` allows you to reenter Angular zone from a task that was executed
7207 * outside of the Angular zone (typically started via {@link #runOutsideAngular}).
7208 *
7209 * Any future tasks or microtasks scheduled from within this function will continue executing from
7210 * within the Angular zone.
7211 *
7212 * If a synchronous error happens it will be rethrown and not reported via `onError`.
7213 */
7214 run<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T;
7215 /**
7216 * Executes the `fn` function synchronously within the Angular zone as a task and returns value
7217 * returned by the function.
7218 *
7219 * Running functions via `run` allows you to reenter Angular zone from a task that was executed
7220 * outside of the Angular zone (typically started via {@link #runOutsideAngular}).
7221 *
7222 * Any future tasks or microtasks scheduled from within this function will continue executing from
7223 * within the Angular zone.
7224 *
7225 * If a synchronous error happens it will be rethrown and not reported via `onError`.
7226 */
7227 runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[], name?: string): T;
7228 /**
7229 * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not
7230 * rethrown.
7231 */
7232 runGuarded<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T;
7233 /**
7234 * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by
7235 * the function.
7236 *
7237 * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do
7238 * work that
7239 * doesn't trigger Angular change-detection or is subject to Angular's error handling.
7240 *
7241 * Any future tasks or microtasks scheduled from within this function will continue executing from
7242 * outside of the Angular zone.
7243 *
7244 * Use {@link #run} to reenter the Angular zone and do work that updates the application model.
7245 */
7246 runOutsideAngular<T>(fn: (...args: any[]) => T): T;
7247}
7248
7249/**
7250 * Used to configure event and run coalescing with `provideZoneChangeDetection`.
7251 *
7252 * @publicApi
7253 *
7254 * @see {@link provideZoneChangeDetection}
7255 */
7256export declare interface NgZoneOptions {
7257 /**
7258 * Optionally specify coalescing event change detections or not.
7259 * Consider the following case.
7260 *
7261 * ```
7262 * <div (click)="doSomething()">
7263 * <button (click)="doSomethingElse()"></button>
7264 * </div>
7265 * ```
7266 *
7267 * When button is clicked, because of the event bubbling, both
7268 * event handlers will be called and 2 change detections will be
7269 * triggered. We can coalesce such kind of events to only trigger
7270 * change detection only once.
7271 *
7272 * By default, this option will be false. So the events will not be
7273 * coalesced and the change detection will be triggered multiple times.
7274 * And if this option be set to true, the change detection will be
7275 * triggered async by scheduling a animation frame. So in the case above,
7276 * the change detection will only be triggered once.
7277 */
7278 eventCoalescing?: boolean;
7279 /**
7280 * Optionally specify if `NgZone#run()` method invocations should be coalesced
7281 * into a single change detection.
7282 *
7283 * Consider the following case.
7284 * ```
7285 * for (let i = 0; i < 10; i ++) {
7286 * ngZone.run(() => {
7287 * // do something
7288 * });
7289 * }
7290 * ```
7291 *
7292 * This case triggers the change detection multiple times.
7293 * With ngZoneRunCoalescing options, all change detections in an event loop trigger only once.
7294 * In addition, the change detection executes in requestAnimation.
7295 *
7296 */
7297 runCoalescing?: boolean;
7298}
7299
7300/**
7301 * Defines a schema that allows any property on any element.
7302 *
7303 * This schema allows you to ignore the errors related to any unknown elements or properties in a
7304 * template. The usage of this schema is generally discouraged because it prevents useful validation
7305 * and may hide real errors in your template. Consider using the `CUSTOM_ELEMENTS_SCHEMA` instead.
7306 *
7307 * @publicApi
7308 */
7309export declare const NO_ERRORS_SCHEMA: SchemaMetadata;
7310
7311/**
7312 * Store the runtime input for all directives applied to a node.
7313 *
7314 * This allows efficiently setting the same input on a directive that
7315 * might apply to multiple directives.
7316 *
7317 * i+0: directive instance index
7318 * i+1: privateName
7319 * i+2: input flags
7320 *
7321 * e.g.
7322 * ```
7323 * {
7324 * "publicName": [0, 'change-minified', <bit-input-flags>]
7325 * }
7326 * ```
7327 */
7328declare type NodeInputBindings = Record<string, (number | string | ɵɵInputFlags)[]>;
7329
7330/**
7331 * Store the runtime output names for all the directives.
7332 *
7333 * i+0: directive instance index
7334 * i+1: privateName
7335 *
7336 * e.g.
7337 * ```
7338 * {
7339 * "publicName": [0, 'change-minified']
7340 * }
7341 */
7342declare type NodeOutputBindings = Record<string, (number | string)[]>;
7343
7344declare const NODES = "n";
7345
7346declare const NUM_ROOT_NODES = "r";
7347
7348/**
7349 * Transforms a value (typically a string) to a number.
7350 * Intended to be used as a transform function of an input.
7351 * @param value Value to be transformed.
7352 * @param fallbackValue Value to use if the provided value can't be parsed as a number.
7353 *
7354 * @usageNotes
7355 * ```typescript
7356 * @Input({ transform: numberAttribute }) id!: number;
7357 * ```
7358 *
7359 * @publicApi
7360 */
7361export declare function numberAttribute(value: unknown, fallbackValue?: number): number;
7362
7363declare const ON_DESTROY_HOOKS = 21;
7364
7365/**
7366 * @description
7367 * A lifecycle hook that is called when any data-bound property of a directive changes.
7368 * Define an `ngOnChanges()` method to handle the changes.
7369 *
7370 * @see {@link DoCheck}
7371 * @see {@link OnInit}
7372 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
7373 *
7374 * @usageNotes
7375 * The following snippet shows how a component can implement this interface to
7376 * define an on-changes handler for an input property.
7377 *
7378 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnChanges'}
7379 *
7380 * @publicApi
7381 */
7382export declare interface OnChanges {
7383 /**
7384 * A callback method that is invoked immediately after the
7385 * default change detector has checked data-bound properties
7386 * if at least one has changed, and before the view and content
7387 * children are checked.
7388 * @param changes The changed properties.
7389 */
7390 ngOnChanges(changes: SimpleChanges): void;
7391}
7392
7393/**
7394 * A lifecycle hook that is called when a directive, pipe, or service is destroyed.
7395 * Use for any custom cleanup that needs to occur when the
7396 * instance is destroyed.
7397 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
7398 *
7399 * @usageNotes
7400 * The following snippet shows how a component can implement this interface
7401 * to define its own custom clean-up method.
7402 *
7403 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnDestroy'}
7404 *
7405 * @publicApi
7406 */
7407export declare interface OnDestroy {
7408 /**
7409 * A callback method that performs custom clean-up, invoked immediately
7410 * before a directive, pipe, or service instance is destroyed.
7411 */
7412 ngOnDestroy(): void;
7413}
7414
7415/**
7416 * @description
7417 * A lifecycle hook that is called after Angular has initialized
7418 * all data-bound properties of a directive.
7419 * Define an `ngOnInit()` method to handle any additional initialization tasks.
7420 *
7421 * @see {@link AfterContentInit}
7422 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
7423 *
7424 * @usageNotes
7425 * The following snippet shows how a component can implement this interface to
7426 * define its own initialization method.
7427 *
7428 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnInit'}
7429 *
7430 * @publicApi
7431 */
7432export declare interface OnInit {
7433 /**
7434 * A callback method that is invoked immediately after the
7435 * default change detector has checked the directive's
7436 * data-bound properties for the first time,
7437 * and before any of the view or content children have been checked.
7438 * It is invoked only once when the directive is instantiated.
7439 */
7440 ngOnInit(): void;
7441}
7442
7443declare type OpaqueValue = unknown;
7444
7445declare interface OpaqueViewState {
7446 '__brand__': 'Brand for OpaqueViewState that nothing will match';
7447}
7448
7449/**
7450 * Type of the Optional metadata.
7451 *
7452 * @publicApi
7453 */
7454export declare interface Optional {
7455}
7456
7457/**
7458 * Optional decorator and metadata.
7459 *
7460 * @Annotation
7461 * @publicApi
7462 */
7463export declare const Optional: OptionalDecorator;
7464
7465/**
7466 * Type of the Optional decorator / constructor function.
7467 *
7468 * @publicApi
7469 */
7470export declare interface OptionalDecorator {
7471 /**
7472 * Parameter decorator to be used on constructor parameters,
7473 * which marks the parameter as being an optional dependency.
7474 * The DI framework provides `null` if the dependency is not found.
7475 *
7476 * Can be used together with other parameter decorators
7477 * that modify how dependency injection operates.
7478 *
7479 * @usageNotes
7480 *
7481 * The following code allows the possibility of a `null` result:
7482 *
7483 * <code-example path="core/di/ts/metadata_spec.ts" region="Optional">
7484 * </code-example>
7485 *
7486 * @see ["Dependency Injection Guide"](guide/dependency-injection).
7487 */
7488 (): any;
7489 new (): Optional;
7490}
7491
7492/**
7493 * Type of the Output metadata.
7494 *
7495 * @publicApi
7496 */
7497export declare interface Output {
7498 /**
7499 * The name of the DOM property to which the output property is bound.
7500 */
7501 alias?: string;
7502}
7503
7504/**
7505 * @Annotation
7506 * @publicApi
7507 */
7508export declare const Output: OutputDecorator;
7509
7510/**
7511 * Type of the Output decorator / constructor function.
7512 *
7513 * @publicApi
7514 */
7515export declare interface OutputDecorator {
7516 /**
7517 * Decorator that marks a class field as an output property and supplies configuration metadata.
7518 * The DOM property bound to the output property is automatically updated during change detection.
7519 *
7520 * @usageNotes
7521 *
7522 * You can supply an optional name to use in templates when the
7523 * component is instantiated, that maps to the
7524 * name of the bound property. By default, the original
7525 * name of the bound property is used for output binding.
7526 *
7527 * See `Input` decorator for an example of providing a binding name.
7528 *
7529 * @see [Input and Output properties](guide/inputs-outputs)
7530 *
7531 */
7532 (alias?: string): any;
7533 new (alias?: string): any;
7534}
7535
7536/**
7537 * A [DI token](guide/glossary#di-token "DI token definition") that indicates the root directory of
7538 * the application
7539 * @publicApi
7540 * @deprecated
7541 */
7542export declare const PACKAGE_ROOT_URL: InjectionToken<string>;
7543
7544declare const PARENT = 3;
7545
7546/**
7547 * Type of the Pipe metadata.
7548 *
7549 * @publicApi
7550 */
7551export declare interface Pipe {
7552 /**
7553 * The pipe name to use in template bindings.
7554 * Typically uses [lowerCamelCase](guide/glossary#case-types)
7555 * because the name cannot contain hyphens.
7556 */
7557 name: string;
7558 /**
7559 * When true, the pipe is pure, meaning that the
7560 * `transform()` method is invoked only when its input arguments
7561 * change. Pipes are pure by default.
7562 *
7563 * If the pipe has internal state (that is, the result
7564 * depends on state other than its arguments), set `pure` to false.
7565 * In this case, the pipe is invoked on each change-detection cycle,
7566 * even if the arguments have not changed.
7567 */
7568 pure?: boolean;
7569 /**
7570 * Angular pipes marked as `standalone` do not need to be declared in an NgModule. Such
7571 * pipes don't depend on any "intermediate context" of an NgModule (ex. configured providers).
7572 *
7573 * More information about standalone components, directives, and pipes can be found in [this
7574 * guide](guide/standalone-components).
7575 */
7576 standalone?: boolean;
7577}
7578
7579/**
7580 * @Annotation
7581 * @publicApi
7582 */
7583export declare const Pipe: PipeDecorator;
7584
7585/**
7586 * Type of the Pipe decorator / constructor function.
7587 *
7588 * @publicApi
7589 */
7590export declare interface PipeDecorator {
7591 /**
7592 *
7593 * Decorator that marks a class as pipe and supplies configuration metadata.
7594 *
7595 * A pipe class must implement the `PipeTransform` interface.
7596 * For example, if the name is "myPipe", use a template binding expression
7597 * such as the following:
7598 *
7599 * ```
7600 * {{ exp | myPipe }}
7601 * ```
7602 *
7603 * The result of the expression is passed to the pipe's `transform()` method.
7604 *
7605 * A pipe must belong to an NgModule in order for it to be available
7606 * to a template. To make it a member of an NgModule,
7607 * list it in the `declarations` field of the `NgModule` metadata.
7608 *
7609 * @see [Style Guide: Pipe Names](guide/styleguide#02-09)
7610 *
7611 */
7612 (obj: Pipe): TypeDecorator;
7613 /**
7614 * See the `Pipe` decorator.
7615 */
7616 new (obj: Pipe): Pipe;
7617}
7618
7619declare type PipeDefList = ɵPipeDef<any>[];
7620
7621/**
7622 * Type used for PipeDefs on component definition.
7623 *
7624 * The function is necessary to be able to support forward declarations.
7625 */
7626declare type PipeDefListOrFactory = (() => PipeDefList) | PipeDefList;
7627
7628
7629/**
7630 * An interface that is implemented by pipes in order to perform a transformation.
7631 * Angular invokes the `transform` method with the value of a binding
7632 * as the first argument, and any parameters as the second argument in list form.
7633 *
7634 * @usageNotes
7635 *
7636 * In the following example, `TruncatePipe` returns the shortened value with an added ellipses.
7637 *
7638 * <code-example path="core/ts/pipes/simple_truncate.ts" header="simple_truncate.ts"></code-example>
7639 *
7640 * Invoking `{{ 'It was the best of times' | truncate }}` in a template will produce `It was...`.
7641 *
7642 * In the following example, `TruncatePipe` takes parameters that sets the truncated length and the
7643 * string to append with.
7644 *
7645 * <code-example path="core/ts/pipes/truncate.ts" header="truncate.ts"></code-example>
7646 *
7647 * Invoking `{{ 'It was the best of times' | truncate:4:'....' }}` in a template will produce `It
7648 * was the best....`.
7649 *
7650 * @publicApi
7651 */
7652export declare interface PipeTransform {
7653 transform(value: any, ...args: any[]): any;
7654}
7655
7656/**
7657 * A subclass of `Type` which has a staticpipe`:`PipeDef` field making it
7658 * consumable for rendering.
7659 */
7660declare interface PipeType<T> extends Type<T> {
7661 ɵpipe: unknown;
7662}
7663
7664/**
7665 * A token that indicates an opaque platform ID.
7666 * @publicApi
7667 */
7668export declare const PLATFORM_ID: InjectionToken<Object>;
7669
7670/**
7671 * A function that is executed when a platform is initialized.
7672 * @publicApi
7673 */
7674export declare const PLATFORM_INITIALIZER: InjectionToken<readonly (() => void)[]>;
7675
7676/**
7677 * This platform has to be included in any other platform
7678 *
7679 * @publicApi
7680 */
7681export declare const platformCore: (extraProviders?: StaticProvider[] | undefined) => PlatformRef;
7682
7683/**
7684 * The Angular platform is the entry point for Angular on a web page.
7685 * Each page has exactly one platform. Services (such as reflection) which are common
7686 * to every Angular application running on the page are bound in its scope.
7687 * A page's platform is initialized implicitly when a platform is created using a platform
7688 * factory such as `PlatformBrowser`, or explicitly by calling the `createPlatform()` function.
7689 *
7690 * @publicApi
7691 */
7692export declare class PlatformRef {
7693 private _injector;
7694 private _modules;
7695 private _destroyListeners;
7696 private _destroyed;
7697 /**
7698 * Creates an instance of an `@NgModule` for the given platform.
7699 *
7700 * @deprecated Passing NgModule factories as the `PlatformRef.bootstrapModuleFactory` function
7701 * argument is deprecated. Use the `PlatformRef.bootstrapModule` API instead.
7702 */
7703 bootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>, options?: BootstrapOptions): Promise<NgModuleRef<M>>;
7704 /**
7705 * Creates an instance of an `@NgModule` for a given platform.
7706 *
7707 * @usageNotes
7708 * ### Simple Example
7709 *
7710 * ```typescript
7711 * @NgModule({
7712 * imports: [BrowserModule]
7713 * })
7714 * class MyModule {}
7715 *
7716 * let moduleRef = platformBrowser().bootstrapModule(MyModule);
7717 * ```
7718 *
7719 */
7720 bootstrapModule<M>(moduleType: Type<M>, compilerOptions?: (CompilerOptions & BootstrapOptions) | Array<CompilerOptions & BootstrapOptions>): Promise<NgModuleRef<M>>;
7721 private _moduleDoBootstrap;
7722 /**
7723 * Registers a listener to be called when the platform is destroyed.
7724 */
7725 onDestroy(callback: () => void): void;
7726 /**
7727 * Retrieves the platform {@link Injector}, which is the parent injector for
7728 * every Angular application on the page and provides singleton providers.
7729 */
7730 get injector(): Injector;
7731 /**
7732 * Destroys the current Angular platform and all Angular applications on the page.
7733 * Destroys all modules and listeners registered with the platform.
7734 */
7735 destroy(): void;
7736 /**
7737 * Indicates whether this instance was destroyed.
7738 */
7739 get destroyed(): boolean;
7740 static ɵfac: i0.ɵɵFactoryDeclaration<PlatformRef, never>;
7741 static ɵprov: i0.ɵɵInjectableDeclaration<PlatformRef>;
7742}
7743
7744declare interface PlatformReflectionCapabilities {
7745 factory(type: Type<any>): Function;
7746 hasLifecycleHook(type: any, lcProperty: string): boolean;
7747 /**
7748 * Return a list of annotations/types for constructor parameters
7749 */
7750 parameters(type: Type<any>): any[][];
7751 /**
7752 * Return a list of annotations declared on the class
7753 */
7754 annotations(type: Type<any>): any[];
7755 /**
7756 * Return a object literal which describes the annotations on Class fields/properties.
7757 */
7758 propMetadata(typeOrFunc: Type<any>): {
7759 [key: string]: any[];
7760 };
7761}
7762
7763/**
7764 * A boolean-valued function over a value, possibly including context information
7765 * regarding that value's position in an array.
7766 *
7767 * @publicApi
7768 */
7769export declare interface Predicate<T> {
7770 (value: T): boolean;
7771}
7772
7773declare const PREORDER_HOOK_FLAGS = 17;
7774
7775/** More flags associated with an LView (saved in LView[PREORDER_HOOK_FLAGS]) */
7776declare const enum PreOrderHookFlags {
7777 /**
7778 The index of the next pre-order hook to be called in the hooks array, on the first 16
7779 bits
7780 */
7781 IndexOfTheNextPreOrderHookMaskMask = 65535,
7782 /**
7783 * The number of init hooks that have already been called, on the last 16 bits
7784 */
7785 NumberOfInitHooksCalledIncrementer = 65536,
7786 NumberOfInitHooksCalledShift = 16,
7787 NumberOfInitHooksCalledMask = 4294901760
7788}
7789
7790/**
7791 * Describes a function that is used to process provider lists (such as provider
7792 * overrides).
7793 */
7794declare type ProcessProvidersFunction = (providers: Provider[]) => Provider[];
7795
7796/**
7797 * List of slots for a projection. A slot can be either based on a parsed CSS selector
7798 * which will be used to determine nodes which are projected into that slot.
7799 *
7800 * When set to "*", the slot is reserved and can be used for multi-slot projection
7801 * using {@link ViewContainerRef#createComponent}. The last slot that specifies the
7802 * wildcard selector will retrieve all projectable nodes which do not match any selector.
7803 */
7804declare type ProjectionSlots = (ɵCssSelectorList | '*')[];
7805
7806/**
7807 * Describes how the `Injector` should be configured.
7808 * @see ["Dependency Injection Guide"](guide/dependency-injection).
7809 *
7810 * @see {@link StaticProvider}
7811 *
7812 * @publicApi
7813 */
7814export declare type Provider = TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | any[];
7815
7816/**
7817 * @description
7818 *
7819 * Token that can be used to retrieve an instance from an injector or through a query.
7820 *
7821 * @publicApi
7822 */
7823export declare type ProviderToken<T> = Type<T> | AbstractType<T> | InjectionToken<T>;
7824
7825/**
7826 * Provides `NgZone`-based change detection for the application bootstrapped using
7827 * `bootstrapApplication`.
7828 *
7829 * `NgZone` is already provided in applications by default. This provider allows you to configure
7830 * options like `eventCoalescing` in the `NgZone`.
7831 * This provider is not available for `platformBrowser().bootstrapModule`, which uses
7832 * `BootstrapOptions` instead.
7833 *
7834 * @usageNotes
7835 * ```typescript
7836 * bootstrapApplication(MyApp, {providers: [
7837 * provideZoneChangeDetection({eventCoalescing: true}),
7838 * ]});
7839 * ```
7840 *
7841 * @publicApi
7842 * @see {@link bootstrapApplication}
7843 * @see {@link NgZoneOptions}
7844 */
7845export declare function provideZoneChangeDetection(options?: NgZoneOptions): EnvironmentProviders;
7846
7847/**
7848 * Testability API.
7849 * `declare` keyword causes tsickle to generate externs, so these methods are
7850 * not renamed by Closure Compiler.
7851 * @publicApi
7852 */
7853declare interface PublicTestability {
7854 isStable(): boolean;
7855 whenStable(callback: Function, timeout?: number, updateCallback?: Function): void;
7856 findProviders(using: any, provider: string, exactMatch: boolean): any[];
7857}
7858
7859declare const QUERIES = 18;
7860
7861/**
7862 * Type of the Query metadata.
7863 *
7864 * @publicApi
7865 */
7866export declare interface Query {
7867 descendants: boolean;
7868 emitDistinctChangesOnly: boolean;
7869 first: boolean;
7870 read: any;
7871 isViewQuery: boolean;
7872 selector: any;
7873 static?: boolean;
7874}
7875
7876/**
7877 * Base class for query metadata.
7878 *
7879 * @see {@link ContentChildren}
7880 * @see {@link ContentChild}
7881 * @see {@link ViewChildren}
7882 * @see {@link ViewChild}
7883 *
7884 * @publicApi
7885 */
7886export declare abstract class Query {
7887}
7888
7889/**
7890 * A set of flags to be used with Queries.
7891 *
7892 * NOTE: Ensure changes here are reflected in `packages/compiler/src/render3/view/compiler.ts`
7893 */
7894declare const enum QueryFlags {
7895 /**
7896 * No flags
7897 */
7898 none = 0,
7899 /**
7900 * Whether or not the query should descend into children.
7901 */
7902 descendants = 1,
7903 /**
7904 * The query can be computed statically and hence can be assigned eagerly.
7905 *
7906 * NOTE: Backwards compatibility with ViewEngine.
7907 */
7908 isStatic = 2,
7909 /**
7910 * If the `QueryList` should fire change event only if actual change to query was computed (vs old
7911 * behavior where the change was fired whenever the query was recomputed, even if the recomputed
7912 * query resulted in the same list.)
7913 */
7914 emitDistinctChangesOnly = 4
7915}
7916
7917/**
7918 * An unmodifiable list of items that Angular keeps up to date when the state
7919 * of the application changes.
7920 *
7921 * The type of object that {@link ViewChildren}, {@link ContentChildren}, and {@link QueryList}
7922 * provide.
7923 *
7924 * Implements an iterable interface, therefore it can be used in both ES6
7925 * javascript `for (var i of items)` loops as well as in Angular templates with
7926 * `*ngFor="let i of myList"`.
7927 *
7928 * Changes can be observed by subscribing to the changes `Observable`.
7929 *
7930 * NOTE: In the future this class will implement an `Observable` interface.
7931 *
7932 * @usageNotes
7933 * ### Example
7934 * ```typescript
7935 * @Component({...})
7936 * class Container {
7937 * @ViewChildren(Item) items:QueryList<Item>;
7938 * }
7939 * ```
7940 *
7941 * @publicApi
7942 */
7943export declare class QueryList<T> implements Iterable<T> {
7944 private _emitDistinctChangesOnly;
7945 readonly dirty = true;
7946 private _onDirty?;
7947 private _results;
7948 private _changesDetected;
7949 private _changes;
7950 readonly length: number;
7951 readonly first: T;
7952 readonly last: T;
7953 /**
7954 * Returns `Observable` of `QueryList` notifying the subscriber of changes.
7955 */
7956 get changes(): Observable<any>;
7957 /**
7958 * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
7959 * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
7960 * the same result)
7961 */
7962 constructor(_emitDistinctChangesOnly?: boolean);
7963 /**
7964 * Returns the QueryList entry at `index`.
7965 */
7966 get(index: number): T | undefined;
7967 /**
7968 * See
7969 * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
7970 */
7971 map<U>(fn: (item: T, index: number, array: T[]) => U): U[];
7972 /**
7973 * See
7974 * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
7975 */
7976 filter<S extends T>(predicate: (value: T, index: number, array: readonly T[]) => value is S): S[];
7977 filter(predicate: (value: T, index: number, array: readonly T[]) => unknown): T[];
7978 /**
7979 * See
7980 * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)
7981 */
7982 find(fn: (item: T, index: number, array: T[]) => boolean): T | undefined;
7983 /**
7984 * See
7985 * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
7986 */
7987 reduce<U>(fn: (prevValue: U, curValue: T, curIndex: number, array: T[]) => U, init: U): U;
7988 /**
7989 * See
7990 * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)
7991 */
7992 forEach(fn: (item: T, index: number, array: T[]) => void): void;
7993 /**
7994 * See
7995 * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
7996 */
7997 some(fn: (value: T, index: number, array: T[]) => boolean): boolean;
7998 /**
7999 * Returns a copy of the internal results list as an Array.
8000 */
8001 toArray(): T[];
8002 toString(): string;
8003 /**
8004 * Updates the stored data of the query list, and resets the `dirty` flag to `false`, so that
8005 * on change detection, it will not notify of changes to the queries, unless a new change
8006 * occurs.
8007 *
8008 * @param resultsTree The query results to store
8009 * @param identityAccessor Optional function for extracting stable object identity from a value
8010 * in the array. This function is executed for each element of the query result list while
8011 * comparing current query list with the new one (provided as a first argument of the `reset`
8012 * function) to detect if the lists are different. If the function is not provided, elements
8013 * are compared as is (without any pre-processing).
8014 */
8015 reset(resultsTree: Array<T | any[]>, identityAccessor?: (value: T) => unknown): void;
8016 /**
8017 * Triggers a change event by emitting on the `changes` {@link EventEmitter}.
8018 */
8019 notifyOnChanges(): void;
8020 /** internal */
8021 setDirty(): void;
8022 /** internal */
8023 destroy(): void;
8024 [Symbol.iterator]: () => Iterator<T>;
8025}
8026
8027declare interface R3DeclareComponentFacade extends R3DeclareDirectiveFacade {
8028 template: string;
8029 isInline?: boolean;
8030 styles?: string[];
8031 dependencies?: R3DeclareTemplateDependencyFacade[];
8032 components?: R3DeclareDirectiveDependencyFacade[];
8033 directives?: R3DeclareDirectiveDependencyFacade[];
8034 pipes?: {
8035 [pipeName: string]: OpaqueValue | (() => OpaqueValue);
8036 };
8037 viewProviders?: OpaqueValue;
8038 animations?: OpaqueValue;
8039 changeDetection?: ChangeDetectionStrategy_2;
8040 encapsulation?: ViewEncapsulation_2;
8041 interpolation?: [string, string];
8042 preserveWhitespaces?: boolean;
8043}
8044
8045declare interface R3DeclareDependencyMetadataFacade {
8046 token: OpaqueValue;
8047 attribute?: boolean;
8048 host?: boolean;
8049 optional?: boolean;
8050 self?: boolean;
8051 skipSelf?: boolean;
8052}
8053
8054declare interface R3DeclareDirectiveDependencyFacade {
8055 kind?: 'directive' | 'component';
8056 selector: string;
8057 type: OpaqueValue | (() => OpaqueValue);
8058 inputs?: string[];
8059 outputs?: string[];
8060 exportAs?: string[];
8061}
8062
8063declare interface R3DeclareDirectiveFacade {
8064 selector?: string;
8065 type: Type_2;
8066 inputs?: {
8067 [fieldName: string]: {
8068 classPropertyName: string;
8069 publicName: string;
8070 isSignal: boolean;
8071 isRequired: boolean;
8072 transformFunction: Function | null;
8073 } | LegacyInputPartialMapping;
8074 };
8075 outputs?: {
8076 [classPropertyName: string]: string;
8077 };
8078 host?: {
8079 attributes?: {
8080 [key: string]: OpaqueValue;
8081 };
8082 listeners?: {
8083 [key: string]: string;
8084 };
8085 properties?: {
8086 [key: string]: string;
8087 };
8088 classAttribute?: string;
8089 styleAttribute?: string;
8090 };
8091 queries?: R3DeclareQueryMetadataFacade[];
8092 viewQueries?: R3DeclareQueryMetadataFacade[];
8093 providers?: OpaqueValue;
8094 exportAs?: string[];
8095 usesInheritance?: boolean;
8096 usesOnChanges?: boolean;
8097 isStandalone?: boolean;
8098 hostDirectives?: R3HostDirectiveMetadataFacade[] | null;
8099 isSignal?: boolean;
8100}
8101
8102declare interface R3DeclareFactoryFacade {
8103 type: Type_2;
8104 deps: R3DeclareDependencyMetadataFacade[] | 'invalid' | null;
8105 target: ɵɵFactoryTarget;
8106}
8107
8108declare interface R3DeclareInjectableFacade {
8109 type: Type_2;
8110 providedIn?: Type_2 | 'root' | 'platform' | 'any' | null;
8111 useClass?: OpaqueValue;
8112 useFactory?: OpaqueValue;
8113 useExisting?: OpaqueValue;
8114 useValue?: OpaqueValue;
8115 deps?: R3DeclareDependencyMetadataFacade[];
8116}
8117
8118declare interface R3DeclareInjectorFacade {
8119 type: Type_2;
8120 imports?: OpaqueValue[];
8121 providers?: OpaqueValue[];
8122}
8123
8124declare interface R3DeclareNgModuleDependencyFacade {
8125 kind: 'ngmodule';
8126 type: OpaqueValue | (() => OpaqueValue);
8127}
8128
8129declare interface R3DeclareNgModuleFacade {
8130 type: Type_2;
8131 bootstrap?: OpaqueValue[] | (() => OpaqueValue[]);
8132 declarations?: OpaqueValue[] | (() => OpaqueValue[]);
8133 imports?: OpaqueValue[] | (() => OpaqueValue[]);
8134 exports?: OpaqueValue[] | (() => OpaqueValue[]);
8135 schemas?: OpaqueValue[];
8136 id?: OpaqueValue;
8137}
8138
8139declare interface R3DeclarePipeDependencyFacade {
8140 kind?: 'pipe';
8141 name: string;
8142 type: OpaqueValue | (() => OpaqueValue);
8143}
8144
8145declare interface R3DeclarePipeFacade {
8146 type: Type_2;
8147 name: string;
8148 pure?: boolean;
8149 isStandalone?: boolean;
8150}
8151
8152declare interface R3DeclareQueryMetadataFacade {
8153 propertyName: string;
8154 first?: boolean;
8155 predicate: OpaqueValue | string[];
8156 descendants?: boolean;
8157 read?: OpaqueValue;
8158 static?: boolean;
8159 emitDistinctChangesOnly?: boolean;
8160 isSignal?: boolean;
8161}
8162
8163declare type R3DeclareTemplateDependencyFacade = {
8164 kind: string;
8165} & (R3DeclareDirectiveDependencyFacade | R3DeclarePipeDependencyFacade | R3DeclareNgModuleDependencyFacade);
8166
8167declare interface R3HostDirectiveMetadataFacade {
8168 directive: Type_2;
8169 inputs?: string[];
8170 outputs?: string[];
8171}
8172
8173declare class R3Injector extends EnvironmentInjector {
8174 readonly parent: Injector;
8175 readonly source: string | null;
8176 readonly scopes: Set<InjectorScope>;
8177 /**
8178 * Map of tokens to records which contain the instances of those tokens.
8179 * - `null` value implies that we don't have the record. Used by tree-shakable injectors
8180 * to prevent further searches.
8181 */
8182 private records;
8183 /**
8184 * Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks.
8185 */
8186 private _ngOnDestroyHooks;
8187 private _onDestroyHooks;
8188 /**
8189 * Flag indicating that this injector was previously destroyed.
8190 */
8191 get destroyed(): boolean;
8192 private _destroyed;
8193 private injectorDefTypes;
8194 constructor(providers: Array<Provider | EnvironmentProviders>, parent: Injector, source: string | null, scopes: Set<InjectorScope>);
8195 /**
8196 * Destroy the injector and release references to every instance or provider associated with it.
8197 *
8198 * Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a
8199 * hook was found.
8200 */
8201 destroy(): void;
8202 onDestroy(callback: () => void): () => void;
8203 runInContext<ReturnT>(fn: () => ReturnT): ReturnT;
8204 get<T>(token: ProviderToken<T>, notFoundValue?: any, flags?: InjectFlags | InjectOptions): T;
8205 toString(): string;
8206 assertNotDestroyed(): void;
8207 /**
8208 * Process a `SingleProvider` and add it.
8209 */
8210 private processProvider;
8211 private hydrate;
8212 private injectableDefInScope;
8213 private removeOnDestroy;
8214}
8215
8216/**
8217 * The array element type passed to:
8218 * - NgModule's annotation imports/exports/declarations fields
8219 * - standalone component annotation imports field
8220 */
8221declare type RawScopeInfoFromDecorator = Type<any> | ModuleWithProviders<any> | (() => Type<any>) | (() => ModuleWithProviders<any>) | any[];
8222
8223declare interface RComment extends RNode {
8224 textContent: string | null;
8225}
8226
8227declare interface RCssStyleDeclaration {
8228 removeProperty(propertyName: string): string;
8229 setProperty(propertyName: string, value: string | null, priority?: string): void;
8230}
8231
8232declare interface RDomTokenList {
8233 add(token: string): void;
8234 remove(token: string): void;
8235}
8236
8237declare const REACTIVE_TEMPLATE_CONSUMER = 23;
8238
8239declare interface ReactiveLViewConsumer extends ReactiveNode {
8240 lView: LView | null;
8241 slot: typeof REACTIVE_TEMPLATE_CONSUMER;
8242}
8243
8244/**
8245 * Creates an object that allows to retrieve component metadata.
8246 *
8247 * @usageNotes
8248 *
8249 * The example below demonstrates how to use the function and how the fields
8250 * of the returned object map to the component metadata.
8251 *
8252 * ```typescript
8253 * @Component({
8254 * standalone: true,
8255 * selector: 'foo-component',
8256 * template: `
8257 * <ng-content></ng-content>
8258 * <ng-content select="content-selector-a"></ng-content>
8259 * `,
8260 * })
8261 * class FooComponent {
8262 * @Input('inputName') inputPropName: string;
8263 * @Output('outputName') outputPropName = new EventEmitter<void>();
8264 * }
8265 *
8266 * const mirror = reflectComponentType(FooComponent);
8267 * expect(mirror.type).toBe(FooComponent);
8268 * expect(mirror.selector).toBe('foo-component');
8269 * expect(mirror.isStandalone).toBe(true);
8270 * expect(mirror.inputs).toEqual([{propName: 'inputName', templateName: 'inputPropName'}]);
8271 * expect(mirror.outputs).toEqual([{propName: 'outputName', templateName: 'outputPropName'}]);
8272 * expect(mirror.ngContentSelectors).toEqual([
8273 * '*', // first `<ng-content>` in a template, the selector defaults to `*`
8274 * 'content-selector-a' // second `<ng-content>` in a template
8275 * ]);
8276 * ```
8277 *
8278 * @param component Component class reference.
8279 * @returns An object that allows to retrieve component metadata.
8280 *
8281 * @publicApi
8282 */
8283export declare function reflectComponentType<C>(component: Type<C>): ComponentMirror<C> | null;
8284
8285/**
8286 * Subset of API needed for writing attributes, properties, and setting up
8287 * listeners on Element.
8288 */
8289declare interface RElement extends RNode {
8290 firstChild: RNode | null;
8291 style: RCssStyleDeclaration;
8292 classList: RDomTokenList;
8293 className: string;
8294 tagName: string;
8295 textContent: string | null;
8296 hasAttribute(name: string): boolean;
8297 getAttribute(name: string): string | null;
8298 setAttribute(name: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL): void;
8299 removeAttribute(name: string): void;
8300 setAttributeNS(namespaceURI: string, qualifiedName: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL): void;
8301 addEventListener(type: string, listener: EventListener, useCapture?: boolean): void;
8302 removeEventListener(type: string, listener?: EventListener, options?: boolean): void;
8303 setProperty?(name: string, value: any): void;
8304}
8305
8306declare const RENDERER = 11;
8307
8308/**
8309 * Procedural style of API needed to create elements and text nodes.
8310 *
8311 * In non-native browser environments (e.g. platforms such as web-workers), this is the
8312 * facade that enables element manipulation. In practice, this is implemented by `Renderer2`.
8313 */
8314declare interface Renderer {
8315 destroy(): void;
8316 createComment(value: string): RComment;
8317 createElement(name: string, namespace?: string | null): RElement;
8318 createText(value: string): RText;
8319 /**
8320 * This property is allowed to be null / undefined,
8321 * in which case the view engine won't call it.
8322 * This is used as a performance optimization for production mode.
8323 */
8324 destroyNode?: ((node: RNode) => void) | null;
8325 appendChild(parent: RElement, newChild: RNode): void;
8326 insertBefore(parent: RNode, newChild: RNode, refChild: RNode | null, isMove?: boolean): void;
8327 removeChild(parent: RElement, oldChild: RNode, isHostElement?: boolean): void;
8328 selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): RElement;
8329 parentNode(node: RNode): RElement | null;
8330 nextSibling(node: RNode): RNode | null;
8331 setAttribute(el: RElement, name: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL, namespace?: string | null): void;
8332 removeAttribute(el: RElement, name: string, namespace?: string | null): void;
8333 addClass(el: RElement, name: string): void;
8334 removeClass(el: RElement, name: string): void;
8335 setStyle(el: RElement, style: string, value: any, flags?: RendererStyleFlags2): void;
8336 removeStyle(el: RElement, style: string, flags?: RendererStyleFlags2): void;
8337 setProperty(el: RElement, name: string, value: any): void;
8338 setValue(node: RText | RComment, value: string): void;
8339 listen(target: GlobalTargetName | RNode, eventName: string, callback: (event: any) => boolean | void): () => void;
8340}
8341
8342/**
8343 * Extend this base class to implement custom rendering. By default, Angular
8344 * renders a template into DOM. You can use custom rendering to intercept
8345 * rendering calls, or to render to something other than DOM.
8346 *
8347 * Create your custom renderer using `RendererFactory2`.
8348 *
8349 * Use a custom renderer to bypass Angular's templating and
8350 * make custom UI changes that can't be expressed declaratively.
8351 * For example if you need to set a property or an attribute whose name is
8352 * not statically known, use the `setProperty()` or
8353 * `setAttribute()` method.
8354 *
8355 * @publicApi
8356 */
8357export declare abstract class Renderer2 {
8358 /**
8359 * Use to store arbitrary developer-defined data on a renderer instance,
8360 * as an object containing key-value pairs.
8361 * This is useful for renderers that delegate to other renderers.
8362 */
8363 abstract get data(): {
8364 [key: string]: any;
8365 };
8366 /**
8367 * Implement this callback to destroy the renderer or the host element.
8368 */
8369 abstract destroy(): void;
8370 /**
8371 * Implement this callback to create an instance of the host element.
8372 * @param name An identifying name for the new element, unique within the namespace.
8373 * @param namespace The namespace for the new element.
8374 * @returns The new element.
8375 */
8376 abstract createElement(name: string, namespace?: string | null): any;
8377 /**
8378 * Implement this callback to add a comment to the DOM of the host element.
8379 * @param value The comment text.
8380 * @returns The modified element.
8381 */
8382 abstract createComment(value: string): any;
8383 /**
8384 * Implement this callback to add text to the DOM of the host element.
8385 * @param value The text string.
8386 * @returns The modified element.
8387 */
8388 abstract createText(value: string): any;
8389 /**
8390 * If null or undefined, the view engine won't call it.
8391 * This is used as a performance optimization for production mode.
8392 */
8393 destroyNode: ((node: any) => void) | null;
8394 /**
8395 * Appends a child to a given parent node in the host element DOM.
8396 * @param parent The parent node.
8397 * @param newChild The new child node.
8398 */
8399 abstract appendChild(parent: any, newChild: any): void;
8400 /**
8401 * Implement this callback to insert a child node at a given position in a parent node
8402 * in the host element DOM.
8403 * @param parent The parent node.
8404 * @param newChild The new child nodes.
8405 * @param refChild The existing child node before which `newChild` is inserted.
8406 * @param isMove Optional argument which signifies if the current `insertBefore` is a result of a
8407 * move. Animation uses this information to trigger move animations. In the past the Animation
8408 * would always assume that any `insertBefore` is a move. This is not strictly true because
8409 * with runtime i18n it is possible to invoke `insertBefore` as a result of i18n and it should
8410 * not trigger an animation move.
8411 */
8412 abstract insertBefore(parent: any, newChild: any, refChild: any, isMove?: boolean): void;
8413 /**
8414 * Implement this callback to remove a child node from the host element's DOM.
8415 * @param parent The parent node.
8416 * @param oldChild The child node to remove.
8417 * @param isHostElement Optionally signal to the renderer whether this element is a host element
8418 * or not
8419 */
8420 abstract removeChild(parent: any, oldChild: any, isHostElement?: boolean): void;
8421 /**
8422 * Implement this callback to prepare an element to be bootstrapped
8423 * as a root element, and return the element instance.
8424 * @param selectorOrNode The DOM element.
8425 * @param preserveContent Whether the contents of the root element
8426 * should be preserved, or cleared upon bootstrap (default behavior).
8427 * Use with `ViewEncapsulation.ShadowDom` to allow simple native
8428 * content projection via `<slot>` elements.
8429 * @returns The root element.
8430 */
8431 abstract selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): any;
8432 /**
8433 * Implement this callback to get the parent of a given node
8434 * in the host element's DOM.
8435 * @param node The child node to query.
8436 * @returns The parent node, or null if there is no parent.
8437 * This is because the check is synchronous,
8438 * and the caller can't rely on checking for null.
8439 */
8440 abstract parentNode(node: any): any;
8441 /**
8442 * Implement this callback to get the next sibling node of a given node
8443 * in the host element's DOM.
8444 * @returns The sibling node, or null if there is no sibling.
8445 * This is because the check is synchronous,
8446 * and the caller can't rely on checking for null.
8447 */
8448 abstract nextSibling(node: any): any;
8449 /**
8450 * Implement this callback to set an attribute value for an element in the DOM.
8451 * @param el The element.
8452 * @param name The attribute name.
8453 * @param value The new value.
8454 * @param namespace The namespace.
8455 */
8456 abstract setAttribute(el: any, name: string, value: string, namespace?: string | null): void;
8457 /**
8458 * Implement this callback to remove an attribute from an element in the DOM.
8459 * @param el The element.
8460 * @param name The attribute name.
8461 * @param namespace The namespace.
8462 */
8463 abstract removeAttribute(el: any, name: string, namespace?: string | null): void;
8464 /**
8465 * Implement this callback to add a class to an element in the DOM.
8466 * @param el The element.
8467 * @param name The class name.
8468 */
8469 abstract addClass(el: any, name: string): void;
8470 /**
8471 * Implement this callback to remove a class from an element in the DOM.
8472 * @param el The element.
8473 * @param name The class name.
8474 */
8475 abstract removeClass(el: any, name: string): void;
8476 /**
8477 * Implement this callback to set a CSS style for an element in the DOM.
8478 * @param el The element.
8479 * @param style The name of the style.
8480 * @param value The new value.
8481 * @param flags Flags for style variations. No flags are set by default.
8482 */
8483 abstract setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2): void;
8484 /**
8485 * Implement this callback to remove the value from a CSS style for an element in the DOM.
8486 * @param el The element.
8487 * @param style The name of the style.
8488 * @param flags Flags for style variations to remove, if set. ???
8489 */
8490 abstract removeStyle(el: any, style: string, flags?: RendererStyleFlags2): void;
8491 /**
8492 * Implement this callback to set the value of a property of an element in the DOM.
8493 * @param el The element.
8494 * @param name The property name.
8495 * @param value The new value.
8496 */
8497 abstract setProperty(el: any, name: string, value: any): void;
8498 /**
8499 * Implement this callback to set the value of a node in the host element.
8500 * @param node The node.
8501 * @param value The new value.
8502 */
8503 abstract setValue(node: any, value: string): void;
8504 /**
8505 * Implement this callback to start an event listener.
8506 * @param target The context in which to listen for events. Can be
8507 * the entire window or document, the body of the document, or a specific
8508 * DOM element.
8509 * @param eventName The event to listen for.
8510 * @param callback A handler function to invoke when the event occurs.
8511 * @returns An "unlisten" function for disposing of this handler.
8512 */
8513 abstract listen(target: 'window' | 'document' | 'body' | any, eventName: string, callback: (event: any) => boolean | void): () => void;
8514}
8515
8516declare interface RendererFactory {
8517 createRenderer(hostElement: RElement | null, rendererType: RendererType2 | null): Renderer;
8518 begin?(): void;
8519 end?(): void;
8520}
8521
8522/**
8523 * Creates and initializes a custom renderer that implements the `Renderer2` base class.
8524 *
8525 * @publicApi
8526 */
8527export declare abstract class RendererFactory2 {
8528 /**
8529 * Creates and initializes a custom renderer for a host DOM element.
8530 * @param hostElement The element to render.
8531 * @param type The base class to implement.
8532 * @returns The new custom renderer instance.
8533 */
8534 abstract createRenderer(hostElement: any, type: RendererType2 | null): Renderer2;
8535 /**
8536 * A callback invoked when rendering has begun.
8537 */
8538 abstract begin?(): void;
8539 /**
8540 * A callback invoked when rendering has completed.
8541 */
8542 abstract end?(): void;
8543 /**
8544 * Use with animations test-only mode. Notifies the test when rendering has completed.
8545 * @returns The asynchronous result of the developer-defined function.
8546 */
8547 abstract whenRenderingDone?(): Promise<any>;
8548}
8549
8550/**
8551 * Flags for renderer-specific style modifiers.
8552 * @publicApi
8553 */
8554export declare enum RendererStyleFlags2 {
8555 /**
8556 * Marks a style as important.
8557 */
8558 Important = 1,
8559 /**
8560 * Marks a style as using dash case naming (this-is-dash-case).
8561 */
8562 DashCase = 2
8563}
8564
8565/**
8566 * Used by `RendererFactory2` to associate custom rendering data and styles
8567 * with a rendering implementation.
8568 * @publicApi
8569 */
8570export declare interface RendererType2 {
8571 /**
8572 * A unique identifying string for the new renderer, used when creating
8573 * unique styles for encapsulation.
8574 */
8575 id: string;
8576 /**
8577 * The view encapsulation type, which determines how styles are applied to
8578 * DOM elements. One of
8579 * - `Emulated` (default): Emulate native scoping of styles.
8580 * - `Native`: Use the native encapsulation mechanism of the renderer.
8581 * - `ShadowDom`: Use modern [Shadow
8582 * DOM](https://w3c.github.io/webcomponents/spec/shadow/) and
8583 * create a ShadowRoot for component's host element.
8584 * - `None`: Do not provide any template or style encapsulation.
8585 */
8586 encapsulation: ViewEncapsulation;
8587 /**
8588 * Defines CSS styles to be stored on a renderer instance.
8589 */
8590 styles: string[];
8591 /**
8592 * Defines arbitrary developer-defined data to be stored on a renderer instance.
8593 * This is useful for renderers that delegate to other renderers.
8594 */
8595 data: {
8596 [kind: string]: any;
8597 };
8598}
8599
8600/**
8601 * Lazily retrieves the reference value from a forwardRef.
8602 *
8603 * Acts as the identity function when given a non-forward-ref value.
8604 *
8605 * @usageNotes
8606 * ### Example
8607 *
8608 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}
8609 *
8610 * @see {@link forwardRef}
8611 * @publicApi
8612 */
8613export declare function resolveForwardRef<T>(type: T): T;
8614
8615/**
8616 * The goal here is to make sure that the browser DOM API is the Renderer.
8617 * We do this by defining a subset of DOM API to be the renderer and then
8618 * use that at runtime for rendering.
8619 *
8620 * At runtime we can then use the DOM api directly, in server or web-worker
8621 * it will be easy to implement such API.
8622 */
8623/** Subset of API needed for appending elements and text nodes. */
8624declare interface RNode {
8625 /**
8626 * Returns the parent Element, Document, or DocumentFragment
8627 */
8628 parentNode: RNode | null;
8629 /**
8630 * Returns the parent Element if there is one
8631 */
8632 parentElement: RElement | null;
8633 /**
8634 * Gets the Node immediately following this one in the parent's childNodes
8635 */
8636 nextSibling: RNode | null;
8637 /**
8638 * Removes a child from the current node and returns the removed node
8639 * @param oldChild the child node to remove
8640 */
8641 removeChild(oldChild: RNode): RNode;
8642 /**
8643 * Insert a child node.
8644 *
8645 * Used exclusively for adding View root nodes into ViewAnchor location.
8646 */
8647 insertBefore(newChild: RNode, refChild: RNode | null, isViewRoot: boolean): void;
8648 /**
8649 * Append a child node.
8650 *
8651 * Used exclusively for building up DOM which are static (ie not View roots)
8652 */
8653 appendChild(newChild: RNode): RNode;
8654}
8655
8656declare interface RText extends RNode {
8657 textContent: string | null;
8658}
8659
8660/**
8661 * Runs the given function in the [context](guide/dependency-injection-context) of the given
8662 * `Injector`.
8663 *
8664 * Within the function's stack frame, [`inject`](api/core/inject) can be used to inject dependencies
8665 * from the given `Injector`. Note that `inject` is only usable synchronously, and cannot be used in
8666 * any asynchronous callbacks or after any `await` points.
8667 *
8668 * @param injector the injector which will satisfy calls to [`inject`](api/core/inject) while `fn`
8669 * is executing
8670 * @param fn the closure to be run in the context of `injector`
8671 * @returns the return value of the function, if any
8672 * @publicApi
8673 */
8674export declare function runInInjectionContext<ReturnT>(injector: Injector, fn: () => ReturnT): ReturnT;
8675
8676/**
8677 * Sanitizer is used by the views to sanitize potentially dangerous values.
8678 *
8679 * @publicApi
8680 */
8681export declare abstract class Sanitizer {
8682 abstract sanitize(context: SecurityContext, value: {} | string | null): string | null;
8683 /** @nocollapse */
8684 static ɵprov: unknown;
8685}
8686
8687/**
8688 * Function used to sanitize the value before writing it into the renderer.
8689 */
8690declare type SanitizerFn = (value: any, tagName?: string, propName?: string) => string | TrustedHTML | TrustedScript | TrustedScriptURL;
8691
8692declare interface SchedulableEffect {
8693 run(): void;
8694 creationZone: unknown;
8695}
8696
8697
8698/**
8699 * A schema definition associated with an NgModule.
8700 *
8701 * @see {@link NgModule}
8702 * @see {@link CUSTOM_ELEMENTS_SCHEMA}
8703 * @see {@link NO_ERRORS_SCHEMA}
8704 *
8705 * @param name The name of a defined schema.
8706 *
8707 * @publicApi
8708 */
8709export declare interface SchemaMetadata {
8710 name: string;
8711}
8712
8713/**
8714 * Represents the set of dependencies of a type in a certain context.
8715 */
8716declare interface ScopeData {
8717 pipes: Set<PipeType<any>>;
8718 directives: Set<ɵDirectiveType<any> | ɵComponentType<any> | Type<any>>;
8719 /**
8720 * If true it indicates that calculating this scope somehow was not successful. The consumers
8721 * should interpret this as empty dependencies. The application of this flag is when calculating
8722 * scope recursively, the presence of this flag in a scope dependency implies that the scope is
8723 * also poisoned and thus we can return immediately without having to continue the recursion. The
8724 * reason for this error is displayed as an error message in the console as per JIT behavior
8725 * today. In addition to that, in local compilation the other build/compilations run in parallel
8726 * with local compilation may or may not reveal some details about the error as well.
8727 */
8728 isPoisoned?: boolean;
8729}
8730
8731
8732/**
8733 * A SecurityContext marks a location that has dangerous security implications, e.g. a DOM property
8734 * like `innerHTML` that could cause Cross Site Scripting (XSS) security bugs when improperly
8735 * handled.
8736 *
8737 * See DomSanitizer for more details on security in Angular applications.
8738 *
8739 * @publicApi
8740 */
8741export declare enum SecurityContext {
8742 NONE = 0,
8743 HTML = 1,
8744 STYLE = 2,
8745 SCRIPT = 3,
8746 URL = 4,
8747 RESOURCE_URL = 5
8748}
8749
8750/** Flags used to build up CssSelectors */
8751declare const enum SelectorFlags {
8752 /** Indicates this is the beginning of a new negative selector */
8753 NOT = 1,
8754 /** Mode for matching attributes */
8755 ATTRIBUTE = 2,
8756 /** Mode for matching tag names */
8757 ELEMENT = 4,
8758 /** Mode for matching class names */
8759 CLASS = 8
8760}
8761
8762/**
8763 * Type of the Self metadata.
8764 *
8765 * @publicApi
8766 */
8767export declare interface Self {
8768}
8769
8770/**
8771 * Self decorator and metadata.
8772 *
8773 * @Annotation
8774 * @publicApi
8775 */
8776export declare const Self: SelfDecorator;
8777
8778/**
8779 * Type of the Self decorator / constructor function.
8780 *
8781 * @publicApi
8782 */
8783export declare interface SelfDecorator {
8784 /**
8785 * Parameter decorator to be used on constructor parameters,
8786 * which tells the DI framework to start dependency resolution from the local injector.
8787 *
8788 * Resolution works upward through the injector hierarchy, so the children
8789 * of this class must configure their own providers or be prepared for a `null` result.
8790 *
8791 * @usageNotes
8792 *
8793 * In the following example, the dependency can be resolved
8794 * by the local injector when instantiating the class itself, but not
8795 * when instantiating a child.
8796 *
8797 * <code-example path="core/di/ts/metadata_spec.ts" region="Self">
8798 * </code-example>
8799 *
8800 * @see {@link SkipSelf}
8801 * @see {@link Optional}
8802 *
8803 */
8804 (): any;
8805 new (): Self;
8806}
8807
8808/**
8809 * Serialized data structure that contains relevant hydration
8810 * annotation information about a view that is a part of a
8811 * ViewContainer collection.
8812 */
8813declare interface SerializedContainerView extends SerializedView {
8814 /**
8815 * Unique id that represents a TView that was used to create
8816 * a given instance of a view:
8817 * - TViewType.Embedded: a unique id generated during serialization on the server
8818 * - TViewType.Component: an id generated based on component properties
8819 * (see `getComponentId` function for details)
8820 */
8821 [TEMPLATE_ID]: string;
8822 /**
8823 * Number of root nodes that belong to this view.
8824 * This information is needed to effectively traverse the DOM tree
8825 * and identify segments that belong to different views.
8826 */
8827 [NUM_ROOT_NODES]: number;
8828 /**
8829 * Number of times this view is repeated.
8830 * This is used to avoid serializing and sending the same hydration
8831 * information about similar views (for example, produced by *ngFor).
8832 */
8833 [MULTIPLIER]?: number;
8834}
8835
8836/**
8837 * Represents element containers within this view, stored as key-value pairs
8838 * where key is an index of a container in an LView (also used in the
8839 * `elementContainerStart` instruction), the value is the number of root nodes
8840 * in this container. This information is needed to locate an anchor comment
8841 * node that goes after all container nodes.
8842 */
8843declare interface SerializedElementContainers {
8844 [key: number]: number;
8845}
8846
8847/**
8848 * Serialized data structure that contains relevant hydration
8849 * annotation information that describes a given hydration boundary
8850 * (e.g. a component).
8851 */
8852declare interface SerializedView {
8853 /**
8854 * Serialized information about <ng-container>s.
8855 */
8856 [ELEMENT_CONTAINERS]?: SerializedElementContainers;
8857 /**
8858 * Serialized information about templates.
8859 * Key-value pairs where a key is an index of the corresponding
8860 * `template` instruction and the value is a unique id that can
8861 * be used during hydration to identify that template.
8862 */
8863 [TEMPLATES]?: Record<number, string>;
8864 /**
8865 * Serialized information about view containers.
8866 * Key-value pairs where a key is an index of the corresponding
8867 * LContainer entry within an LView, and the value is a list
8868 * of serialized information about views within this container.
8869 */
8870 [CONTAINERS]?: Record<number, SerializedContainerView[]>;
8871 /**
8872 * Serialized information about nodes in a template.
8873 * Key-value pairs where a key is an index of the corresponding
8874 * DOM node in an LView and the value is a path that describes
8875 * the location of this node (as a set of navigation instructions).
8876 */
8877 [NODES]?: Record<number, string>;
8878 /**
8879 * A list of ids which represents a set of nodes disconnected
8880 * from the DOM tree at the serialization time, but otherwise
8881 * present in the internal data structures.
8882 *
8883 * This information is used to avoid triggering the hydration
8884 * logic for such nodes and instead use a regular "creation mode".
8885 */
8886 [DISCONNECTED_NODES]?: number[];
8887}
8888
8889/**
8890 * Set the {@link GetTestability} implementation used by the Angular testing framework.
8891 * @publicApi
8892 */
8893export declare function setTestabilityGetter(getter: GetTestability): void;
8894
8895/**
8896 * A reactive value which notifies consumers of any changes.
8897 *
8898 * Signals are functions which returns their current value. To access the current value of a signal,
8899 * call it.
8900 *
8901 * Ordinary values can be turned into `Signal`s with the `signal` function.
8902 */
8903export declare type Signal<T> = (() => T) & {
8904 [SIGNAL]: unknown;
8905};
8906
8907/**
8908 * Create a `Signal` that can be set or updated directly.
8909 */
8910export declare function signal<T>(initialValue: T, options?: CreateSignalOptions<T>): WritableSignal<T>;
8911
8912
8913/**
8914 * Represents a basic change from a previous to a new value for a single
8915 * property on a directive instance. Passed as a value in a
8916 * {@link SimpleChanges} object to the `ngOnChanges` hook.
8917 *
8918 * @see {@link OnChanges}
8919 *
8920 * @publicApi
8921 */
8922export declare class SimpleChange {
8923 previousValue: any;
8924 currentValue: any;
8925 firstChange: boolean;
8926 constructor(previousValue: any, currentValue: any, firstChange: boolean);
8927 /**
8928 * Check whether the new value is the first value assigned.
8929 */
8930 isFirstChange(): boolean;
8931}
8932
8933/**
8934 * A hashtable of changes represented by {@link SimpleChange} objects stored
8935 * at the declared property name they belong to on a Directive or Component. This is
8936 * the type passed to the `ngOnChanges` hook.
8937 *
8938 * @see {@link OnChanges}
8939 *
8940 * @publicApi
8941 */
8942export declare interface SimpleChanges {
8943 [propName: string]: SimpleChange;
8944}
8945
8946/**
8947 * Internal type for a single provider in a deep provider array.
8948 */
8949declare type SingleProvider = TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | StaticClassProvider;
8950
8951/**
8952 * Type of the `SkipSelf` metadata.
8953 *
8954 * @publicApi
8955 */
8956export declare interface SkipSelf {
8957}
8958
8959/**
8960 * `SkipSelf` decorator and metadata.
8961 *
8962 * @Annotation
8963 * @publicApi
8964 */
8965export declare const SkipSelf: SkipSelfDecorator;
8966
8967/**
8968 * Type of the `SkipSelf` decorator / constructor function.
8969 *
8970 * @publicApi
8971 */
8972export declare interface SkipSelfDecorator {
8973 /**
8974 * Parameter decorator to be used on constructor parameters,
8975 * which tells the DI framework to start dependency resolution from the parent injector.
8976 * Resolution works upward through the injector hierarchy, so the local injector
8977 * is not checked for a provider.
8978 *
8979 * @usageNotes
8980 *
8981 * In the following example, the dependency can be resolved when
8982 * instantiating a child, but not when instantiating the class itself.
8983 *
8984 * <code-example path="core/di/ts/metadata_spec.ts" region="SkipSelf">
8985 * </code-example>
8986 *
8987 * @see [Dependency Injection guide](guide/dependency-injection-in-action#skip).
8988 * @see {@link Self}
8989 * @see {@link Optional}
8990 *
8991 */
8992 (): any;
8993 new (): SkipSelf;
8994}
8995
8996/**
8997 * Represents scope data for standalone component as calculated during runtime by the deps tracker.
8998 */
8999declare interface StandaloneComponentScope {
9000 compilation: StandaloneCompScopeData;
9001}
9002
9003/**
9004 * Represents scope data for standalone components as calculated during runtime by the deps
9005 * tracker.
9006 */
9007declare interface StandaloneCompScopeData extends ScopeData {
9008 ngModules: Set<ɵNgModuleType<any>>;
9009}
9010
9011
9012/**
9013 * A type-safe key to use with `TransferState`.
9014 *
9015 * Example:
9016 *
9017 * ```
9018 * const COUNTER_KEY = makeStateKey<number>('counter');
9019 * let value = 10;
9020 *
9021 * transferState.set(COUNTER_KEY, value);
9022 * ```
9023 *
9024 * @publicApi
9025 */
9026export declare type StateKey<T> = string & {
9027 __not_a_string: never;
9028 __value_type?: T;
9029};
9030
9031/**
9032 * Configures the `Injector` to return an instance of `useClass` for a token.
9033 * @see ["Dependency Injection Guide"](guide/dependency-injection).
9034 *
9035 * @usageNotes
9036 *
9037 * {@example core/di/ts/provider_spec.ts region='StaticClassProvider'}
9038 *
9039 * Note that following two providers are not equal:
9040 *
9041 * {@example core/di/ts/provider_spec.ts region='StaticClassProviderDifference'}
9042 *
9043 * ### Multi-value example
9044 *
9045 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
9046 *
9047 * @publicApi
9048 */
9049export declare interface StaticClassProvider extends StaticClassSansProvider {
9050 /**
9051 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
9052 */
9053 provide: any;
9054 /**
9055 * When true, injector returns an array of instances. This is useful to allow multiple
9056 * providers spread across many files to provide configuration information to a common token.
9057 */
9058 multi?: boolean;
9059}
9060
9061/**
9062 * Configures the `Injector` to return an instance of `useClass` for a token.
9063 * Base for `StaticClassProvider` decorator.
9064 *
9065 * @publicApi
9066 */
9067export declare interface StaticClassSansProvider {
9068 /**
9069 * An optional class to instantiate for the `token`. By default, the `provide`
9070 * class is instantiated.
9071 */
9072 useClass: Type<any>;
9073 /**
9074 * A list of `token`s to be resolved by the injector. The list of values is then
9075 * used as arguments to the `useClass` constructor.
9076 */
9077 deps: any[];
9078}
9079
9080/**
9081 * Describes how an `Injector` should be configured as static (that is, without reflection).
9082 * A static provider provides tokens to an injector for various types of dependencies.
9083 *
9084 * @see {@link Injector.create()}
9085 * @see ["Dependency Injection Guide"](guide/dependency-injection-providers).
9086 *
9087 * @publicApi
9088 */
9089export declare type StaticProvider = ValueProvider | ExistingProvider | StaticClassProvider | ConstructorProvider | FactoryProvider | any[];
9090
9091declare const T_HOST = 5;
9092
9093/**
9094 * A combination of:
9095 * - Attribute names and values.
9096 * - Special markers acting as flags to alter attributes processing.
9097 * - Parsed ngProjectAs selectors.
9098 */
9099declare type TAttributes = (string | ɵAttributeMarker | CssSelector)[];
9100
9101/**
9102 * Constants that are associated with a view. Includes:
9103 * - Attribute arrays.
9104 * - Local definition arrays.
9105 * - Translated messages (i18n).
9106 */
9107declare type TConstants = (TAttributes | string)[];
9108
9109/**
9110 * Factory function that returns an array of consts. Consts can be represented as a function in
9111 * case any additional statements are required to define consts in the list. An example is i18n
9112 * where additional i18n calls are generated, which should be executed when consts are requested
9113 * for the first time.
9114 */
9115declare type TConstantsFactory = () => TConstants;
9116
9117/**
9118 * TConstants type that describes how the `consts` field is generated on ComponentDef: it can be
9119 * either an array or a factory function that returns that array.
9120 */
9121declare type TConstantsOrFactory = TConstants | TConstantsFactory;
9122
9123/** Static data for an LContainer */
9124declare interface TContainerNode extends TNode {
9125 /**
9126 * Index in the data[] array.
9127 *
9128 * If it's -1, this is a dynamically created container node that isn't stored in
9129 * data[] (e.g. when you inject ViewContainerRef) .
9130 */
9131 index: number;
9132 child: null;
9133 /**
9134 * Container nodes will have parents unless:
9135 *
9136 * - They are the first node of a component or embedded view
9137 * - They are dynamically created
9138 */
9139 parent: TElementNode | TElementContainerNode | null;
9140 tView: TView | null;
9141 projection: null;
9142 value: null;
9143}
9144
9145/**
9146 * Static data that corresponds to the instance-specific data array on an LView.
9147 *
9148 * Each node's static data is stored in tData at the same index that it's stored
9149 * in the data array. Any nodes that do not have static data store a null value in
9150 * tData to avoid a sparse array.
9151 *
9152 * Each pipe's definition is stored here at the same index as its pipe instance in
9153 * the data array.
9154 *
9155 * Each host property's name is stored here at the same index as its value in the
9156 * data array.
9157 *
9158 * Each property binding name is stored here at the same index as its value in
9159 * the data array. If the binding is an interpolation, the static string values
9160 * are stored parallel to the dynamic values. Example:
9161 *
9162 * id="prefix {{ v0 }} a {{ v1 }} b {{ v2 }} suffix"
9163 *
9164 * LView | TView.data
9165 *------------------------
9166 * v0 value | 'a'
9167 * v1 value | 'b'
9168 * v2 value | id � prefix � suffix
9169 *
9170 * Injector bloom filters are also stored here.
9171 */
9172declare type TData = (TNode | ɵPipeDef<any> | ɵDirectiveDef<any> | ɵComponentDef<any> | number | TStylingRange | TStylingKey | ProviderToken<any> | TI18n | I18nUpdateOpCodes | TIcu | null | string | TDeferBlockDetails)[];
9173
9174/**
9175 * Describes the data shared across all instances of a defer block.
9176 */
9177declare interface TDeferBlockDetails {
9178 /**
9179 * Index in an LView and TData arrays where a template for the primary content
9180 * can be found.
9181 */
9182 primaryTmplIndex: number;
9183 /**
9184 * Index in an LView and TData arrays where a template for the loading block can be found.
9185 */
9186 loadingTmplIndex: number | null;
9187 /**
9188 * Extra configuration parameters (such as `after` and `minimum`) for the loading block.
9189 */
9190 loadingBlockConfig: DeferredLoadingBlockConfig | null;
9191 /**
9192 * Index in an LView and TData arrays where a template for the placeholder block can be found.
9193 */
9194 placeholderTmplIndex: number | null;
9195 /**
9196 * Extra configuration parameters (such as `after` and `minimum`) for the placeholder block.
9197 */
9198 placeholderBlockConfig: DeferredPlaceholderBlockConfig | null;
9199 /**
9200 * Index in an LView and TData arrays where a template for the error block can be found.
9201 */
9202 errorTmplIndex: number | null;
9203 /**
9204 * Compiler-generated function that loads all dependencies for a defer block.
9205 */
9206 dependencyResolverFn: DependencyResolverFn | null;
9207 /**
9208 * Keeps track of the current loading state of defer block dependencies.
9209 */
9210 loadingState: DeferDependenciesLoadingState;
9211 /**
9212 * Dependency loading Promise. This Promise is helpful for cases when there
9213 * are multiple instances of a defer block (e.g. if it was used inside of an *ngFor),
9214 * which all await the same set of dependencies.
9215 */
9216 loadingPromise: Promise<unknown> | null;
9217 /**
9218 * List of providers collected from all NgModules that were imported by
9219 * standalone components used within this defer block.
9220 */
9221 providers: Provider[] | null;
9222}
9223
9224/** Static data for an <ng-container> */
9225declare interface TElementContainerNode extends TNode {
9226 /** Index in the LView[] array. */
9227 index: number;
9228 child: TElementNode | TTextNode | TContainerNode | TElementContainerNode | TProjectionNode | null;
9229 parent: TElementNode | TElementContainerNode | null;
9230 tView: null;
9231 projection: null;
9232}
9233
9234/** Static data for an element */
9235declare interface TElementNode extends TNode {
9236 /** Index in the data[] array */
9237 index: number;
9238 child: TElementNode | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null;
9239 /**
9240 * Element nodes will have parents unless they are the first node of a component or
9241 * embedded view (which means their parent is in a different view and must be
9242 * retrieved using viewData[HOST_NODE]).
9243 */
9244 parent: TElementNode | TElementContainerNode | null;
9245 tView: null;
9246 /**
9247 * If this is a component TNode with projection, this will be an array of projected
9248 * TNodes or native nodes (see TNode.projection for more info). If it's a regular element node
9249 * or a component without projection, it will be null.
9250 */
9251 projection: (TNode | RNode[])[] | null;
9252 /**
9253 * Stores TagName
9254 */
9255 value: string;
9256}
9257
9258declare const TEMPLATE_ID = "i";
9259
9260/**
9261 * Represents an embedded template that can be used to instantiate embedded views.
9262 * To instantiate embedded views based on a template, use the `ViewContainerRef`
9263 * method `createEmbeddedView()`.
9264 *
9265 * Access a `TemplateRef` instance by placing a directive on an `<ng-template>`
9266 * element (or directive prefixed with `*`). The `TemplateRef` for the embedded view
9267 * is injected into the constructor of the directive,
9268 * using the `TemplateRef` token.
9269 *
9270 * You can also use a `Query` to find a `TemplateRef` associated with
9271 * a component or a directive.
9272 *
9273 * @see {@link ViewContainerRef}
9274 * @see [Navigate the Component Tree with DI](guide/dependency-injection-navtree)
9275 *
9276 * @publicApi
9277 */
9278export declare abstract class TemplateRef<C> {
9279 /**
9280 * The anchor element in the parent view for this embedded view.
9281 *
9282 * The data-binding and [injection contexts](guide/dependency-injection-context) of embedded views
9283 * created from this `TemplateRef` inherit from the contexts of this location.
9284 *
9285 * Typically new embedded views are attached to the view container of this location, but in
9286 * advanced use-cases, the view can be attached to a different container while keeping the
9287 * data-binding and injection context from the original location.
9288 *
9289 */
9290 abstract readonly elementRef: ElementRef;
9291 /**
9292 * Instantiates an unattached embedded view based on this template.
9293 * @param context The data-binding context of the embedded view, as declared
9294 * in the `<ng-template>` usage.
9295 * @param injector Injector to be used within the embedded view.
9296 * @returns The new embedded view object.
9297 */
9298 abstract createEmbeddedView(context: C, injector?: Injector): EmbeddedViewRef<C>;
9299}
9300
9301declare const TEMPLATES = "t";
9302
9303/**
9304 * The Testability service provides testing hooks that can be accessed from
9305 * the browser.
9306 *
9307 * Angular applications bootstrapped using an NgModule (via `@NgModule.bootstrap` field) will also
9308 * instantiate Testability by default (in both development and production modes).
9309 *
9310 * For applications bootstrapped using the `bootstrapApplication` function, Testability is not
9311 * included by default. You can include it into your applications by getting the list of necessary
9312 * providers using the `provideProtractorTestingSupport()` function and adding them into the
9313 * `options.providers` array. Example:
9314 *
9315 * ```typescript
9316 * import {provideProtractorTestingSupport} from '@angular/platform-browser';
9317 *
9318 * await bootstrapApplication(RootComponent, providers: [provideProtractorTestingSupport()]);
9319 * ```
9320 *
9321 * @publicApi
9322 */
9323export declare class Testability implements PublicTestability {
9324 private _ngZone;
9325 private registry;
9326 private _pendingCount;
9327 private _isZoneStable;
9328 private _callbacks;
9329 private taskTrackingZone;
9330 constructor(_ngZone: NgZone, registry: TestabilityRegistry, testabilityGetter: GetTestability);
9331 private _watchAngularEvents;
9332 /**
9333 * Increases the number of pending request
9334 * @deprecated pending requests are now tracked with zones.
9335 */
9336 increasePendingRequestCount(): number;
9337 /**
9338 * Decreases the number of pending request
9339 * @deprecated pending requests are now tracked with zones
9340 */
9341 decreasePendingRequestCount(): number;
9342 /**
9343 * Whether an associated application is stable
9344 */
9345 isStable(): boolean;
9346 private _runCallbacksIfReady;
9347 private getPendingTasks;
9348 private addCallback;
9349 /**
9350 * Wait for the application to be stable with a timeout. If the timeout is reached before that
9351 * happens, the callback receives a list of the macro tasks that were pending, otherwise null.
9352 *
9353 * @param doneCb The callback to invoke when Angular is stable or the timeout expires
9354 * whichever comes first.
9355 * @param timeout Optional. The maximum time to wait for Angular to become stable. If not
9356 * specified, whenStable() will wait forever.
9357 * @param updateCb Optional. If specified, this callback will be invoked whenever the set of
9358 * pending macrotasks changes. If this callback returns true doneCb will not be invoked
9359 * and no further updates will be issued.
9360 */
9361 whenStable(doneCb: Function, timeout?: number, updateCb?: Function): void;
9362 /**
9363 * Get the number of pending requests
9364 * @deprecated pending requests are now tracked with zones
9365 */
9366 getPendingRequestCount(): number;
9367 /**
9368 * Find providers by name
9369 * @param using The root element to search from
9370 * @param provider The name of binding variable
9371 * @param exactMatch Whether using exactMatch
9372 */
9373 findProviders(using: any, provider: string, exactMatch: boolean): any[];
9374 static ɵfac: i0.ɵɵFactoryDeclaration<Testability, never>;
9375 static ɵprov: i0.ɵɵInjectableDeclaration<Testability>;
9376}
9377
9378/**
9379 * A global registry of {@link Testability} instances for specific elements.
9380 * @publicApi
9381 */
9382export declare class TestabilityRegistry {
9383 /**
9384 * Registers an application with a testability hook so that it can be tracked
9385 * @param token token of application, root element
9386 * @param testability Testability hook
9387 */
9388 registerApplication(token: any, testability: Testability): void;
9389 /**
9390 * Unregisters an application.
9391 * @param token token of application, root element
9392 */
9393 unregisterApplication(token: any): void;
9394 /**
9395 * Unregisters all applications
9396 */
9397 unregisterAllApplications(): void;
9398 /**
9399 * Get a testability hook associated with the application
9400 * @param elem root element
9401 */
9402 getTestability(elem: any): Testability | null;
9403 /**
9404 * Get all registered testabilities
9405 */
9406 getAllTestabilities(): Testability[];
9407 /**
9408 * Get all registered applications(root elements)
9409 */
9410 getAllRootElements(): any[];
9411 /**
9412 * Find testability of a node in the Tree
9413 * @param elem node
9414 * @param findInAncestors whether finding testability in ancestors if testability was not found in
9415 * current node
9416 */
9417 findTestabilityInTree(elem: Node, findInAncestors?: boolean): Testability | null;
9418 static ɵfac: i0.ɵɵFactoryDeclaration<TestabilityRegistry, never>;
9419 static ɵprov: i0.ɵɵInjectableDeclaration<TestabilityRegistry>;
9420}
9421
9422/**
9423 * Store information for the i18n translation block.
9424 */
9425declare interface TI18n {
9426 /**
9427 * A set of OpCodes which will create the Text Nodes and ICU anchors for the translation blocks.
9428 *
9429 * NOTE: The ICU anchors are filled in with ICU Update OpCode.
9430 */
9431 create: I18nCreateOpCodes;
9432 /**
9433 * A set of OpCodes which will be executed on each change detection to determine if any changes to
9434 * DOM are required.
9435 */
9436 update: I18nUpdateOpCodes;
9437}
9438
9439declare interface TIcu {
9440 /**
9441 * Defines the ICU type of `select` or `plural`
9442 */
9443 type: IcuType;
9444 /**
9445 * Index in `LView` where the anchor node is stored. `<!-- ICU 0:0 -->`
9446 */
9447 anchorIdx: number;
9448 /**
9449 * Currently selected ICU case pointer.
9450 *
9451 * `lView[currentCaseLViewIndex]` stores the currently selected case. This is needed to know how
9452 * to clean up the current case when transitioning no the new case.
9453 *
9454 * If the value stored is:
9455 * `null`: No current case selected.
9456 * `<0`: A flag which means that the ICU just switched and that `icuUpdate` must be executed
9457 * regardless of the `mask`. (After the execution the flag is cleared)
9458 * `>=0` A currently selected case index.
9459 */
9460 currentCaseLViewIndex: number;
9461 /**
9462 * A list of case values which the current ICU will try to match.
9463 *
9464 * The last value is `other`
9465 */
9466 cases: any[];
9467 /**
9468 * A set of OpCodes to apply in order to build up the DOM render tree for the ICU
9469 */
9470 create: IcuCreateOpCodes[];
9471 /**
9472 * A set of OpCodes to apply in order to destroy the DOM render tree for the ICU.
9473 */
9474 remove: I18nRemoveOpCodes[];
9475 /**
9476 * A set of OpCodes to apply in order to update the DOM render tree for the ICU bindings.
9477 */
9478 update: I18nUpdateOpCodes[];
9479}
9480
9481/**
9482 * Binding data (flyweight) for a particular node that is shared between all templates
9483 * of a specific type.
9484 *
9485 * If a property is:
9486 * - PropertyAliases: that property's data was generated and this is it
9487 * - Null: that property's data was already generated and nothing was found.
9488 * - Undefined: that property's data has not yet been generated
9489 *
9490 * see: https://en.wikipedia.org/wiki/Flyweight_pattern for more on the Flyweight pattern
9491 */
9492declare interface TNode {
9493 /** The type of the TNode. See TNodeType. */
9494 type: TNodeType;
9495 /**
9496 * Index of the TNode in TView.data and corresponding native element in LView.
9497 *
9498 * This is necessary to get from any TNode to its corresponding native element when
9499 * traversing the node tree.
9500 *
9501 * If index is -1, this is a dynamically created container node or embedded view node.
9502 */
9503 index: number;
9504 /**
9505 * Insert before existing DOM node index.
9506 *
9507 * When DOM nodes are being inserted, normally they are being appended as they are created.
9508 * Under i18n case, the translated text nodes are created ahead of time as part of the
9509 * `ɵɵi18nStart` instruction which means that this `TNode` can't just be appended and instead
9510 * needs to be inserted using `insertBeforeIndex` semantics.
9511 *
9512 * Additionally sometimes it is necessary to insert new text nodes as a child of this `TNode`. In
9513 * such a case the value stores an array of text nodes to insert.
9514 *
9515 * Example:
9516 * ```
9517 * <div i18n>
9518 * Hello <span>World</span>!
9519 * </div>
9520 * ```
9521 * In the above example the `ɵɵi18nStart` instruction can create `Hello `, `World` and `!` text
9522 * nodes. It can also insert `Hello ` and `!` text node as a child of `<div>`, but it can't
9523 * insert `World` because the `<span>` node has not yet been created. In such a case the
9524 * `<span>` `TNode` will have an array which will direct the `<span>` to not only insert
9525 * itself in front of `!` but also to insert the `World` (created by `ɵɵi18nStart`) into
9526 * `<span>` itself.
9527 *
9528 * Pseudo code:
9529 * ```
9530 * if (insertBeforeIndex === null) {
9531 * // append as normal
9532 * } else if (Array.isArray(insertBeforeIndex)) {
9533 * // First insert current `TNode` at correct location
9534 * const currentNode = lView[this.index];
9535 * parentNode.insertBefore(currentNode, lView[this.insertBeforeIndex[0]]);
9536 * // Now append all of the children
9537 * for(let i=1; i<this.insertBeforeIndex; i++) {
9538 * currentNode.appendChild(lView[this.insertBeforeIndex[i]]);
9539 * }
9540 * } else {
9541 * parentNode.insertBefore(lView[this.index], lView[this.insertBeforeIndex])
9542 * }
9543 * ```
9544 * - null: Append as normal using `parentNode.appendChild`
9545 * - `number`: Append using
9546 * `parentNode.insertBefore(lView[this.index], lView[this.insertBeforeIndex])`
9547 *
9548 * *Initialization*
9549 *
9550 * Because `ɵɵi18nStart` executes before nodes are created, on `TView.firstCreatePass` it is not
9551 * possible for `ɵɵi18nStart` to set the `insertBeforeIndex` value as the corresponding `TNode`
9552 * has not yet been created. For this reason the `ɵɵi18nStart` creates a `TNodeType.Placeholder`
9553 * `TNode` at that location. See `TNodeType.Placeholder` for more information.
9554 */
9555 insertBeforeIndex: InsertBeforeIndex;
9556 /**
9557 * The index of the closest injector in this node's LView.
9558 *
9559 * If the index === -1, there is no injector on this node or any ancestor node in this view.
9560 *
9561 * If the index !== -1, it is the index of this node's injector OR the index of a parent
9562 * injector in the same view. We pass the parent injector index down the node tree of a view so
9563 * it's possible to find the parent injector without walking a potentially deep node tree.
9564 * Injector indices are not set across view boundaries because there could be multiple component
9565 * hosts.
9566 *
9567 * If tNode.injectorIndex === tNode.parent.injectorIndex, then the index belongs to a parent
9568 * injector.
9569 */
9570 injectorIndex: number;
9571 /** Stores starting index of the directives. */
9572 directiveStart: number;
9573 /**
9574 * Stores final exclusive index of the directives.
9575 *
9576 * The area right behind the `directiveStart-directiveEnd` range is used to allocate the
9577 * `HostBindingFunction` `vars` (or null if no bindings.) Therefore `directiveEnd` is used to set
9578 * `LFrame.bindingRootIndex` before `HostBindingFunction` is executed.
9579 */
9580 directiveEnd: number;
9581 /**
9582 * Offset from the `directiveStart` at which the component (one at most) of the node is stored.
9583 * Set to -1 if no components have been applied to the node. Component index can be found using
9584 * `directiveStart + componentOffset`.
9585 */
9586 componentOffset: number;
9587 /**
9588 * Stores the last directive which had a styling instruction.
9589 *
9590 * Initial value of this is `-1` which means that no `hostBindings` styling instruction has
9591 * executed. As `hostBindings` instructions execute they set the value to the index of the
9592 * `DirectiveDef` which contained the last `hostBindings` styling instruction.
9593 *
9594 * Valid values are:
9595 * - `-1` No `hostBindings` instruction has executed.
9596 * - `directiveStart <= directiveStylingLast < directiveEnd`: Points to the `DirectiveDef` of
9597 * the last styling instruction which executed in the `hostBindings`.
9598 *
9599 * This data is needed so that styling instructions know which static styling data needs to be
9600 * collected from the `DirectiveDef.hostAttrs`. A styling instruction needs to collect all data
9601 * since last styling instruction.
9602 */
9603 directiveStylingLast: number;
9604 /**
9605 * Stores indexes of property bindings. This field is only set in the ngDevMode and holds
9606 * indexes of property bindings so TestBed can get bound property metadata for a given node.
9607 */
9608 propertyBindings: number[] | null;
9609 /**
9610 * Stores if Node isComponent, isProjected, hasContentQuery, hasClassInput and hasStyleInput
9611 * etc.
9612 */
9613 flags: TNodeFlags;
9614 /**
9615 * This number stores two values using its bits:
9616 *
9617 * - the index of the first provider on that node (first 16 bits)
9618 * - the count of view providers from the component on this node (last 16 bits)
9619 */
9620 providerIndexes: TNodeProviderIndexes;
9621 /**
9622 * The value name associated with this node.
9623 * if type:
9624 * `TNodeType.Text`: text value
9625 * `TNodeType.Element`: tag name
9626 * `TNodeType.ICUContainer`: `TIcu`
9627 */
9628 value: any;
9629 /**
9630 * Attributes associated with an element. We need to store attributes to support various
9631 * use-cases (attribute injection, content projection with selectors, directives matching).
9632 * Attributes are stored statically because reading them from the DOM would be way too slow for
9633 * content projection and queries.
9634 *
9635 * Since attrs will always be calculated first, they will never need to be marked undefined by
9636 * other instructions.
9637 *
9638 * For regular attributes a name of an attribute and its value alternate in the array.
9639 * e.g. ['role', 'checkbox']
9640 * This array can contain flags that will indicate "special attributes" (attributes with
9641 * namespaces, attributes extracted from bindings and outputs).
9642 */
9643 attrs: TAttributes | null;
9644 /**
9645 * Same as `TNode.attrs` but contains merged data across all directive host bindings.
9646 *
9647 * We need to keep `attrs` as unmerged so that it can be used for attribute selectors.
9648 * We merge attrs here so that it can be used in a performant way for initial rendering.
9649 *
9650 * The `attrs` are merged in first pass in following order:
9651 * - Component's `hostAttrs`
9652 * - Directives' `hostAttrs`
9653 * - Template `TNode.attrs` associated with the current `TNode`.
9654 */
9655 mergedAttrs: TAttributes | null;
9656 /**
9657 * A set of local names under which a given element is exported in a template and
9658 * visible to queries. An entry in this array can be created for different reasons:
9659 * - an element itself is referenced, ex.: `<div #foo>`
9660 * - a component is referenced, ex.: `<my-cmpt #foo>`
9661 * - a directive is referenced, ex.: `<my-cmpt #foo="directiveExportAs">`.
9662 *
9663 * A given element might have different local names and those names can be associated
9664 * with a directive. We store local names at even indexes while odd indexes are reserved
9665 * for directive index in a view (or `-1` if there is no associated directive).
9666 *
9667 * Some examples:
9668 * - `<div #foo>` => `["foo", -1]`
9669 * - `<my-cmpt #foo>` => `["foo", myCmptIdx]`
9670 * - `<my-cmpt #foo #bar="directiveExportAs">` => `["foo", myCmptIdx, "bar", directiveIdx]`
9671 * - `<div #foo #bar="directiveExportAs">` => `["foo", -1, "bar", directiveIdx]`
9672 */
9673 localNames: (string | number)[] | null;
9674 /** Information about input properties that need to be set once from attribute data. */
9675 initialInputs: InitialInputData | null | undefined;
9676 /**
9677 * Input data for all directives on this node. `null` means that there are no directives with
9678 * inputs on this node.
9679 */
9680 inputs: NodeInputBindings | null;
9681 /**
9682 * Output data for all directives on this node. `null` means that there are no directives with
9683 * outputs on this node.
9684 */
9685 outputs: NodeOutputBindings | null;
9686 /**
9687 * The TView attached to this node.
9688 *
9689 * If this TNode corresponds to an LContainer with a template (e.g. structural
9690 * directive), the template's TView will be stored here.
9691 *
9692 * If this TNode corresponds to an element, tView will be `null`.
9693 */
9694 tView: TView | null;
9695 /**
9696 * The next sibling node. Necessary so we can propagate through the root nodes of a view
9697 * to insert them or remove them from the DOM.
9698 */
9699 next: TNode | null;
9700 /**
9701 * The previous sibling node.
9702 * This simplifies operations when we need a pointer to the previous node.
9703 */
9704 prev: TNode | null;
9705 /**
9706 * The next projected sibling. Since in Angular content projection works on the node-by-node
9707 * basis the act of projecting nodes might change nodes relationship at the insertion point
9708 * (target view). At the same time we need to keep initial relationship between nodes as
9709 * expressed in content view.
9710 */
9711 projectionNext: TNode | null;
9712 /**
9713 * First child of the current node.
9714 *
9715 * For component nodes, the child will always be a ContentChild (in same view).
9716 * For embedded view nodes, the child will be in their child view.
9717 */
9718 child: TNode | null;
9719 /**
9720 * Parent node (in the same view only).
9721 *
9722 * We need a reference to a node's parent so we can append the node to its parent's native
9723 * element at the appropriate time.
9724 *
9725 * If the parent would be in a different view (e.g. component host), this property will be null.
9726 * It's important that we don't try to cross component boundaries when retrieving the parent
9727 * because the parent will change (e.g. index, attrs) depending on where the component was
9728 * used (and thus shouldn't be stored on TNode). In these cases, we retrieve the parent through
9729 * LView.node instead (which will be instance-specific).
9730 *
9731 * If this is an inline view node (V), the parent will be its container.
9732 */
9733 parent: TElementNode | TContainerNode | null;
9734 /**
9735 * List of projected TNodes for a given component host element OR index into the said nodes.
9736 *
9737 * For easier discussion assume this example:
9738 * `<parent>`'s view definition:
9739 * ```
9740 * <child id="c1">content1</child>
9741 * <child id="c2"><span>content2</span></child>
9742 * ```
9743 * `<child>`'s view definition:
9744 * ```
9745 * <ng-content id="cont1"></ng-content>
9746 * ```
9747 *
9748 * If `Array.isArray(projection)` then `TNode` is a host element:
9749 * - `projection` stores the content nodes which are to be projected.
9750 * - The nodes represent categories defined by the selector: For example:
9751 * `<ng-content/><ng-content select="abc"/>` would represent the heads for `<ng-content/>`
9752 * and `<ng-content select="abc"/>` respectively.
9753 * - The nodes we store in `projection` are heads only, we used `.next` to get their
9754 * siblings.
9755 * - The nodes `.next` is sorted/rewritten as part of the projection setup.
9756 * - `projection` size is equal to the number of projections `<ng-content>`. The size of
9757 * `c1` will be `1` because `<child>` has only one `<ng-content>`.
9758 * - we store `projection` with the host (`c1`, `c2`) rather than the `<ng-content>` (`cont1`)
9759 * because the same component (`<child>`) can be used in multiple locations (`c1`, `c2`) and
9760 * as a result have different set of nodes to project.
9761 * - without `projection` it would be difficult to efficiently traverse nodes to be projected.
9762 *
9763 * If `typeof projection == 'number'` then `TNode` is a `<ng-content>` element:
9764 * - `projection` is an index of the host's `projection`Nodes.
9765 * - This would return the first head node to project:
9766 * `getHost(currentTNode).projection[currentTNode.projection]`.
9767 * - When projecting nodes the parent node retrieved may be a `<ng-content>` node, in which case
9768 * the process is recursive in nature.
9769 *
9770 * If `projection` is of type `RNode[][]` than we have a collection of native nodes passed as
9771 * projectable nodes during dynamic component creation.
9772 */
9773 projection: (TNode | RNode[])[] | number | null;
9774 /**
9775 * A collection of all `style` static values for an element (including from host).
9776 *
9777 * This field will be populated if and when:
9778 *
9779 * - There are one or more initial `style`s on an element (e.g. `<div style="width:200px;">`)
9780 * - There are one or more initial `style`s on a directive/component host
9781 * (e.g. `@Directive({host: {style: "width:200px;" } }`)
9782 */
9783 styles: string | null;
9784 /**
9785 * A collection of all `style` static values for an element excluding host sources.
9786 *
9787 * Populated when there are one or more initial `style`s on an element
9788 * (e.g. `<div style="width:200px;">`)
9789 * Must be stored separately from `tNode.styles` to facilitate setting directive
9790 * inputs that shadow the `style` property. If we used `tNode.styles` as is for shadowed inputs,
9791 * we would feed host styles back into directives as "inputs". If we used `tNode.attrs`, we
9792 * would have to concatenate the attributes on every template pass. Instead, we process once on
9793 * first create pass and store here.
9794 */
9795 stylesWithoutHost: string | null;
9796 /**
9797 * A `KeyValueArray` version of residual `styles`.
9798 *
9799 * When there are styling instructions than each instruction stores the static styling
9800 * which is of lower priority than itself. This means that there may be a higher priority
9801 * styling than the instruction.
9802 *
9803 * Imagine:
9804 * ```
9805 * <div style="color: highest;" my-dir>
9806 *
9807 * @Directive({
9808 * host: {
9809 * style: 'color: lowest; ',
9810 * '[styles.color]': 'exp' // ɵɵstyleProp('color', ctx.exp);
9811 * }
9812 * })
9813 * ```
9814 *
9815 * In the above case:
9816 * - `color: lowest` is stored with `ɵɵstyleProp('color', ctx.exp);` instruction
9817 * - `color: highest` is the residual and is stored here.
9818 *
9819 * - `undefined': not initialized.
9820 * - `null`: initialized but `styles` is `null`
9821 * - `KeyValueArray`: parsed version of `styles`.
9822 */
9823 residualStyles: KeyValueArray<any> | undefined | null;
9824 /**
9825 * A collection of all class static values for an element (including from host).
9826 *
9827 * This field will be populated if and when:
9828 *
9829 * - There are one or more initial classes on an element (e.g. `<div class="one two three">`)
9830 * - There are one or more initial classes on an directive/component host
9831 * (e.g. `@Directive({host: {class: "SOME_CLASS" } }`)
9832 */
9833 classes: string | null;
9834 /**
9835 * A collection of all class static values for an element excluding host sources.
9836 *
9837 * Populated when there are one or more initial classes on an element
9838 * (e.g. `<div class="SOME_CLASS">`)
9839 * Must be stored separately from `tNode.classes` to facilitate setting directive
9840 * inputs that shadow the `class` property. If we used `tNode.classes` as is for shadowed
9841 * inputs, we would feed host classes back into directives as "inputs". If we used
9842 * `tNode.attrs`, we would have to concatenate the attributes on every template pass. Instead,
9843 * we process once on first create pass and store here.
9844 */
9845 classesWithoutHost: string | null;
9846 /**
9847 * A `KeyValueArray` version of residual `classes`.
9848 *
9849 * Same as `TNode.residualStyles` but for classes.
9850 *
9851 * - `undefined': not initialized.
9852 * - `null`: initialized but `classes` is `null`
9853 * - `KeyValueArray`: parsed version of `classes`.
9854 */
9855 residualClasses: KeyValueArray<any> | undefined | null;
9856 /**
9857 * Stores the head/tail index of the class bindings.
9858 *
9859 * - If no bindings, the head and tail will both be 0.
9860 * - If there are template bindings, stores the head/tail of the class bindings in the template.
9861 * - If no template bindings but there are host bindings, the head value will point to the last
9862 * host binding for "class" (not the head of the linked list), tail will be 0.
9863 *
9864 * See: `style_binding_list.ts` for details.
9865 *
9866 * This is used by `insertTStylingBinding` to know where the next styling binding should be
9867 * inserted so that they can be sorted in priority order.
9868 */
9869 classBindings: TStylingRange;
9870 /**
9871 * Stores the head/tail index of the class bindings.
9872 *
9873 * - If no bindings, the head and tail will both be 0.
9874 * - If there are template bindings, stores the head/tail of the style bindings in the template.
9875 * - If no template bindings but there are host bindings, the head value will point to the last
9876 * host binding for "style" (not the head of the linked list), tail will be 0.
9877 *
9878 * See: `style_binding_list.ts` for details.
9879 *
9880 * This is used by `insertTStylingBinding` to know where the next styling binding should be
9881 * inserted so that they can be sorted in priority order.
9882 */
9883 styleBindings: TStylingRange;
9884}
9885
9886/**
9887 * Corresponds to the TNode.flags property.
9888 */
9889declare const enum TNodeFlags {
9890 /** Bit #1 - This bit is set if the node is a host for any directive (including a component) */
9891 isDirectiveHost = 1,
9892 /** Bit #2 - This bit is set if the node has been projected */
9893 isProjected = 2,
9894 /** Bit #3 - This bit is set if any directive on this node has content queries */
9895 hasContentQuery = 4,
9896 /** Bit #4 - This bit is set if the node has any "class" inputs */
9897 hasClassInput = 8,
9898 /** Bit #5 - This bit is set if the node has any "style" inputs */
9899 hasStyleInput = 16,
9900 /** Bit #6 - This bit is set if the node has been detached by i18n */
9901 isDetached = 32,
9902 /**
9903 * Bit #7 - This bit is set if the node has directives with host bindings.
9904 *
9905 * This flags allows us to guard host-binding logic and invoke it only on nodes
9906 * that actually have directives with host bindings.
9907 */
9908 hasHostBindings = 64,
9909 /**
9910 * Bit #8 - This bit is set if the node is a located inside skip hydration block.
9911 */
9912 inSkipHydrationBlock = 128
9913}
9914
9915/**
9916 * Corresponds to the TNode.providerIndexes property.
9917 */
9918declare const enum TNodeProviderIndexes {
9919 /** The index of the first provider on this node is encoded on the least significant bits. */
9920 ProvidersStartIndexMask = 1048575,
9921 /**
9922 * The count of view providers from the component on this node is
9923 * encoded on the 20 most significant bits.
9924 */
9925 CptViewProvidersCountShift = 20,
9926 CptViewProvidersCountShifter = 1048576
9927}
9928
9929/**
9930 * TNodeType corresponds to the {@link TNode} `type` property.
9931 *
9932 * NOTE: type IDs are such that we use each bit to denote a type. This is done so that we can easily
9933 * check if the `TNode` is of more than one type.
9934 *
9935 * `if (tNode.type === TNodeType.Text || tNode.type === TNode.Element)`
9936 * can be written as:
9937 * `if (tNode.type & (TNodeType.Text | TNodeType.Element))`
9938 *
9939 * However any given `TNode` can only be of one type.
9940 */
9941declare const enum TNodeType {
9942 /**
9943 * The TNode contains information about a DOM element aka {@link RText}.
9944 */
9945 Text = 1,
9946 /**
9947 * The TNode contains information about a DOM element aka {@link RElement}.
9948 */
9949 Element = 2,
9950 /**
9951 * The TNode contains information about an {@link LContainer} for embedded views.
9952 */
9953 Container = 4,
9954 /**
9955 * The TNode contains information about an `<ng-container>` element {@link RNode}.
9956 */
9957 ElementContainer = 8,
9958 /**
9959 * The TNode contains information about an `<ng-content>` projection
9960 */
9961 Projection = 16,
9962 /**
9963 * The TNode contains information about an ICU comment used in `i18n`.
9964 */
9965 Icu = 32,
9966 /**
9967 * Special node type representing a placeholder for future `TNode` at this location.
9968 *
9969 * I18n translation blocks are created before the element nodes which they contain. (I18n blocks
9970 * can span over many elements.) Because i18n `TNode`s (representing text) are created first they
9971 * often may need to point to element `TNode`s which are not yet created. In such a case we create
9972 * a `Placeholder` `TNode`. This allows the i18n to structurally link the `TNode`s together
9973 * without knowing any information about the future nodes which will be at that location.
9974 *
9975 * On `firstCreatePass` When element instruction executes it will try to create a `TNode` at that
9976 * location. Seeing a `Placeholder` `TNode` already there tells the system that it should reuse
9977 * existing `TNode` (rather than create a new one) and just update the missing information.
9978 */
9979 Placeholder = 64,
9980 AnyRNode = 3,// Text | Element
9981 AnyContainer = 12
9982}
9983
9984/**
9985 * Type representing a set of TNodes that can have local refs (`#foo`) placed on them.
9986 */
9987declare type TNodeWithLocalRefs = TContainerNode | TElementNode | TElementContainerNode;
9988
9989/** Static data for an LProjectionNode */
9990declare interface TProjectionNode extends TNode {
9991 /** Index in the data[] array */
9992 child: null;
9993 /**
9994 * Projection nodes will have parents unless they are the first node of a component
9995 * or embedded view (which means their parent is in a different view and must be
9996 * retrieved using LView.node).
9997 */
9998 parent: TElementNode | TElementContainerNode | null;
9999 tView: null;
10000 /** Index of the projection node. (See TNode.projection for more info.) */
10001 projection: number;
10002 value: null;
10003}
10004
10005/**
10006 * TQueries represent a collection of individual TQuery objects tracked in a given view. Most of the
10007 * methods on this interface are simple proxy methods to the corresponding functionality on TQuery.
10008 */
10009declare interface TQueries {
10010 /**
10011 * Adds a new TQuery to a collection of queries tracked in a given view.
10012 * @param tQuery
10013 */
10014 track(tQuery: TQuery): void;
10015 /**
10016 * Returns a TQuery instance for at the given index in the queries array.
10017 * @param index
10018 */
10019 getByIndex(index: number): TQuery;
10020 /**
10021 * Returns the number of queries tracked in a given view.
10022 */
10023 length: number;
10024 /**
10025 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
10026 * `elementStart` on each and every TQuery.
10027 * @param tView
10028 * @param tNode
10029 */
10030 elementStart(tView: TView, tNode: TNode): void;
10031 /**
10032 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
10033 * `elementEnd` on each and every TQuery.
10034 * @param tNode
10035 */
10036 elementEnd(tNode: TNode): void;
10037 /**
10038 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
10039 * `template` on each and every TQuery.
10040 * @param tView
10041 * @param tNode
10042 */
10043 template(tView: TView, tNode: TNode): void;
10044 /**
10045 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
10046 * `embeddedTView` on each and every TQuery.
10047 * @param tNode
10048 */
10049 embeddedTView(tNode: TNode): TQueries | null;
10050}
10051
10052/**
10053 * TQuery objects represent all the query-related data that remain the same from one view instance
10054 * to another and can be determined on the very first template pass. Most notably TQuery holds all
10055 * the matches for a given view.
10056 */
10057declare interface TQuery {
10058 /**
10059 * Query metadata extracted from query annotations.
10060 */
10061 metadata: TQueryMetadata;
10062 /**
10063 * Index of a query in a declaration view in case of queries propagated to en embedded view, -1
10064 * for queries declared in a given view. We are storing this index so we can find a parent query
10065 * to clone for an embedded view (when an embedded view is created).
10066 */
10067 indexInDeclarationView: number;
10068 /**
10069 * Matches collected on the first template pass. Each match is a pair of:
10070 * - TNode index;
10071 * - match index;
10072 *
10073 * A TNode index can be either:
10074 * - a positive number (the most common case) to indicate a matching TNode;
10075 * - a negative number to indicate that a given query is crossing a <ng-template> element and
10076 * results from views created based on TemplateRef should be inserted at this place.
10077 *
10078 * A match index is a number used to find an actual value (for a given node) when query results
10079 * are materialized. This index can have one of the following values:
10080 * - -2 - indicates that we need to read a special token (TemplateRef, ViewContainerRef etc.);
10081 * - -1 - indicates that we need to read a default value based on the node type (TemplateRef for
10082 * ng-template and ElementRef for other elements);
10083 * - a positive number - index of an injectable to be read from the element injector.
10084 */
10085 matches: number[] | null;
10086 /**
10087 * A flag indicating if a given query crosses an <ng-template> element. This flag exists for
10088 * performance reasons: we can notice that queries not crossing any <ng-template> elements will
10089 * have matches from a given view only (and adapt processing accordingly).
10090 */
10091 crossesNgTemplate: boolean;
10092 /**
10093 * A method call when a given query is crossing an element (or element container). This is where a
10094 * given TNode is matched against a query predicate.
10095 * @param tView
10096 * @param tNode
10097 */
10098 elementStart(tView: TView, tNode: TNode): void;
10099 /**
10100 * A method called when processing the elementEnd instruction - this is mostly useful to determine
10101 * if a given content query should match any nodes past this point.
10102 * @param tNode
10103 */
10104 elementEnd(tNode: TNode): void;
10105 /**
10106 * A method called when processing the template instruction. This is where a
10107 * given TContainerNode is matched against a query predicate.
10108 * @param tView
10109 * @param tNode
10110 */
10111 template(tView: TView, tNode: TNode): void;
10112 /**
10113 * A query-related method called when an embedded TView is created based on the content of a
10114 * <ng-template> element. We call this method to determine if a given query should be propagated
10115 * to the embedded view and if so - return a cloned TQuery for this embedded view.
10116 * @param tNode
10117 * @param childQueryIndex
10118 */
10119 embeddedTView(tNode: TNode, childQueryIndex: number): TQuery | null;
10120}
10121
10122/**
10123 * An object representing query metadata extracted from query annotations.
10124 */
10125declare interface TQueryMetadata {
10126 predicate: ProviderToken<unknown> | string[];
10127 read: any;
10128 flags: QueryFlags;
10129}
10130
10131/**
10132 * A function optionally passed into the `NgForOf` directive to customize how `NgForOf` uniquely
10133 * identifies items in an iterable.
10134 *
10135 * `NgForOf` needs to uniquely identify items in the iterable to correctly perform DOM updates
10136 * when items in the iterable are reordered, new items are added, or existing items are removed.
10137 *
10138 *
10139 * In all of these scenarios it is usually desirable to only update the DOM elements associated
10140 * with the items affected by the change. This behavior is important to:
10141 *
10142 * - preserve any DOM-specific UI state (like cursor position, focus, text selection) when the
10143 * iterable is modified
10144 * - enable animation of item addition, removal, and iterable reordering
10145 * - preserve the value of the `<select>` element when nested `<option>` elements are dynamically
10146 * populated using `NgForOf` and the bound iterable is updated
10147 *
10148 * A common use for custom `trackBy` functions is when the model that `NgForOf` iterates over
10149 * contains a property with a unique identifier. For example, given a model:
10150 *
10151 * ```ts
10152 * class User {
10153 * id: number;
10154 * name: string;
10155 * ...
10156 * }
10157 * ```
10158 * a custom `trackBy` function could look like the following:
10159 * ```ts
10160 * function userTrackBy(index, user) {
10161 * return user.id;
10162 * }
10163 * ```
10164 *
10165 * A custom `trackBy` function must have several properties:
10166 *
10167 * - be [idempotent](https://en.wikipedia.org/wiki/Idempotence) (be without side effects, and always
10168 * return the same value for a given input)
10169 * - return unique value for all unique inputs
10170 * - be fast
10171 *
10172 * @see [`NgForOf#ngForTrackBy`](api/common/NgForOf#ngForTrackBy)
10173 * @publicApi
10174 */
10175export declare interface TrackByFunction<T> {
10176 /**
10177 * @param index The index of the item within the iterable.
10178 * @param item The item in the iterable.
10179 */
10180 <U extends T>(index: number, item: T & U): any;
10181}
10182
10183/**
10184 * A key value store that is transferred from the application on the server side to the application
10185 * on the client side.
10186 *
10187 * The `TransferState` is available as an injectable token.
10188 * On the client, just inject this token using DI and use it, it will be lazily initialized.
10189 * On the server it's already included if `renderApplication` function is used. Otherwise, import
10190 * the `ServerTransferStateModule` module to make the `TransferState` available.
10191 *
10192 * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only
10193 * boolean, number, string, null and non-class objects will be serialized and deserialized in a
10194 * non-lossy manner.
10195 *
10196 * @publicApi
10197 */
10198export declare class TransferState {
10199 /** @nocollapse */
10200 static ɵprov: unknown;
10201 private onSerializeCallbacks;
10202 /**
10203 * Get the value corresponding to a key. Return `defaultValue` if key is not found.
10204 */
10205 get<T>(key: StateKey<T>, defaultValue: T): T;
10206 /**
10207 * Set the value corresponding to a key.
10208 */
10209 set<T>(key: StateKey<T>, value: T): void;
10210 /**
10211 * Remove a key from the store.
10212 */
10213 remove<T>(key: StateKey<T>): void;
10214 /**
10215 * Test whether a key exists in the store.
10216 */
10217 hasKey<T>(key: StateKey<T>): boolean;
10218 /**
10219 * Indicates whether the state is empty.
10220 */
10221 get isEmpty(): boolean;
10222 /**
10223 * Register a callback to provide the value for a key when `toJson` is called.
10224 */
10225 onSerialize<T>(key: StateKey<T>, callback: () => T): void;
10226 /**
10227 * Serialize the current state of the store to JSON.
10228 */
10229 toJson(): string;
10230}
10231
10232/**
10233 * Use this token at bootstrap to provide the content of your translation file (`xtb`,
10234 * `xlf` or `xlf2`) when you want to translate your application in another language.
10235 *
10236 * See the [i18n guide](guide/i18n-common-merge) for more information.
10237 *
10238 * @usageNotes
10239 * ### Example
10240 *
10241 * ```typescript
10242 * import { TRANSLATIONS } from '@angular/core';
10243 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
10244 * import { AppModule } from './app/app.module';
10245 *
10246 * // content of your translation file
10247 * const translations = '....';
10248 *
10249 * platformBrowserDynamic().bootstrapModule(AppModule, {
10250 * providers: [{provide: TRANSLATIONS, useValue: translations }]
10251 * });
10252 * ```
10253 *
10254 * @publicApi
10255 */
10256export declare const TRANSLATIONS: InjectionToken<string>;
10257
10258/**
10259 * Provide this token at bootstrap to set the format of your {@link TRANSLATIONS}: `xtb`,
10260 * `xlf` or `xlf2`.
10261 *
10262 * See the [i18n guide](guide/i18n-common-merge) for more information.
10263 *
10264 * @usageNotes
10265 * ### Example
10266 *
10267 * ```typescript
10268 * import { TRANSLATIONS_FORMAT } from '@angular/core';
10269 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
10270 * import { AppModule } from './app/app.module';
10271 *
10272 * platformBrowserDynamic().bootstrapModule(AppModule, {
10273 * providers: [{provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }]
10274 * });
10275 * ```
10276 *
10277 * @publicApi
10278 */
10279export declare const TRANSLATIONS_FORMAT: InjectionToken<string>;
10280
10281
10282/**
10283 * @fileoverview
10284 * While Angular only uses Trusted Types internally for the time being,
10285 * references to Trusted Types could leak into our core.d.ts, which would force
10286 * anyone compiling against @angular/core to provide the @types/trusted-types
10287 * package in their compilation unit.
10288 *
10289 * Until https://github.com/microsoft/TypeScript/issues/30024 is resolved, we
10290 * will keep Angular's public API surface free of references to Trusted Types.
10291 * For internal and semi-private APIs that need to reference Trusted Types, the
10292 * minimal type definitions for the Trusted Types API provided by this module
10293 * should be used instead. They are marked as "declare" to prevent them from
10294 * being renamed by compiler optimization.
10295 *
10296 * Adapted from
10297 * https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/trusted-types/index.d.ts
10298 * but restricted to the API surface used within Angular.
10299 */
10300declare type TrustedHTML = string & {
10301 __brand__: 'TrustedHTML';
10302};
10303
10304declare type TrustedScript = string & {
10305 __brand__: 'TrustedScript';
10306};
10307
10308declare type TrustedScriptURL = string & {
10309 __brand__: 'TrustedScriptURL';
10310};
10311
10312/**
10313 * Value stored in the `TData` which is needed to re-concatenate the styling.
10314 *
10315 * See: `TStylingKeyPrimitive` and `TStylingStatic`
10316 */
10317declare type TStylingKey = TStylingKeyPrimitive | TStylingStatic;
10318
10319/**
10320 * The primitive portion (`TStylingStatic` removed) of the value stored in the `TData` which is
10321 * needed to re-concatenate the styling.
10322 *
10323 * - `string`: Stores the property name. Used with `ɵɵstyleProp`/`ɵɵclassProp` instruction.
10324 * - `null`: Represents map, so there is no name. Used with `ɵɵstyleMap`/`ɵɵclassMap`.
10325 * - `false`: Represents an ignore case. This happens when `ɵɵstyleProp`/`ɵɵclassProp` instruction
10326 * is combined with directive which shadows its input `@Input('class')`. That way the binding
10327 * should not participate in the styling resolution.
10328 */
10329declare type TStylingKeyPrimitive = string | null | false;
10330
10331/**
10332 * This is a branded number which contains previous and next index.
10333 *
10334 * When we come across styling instructions we need to store the `TStylingKey` in the correct
10335 * order so that we can re-concatenate the styling value in the desired priority.
10336 *
10337 * The insertion can happen either at the:
10338 * - end of template as in the case of coming across additional styling instruction in the template
10339 * - in front of the template in the case of coming across additional instruction in the
10340 * `hostBindings`.
10341 *
10342 * We use `TStylingRange` to store the previous and next index into the `TData` where the template
10343 * bindings can be found.
10344 *
10345 * - bit 0 is used to mark that the previous index has a duplicate for current value.
10346 * - bit 1 is used to mark that the next index has a duplicate for the current value.
10347 * - bits 2-16 are used to encode the next/tail of the template.
10348 * - bits 17-32 are used to encode the previous/head of template.
10349 *
10350 * NODE: *duplicate* false implies that it is statically known that this binding will not collide
10351 * with other bindings and therefore there is no need to check other bindings. For example the
10352 * bindings in `<div [style.color]="exp" [style.width]="exp">` will never collide and will have
10353 * their bits set accordingly. Previous duplicate means that we may need to check previous if the
10354 * current binding is `null`. Next duplicate means that we may need to check next bindings if the
10355 * current binding is not `null`.
10356 *
10357 * NOTE: `0` has special significance and represents `null` as in no additional pointer.
10358 */
10359declare type TStylingRange = number & {
10360 __brand__: 'TStylingRange';
10361};
10362
10363/**
10364 * Store the static values for the styling binding.
10365 *
10366 * The `TStylingStatic` is just `KeyValueArray` where key `""` (stored at location 0) contains the
10367 * `TStylingKey` (stored at location 1). In other words this wraps the `TStylingKey` such that the
10368 * `""` contains the wrapped value.
10369 *
10370 * When instructions are resolving styling they may need to look forward or backwards in the linked
10371 * list to resolve the value. For this reason we have to make sure that he linked list also contains
10372 * the static values. However the list only has space for one item per styling instruction. For this
10373 * reason we store the static values here as part of the `TStylingKey`. This means that the
10374 * resolution function when looking for a value needs to first look at the binding value, and than
10375 * at `TStylingKey` (if it exists).
10376 *
10377 * Imagine we have:
10378 *
10379 * ```
10380 * <div class="TEMPLATE" my-dir>
10381 *
10382 * @Directive({
10383 * host: {
10384 * class: 'DIR',
10385 * '[class.dynamic]': 'exp' // ɵɵclassProp('dynamic', ctx.exp);
10386 * }
10387 * })
10388 * ```
10389 *
10390 * In the above case the linked list will contain one item:
10391 *
10392 * ```
10393 * // assume binding location: 10 for `ɵɵclassProp('dynamic', ctx.exp);`
10394 * tData[10] = <TStylingStatic>[
10395 * '': 'dynamic', // This is the wrapped value of `TStylingKey`
10396 * 'DIR': true, // This is the default static value of directive binding.
10397 * ];
10398 * tData[10 + 1] = 0; // We don't have prev/next.
10399 *
10400 * lView[10] = undefined; // assume `ctx.exp` is `undefined`
10401 * lView[10 + 1] = undefined; // Just normalized `lView[10]`
10402 * ```
10403 *
10404 * So when the function is resolving styling value, it first needs to look into the linked list
10405 * (there is none) and than into the static `TStylingStatic` too see if there is a default value for
10406 * `dynamic` (there is not). Therefore it is safe to remove it.
10407 *
10408 * If setting `true` case:
10409 * ```
10410 * lView[10] = true; // assume `ctx.exp` is `true`
10411 * lView[10 + 1] = true; // Just normalized `lView[10]`
10412 * ```
10413 * So when the function is resolving styling value, it first needs to look into the linked list
10414 * (there is none) and than into `TNode.residualClass` (TNode.residualStyle) which contains
10415 * ```
10416 * tNode.residualClass = [
10417 * 'TEMPLATE': true,
10418 * ];
10419 * ```
10420 *
10421 * This means that it is safe to add class.
10422 */
10423declare interface TStylingStatic extends KeyValueArray<any> {
10424}
10425
10426/** Static data for a text node */
10427declare interface TTextNode extends TNode {
10428 /** Index in the data[] array */
10429 index: number;
10430 child: null;
10431 /**
10432 * Text nodes will have parents unless they are the first node of a component or
10433 * embedded view (which means their parent is in a different view and must be
10434 * retrieved using LView.node).
10435 */
10436 parent: TElementNode | TElementContainerNode | null;
10437 tView: null;
10438 projection: null;
10439}
10440
10441declare const TVIEW = 1;
10442
10443/**
10444 * The static data for an LView (shared between all templates of a
10445 * given type).
10446 *
10447 * Stored on the `ComponentDef.tView`.
10448 */
10449declare interface TView {
10450 /**
10451 * Type of `TView` (`Root`|`Component`|`Embedded`).
10452 */
10453 type: TViewType;
10454 /**
10455 * This is a blueprint used to generate LView instances for this TView. Copying this
10456 * blueprint is faster than creating a new LView from scratch.
10457 */
10458 blueprint: LView;
10459 /**
10460 * The template function used to refresh the view of dynamically created views
10461 * and components. Will be null for inline views.
10462 */
10463 template: ComponentTemplate<{}> | null;
10464 /**
10465 * A function containing query-related instructions.
10466 */
10467 viewQuery: ViewQueriesFunction<{}> | null;
10468 /**
10469 * A `TNode` representing the declaration location of this `TView` (not part of this TView).
10470 */
10471 declTNode: TNode | null;
10472 /** Whether or not this template has been processed in creation mode. */
10473 firstCreatePass: boolean;
10474 /**
10475 * Whether or not this template has been processed in update mode (e.g. change detected)
10476 *
10477 * `firstUpdatePass` is used by styling to set up `TData` to contain metadata about the styling
10478 * instructions. (Mainly to build up a linked list of styling priority order.)
10479 *
10480 * Typically this function gets cleared after first execution. If exception is thrown then this
10481 * flag can remain turned un until there is first successful (no exception) pass. This means that
10482 * individual styling instructions keep track of if they have already been added to the linked
10483 * list to prevent double adding.
10484 */
10485 firstUpdatePass: boolean;
10486 /** Static data equivalent of LView.data[]. Contains TNodes, PipeDefInternal or TI18n. */
10487 data: TData;
10488 /**
10489 * The binding start index is the index at which the data array
10490 * starts to store bindings only. Saving this value ensures that we
10491 * will begin reading bindings at the correct point in the array when
10492 * we are in update mode.
10493 *
10494 * -1 means that it has not been initialized.
10495 */
10496 bindingStartIndex: number;
10497 /**
10498 * The index where the "expando" section of `LView` begins. The expando
10499 * section contains injectors, directive instances, and host binding values.
10500 * Unlike the "decls" and "vars" sections of `LView`, the length of this
10501 * section cannot be calculated at compile-time because directives are matched
10502 * at runtime to preserve locality.
10503 *
10504 * We store this start index so we know where to start checking host bindings
10505 * in `setHostBindings`.
10506 */
10507 expandoStartIndex: number;
10508 /**
10509 * Whether or not there are any static view queries tracked on this view.
10510 *
10511 * We store this so we know whether or not we should do a view query
10512 * refresh after creation mode to collect static query results.
10513 */
10514 staticViewQueries: boolean;
10515 /**
10516 * Whether or not there are any static content queries tracked on this view.
10517 *
10518 * We store this so we know whether or not we should do a content query
10519 * refresh after creation mode to collect static query results.
10520 */
10521 staticContentQueries: boolean;
10522 /**
10523 * A reference to the first child node located in the view.
10524 */
10525 firstChild: TNode | null;
10526 /**
10527 * Stores the OpCodes to be replayed during change-detection to process the `HostBindings`
10528 *
10529 * See `HostBindingOpCodes` for encoding details.
10530 */
10531 hostBindingOpCodes: HostBindingOpCodes | null;
10532 /**
10533 * Full registry of directives and components that may be found in this view.
10534 *
10535 * It's necessary to keep a copy of the full def list on the TView so it's possible
10536 * to render template functions without a host component.
10537 */
10538 directiveRegistry: DirectiveDefList | null;
10539 /**
10540 * Full registry of pipes that may be found in this view.
10541 *
10542 * The property is either an array of `PipeDefs`s or a function which returns the array of
10543 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
10544 *
10545 * It's necessary to keep a copy of the full def list on the TView so it's possible
10546 * to render template functions without a host component.
10547 */
10548 pipeRegistry: PipeDefList | null;
10549 /**
10550 * Array of ngOnInit, ngOnChanges and ngDoCheck hooks that should be executed for this view in
10551 * creation mode.
10552 *
10553 * This array has a flat structure and contains TNode indices, directive indices (where an
10554 * instance can be found in `LView`) and hook functions. TNode index is followed by the directive
10555 * index and a hook function. If there are multiple hooks for a given TNode, the TNode index is
10556 * not repeated and the next lifecycle hook information is stored right after the previous hook
10557 * function. This is done so that at runtime the system can efficiently iterate over all of the
10558 * functions to invoke without having to make any decisions/lookups.
10559 */
10560 preOrderHooks: HookData | null;
10561 /**
10562 * Array of ngOnChanges and ngDoCheck hooks that should be executed for this view in update mode.
10563 *
10564 * This array has the same structure as the `preOrderHooks` one.
10565 */
10566 preOrderCheckHooks: HookData | null;
10567 /**
10568 * Array of ngAfterContentInit and ngAfterContentChecked hooks that should be executed
10569 * for this view in creation mode.
10570 *
10571 * Even indices: Directive index
10572 * Odd indices: Hook function
10573 */
10574 contentHooks: HookData | null;
10575 /**
10576 * Array of ngAfterContentChecked hooks that should be executed for this view in update
10577 * mode.
10578 *
10579 * Even indices: Directive index
10580 * Odd indices: Hook function
10581 */
10582 contentCheckHooks: HookData | null;
10583 /**
10584 * Array of ngAfterViewInit and ngAfterViewChecked hooks that should be executed for
10585 * this view in creation mode.
10586 *
10587 * Even indices: Directive index
10588 * Odd indices: Hook function
10589 */
10590 viewHooks: HookData | null;
10591 /**
10592 * Array of ngAfterViewChecked hooks that should be executed for this view in
10593 * update mode.
10594 *
10595 * Even indices: Directive index
10596 * Odd indices: Hook function
10597 */
10598 viewCheckHooks: HookData | null;
10599 /**
10600 * Array of ngOnDestroy hooks that should be executed when this view is destroyed.
10601 *
10602 * Even indices: Directive index
10603 * Odd indices: Hook function
10604 */
10605 destroyHooks: DestroyHookData | null;
10606 /**
10607 * When a view is destroyed, listeners need to be released and outputs need to be
10608 * unsubscribed. This cleanup array stores both listener data (in chunks of 4)
10609 * and output data (in chunks of 2) for a particular view. Combining the arrays
10610 * saves on memory (70 bytes per array) and on a few bytes of code size (for two
10611 * separate for loops).
10612 *
10613 * If it's a native DOM listener or output subscription being stored:
10614 * 1st index is: event name `name = tView.cleanup[i+0]`
10615 * 2nd index is: index of native element or a function that retrieves global target (window,
10616 * document or body) reference based on the native element:
10617 * `typeof idxOrTargetGetter === 'function'`: global target getter function
10618 * `typeof idxOrTargetGetter === 'number'`: index of native element
10619 *
10620 * 3rd index is: index of listener function `listener = lView[CLEANUP][tView.cleanup[i+2]]`
10621 * 4th index is: `useCaptureOrIndx = tView.cleanup[i+3]`
10622 * `typeof useCaptureOrIndx == 'boolean' : useCapture boolean
10623 * `typeof useCaptureOrIndx == 'number':
10624 * `useCaptureOrIndx >= 0` `removeListener = LView[CLEANUP][useCaptureOrIndx]`
10625 * `useCaptureOrIndx < 0` `subscription = LView[CLEANUP][-useCaptureOrIndx]`
10626 *
10627 * If it's an output subscription or query list destroy hook:
10628 * 1st index is: output unsubscribe function / query list destroy function
10629 * 2nd index is: index of function context in LView.cleanupInstances[]
10630 * `tView.cleanup[i+0].call(lView[CLEANUP][tView.cleanup[i+1]])`
10631 */
10632 cleanup: any[] | null;
10633 /**
10634 * A list of element indices for child components that will need to be
10635 * refreshed when the current view has finished its check. These indices have
10636 * already been adjusted for the HEADER_OFFSET.
10637 *
10638 */
10639 components: number[] | null;
10640 /**
10641 * A collection of queries tracked in a given view.
10642 */
10643 queries: TQueries | null;
10644 /**
10645 * An array of indices pointing to directives with content queries alongside with the
10646 * corresponding query index. Each entry in this array is a tuple of:
10647 * - index of the first content query index declared by a given directive;
10648 * - index of a directive.
10649 *
10650 * We are storing those indexes so we can refresh content queries as part of a view refresh
10651 * process.
10652 */
10653 contentQueries: number[] | null;
10654 /**
10655 * Set of schemas that declare elements to be allowed inside the view.
10656 */
10657 schemas: SchemaMetadata[] | null;
10658 /**
10659 * Array of constants for the view. Includes attribute arrays, local definition arrays etc.
10660 * Used for directive matching, attribute bindings, local definitions and more.
10661 */
10662 consts: TConstants | null;
10663 /**
10664 * Indicates that there was an error before we managed to complete the first create pass of the
10665 * view. This means that the view is likely corrupted and we should try to recover it.
10666 */
10667 incompleteFirstPass: boolean;
10668 /**
10669 * Unique id of this TView for hydration purposes:
10670 * - TViewType.Embedded: a unique id generated during serialization on the server
10671 * - TViewType.Component: an id generated based on component properties
10672 * (see `getComponentId` function for details)
10673 */
10674 ssrId: string | null;
10675}
10676
10677/**
10678 * Explicitly marks `TView` as a specific type in `ngDevMode`
10679 *
10680 * It is useful to know conceptually what time of `TView` we are dealing with when
10681 * debugging an application (even if the runtime does not need it.) For this reason
10682 * we store this information in the `ngDevMode` `TView` and than use it for
10683 * better debugging experience.
10684 */
10685declare const enum TViewType {
10686 /**
10687 * Root `TView` is the used to bootstrap components into. It is used in conjunction with
10688 * `LView` which takes an existing DOM node not owned by Angular and wraps it in `TView`/`LView`
10689 * so that other components can be loaded into it.
10690 */
10691 Root = 0,
10692 /**
10693 * `TView` associated with a Component. This would be the `TView` directly associated with the
10694 * component view (as opposed an `Embedded` `TView` which would be a child of `Component` `TView`)
10695 */
10696 Component = 1,
10697 /**
10698 * `TView` associated with a template. Such as `*ngIf`, `<ng-template>` etc... A `Component`
10699 * can have zero or more `Embedded` `TView`s.
10700 */
10701 Embedded = 2
10702}
10703
10704/**
10705 * Special location which allows easy identification of type. If we have an array which was
10706 * retrieved from the `LView` and that array has `true` at `TYPE` location, we know it is
10707 * `LContainer`.
10708 */
10709declare const TYPE = 1;
10710
10711/**
10712 * @description
10713 *
10714 * Represents a type that a Component or other object is instances of.
10715 *
10716 * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is represented by
10717 * the `MyCustomComponent` constructor function.
10718 *
10719 * @publicApi
10720 */
10721export declare const Type: FunctionConstructor;
10722
10723export declare interface Type<T> extends Function {
10724 new (...args: any[]): T;
10725}
10726
10727declare type Type_2 = Function;
10728
10729/**
10730 * An interface implemented by all Angular type decorators, which allows them to be used as
10731 * decorators as well as Angular syntax.
10732 *
10733 * ```
10734 * @ng.Component({...})
10735 * class MyClass {...}
10736 * ```
10737 *
10738 * @publicApi
10739 */
10740export declare interface TypeDecorator {
10741 /**
10742 * Invoke as decorator.
10743 */
10744 <T extends Type<any>>(type: T): T;
10745 (target: Object, propertyKey?: string | symbol, parameterIndex?: number): void;
10746 (target: unknown, context: unknown): void;
10747}
10748
10749declare type TypeOrFactory<T> = T | (() => T);
10750
10751/**
10752 * Configures the `Injector` to return an instance of `Type` when `Type' is used as the token.
10753 *
10754 * Create an instance by invoking the `new` operator and supplying additional arguments.
10755 * This form is a short form of `TypeProvider`;
10756 *
10757 * For more details, see the ["Dependency Injection Guide"](guide/dependency-injection).
10758 *
10759 * @usageNotes
10760 *
10761 * {@example core/di/ts/provider_spec.ts region='TypeProvider'}
10762 *
10763 * @publicApi
10764 */
10765export declare interface TypeProvider extends Type<any> {
10766}
10767
10768
10769/**
10770 * Execute an arbitrary function in a non-reactive (non-tracking) context. The executed function
10771 * can, optionally, return a value.
10772 */
10773export declare function untracked<T>(nonReactiveReadsFn: () => T): T;
10774
10775/**
10776 * A comparison function which can determine if two values are equal.
10777 */
10778export declare type ValueEqualityFn<T> = (a: T, b: T) => boolean;
10779
10780/**
10781 * Configures the `Injector` to return a value for a token.
10782 * @see ["Dependency Injection Guide"](guide/dependency-injection).
10783 *
10784 * @usageNotes
10785 *
10786 * ### Example
10787 *
10788 * {@example core/di/ts/provider_spec.ts region='ValueProvider'}
10789 *
10790 * ### Multi-value example
10791 *
10792 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
10793 *
10794 * @publicApi
10795 */
10796export declare interface ValueProvider extends ValueSansProvider {
10797 /**
10798 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
10799 */
10800 provide: any;
10801 /**
10802 * When true, injector returns an array of instances. This is useful to allow multiple
10803 * providers spread across many files to provide configuration information to a common token.
10804 */
10805 multi?: boolean;
10806}
10807
10808/**
10809 * Configures the `Injector` to return a value for a token.
10810 * Base for `ValueProvider` decorator.
10811 *
10812 * @publicApi
10813 */
10814export declare interface ValueSansProvider {
10815 /**
10816 * The value to inject.
10817 */
10818 useValue: any;
10819}
10820
10821/**
10822 * @publicApi
10823 */
10824export declare const VERSION: Version;
10825
10826
10827/**
10828 * @description Represents the version of Angular
10829 *
10830 * @publicApi
10831 */
10832export declare class Version {
10833 full: string;
10834 readonly major: string;
10835 readonly minor: string;
10836 readonly patch: string;
10837 constructor(full: string);
10838}
10839
10840declare const VIEW_REFS = 8;
10841
10842/**
10843 * Type of the ViewChild metadata.
10844 *
10845 * @publicApi
10846 */
10847export declare type ViewChild = Query;
10848
10849/**
10850 * ViewChild decorator and metadata.
10851 *
10852 * @Annotation
10853 * @publicApi
10854 */
10855export declare const ViewChild: ViewChildDecorator;
10856
10857/**
10858 * Initializes a view child query.
10859 *
10860 * Consider using `viewChild.required` for queries that should always match.
10861 *
10862 * @usageNotes
10863 * Create a child query in your component by declaring a
10864 * class field and initializing it with the `viewChild()` function.
10865 *
10866 * ```ts
10867 * @Component({template: '<div #el></div><my-component #cmp />'})
10868 * export class TestComponent {
10869 * divEl = viewChild<ElementRef>('el'); // Signal<ElementRef|undefined>
10870 * divElRequired = viewChild.required<ElementRef>('el'); // Signal<ElementRef>
10871 * cmp = viewChild(MyComponent); // Signal<MyComponent|undefined>
10872 * cmpRequired = viewChild.required(MyComponent); // Signal<MyComponent>
10873 * }
10874 * ```
10875 *
10876 * @developerPreview
10877 */
10878export declare const viewChild: ViewChildFunction;
10879
10880/**
10881 * Type of the ViewChild decorator / constructor function.
10882 *
10883 * @see {@link ViewChild}
10884 * @publicApi
10885 */
10886export declare interface ViewChildDecorator {
10887 /**
10888 * @description
10889 * Property decorator that configures a view query.
10890 * The change detector looks for the first element or the directive matching the selector
10891 * in the view DOM. If the view DOM changes, and a new child matches the selector,
10892 * the property is updated.
10893 *
10894 * **Metadata Properties**:
10895 *
10896 * * **selector** - The directive type or the name used for querying.
10897 * * **read** - Used to read a different token from the queried elements.
10898 * * **static** - `true` to resolve query results before change detection runs,
10899 * `false` to resolve after change detection. Defaults to `false`.
10900 *
10901 *
10902 * The following selectors are supported.
10903 * * Any class with the `@Component` or `@Directive` decorator
10904 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
10905 * with `@ViewChild('cmp')`)
10906 * * Any provider defined in the child component tree of the current component (e.g.
10907 * `@ViewChild(SomeService) someService: SomeService`)
10908 * * Any provider defined through a string token (e.g. `@ViewChild('someToken') someTokenVal:
10909 * any`)
10910 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ViewChild(TemplateRef)
10911 * template;`)
10912 *
10913 * The following values are supported by `read`:
10914 * * Any class with the `@Component` or `@Directive` decorator
10915 * * Any provider defined on the injector of the component that is matched by the `selector` of
10916 * this query
10917 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
10918 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
10919 *
10920 * Difference between dynamic and static queries:
10921 * * Dynamic queries \(`static: false`\) - The query resolves before the `ngAfterViewInit()`
10922 * callback is called. The result will be updated for changes to your view, such as changes to
10923 * `ngIf` and `ngFor` blocks.
10924 * * Static queries \(`static: true`\) - The query resolves once
10925 * the view has been created, but before change detection runs (before the `ngOnInit()` callback
10926 * is called). The result, though, will never be updated to reflect changes to your view, such as
10927 * changes to `ngIf` and `ngFor` blocks.
10928 *
10929 * @usageNotes
10930 *
10931 * ### Example 1
10932 *
10933 * {@example core/di/ts/viewChild/view_child_example.ts region='Component'}
10934 *
10935 * ### Example 2
10936 *
10937 * {@example core/di/ts/viewChild/view_child_howto.ts region='HowTo'}
10938 *
10939 * @Annotation
10940 */
10941 (selector: ProviderToken<unknown> | Function | string, opts?: {
10942 read?: any;
10943 static?: boolean;
10944 }): any;
10945 new (selector: ProviderToken<unknown> | Function | string, opts?: {
10946 read?: any;
10947 static?: boolean;
10948 }): ViewChild;
10949}
10950
10951/**
10952 * Type of the `viewChild` function. The viewChild function creates a singular view query.
10953 *
10954 * It is a special function that also provides access to required query results via the `.required`
10955 * property.
10956 *
10957 * @developerPreview
10958 */
10959export declare interface ViewChildFunction {
10960 /**
10961 * Initializes a view child query. Consider using `viewChild.required` for queries that should
10962 * always match.
10963 *
10964 * @developerPreview
10965 */
10966 <LocatorT>(locator: ProviderToken<LocatorT> | string): Signal<LocatorT | undefined>;
10967 <LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
10968 read: ProviderToken<ReadT>;
10969 }): Signal<ReadT | undefined>;
10970 /**
10971 * Initializes a view child query that is expected to always match an element.
10972 *
10973 * @developerPreview
10974 */
10975 required: {
10976 <LocatorT>(locator: ProviderToken<LocatorT> | string): Signal<LocatorT>;
10977 <LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
10978 read: ProviderToken<ReadT>;
10979 }): Signal<ReadT>;
10980 };
10981}
10982
10983/**
10984 * Type of the ViewChildren metadata.
10985 *
10986 * @publicApi
10987 */
10988export declare type ViewChildren = Query;
10989
10990/**
10991 * ViewChildren decorator and metadata.
10992 *
10993 * @Annotation
10994 * @publicApi
10995 */
10996export declare const ViewChildren: ViewChildrenDecorator;
10997
10998export declare function viewChildren<LocatorT>(locator: ProviderToken<LocatorT> | string): Signal<ReadonlyArray<LocatorT>>;
10999
11000export declare function viewChildren<LocatorT, ReadT>(locator: ProviderToken<LocatorT> | string, opts: {
11001 read: ProviderToken<ReadT>;
11002}): Signal<ReadonlyArray<ReadT>>;
11003
11004/**
11005 * Type of the ViewChildren decorator / constructor function.
11006 *
11007 * @see {@link ViewChildren}
11008 *
11009 * @publicApi
11010 */
11011export declare interface ViewChildrenDecorator {
11012 /**
11013 * @description
11014 * Property decorator that configures a view query.
11015 *
11016 * Use to get the `QueryList` of elements or directives from the view DOM.
11017 * Any time a child element is added, removed, or moved, the query list will be updated,
11018 * and the changes observable of the query list will emit a new value.
11019 *
11020 * View queries are set before the `ngAfterViewInit` callback is called.
11021 *
11022 * **Metadata Properties**:
11023 *
11024 * * **selector** - The directive type or the name used for querying.
11025 * * **read** - Used to read a different token from the queried elements.
11026 * * **emitDistinctChangesOnly** - The ` QueryList#changes` observable will emit new values only
11027 * if the QueryList result has changed. When `false` the `changes` observable might emit even
11028 * if the QueryList has not changed.
11029 * ** Note: *** This config option is **deprecated**, it will be permanently set to `true` and
11030 * removed in future versions of Angular.
11031 *
11032 * The following selectors are supported.
11033 * * Any class with the `@Component` or `@Directive` decorator
11034 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
11035 * with `@ViewChildren('cmp')`)
11036 * * Any provider defined in the child component tree of the current component (e.g.
11037 * `@ViewChildren(SomeService) someService!: SomeService`)
11038 * * Any provider defined through a string token (e.g. `@ViewChildren('someToken')
11039 * someTokenVal!: any`)
11040 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ViewChildren(TemplateRef)
11041 * template;`)
11042 *
11043 * In addition, multiple string selectors can be separated with a comma (e.g.
11044 * `@ViewChildren('cmp1,cmp2')`)
11045 *
11046 * The following values are supported by `read`:
11047 * * Any class with the `@Component` or `@Directive` decorator
11048 * * Any provider defined on the injector of the component that is matched by the `selector` of
11049 * this query
11050 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
11051 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
11052 *
11053 * @usageNotes
11054 *
11055 * {@example core/di/ts/viewChildren/view_children_howto.ts region='HowTo'}
11056 *
11057 * ### Another example
11058 *
11059 * {@example core/di/ts/viewChildren/view_children_example.ts region='Component'}
11060 *
11061 * @Annotation
11062 */
11063 (selector: ProviderToken<unknown> | Function | string, opts?: {
11064 read?: any;
11065 emitDistinctChangesOnly?: boolean;
11066 }): any;
11067 new (selector: ProviderToken<unknown> | Function | string, opts?: {
11068 read?: any;
11069 emitDistinctChangesOnly?: boolean;
11070 }): ViewChildren;
11071}
11072
11073/**
11074 * Represents a container where one or more views can be attached to a component.
11075 *
11076 * Can contain *host views* (created by instantiating a
11077 * component with the `createComponent()` method), and *embedded views*
11078 * (created by instantiating a `TemplateRef` with the `createEmbeddedView()` method).
11079 *
11080 * A view container instance can contain other view containers,
11081 * creating a [view hierarchy](guide/glossary#view-hierarchy).
11082 *
11083 * @usageNotes
11084 *
11085 * The example below demonstrates how the `createComponent` function can be used
11086 * to create an instance of a ComponentRef dynamically and attach it to an ApplicationRef,
11087 * so that it gets included into change detection cycles.
11088 *
11089 * Note: the example uses standalone components, but the function can also be used for
11090 * non-standalone components (declared in an NgModule) as well.
11091 *
11092 * ```typescript
11093 * @Component({
11094 * standalone: true,
11095 * selector: 'dynamic',
11096 * template: `<span>This is a content of a dynamic component.</span>`,
11097 * })
11098 * class DynamicComponent {
11099 * vcr = inject(ViewContainerRef);
11100 * }
11101 *
11102 * @Component({
11103 * standalone: true,
11104 * selector: 'app',
11105 * template: `<main>Hi! This is the main content.</main>`,
11106 * })
11107 * class AppComponent {
11108 * vcr = inject(ViewContainerRef);
11109 *
11110 * ngAfterViewInit() {
11111 * const compRef = this.vcr.createComponent(DynamicComponent);
11112 * compRef.changeDetectorRef.detectChanges();
11113 * }
11114 * }
11115 * ```
11116 *
11117 * @see {@link ComponentRef}
11118 * @see {@link EmbeddedViewRef}
11119 *
11120 * @publicApi
11121 */
11122export declare abstract class ViewContainerRef {
11123 /**
11124 * Anchor element that specifies the location of this container in the containing view.
11125 * Each view container can have only one anchor element, and each anchor element
11126 * can have only a single view container.
11127 *
11128 * Root elements of views attached to this container become siblings of the anchor element in
11129 * the rendered view.
11130 *
11131 * Access the `ViewContainerRef` of an element by placing a `Directive` injected
11132 * with `ViewContainerRef` on the element, or use a `ViewChild` query.
11133 *
11134 * <!-- TODO: rename to anchorElement -->
11135 */
11136 abstract get element(): ElementRef;
11137 /**
11138 * The [dependency injector](guide/glossary#injector) for this view container.
11139 */
11140 abstract get injector(): Injector;
11141 /** @deprecated No replacement */
11142 abstract get parentInjector(): Injector;
11143 /**
11144 * Destroys all views in this container.
11145 */
11146 abstract clear(): void;
11147 /**
11148 * Retrieves a view from this container.
11149 * @param index The 0-based index of the view to retrieve.
11150 * @returns The `ViewRef` instance, or null if the index is out of range.
11151 */
11152 abstract get(index: number): ViewRef | null;
11153 /**
11154 * Reports how many views are currently attached to this container.
11155 * @returns The number of views.
11156 */
11157 abstract get length(): number;
11158 /**
11159 * Instantiates an embedded view and inserts it
11160 * into this container.
11161 * @param templateRef The HTML template that defines the view.
11162 * @param context The data-binding context of the embedded view, as declared
11163 * in the `<ng-template>` usage.
11164 * @param options Extra configuration for the created view. Includes:
11165 * * index: The 0-based index at which to insert the new view into this container.
11166 * If not specified, appends the new view as the last entry.
11167 * * injector: Injector to be used within the embedded view.
11168 *
11169 * @returns The `ViewRef` instance for the newly created view.
11170 */
11171 abstract createEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, options?: {
11172 index?: number;
11173 injector?: Injector;
11174 }): EmbeddedViewRef<C>;
11175 /**
11176 * Instantiates an embedded view and inserts it
11177 * into this container.
11178 * @param templateRef The HTML template that defines the view.
11179 * @param context The data-binding context of the embedded view, as declared
11180 * in the `<ng-template>` usage.
11181 * @param index The 0-based index at which to insert the new view into this container.
11182 * If not specified, appends the new view as the last entry.
11183 *
11184 * @returns The `ViewRef` instance for the newly created view.
11185 */
11186 abstract createEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, index?: number): EmbeddedViewRef<C>;
11187 /**
11188 * Instantiates a single component and inserts its host view into this container.
11189 *
11190 * @param componentType Component Type to use.
11191 * @param options An object that contains extra parameters:
11192 * * index: the index at which to insert the new component's host view into this container.
11193 * If not specified, appends the new view as the last entry.
11194 * * injector: the injector to use as the parent for the new component.
11195 * * ngModuleRef: an NgModuleRef of the component's NgModule, you should almost always provide
11196 * this to ensure that all expected providers are available for the component
11197 * instantiation.
11198 * * environmentInjector: an EnvironmentInjector which will provide the component's environment.
11199 * you should almost always provide this to ensure that all expected providers
11200 * are available for the component instantiation. This option is intended to
11201 * replace the `ngModuleRef` parameter.
11202 * * projectableNodes: list of DOM nodes that should be projected through
11203 * [`<ng-content>`](api/core/ng-content) of the new component instance.
11204 *
11205 * @returns The new `ComponentRef` which contains the component instance and the host view.
11206 */
11207 abstract createComponent<C>(componentType: Type<C>, options?: {
11208 index?: number;
11209 injector?: Injector;
11210 ngModuleRef?: NgModuleRef<unknown>;
11211 environmentInjector?: EnvironmentInjector | NgModuleRef<unknown>;
11212 projectableNodes?: Node[][];
11213 }): ComponentRef<C>;
11214 /**
11215 * Instantiates a single component and inserts its host view into this container.
11216 *
11217 * @param componentFactory Component factory to use.
11218 * @param index The index at which to insert the new component's host view into this container.
11219 * If not specified, appends the new view as the last entry.
11220 * @param injector The injector to use as the parent for the new component.
11221 * @param projectableNodes List of DOM nodes that should be projected through
11222 * [`<ng-content>`](api/core/ng-content) of the new component instance.
11223 * @param ngModuleRef An instance of the NgModuleRef that represent an NgModule.
11224 * This information is used to retrieve corresponding NgModule injector.
11225 *
11226 * @returns The new `ComponentRef` which contains the component instance and the host view.
11227 *
11228 * @deprecated Angular no longer requires component factories to dynamically create components.
11229 * Use different signature of the `createComponent` method, which allows passing
11230 * Component class directly.
11231 */
11232 abstract createComponent<C>(componentFactory: ComponentFactory<C>, index?: number, injector?: Injector, projectableNodes?: any[][], environmentInjector?: EnvironmentInjector | NgModuleRef<any>): ComponentRef<C>;
11233 /**
11234 * Inserts a view into this container.
11235 * @param viewRef The view to insert.
11236 * @param index The 0-based index at which to insert the view.
11237 * If not specified, appends the new view as the last entry.
11238 * @returns The inserted `ViewRef` instance.
11239 *
11240 */
11241 abstract insert(viewRef: ViewRef, index?: number): ViewRef;
11242 /**
11243 * Moves a view to a new location in this container.
11244 * @param viewRef The view to move.
11245 * @param index The 0-based index of the new location.
11246 * @returns The moved `ViewRef` instance.
11247 */
11248 abstract move(viewRef: ViewRef, currentIndex: number): ViewRef;
11249 /**
11250 * Returns the index of a view within the current container.
11251 * @param viewRef The view to query.
11252 * @returns The 0-based index of the view's position in this container,
11253 * or `-1` if this container doesn't contain the view.
11254 */
11255 abstract indexOf(viewRef: ViewRef): number;
11256 /**
11257 * Destroys a view attached to this container
11258 * @param index The 0-based index of the view to destroy.
11259 * If not specified, the last view in the container is removed.
11260 */
11261 abstract remove(index?: number): void;
11262 /**
11263 * Detaches a view from this container without destroying it.
11264 * Use along with `insert()` to move a view within the current container.
11265 * @param index The 0-based index of the view to detach.
11266 * If not specified, the last view in the container is detached.
11267 */
11268 abstract detach(index?: number): ViewRef | null;
11269}
11270
11271
11272/**
11273 * Defines the CSS styles encapsulation policies for the {@link Component} decorator's
11274 * `encapsulation` option.
11275 *
11276 * See {@link Component#encapsulation encapsulation}.
11277 *
11278 * @usageNotes
11279 * ### Example
11280 *
11281 * {@example core/ts/metadata/encapsulation.ts region='longform'}
11282 *
11283 * @publicApi
11284 */
11285export declare enum ViewEncapsulation {
11286 /**
11287 * Emulates a native Shadow DOM encapsulation behavior by adding a specific attribute to the
11288 * component's host element and applying the same attribute to all the CSS selectors provided
11289 * via {@link Component#styles styles} or {@link Component#styleUrls styleUrls}.
11290 *
11291 * This is the default option.
11292 */
11293 Emulated = 0,
11294 /**
11295 * Doesn't provide any sort of CSS style encapsulation, meaning that all the styles provided
11296 * via {@link Component#styles styles} or {@link Component#styleUrls styleUrls} are applicable
11297 * to any HTML element of the application regardless of their host Component.
11298 */
11299 None = 2,
11300 /**
11301 * Uses the browser's native Shadow DOM API to encapsulate CSS styles, meaning that it creates
11302 * a ShadowRoot for the component's host element which is then used to encapsulate
11303 * all the Component's styling.
11304 */
11305 ShadowDom = 3
11306}
11307
11308declare enum ViewEncapsulation_2 {
11309 Emulated = 0,
11310 None = 2,
11311 ShadowDom = 3
11312}
11313
11314/**
11315 * Definition of what a view queries function should look like.
11316 */
11317declare type ViewQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void;
11318
11319/**
11320 * Represents an Angular [view](guide/glossary#view "Definition").
11321 *
11322 * @see {@link ChangeDetectorRef#usage-notes Change detection usage}
11323 *
11324 * @publicApi
11325 */
11326export declare abstract class ViewRef extends ChangeDetectorRef {
11327 /**
11328 * Destroys this view and all of the data structures associated with it.
11329 */
11330 abstract destroy(): void;
11331 /**
11332 * Reports whether this view has been destroyed.
11333 * @returns True after the `destroy()` method has been called, false otherwise.
11334 */
11335 abstract get destroyed(): boolean;
11336 /**
11337 * A lifecycle hook that provides additional developer-defined cleanup
11338 * functionality for views.
11339 * @param callback A handler function that cleans up developer-defined data
11340 * associated with a view. Called when the `destroy()` method is invoked.
11341 */
11342 abstract onDestroy(callback: Function): void;
11343}
11344
11345/**
11346 * Interface for tracking root `ViewRef`s in `ApplicationRef`.
11347 *
11348 * NOTE: Importing `ApplicationRef` here directly creates circular dependency, which is why we have
11349 * a subset of the `ApplicationRef` interface `ViewRefTracker` here.
11350 */
11351declare interface ViewRefTracker {
11352 detachView(viewRef: ViewRef): void;
11353}
11354
11355/** Symbol used distinguish `WritableSignal` from other non-writable signals and functions. */
11356declare const WRITABLE_SIGNAL: unique symbol;
11357
11358/**
11359 * A `Signal` with a value that can be mutated via a setter interface.
11360 */
11361export declare interface WritableSignal<T> extends Signal<T> {
11362 [WRITABLE_SIGNAL]: T;
11363 /**
11364 * Directly set the signal to a new value, and notify any dependents.
11365 */
11366 set(value: T): void;
11367 /**
11368 * Update the value of the signal based on its current value, and
11369 * notify any dependents.
11370 */
11371 update(updateFn: (value: T) => T): void;
11372 /**
11373 * Returns a readonly version of this signal. Readonly signals can be accessed to read their value
11374 * but can't be changed using set or update methods. The readonly signals do _not_ have
11375 * any built-in mechanism that would prevent deep-mutation of their value.
11376 */
11377 asReadonly(): Signal<T>;
11378}
11379
11380/**
11381 * Sanitizes the given unsafe, untrusted HTML fragment, and returns HTML text that is safe to add to
11382 * the DOM in a browser environment.
11383 */
11384export declare function ɵ_sanitizeHtml(defaultDoc: any, unsafeHtmlInput: string): TrustedHTML | string;
11385
11386
11387export declare function ɵ_sanitizeUrl(url: string): string;
11388
11389/**
11390 * Implements core timing for `afterRender` and `afterNextRender` events.
11391 * Delegates to an optional `AfterRenderCallbackHandler` for implementation.
11392 */
11393export declare class ɵAfterRenderEventManager {
11394 /**
11395 * Executes internal and user-provided callbacks.
11396 */
11397 execute(): void;
11398 executeInternalCallbacks(): void;
11399 ngOnDestroy(): void;
11400 /** @nocollapse */
11401 static ɵprov: unknown;
11402}
11403
11404/**
11405 * Internal token to indicate whether having multiple bootstrapped platform should be allowed (only
11406 * one bootstrapped platform is allowed by default). This token helps to support SSR scenarios.
11407 */
11408export declare const ɵALLOW_MULTIPLE_PLATFORMS: InjectionToken<boolean>;
11409
11410export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Html): value is ɵSafeHtml;
11411
11412export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.ResourceUrl): value is ɵSafeResourceUrl;
11413
11414export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Script): value is ɵSafeScript;
11415
11416export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Style): value is ɵSafeStyle;
11417
11418export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Url): value is ɵSafeUrl;
11419
11420export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType): boolean;
11421
11422/**
11423 * This enum is meant to be used by `ɵtype` properties of the different renderers implemented
11424 * by the framework
11425 *
11426 * We choose to not add `ɵtype` to `Renderer2` to no expose it to the public API.
11427 */
11428export declare const enum ɵAnimationRendererType {
11429 Regular = 0,
11430 Delegated = 1
11431}
11432
11433/**
11434 * Annotates all components bootstrapped in a given ApplicationRef
11435 * with info needed for hydration.
11436 *
11437 * @param appRef An instance of an ApplicationRef.
11438 * @param doc A reference to the current Document instance.
11439 */
11440export declare function ɵannotateForHydration(appRef: ApplicationRef, doc: Document): void;
11441
11442
11443/**
11444 * A set of marker values to be used in the attributes arrays. These markers indicate that some
11445 * items are not regular attributes and the processing should be adapted accordingly.
11446 */
11447export declare const enum ɵAttributeMarker {
11448 /**
11449 * An implicit marker which indicates that the value in the array are of `attributeKey`,
11450 * `attributeValue` format.
11451 *
11452 * NOTE: This is implicit as it is the type when no marker is present in array. We indicate that
11453 * it should not be present at runtime by the negative number.
11454 */
11455 ImplicitAttributes = -1,
11456 /**
11457 * Marker indicates that the following 3 values in the attributes array are:
11458 * namespaceUri, attributeName, attributeValue
11459 * in that order.
11460 */
11461 NamespaceURI = 0,
11462 /**
11463 * Signals class declaration.
11464 *
11465 * Each value following `Classes` designates a class name to include on the element.
11466 * ## Example:
11467 *
11468 * Given:
11469 * ```
11470 * <div class="foo bar baz">...<d/vi>
11471 * ```
11472 *
11473 * the generated code is:
11474 * ```
11475 * var _c1 = [AttributeMarker.Classes, 'foo', 'bar', 'baz'];
11476 * ```
11477 */
11478 Classes = 1,
11479 /**
11480 * Signals style declaration.
11481 *
11482 * Each pair of values following `Styles` designates a style name and value to include on the
11483 * element.
11484 * ## Example:
11485 *
11486 * Given:
11487 * ```
11488 * <div style="width:100px; height:200px; color:red">...</div>
11489 * ```
11490 *
11491 * the generated code is:
11492 * ```
11493 * var _c1 = [AttributeMarker.Styles, 'width', '100px', 'height'. '200px', 'color', 'red'];
11494 * ```
11495 */
11496 Styles = 2,
11497 /**
11498 * Signals that the following attribute names were extracted from input or output bindings.
11499 *
11500 * For example, given the following HTML:
11501 *
11502 * ```
11503 * <div moo="car" [foo]="exp" (bar)="doSth()">
11504 * ```
11505 *
11506 * the generated code is:
11507 *
11508 * ```
11509 * var _c1 = ['moo', 'car', AttributeMarker.Bindings, 'foo', 'bar'];
11510 * ```
11511 */
11512 Bindings = 3,
11513 /**
11514 * Signals that the following attribute names were hoisted from an inline-template declaration.
11515 *
11516 * For example, given the following HTML:
11517 *
11518 * ```
11519 * <div *ngFor="let value of values; trackBy:trackBy" dirA [dirB]="value">
11520 * ```
11521 *
11522 * the generated code for the `template()` instruction would include:
11523 *
11524 * ```
11525 * ['dirA', '', AttributeMarker.Bindings, 'dirB', AttributeMarker.Template, 'ngFor', 'ngForOf',
11526 * 'ngForTrackBy', 'let-value']
11527 * ```
11528 *
11529 * while the generated code for the `element()` instruction inside the template function would
11530 * include:
11531 *
11532 * ```
11533 * ['dirA', '', AttributeMarker.Bindings, 'dirB']
11534 * ```
11535 */
11536 Template = 4,
11537 /**
11538 * Signals that the following attribute is `ngProjectAs` and its value is a parsed
11539 * `CssSelector`.
11540 *
11541 * For example, given the following HTML:
11542 *
11543 * ```
11544 * <h1 attr="value" ngProjectAs="[title]">
11545 * ```
11546 *
11547 * the generated code for the `element()` instruction would include:
11548 *
11549 * ```
11550 * ['attr', 'value', AttributeMarker.ProjectAs, ['', 'title', '']]
11551 * ```
11552 */
11553 ProjectAs = 5,
11554 /**
11555 * Signals that the following attribute will be translated by runtime i18n
11556 *
11557 * For example, given the following HTML:
11558 *
11559 * ```
11560 * <div moo="car" foo="value" i18n-foo [bar]="binding" i18n-bar>
11561 * ```
11562 *
11563 * the generated code is:
11564 *
11565 * ```
11566 * var _c1 = ['moo', 'car', AttributeMarker.I18n, 'foo', 'bar'];
11567 */
11568 I18n = 6
11569}
11570
11571/**
11572 * Mark `html` string as trusted.
11573 *
11574 * This function wraps the trusted string in `String` and brands it in a way which makes it
11575 * recognizable to {@link htmlSanitizer} to be trusted implicitly.
11576 *
11577 * @param trustedHtml `html` string which needs to be implicitly trusted.
11578 * @returns a `html` which has been branded to be implicitly trusted.
11579 */
11580export declare function ɵbypassSanitizationTrustHtml(trustedHtml: string): ɵSafeHtml;
11581
11582/**
11583 * Mark `url` string as trusted.
11584 *
11585 * This function wraps the trusted string in `String` and brands it in a way which makes it
11586 * recognizable to {@link resourceUrlSanitizer} to be trusted implicitly.
11587 *
11588 * @param trustedResourceUrl `url` string which needs to be implicitly trusted.
11589 * @returns a `url` which has been branded to be implicitly trusted.
11590 */
11591export declare function ɵbypassSanitizationTrustResourceUrl(trustedResourceUrl: string): ɵSafeResourceUrl;
11592
11593/**
11594 * Mark `script` string as trusted.
11595 *
11596 * This function wraps the trusted string in `String` and brands it in a way which makes it
11597 * recognizable to {@link scriptSanitizer} to be trusted implicitly.
11598 *
11599 * @param trustedScript `script` string which needs to be implicitly trusted.
11600 * @returns a `script` which has been branded to be implicitly trusted.
11601 */
11602export declare function ɵbypassSanitizationTrustScript(trustedScript: string): ɵSafeScript;
11603
11604/**
11605 * Mark `style` string as trusted.
11606 *
11607 * This function wraps the trusted string in `String` and brands it in a way which makes it
11608 * recognizable to {@link styleSanitizer} to be trusted implicitly.
11609 *
11610 * @param trustedStyle `style` string which needs to be implicitly trusted.
11611 * @returns a `style` hich has been branded to be implicitly trusted.
11612 */
11613export declare function ɵbypassSanitizationTrustStyle(trustedStyle: string): ɵSafeStyle;
11614
11615/**
11616 * Mark `url` string as trusted.
11617 *
11618 * This function wraps the trusted string in `String` and brands it in a way which makes it
11619 * recognizable to {@link urlSanitizer} to be trusted implicitly.
11620 *
11621 * @param trustedUrl `url` string which needs to be implicitly trusted.
11622 * @returns a `url` which has been branded to be implicitly trusted.
11623 */
11624export declare function ɵbypassSanitizationTrustUrl(trustedUrl: string): ɵSafeUrl;
11625
11626
11627export declare const enum ɵBypassType {
11628 Url = "URL",
11629 Html = "HTML",
11630 ResourceUrl = "ResourceURL",
11631 Script = "Script",
11632 Style = "Style"
11633}
11634
11635
11636/**
11637 * Injectable that is notified when an `LView` is made aware of changes to application state.
11638 */
11639export declare abstract class ɵChangeDetectionScheduler {
11640 abstract notify(): void;
11641}
11642
11643export declare function ɵclearResolutionOfComponentResourcesQueue(): Map<Type<any>, Component>;
11644
11645/**
11646 * Compile an Angular component according to its decorator metadata, and patch the resulting
11647 * component def (ɵcmp) onto the component type.
11648 *
11649 * Compilation may be asynchronous (due to the need to resolve URLs for the component template or
11650 * other resources, for example). In the event that compilation is not immediate, `compileComponent`
11651 * will enqueue resource resolution into a global queue and will fail to return the `ɵcmp`
11652 * until the global queue has been resolved with a call to `resolveComponentResources`.
11653 */
11654export declare function ɵcompileComponent(type: Type<any>, metadata: Component): void;
11655
11656/**
11657 * Compile an Angular directive according to its decorator metadata, and patch the resulting
11658 * directive def onto the component type.
11659 *
11660 * In the event that compilation is not immediate, `compileDirective` will return a `Promise` which
11661 * will resolve when compilation completes and the directive becomes usable.
11662 */
11663export declare function ɵcompileDirective(type: Type<any>, directive: Directive | null): void;
11664
11665/**
11666 * Compiles a module in JIT mode.
11667 *
11668 * This function automatically gets called when a class has a `@NgModule` decorator.
11669 */
11670export declare function ɵcompileNgModule(moduleType: Type<any>, ngModule?: NgModule): void;
11671
11672/**
11673 * Compiles and adds the `ɵmod`, `ɵfac` and `ɵinj` properties to the module class.
11674 *
11675 * It's possible to compile a module via this API which will allow duplicate declarations in its
11676 * root.
11677 */
11678export declare function ɵcompileNgModuleDefs(moduleType: ɵNgModuleType, ngModule: NgModule, allowDuplicateDeclarationsInRoot?: boolean): void;
11679
11680export declare function ɵcompileNgModuleFactory<M>(injector: Injector, options: CompilerOptions, moduleType: Type<M>): Promise<NgModuleFactory<M>>;
11681
11682export declare function ɵcompilePipe(type: Type<any>, meta: Pipe): void;
11683
11684/**
11685 * Partial metadata for a given component instance.
11686 * This information might be useful for debugging purposes or tooling.
11687 * Currently the following fields are available:
11688 * - inputs
11689 * - outputs
11690 * - encapsulation
11691 * - changeDetection
11692 *
11693 * @publicApi
11694 */
11695export declare interface ɵComponentDebugMetadata extends DirectiveDebugMetadata {
11696 encapsulation: ViewEncapsulation;
11697 changeDetection: ChangeDetectionStrategy;
11698}
11699
11700/**
11701 * Runtime link information for Components.
11702 *
11703 * This is an internal data structure used by the render to link
11704 * components into templates.
11705 *
11706 * NOTE: Always use `defineComponent` function to create this object,
11707 * never create the object directly since the shape of this object
11708 * can change between versions.
11709 *
11710 * See: {@link defineComponent}
11711 */
11712export declare interface ɵComponentDef<T> extends ɵDirectiveDef<T> {
11713 /**
11714 * Unique ID for the component. Used in view encapsulation and
11715 * to keep track of the injector in standalone components.
11716 */
11717 readonly id: string;
11718 /**
11719 * The View template of the component.
11720 */
11721 readonly template: ComponentTemplate<T>;
11722 /** Constants associated with the component's view. */
11723 readonly consts: TConstantsOrFactory | null;
11724 /**
11725 * An array of `ngContent[selector]` values that were found in the template.
11726 */
11727 readonly ngContentSelectors?: string[];
11728 /**
11729 * A set of styles that the component needs to be present for component to render correctly.
11730 */
11731 readonly styles: string[];
11732 /**
11733 * The number of nodes, local refs, and pipes in this component template.
11734 *
11735 * Used to calculate the length of the component's LView array, so we
11736 * can pre-fill the array and set the binding start index.
11737 */
11738 readonly decls: number;
11739 /**
11740 * The number of bindings in this component template (including pure fn bindings).
11741 *
11742 * Used to calculate the length of the component's LView array, so we
11743 * can pre-fill the array and set the host binding start index.
11744 */
11745 readonly vars: number;
11746 /**
11747 * Query-related instructions for a component.
11748 */
11749 viewQuery: ViewQueriesFunction<T> | null;
11750 /**
11751 * The view encapsulation type, which determines how styles are applied to
11752 * DOM elements. One of
11753 * - `Emulated` (default): Emulate native scoping of styles.
11754 * - `Native`: Use the native encapsulation mechanism of the renderer.
11755 * - `ShadowDom`: Use modern [ShadowDOM](https://w3c.github.io/webcomponents/spec/shadow/) and
11756 * create a ShadowRoot for component's host element.
11757 * - `None`: Do not provide any template or style encapsulation.
11758 */
11759 readonly encapsulation: ViewEncapsulation;
11760 /**
11761 * Defines arbitrary developer-defined data to be stored on a renderer instance.
11762 * This is useful for renderers that delegate to other renderers.
11763 */
11764 readonly data: {
11765 [kind: string]: any;
11766 animation?: any[];
11767 };
11768 /** Whether or not this component's ChangeDetectionStrategy is OnPush */
11769 readonly onPush: boolean;
11770 /** Whether or not this component is signal-based. */
11771 readonly signals: boolean;
11772 /**
11773 * Registry of directives and components that may be found in this view.
11774 *
11775 * The property is either an array of `DirectiveDef`s or a function which returns the array of
11776 * `DirectiveDef`s. The function is necessary to be able to support forward declarations.
11777 */
11778 directiveDefs: DirectiveDefListOrFactory | null;
11779 /**
11780 * Registry of pipes that may be found in this view.
11781 *
11782 * The property is either an array of `PipeDefs`s or a function which returns the array of
11783 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
11784 */
11785 pipeDefs: PipeDefListOrFactory | null;
11786 /**
11787 * Unfiltered list of all dependencies of a component, or `null` if none.
11788 */
11789 dependencies: TypeOrFactory<DependencyTypeList> | null;
11790 /**
11791 * The set of schemas that declare elements to be allowed in the component's template.
11792 */
11793 schemas: SchemaMetadata[] | null;
11794 /**
11795 * Ivy runtime uses this place to store the computed tView for the component. This gets filled on
11796 * the first run of component.
11797 */
11798 tView: TView | null;
11799 /**
11800 * A function added by the {@link ɵɵStandaloneFeature} and used by the framework to create
11801 * standalone injectors.
11802 */
11803 getStandaloneInjector: ((parentInjector: EnvironmentInjector) => EnvironmentInjector | null) | null;
11804 /**
11805 * Used to store the result of `noSideEffects` function so that it is not removed by closure
11806 * compiler. The property should never be read.
11807 */
11808 readonly _?: unknown;
11809}
11810
11811/**
11812 * A subclass of `Type` which has a static `ɵcmp`:`ComponentDef` field making it
11813 * consumable for rendering.
11814 */
11815export declare interface ɵComponentType<T> extends Type<T> {
11816 ɵcmp: unknown;
11817}
11818
11819export declare class ɵConsole {
11820 log(message: string): void;
11821 warn(message: string): void;
11822 static ɵfac: i0.ɵɵFactoryDeclaration<ɵConsole, never>;
11823 static ɵprov: i0.ɵɵInjectableDeclaration<ɵConsole>;
11824}
11825
11826/**
11827 * Size of LContainer's header. Represents the index after which all views in the
11828 * container will be inserted. We need to keep a record of current views so we know
11829 * which views are already in the DOM (and don't need to be re-added) and so we can
11830 * remove views from the DOM when they are no longer required.
11831 */
11832export declare const ɵCONTAINER_HEADER_OFFSET = 10;
11833
11834export declare function ɵconvertToBitFlags(flags: InjectOptions | InjectFlags | undefined): InjectFlags | undefined;
11835
11836/**
11837 * Create a new `Injector` which is configured using a `defType` of `InjectorType<any>`s.
11838 */
11839export declare function ɵcreateInjector(defType: any, parent?: Injector | null, additionalProviders?: Array<Provider | StaticProvider> | null, name?: string): Injector;
11840
11841/**
11842 * A list of CssSelectors.
11843 *
11844 * A directive or component can have multiple selectors. This type is used for
11845 * directive defs so any of the selectors in the list will match that directive.
11846 *
11847 * Original: 'form, [ngForm]'
11848 * Parsed: [['form'], ['', 'ngForm', '']]
11849 */
11850export declare type ɵCssSelectorList = CssSelector[];
11851
11852/**
11853 * Index of each value in currency data (used to describe CURRENCIES_EN in currencies.ts)
11854 */
11855export declare const enum ɵCurrencyIndex {
11856 Symbol = 0,
11857 SymbolNarrow = 1,
11858 NbOfDigits = 2
11859}
11860
11861/**
11862 * The locale id that the application is using by default (for translations and ICU expressions).
11863 */
11864export declare const ɵDEFAULT_LOCALE_ID = "en-US";
11865
11866export declare const ɵdefaultIterableDiffers: IterableDiffers;
11867
11868export declare const ɵdefaultKeyValueDiffers: KeyValueDiffers;
11869
11870/**
11871 * **INTERNAL**, token used for configuring defer block behavior.
11872 */
11873export declare const ɵDEFER_BLOCK_CONFIG: InjectionToken<ɵDeferBlockConfig>;
11874
11875/**
11876 * **INTERNAL**, avoid referencing it in application code.
11877 * *
11878 * Injector token that allows to provide `DeferBlockDependencyInterceptor` class
11879 * implementation.
11880 *
11881 * This token is only injected in devMode
11882 */
11883export declare const ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR: InjectionToken<ɵDeferBlockDependencyInterceptor>;
11884
11885/**
11886 * Options for configuring defer blocks behavior.
11887 * @publicApi
11888 * @developerPreview
11889 */
11890export declare enum ɵDeferBlockBehavior {
11891 /**
11892 * Manual triggering mode for defer blocks. Provides control over when defer blocks render
11893 * and which state they render.
11894 */
11895 Manual = 0,
11896 /**
11897 * Playthrough mode for defer blocks. This mode behaves like defer blocks would in a browser.
11898 * This is the default behavior in test environments.
11899 */
11900 Playthrough = 1
11901}
11902
11903/**
11904 * Internal structure used for configuration of defer block behavior.
11905 * */
11906export declare interface ɵDeferBlockConfig {
11907 behavior: ɵDeferBlockBehavior;
11908}
11909
11910/**
11911 * **INTERNAL**, avoid referencing it in application code.
11912 *
11913 * Describes a helper class that allows to intercept a call to retrieve current
11914 * dependency loading function and replace it with a different implementation.
11915 * This interceptor class is needed to allow testing blocks in different states
11916 * by simulating loading response.
11917 */
11918export declare interface ɵDeferBlockDependencyInterceptor {
11919 /**
11920 * Invoked for each defer block when dependency loading function is accessed.
11921 */
11922 intercept(dependencyFn: DependencyResolverFn | null): DependencyResolverFn | null;
11923 /**
11924 * Allows to configure an interceptor function.
11925 */
11926 setInterceptor(interceptorFn: (current: DependencyResolverFn) => DependencyResolverFn): void;
11927}
11928
11929/**
11930 * Defer block instance for testing.
11931 */
11932export declare interface ɵDeferBlockDetails {
11933 lContainer: LContainer;
11934 lView: LView;
11935 tNode: TNode;
11936 tDetails: TDeferBlockDetails;
11937}
11938
11939/**
11940 * Describes the current state of this defer block instance.
11941 *
11942 * @publicApi
11943 * @developerPreview
11944 */
11945export declare enum ɵDeferBlockState {
11946 /** The placeholder block content is rendered */
11947 Placeholder = 0,
11948 /** The loading block content is rendered */
11949 Loading = 1,
11950 /** The main content block content is rendered */
11951 Complete = 2,
11952 /** The error block content is rendered */
11953 Error = 3
11954}
11955
11956/** The deps tracker to be used in the current Angular app in dev mode. */
11957export declare const ɵdepsTracker: DepsTracker;
11958
11959
11960export declare function ɵdevModeEqual(a: any, b: any): boolean;
11961
11962/**
11963 * Runtime link information for Directives.
11964 *
11965 * This is an internal data structure used by the render to link
11966 * directives into templates.
11967 *
11968 * NOTE: Always use `defineDirective` function to create this object,
11969 * never create the object directly since the shape of this object
11970 * can change between versions.
11971 *
11972 * @param Selector type metadata specifying the selector of the directive or component
11973 *
11974 * See: {@link defineDirective}
11975 */
11976export declare interface ɵDirectiveDef<T> {
11977 /**
11978 * A dictionary mapping the inputs' public name to their minified property names
11979 * (along with flags if there are any).
11980 */
11981 readonly inputs: {
11982 [P in keyof T]?: string | [minifiedName: string, flags: ɵɵInputFlags];
11983 };
11984 /**
11985 * A dictionary mapping the private names of inputs to their transformation functions.
11986 * Note: the private names are used for the keys, rather than the public ones, because public
11987 * names can be re-aliased in host directives which would invalidate the lookup.
11988 *
11989 * Note: Signal inputs will not have transforms captured here. This is because their
11990 * transform function is already integrated into the `InputSignal`.
11991 */
11992 readonly inputTransforms: {
11993 [classPropertyName: string]: InputTransformFunction;
11994 } | null;
11995 /**
11996 * Contains the raw input information produced by the compiler. Can be
11997 * used to do further processing after the `inputs` have been inverted.
11998 */
11999 readonly inputConfig: {
12000 [P in keyof T]?: string | [ɵɵInputFlags, string, string?, InputTransformFunction?];
12001 };
12002 /**
12003 * @deprecated This is only here because `NgOnChanges` incorrectly uses declared name instead of
12004 * public or minified name.
12005 */
12006 readonly declaredInputs: Record<string, string>;
12007 /**
12008 * A dictionary mapping the outputs' minified property names to their public API names, which
12009 * are their aliases if any, or their original unminified property names
12010 * (as in `@Output('alias') propertyName: any;`).
12011 */
12012 readonly outputs: {
12013 [P in keyof T]?: string;
12014 };
12015 /**
12016 * Function to create and refresh content queries associated with a given directive.
12017 */
12018 contentQueries: ContentQueriesFunction<T> | null;
12019 /**
12020 * Query-related instructions for a directive. Note that while directives don't have a
12021 * view and as such view queries won't necessarily do anything, there might be
12022 * components that extend the directive.
12023 */
12024 viewQuery: ViewQueriesFunction<T> | null;
12025 /**
12026 * Refreshes host bindings on the associated directive.
12027 */
12028 readonly hostBindings: HostBindingsFunction<T> | null;
12029 /**
12030 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
12031 *
12032 * Used to calculate the length of the component's LView array, so we
12033 * can pre-fill the array and set the host binding start index.
12034 */
12035 readonly hostVars: number;
12036 /**
12037 * Assign static attribute values to a host element.
12038 *
12039 * This property will assign static attribute values as well as class and style
12040 * values to a host element. Since attribute values can consist of different types of values, the
12041 * `hostAttrs` array must include the values in the following format:
12042 *
12043 * attrs = [
12044 * // static attributes (like `title`, `name`, `id`...)
12045 * attr1, value1, attr2, value,
12046 *
12047 * // a single namespace value (like `x:id`)
12048 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
12049 *
12050 * // another single namespace value (like `x:name`)
12051 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
12052 *
12053 * // a series of CSS classes that will be applied to the element (no spaces)
12054 * CLASSES_MARKER, class1, class2, class3,
12055 *
12056 * // a series of CSS styles (property + value) that will be applied to the element
12057 * STYLES_MARKER, prop1, value1, prop2, value2
12058 * ]
12059 *
12060 * All non-class and non-style attributes must be defined at the start of the list
12061 * first before all class and style values are set. When there is a change in value
12062 * type (like when classes and styles are introduced) a marker must be used to separate
12063 * the entries. The marker values themselves are set via entries found in the
12064 * [AttributeMarker] enum.
12065 */
12066 readonly hostAttrs: TAttributes | null;
12067 /** Token representing the directive. Used by DI. */
12068 readonly type: Type<T>;
12069 /** Function that resolves providers and publishes them into the DI system. */
12070 providersResolver: (<U extends T>(def: ɵDirectiveDef<U>, processProvidersFn?: ProcessProvidersFunction) => void) | null;
12071 /** The selectors that will be used to match nodes to this directive. */
12072 readonly selectors: ɵCssSelectorList;
12073 /**
12074 * Name under which the directive is exported (for use with local references in template)
12075 */
12076 readonly exportAs: string[] | null;
12077 /**
12078 * Whether this directive (or component) is standalone.
12079 */
12080 readonly standalone: boolean;
12081 /**
12082 * Whether this directive (or component) uses the signals authoring experience.
12083 */
12084 readonly signals: boolean;
12085 /**
12086 * Factory function used to create a new directive instance. Will be null initially.
12087 * Populated when the factory is first requested by directive instantiation logic.
12088 */
12089 readonly factory: FactoryFn<T> | null;
12090 /**
12091 * The features applied to this directive
12092 */
12093 readonly features: DirectiveDefFeature[] | null;
12094 /**
12095 * Info related to debugging/troubleshooting for this component. This info is only available in
12096 * dev mode.
12097 */
12098 debugInfo: ClassDebugInfo | null;
12099 /**
12100 * Function that will add the host directives to the list of matches during directive matching.
12101 * Patched onto the definition by the `HostDirectivesFeature`.
12102 * @param currentDef Definition that has been matched.
12103 * @param matchedDefs List of all matches for a specified node. Will be mutated to include the
12104 * host directives.
12105 * @param hostDirectiveDefs Mapping of directive definitions to their host directive
12106 * configuration. Host directives will be added to the map as they're being matched to the node.
12107 */
12108 findHostDirectiveDefs: ((currentDef: ɵDirectiveDef<unknown>, matchedDefs: ɵDirectiveDef<unknown>[], hostDirectiveDefs: HostDirectiveDefs) => void) | null;
12109 /** Additional directives to be applied whenever the directive has been matched. */
12110 hostDirectives: HostDirectiveDef[] | null;
12111 setInput: (<U extends T>(this: ɵDirectiveDef<U>, instance: U, inputSignalNode: null | InputSignalNode<unknown, unknown>, value: any, publicName: string, privateName: string) => void) | null;
12112}
12113
12114/**
12115 * A subclass of `Type` which has a static `ɵdir`:`DirectiveDef` field making it
12116 * consumable for rendering.
12117 */
12118export declare interface ɵDirectiveType<T> extends Type<T> {
12119 ɵdir: unknown;
12120 ɵfac: unknown;
12121}
12122
12123/**
12124 * A scheduler which manages the execution of effects.
12125 */
12126export declare abstract class ɵEffectScheduler {
12127 /**
12128 * Schedule the given effect to be executed at a later time.
12129 *
12130 * It is an error to attempt to execute any effects synchronously during a scheduling operation.
12131 */
12132 abstract scheduleEffect(e: SchedulableEffect): void;
12133 /**
12134 * Run any scheduled effects.
12135 */
12136 abstract flush(): void;
12137 /** @nocollapse */
12138 static ɵprov: unknown;
12139}
12140
12141/**
12142 * Index of each type of locale data from the extra locale data array
12143 */
12144export declare const enum ɵExtraLocaleDataIndex {
12145 ExtraDayPeriodFormats = 0,
12146 ExtraDayPeriodStandalone = 1,
12147 ExtraDayPeriodsRules = 2
12148}
12149
12150/**
12151 * Finds the locale data for a given locale.
12152 *
12153 * @param locale The locale code.
12154 * @returns The locale data.
12155 * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)
12156 */
12157export declare function ɵfindLocaleData(locale: string): any;
12158
12159/**
12160 * Loops over queued module definitions, if a given module definition has all of its
12161 * declarations resolved, it dequeues that module definition and sets the scope on
12162 * its declarations.
12163 */
12164export declare function ɵflushModuleScopingQueueAsMuchAsPossible(): void;
12165
12166/**
12167 * Called to format a runtime error.
12168 * See additional info on the `message` argument type in the `RuntimeError` class description.
12169 */
12170export declare function ɵformatRuntimeError<T extends number = ɵRuntimeErrorCode>(code: T, message: null | false | string): string;
12171
12172export declare function ɵgenerateStandaloneInDeclarationsError(type: Type<any>, location: string): string;
12173
12174/**
12175 * If a given component has unresolved async metadata - returns a reference
12176 * to a function that applies component metadata after resolving defer-loadable
12177 * dependencies. Otherwise - this function returns `null`.
12178 */
12179export declare function ɵgetAsyncClassMetadataFn(type: Type<unknown>): (() => Promise<Array<Type<unknown>>>) | null;
12180
12181/**
12182 * Retrieves all defer blocks in a given LView.
12183 *
12184 * @param lView lView with defer blocks
12185 * @param deferBlocks defer block aggregator array
12186 */
12187export declare function ɵgetDeferBlocks(lView: LView, deferBlocks: ɵDeferBlockDetails[]): void;
12188
12189/**
12190 * Retrieves directive instances associated with a given DOM node. Does not include
12191 * component instances.
12192 *
12193 * @usageNotes
12194 * Given the following DOM structure:
12195 *
12196 * ```html
12197 * <app-root>
12198 * <button my-button></button>
12199 * <my-comp></my-comp>
12200 * </app-root>
12201 * ```
12202 *
12203 * Calling `getDirectives` on `<button>` will return an array with an instance of the `MyButton`
12204 * directive that is associated with the DOM node.
12205 *
12206 * Calling `getDirectives` on `<my-comp>` will return an empty array.
12207 *
12208 * @param node DOM node for which to get the directives.
12209 * @returns Array of directives associated with the node.
12210 *
12211 * @publicApi
12212 * @globalApi ng
12213 */
12214export declare function ɵgetDirectives(node: Node): {}[];
12215
12216
12217export declare function ɵgetEnsureDirtyViewsAreAlwaysReachable(): boolean;
12218
12219/**
12220 * Retrieves the host element of a component or directive instance.
12221 * The host element is the DOM element that matched the selector of the directive.
12222 *
12223 * @param componentOrDirective Component or directive instance for which the host
12224 * element should be retrieved.
12225 * @returns Host element of the target.
12226 *
12227 * @publicApi
12228 * @globalApi ng
12229 */
12230export declare function ɵgetHostElement(componentOrDirective: {}): Element;
12231
12232/**
12233 * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading
12234 * inherited value.
12235 *
12236 * @param type A type which may have its own (non-inherited) `ɵprov`.
12237 */
12238export declare function ɵgetInjectableDef<T>(type: any): ɵɵInjectableDeclaration<T> | null;
12239
12240/**
12241 * Returns the matching `LContext` data for a given DOM node, directive or component instance.
12242 *
12243 * This function will examine the provided DOM element, component, or directive instance\'s
12244 * monkey-patched property to derive the `LContext` data. Once called then the monkey-patched
12245 * value will be that of the newly created `LContext`.
12246 *
12247 * If the monkey-patched value is the `LView` instance then the context value for that
12248 * target will be created and the monkey-patch reference will be updated. Therefore when this
12249 * function is called it may mutate the provided element\'s, component\'s or any of the associated
12250 * directive\'s monkey-patch values.
12251 *
12252 * If the monkey-patch value is not detected then the code will walk up the DOM until an element
12253 * is found which contains a monkey-patch reference. When that occurs then the provided element
12254 * will be updated with a new context (which is then returned). If the monkey-patch value is not
12255 * detected for a component/directive instance then it will throw an error (all components and
12256 * directives should be automatically monkey-patched by ivy).
12257 *
12258 * @param target Component, Directive or DOM Node.
12259 */
12260export declare function ɵgetLContext(target: any): ɵLContext | null;
12261
12262/**
12263 * Retrieves the default currency code for the given locale.
12264 *
12265 * The default is defined as the first currency which is still in use.
12266 *
12267 * @param locale The code of the locale whose currency code we want.
12268 * @returns The code of the default currency for the given locale.
12269 *
12270 */
12271export declare function ɵgetLocaleCurrencyCode(locale: string): string | null;
12272
12273/**
12274 * Retrieves the plural function used by ICU expressions to determine the plural case to use
12275 * for a given locale.
12276 * @param locale A locale code for the locale format rules to use.
12277 * @returns The plural function for the locale.
12278 * @see {@link NgPlural}
12279 * @see [Internationalization (i18n) Guide](/guide/i18n-overview)
12280 */
12281export declare function ɵgetLocalePluralCase(locale: string): (value: number) => number;
12282
12283export declare function ɵgetSanitizationBypassType(value: any): ɵBypassType | null;
12284
12285/**
12286 * Gets the current value of the strict mode.
12287 */
12288export declare function ɵgetUnknownElementStrictMode(): boolean;
12289
12290/**
12291 * Gets the current value of the strict mode.
12292 */
12293export declare function ɵgetUnknownPropertyStrictMode(): boolean;
12294
12295
12296export declare const ɵglobal: any;
12297
12298/**
12299 * Default debug tools available under `window.ng`.
12300 */
12301export declare type ɵGlobalDevModeUtils = {
12302 [GLOBAL_PUBLISH_EXPANDO_KEY]: typeof globalUtilsFunctions;
12303};
12304
12305export declare type ɵHydratedNode = {
12306 [HYDRATION_INFO_KEY]?: ɵHydrationInfo;
12307};
12308
12309export declare type ɵHydrationInfo = {
12310 status: HydrationStatus.Hydrated | HydrationStatus.Skipped;
12311} | {
12312 status: HydrationStatus.Mismatched;
12313 actualNodeDetails: string | null;
12314 expectedNodeDetails: string | null;
12315};
12316
12317/**
12318 * Injection token that configures the image optimized image functionality.
12319 * See {@link ImageConfig} for additional information about parameters that
12320 * can be used.
12321 *
12322 * @see {@link NgOptimizedImage}
12323 * @see {@link ImageConfig}
12324 * @publicApi
12325 */
12326export declare const ɵIMAGE_CONFIG: InjectionToken<ɵImageConfig>;
12327
12328export declare const ɵIMAGE_CONFIG_DEFAULTS: ɵImageConfig;
12329
12330/**
12331 * A configuration object for the image-related options. Contains:
12332 * - breakpoints: An array of integer breakpoints used to generate
12333 * srcsets for responsive images.
12334 * - disableImageSizeWarning: A boolean value. Setting this to true will
12335 * disable console warnings about oversized images.
12336 * - disableImageLazyLoadWarning: A boolean value. Setting this to true will
12337 * disable console warnings about LCP images configured with `loading="lazy"`.
12338 * Learn more about the responsive image configuration in [the NgOptimizedImage
12339 * guide](guide/image-directive).
12340 * Learn more about image warning options in [the related error page](errors/NG0913).
12341 * @publicApi
12342 */
12343export declare type ɵImageConfig = {
12344 breakpoints?: number[];
12345 placeholderResolution?: number;
12346 disableImageSizeWarning?: boolean;
12347 disableImageLazyLoadWarning?: boolean;
12348};
12349
12350/** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */
12351export declare function ɵinjectChangeDetectorRef(flags: InjectFlags): ChangeDetectorRef;
12352
12353/**
12354 * An internal token whose presence in an injector indicates that the injector should treat itself
12355 * as a root scoped injector when processing requests for unknown tokens which may indicate
12356 * they are provided in the root scope.
12357 */
12358export declare const ɵINJECTOR_SCOPE: InjectionToken<InjectorScope | null>;
12359
12360/**
12361 * An object that defines an injection context for the injector profiler.
12362 */
12363export declare interface ɵInjectorProfilerContext {
12364 /**
12365 * The Injector that service is being injected into.
12366 * - Example: if ModuleA --provides--> ServiceA --injects--> ServiceB
12367 * then inject(ServiceB) in ServiceA has ModuleA as an injector context
12368 */
12369 injector: Injector;
12370 /**
12371 * The class where the constructor that is calling `inject` is located
12372 * - Example: if ModuleA --provides--> ServiceA --injects--> ServiceB
12373 * then inject(ServiceB) in ServiceA has ServiceA as a construction context
12374 */
12375 token: Type<unknown> | null;
12376}
12377
12378declare const ɵINPUT_SIGNAL_BRAND_READ_TYPE: unique symbol;
12379
12380export declare const ɵINPUT_SIGNAL_BRAND_WRITE_TYPE: unique symbol;
12381
12382/**
12383 * Register a callback to run once before any userspace `afterRender` or
12384 * `afterNextRender` callbacks.
12385 *
12386 * This function should almost always be used instead of `afterRender` or
12387 * `afterNextRender` for implementing framework functionality. Consider:
12388 *
12389 * 1.) `AfterRenderPhase.EarlyRead` is intended to be used for implementing
12390 * custom layout. If the framework itself mutates the DOM after *any*
12391 * `AfterRenderPhase.EarlyRead` callbacks are run, the phase can no
12392 * longer reliably serve its purpose.
12393 *
12394 * 2.) Importing `afterRender` in the framework can reduce the ability for it
12395 * to be tree-shaken, and the framework shouldn't need much of the behavior.
12396 */
12397export declare function ɵinternalAfterNextRender(callback: VoidFunction, options?: InternalAfterNextRenderOptions): void;
12398
12399/**
12400 * Internal create application API that implements the core application creation logic and optional
12401 * bootstrap logic.
12402 *
12403 * Platforms (such as `platform-browser`) may require different set of application and platform
12404 * providers for an application to function correctly. As a result, platforms may use this function
12405 * internally and supply the necessary providers during the bootstrap, while exposing
12406 * platform-specific APIs as a part of their public API.
12407 *
12408 * @returns A promise that returns an `ApplicationRef` instance once resolved.
12409 */
12410export declare function ɵinternalCreateApplication(config: {
12411 rootComponent?: Type<unknown>;
12412 appProviders?: Array<Provider | EnvironmentProviders>;
12413 platformProviders?: Provider[];
12414}): Promise<ApplicationRef>;
12415
12416export declare interface ɵInternalEnvironmentProviders extends EnvironmentProviders {
12417 ɵproviders: (Provider | EnvironmentProviders)[];
12418 /**
12419 * If present, indicates that the `EnvironmentProviders` were derived from NgModule providers.
12420 *
12421 * This is used to produce clearer error messages.
12422 */
12423 ɵfromNgModule?: true;
12424}
12425
12426/**
12427 * Internal token that specifies whether DOM reuse logic
12428 * during hydration is enabled.
12429 */
12430export declare const ɵIS_HYDRATION_DOM_REUSE_ENABLED: InjectionToken<boolean>;
12431
12432export declare function ɵisBoundToModule<C>(cf: ComponentFactory<C>): boolean;
12433
12434export declare function ɵisComponentDefPendingResolution(type: Type<any>): boolean;
12435
12436export declare function ɵisEnvironmentProviders(value: Provider | EnvironmentProviders | ɵInternalEnvironmentProviders): value is ɵInternalEnvironmentProviders;
12437
12438export declare function ɵisInjectable(type: any): boolean;
12439
12440export declare function ɵisNgModule<T>(value: Type<T>): value is Type<T> & {
12441 ɵmod: ɵNgModuleDef<T>;
12442};
12443
12444/**
12445 * Determine if the argument is shaped like a Promise
12446 */
12447export declare function ɵisPromise<T = any>(obj: any): obj is Promise<T>;
12448
12449/**
12450 * Determine if the argument is a Subscribable
12451 */
12452export declare function ɵisSubscribable<T>(obj: any | Subscribable<T>): obj is Subscribable<T>;
12453
12454/**
12455 * The internal view context which is specific to a given DOM element, directive or
12456 * component instance. Each value in here (besides the LView and element node details)
12457 * can be present, null or undefined. If undefined then it implies the value has not been
12458 * looked up yet, otherwise, if null, then a lookup was executed and nothing was found.
12459 *
12460 * Each value will get filled when the respective value is examined within the getContext
12461 * function. The component, element and each directive instance will share the same instance
12462 * of the context.
12463 */
12464export declare class ɵLContext {
12465 /**
12466 * ID of the component's parent view data.
12467 */
12468 private lViewId;
12469 /**
12470 * The index instance of the node.
12471 */
12472 nodeIndex: number;
12473 /**
12474 * The instance of the DOM node that is attached to the lNode.
12475 */
12476 native: RNode;
12477 /**
12478 * The instance of the Component node.
12479 */
12480 component: {} | null | undefined;
12481 /**
12482 * The list of active directives that exist on this element.
12483 */
12484 directives: any[] | null | undefined;
12485 /**
12486 * The map of local references (local reference name => element or directive instance) that
12487 * exist on this element.
12488 */
12489 localRefs: {
12490 [key: string]: any;
12491 } | null | undefined;
12492 /** Component's parent view data. */
12493 get lView(): LView | null;
12494 constructor(
12495 /**
12496 * ID of the component's parent view data.
12497 */
12498 lViewId: number,
12499 /**
12500 * The index instance of the node.
12501 */
12502 nodeIndex: number,
12503 /**
12504 * The instance of the DOM node that is attached to the lNode.
12505 */
12506 native: RNode);
12507}
12508
12509/**
12510 * Used to enable lifecycle hooks on the root component.
12511 *
12512 * Include this feature when calling `renderComponent` if the root component
12513 * you are rendering has lifecycle hooks defined. Otherwise, the hooks won't
12514 * be called properly.
12515 *
12516 * Example:
12517 *
12518 * ```
12519 * renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});
12520 * ```
12521 */
12522export declare function ɵLifecycleHooksFeature(): void;
12523
12524/**
12525 * Index of each type of locale data from the locale data array
12526 */
12527export declare enum ɵLocaleDataIndex {
12528 LocaleId = 0,
12529 DayPeriodsFormat = 1,
12530 DayPeriodsStandalone = 2,
12531 DaysFormat = 3,
12532 DaysStandalone = 4,
12533 MonthsFormat = 5,
12534 MonthsStandalone = 6,
12535 Eras = 7,
12536 FirstDayOfWeek = 8,
12537 WeekendRange = 9,
12538 DateFormat = 10,
12539 TimeFormat = 11,
12540 DateTimeFormat = 12,
12541 NumberSymbols = 13,
12542 NumberFormats = 14,
12543 CurrencyCode = 15,
12544 CurrencySymbol = 16,
12545 CurrencyName = 17,
12546 Currencies = 18,
12547 Directionality = 19,
12548 PluralCase = 20,
12549 ExtraData = 21
12550}
12551
12552
12553export declare const ɵNG_COMP_DEF: string;
12554
12555export declare const ɵNG_DIR_DEF: string;
12556
12557/**
12558 * If a directive is diPublic, bloomAdd sets a property on the type with this constant as
12559 * the key and the directive's unique ID as the value. This allows us to map directives to their
12560 * bloom filter bit for DI.
12561 */
12562export declare const ɵNG_ELEMENT_ID: string;
12563
12564export declare const ɵNG_INJ_DEF: string;
12565
12566export declare const ɵNG_MOD_DEF: string;
12567
12568export declare const ɵNG_PIPE_DEF: string;
12569
12570export declare const ɵNG_PROV_DEF: string;
12571
12572/**
12573 * Runtime link information for NgModules.
12574 *
12575 * This is the internal data structure used by the runtime to assemble components, directives,
12576 * pipes, and injectors.
12577 *
12578 * NOTE: Always use `ɵɵdefineNgModule` function to create this object,
12579 * never create the object directly since the shape of this object
12580 * can change between versions.
12581 */
12582export declare interface ɵNgModuleDef<T> {
12583 /** Token representing the module. Used by DI. */
12584 type: T;
12585 /**
12586 * List of components to bootstrap.
12587 *
12588 * @see {NgModuleScopeInfoFromDecorator} This field is only used in global compilation mode. In local compilation mode the bootstrap info is computed and added in runtime.
12589 */
12590 bootstrap: Type<any>[] | (() => Type<any>[]);
12591 /** List of components, directives, and pipes declared by this module. */
12592 declarations: Type<any>[] | (() => Type<any>[]);
12593 /** List of modules or `ModuleWithProviders` imported by this module. */
12594 imports: Type<any>[] | (() => Type<any>[]);
12595 /**
12596 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
12597 * module.
12598 */
12599 exports: Type<any>[] | (() => Type<any>[]);
12600 /**
12601 * Cached value of computed `transitiveCompileScopes` for this module.
12602 *
12603 * This should never be read directly, but accessed via `transitiveScopesFor`.
12604 */
12605 transitiveCompileScopes: ɵNgModuleTransitiveScopes | null;
12606 /** The set of schemas that declare elements to be allowed in the NgModule. */
12607 schemas: SchemaMetadata[] | null;
12608 /** Unique ID for the module with which it should be registered. */
12609 id: string | null;
12610}
12611
12612export declare class ɵNgModuleFactory<T> extends NgModuleFactory<T> {
12613 moduleType: Type<T>;
12614 constructor(moduleType: Type<T>);
12615 create(parentInjector: Injector | null): NgModuleRef<T>;
12616}
12617
12618/**
12619 * Represents the expansion of an `NgModule` into its scopes.
12620 *
12621 * A scope is a set of directives and pipes that are visible in a particular context. Each
12622 * `NgModule` has two scopes. The `compilation` scope is the set of directives and pipes that will
12623 * be recognized in the templates of components declared by the module. The `exported` scope is the
12624 * set of directives and pipes exported by a module (that is, module B's exported scope gets added
12625 * to module A's compilation scope when module A imports B).
12626 */
12627export declare interface ɵNgModuleTransitiveScopes {
12628 compilation: {
12629 directives: Set<any>;
12630 pipes: Set<any>;
12631 };
12632 exported: {
12633 directives: Set<any>;
12634 pipes: Set<any>;
12635 };
12636 schemas: SchemaMetadata[] | null;
12637}
12638
12639export declare interface ɵNgModuleType<T = any> extends Type<T> {
12640 ɵmod: ɵNgModuleDef<T>;
12641}
12642
12643
12644export declare interface ɵNO_CHANGE {
12645 __brand__: 'NO_CHANGE';
12646}
12647
12648/** A special value which designates that a value has not changed. */
12649export declare const ɵNO_CHANGE: ɵNO_CHANGE;
12650
12651/**
12652 * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls
12653 * to framework to perform rendering.
12654 */
12655export declare class ɵNoopNgZone implements NgZone {
12656 readonly hasPendingMicrotasks = false;
12657 readonly hasPendingMacrotasks = false;
12658 readonly isStable = true;
12659 readonly onUnstable: EventEmitter<any>;
12660 readonly onMicrotaskEmpty: EventEmitter<any>;
12661 readonly onStable: EventEmitter<any>;
12662 readonly onError: EventEmitter<any>;
12663 run<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any): T;
12664 runGuarded<T>(fn: (...args: any[]) => any, applyThis?: any, applyArgs?: any): T;
12665 runOutsideAngular<T>(fn: (...args: any[]) => T): T;
12666 runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any, name?: string): T;
12667}
12668
12669
12670/**
12671 * Convince closure compiler that the wrapped function has no side-effects.
12672 *
12673 * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to
12674 * allow us to execute a function but have closure compiler mark the call as no-side-effects.
12675 * It is important that the return value for the `noSideEffects` function be assigned
12676 * to something which is retained otherwise the call to `noSideEffects` will be removed by closure
12677 * compiler.
12678 */
12679export declare function ɵnoSideEffects<T>(fn: () => T): T;
12680
12681
12682export declare const ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR: {};
12683
12684/**
12685 * The `outputs` function allows declaration of outputs in directives and
12686 * components.
12687 *
12688 * Initializes an output that can emit values to consumers of your
12689 * directive/component.
12690 *
12691 * @usageNotes
12692 * Initialize an output in your directive by declaring a
12693 * class field and initializing it with the `output()` function.
12694 *
12695 * ```ts
12696 * @Directive({..})
12697 * export class MyDir {
12698 * nameChange = output<string>(); // OutputEmitter<string>
12699 * onClick = output(); // OutputEmitter<void>
12700 * }
12701 * ```
12702 *
12703 * @developerPreview
12704 */
12705export declare function ɵoutput<T = void>(opts?: ɵOutputOptions): ɵOutputEmitter<T>;
12706
12707
12708/**
12709 * An `OutputEmitter` is created by the `output()` function and can be
12710 * used to emit values to consumers of your directive or component.
12711 *
12712 * Consumers of your directive/component can bind to the output and
12713 * subscribe to changes via the bound event syntax. For example:
12714 *
12715 * ```html
12716 * <my-comp (valueChange)="processNewValue($event)" />
12717 * ```
12718 *
12719 * @developerPreview
12720 */
12721export declare interface ɵOutputEmitter<T> {
12722 emit(value: T): void;
12723}
12724
12725/**
12726 * Options for declaring an output.
12727 *
12728 * @developerPreview
12729 */
12730export declare interface ɵOutputOptions {
12731 alias?: string;
12732}
12733
12734/**
12735 * Patch the definition of a component with directives and pipes from the compilation scope of
12736 * a given module.
12737 */
12738export declare function ɵpatchComponentDefWithScope<C>(componentDef: ɵComponentDef<C>, transitiveScopes: ɵNgModuleTransitiveScopes): void;
12739
12740/**
12741 * *Internal* service that keeps track of pending tasks happening in the system.
12742 *
12743 * This information is needed to make sure that the serialization on the server
12744 * is delayed until all tasks in the queue (such as an initial navigation or a
12745 * pending HTTP request) are completed.
12746 *
12747 * Pending tasks continue to contribute to the stableness of `ApplicationRef`
12748 * throughout the lifetime of the application.
12749 */
12750export declare class ɵPendingTasks implements OnDestroy {
12751 private taskId;
12752 private pendingTasks;
12753 private get _hasPendingTasks();
12754 hasPendingTasks: BehaviorSubject<boolean>;
12755 add(): number;
12756 remove(taskId: number): void;
12757 ngOnDestroy(): void;
12758 static ɵfac: i0.ɵɵFactoryDeclarationPendingTasks, never>;
12759 static ɵprov: i0.ɵɵInjectableDeclarationPendingTasks>;
12760}
12761
12762
12763/**
12764 * A guarded `performance.mark` for feature marking.
12765 *
12766 * This method exists because while all supported browser and node.js version supported by Angular
12767 * support performance.mark API. This is not the case for other environments such as JSDOM and
12768 * Cloudflare workers.
12769 */
12770export declare function ɵperformanceMarkFeature(feature: string): void;
12771
12772/**
12773 * Runtime link information for Pipes.
12774 *
12775 * This is an internal data structure used by the renderer to link
12776 * pipes into templates.
12777 *
12778 * NOTE: Always use `definePipe` function to create this object,
12779 * never create the object directly since the shape of this object
12780 * can change between versions.
12781 *
12782 * See: {@link definePipe}
12783 */
12784export declare interface ɵPipeDef<T> {
12785 /** Token representing the pipe. */
12786 type: Type<T>;
12787 /**
12788 * Pipe name.
12789 *
12790 * Used to resolve pipe in templates.
12791 */
12792 readonly name: string;
12793 /**
12794 * Factory function used to create a new pipe instance. Will be null initially.
12795 * Populated when the factory is first requested by pipe instantiation logic.
12796 */
12797 factory: FactoryFn<T> | null;
12798 /**
12799 * Whether or not the pipe is pure.
12800 *
12801 * Pure pipes result only depends on the pipe input and not on internal
12802 * state of the pipe.
12803 */
12804 readonly pure: boolean;
12805 /**
12806 * Whether this pipe is standalone.
12807 */
12808 readonly standalone: boolean;
12809 onDestroy: (() => void) | null;
12810}
12811
12812/**
12813 * Profiler function which the runtime will invoke before and after user code.
12814 */
12815export declare interface ɵProfiler {
12816 (event: ɵProfilerEvent, instance: {} | null, hookOrListener?: (e?: any) => any): void;
12817}
12818
12819
12820/**
12821 * Profiler events is an enum used by the profiler to distinguish between different calls of user
12822 * code invoked throughout the application lifecycle.
12823 */
12824export declare const enum ɵProfilerEvent {
12825 /**
12826 * Corresponds to the point in time before the runtime has called the template function of a
12827 * component with `RenderFlags.Create`.
12828 */
12829 TemplateCreateStart = 0,
12830 /**
12831 * Corresponds to the point in time after the runtime has called the template function of a
12832 * component with `RenderFlags.Create`.
12833 */
12834 TemplateCreateEnd = 1,
12835 /**
12836 * Corresponds to the point in time before the runtime has called the template function of a
12837 * component with `RenderFlags.Update`.
12838 */
12839 TemplateUpdateStart = 2,
12840 /**
12841 * Corresponds to the point in time after the runtime has called the template function of a
12842 * component with `RenderFlags.Update`.
12843 */
12844 TemplateUpdateEnd = 3,
12845 /**
12846 * Corresponds to the point in time before the runtime has called a lifecycle hook of a component
12847 * or directive.
12848 */
12849 LifecycleHookStart = 4,
12850 /**
12851 * Corresponds to the point in time after the runtime has called a lifecycle hook of a component
12852 * or directive.
12853 */
12854 LifecycleHookEnd = 5,
12855 /**
12856 * Corresponds to the point in time before the runtime has evaluated an expression associated with
12857 * an event or an output.
12858 */
12859 OutputStart = 6,
12860 /**
12861 * Corresponds to the point in time after the runtime has evaluated an expression associated with
12862 * an event or an output.
12863 */
12864 OutputEnd = 7
12865}
12866
12867/**
12868 * An object that contains information about a provider that has been configured
12869 *
12870 * TODO: rename to indicate that it is a debug structure eg. ProviderDebugInfo.
12871 */
12872export declare interface ɵProviderRecord {
12873 /**
12874 * DI token that this provider is configuring
12875 */
12876 token: Type<unknown> | InjectionToken<unknown>;
12877 /**
12878 * Determines if provider is configured as view provider.
12879 */
12880 isViewProvider: boolean;
12881 /**
12882 * The raw provider associated with this ProviderRecord.
12883 */
12884 provider: SingleProvider;
12885 /**
12886 * The path of DI containers that were followed to import this provider
12887 */
12888 importPath?: Type<unknown>[];
12889}
12890
12891export declare function ɵprovideZonelessChangeDetection(): EnvironmentProviders;
12892
12893/**
12894 * Queue a state update to be performed asynchronously.
12895 *
12896 * This is useful to safely update application state that is used in an expression that was already
12897 * checked during change detection. This defers the update until later and prevents
12898 * `ExpressionChangedAfterItHasBeenChecked` errors. Using signals for state is recommended instead,
12899 * but it's not always immediately possible to change the state to a signal because it would be a
12900 * breaking change. When the callback updates state used in an expression, this needs to be
12901 * accompanied by an explicit notification to the framework that something has changed (i.e.
12902 * updating a signal or calling `ChangeDetectorRef.markForCheck()`) or may still cause
12903 * `ExpressionChangedAfterItHasBeenChecked` in dev mode or fail to synchronize the state to the DOM
12904 * in production.
12905 */
12906export declare function ɵqueueStateUpdate(callback: VoidFunction, options?: {
12907 injector?: Injector;
12908}): void;
12909
12910export declare function ɵreadHydrationInfo(node: RNode): ɵHydrationInfo | null;
12911
12912export declare class ɵReflectionCapabilities implements PlatformReflectionCapabilities {
12913 private _reflect;
12914 constructor(reflect?: any);
12915 factory<T>(t: Type<T>): (args: any[]) => T;
12916 private _ownParameters;
12917 parameters(type: Type<any>): any[][];
12918 private _ownAnnotations;
12919 annotations(typeOrFunc: Type<any>): any[];
12920 private _ownPropMetadata;
12921 propMetadata(typeOrFunc: any): {
12922 [key: string]: any[];
12923 };
12924 ownPropMetadata(typeOrFunc: any): {
12925 [key: string]: any[];
12926 };
12927 hasLifecycleHook(type: any, lcProperty: string): boolean;
12928}
12929
12930/**
12931 * Register locale data to be used internally by Angular. See the
12932 * ["I18n guide"](guide/i18n-common-format-data-locale) to know how to import additional locale
12933 * data.
12934 *
12935 * The signature `registerLocaleData(data: any, extraData?: any)` is deprecated since v5.1
12936 */
12937export declare function ɵregisterLocaleData(data: any, localeId?: string | any, extraData?: any): void;
12938
12939/**
12940 * ComponentFactory interface implementation.
12941 */
12942export declare class ɵRender3ComponentFactory<T> extends ComponentFactory<T> {
12943 private componentDef;
12944 private ngModule?;
12945 selector: string;
12946 componentType: Type<any>;
12947 ngContentSelectors: string[];
12948 isBoundToModule: boolean;
12949 get inputs(): {
12950 propName: string;
12951 templateName: string;
12952 transform?: (value: any) => any;
12953 }[];
12954 get outputs(): {
12955 propName: string;
12956 templateName: string;
12957 }[];
12958 /**
12959 * @param componentDef The component definition.
12960 * @param ngModule The NgModuleRef to which the factory is bound.
12961 */
12962 constructor(componentDef: ɵComponentDef<any>, ngModule?: NgModuleRef<any> | undefined);
12963 create(injector: Injector, projectableNodes?: any[][] | undefined, rootSelectorOrNode?: any, environmentInjector?: NgModuleRef<any> | EnvironmentInjector | undefined): ComponentRef<T>;
12964}
12965
12966/**
12967 * Represents an instance of a Component created via a {@link ComponentFactory}.
12968 *
12969 * `ComponentRef` provides access to the Component Instance as well other objects related to this
12970 * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}
12971 * method.
12972 *
12973 */
12974export declare class ɵRender3ComponentRef<T> extends ComponentRef<T> {
12975 location: ElementRef;
12976 private _rootLView;
12977 private _tNode;
12978 instance: T;
12979 hostView: ɵViewRef<T>;
12980 changeDetectorRef: ChangeDetectorRef;
12981 componentType: Type<T>;
12982 private previousInputValues;
12983 constructor(componentType: Type<T>, instance: T, location: ElementRef, _rootLView: LView, _tNode: TElementNode | TContainerNode | TElementContainerNode);
12984 setInput(name: string, value: unknown): void;
12985 get injector(): Injector;
12986 destroy(): void;
12987 onDestroy(callback: () => void): void;
12988}
12989
12990export declare class ɵRender3NgModuleRef<T> extends NgModuleRef<T> implements InternalNgModuleRef<T> {
12991 _parent: Injector | null;
12992 _bootstrapComponents: Type<any>[];
12993 _r3Injector: R3Injector;
12994 instance: T;
12995 destroyCbs: (() => void)[] | null;
12996 readonly componentFactoryResolver: ComponentFactoryResolver_2;
12997 constructor(ngModuleType: Type<T>, _parent: Injector | null, additionalProviders: StaticProvider[]);
12998 get injector(): EnvironmentInjector;
12999 destroy(): void;
13000 onDestroy(callback: () => void): void;
13001}
13002
13003/**
13004 * Transitions a defer block to the new state. Updates the necessary
13005 * data structures and renders corresponding block.
13006 *
13007 * @param newState New state that should be applied to the defer block.
13008 * @param tNode TNode that represents a defer block.
13009 * @param lContainer Represents an instance of a defer block.
13010 * @param skipTimerScheduling Indicates that `@loading` and `@placeholder` block
13011 * should be rendered immediately, even if they have `after` or `minimum` config
13012 * options setup. This flag to needed for testing APIs to transition defer block
13013 * between states via `DeferFixture.render` method.
13014 */
13015export declare function ɵrenderDeferBlockState(newState: ɵDeferBlockState, tNode: TNode, lContainer: LContainer, skipTimerScheduling?: boolean): void;
13016
13017/**
13018 * Flags passed into template functions to determine which blocks (i.e. creation, update)
13019 * should be executed.
13020 *
13021 * Typically, a template runs both the creation block and the update block on initialization and
13022 * subsequent runs only execute the update block. However, dynamically created views require that
13023 * the creation block be executed separately from the update block (for backwards compat).
13024 */
13025export declare const enum ɵRenderFlags {
13026 Create = 1,
13027 Update = 2
13028}
13029
13030export declare function ɵresetCompiledComponents(): void;
13031
13032export declare function ɵresetJitOptions(): void;
13033
13034/**
13035 * Used to resolve resource URLs on `@Component` when used with JIT compilation.
13036 *
13037 * Example:
13038 * ```
13039 * @Component({
13040 * selector: 'my-comp',
13041 * templateUrl: 'my-comp.html', // This requires asynchronous resolution
13042 * })
13043 * class MyComponent{
13044 * }
13045 *
13046 * // Calling `renderComponent` will fail because `renderComponent` is a synchronous process
13047 * // and `MyComponent`'s `@Component.templateUrl` needs to be resolved asynchronously.
13048 *
13049 * // Calling `resolveComponentResources()` will resolve `@Component.templateUrl` into
13050 * // `@Component.template`, which allows `renderComponent` to proceed in a synchronous manner.
13051 *
13052 * // Use browser's `fetch()` function as the default resource resolution strategy.
13053 * resolveComponentResources(fetch).then(() => {
13054 * // After resolution all URLs have been converted into `template` strings.
13055 * renderComponent(MyComponent);
13056 * });
13057 *
13058 * ```
13059 *
13060 * NOTE: In AOT the resolution happens during compilation, and so there should be no need
13061 * to call this method outside JIT mode.
13062 *
13063 * @param resourceResolver a function which is responsible for returning a `Promise` to the
13064 * contents of the resolved URL. Browser's `fetch()` method is a good default implementation.
13065 */
13066export declare function ɵresolveComponentResources(resourceResolver: (url: string) => (Promise<string | {
13067 text(): Promise<string>;
13068}>)): Promise<void>;
13069
13070export declare function ɵrestoreComponentResolutionQueue(queue: Map<Type<any>, Component>): void;
13071
13072/**
13073 * Class that represents a runtime error.
13074 * Formats and outputs the error message in a consistent way.
13075 *
13076 * Example:
13077 * ```
13078 * throw new RuntimeError(
13079 * RuntimeErrorCode.INJECTOR_ALREADY_DESTROYED,
13080 * ngDevMode && 'Injector has already been destroyed.');
13081 * ```
13082 *
13083 * Note: the `message` argument contains a descriptive error message as a string in development
13084 * mode (when the `ngDevMode` is defined). In production mode (after tree-shaking pass), the
13085 * `message` argument becomes `false`, thus we account for it in the typings and the runtime
13086 * logic.
13087 */
13088export declare class ɵRuntimeError<T extends number = ɵRuntimeErrorCode> extends Error {
13089 code: T;
13090 constructor(code: T, message: null | false | string);
13091}
13092
13093
13094/**
13095 * The list of error codes used in runtime code of the `core` package.
13096 * Reserved error code range: 100-999.
13097 *
13098 * Note: the minus sign denotes the fact that a particular code has a detailed guide on
13099 * angular.io. This extra annotation is needed to avoid introducing a separate set to store
13100 * error codes which have guides, which might leak into runtime code.
13101 *
13102 * Full list of available error guides can be found at https://angular.io/errors.
13103 *
13104 * Error code ranges per package:
13105 * - core (this package): 100-999
13106 * - forms: 1000-1999
13107 * - common: 2000-2999
13108 * - animations: 3000-3999
13109 * - router: 4000-4999
13110 * - platform-browser: 5000-5500
13111 */
13112export declare const enum ɵRuntimeErrorCode {
13113 EXPRESSION_CHANGED_AFTER_CHECKED = -100,
13114 RECURSIVE_APPLICATION_REF_TICK = 101,
13115 INFINITE_CHANGE_DETECTION = 103,
13116 CYCLIC_DI_DEPENDENCY = -200,
13117 PROVIDER_NOT_FOUND = -201,
13118 INVALID_FACTORY_DEPENDENCY = 202,
13119 MISSING_INJECTION_CONTEXT = -203,
13120 INVALID_INJECTION_TOKEN = 204,
13121 INJECTOR_ALREADY_DESTROYED = 205,
13122 PROVIDER_IN_WRONG_CONTEXT = 207,
13123 MISSING_INJECTION_TOKEN = 208,
13124 INVALID_MULTI_PROVIDER = -209,
13125 MISSING_DOCUMENT = 210,
13126 MULTIPLE_COMPONENTS_MATCH = -300,
13127 EXPORT_NOT_FOUND = -301,
13128 PIPE_NOT_FOUND = -302,
13129 UNKNOWN_BINDING = 303,
13130 UNKNOWN_ELEMENT = 304,
13131 TEMPLATE_STRUCTURE_ERROR = 305,
13132 INVALID_EVENT_BINDING = 306,
13133 HOST_DIRECTIVE_UNRESOLVABLE = 307,
13134 HOST_DIRECTIVE_NOT_STANDALONE = 308,
13135 DUPLICATE_DIRECTIVE = 309,
13136 HOST_DIRECTIVE_COMPONENT = 310,
13137 HOST_DIRECTIVE_UNDEFINED_BINDING = 311,
13138 HOST_DIRECTIVE_CONFLICTING_ALIAS = 312,
13139 MULTIPLE_MATCHING_PIPES = 313,
13140 MULTIPLE_PLATFORMS = 400,
13141 PLATFORM_NOT_FOUND = 401,
13142 MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP = 402,
13143 BOOTSTRAP_COMPONENTS_NOT_FOUND = -403,
13144 PLATFORM_ALREADY_DESTROYED = 404,
13145 ASYNC_INITIALIZERS_STILL_RUNNING = 405,
13146 APPLICATION_REF_ALREADY_DESTROYED = 406,
13147 RENDERER_NOT_FOUND = 407,
13148 HYDRATION_NODE_MISMATCH = -500,
13149 HYDRATION_MISSING_SIBLINGS = -501,
13150 HYDRATION_MISSING_NODE = -502,
13151 UNSUPPORTED_PROJECTION_DOM_NODES = -503,
13152 INVALID_SKIP_HYDRATION_HOST = -504,
13153 MISSING_HYDRATION_ANNOTATIONS = -505,
13154 HYDRATION_STABLE_TIMEDOUT = -506,
13155 MISSING_SSR_CONTENT_INTEGRITY_MARKER = -507,
13156 SIGNAL_WRITE_FROM_ILLEGAL_CONTEXT = 600,
13157 REQUIRE_SYNC_WITHOUT_SYNC_EMIT = 601,
13158 ASSERTION_NOT_INSIDE_REACTIVE_CONTEXT = -602,
13159 INVALID_I18N_STRUCTURE = 700,
13160 MISSING_LOCALE_DATA = 701,
13161 DEFER_LOADING_FAILED = 750,
13162 IMPORT_PROVIDERS_FROM_STANDALONE = 800,
13163 INVALID_DIFFER_INPUT = 900,
13164 NO_SUPPORTING_DIFFER_FACTORY = 901,
13165 VIEW_ALREADY_ATTACHED = 902,
13166 INVALID_INHERITANCE = 903,
13167 UNSAFE_VALUE_IN_RESOURCE_URL = 904,
13168 UNSAFE_VALUE_IN_SCRIPT = 905,
13169 MISSING_GENERATED_DEF = 906,
13170 TYPE_IS_NOT_STANDALONE = 907,
13171 MISSING_ZONEJS = 908,
13172 UNEXPECTED_ZONE_STATE = 909,
13173 UNSAFE_IFRAME_ATTRS = -910,
13174 VIEW_ALREADY_DESTROYED = 911,
13175 COMPONENT_ID_COLLISION = -912,
13176 IMAGE_PERFORMANCE_WARNING = -913,
13177 REQUIRED_INPUT_NO_VALUE = -950,
13178 REQUIRED_QUERY_NO_VALUE = -951,
13179 REQUIRED_MODEL_NO_VALUE = -952,
13180 RUNTIME_DEPS_INVALID_IMPORTED_TYPE = 1000,
13181 RUNTIME_DEPS_ORPHAN_COMPONENT = 1001
13182}
13183
13184/**
13185 * Marker interface for a value that's safe to use as HTML.
13186 *
13187 * @publicApi
13188 */
13189export declare interface ɵSafeHtml extends ɵSafeValue {
13190}
13191
13192/**
13193 * Marker interface for a value that's safe to use as a URL to load executable code from.
13194 *
13195 * @publicApi
13196 */
13197export declare interface ɵSafeResourceUrl extends ɵSafeValue {
13198}
13199
13200/**
13201 * Marker interface for a value that's safe to use as JavaScript.
13202 *
13203 * @publicApi
13204 */
13205export declare interface ɵSafeScript extends ɵSafeValue {
13206}
13207
13208/**
13209 * Marker interface for a value that's safe to use as style (CSS).
13210 *
13211 * @publicApi
13212 */
13213export declare interface ɵSafeStyle extends ɵSafeValue {
13214}
13215
13216/**
13217 * Marker interface for a value that's safe to use as a URL linking to a document.
13218 *
13219 * @publicApi
13220 */
13221export declare interface ɵSafeUrl extends ɵSafeValue {
13222}
13223
13224/**
13225 * Marker interface for a value that's safe to use in a particular context.
13226 *
13227 * @publicApi
13228 */
13229export declare interface ɵSafeValue {
13230}
13231
13232/**
13233 * Control whether the NgModule registration system enforces that each NgModule type registered has
13234 * a unique id.
13235 *
13236 * This is useful for testing as the NgModule registry cannot be properly reset between tests with
13237 * Angular's current API.
13238 */
13239export declare function ɵsetAllowDuplicateNgModuleIdsForTest(allowDuplicates: boolean): void;
13240
13241
13242export declare function ɵsetAlternateWeakRefImpl(impl: unknown): void;
13243
13244/**
13245 * Sets the debug info for an Angular class.
13246 *
13247 * This runtime is guarded by ngDevMode flag.
13248 */
13249export declare function ɵsetClassDebugInfo(type: Type<any>, debugInfo: ClassDebugInfo): void;
13250
13251/**
13252 * Adds decorator, constructor, and property metadata to a given type via static metadata fields
13253 * on the type.
13254 *
13255 * These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
13256 *
13257 * Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
13258 * being tree-shaken away during production builds.
13259 */
13260export declare function ɵsetClassMetadata(type: Type<any>, decorators: any[] | null, ctorParameters: (() => any[]) | null, propDecorators: {
13261 [field: string]: any;
13262} | null): void;
13263
13264/**
13265 * Handles the process of applying metadata info to a component class in case
13266 * component template has defer blocks (thus some dependencies became deferrable).
13267 *
13268 * @param type Component class where metadata should be added
13269 * @param dependencyLoaderFn Function that loads dependencies
13270 * @param metadataSetterFn Function that forms a scope in which the `setClassMetadata` is invoked
13271 */
13272export declare function ɵsetClassMetadataAsync(type: Type<any>, dependencyLoaderFn: () => Array<Promise<Type<unknown>>>, metadataSetterFn: (...types: Type<unknown>[]) => void): () => Promise<Array<Type<unknown>>>;
13273
13274export declare function ɵsetCurrentInjector(injector: Injector | null | undefined): Injector | undefined | null;
13275
13276
13277/**
13278 * Tell ivy what the `document` is for this platform.
13279 *
13280 * It is only necessary to call this if the current platform is not a browser.
13281 *
13282 * @param document The object representing the global `document` in this environment.
13283 */
13284export declare function ɵsetDocument(document: Document | undefined): void;
13285
13286export declare function ɵsetEnsureDirtyViewsAreAlwaysReachable(v: boolean): void;
13287
13288export declare function ɵsetInjectorProfilerContext(context: ɵInjectorProfilerContext): ɵInjectorProfilerContext;
13289
13290
13291/**
13292 * Sets the locale id that will be used for translations and ICU expressions.
13293 * This is the ivy version of `LOCALE_ID` that was defined as an injection token for the view engine
13294 * but is now defined as a global value.
13295 *
13296 * @param localeId
13297 */
13298export declare function ɵsetLocaleId(localeId: string): void;
13299
13300/**
13301 * Sets a strict mode for JIT-compiled components to throw an error on unknown elements,
13302 * instead of just logging the error.
13303 * (for AOT-compiled ones this check happens at build time).
13304 */
13305export declare function ɵsetUnknownElementStrictMode(shouldThrow: boolean): void;
13306
13307/**
13308 * Sets a strict mode for JIT-compiled components to throw an error on unknown properties,
13309 * instead of just logging the error.
13310 * (for AOT-compiled ones this check happens at build time).
13311 */
13312export declare function ɵsetUnknownPropertyStrictMode(shouldThrow: boolean): void;
13313
13314/**
13315 * Marker used in a comment node to ensure hydration content integrity
13316 */
13317export declare const ɵSSR_CONTENT_INTEGRITY_MARKER = "nghm";
13318
13319/** Store a value in the `data` at a given `index`. */
13320export declare function ɵstore<T>(tView: TView, lView: LView, index: number, value: T): void;
13321
13322
13323export declare function ɵstringify(token: any): string;
13324
13325/**
13326 * Internal injection token that can used to access an instance of a Testability class.
13327 *
13328 * This token acts as a bridge between the core bootstrap code and the `Testability` class. This is
13329 * needed to ensure that there are no direct references to the `Testability` class, so it can be
13330 * tree-shaken away (if not referenced). For the environments/setups when the `Testability` class
13331 * should be available, this token is used to add a provider that references the `Testability`
13332 * class. Otherwise, only this token is retained in a bundle, but the `Testability` class is not.
13333 */
13334export declare const ɵTESTABILITY: InjectionToken<Testability>;
13335
13336/**
13337 * Internal injection token to retrieve Testability getter class instance.
13338 */
13339export declare const ɵTESTABILITY_GETTER: InjectionToken<GetTestability>;
13340
13341/**
13342 * Compute the pair of transitive scopes (compilation scope and exported scope) for a given type
13343 * (either a NgModule or a standalone component / directive / pipe).
13344 */
13345export declare function ɵtransitiveScopesFor<T>(type: Type<T>): ɵNgModuleTransitiveScopes;
13346
13347/**
13348 * Trigger loading of defer block dependencies if the process hasn't started yet.
13349 *
13350 * @param tDetails Static information about this defer block.
13351 * @param lView LView of a host view.
13352 */
13353export declare function ɵtriggerResourceLoading(tDetails: TDeferBlockDetails, lView: LView, tNode: TNode): void;
13354
13355/**
13356 * Ellipses the string in the middle when longer than the max length
13357 *
13358 * @param string
13359 * @param maxLength of the output string
13360 * @returns ellipsed string with ... in the middle
13361 */
13362export declare function ɵtruncateMiddle(str: string, maxLength?: number): string;
13363
13364/**
13365 * Helper function to remove all the locale data from `LOCALE_DATA`.
13366 */
13367export declare function ɵunregisterLocaleData(): void;
13368
13369/**
13370 * Unwraps all `InputSignal`/`InputSignalWithTransform` class fields of
13371 * the given directive.
13372 */
13373export declare type ɵUnwrapDirectiveSignalInputs<Dir, Fields extends keyof Dir> = {
13374 [P in Fields]: ɵUnwrapInputSignalWriteType<Dir[P]>;
13375};
13376
13377/** Retrieves the `WriteT` of an `InputSignal` and `InputSignalWithTransform`. */
13378declare type ɵUnwrapInputSignalWriteType<Field> = Field extends InputSignalWithTransform<unknown, infer WriteT> ? WriteT : never;
13379
13380export declare function ɵunwrapSafeValue(value: ɵSafeValue): string;
13381
13382export declare function ɵunwrapSafeValue<T>(value: T): T;
13383
13384/**
13385 * Utility function used during template type checking to extract the value from a `WritableSignal`.
13386 * @codeGenApi
13387 */
13388export declare function ɵunwrapWritableSignal<T>(value: T | {
13389 [WRITABLE_SIGNAL]: T;
13390}): T;
13391
13392/**
13393 * Indicates whether to use the runtime dependency tracker for scope calculation in JIT compilation.
13394 * The value "false" means the old code path based on patching scope info into the types will be
13395 * used.
13396 *
13397 * @deprecated For migration purposes only, to be removed soon.
13398 */
13399export declare const ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT = true;
13400
13401export declare class ɵViewRef<T> implements EmbeddedViewRef<T>, ChangeDetectorRefInterface {
13402 /**
13403 * This represents the `LView` associated with the point where `ChangeDetectorRef` was
13404 * requested.
13405 *
13406 * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
13407 */
13408 private _cdRefInjectingView?;
13409 readonly notifyErrorHandler: boolean;
13410 private _appRef;
13411 private _attachedToViewContainer;
13412 get rootNodes(): any[];
13413 constructor(
13414 /**
13415 * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.
13416 *
13417 * When ViewRef is created for a dynamic component, this also represents the `LView` for the
13418 * component.
13419 *
13420 * For a "regular" ViewRef created for an embedded view, this is the `LView` for the embedded
13421 * view.
13422 *
13423 * @internal
13424 */
13425 _lView: LView,
13426 /**
13427 * This represents the `LView` associated with the point where `ChangeDetectorRef` was
13428 * requested.
13429 *
13430 * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
13431 */
13432 _cdRefInjectingView?: LView<unknown> | undefined, notifyErrorHandler?: boolean);
13433 get context(): T;
13434 /**
13435 * @deprecated Replacing the full context object is not supported. Modify the context
13436 * directly, or consider using a `Proxy` if you need to replace the full object.
13437 * // TODO(devversion): Remove this.
13438 */
13439 set context(value: T);
13440 get destroyed(): boolean;
13441 destroy(): void;
13442 onDestroy(callback: Function): void;
13443 /**
13444 * Marks a view and all of its ancestors dirty.
13445 *
13446 * This can be used to ensure an {@link ChangeDetectionStrategy#OnPush} component is
13447 * checked when it needs to be re-rendered but the two normal triggers haven't marked it
13448 * dirty (i.e. inputs haven't changed and events haven't fired in the view).
13449 *
13450 * <!-- TODO: Add a link to a chapter on OnPush components -->
13451 *
13452 * @usageNotes
13453 * ### Example
13454 *
13455 * ```typescript
13456 * @Component({
13457 * selector: 'app-root',
13458 * template: `Number of ticks: {{numberOfTicks}}`
13459 * changeDetection: ChangeDetectionStrategy.OnPush,
13460 * })
13461 * class AppComponent {
13462 * numberOfTicks = 0;
13463 *
13464 * constructor(private ref: ChangeDetectorRef) {
13465 * setInterval(() => {
13466 * this.numberOfTicks++;
13467 * // the following is required, otherwise the view will not be updated
13468 * this.ref.markForCheck();
13469 * }, 1000);
13470 * }
13471 * }
13472 * ```
13473 */
13474 markForCheck(): void;
13475 /**
13476 * Detaches the view from the change detection tree.
13477 *
13478 * Detached views will not be checked during change detection runs until they are
13479 * re-attached, even if they are dirty. `detach` can be used in combination with
13480 * {@link ChangeDetectorRef#detectChanges} to implement local change
13481 * detection checks.
13482 *
13483 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
13484 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
13485 *
13486 * @usageNotes
13487 * ### Example
13488 *
13489 * The following example defines a component with a large list of readonly data.
13490 * Imagine the data changes constantly, many times per second. For performance reasons,
13491 * we want to check and update the list every five seconds. We can do that by detaching
13492 * the component's change detector and doing a local check every five seconds.
13493 *
13494 * ```typescript
13495 * class DataProvider {
13496 * // in a real application the returned data will be different every time
13497 * get data() {
13498 * return [1,2,3,4,5];
13499 * }
13500 * }
13501 *
13502 * @Component({
13503 * selector: 'giant-list',
13504 * template: `
13505 * <li *ngFor="let d of dataProvider.data">Data {{d}}</li>
13506 * `,
13507 * })
13508 * class GiantList {
13509 * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {
13510 * ref.detach();
13511 * setInterval(() => {
13512 * this.ref.detectChanges();
13513 * }, 5000);
13514 * }
13515 * }
13516 *
13517 * @Component({
13518 * selector: 'app',
13519 * providers: [DataProvider],
13520 * template: `
13521 * <giant-list><giant-list>
13522 * `,
13523 * })
13524 * class App {
13525 * }
13526 * ```
13527 */
13528 detach(): void;
13529 /**
13530 * Re-attaches a view to the change detection tree.
13531 *
13532 * This can be used to re-attach views that were previously detached from the tree
13533 * using {@link ChangeDetectorRef#detach}. Views are attached to the tree by default.
13534 *
13535 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
13536 *
13537 * @usageNotes
13538 * ### Example
13539 *
13540 * The following example creates a component displaying `live` data. The component will detach
13541 * its change detector from the main change detector tree when the component's live property
13542 * is set to false.
13543 *
13544 * ```typescript
13545 * class DataProvider {
13546 * data = 1;
13547 *
13548 * constructor() {
13549 * setInterval(() => {
13550 * this.data = this.data * 2;
13551 * }, 500);
13552 * }
13553 * }
13554 *
13555 * @Component({
13556 * selector: 'live-data',
13557 * inputs: ['live'],
13558 * template: 'Data: {{dataProvider.data}}'
13559 * })
13560 * class LiveData {
13561 * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {}
13562 *
13563 * set live(value) {
13564 * if (value) {
13565 * this.ref.reattach();
13566 * } else {
13567 * this.ref.detach();
13568 * }
13569 * }
13570 * }
13571 *
13572 * @Component({
13573 * selector: 'app-root',
13574 * providers: [DataProvider],
13575 * template: `
13576 * Live Update: <input type="checkbox" [(ngModel)]="live">
13577 * <live-data [live]="live"><live-data>
13578 * `,
13579 * })
13580 * class AppComponent {
13581 * live = true;
13582 * }
13583 * ```
13584 */
13585 reattach(): void;
13586 /**
13587 * Checks the view and its children.
13588 *
13589 * This can also be used in combination with {@link ChangeDetectorRef#detach} to implement
13590 * local change detection checks.
13591 *
13592 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
13593 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
13594 *
13595 * @usageNotes
13596 * ### Example
13597 *
13598 * The following example defines a component with a large list of readonly data.
13599 * Imagine, the data changes constantly, many times per second. For performance reasons,
13600 * we want to check and update the list every five seconds.
13601 *
13602 * We can do that by detaching the component's change detector and doing a local change detection
13603 * check every five seconds.
13604 *
13605 * See {@link ChangeDetectorRef#detach} for more information.
13606 */
13607 detectChanges(): void;
13608 /**
13609 * Checks the change detector and its children, and throws if any changes are detected.
13610 *
13611 * This is used in development mode to verify that running change detection doesn't
13612 * introduce other changes.
13613 */
13614 checkNoChanges(): void;
13615 attachToViewContainerRef(): void;
13616 detachFromAppRef(): void;
13617 attachToAppRef(appRef: ViewRefTracker): void;
13618}
13619
13620/**
13621 * Returns a Promise that resolves when the application becomes stable after this method is called
13622 * the first time.
13623 */
13624export declare function ɵwhenStable(applicationRef: ApplicationRef): Promise<void>;
13625
13626/**
13627 * Returns a set of providers required to setup hydration support
13628 * for an application that is server side rendered. This function is
13629 * included into the `provideClientHydration` public API function from
13630 * the `platform-browser` package.
13631 *
13632 * The function sets up an internal flag that would be recognized during
13633 * the server side rendering time as well, so there is no need to
13634 * configure or change anything in NgUniversal to enable the feature.
13635 */
13636export declare function ɵwithDomHydration(): EnvironmentProviders;
13637
13638/**
13639 * Returns a writable type version of type.
13640 *
13641 * USAGE:
13642 * Given:
13643 * ```
13644 * interface Person {readonly name: string}
13645 * ```
13646 *
13647 * We would like to get a read/write version of `Person`.
13648 * ```
13649 * const WritablePerson = Writable<Person>;
13650 * ```
13651 *
13652 * The result is that you can do:
13653 *
13654 * ```
13655 * const readonlyPerson: Person = {name: 'Marry'};
13656 * readonlyPerson.name = 'John'; // TypeError
13657 * (readonlyPerson as WritablePerson).name = 'John'; // OK
13658 *
13659 * // Error: Correctly detects that `Person` did not have `age` property.
13660 * (readonlyPerson as WritablePerson).age = 30;
13661 * ```
13662 */
13663export declare type ɵWritable<T> = {
13664 -readonly [K in keyof T]: T[K];
13665};
13666
13667/**
13668 * URL for the XSS security documentation.
13669 */
13670export declare const ɵXSS_SECURITY_URL = "https://g.co/ng/security#xss";
13671
13672/**
13673 * Advances to an element for later binding instructions.
13674 *
13675 * Used in conjunction with instructions like {@link property} to act on elements with specified
13676 * indices, for example those created with {@link element} or {@link elementStart}.
13677 *
13678 * ```ts
13679 * (rf: RenderFlags, ctx: any) => {
13680 * if (rf & 1) {
13681 * text(0, 'Hello');
13682 * text(1, 'Goodbye')
13683 * element(2, 'div');
13684 * }
13685 * if (rf & 2) {
13686 * advance(2); // Advance twice to the <div>.
13687 * property('title', 'test');
13688 * }
13689 * }
13690 * ```
13691 * @param delta Number of elements to advance forwards by.
13692 *
13693 * @codeGenApi
13694 */
13695export declare function ɵɵadvance(delta?: number): void;
13696
13697/**
13698 * Updates the value of or removes a bound attribute on an Element.
13699 *
13700 * Used in the case of `[attr.title]="value"`
13701 *
13702 * @param name name The name of the attribute.
13703 * @param value value The attribute is removed when value is `null` or `undefined`.
13704 * Otherwise the attribute value is set to the stringified value.
13705 * @param sanitizer An optional function used to sanitize the value.
13706 * @param namespace Optional namespace to use when setting the attribute.
13707 *
13708 * @codeGenApi
13709 */
13710export declare function ɵɵattribute(name: string, value: any, sanitizer?: SanitizerFn | null, namespace?: string): typeof ɵɵattribute;
13711
13712/**
13713 *
13714 * Update an interpolated attribute on an element with single bound value surrounded by text.
13715 *
13716 * Used when the value passed to a property has 1 interpolated value in it:
13717 *
13718 * ```html
13719 * <div attr.title="prefix{{v0}}suffix"></div>
13720 * ```
13721 *
13722 * Its compiled representation is::
13723 *
13724 * ```ts
13725 * ɵɵattributeInterpolate1('title', 'prefix', v0, 'suffix');
13726 * ```
13727 *
13728 * @param attrName The name of the attribute to update
13729 * @param prefix Static value used for concatenation only.
13730 * @param v0 Value checked for change.
13731 * @param suffix Static value used for concatenation only.
13732 * @param sanitizer An optional sanitizer function
13733 * @returns itself, so that it may be chained.
13734 * @codeGenApi
13735 */
13736export declare function ɵɵattributeInterpolate1(attrName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate1;
13737
13738/**
13739 *
13740 * Update an interpolated attribute on an element with 2 bound values surrounded by text.
13741 *
13742 * Used when the value passed to a property has 2 interpolated values in it:
13743 *
13744 * ```html
13745 * <div attr.title="prefix{{v0}}-{{v1}}suffix"></div>
13746 * ```
13747 *
13748 * Its compiled representation is::
13749 *
13750 * ```ts
13751 * ɵɵattributeInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
13752 * ```
13753 *
13754 * @param attrName The name of the attribute to update
13755 * @param prefix Static value used for concatenation only.
13756 * @param v0 Value checked for change.
13757 * @param i0 Static value used for concatenation only.
13758 * @param v1 Value checked for change.
13759 * @param suffix Static value used for concatenation only.
13760 * @param sanitizer An optional sanitizer function
13761 * @returns itself, so that it may be chained.
13762 * @codeGenApi
13763 */
13764export declare function ɵɵattributeInterpolate2(attrName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate2;
13765
13766/**
13767 *
13768 * Update an interpolated attribute on an element with 3 bound values surrounded by text.
13769 *
13770 * Used when the value passed to a property has 3 interpolated values in it:
13771 *
13772 * ```html
13773 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
13774 * ```
13775 *
13776 * Its compiled representation is::
13777 *
13778 * ```ts
13779 * ɵɵattributeInterpolate3(
13780 * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
13781 * ```
13782 *
13783 * @param attrName The name of the attribute to update
13784 * @param prefix Static value used for concatenation only.
13785 * @param v0 Value checked for change.
13786 * @param i0 Static value used for concatenation only.
13787 * @param v1 Value checked for change.
13788 * @param i1 Static value used for concatenation only.
13789 * @param v2 Value checked for change.
13790 * @param suffix Static value used for concatenation only.
13791 * @param sanitizer An optional sanitizer function
13792 * @returns itself, so that it may be chained.
13793 * @codeGenApi
13794 */
13795export declare function ɵɵattributeInterpolate3(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate3;
13796
13797/**
13798 *
13799 * Update an interpolated attribute on an element with 4 bound values surrounded by text.
13800 *
13801 * Used when the value passed to a property has 4 interpolated values in it:
13802 *
13803 * ```html
13804 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
13805 * ```
13806 *
13807 * Its compiled representation is::
13808 *
13809 * ```ts
13810 * ɵɵattributeInterpolate4(
13811 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
13812 * ```
13813 *
13814 * @param attrName The name of the attribute to update
13815 * @param prefix Static value used for concatenation only.
13816 * @param v0 Value checked for change.
13817 * @param i0 Static value used for concatenation only.
13818 * @param v1 Value checked for change.
13819 * @param i1 Static value used for concatenation only.
13820 * @param v2 Value checked for change.
13821 * @param i2 Static value used for concatenation only.
13822 * @param v3 Value checked for change.
13823 * @param suffix Static value used for concatenation only.
13824 * @param sanitizer An optional sanitizer function
13825 * @returns itself, so that it may be chained.
13826 * @codeGenApi
13827 */
13828export declare function ɵɵattributeInterpolate4(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate4;
13829
13830/**
13831 *
13832 * Update an interpolated attribute on an element with 5 bound values surrounded by text.
13833 *
13834 * Used when the value passed to a property has 5 interpolated values in it:
13835 *
13836 * ```html
13837 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
13838 * ```
13839 *
13840 * Its compiled representation is::
13841 *
13842 * ```ts
13843 * ɵɵattributeInterpolate5(
13844 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
13845 * ```
13846 *
13847 * @param attrName The name of the attribute to update
13848 * @param prefix Static value used for concatenation only.
13849 * @param v0 Value checked for change.
13850 * @param i0 Static value used for concatenation only.
13851 * @param v1 Value checked for change.
13852 * @param i1 Static value used for concatenation only.
13853 * @param v2 Value checked for change.
13854 * @param i2 Static value used for concatenation only.
13855 * @param v3 Value checked for change.
13856 * @param i3 Static value used for concatenation only.
13857 * @param v4 Value checked for change.
13858 * @param suffix Static value used for concatenation only.
13859 * @param sanitizer An optional sanitizer function
13860 * @returns itself, so that it may be chained.
13861 * @codeGenApi
13862 */
13863export declare function ɵɵattributeInterpolate5(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate5;
13864
13865/**
13866 *
13867 * Update an interpolated attribute on an element with 6 bound values surrounded by text.
13868 *
13869 * Used when the value passed to a property has 6 interpolated values in it:
13870 *
13871 * ```html
13872 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
13873 * ```
13874 *
13875 * Its compiled representation is::
13876 *
13877 * ```ts
13878 * ɵɵattributeInterpolate6(
13879 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
13880 * ```
13881 *
13882 * @param attrName The name of the attribute to update
13883 * @param prefix Static value used for concatenation only.
13884 * @param v0 Value checked for change.
13885 * @param i0 Static value used for concatenation only.
13886 * @param v1 Value checked for change.
13887 * @param i1 Static value used for concatenation only.
13888 * @param v2 Value checked for change.
13889 * @param i2 Static value used for concatenation only.
13890 * @param v3 Value checked for change.
13891 * @param i3 Static value used for concatenation only.
13892 * @param v4 Value checked for change.
13893 * @param i4 Static value used for concatenation only.
13894 * @param v5 Value checked for change.
13895 * @param suffix Static value used for concatenation only.
13896 * @param sanitizer An optional sanitizer function
13897 * @returns itself, so that it may be chained.
13898 * @codeGenApi
13899 */
13900export declare function ɵɵattributeInterpolate6(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate6;
13901
13902/**
13903 *
13904 * Update an interpolated attribute on an element with 7 bound values surrounded by text.
13905 *
13906 * Used when the value passed to a property has 7 interpolated values in it:
13907 *
13908 * ```html
13909 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
13910 * ```
13911 *
13912 * Its compiled representation is::
13913 *
13914 * ```ts
13915 * ɵɵattributeInterpolate7(
13916 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
13917 * ```
13918 *
13919 * @param attrName The name of the attribute to update
13920 * @param prefix Static value used for concatenation only.
13921 * @param v0 Value checked for change.
13922 * @param i0 Static value used for concatenation only.
13923 * @param v1 Value checked for change.
13924 * @param i1 Static value used for concatenation only.
13925 * @param v2 Value checked for change.
13926 * @param i2 Static value used for concatenation only.
13927 * @param v3 Value checked for change.
13928 * @param i3 Static value used for concatenation only.
13929 * @param v4 Value checked for change.
13930 * @param i4 Static value used for concatenation only.
13931 * @param v5 Value checked for change.
13932 * @param i5 Static value used for concatenation only.
13933 * @param v6 Value checked for change.
13934 * @param suffix Static value used for concatenation only.
13935 * @param sanitizer An optional sanitizer function
13936 * @returns itself, so that it may be chained.
13937 * @codeGenApi
13938 */
13939export declare function ɵɵattributeInterpolate7(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate7;
13940
13941/**
13942 *
13943 * Update an interpolated attribute on an element with 8 bound values surrounded by text.
13944 *
13945 * Used when the value passed to a property has 8 interpolated values in it:
13946 *
13947 * ```html
13948 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
13949 * ```
13950 *
13951 * Its compiled representation is::
13952 *
13953 * ```ts
13954 * ɵɵattributeInterpolate8(
13955 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
13956 * ```
13957 *
13958 * @param attrName The name of the attribute to update
13959 * @param prefix Static value used for concatenation only.
13960 * @param v0 Value checked for change.
13961 * @param i0 Static value used for concatenation only.
13962 * @param v1 Value checked for change.
13963 * @param i1 Static value used for concatenation only.
13964 * @param v2 Value checked for change.
13965 * @param i2 Static value used for concatenation only.
13966 * @param v3 Value checked for change.
13967 * @param i3 Static value used for concatenation only.
13968 * @param v4 Value checked for change.
13969 * @param i4 Static value used for concatenation only.
13970 * @param v5 Value checked for change.
13971 * @param i5 Static value used for concatenation only.
13972 * @param v6 Value checked for change.
13973 * @param i6 Static value used for concatenation only.
13974 * @param v7 Value checked for change.
13975 * @param suffix Static value used for concatenation only.
13976 * @param sanitizer An optional sanitizer function
13977 * @returns itself, so that it may be chained.
13978 * @codeGenApi
13979 */
13980export declare function ɵɵattributeInterpolate8(attrName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate8;
13981
13982/**
13983 * Update an interpolated attribute on an element with 9 or more bound values surrounded by text.
13984 *
13985 * Used when the number of interpolated values exceeds 8.
13986 *
13987 * ```html
13988 * <div
13989 * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
13990 * ```
13991 *
13992 * Its compiled representation is::
13993 *
13994 * ```ts
13995 * ɵɵattributeInterpolateV(
13996 * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
13997 * 'suffix']);
13998 * ```
13999 *
14000 * @param attrName The name of the attribute to update.
14001 * @param values The collection of values and the strings in-between those values, beginning with
14002 * a string prefix and ending with a string suffix.
14003 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
14004 * @param sanitizer An optional sanitizer function
14005 * @returns itself, so that it may be chained.
14006 * @codeGenApi
14007 */
14008export declare function ɵɵattributeInterpolateV(attrName: string, values: any[], sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolateV;
14009
14010/**
14011 * Update class bindings using an object literal or class-string on an element.
14012 *
14013 * This instruction is meant to apply styling via the `[class]="exp"` template bindings.
14014 * When classes are applied to the element they will then be updated with
14015 * respect to any styles/classes set via `classProp`. If any
14016 * classes are set to falsy then they will be removed from the element.
14017 *
14018 * Note that the styling instruction will not be applied until `stylingApply` is called.
14019 * Note that this will the provided classMap value to the host element if this function is called
14020 * within a host binding.
14021 *
14022 * @param classes A key/value map or string of CSS classes that will be added to the
14023 * given element. Any missing classes (that have already been applied to the element
14024 * beforehand) will be removed (unset) from the element's list of CSS classes.
14025 *
14026 * @codeGenApi
14027 */
14028export declare function ɵɵclassMap(classes: {
14029 [className: string]: boolean | undefined | null;
14030} | string | undefined | null): void;
14031
14032
14033/**
14034 *
14035 * Update an interpolated class on an element with single bound value surrounded by text.
14036 *
14037 * Used when the value passed to a property has 1 interpolated value in it:
14038 *
14039 * ```html
14040 * <div class="prefix{{v0}}suffix"></div>
14041 * ```
14042 *
14043 * Its compiled representation is:
14044 *
14045 * ```ts
14046 * ɵɵclassMapInterpolate1('prefix', v0, 'suffix');
14047 * ```
14048 *
14049 * @param prefix Static value used for concatenation only.
14050 * @param v0 Value checked for change.
14051 * @param suffix Static value used for concatenation only.
14052 * @codeGenApi
14053 */
14054export declare function ɵɵclassMapInterpolate1(prefix: string, v0: any, suffix: string): void;
14055
14056/**
14057 *
14058 * Update an interpolated class on an element with 2 bound values surrounded by text.
14059 *
14060 * Used when the value passed to a property has 2 interpolated values in it:
14061 *
14062 * ```html
14063 * <div class="prefix{{v0}}-{{v1}}suffix"></div>
14064 * ```
14065 *
14066 * Its compiled representation is:
14067 *
14068 * ```ts
14069 * ɵɵclassMapInterpolate2('prefix', v0, '-', v1, 'suffix');
14070 * ```
14071 *
14072 * @param prefix Static value used for concatenation only.
14073 * @param v0 Value checked for change.
14074 * @param i0 Static value used for concatenation only.
14075 * @param v1 Value checked for change.
14076 * @param suffix Static value used for concatenation only.
14077 * @codeGenApi
14078 */
14079export declare function ɵɵclassMapInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): void;
14080
14081/**
14082 *
14083 * Update an interpolated class on an element with 3 bound values surrounded by text.
14084 *
14085 * Used when the value passed to a property has 3 interpolated values in it:
14086 *
14087 * ```html
14088 * <div class="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
14089 * ```
14090 *
14091 * Its compiled representation is:
14092 *
14093 * ```ts
14094 * ɵɵclassMapInterpolate3(
14095 * 'prefix', v0, '-', v1, '-', v2, 'suffix');
14096 * ```
14097 *
14098 * @param prefix Static value used for concatenation only.
14099 * @param v0 Value checked for change.
14100 * @param i0 Static value used for concatenation only.
14101 * @param v1 Value checked for change.
14102 * @param i1 Static value used for concatenation only.
14103 * @param v2 Value checked for change.
14104 * @param suffix Static value used for concatenation only.
14105 * @codeGenApi
14106 */
14107export declare function ɵɵclassMapInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): void;
14108
14109/**
14110 *
14111 * Update an interpolated class on an element with 4 bound values surrounded by text.
14112 *
14113 * Used when the value passed to a property has 4 interpolated values in it:
14114 *
14115 * ```html
14116 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
14117 * ```
14118 *
14119 * Its compiled representation is:
14120 *
14121 * ```ts
14122 * ɵɵclassMapInterpolate4(
14123 * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
14124 * ```
14125 *
14126 * @param prefix Static value used for concatenation only.
14127 * @param v0 Value checked for change.
14128 * @param i0 Static value used for concatenation only.
14129 * @param v1 Value checked for change.
14130 * @param i1 Static value used for concatenation only.
14131 * @param v2 Value checked for change.
14132 * @param i2 Static value used for concatenation only.
14133 * @param v3 Value checked for change.
14134 * @param suffix Static value used for concatenation only.
14135 * @codeGenApi
14136 */
14137export declare function ɵɵclassMapInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): void;
14138
14139/**
14140 *
14141 * Update an interpolated class on an element with 5 bound values surrounded by text.
14142 *
14143 * Used when the value passed to a property has 5 interpolated values in it:
14144 *
14145 * ```html
14146 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
14147 * ```
14148 *
14149 * Its compiled representation is:
14150 *
14151 * ```ts
14152 * ɵɵclassMapInterpolate5(
14153 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
14154 * ```
14155 *
14156 * @param prefix Static value used for concatenation only.
14157 * @param v0 Value checked for change.
14158 * @param i0 Static value used for concatenation only.
14159 * @param v1 Value checked for change.
14160 * @param i1 Static value used for concatenation only.
14161 * @param v2 Value checked for change.
14162 * @param i2 Static value used for concatenation only.
14163 * @param v3 Value checked for change.
14164 * @param i3 Static value used for concatenation only.
14165 * @param v4 Value checked for change.
14166 * @param suffix Static value used for concatenation only.
14167 * @codeGenApi
14168 */
14169export declare function ɵɵclassMapInterpolate5(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string): void;
14170
14171/**
14172 *
14173 * Update an interpolated class on an element with 6 bound values surrounded by text.
14174 *
14175 * Used when the value passed to a property has 6 interpolated values in it:
14176 *
14177 * ```html
14178 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
14179 * ```
14180 *
14181 * Its compiled representation is:
14182 *
14183 * ```ts
14184 * ɵɵclassMapInterpolate6(
14185 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
14186 * ```
14187 *
14188 * @param prefix Static value used for concatenation only.
14189 * @param v0 Value checked for change.
14190 * @param i0 Static value used for concatenation only.
14191 * @param v1 Value checked for change.
14192 * @param i1 Static value used for concatenation only.
14193 * @param v2 Value checked for change.
14194 * @param i2 Static value used for concatenation only.
14195 * @param v3 Value checked for change.
14196 * @param i3 Static value used for concatenation only.
14197 * @param v4 Value checked for change.
14198 * @param i4 Static value used for concatenation only.
14199 * @param v5 Value checked for change.
14200 * @param suffix Static value used for concatenation only.
14201 * @codeGenApi
14202 */
14203export declare function ɵɵclassMapInterpolate6(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string): void;
14204
14205/**
14206 *
14207 * Update an interpolated class on an element with 7 bound values surrounded by text.
14208 *
14209 * Used when the value passed to a property has 7 interpolated values in it:
14210 *
14211 * ```html
14212 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
14213 * ```
14214 *
14215 * Its compiled representation is:
14216 *
14217 * ```ts
14218 * ɵɵclassMapInterpolate7(
14219 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
14220 * ```
14221 *
14222 * @param prefix Static value used for concatenation only.
14223 * @param v0 Value checked for change.
14224 * @param i0 Static value used for concatenation only.
14225 * @param v1 Value checked for change.
14226 * @param i1 Static value used for concatenation only.
14227 * @param v2 Value checked for change.
14228 * @param i2 Static value used for concatenation only.
14229 * @param v3 Value checked for change.
14230 * @param i3 Static value used for concatenation only.
14231 * @param v4 Value checked for change.
14232 * @param i4 Static value used for concatenation only.
14233 * @param v5 Value checked for change.
14234 * @param i5 Static value used for concatenation only.
14235 * @param v6 Value checked for change.
14236 * @param suffix Static value used for concatenation only.
14237 * @codeGenApi
14238 */
14239export declare function ɵɵclassMapInterpolate7(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string): void;
14240
14241/**
14242 *
14243 * Update an interpolated class on an element with 8 bound values surrounded by text.
14244 *
14245 * Used when the value passed to a property has 8 interpolated values in it:
14246 *
14247 * ```html
14248 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
14249 * ```
14250 *
14251 * Its compiled representation is:
14252 *
14253 * ```ts
14254 * ɵɵclassMapInterpolate8(
14255 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
14256 * ```
14257 *
14258 * @param prefix Static value used for concatenation only.
14259 * @param v0 Value checked for change.
14260 * @param i0 Static value used for concatenation only.
14261 * @param v1 Value checked for change.
14262 * @param i1 Static value used for concatenation only.
14263 * @param v2 Value checked for change.
14264 * @param i2 Static value used for concatenation only.
14265 * @param v3 Value checked for change.
14266 * @param i3 Static value used for concatenation only.
14267 * @param v4 Value checked for change.
14268 * @param i4 Static value used for concatenation only.
14269 * @param v5 Value checked for change.
14270 * @param i5 Static value used for concatenation only.
14271 * @param v6 Value checked for change.
14272 * @param i6 Static value used for concatenation only.
14273 * @param v7 Value checked for change.
14274 * @param suffix Static value used for concatenation only.
14275 * @codeGenApi
14276 */
14277export declare function ɵɵclassMapInterpolate8(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string): void;
14278
14279/**
14280 * Update an interpolated class on an element with 9 or more bound values surrounded by text.
14281 *
14282 * Used when the number of interpolated values exceeds 8.
14283 *
14284 * ```html
14285 * <div
14286 * class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
14287 * ```
14288 *
14289 * Its compiled representation is:
14290 *
14291 * ```ts
14292 * ɵɵclassMapInterpolateV(
14293 * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
14294 * 'suffix']);
14295 * ```
14296 *.
14297 * @param values The collection of values and the strings in-between those values, beginning with
14298 * a string prefix and ending with a string suffix.
14299 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
14300 * @codeGenApi
14301 */
14302export declare function ɵɵclassMapInterpolateV(values: any[]): void;
14303
14304/**
14305 * Update a class binding on an element with the provided value.
14306 *
14307 * This instruction is meant to handle the `[class.foo]="exp"` case and,
14308 * therefore, the class binding itself must already be allocated using
14309 * `styling` within the creation block.
14310 *
14311 * @param prop A valid CSS class (only one).
14312 * @param value A true/false value which will turn the class on or off.
14313 *
14314 * Note that this will apply the provided class value to the host element if this function
14315 * is called within a host binding function.
14316 *
14317 * @codeGenApi
14318 */
14319export declare function ɵɵclassProp(className: string, value: boolean | undefined | null): typeof ɵɵclassProp;
14320
14321/**
14322 * @publicApi
14323 */
14324export declare type ɵɵComponentDeclaration<T, Selector extends String, ExportAs extends string[], InputMap extends {
14325 [key: string]: string | {
14326 alias: string | null;
14327 required: boolean;
14328 };
14329}, OutputMap extends {
14330 [key: string]: string;
14331}, QueryFields extends string[], NgContentSelectors extends string[], IsStandalone extends boolean = false, HostDirectives = never, IsSignal extends boolean = false> = unknown;
14332
14333/**
14334 * Instruction that returns the component instance in which the current instruction is executing.
14335 * This is a constant-time version of `nextContent` for the case where we know that we need the
14336 * component instance specifically, rather than the context of a particular template.
14337 *
14338 * @codeGenApi
14339 */
14340export declare function ɵɵcomponentInstance(): unknown;
14341
14342/**
14343 * The conditional instruction represents the basic building block on the runtime side to support
14344 * built-in "if" and "switch". On the high level this instruction is responsible for adding and
14345 * removing views selected by a conditional expression.
14346 *
14347 * @param containerIndex index of a container in a host view (indexed from HEADER_OFFSET) where
14348 * conditional views should be inserted.
14349 * @param matchingTemplateIndex index of a template TNode representing a conditional view to be
14350 * inserted; -1 represents a special case when there is no view to insert.
14351 * @codeGenApi
14352 */
14353export declare function ɵɵconditional<T>(containerIndex: number, matchingTemplateIndex: number, value?: T): void;
14354
14355/**
14356 * Registers a QueryList, associated with a content query, for later refresh (part of a view
14357 * refresh).
14358 *
14359 * @param directiveIndex Current directive index
14360 * @param predicate The type for which the query will search
14361 * @param flags Flags associated with the query
14362 * @param read What to save in the query
14363 * @returns QueryList<T>
14364 *
14365 * @codeGenApi
14366 */
14367export declare function ɵɵcontentQuery<T>(directiveIndex: number, predicate: ProviderToken<unknown> | string | string[], flags: QueryFlags, read?: any): void;
14368
14369/**
14370 * Creates a new content query and binds it to a signal created by an authoring function.
14371 *
14372 * @param directiveIndex Current directive index
14373 * @param target The target signal to which the query should be bound
14374 * @param predicate The type for which the query will search
14375 * @param flags Flags associated with the query
14376 * @param read What to save in the query
14377 *
14378 * @codeGenApi
14379 */
14380export declare function ɵɵcontentQuerySignal<T>(directiveIndex: number, target: Signal<T>, predicate: ProviderToken<unknown> | string[], flags: QueryFlags, read?: any): void;
14381
14382/**
14383 * Copies the fields not handled by the `ɵɵInheritDefinitionFeature` from the supertype of a
14384 * definition.
14385 *
14386 * This exists primarily to support ngcc migration of an existing View Engine pattern, where an
14387 * entire decorator is inherited from a parent to a child class. When ngcc detects this case, it
14388 * generates a skeleton definition on the child class, and applies this feature.
14389 *
14390 * The `ɵɵCopyDefinitionFeature` then copies any needed fields from the parent class' definition,
14391 * including things like the component template function.
14392 *
14393 * @param definition The definition of a child class which inherits from a parent class with its
14394 * own definition.
14395 *
14396 * @codeGenApi
14397 */
14398export declare function ɵɵCopyDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void;
14399
14400/**
14401 * Creates runtime data structures for defer blocks.
14402 *
14403 * @param index Index of the `defer` instruction.
14404 * @param primaryTmplIndex Index of the template with the primary block content.
14405 * @param dependencyResolverFn Function that contains dependencies for this defer block.
14406 * @param loadingTmplIndex Index of the template with the loading block content.
14407 * @param placeholderTmplIndex Index of the template with the placeholder block content.
14408 * @param errorTmplIndex Index of the template with the error block content.
14409 * @param loadingConfigIndex Index in the constants array of the configuration of the loading.
14410 * block.
14411 * @param placeholderConfigIndex Index in the constants array of the configuration of the
14412 * placeholder block.
14413 * @param enableTimerScheduling Function that enables timer-related scheduling if `after`
14414 * or `minimum` parameters are setup on the `@loading` or `@placeholder` blocks.
14415 *
14416 * @codeGenApi
14417 */
14418export declare function ɵɵdefer(index: number, primaryTmplIndex: number, dependencyResolverFn?: DependencyResolverFn | null, loadingTmplIndex?: number | null, placeholderTmplIndex?: number | null, errorTmplIndex?: number | null, loadingConfigIndex?: number | null, placeholderConfigIndex?: number | null, enableTimerScheduling?: typeof ɵɵdeferEnableTimerScheduling): void;
14419
14420/**
14421 * Enables timer-related scheduling if `after` or `minimum` parameters are setup
14422 * on the `@loading` or `@placeholder` blocks.
14423 */
14424export declare function ɵɵdeferEnableTimerScheduling(tView: TView, tDetails: TDeferBlockDetails, placeholderConfigIndex?: number | null, loadingConfigIndex?: number | null): void;
14425
14426/**
14427 * Creates runtime data structures for the `on hover` deferred trigger.
14428 * @param triggerIndex Index at which to find the trigger element.
14429 * @param walkUpTimes Number of times to walk up/down the tree hierarchy to find the trigger.
14430 * @codeGenApi
14431 */
14432export declare function ɵɵdeferOnHover(triggerIndex: number, walkUpTimes?: number): void;
14433
14434/**
14435 * Sets up logic to handle the `on idle` deferred trigger.
14436 * @codeGenApi
14437 */
14438export declare function ɵɵdeferOnIdle(): void;
14439
14440/**
14441 * Sets up logic to handle the `on immediate` deferred trigger.
14442 * @codeGenApi
14443 */
14444export declare function ɵɵdeferOnImmediate(): void;
14445
14446/**
14447 * Creates runtime data structures for the `on interaction` deferred trigger.
14448 * @param triggerIndex Index at which to find the trigger element.
14449 * @param walkUpTimes Number of times to walk up/down the tree hierarchy to find the trigger.
14450 * @codeGenApi
14451 */
14452export declare function ɵɵdeferOnInteraction(triggerIndex: number, walkUpTimes?: number): void;
14453
14454/**
14455 * Creates runtime data structures for the `on timer` deferred trigger.
14456 * @param delay Amount of time to wait before loading the content.
14457 * @codeGenApi
14458 */
14459export declare function ɵɵdeferOnTimer(delay: number): void;
14460
14461/**
14462 * Creates runtime data structures for the `on viewport` deferred trigger.
14463 * @param triggerIndex Index at which to find the trigger element.
14464 * @param walkUpTimes Number of times to walk up/down the tree hierarchy to find the trigger.
14465 * @codeGenApi
14466 */
14467export declare function ɵɵdeferOnViewport(triggerIndex: number, walkUpTimes?: number): void;
14468
14469/**
14470 * Creates runtime data structures for the `prefetch on hover` deferred trigger.
14471 * @param triggerIndex Index at which to find the trigger element.
14472 * @param walkUpTimes Number of times to walk up/down the tree hierarchy to find the trigger.
14473 * @codeGenApi
14474 */
14475export declare function ɵɵdeferPrefetchOnHover(triggerIndex: number, walkUpTimes?: number): void;
14476
14477/**
14478 * Sets up logic to handle the `prefetch on idle` deferred trigger.
14479 * @codeGenApi
14480 */
14481export declare function ɵɵdeferPrefetchOnIdle(): void;
14482
14483/**
14484 * Sets up logic to handle the `prefetch on immediate` deferred trigger.
14485 * @codeGenApi
14486 */
14487export declare function ɵɵdeferPrefetchOnImmediate(): void;
14488
14489/**
14490 * Creates runtime data structures for the `prefetch on interaction` deferred trigger.
14491 * @param triggerIndex Index at which to find the trigger element.
14492 * @param walkUpTimes Number of times to walk up/down the tree hierarchy to find the trigger.
14493 * @codeGenApi
14494 */
14495export declare function ɵɵdeferPrefetchOnInteraction(triggerIndex: number, walkUpTimes?: number): void;
14496
14497/**
14498 * Creates runtime data structures for the `prefetch on timer` deferred trigger.
14499 * @param delay Amount of time to wait before prefetching the content.
14500 * @codeGenApi
14501 */
14502export declare function ɵɵdeferPrefetchOnTimer(delay: number): void;
14503
14504/**
14505 * Creates runtime data structures for the `prefetch on viewport` deferred trigger.
14506 * @param triggerIndex Index at which to find the trigger element.
14507 * @param walkUpTimes Number of times to walk up/down the tree hierarchy to find the trigger.
14508 * @codeGenApi
14509 */
14510export declare function ɵɵdeferPrefetchOnViewport(triggerIndex: number, walkUpTimes?: number): void;
14511
14512/**
14513 * Prefetches the deferred content when a value becomes truthy.
14514 * @codeGenApi
14515 */
14516export declare function ɵɵdeferPrefetchWhen(rawValue: unknown): void;
14517
14518/**
14519 * Loads defer block dependencies when a trigger value becomes truthy.
14520 * @codeGenApi
14521 */
14522export declare function ɵɵdeferWhen(rawValue: unknown): void;
14523
14524/**
14525 * Create a component definition object.
14526 *
14527 *
14528 * # Example
14529 * ```
14530 * class MyComponent {
14531 * // Generated by Angular Template Compiler
14532 * // [Symbol] syntax will not be supported by TypeScript until v2.7
14533 * static ɵcmp = defineComponent({
14534 * ...
14535 * });
14536 * }
14537 * ```
14538 * @codeGenApi
14539 */
14540export declare function ɵɵdefineComponent<T>(componentDefinition: ComponentDefinition<T>): MutableComponentDef<any>, keyof ɵComponentDef<any>>;
14541
14542/**
14543 * Create a directive definition object.
14544 *
14545 * # Example
14546 * ```ts
14547 * class MyDirective {
14548 * // Generated by Angular Template Compiler
14549 * // [Symbol] syntax will not be supported by TypeScript until v2.7
14550 * static ɵdir = ɵɵdefineDirective({
14551 * ...
14552 * });
14553 * }
14554 * ```
14555 *
14556 * @codeGenApi
14557 */
14558export declare function ɵɵdefineDirective<T>(directiveDefinition: DirectiveDefinition<T>): MutableDirectiveDef<any>, keyof ɵDirectiveDef<any>>;
14559
14560/**
14561 * Construct an injectable definition which defines how a token will be constructed by the DI
14562 * system, and in which injectors (if any) it will be available.
14563 *
14564 * This should be assigned to a static `ɵprov` field on a type, which will then be an
14565 * `InjectableType`.
14566 *
14567 * Options:
14568 * * `providedIn` determines which injectors will include the injectable, by either associating it
14569 * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be
14570 * provided in the `'root'` injector, which will be the application-level injector in most apps.
14571 * * `factory` gives the zero argument function which will create an instance of the injectable.
14572 * The factory can call [`inject`](api/core/inject) to access the `Injector` and request injection
14573 * of dependencies.
14574 *
14575 * @codeGenApi
14576 * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.
14577 */
14578export declare function ɵɵdefineInjectable<T>(opts: {
14579 token: unknown;
14580 providedIn?: Type<any> | 'root' | 'platform' | 'any' | 'environment' | null;
14581 factory: () => T;
14582}): unknown;
14583
14584/**
14585 * Construct an `InjectorDef` which configures an injector.
14586 *
14587 * This should be assigned to a static injector def (`ɵinj`) field on a type, which will then be an
14588 * `InjectorType`.
14589 *
14590 * Options:
14591 *
14592 * * `providers`: an optional array of providers to add to the injector. Each provider must
14593 * either have a factory or point to a type which has a `ɵprov` static property (the
14594 * type must be an `InjectableType`).
14595 * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s
14596 * whose providers will also be added to the injector. Locally provided types will override
14597 * providers from imports.
14598 *
14599 * @codeGenApi
14600 */
14601export declare function ɵɵdefineInjector(options: {
14602 providers?: any[];
14603 imports?: any[];
14604}): unknown;
14605
14606/**
14607 * @codeGenApi
14608 */
14609export declare function ɵɵdefineNgModule<T>(def: {
14610 /** Token representing the module. Used by DI. */
14611 type: T;
14612 /** List of components to bootstrap. */
14613 bootstrap?: Type<any>[] | (() => Type<any>[]);
14614 /** List of components, directives, and pipes declared by this module. */
14615 declarations?: Type<any>[] | (() => Type<any>[]);
14616 /** List of modules or `ModuleWithProviders` imported by this module. */
14617 imports?: Type<any>[] | (() => Type<any>[]);
14618 /**
14619 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
14620 * module.
14621 */
14622 exports?: Type<any>[] | (() => Type<any>[]);
14623 /** The set of schemas that declare elements to be allowed in the NgModule. */
14624 schemas?: SchemaMetadata[] | null;
14625 /** Unique ID for the module that is used with `getModuleFactory`. */
14626 id?: string | null;
14627}): unknown;
14628
14629/**
14630 * Create a pipe definition object.
14631 *
14632 * # Example
14633 * ```
14634 * class MyPipe implements PipeTransform {
14635 * // Generated by Angular Template Compiler
14636 * static ɵpipe = definePipe({
14637 * ...
14638 * });
14639 * }
14640 * ```
14641 * @param pipeDef Pipe definition generated by the compiler
14642 *
14643 * @codeGenApi
14644 */
14645export declare function ɵɵdefinePipe<T>(pipeDef: {
14646 /** Name of the pipe. Used for matching pipes in template to pipe defs. */
14647 name: string;
14648 /** Pipe class reference. Needed to extract pipe lifecycle hooks. */
14649 type: Type<T>;
14650 /** Whether the pipe is pure. */
14651 pure?: boolean;
14652 /**
14653 * Whether the pipe is standalone.
14654 */
14655 standalone?: boolean;
14656}): unknown;
14657
14658
14659/**
14660 * @publicApi
14661 */
14662export declare type ɵɵDirectiveDeclaration<T, Selector extends string, ExportAs extends string[], InputMap extends {
14663 [key: string]: string | {
14664 alias: string | null;
14665 required: boolean;
14666 isSignal?: boolean;
14667 };
14668}, OutputMap extends {
14669 [key: string]: string;
14670}, QueryFields extends string[], NgContentSelectors extends never = never, IsStandalone extends boolean = false, HostDirectives = never, IsSignal extends boolean = false> = unknown;
14671
14672/**
14673 * Returns the value associated to the given token from the injectors.
14674 *
14675 * `directiveInject` is intended to be used for directive, component and pipe factories.
14676 * All other injection use `inject` which does not walk the node injector tree.
14677 *
14678 * Usage example (in factory function):
14679 *
14680 * ```ts
14681 * class SomeDirective {
14682 * constructor(directive: DirectiveA) {}
14683 *
14684 * static ɵdir = ɵɵdefineDirective({
14685 * type: SomeDirective,
14686 * factory: () => new SomeDirective(ɵɵdirectiveInject(DirectiveA))
14687 * });
14688 * }
14689 * ```
14690 * @param token the type or token to inject
14691 * @param flags Injection flags
14692 * @returns the value from the injector or `null` when not found
14693 *
14694 * @codeGenApi
14695 */
14696export declare function ɵɵdirectiveInject<T>(token: ProviderToken<T>): T;
14697
14698export declare function ɵɵdirectiveInject<T>(token: ProviderToken<T>, flags: InjectFlags): T;
14699
14700/**
14701 * Disables directive matching on element.
14702 *
14703 * * Example:
14704 * ```
14705 * <my-comp my-directive>
14706 * Should match component / directive.
14707 * </my-comp>
14708 * <div ngNonBindable>
14709 * <!-- ɵɵdisableBindings() -->
14710 * <my-comp my-directive>
14711 * Should not match component / directive because we are in ngNonBindable.
14712 * </my-comp>
14713 * <!-- ɵɵenableBindings() -->
14714 * </div>
14715 * ```
14716 *
14717 * @codeGenApi
14718 */
14719export declare function ɵɵdisableBindings(): void;
14720
14721/**
14722 * Creates an empty element using {@link elementStart} and {@link elementEnd}
14723 *
14724 * @param index Index of the element in the data array
14725 * @param name Name of the DOM Node
14726 * @param attrsIndex Index of the element's attributes in the `consts` array.
14727 * @param localRefsIndex Index of the element's local references in the `consts` array.
14728 * @returns This function returns itself so that it may be chained.
14729 *
14730 * @codeGenApi
14731 */
14732export declare function ɵɵelement(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): typeof ɵɵelement;
14733
14734/**
14735 * Creates an empty logical container using {@link elementContainerStart}
14736 * and {@link elementContainerEnd}
14737 *
14738 * @param index Index of the element in the LView array
14739 * @param attrsIndex Index of the container attributes in the `consts` array.
14740 * @param localRefsIndex Index of the container's local references in the `consts` array.
14741 * @returns This function returns itself so that it may be chained.
14742 *
14743 * @codeGenApi
14744 */
14745export declare function ɵɵelementContainer(index: number, attrsIndex?: number | null, localRefsIndex?: number): typeof ɵɵelementContainer;
14746
14747/**
14748 * Mark the end of the <ng-container>.
14749 * @returns This function returns itself so that it may be chained.
14750 *
14751 * @codeGenApi
14752 */
14753export declare function ɵɵelementContainerEnd(): typeof ɵɵelementContainerEnd;
14754
14755/**
14756 * Creates a logical container for other nodes (<ng-container>) backed by a comment node in the DOM.
14757 * The instruction must later be followed by `elementContainerEnd()` call.
14758 *
14759 * @param index Index of the element in the LView array
14760 * @param attrsIndex Index of the container attributes in the `consts` array.
14761 * @param localRefsIndex Index of the container's local references in the `consts` array.
14762 * @returns This function returns itself so that it may be chained.
14763 *
14764 * Even if this instruction accepts a set of attributes no actual attribute values are propagated to
14765 * the DOM (as a comment node can't have attributes). Attributes are here only for directive
14766 * matching purposes and setting initial inputs of directives.
14767 *
14768 * @codeGenApi
14769 */
14770export declare function ɵɵelementContainerStart(index: number, attrsIndex?: number | null, localRefsIndex?: number): typeof ɵɵelementContainerStart;
14771
14772/**
14773 * Mark the end of the element.
14774 * @returns This function returns itself so that it may be chained.
14775 *
14776 * @codeGenApi
14777 */
14778export declare function ɵɵelementEnd(): typeof ɵɵelementEnd;
14779
14780
14781/**
14782 * Create DOM element. The instruction must later be followed by `elementEnd()` call.
14783 *
14784 * @param index Index of the element in the LView array
14785 * @param name Name of the DOM Node
14786 * @param attrsIndex Index of the element's attributes in the `consts` array.
14787 * @param localRefsIndex Index of the element's local references in the `consts` array.
14788 * @returns This function returns itself so that it may be chained.
14789 *
14790 * Attributes and localRefs are passed as an array of strings where elements with an even index
14791 * hold an attribute name and elements with an odd index hold an attribute value, ex.:
14792 * ['id', 'warning5', 'class', 'alert']
14793 *
14794 * @codeGenApi
14795 */
14796export declare function ɵɵelementStart(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): typeof ɵɵelementStart;
14797
14798/**
14799 * Enables directive matching on elements.
14800 *
14801 * * Example:
14802 * ```
14803 * <my-comp my-directive>
14804 * Should match component / directive.
14805 * </my-comp>
14806 * <div ngNonBindable>
14807 * <!-- ɵɵdisableBindings() -->
14808 * <my-comp my-directive>
14809 * Should not match component / directive because we are in ngNonBindable.
14810 * </my-comp>
14811 * <!-- ɵɵenableBindings() -->
14812 * </div>
14813 * ```
14814 *
14815 * @codeGenApi
14816 */
14817export declare function ɵɵenableBindings(): void;
14818
14819/**
14820 * @publicApi
14821 */
14822export declare type ɵɵFactoryDeclaration<T, CtorDependencies extends CtorDependency[]> = unknown;
14823
14824export declare enum ɵɵFactoryTarget {
14825 Directive = 0,
14826 Component = 1,
14827 Injectable = 2,
14828 Pipe = 3,
14829 NgModule = 4
14830}
14831
14832export declare function ɵɵgetComponentDepsFactory(type: ɵComponentType<any>, rawImports?: RawScopeInfoFromDecorator[]): () => DependencyTypeList;
14833
14834/**
14835 * Returns the current OpaqueViewState instance.
14836 *
14837 * Used in conjunction with the restoreView() instruction to save a snapshot
14838 * of the current view and restore it when listeners are invoked. This allows
14839 * walking the declaration view tree in listeners to get vars from parent views.
14840 *
14841 * @codeGenApi
14842 */
14843export declare function ɵɵgetCurrentView(): OpaqueViewState;
14844
14845/**
14846 * @codeGenApi
14847 */
14848export declare function ɵɵgetInheritedFactory<T>(type: Type<any>): (type: Type<T>) => T;
14849
14850/**
14851 * This feature adds the host directives behavior to a directive definition by patching a
14852 * function onto it. The expectation is that the runtime will invoke the function during
14853 * directive matching.
14854 *
14855 * For example:
14856 * ```ts
14857 * class ComponentWithHostDirective {
14858 * static ɵcmp = defineComponent({
14859 * type: ComponentWithHostDirective,
14860 * features: [ɵɵHostDirectivesFeature([
14861 * SimpleHostDirective,
14862 * {directive: AdvancedHostDirective, inputs: ['foo: alias'], outputs: ['bar']},
14863 * ])]
14864 * });
14865 * }
14866 * ```
14867 *
14868 * @codeGenApi
14869 */
14870export declare function ɵɵHostDirectivesFeature(rawHostDirectives: HostDirectiveConfig[] | (() => HostDirectiveConfig[])): DirectiveDefFeature;
14871
14872/**
14873 * Update a property on a host element. Only applies to native node properties, not inputs.
14874 *
14875 * Operates on the element selected by index via the {@link select} instruction.
14876 *
14877 * @param propName Name of property. Because it is going to DOM, this is not subject to
14878 * renaming as part of minification.
14879 * @param value New value to write.
14880 * @param sanitizer An optional function used to sanitize the value.
14881 * @returns This function returns itself so that it may be chained
14882 * (e.g. `property('name', ctx.name)('title', ctx.title)`)
14883 *
14884 * @codeGenApi
14885 */
14886export declare function ɵɵhostProperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵhostProperty;
14887
14888/**
14889 *
14890 * Use this instruction to create a translation block that doesn't contain any placeholder.
14891 * It calls both {@link i18nStart} and {@link i18nEnd} in one instruction.
14892 *
14893 * The translation `message` is the value which is locale specific. The translation string may
14894 * contain placeholders which associate inner elements and sub-templates within the translation.
14895 *
14896 * The translation `message` placeholders are:
14897 * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be
14898 * interpolated into. The placeholder `index` points to the expression binding index. An optional
14899 * `block` that matches the sub-template in which it was declared.
14900 * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning
14901 * and end of DOM element that were embedded in the original translation block. The placeholder
14902 * `index` points to the element index in the template instructions set. An optional `block` that
14903 * matches the sub-template in which it was declared.
14904 * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be
14905 * split up and translated separately in each angular template function. The `index` points to the
14906 * `template` instruction index. A `block` that matches the sub-template in which it was declared.
14907 *
14908 * @param index A unique index of the translation in the static block.
14909 * @param messageIndex An index of the translation message from the `def.consts` array.
14910 * @param subTemplateIndex Optional sub-template index in the `message`.
14911 *
14912 * @codeGenApi
14913 */
14914export declare function ɵɵi18n(index: number, messageIndex: number, subTemplateIndex?: number): void;
14915
14916/**
14917 * Updates a translation block or an i18n attribute when the bindings have changed.
14918 *
14919 * @param index Index of either {@link i18nStart} (translation block) or {@link i18nAttributes}
14920 * (i18n attribute) on which it should update the content.
14921 *
14922 * @codeGenApi
14923 */
14924export declare function ɵɵi18nApply(index: number): void;
14925
14926/**
14927 * Marks a list of attributes as translatable.
14928 *
14929 * @param index A unique index in the static block
14930 * @param values
14931 *
14932 * @codeGenApi
14933 */
14934export declare function ɵɵi18nAttributes(index: number, attrsIndex: number): void;
14935
14936/**
14937 * Translates a translation block marked by `i18nStart` and `i18nEnd`. It inserts the text/ICU nodes
14938 * into the render tree, moves the placeholder nodes and removes the deleted nodes.
14939 *
14940 * @codeGenApi
14941 */
14942export declare function ɵɵi18nEnd(): void;
14943
14944/**
14945 * Stores the values of the bindings during each update cycle in order to determine if we need to
14946 * update the translated nodes.
14947 *
14948 * @param value The binding's value
14949 * @returns This function returns itself so that it may be chained
14950 * (e.g. `i18nExp(ctx.name)(ctx.title)`)
14951 *
14952 * @codeGenApi
14953 */
14954export declare function ɵɵi18nExp<T>(value: T): typeof ɵɵi18nExp;
14955
14956/**
14957 * Handles message string post-processing for internationalization.
14958 *
14959 * Handles message string post-processing by transforming it from intermediate
14960 * format (that might contain some markers that we need to replace) to the final
14961 * form, consumable by i18nStart instruction. Post processing steps include:
14962 *
14963 * 1. Resolve all multi-value cases (like [�*1:1��#2:1�|�#4:1�|�5�])
14964 * 2. Replace all ICU vars (like "VAR_PLURAL")
14965 * 3. Replace all placeholders used inside ICUs in a form of {PLACEHOLDER}
14966 * 4. Replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�)
14967 * in case multiple ICUs have the same placeholder name
14968 *
14969 * @param message Raw translation string for post processing
14970 * @param replacements Set of replacements that should be applied
14971 *
14972 * @returns Transformed string that can be consumed by i18nStart instruction
14973 *
14974 * @codeGenApi
14975 */
14976export declare function ɵɵi18nPostprocess(message: string, replacements?: {
14977 [key: string]: (string | string[]);
14978}): string;
14979
14980/**
14981 * Marks a block of text as translatable.
14982 *
14983 * The instructions `i18nStart` and `i18nEnd` mark the translation block in the template.
14984 * The translation `message` is the value which is locale specific. The translation string may
14985 * contain placeholders which associate inner elements and sub-templates within the translation.
14986 *
14987 * The translation `message` placeholders are:
14988 * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be
14989 * interpolated into. The placeholder `index` points to the expression binding index. An optional
14990 * `block` that matches the sub-template in which it was declared.
14991 * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning
14992 * and end of DOM element that were embedded in the original translation block. The placeholder
14993 * `index` points to the element index in the template instructions set. An optional `block` that
14994 * matches the sub-template in which it was declared.
14995 * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be
14996 * split up and translated separately in each angular template function. The `index` points to the
14997 * `template` instruction index. A `block` that matches the sub-template in which it was declared.
14998 *
14999 * @param index A unique index of the translation in the static block.
15000 * @param messageIndex An index of the translation message from the `def.consts` array.
15001 * @param subTemplateIndex Optional sub-template index in the `message`.
15002 *
15003 * @codeGenApi
15004 */
15005export declare function ɵɵi18nStart(index: number, messageIndex: number, subTemplateIndex?: number): void;
15006
15007/**
15008 * Merges the definition from a super class to a sub class.
15009 * @param definition The definition that is a SubClass of another directive of component
15010 *
15011 * @codeGenApi
15012 */
15013export declare function ɵɵInheritDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void;
15014
15015/**
15016 * Generated instruction: injects a token from the currently active injector.
15017 *
15018 * (Additional documentation moved to `inject`, as it is the public API, and an alias for this
15019 * instruction)
15020 *
15021 * @see inject
15022 * @codeGenApi
15023 * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.
15024 */
15025export declare function ɵɵinject<T>(token: ProviderToken<T>): T;
15026
15027export declare function ɵɵinject<T>(token: ProviderToken<T>, flags?: InjectFlags): T | null;
15028
15029/**
15030 * Information about how a type or `InjectionToken` interfaces with the DI system.
15031 *
15032 * At a minimum, this includes a `factory` which defines how to create the given type `T`, possibly
15033 * requesting injection of other types if necessary.
15034 *
15035 * Optionally, a `providedIn` parameter specifies that the given type belongs to a particular
15036 * `Injector`, `NgModule`, or a special scope (e.g. `'root'`). A value of `null` indicates
15037 * that the injectable does not belong to any scope.
15038 *
15039 * @codeGenApi
15040 * @publicApi The ViewEngine compiler emits code with this type for injectables. This code is
15041 * deployed to npm, and should be treated as public api.
15042
15043 */
15044export declare interface ɵɵInjectableDeclaration<T> {
15045 /**
15046 * Specifies that the given type belongs to a particular injector:
15047 * - `InjectorType` such as `NgModule`,
15048 * - `'root'` the root injector
15049 * - `'any'` all injectors.
15050 * - `null`, does not belong to any injector. Must be explicitly listed in the injector
15051 * `providers`.
15052 */
15053 providedIn: InjectorType<any> | 'root' | 'platform' | 'any' | 'environment' | null;
15054 /**
15055 * The token to which this definition belongs.
15056 *
15057 * Note that this may not be the same as the type that the `factory` will create.
15058 */
15059 token: unknown;
15060 /**
15061 * Factory method to execute to create an instance of the injectable.
15062 */
15063 factory: (t?: Type<any>) => T;
15064 /**
15065 * In a case of no explicit injector, a location where the instance of the injectable is stored.
15066 */
15067 value: T | undefined;
15068}
15069
15070/**
15071 * Facade for the attribute injection from DI.
15072 *
15073 * @codeGenApi
15074 */
15075export declare function ɵɵinjectAttribute(attrNameToInject: string): string | null;
15076
15077/**
15078 * @publicApi
15079 */
15080export declare type ɵɵInjectorDeclaration<T> = unknown;
15081
15082/**
15083 * Information about the providers to be included in an `Injector` as well as how the given type
15084 * which carries the information should be created by the DI system.
15085 *
15086 * An `InjectorDef` can import other types which have `InjectorDefs`, forming a deep nested
15087 * structure of providers with a defined priority (identically to how `NgModule`s also have
15088 * an import/dependency structure).
15089 *
15090 * NOTE: This is a private type and should not be exported
15091 *
15092 * @codeGenApi
15093 */
15094export declare interface ɵɵInjectorDef<T> {
15095 providers: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | EnvironmentProviders | any[])[];
15096 imports: (InjectorType<any> | InjectorTypeWithProviders<any>)[];
15097}
15098
15099
15100/** Flags describing an input for a directive. */
15101export declare enum ɵɵInputFlags {
15102 None = 0,
15103 SignalBased = 1,
15104 HasDecoratorInputTransform = 2
15105}
15106
15107/**
15108 * Decorates the directive definition with support for input transform functions.
15109 *
15110 * If the directive uses inheritance, the feature should be included before the
15111 * `InheritDefinitionFeature` to ensure that the `inputTransforms` field is populated.
15112 *
15113 * @codeGenApi
15114 */
15115export declare function ɵɵInputTransformsFeature<T>(definition: ɵDirectiveDef<T>): void;
15116
15117/**
15118 * Throws an error indicating that a factory function could not be generated by the compiler for a
15119 * particular class.
15120 *
15121 * This instruction allows the actual error message to be optimized away when ngDevMode is turned
15122 * off, saving bytes of generated code while still providing a good experience in dev mode.
15123 *
15124 * The name of the class is not mentioned here, but will be in the generated factory function name
15125 * and thus in the stack trace.
15126 *
15127 * @codeGenApi
15128 */
15129export declare function ɵɵinvalidFactory(): never;
15130
15131/**
15132 * Throws an error indicating that a factory function could not be generated by the compiler for a
15133 * particular class.
15134 *
15135 * The name of the class is not mentioned here, but will be in the generated factory function name
15136 * and thus in the stack trace.
15137 *
15138 * @codeGenApi
15139 */
15140export declare function ɵɵinvalidFactoryDep(index: number): never;
15141
15142/**
15143 * Adds an event listener to the current node.
15144 *
15145 * If an output exists on one of the node's directives, it also subscribes to the output
15146 * and saves the subscription for later cleanup.
15147 *
15148 * @param eventName Name of the event
15149 * @param listenerFn The function to be called when event emits
15150 * @param useCapture Whether or not to use capture in event listener - this argument is a reminder
15151 * from the Renderer3 infrastructure and should be removed from the instruction arguments
15152 * @param eventTargetResolver Function that returns global target information in case this listener
15153 * should be attached to a global object like window, document or body
15154 *
15155 * @codeGenApi
15156 */
15157export declare function ɵɵlistener(eventName: string, listenerFn: (e?: any) => any, useCapture?: boolean, eventTargetResolver?: GlobalTargetResolver): typeof ɵɵlistener;
15158
15159/**
15160 * Loads a QueryList corresponding to the current view or content query.
15161 *
15162 * @codeGenApi
15163 */
15164export declare function ɵɵloadQuery<T>(): QueryList<T>;
15165
15166/**
15167 * Sets the namespace used to create elements to `null`, which forces element creation to use
15168 * `createElement` rather than `createElementNS`.
15169 *
15170 * @codeGenApi
15171 */
15172export declare function ɵɵnamespaceHTML(): void;
15173
15174/**
15175 * Sets the namespace used to create elements to `'http://www.w3.org/1998/MathML/'` in global state.
15176 *
15177 * @codeGenApi
15178 */
15179export declare function ɵɵnamespaceMathML(): void;
15180
15181/**
15182 * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state.
15183 *
15184 * @codeGenApi
15185 */
15186export declare function ɵɵnamespaceSVG(): void;
15187
15188/**
15189 * Retrieves a context at the level specified and saves it as the global, contextViewData.
15190 * Will get the next level up if level is not specified.
15191 *
15192 * This is used to save contexts of parent views so they can be bound in embedded views, or
15193 * in conjunction with reference() to bind a ref from a parent view.
15194 *
15195 * @param level The relative level of the view from which to grab context compared to contextVewData
15196 * @returns context
15197 *
15198 * @codeGenApi
15199 */
15200export declare function ɵɵnextContext<T = any>(level?: number): T;
15201
15202/**
15203 * Evaluates the class metadata declaration.
15204 *
15205 * @codeGenApi
15206 */
15207export declare function ɵɵngDeclareClassMetadata(decl: {
15208 type: Type<any>;
15209 decorators: any[];
15210 ctorParameters?: () => any[];
15211 propDecorators?: {
15212 [field: string]: any;
15213 };
15214}): void;
15215
15216/**
15217 * Compiles a partial component declaration object into a full component definition object.
15218 *
15219 * @codeGenApi
15220 */
15221export declare function ɵɵngDeclareComponent(decl: R3DeclareComponentFacade): unknown;
15222
15223/**
15224 * Compiles a partial directive declaration object into a full directive definition object.
15225 *
15226 * @codeGenApi
15227 */
15228export declare function ɵɵngDeclareDirective(decl: R3DeclareDirectiveFacade): unknown;
15229
15230/**
15231 * Compiles a partial pipe declaration object into a full pipe definition object.
15232 *
15233 * @codeGenApi
15234 */
15235export declare function ɵɵngDeclareFactory(decl: R3DeclareFactoryFacade): unknown;
15236
15237/**
15238 * Compiles a partial injectable declaration object into a full injectable definition object.
15239 *
15240 * @codeGenApi
15241 */
15242export declare function ɵɵngDeclareInjectable(decl: R3DeclareInjectableFacade): unknown;
15243
15244/**
15245 * Compiles a partial injector declaration object into a full injector definition object.
15246 *
15247 * @codeGenApi
15248 */
15249export declare function ɵɵngDeclareInjector(decl: R3DeclareInjectorFacade): unknown;
15250
15251/**
15252 * Compiles a partial NgModule declaration object into a full NgModule definition object.
15253 *
15254 * @codeGenApi
15255 */
15256export declare function ɵɵngDeclareNgModule(decl: R3DeclareNgModuleFacade): unknown;
15257
15258/**
15259 * Compiles a partial pipe declaration object into a full pipe definition object.
15260 *
15261 * @codeGenApi
15262 */
15263export declare function ɵɵngDeclarePipe(decl: R3DeclarePipeFacade): unknown;
15264
15265/**
15266 * @publicApi
15267 */
15268export declare type ɵɵNgModuleDeclaration<T, Declarations, Imports, Exports> = unknown;
15269
15270/**
15271 * The NgOnChangesFeature decorates a component with support for the ngOnChanges
15272 * lifecycle hook, so it should be included in any component that implements
15273 * that hook.
15274 *
15275 * If the component or directive uses inheritance, the NgOnChangesFeature MUST
15276 * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise
15277 * inherited properties will not be propagated to the ngOnChanges lifecycle
15278 * hook.
15279 *
15280 * Example usage:
15281 *
15282 * ```
15283 * static ɵcmp = defineComponent({
15284 * ...
15285 * inputs: {name: 'publicName'},
15286 * features: [NgOnChangesFeature]
15287 * });
15288 * ```
15289 *
15290 * @codeGenApi
15291 */
15292export declare function ɵɵNgOnChangesFeature<T>(): DirectiveDefFeature;
15293
15294
15295/**
15296 * Create a pipe.
15297 *
15298 * @param index Pipe index where the pipe will be stored.
15299 * @param pipeName The name of the pipe
15300 * @returns T the instance of the pipe.
15301 *
15302 * @codeGenApi
15303 */
15304export declare function ɵɵpipe(index: number, pipeName: string): any;
15305
15306/**
15307 * Invokes a pipe with 1 arguments.
15308 *
15309 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
15310 * the pipe only when an input to the pipe changes.
15311 *
15312 * @param index Pipe index where the pipe was stored on creation.
15313 * @param offset the binding offset
15314 * @param v1 1st argument to {@link PipeTransform#transform}.
15315 *
15316 * @codeGenApi
15317 */
15318export declare function ɵɵpipeBind1(index: number, offset: number, v1: any): any;
15319
15320/**
15321 * Invokes a pipe with 2 arguments.
15322 *
15323 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
15324 * the pipe only when an input to the pipe changes.
15325 *
15326 * @param index Pipe index where the pipe was stored on creation.
15327 * @param slotOffset the offset in the reserved slot space
15328 * @param v1 1st argument to {@link PipeTransform#transform}.
15329 * @param v2 2nd argument to {@link PipeTransform#transform}.
15330 *
15331 * @codeGenApi
15332 */
15333export declare function ɵɵpipeBind2(index: number, slotOffset: number, v1: any, v2: any): any;
15334
15335/**
15336 * Invokes a pipe with 3 arguments.
15337 *
15338 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
15339 * the pipe only when an input to the pipe changes.
15340 *
15341 * @param index Pipe index where the pipe was stored on creation.
15342 * @param slotOffset the offset in the reserved slot space
15343 * @param v1 1st argument to {@link PipeTransform#transform}.
15344 * @param v2 2nd argument to {@link PipeTransform#transform}.
15345 * @param v3 4rd argument to {@link PipeTransform#transform}.
15346 *
15347 * @codeGenApi
15348 */
15349export declare function ɵɵpipeBind3(index: number, slotOffset: number, v1: any, v2: any, v3: any): any;
15350
15351/**
15352 * Invokes a pipe with 4 arguments.
15353 *
15354 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
15355 * the pipe only when an input to the pipe changes.
15356 *
15357 * @param index Pipe index where the pipe was stored on creation.
15358 * @param slotOffset the offset in the reserved slot space
15359 * @param v1 1st argument to {@link PipeTransform#transform}.
15360 * @param v2 2nd argument to {@link PipeTransform#transform}.
15361 * @param v3 3rd argument to {@link PipeTransform#transform}.
15362 * @param v4 4th argument to {@link PipeTransform#transform}.
15363 *
15364 * @codeGenApi
15365 */
15366export declare function ɵɵpipeBind4(index: number, slotOffset: number, v1: any, v2: any, v3: any, v4: any): any;
15367
15368/**
15369 * Invokes a pipe with variable number of arguments.
15370 *
15371 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
15372 * the pipe only when an input to the pipe changes.
15373 *
15374 * @param index Pipe index where the pipe was stored on creation.
15375 * @param slotOffset the offset in the reserved slot space
15376 * @param values Array of arguments to pass to {@link PipeTransform#transform} method.
15377 *
15378 * @codeGenApi
15379 */
15380export declare function ɵɵpipeBindV(index: number, slotOffset: number, values: [any, ...any[]]): any;
15381
15382/**
15383 * @publicApi
15384 */
15385export declare type ɵɵPipeDeclaration<T, Name extends string, IsStandalone extends boolean = false> = unknown;
15386
15387/**
15388 * Inserts previously re-distributed projected nodes. This instruction must be preceded by a call
15389 * to the projectionDef instruction.
15390 *
15391 * @param nodeIndex
15392 * @param selectorIndex:
15393 * - 0 when the selector is `*` (or unspecified as this is the default value),
15394 * - 1 based index of the selector from the {@link projectionDef}
15395 *
15396 * @codeGenApi
15397 */
15398export declare function ɵɵprojection(nodeIndex: number, selectorIndex?: number, attrs?: TAttributes): void;
15399
15400/**
15401 * Instruction to distribute projectable nodes among <ng-content> occurrences in a given template.
15402 * It takes all the selectors from the entire component's template and decides where
15403 * each projected node belongs (it re-distributes nodes among "buckets" where each "bucket" is
15404 * backed by a selector).
15405 *
15406 * This function requires CSS selectors to be provided in 2 forms: parsed (by a compiler) and text,
15407 * un-parsed form.
15408 *
15409 * The parsed form is needed for efficient matching of a node against a given CSS selector.
15410 * The un-parsed, textual form is needed for support of the ngProjectAs attribute.
15411 *
15412 * Having a CSS selector in 2 different formats is not ideal, but alternatives have even more
15413 * drawbacks:
15414 * - having only a textual form would require runtime parsing of CSS selectors;
15415 * - we can't have only a parsed as we can't re-construct textual form from it (as entered by a
15416 * template author).
15417 *
15418 * @param projectionSlots? A collection of projection slots. A projection slot can be based
15419 * on a parsed CSS selectors or set to the wildcard selector ("*") in order to match
15420 * all nodes which do not match any selector. If not specified, a single wildcard
15421 * selector projection slot will be defined.
15422 *
15423 * @codeGenApi
15424 */
15425export declare function ɵɵprojectionDef(projectionSlots?: ProjectionSlots): void;
15426
15427/**
15428 * Update a property on a selected element.
15429 *
15430 * Operates on the element selected by index via the {@link select} instruction.
15431 *
15432 * If the property name also exists as an input property on one of the element's directives,
15433 * the component property will be set instead of the element property. This check must
15434 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled
15435 *
15436 * @param propName Name of property. Because it is going to DOM, this is not subject to
15437 * renaming as part of minification.
15438 * @param value New value to write.
15439 * @param sanitizer An optional function used to sanitize the value.
15440 * @returns This function returns itself so that it may be chained
15441 * (e.g. `property('name', ctx.name)('title', ctx.title)`)
15442 *
15443 * @codeGenApi
15444 */
15445export declare function ɵɵproperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵproperty;
15446
15447/**
15448 *
15449 * Update an interpolated property on an element with a lone bound value
15450 *
15451 * Used when the value passed to a property has 1 interpolated value in it, an no additional text
15452 * surrounds that interpolated value:
15453 *
15454 * ```html
15455 * <div title="{{v0}}"></div>
15456 * ```
15457 *
15458 * Its compiled representation is::
15459 *
15460 * ```ts
15461 * ɵɵpropertyInterpolate('title', v0);
15462 * ```
15463 *
15464 * If the property name also exists as an input property on one of the element's directives,
15465 * the component property will be set instead of the element property. This check must
15466 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15467 *
15468 * @param propName The name of the property to update
15469 * @param prefix Static value used for concatenation only.
15470 * @param v0 Value checked for change.
15471 * @param suffix Static value used for concatenation only.
15472 * @param sanitizer An optional sanitizer function
15473 * @returns itself, so that it may be chained.
15474 * @codeGenApi
15475 */
15476export declare function ɵɵpropertyInterpolate(propName: string, v0: any, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate;
15477
15478/**
15479 *
15480 * Update an interpolated property on an element with single bound value surrounded by text.
15481 *
15482 * Used when the value passed to a property has 1 interpolated value in it:
15483 *
15484 * ```html
15485 * <div title="prefix{{v0}}suffix"></div>
15486 * ```
15487 *
15488 * Its compiled representation is::
15489 *
15490 * ```ts
15491 * ɵɵpropertyInterpolate1('title', 'prefix', v0, 'suffix');
15492 * ```
15493 *
15494 * If the property name also exists as an input property on one of the element's directives,
15495 * the component property will be set instead of the element property. This check must
15496 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15497 *
15498 * @param propName The name of the property to update
15499 * @param prefix Static value used for concatenation only.
15500 * @param v0 Value checked for change.
15501 * @param suffix Static value used for concatenation only.
15502 * @param sanitizer An optional sanitizer function
15503 * @returns itself, so that it may be chained.
15504 * @codeGenApi
15505 */
15506export declare function ɵɵpropertyInterpolate1(propName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate1;
15507
15508/**
15509 *
15510 * Update an interpolated property on an element with 2 bound values surrounded by text.
15511 *
15512 * Used when the value passed to a property has 2 interpolated values in it:
15513 *
15514 * ```html
15515 * <div title="prefix{{v0}}-{{v1}}suffix"></div>
15516 * ```
15517 *
15518 * Its compiled representation is::
15519 *
15520 * ```ts
15521 * ɵɵpropertyInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
15522 * ```
15523 *
15524 * If the property name also exists as an input property on one of the element's directives,
15525 * the component property will be set instead of the element property. This check must
15526 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15527 *
15528 * @param propName The name of the property to update
15529 * @param prefix Static value used for concatenation only.
15530 * @param v0 Value checked for change.
15531 * @param i0 Static value used for concatenation only.
15532 * @param v1 Value checked for change.
15533 * @param suffix Static value used for concatenation only.
15534 * @param sanitizer An optional sanitizer function
15535 * @returns itself, so that it may be chained.
15536 * @codeGenApi
15537 */
15538export declare function ɵɵpropertyInterpolate2(propName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate2;
15539
15540/**
15541 *
15542 * Update an interpolated property on an element with 3 bound values surrounded by text.
15543 *
15544 * Used when the value passed to a property has 3 interpolated values in it:
15545 *
15546 * ```html
15547 * <div title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
15548 * ```
15549 *
15550 * Its compiled representation is::
15551 *
15552 * ```ts
15553 * ɵɵpropertyInterpolate3(
15554 * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
15555 * ```
15556 *
15557 * If the property name also exists as an input property on one of the element's directives,
15558 * the component property will be set instead of the element property. This check must
15559 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15560 *
15561 * @param propName The name of the property to update
15562 * @param prefix Static value used for concatenation only.
15563 * @param v0 Value checked for change.
15564 * @param i0 Static value used for concatenation only.
15565 * @param v1 Value checked for change.
15566 * @param i1 Static value used for concatenation only.
15567 * @param v2 Value checked for change.
15568 * @param suffix Static value used for concatenation only.
15569 * @param sanitizer An optional sanitizer function
15570 * @returns itself, so that it may be chained.
15571 * @codeGenApi
15572 */
15573export declare function ɵɵpropertyInterpolate3(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate3;
15574
15575/**
15576 *
15577 * Update an interpolated property on an element with 4 bound values surrounded by text.
15578 *
15579 * Used when the value passed to a property has 4 interpolated values in it:
15580 *
15581 * ```html
15582 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
15583 * ```
15584 *
15585 * Its compiled representation is::
15586 *
15587 * ```ts
15588 * ɵɵpropertyInterpolate4(
15589 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
15590 * ```
15591 *
15592 * If the property name also exists as an input property on one of the element's directives,
15593 * the component property will be set instead of the element property. This check must
15594 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15595 *
15596 * @param propName The name of the property to update
15597 * @param prefix Static value used for concatenation only.
15598 * @param v0 Value checked for change.
15599 * @param i0 Static value used for concatenation only.
15600 * @param v1 Value checked for change.
15601 * @param i1 Static value used for concatenation only.
15602 * @param v2 Value checked for change.
15603 * @param i2 Static value used for concatenation only.
15604 * @param v3 Value checked for change.
15605 * @param suffix Static value used for concatenation only.
15606 * @param sanitizer An optional sanitizer function
15607 * @returns itself, so that it may be chained.
15608 * @codeGenApi
15609 */
15610export declare function ɵɵpropertyInterpolate4(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate4;
15611
15612/**
15613 *
15614 * Update an interpolated property on an element with 5 bound values surrounded by text.
15615 *
15616 * Used when the value passed to a property has 5 interpolated values in it:
15617 *
15618 * ```html
15619 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
15620 * ```
15621 *
15622 * Its compiled representation is::
15623 *
15624 * ```ts
15625 * ɵɵpropertyInterpolate5(
15626 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
15627 * ```
15628 *
15629 * If the property name also exists as an input property on one of the element's directives,
15630 * the component property will be set instead of the element property. This check must
15631 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15632 *
15633 * @param propName The name of the property to update
15634 * @param prefix Static value used for concatenation only.
15635 * @param v0 Value checked for change.
15636 * @param i0 Static value used for concatenation only.
15637 * @param v1 Value checked for change.
15638 * @param i1 Static value used for concatenation only.
15639 * @param v2 Value checked for change.
15640 * @param i2 Static value used for concatenation only.
15641 * @param v3 Value checked for change.
15642 * @param i3 Static value used for concatenation only.
15643 * @param v4 Value checked for change.
15644 * @param suffix Static value used for concatenation only.
15645 * @param sanitizer An optional sanitizer function
15646 * @returns itself, so that it may be chained.
15647 * @codeGenApi
15648 */
15649export declare function ɵɵpropertyInterpolate5(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate5;
15650
15651/**
15652 *
15653 * Update an interpolated property on an element with 6 bound values surrounded by text.
15654 *
15655 * Used when the value passed to a property has 6 interpolated values in it:
15656 *
15657 * ```html
15658 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
15659 * ```
15660 *
15661 * Its compiled representation is::
15662 *
15663 * ```ts
15664 * ɵɵpropertyInterpolate6(
15665 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
15666 * ```
15667 *
15668 * If the property name also exists as an input property on one of the element's directives,
15669 * the component property will be set instead of the element property. This check must
15670 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15671 *
15672 * @param propName The name of the property to update
15673 * @param prefix Static value used for concatenation only.
15674 * @param v0 Value checked for change.
15675 * @param i0 Static value used for concatenation only.
15676 * @param v1 Value checked for change.
15677 * @param i1 Static value used for concatenation only.
15678 * @param v2 Value checked for change.
15679 * @param i2 Static value used for concatenation only.
15680 * @param v3 Value checked for change.
15681 * @param i3 Static value used for concatenation only.
15682 * @param v4 Value checked for change.
15683 * @param i4 Static value used for concatenation only.
15684 * @param v5 Value checked for change.
15685 * @param suffix Static value used for concatenation only.
15686 * @param sanitizer An optional sanitizer function
15687 * @returns itself, so that it may be chained.
15688 * @codeGenApi
15689 */
15690export declare function ɵɵpropertyInterpolate6(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate6;
15691
15692/**
15693 *
15694 * Update an interpolated property on an element with 7 bound values surrounded by text.
15695 *
15696 * Used when the value passed to a property has 7 interpolated values in it:
15697 *
15698 * ```html
15699 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
15700 * ```
15701 *
15702 * Its compiled representation is::
15703 *
15704 * ```ts
15705 * ɵɵpropertyInterpolate7(
15706 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
15707 * ```
15708 *
15709 * If the property name also exists as an input property on one of the element's directives,
15710 * the component property will be set instead of the element property. This check must
15711 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15712 *
15713 * @param propName The name of the property to update
15714 * @param prefix Static value used for concatenation only.
15715 * @param v0 Value checked for change.
15716 * @param i0 Static value used for concatenation only.
15717 * @param v1 Value checked for change.
15718 * @param i1 Static value used for concatenation only.
15719 * @param v2 Value checked for change.
15720 * @param i2 Static value used for concatenation only.
15721 * @param v3 Value checked for change.
15722 * @param i3 Static value used for concatenation only.
15723 * @param v4 Value checked for change.
15724 * @param i4 Static value used for concatenation only.
15725 * @param v5 Value checked for change.
15726 * @param i5 Static value used for concatenation only.
15727 * @param v6 Value checked for change.
15728 * @param suffix Static value used for concatenation only.
15729 * @param sanitizer An optional sanitizer function
15730 * @returns itself, so that it may be chained.
15731 * @codeGenApi
15732 */
15733export declare function ɵɵpropertyInterpolate7(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate7;
15734
15735/**
15736 *
15737 * Update an interpolated property on an element with 8 bound values surrounded by text.
15738 *
15739 * Used when the value passed to a property has 8 interpolated values in it:
15740 *
15741 * ```html
15742 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
15743 * ```
15744 *
15745 * Its compiled representation is::
15746 *
15747 * ```ts
15748 * ɵɵpropertyInterpolate8(
15749 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
15750 * ```
15751 *
15752 * If the property name also exists as an input property on one of the element's directives,
15753 * the component property will be set instead of the element property. This check must
15754 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15755 *
15756 * @param propName The name of the property to update
15757 * @param prefix Static value used for concatenation only.
15758 * @param v0 Value checked for change.
15759 * @param i0 Static value used for concatenation only.
15760 * @param v1 Value checked for change.
15761 * @param i1 Static value used for concatenation only.
15762 * @param v2 Value checked for change.
15763 * @param i2 Static value used for concatenation only.
15764 * @param v3 Value checked for change.
15765 * @param i3 Static value used for concatenation only.
15766 * @param v4 Value checked for change.
15767 * @param i4 Static value used for concatenation only.
15768 * @param v5 Value checked for change.
15769 * @param i5 Static value used for concatenation only.
15770 * @param v6 Value checked for change.
15771 * @param i6 Static value used for concatenation only.
15772 * @param v7 Value checked for change.
15773 * @param suffix Static value used for concatenation only.
15774 * @param sanitizer An optional sanitizer function
15775 * @returns itself, so that it may be chained.
15776 * @codeGenApi
15777 */
15778export declare function ɵɵpropertyInterpolate8(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate8;
15779
15780/**
15781 * Update an interpolated property on an element with 9 or more bound values surrounded by text.
15782 *
15783 * Used when the number of interpolated values exceeds 8.
15784 *
15785 * ```html
15786 * <div
15787 * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
15788 * ```
15789 *
15790 * Its compiled representation is::
15791 *
15792 * ```ts
15793 * ɵɵpropertyInterpolateV(
15794 * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
15795 * 'suffix']);
15796 * ```
15797 *
15798 * If the property name also exists as an input property on one of the element's directives,
15799 * the component property will be set instead of the element property. This check must
15800 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
15801 *
15802 * @param propName The name of the property to update.
15803 * @param values The collection of values and the strings in between those values, beginning with a
15804 * string prefix and ending with a string suffix.
15805 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
15806 * @param sanitizer An optional sanitizer function
15807 * @returns itself, so that it may be chained.
15808 * @codeGenApi
15809 */
15810export declare function ɵɵpropertyInterpolateV(propName: string, values: any[], sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolateV;
15811
15812/**
15813 * This feature resolves the providers of a directive (or component),
15814 * and publish them into the DI system, making it visible to others for injection.
15815 *
15816 * For example:
15817 * ```ts
15818 * class ComponentWithProviders {
15819 * constructor(private greeter: GreeterDE) {}
15820 *
15821 * static ɵcmp = defineComponent({
15822 * type: ComponentWithProviders,
15823 * selectors: [['component-with-providers']],
15824 * factory: () => new ComponentWithProviders(directiveInject(GreeterDE as any)),
15825 * decls: 1,
15826 * vars: 1,
15827 * template: function(fs: RenderFlags, ctx: ComponentWithProviders) {
15828 * if (fs & RenderFlags.Create) {
15829 * ɵɵtext(0);
15830 * }
15831 * if (fs & RenderFlags.Update) {
15832 * ɵɵtextInterpolate(ctx.greeter.greet());
15833 * }
15834 * },
15835 * features: [ɵɵProvidersFeature([GreeterDE])]
15836 * });
15837 * }
15838 * ```
15839 *
15840 * @param definition
15841 *
15842 * @codeGenApi
15843 */
15844export declare function ɵɵProvidersFeature<T>(providers: Provider[], viewProviders?: Provider[]): (definition: ɵDirectiveDef<T>) => void;
15845
15846/**
15847 * Bindings for pure functions are stored after regular bindings.
15848 *
15849 * |-------decls------|---------vars---------| |----- hostVars (dir1) ------|
15850 * ------------------------------------------------------------------------------------------
15851 * | nodes/refs/pipes | bindings | fn slots | injector | dir1 | host bindings | host slots |
15852 * ------------------------------------------------------------------------------------------
15853 * ^ ^
15854 * TView.bindingStartIndex TView.expandoStartIndex
15855 *
15856 * Pure function instructions are given an offset from the binding root. Adding the offset to the
15857 * binding root gives the first index where the bindings are stored. In component views, the binding
15858 * root is the bindingStartIndex. In host bindings, the binding root is the expandoStartIndex +
15859 * any directive instances + any hostVars in directives evaluated before it.
15860 *
15861 * See VIEW_DATA.md for more information about host binding resolution.
15862 */
15863/**
15864 * If the value hasn't been saved, calls the pure function to store and return the
15865 * value. If it has been saved, returns the saved value.
15866 *
15867 * @param slotOffset the offset from binding root to the reserved slot
15868 * @param pureFn Function that returns a value
15869 * @param thisArg Optional calling context of pureFn
15870 * @returns value
15871 *
15872 * @codeGenApi
15873 */
15874export declare function ɵɵpureFunction0<T>(slotOffset: number, pureFn: () => T, thisArg?: any): T;
15875
15876/**
15877 * If the value of the provided exp has changed, calls the pure function to return
15878 * an updated value. Or if the value has not changed, returns cached value.
15879 *
15880 * @param slotOffset the offset from binding root to the reserved slot
15881 * @param pureFn Function that returns an updated value
15882 * @param exp Updated expression value
15883 * @param thisArg Optional calling context of pureFn
15884 * @returns Updated or cached value
15885 *
15886 * @codeGenApi
15887 */
15888export declare function ɵɵpureFunction1(slotOffset: number, pureFn: (v: any) => any, exp: any, thisArg?: any): any;
15889
15890/**
15891 * If the value of any provided exp has changed, calls the pure function to return
15892 * an updated value. Or if no values have changed, returns cached value.
15893 *
15894 * @param slotOffset the offset from binding root to the reserved slot
15895 * @param pureFn
15896 * @param exp1
15897 * @param exp2
15898 * @param thisArg Optional calling context of pureFn
15899 * @returns Updated or cached value
15900 *
15901 * @codeGenApi
15902 */
15903export declare function ɵɵpureFunction2(slotOffset: number, pureFn: (v1: any, v2: any) => any, exp1: any, exp2: any, thisArg?: any): any;
15904
15905/**
15906 * If the value of any provided exp has changed, calls the pure function to return
15907 * an updated value. Or if no values have changed, returns cached value.
15908 *
15909 * @param slotOffset the offset from binding root to the reserved slot
15910 * @param pureFn
15911 * @param exp1
15912 * @param exp2
15913 * @param exp3
15914 * @param thisArg Optional calling context of pureFn
15915 * @returns Updated or cached value
15916 *
15917 * @codeGenApi
15918 */
15919export declare function ɵɵpureFunction3(slotOffset: number, pureFn: (v1: any, v2: any, v3: any) => any, exp1: any, exp2: any, exp3: any, thisArg?: any): any;
15920
15921/**
15922 * If the value of any provided exp has changed, calls the pure function to return
15923 * an updated value. Or if no values have changed, returns cached value.
15924 *
15925 * @param slotOffset the offset from binding root to the reserved slot
15926 * @param pureFn
15927 * @param exp1
15928 * @param exp2
15929 * @param exp3
15930 * @param exp4
15931 * @param thisArg Optional calling context of pureFn
15932 * @returns Updated or cached value
15933 *
15934 * @codeGenApi
15935 */
15936export declare function ɵɵpureFunction4(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, thisArg?: any): any;
15937
15938/**
15939 * If the value of any provided exp has changed, calls the pure function to return
15940 * an updated value. Or if no values have changed, returns cached value.
15941 *
15942 * @param slotOffset the offset from binding root to the reserved slot
15943 * @param pureFn
15944 * @param exp1
15945 * @param exp2
15946 * @param exp3
15947 * @param exp4
15948 * @param exp5
15949 * @param thisArg Optional calling context of pureFn
15950 * @returns Updated or cached value
15951 *
15952 * @codeGenApi
15953 */
15954export declare function ɵɵpureFunction5(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, thisArg?: any): any;
15955
15956/**
15957 * If the value of any provided exp has changed, calls the pure function to return
15958 * an updated value. Or if no values have changed, returns cached value.
15959 *
15960 * @param slotOffset the offset from binding root to the reserved slot
15961 * @param pureFn
15962 * @param exp1
15963 * @param exp2
15964 * @param exp3
15965 * @param exp4
15966 * @param exp5
15967 * @param exp6
15968 * @param thisArg Optional calling context of pureFn
15969 * @returns Updated or cached value
15970 *
15971 * @codeGenApi
15972 */
15973export declare function ɵɵpureFunction6(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any, v6: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, exp6: any, thisArg?: any): any;
15974
15975/**
15976 * If the value of any provided exp has changed, calls the pure function to return
15977 * an updated value. Or if no values have changed, returns cached value.
15978 *
15979 * @param slotOffset the offset from binding root to the reserved slot
15980 * @param pureFn
15981 * @param exp1
15982 * @param exp2
15983 * @param exp3
15984 * @param exp4
15985 * @param exp5
15986 * @param exp6
15987 * @param exp7
15988 * @param thisArg Optional calling context of pureFn
15989 * @returns Updated or cached value
15990 *
15991 * @codeGenApi
15992 */
15993export declare function ɵɵpureFunction7(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any, v6: any, v7: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, exp6: any, exp7: any, thisArg?: any): any;
15994
15995/**
15996 * If the value of any provided exp has changed, calls the pure function to return
15997 * an updated value. Or if no values have changed, returns cached value.
15998 *
15999 * @param slotOffset the offset from binding root to the reserved slot
16000 * @param pureFn
16001 * @param exp1
16002 * @param exp2
16003 * @param exp3
16004 * @param exp4
16005 * @param exp5
16006 * @param exp6
16007 * @param exp7
16008 * @param exp8
16009 * @param thisArg Optional calling context of pureFn
16010 * @returns Updated or cached value
16011 *
16012 * @codeGenApi
16013 */
16014export declare function ɵɵpureFunction8(slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any, v5: any, v6: any, v7: any, v8: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, exp5: any, exp6: any, exp7: any, exp8: any, thisArg?: any): any;
16015
16016/**
16017 * pureFunction instruction that can support any number of bindings.
16018 *
16019 * If the value of any provided exp has changed, calls the pure function to return
16020 * an updated value. Or if no values have changed, returns cached value.
16021 *
16022 * @param slotOffset the offset from binding root to the reserved slot
16023 * @param pureFn A pure function that takes binding values and builds an object or array
16024 * containing those values.
16025 * @param exps An array of binding values
16026 * @param thisArg Optional calling context of pureFn
16027 * @returns Updated or cached value
16028 *
16029 * @codeGenApi
16030 */
16031export declare function ɵɵpureFunctionV(slotOffset: number, pureFn: (...v: any[]) => any, exps: any[], thisArg?: any): any;
16032
16033/**
16034 * Advances the current query index by a specified offset.
16035 *
16036 * Adjusting the current query index is necessary in cases where a given directive has a mix of
16037 * zone-based and signal-based queries. The signal-based queries don't require tracking of the
16038 * current index (those are refreshed on demand and not during change detection) so this instruction
16039 * is only necessary for backward-compatibility.
16040 *
16041 * @param index offset to apply to the current query index (defaults to 1)
16042 *
16043 * @codeGenApi
16044 */
16045export declare function ɵɵqueryAdvance(indexOffset?: number): void;
16046
16047/**
16048 * Refreshes a query by combining matches from all active views and removing matches from deleted
16049 * views.
16050 *
16051 * @returns `true` if a query got dirty during change detection or if this is a static query
16052 * resolving in creation mode, `false` otherwise.
16053 *
16054 * @codeGenApi
16055 */
16056export declare function ɵɵqueryRefresh(queryList: QueryList<any>): boolean;
16057
16058/**
16059 * Retrieves a local reference from the current contextViewData.
16060 *
16061 * If the reference to retrieve is in a parent view, this instruction is used in conjunction
16062 * with a nextContext() call, which walks up the tree and updates the contextViewData instance.
16063 *
16064 * @param index The index of the local ref in contextViewData.
16065 *
16066 * @codeGenApi
16067 */
16068export declare function ɵɵreference<T>(index: number): T;
16069
16070/**
16071 * Adds the given NgModule type to Angular's NgModule registry.
16072 *
16073 * This is generated as a side-effect of NgModule compilation. Note that the `id` is passed in
16074 * explicitly and not read from the NgModule definition. This is for two reasons: it avoids a
16075 * megamorphic read, and in JIT there's a chicken-and-egg problem where the NgModule may not be
16076 * fully resolved when it's registered.
16077 *
16078 * @codeGenApi
16079 */
16080export declare function ɵɵregisterNgModuleType(ngModuleType: ɵNgModuleType, id: string): void;
16081
16082/**
16083 * The repeater instruction does update-time diffing of a provided collection (against the
16084 * collection seen previously) and maps changes in the collection to views structure (by adding,
16085 * removing or moving views as needed).
16086 * @param collection - the collection instance to be checked for changes
16087 * @codeGenApi
16088 */
16089export declare function ɵɵrepeater(collection: Iterable<unknown> | undefined | null): void;
16090
16091/**
16092 * The repeaterCreate instruction runs in the creation part of the template pass and initializes
16093 * internal data structures required by the update pass of the built-in repeater logic. Repeater
16094 * metadata are allocated in the data part of LView with the following layout:
16095 * - LView[HEADER_OFFSET + index] - metadata
16096 * - LView[HEADER_OFFSET + index + 1] - reference to a template function rendering an item
16097 * - LView[HEADER_OFFSET + index + 2] - optional reference to a template function rendering an empty
16098 * block
16099 *
16100 * @param index Index at which to store the metadata of the repeater.
16101 * @param templateFn Reference to the template of the main repeater block.
16102 * @param decls The number of nodes, local refs, and pipes for the main block.
16103 * @param vars The number of bindings for the main block.
16104 * @param tagName The name of the container element, if applicable
16105 * @param attrsIndex Index of template attributes in the `consts` array.
16106 * @param trackByFn Reference to the tracking function.
16107 * @param trackByUsesComponentInstance Whether the tracking function has any references to the
16108 * component instance. If it doesn't, we can avoid rebinding it.
16109 * @param emptyTemplateFn Reference to the template function of the empty block.
16110 * @param emptyDecls The number of nodes, local refs, and pipes for the empty block.
16111 * @param emptyVars The number of bindings for the empty block.
16112 * @param emptyTagName The name of the empty block container element, if applicable
16113 * @param emptyAttrsIndex Index of the empty block template attributes in the `consts` array.
16114 *
16115 * @codeGenApi
16116 */
16117export declare function ɵɵrepeaterCreate(index: number, templateFn: ComponentTemplate<unknown>, decls: number, vars: number, tagName: string | null, attrsIndex: number | null, trackByFn: TrackByFunction<unknown>, trackByUsesComponentInstance?: boolean, emptyTemplateFn?: ComponentTemplate<unknown>, emptyDecls?: number, emptyVars?: number, emptyTagName?: string | null, emptyAttrsIndex?: number | null): void;
16118
16119/**
16120 * A built-in trackBy function used for situations where users specified collection item reference
16121 * as a tracking expression. Having this function body in the runtime avoids unnecessary code
16122 * generation.
16123 *
16124 * @param index
16125 * @returns
16126 */
16127export declare function ɵɵrepeaterTrackByIdentity<T>(_: number, value: T): T;
16128
16129/**
16130 * A built-in trackBy function used for situations where users specified collection index as a
16131 * tracking expression. Having this function body in the runtime avoids unnecessary code generation.
16132 *
16133 * @param index
16134 * @returns
16135 */
16136export declare function ɵɵrepeaterTrackByIndex(index: number): number;
16137
16138/**
16139 * Clears the view set in `ɵɵrestoreView` from memory. Returns the passed in
16140 * value so that it can be used as a return value of an instruction.
16141 *
16142 * @codeGenApi
16143 */
16144export declare function ɵɵresetView<T>(value?: T): T | undefined;
16145
16146/**
16147 *
16148 * @codeGenApi
16149 */
16150export declare function ɵɵresolveBody(element: RElement & {
16151 ownerDocument: Document;
16152}): HTMLElement;
16153
16154/**
16155 *
16156 * @codeGenApi
16157 */
16158export declare function ɵɵresolveDocument(element: RElement & {
16159 ownerDocument: Document;
16160}): Document;
16161
16162/**
16163 *
16164 * @codeGenApi
16165 */
16166export declare function ɵɵresolveWindow(element: RElement & {
16167 ownerDocument: Document;
16168}): (Window & typeof globalThis) | null;
16169
16170/**
16171 * Restores `contextViewData` to the given OpaqueViewState instance.
16172 *
16173 * Used in conjunction with the getCurrentView() instruction to save a snapshot
16174 * of the current view and restore it when listeners are invoked. This allows
16175 * walking the declaration view tree in listeners to get vars from parent views.
16176 *
16177 * @param viewToRestore The OpaqueViewState instance to restore.
16178 * @returns Context of the restored OpaqueViewState instance.
16179 *
16180 * @codeGenApi
16181 */
16182export declare function ɵɵrestoreView<T = any>(viewToRestore: OpaqueViewState): T;
16183
16184/**
16185 * An `html` sanitizer which converts untrusted `html` **string** into trusted string by removing
16186 * dangerous content.
16187 *
16188 * This method parses the `html` and locates potentially dangerous content (such as urls and
16189 * javascript) and removes it.
16190 *
16191 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustHtml}.
16192 *
16193 * @param unsafeHtml untrusted `html`, typically from the user.
16194 * @returns `html` string which is safe to display to user, because all of the dangerous javascript
16195 * and urls have been removed.
16196 *
16197 * @codeGenApi
16198 */
16199export declare function ɵɵsanitizeHtml(unsafeHtml: any): TrustedHTML | string;
16200
16201/**
16202 * A `url` sanitizer which only lets trusted `url`s through.
16203 *
16204 * This passes only `url`s marked trusted by calling {@link bypassSanitizationTrustResourceUrl}.
16205 *
16206 * @param unsafeResourceUrl untrusted `url`, typically from the user.
16207 * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because
16208 * only trusted `url`s have been allowed to pass.
16209 *
16210 * @codeGenApi
16211 */
16212export declare function ɵɵsanitizeResourceUrl(unsafeResourceUrl: any): TrustedScriptURL | string;
16213
16214/**
16215 * A `script` sanitizer which only lets trusted javascript through.
16216 *
16217 * This passes only `script`s marked trusted by calling {@link
16218 * bypassSanitizationTrustScript}.
16219 *
16220 * @param unsafeScript untrusted `script`, typically from the user.
16221 * @returns `url` string which is safe to bind to the `<script>` element such as `<img src>`,
16222 * because only trusted `scripts` have been allowed to pass.
16223 *
16224 * @codeGenApi
16225 */
16226export declare function ɵɵsanitizeScript(unsafeScript: any): TrustedScript | string;
16227
16228/**
16229 * A `style` sanitizer which converts untrusted `style` **string** into trusted string by removing
16230 * dangerous content.
16231 *
16232 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustStyle}.
16233 *
16234 * @param unsafeStyle untrusted `style`, typically from the user.
16235 * @returns `style` string which is safe to bind to the `style` properties.
16236 *
16237 * @codeGenApi
16238 */
16239export declare function ɵɵsanitizeStyle(unsafeStyle: any): string;
16240
16241/**
16242 * A `url` sanitizer which converts untrusted `url` **string** into trusted string by removing
16243 * dangerous
16244 * content.
16245 *
16246 * This method parses the `url` and locates potentially dangerous content (such as javascript) and
16247 * removes it.
16248 *
16249 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustUrl}.
16250 *
16251 * @param unsafeUrl untrusted `url`, typically from the user.
16252 * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because
16253 * all of the dangerous javascript has been removed.
16254 *
16255 * @codeGenApi
16256 */
16257export declare function ɵɵsanitizeUrl(unsafeUrl: any): string;
16258
16259/**
16260 * Sanitizes URL, selecting sanitizer function based on tag and property names.
16261 *
16262 * This function is used in case we can't define security context at compile time, when only prop
16263 * name is available. This happens when we generate host bindings for Directives/Components. The
16264 * host element is unknown at compile time, so we defer calculation of specific sanitizer to
16265 * runtime.
16266 *
16267 * @param unsafeUrl untrusted `url`, typically from the user.
16268 * @param tag target element tag name.
16269 * @param prop name of the property that contains the value.
16270 * @returns `url` string which is safe to bind.
16271 *
16272 * @codeGenApi
16273 */
16274export declare function ɵɵsanitizeUrlOrResourceUrl(unsafeUrl: any, tag: string, prop: string): any;
16275
16276/**
16277 * Generated next to NgModules to monkey-patch directive and pipe references onto a component's
16278 * definition, when generating a direct reference in the component file would otherwise create an
16279 * import cycle.
16280 *
16281 * See [this explanation](https://hackmd.io/Odw80D0pR6yfsOjg_7XCJg?view) for more details.
16282 *
16283 * @codeGenApi
16284 */
16285export declare function ɵɵsetComponentScope(type: ɵComponentType<any>, directives: Type<any>[] | (() => Type<any>[]), pipes: Type<any>[] | (() => Type<any>[])): void;
16286
16287/**
16288 * Adds the module metadata that is necessary to compute the module's transitive scope to an
16289 * existing module definition.
16290 *
16291 * Scope metadata of modules is not used in production builds, so calls to this function can be
16292 * marked pure to tree-shake it from the bundle, allowing for all referenced declarations
16293 * to become eligible for tree-shaking as well.
16294 *
16295 * @codeGenApi
16296 */
16297export declare function ɵɵsetNgModuleScope(type: any, scope: NgModuleScopeInfoFromDecorator): unknown;
16298
16299/**
16300 * A feature that acts as a setup code for the {@link StandaloneService}.
16301 *
16302 * The most important responsibility of this feature is to expose the "getStandaloneInjector"
16303 * function (an entry points to a standalone injector creation) on a component definition object. We
16304 * go through the features infrastructure to make sure that the standalone injector creation logic
16305 * is tree-shakable and not included in applications that don't use standalone components.
16306 *
16307 * @codeGenApi
16308 */
16309export declare function ɵɵStandaloneFeature(definition: ɵComponentDef<unknown>): void;
16310
16311/**
16312 * Update style bindings using an object literal on an element.
16313 *
16314 * This instruction is meant to apply styling via the `[style]="exp"` template bindings.
16315 * When styles are applied to the element they will then be updated with respect to
16316 * any styles/classes set via `styleProp`. If any styles are set to falsy
16317 * then they will be removed from the element.
16318 *
16319 * Note that the styling instruction will not be applied until `stylingApply` is called.
16320 *
16321 * @param styles A key/value style map of the styles that will be applied to the given element.
16322 * Any missing styles (that have already been applied to the element beforehand) will be
16323 * removed (unset) from the element's styling.
16324 *
16325 * Note that this will apply the provided styleMap value to the host element if this function
16326 * is called within a host binding.
16327 *
16328 * @codeGenApi
16329 */
16330export declare function ɵɵstyleMap(styles: {
16331 [styleName: string]: any;
16332} | string | undefined | null): void;
16333
16334
16335/**
16336 *
16337 * Update an interpolated style on an element with single bound value surrounded by text.
16338 *
16339 * Used when the value passed to a property has 1 interpolated value in it:
16340 *
16341 * ```html
16342 * <div style="key: {{v0}}suffix"></div>
16343 * ```
16344 *
16345 * Its compiled representation is:
16346 *
16347 * ```ts
16348 * ɵɵstyleMapInterpolate1('key: ', v0, 'suffix');
16349 * ```
16350 *
16351 * @param prefix Static value used for concatenation only.
16352 * @param v0 Value checked for change.
16353 * @param suffix Static value used for concatenation only.
16354 * @codeGenApi
16355 */
16356export declare function ɵɵstyleMapInterpolate1(prefix: string, v0: any, suffix: string): void;
16357
16358/**
16359 *
16360 * Update an interpolated style on an element with 2 bound values surrounded by text.
16361 *
16362 * Used when the value passed to a property has 2 interpolated values in it:
16363 *
16364 * ```html
16365 * <div style="key: {{v0}}; key1: {{v1}}suffix"></div>
16366 * ```
16367 *
16368 * Its compiled representation is:
16369 *
16370 * ```ts
16371 * ɵɵstyleMapInterpolate2('key: ', v0, '; key1: ', v1, 'suffix');
16372 * ```
16373 *
16374 * @param prefix Static value used for concatenation only.
16375 * @param v0 Value checked for change.
16376 * @param i0 Static value used for concatenation only.
16377 * @param v1 Value checked for change.
16378 * @param suffix Static value used for concatenation only.
16379 * @codeGenApi
16380 */
16381export declare function ɵɵstyleMapInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): void;
16382
16383/**
16384 *
16385 * Update an interpolated style on an element with 3 bound values surrounded by text.
16386 *
16387 * Used when the value passed to a property has 3 interpolated values in it:
16388 *
16389 * ```html
16390 * <div style="key: {{v0}}; key2: {{v1}}; key2: {{v2}}suffix"></div>
16391 * ```
16392 *
16393 * Its compiled representation is:
16394 *
16395 * ```ts
16396 * ɵɵstyleMapInterpolate3(
16397 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, 'suffix');
16398 * ```
16399 *
16400 * @param prefix Static value used for concatenation only.
16401 * @param v0 Value checked for change.
16402 * @param i0 Static value used for concatenation only.
16403 * @param v1 Value checked for change.
16404 * @param i1 Static value used for concatenation only.
16405 * @param v2 Value checked for change.
16406 * @param suffix Static value used for concatenation only.
16407 * @codeGenApi
16408 */
16409export declare function ɵɵstyleMapInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): void;
16410
16411/**
16412 *
16413 * Update an interpolated style on an element with 4 bound values surrounded by text.
16414 *
16415 * Used when the value passed to a property has 4 interpolated values in it:
16416 *
16417 * ```html
16418 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}suffix"></div>
16419 * ```
16420 *
16421 * Its compiled representation is:
16422 *
16423 * ```ts
16424 * ɵɵstyleMapInterpolate4(
16425 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, 'suffix');
16426 * ```
16427 *
16428 * @param prefix Static value used for concatenation only.
16429 * @param v0 Value checked for change.
16430 * @param i0 Static value used for concatenation only.
16431 * @param v1 Value checked for change.
16432 * @param i1 Static value used for concatenation only.
16433 * @param v2 Value checked for change.
16434 * @param i2 Static value used for concatenation only.
16435 * @param v3 Value checked for change.
16436 * @param suffix Static value used for concatenation only.
16437 * @codeGenApi
16438 */
16439export declare function ɵɵstyleMapInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): void;
16440
16441/**
16442 *
16443 * Update an interpolated style on an element with 5 bound values surrounded by text.
16444 *
16445 * Used when the value passed to a property has 5 interpolated values in it:
16446 *
16447 * ```html
16448 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}suffix"></div>
16449 * ```
16450 *
16451 * Its compiled representation is:
16452 *
16453 * ```ts
16454 * ɵɵstyleMapInterpolate5(
16455 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, 'suffix');
16456 * ```
16457 *
16458 * @param prefix Static value used for concatenation only.
16459 * @param v0 Value checked for change.
16460 * @param i0 Static value used for concatenation only.
16461 * @param v1 Value checked for change.
16462 * @param i1 Static value used for concatenation only.
16463 * @param v2 Value checked for change.
16464 * @param i2 Static value used for concatenation only.
16465 * @param v3 Value checked for change.
16466 * @param i3 Static value used for concatenation only.
16467 * @param v4 Value checked for change.
16468 * @param suffix Static value used for concatenation only.
16469 * @codeGenApi
16470 */
16471export declare function ɵɵstyleMapInterpolate5(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string): void;
16472
16473/**
16474 *
16475 * Update an interpolated style on an element with 6 bound values surrounded by text.
16476 *
16477 * Used when the value passed to a property has 6 interpolated values in it:
16478 *
16479 * ```html
16480 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}};
16481 * key5: {{v5}}suffix"></div>
16482 * ```
16483 *
16484 * Its compiled representation is:
16485 *
16486 * ```ts
16487 * ɵɵstyleMapInterpolate6(
16488 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
16489 * 'suffix');
16490 * ```
16491 *
16492 * @param prefix Static value used for concatenation only.
16493 * @param v0 Value checked for change.
16494 * @param i0 Static value used for concatenation only.
16495 * @param v1 Value checked for change.
16496 * @param i1 Static value used for concatenation only.
16497 * @param v2 Value checked for change.
16498 * @param i2 Static value used for concatenation only.
16499 * @param v3 Value checked for change.
16500 * @param i3 Static value used for concatenation only.
16501 * @param v4 Value checked for change.
16502 * @param i4 Static value used for concatenation only.
16503 * @param v5 Value checked for change.
16504 * @param suffix Static value used for concatenation only.
16505 * @codeGenApi
16506 */
16507export declare function ɵɵstyleMapInterpolate6(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string): void;
16508
16509/**
16510 *
16511 * Update an interpolated style on an element with 7 bound values surrounded by text.
16512 *
16513 * Used when the value passed to a property has 7 interpolated values in it:
16514 *
16515 * ```html
16516 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
16517 * key6: {{v6}}suffix"></div>
16518 * ```
16519 *
16520 * Its compiled representation is:
16521 *
16522 * ```ts
16523 * ɵɵstyleMapInterpolate7(
16524 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
16525 * '; key6: ', v6, 'suffix');
16526 * ```
16527 *
16528 * @param prefix Static value used for concatenation only.
16529 * @param v0 Value checked for change.
16530 * @param i0 Static value used for concatenation only.
16531 * @param v1 Value checked for change.
16532 * @param i1 Static value used for concatenation only.
16533 * @param v2 Value checked for change.
16534 * @param i2 Static value used for concatenation only.
16535 * @param v3 Value checked for change.
16536 * @param i3 Static value used for concatenation only.
16537 * @param v4 Value checked for change.
16538 * @param i4 Static value used for concatenation only.
16539 * @param v5 Value checked for change.
16540 * @param i5 Static value used for concatenation only.
16541 * @param v6 Value checked for change.
16542 * @param suffix Static value used for concatenation only.
16543 * @codeGenApi
16544 */
16545export declare function ɵɵstyleMapInterpolate7(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string): void;
16546
16547/**
16548 *
16549 * Update an interpolated style on an element with 8 bound values surrounded by text.
16550 *
16551 * Used when the value passed to a property has 8 interpolated values in it:
16552 *
16553 * ```html
16554 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
16555 * key6: {{v6}}; key7: {{v7}}suffix"></div>
16556 * ```
16557 *
16558 * Its compiled representation is:
16559 *
16560 * ```ts
16561 * ɵɵstyleMapInterpolate8(
16562 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
16563 * '; key6: ', v6, '; key7: ', v7, 'suffix');
16564 * ```
16565 *
16566 * @param prefix Static value used for concatenation only.
16567 * @param v0 Value checked for change.
16568 * @param i0 Static value used for concatenation only.
16569 * @param v1 Value checked for change.
16570 * @param i1 Static value used for concatenation only.
16571 * @param v2 Value checked for change.
16572 * @param i2 Static value used for concatenation only.
16573 * @param v3 Value checked for change.
16574 * @param i3 Static value used for concatenation only.
16575 * @param v4 Value checked for change.
16576 * @param i4 Static value used for concatenation only.
16577 * @param v5 Value checked for change.
16578 * @param i5 Static value used for concatenation only.
16579 * @param v6 Value checked for change.
16580 * @param i6 Static value used for concatenation only.
16581 * @param v7 Value checked for change.
16582 * @param suffix Static value used for concatenation only.
16583 * @codeGenApi
16584 */
16585export declare function ɵɵstyleMapInterpolate8(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string): void;
16586
16587/**
16588 * Update an interpolated style on an element with 9 or more bound values surrounded by text.
16589 *
16590 * Used when the number of interpolated values exceeds 8.
16591 *
16592 * ```html
16593 * <div
16594 * class="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
16595 * key6: {{v6}}; key7: {{v7}}; key8: {{v8}}; key9: {{v9}}suffix"></div>
16596 * ```
16597 *
16598 * Its compiled representation is:
16599 *
16600 * ```ts
16601 * ɵɵstyleMapInterpolateV(
16602 * ['key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
16603 * '; key6: ', v6, '; key7: ', v7, '; key8: ', v8, '; key9: ', v9, 'suffix']);
16604 * ```
16605 *.
16606 * @param values The collection of values and the strings in-between those values, beginning with
16607 * a string prefix and ending with a string suffix.
16608 * (e.g. `['prefix', value0, '; key2: ', value1, '; key2: ', value2, ..., value99, 'suffix']`)
16609 * @codeGenApi
16610 */
16611export declare function ɵɵstyleMapInterpolateV(values: any[]): void;
16612
16613/**
16614 * Update a style binding on an element with the provided value.
16615 *
16616 * If the style value is falsy then it will be removed from the element
16617 * (or assigned a different value depending if there are any styles placed
16618 * on the element with `styleMap` or any static styles that are
16619 * present from when the element was created with `styling`).
16620 *
16621 * Note that the styling element is updated as part of `stylingApply`.
16622 *
16623 * @param prop A valid CSS property.
16624 * @param value New value to write (`null` or an empty string to remove).
16625 * @param suffix Optional suffix. Used with scalar values to add unit such as `px`.
16626 *
16627 * Note that this will apply the provided style value to the host element if this function is called
16628 * within a host binding function.
16629 *
16630 * @codeGenApi
16631 */
16632export declare function ɵɵstyleProp(prop: string, value: string | number | ɵSafeValue | undefined | null, suffix?: string | null): typeof ɵɵstyleProp;
16633
16634
16635/**
16636 *
16637 * Update an interpolated style property on an element with single bound value surrounded by text.
16638 *
16639 * Used when the value passed to a property has 1 interpolated value in it:
16640 *
16641 * ```html
16642 * <div style.color="prefix{{v0}}suffix"></div>
16643 * ```
16644 *
16645 * Its compiled representation is:
16646 *
16647 * ```ts
16648 * ɵɵstylePropInterpolate1(0, 'prefix', v0, 'suffix');
16649 * ```
16650 *
16651 * @param styleIndex Index of style to update. This index value refers to the
16652 * index of the style in the style bindings array that was passed into
16653 * `styling`.
16654 * @param prefix Static value used for concatenation only.
16655 * @param v0 Value checked for change.
16656 * @param suffix Static value used for concatenation only.
16657 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
16658 * @returns itself, so that it may be chained.
16659 * @codeGenApi
16660 */
16661export declare function ɵɵstylePropInterpolate1(prop: string, prefix: string, v0: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate1;
16662
16663/**
16664 *
16665 * Update an interpolated style property on an element with 2 bound values surrounded by text.
16666 *
16667 * Used when the value passed to a property has 2 interpolated values in it:
16668 *
16669 * ```html
16670 * <div style.color="prefix{{v0}}-{{v1}}suffix"></div>
16671 * ```
16672 *
16673 * Its compiled representation is:
16674 *
16675 * ```ts
16676 * ɵɵstylePropInterpolate2(0, 'prefix', v0, '-', v1, 'suffix');
16677 * ```
16678 *
16679 * @param styleIndex Index of style to update. This index value refers to the
16680 * index of the style in the style bindings array that was passed into
16681 * `styling`.
16682 * @param prefix Static value used for concatenation only.
16683 * @param v0 Value checked for change.
16684 * @param i0 Static value used for concatenation only.
16685 * @param v1 Value checked for change.
16686 * @param suffix Static value used for concatenation only.
16687 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
16688 * @returns itself, so that it may be chained.
16689 * @codeGenApi
16690 */
16691export declare function ɵɵstylePropInterpolate2(prop: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate2;
16692
16693/**
16694 *
16695 * Update an interpolated style property on an element with 3 bound values surrounded by text.
16696 *
16697 * Used when the value passed to a property has 3 interpolated values in it:
16698 *
16699 * ```html
16700 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
16701 * ```
16702 *
16703 * Its compiled representation is:
16704 *
16705 * ```ts
16706 * ɵɵstylePropInterpolate3(0, 'prefix', v0, '-', v1, '-', v2, 'suffix');
16707 * ```
16708 *
16709 * @param styleIndex Index of style to update. This index value refers to the
16710 * index of the style in the style bindings array that was passed into
16711 * `styling`.
16712 * @param prefix Static value used for concatenation only.
16713 * @param v0 Value checked for change.
16714 * @param i0 Static value used for concatenation only.
16715 * @param v1 Value checked for change.
16716 * @param i1 Static value used for concatenation only.
16717 * @param v2 Value checked for change.
16718 * @param suffix Static value used for concatenation only.
16719 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
16720 * @returns itself, so that it may be chained.
16721 * @codeGenApi
16722 */
16723export declare function ɵɵstylePropInterpolate3(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate3;
16724
16725/**
16726 *
16727 * Update an interpolated style property on an element with 4 bound values surrounded by text.
16728 *
16729 * Used when the value passed to a property has 4 interpolated values in it:
16730 *
16731 * ```html
16732 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
16733 * ```
16734 *
16735 * Its compiled representation is:
16736 *
16737 * ```ts
16738 * ɵɵstylePropInterpolate4(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
16739 * ```
16740 *
16741 * @param styleIndex Index of style to update. This index value refers to the
16742 * index of the style in the style bindings array that was passed into
16743 * `styling`.
16744 * @param prefix Static value used for concatenation only.
16745 * @param v0 Value checked for change.
16746 * @param i0 Static value used for concatenation only.
16747 * @param v1 Value checked for change.
16748 * @param i1 Static value used for concatenation only.
16749 * @param v2 Value checked for change.
16750 * @param i2 Static value used for concatenation only.
16751 * @param v3 Value checked for change.
16752 * @param suffix Static value used for concatenation only.
16753 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
16754 * @returns itself, so that it may be chained.
16755 * @codeGenApi
16756 */
16757export declare function ɵɵstylePropInterpolate4(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate4;
16758
16759/**
16760 *
16761 * Update an interpolated style property on an element with 5 bound values surrounded by text.
16762 *
16763 * Used when the value passed to a property has 5 interpolated values in it:
16764 *
16765 * ```html
16766 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
16767 * ```
16768 *
16769 * Its compiled representation is:
16770 *
16771 * ```ts
16772 * ɵɵstylePropInterpolate5(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
16773 * ```
16774 *
16775 * @param styleIndex Index of style to update. This index value refers to the
16776 * index of the style in the style bindings array that was passed into
16777 * `styling`.
16778 * @param prefix Static value used for concatenation only.
16779 * @param v0 Value checked for change.
16780 * @param i0 Static value used for concatenation only.
16781 * @param v1 Value checked for change.
16782 * @param i1 Static value used for concatenation only.
16783 * @param v2 Value checked for change.
16784 * @param i2 Static value used for concatenation only.
16785 * @param v3 Value checked for change.
16786 * @param i3 Static value used for concatenation only.
16787 * @param v4 Value checked for change.
16788 * @param suffix Static value used for concatenation only.
16789 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
16790 * @returns itself, so that it may be chained.
16791 * @codeGenApi
16792 */
16793export declare function ɵɵstylePropInterpolate5(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate5;
16794
16795/**
16796 *
16797 * Update an interpolated style property on an element with 6 bound values surrounded by text.
16798 *
16799 * Used when the value passed to a property has 6 interpolated values in it:
16800 *
16801 * ```html
16802 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
16803 * ```
16804 *
16805 * Its compiled representation is:
16806 *
16807 * ```ts
16808 * ɵɵstylePropInterpolate6(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
16809 * ```
16810 *
16811 * @param styleIndex Index of style to update. This index value refers to the
16812 * index of the style in the style bindings array that was passed into
16813 * `styling`.
16814 * @param prefix Static value used for concatenation only.
16815 * @param v0 Value checked for change.
16816 * @param i0 Static value used for concatenation only.
16817 * @param v1 Value checked for change.
16818 * @param i1 Static value used for concatenation only.
16819 * @param v2 Value checked for change.
16820 * @param i2 Static value used for concatenation only.
16821 * @param v3 Value checked for change.
16822 * @param i3 Static value used for concatenation only.
16823 * @param v4 Value checked for change.
16824 * @param i4 Static value used for concatenation only.
16825 * @param v5 Value checked for change.
16826 * @param suffix Static value used for concatenation only.
16827 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
16828 * @returns itself, so that it may be chained.
16829 * @codeGenApi
16830 */
16831export declare function ɵɵstylePropInterpolate6(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate6;
16832
16833/**
16834 *
16835 * Update an interpolated style property on an element with 7 bound values surrounded by text.
16836 *
16837 * Used when the value passed to a property has 7 interpolated values in it:
16838 *
16839 * ```html
16840 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
16841 * ```
16842 *
16843 * Its compiled representation is:
16844 *
16845 * ```ts
16846 * ɵɵstylePropInterpolate7(
16847 * 0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
16848 * ```
16849 *
16850 * @param styleIndex Index of style to update. This index value refers to the
16851 * index of the style in the style bindings array that was passed into
16852 * `styling`.
16853 * @param prefix Static value used for concatenation only.
16854 * @param v0 Value checked for change.
16855 * @param i0 Static value used for concatenation only.
16856 * @param v1 Value checked for change.
16857 * @param i1 Static value used for concatenation only.
16858 * @param v2 Value checked for change.
16859 * @param i2 Static value used for concatenation only.
16860 * @param v3 Value checked for change.
16861 * @param i3 Static value used for concatenation only.
16862 * @param v4 Value checked for change.
16863 * @param i4 Static value used for concatenation only.
16864 * @param v5 Value checked for change.
16865 * @param i5 Static value used for concatenation only.
16866 * @param v6 Value checked for change.
16867 * @param suffix Static value used for concatenation only.
16868 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
16869 * @returns itself, so that it may be chained.
16870 * @codeGenApi
16871 */
16872export declare function ɵɵstylePropInterpolate7(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate7;
16873
16874/**
16875 *
16876 * Update an interpolated style property on an element with 8 bound values surrounded by text.
16877 *
16878 * Used when the value passed to a property has 8 interpolated values in it:
16879 *
16880 * ```html
16881 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
16882 * ```
16883 *
16884 * Its compiled representation is:
16885 *
16886 * ```ts
16887 * ɵɵstylePropInterpolate8(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6,
16888 * '-', v7, 'suffix');
16889 * ```
16890 *
16891 * @param styleIndex Index of style to update. This index value refers to the
16892 * index of the style in the style bindings array that was passed into
16893 * `styling`.
16894 * @param prefix Static value used for concatenation only.
16895 * @param v0 Value checked for change.
16896 * @param i0 Static value used for concatenation only.
16897 * @param v1 Value checked for change.
16898 * @param i1 Static value used for concatenation only.
16899 * @param v2 Value checked for change.
16900 * @param i2 Static value used for concatenation only.
16901 * @param v3 Value checked for change.
16902 * @param i3 Static value used for concatenation only.
16903 * @param v4 Value checked for change.
16904 * @param i4 Static value used for concatenation only.
16905 * @param v5 Value checked for change.
16906 * @param i5 Static value used for concatenation only.
16907 * @param v6 Value checked for change.
16908 * @param i6 Static value used for concatenation only.
16909 * @param v7 Value checked for change.
16910 * @param suffix Static value used for concatenation only.
16911 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
16912 * @returns itself, so that it may be chained.
16913 * @codeGenApi
16914 */
16915export declare function ɵɵstylePropInterpolate8(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate8;
16916
16917/**
16918 * Update an interpolated style property on an element with 9 or more bound values surrounded by
16919 * text.
16920 *
16921 * Used when the number of interpolated values exceeds 8.
16922 *
16923 * ```html
16924 * <div
16925 * style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix">
16926 * </div>
16927 * ```
16928 *
16929 * Its compiled representation is:
16930 *
16931 * ```ts
16932 * ɵɵstylePropInterpolateV(
16933 * 0, ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
16934 * 'suffix']);
16935 * ```
16936 *
16937 * @param styleIndex Index of style to update. This index value refers to the
16938 * index of the style in the style bindings array that was passed into
16939 * `styling`..
16940 * @param values The collection of values and the strings in-between those values, beginning with
16941 * a string prefix and ending with a string suffix.
16942 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
16943 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
16944 * @returns itself, so that it may be chained.
16945 * @codeGenApi
16946 */
16947export declare function ɵɵstylePropInterpolateV(prop: string, values: any[], valueSuffix?: string | null): typeof ɵɵstylePropInterpolateV;
16948
16949/**
16950 * Registers a synthetic host listener (e.g. `(@foo.start)`) on a component or directive.
16951 *
16952 * This instruction is for compatibility purposes and is designed to ensure that a
16953 * synthetic host listener (e.g. `@HostListener('@foo.start')`) properly gets rendered
16954 * in the component's renderer. Normally all host listeners are evaluated with the
16955 * parent component's renderer, but, in the case of animation @triggers, they need
16956 * to be evaluated with the sub component's renderer (because that's where the
16957 * animation triggers are defined).
16958 *
16959 * Do not use this instruction as a replacement for `listener`. This instruction
16960 * only exists to ensure compatibility with the ViewEngine's host binding behavior.
16961 *
16962 * @param eventName Name of the event
16963 * @param listenerFn The function to be called when event emits
16964 * @param useCapture Whether or not to use capture in event listener
16965 * @param eventTargetResolver Function that returns global target information in case this listener
16966 * should be attached to a global object like window, document or body
16967 *
16968 * @codeGenApi
16969 */
16970export declare function ɵɵsyntheticHostListener(eventName: string, listenerFn: (e?: any) => any): typeof ɵɵsyntheticHostListener;
16971
16972/**
16973 * Updates a synthetic host binding (e.g. `[@foo]`) on a component or directive.
16974 *
16975 * This instruction is for compatibility purposes and is designed to ensure that a
16976 * synthetic host binding (e.g. `@HostBinding('@foo')`) properly gets rendered in
16977 * the component's renderer. Normally all host bindings are evaluated with the parent
16978 * component's renderer, but, in the case of animation @triggers, they need to be
16979 * evaluated with the sub component's renderer (because that's where the animation
16980 * triggers are defined).
16981 *
16982 * Do not use this instruction as a replacement for `elementProperty`. This instruction
16983 * only exists to ensure compatibility with the ViewEngine's host binding behavior.
16984 *
16985 * @param index The index of the element to update in the data array
16986 * @param propName Name of property. Because it is going to DOM, this is not subject to
16987 * renaming as part of minification.
16988 * @param value New value to write.
16989 * @param sanitizer An optional function used to sanitize the value.
16990 *
16991 * @codeGenApi
16992 */
16993export declare function ɵɵsyntheticHostProperty<T>(propName: string, value: T | ɵNO_CHANGE, sanitizer?: SanitizerFn | null): typeof ɵɵsyntheticHostProperty;
16994
16995/**
16996 * Creates an LContainer for an ng-template (dynamically-inserted view), e.g.
16997 *
16998 * <ng-template #foo>
16999 * <div></div>
17000 * </ng-template>
17001 *
17002 * @param index The index of the container in the data array
17003 * @param templateFn Inline template
17004 * @param decls The number of nodes, local refs, and pipes for this template
17005 * @param vars The number of bindings for this template
17006 * @param tagName The name of the container element, if applicable
17007 * @param attrsIndex Index of template attributes in the `consts` array.
17008 * @param localRefs Index of the local references in the `consts` array.
17009 * @param localRefExtractor A function which extracts local-refs values from the template.
17010 * Defaults to the current element associated with the local-ref.
17011 *
17012 * @codeGenApi
17013 */
17014export declare function ɵɵtemplate(index: number, templateFn: ComponentTemplate<any> | null, decls: number, vars: number, tagName?: string | null, attrsIndex?: number | null, localRefsIndex?: number | null, localRefExtractor?: LocalRefExtractor): typeof ɵɵtemplate;
17015
17016/**
17017 * Retrieves `TemplateRef` instance from `Injector` when a local reference is placed on the
17018 * `<ng-template>` element.
17019 *
17020 * @codeGenApi
17021 */
17022export declare function ɵɵtemplateRefExtractor(tNode: TNode, lView: LView): TemplateRef<any> | null;
17023
17024/**
17025 * Create static text node
17026 *
17027 * @param index Index of the node in the data array
17028 * @param value Static string value to write.
17029 *
17030 * @codeGenApi
17031 */
17032export declare function ɵɵtext(index: number, value?: string): void;
17033
17034/**
17035 *
17036 * Update text content with a lone bound value
17037 *
17038 * Used when a text node has 1 interpolated value in it, an no additional text
17039 * surrounds that interpolated value:
17040 *
17041 * ```html
17042 * <div>{{v0}}</div>
17043 * ```
17044 *
17045 * Its compiled representation is:
17046 *
17047 * ```ts
17048 * ɵɵtextInterpolate(v0);
17049 * ```
17050 * @returns itself, so that it may be chained.
17051 * @see textInterpolateV
17052 * @codeGenApi
17053 */
17054export declare function ɵɵtextInterpolate(v0: any): typeof ɵɵtextInterpolate;
17055
17056/**
17057 *
17058 * Update text content with single bound value surrounded by other text.
17059 *
17060 * Used when a text node has 1 interpolated value in it:
17061 *
17062 * ```html
17063 * <div>prefix{{v0}}suffix</div>
17064 * ```
17065 *
17066 * Its compiled representation is:
17067 *
17068 * ```ts
17069 * ɵɵtextInterpolate1('prefix', v0, 'suffix');
17070 * ```
17071 * @returns itself, so that it may be chained.
17072 * @see textInterpolateV
17073 * @codeGenApi
17074 */
17075export declare function ɵɵtextInterpolate1(prefix: string, v0: any, suffix: string): typeof ɵɵtextInterpolate1;
17076
17077/**
17078 *
17079 * Update text content with 2 bound values surrounded by other text.
17080 *
17081 * Used when a text node has 2 interpolated values in it:
17082 *
17083 * ```html
17084 * <div>prefix{{v0}}-{{v1}}suffix</div>
17085 * ```
17086 *
17087 * Its compiled representation is:
17088 *
17089 * ```ts
17090 * ɵɵtextInterpolate2('prefix', v0, '-', v1, 'suffix');
17091 * ```
17092 * @returns itself, so that it may be chained.
17093 * @see textInterpolateV
17094 * @codeGenApi
17095 */
17096export declare function ɵɵtextInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): typeof ɵɵtextInterpolate2;
17097
17098/**
17099 *
17100 * Update text content with 3 bound values surrounded by other text.
17101 *
17102 * Used when a text node has 3 interpolated values in it:
17103 *
17104 * ```html
17105 * <div>prefix{{v0}}-{{v1}}-{{v2}}suffix</div>
17106 * ```
17107 *
17108 * Its compiled representation is:
17109 *
17110 * ```ts
17111 * ɵɵtextInterpolate3(
17112 * 'prefix', v0, '-', v1, '-', v2, 'suffix');
17113 * ```
17114 * @returns itself, so that it may be chained.
17115 * @see textInterpolateV
17116 * @codeGenApi
17117 */
17118export declare function ɵɵtextInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): typeof ɵɵtextInterpolate3;
17119
17120/**
17121 *
17122 * Update text content with 4 bound values surrounded by other text.
17123 *
17124 * Used when a text node has 4 interpolated values in it:
17125 *
17126 * ```html
17127 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix</div>
17128 * ```
17129 *
17130 * Its compiled representation is:
17131 *
17132 * ```ts
17133 * ɵɵtextInterpolate4(
17134 * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
17135 * ```
17136 * @returns itself, so that it may be chained.
17137 * @see ɵɵtextInterpolateV
17138 * @codeGenApi
17139 */
17140export declare function ɵɵtextInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): typeof ɵɵtextInterpolate4;
17141
17142/**
17143 *
17144 * Update text content with 5 bound values surrounded by other text.
17145 *
17146 * Used when a text node has 5 interpolated values in it:
17147 *
17148 * ```html
17149 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix</div>
17150 * ```
17151 *
17152 * Its compiled representation is:
17153 *
17154 * ```ts
17155 * ɵɵtextInterpolate5(
17156 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
17157 * ```
17158 * @returns itself, so that it may be chained.
17159 * @see textInterpolateV
17160 * @codeGenApi
17161 */
17162export declare function ɵɵtextInterpolate5(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, suffix: string): typeof ɵɵtextInterpolate5;
17163
17164/**
17165 *
17166 * Update text content with 6 bound values surrounded by other text.
17167 *
17168 * Used when a text node has 6 interpolated values in it:
17169 *
17170 * ```html
17171 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix</div>
17172 * ```
17173 *
17174 * Its compiled representation is:
17175 *
17176 * ```ts
17177 * ɵɵtextInterpolate6(
17178 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
17179 * ```
17180 *
17181 * @param i4 Static value used for concatenation only.
17182 * @param v5 Value checked for change. @returns itself, so that it may be chained.
17183 * @see textInterpolateV
17184 * @codeGenApi
17185 */
17186export declare function ɵɵtextInterpolate6(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, suffix: string): typeof ɵɵtextInterpolate6;
17187
17188/**
17189 *
17190 * Update text content with 7 bound values surrounded by other text.
17191 *
17192 * Used when a text node has 7 interpolated values in it:
17193 *
17194 * ```html
17195 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix</div>
17196 * ```
17197 *
17198 * Its compiled representation is:
17199 *
17200 * ```ts
17201 * ɵɵtextInterpolate7(
17202 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
17203 * ```
17204 * @returns itself, so that it may be chained.
17205 * @see textInterpolateV
17206 * @codeGenApi
17207 */
17208export declare function ɵɵtextInterpolate7(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, suffix: string): typeof ɵɵtextInterpolate7;
17209
17210/**
17211 *
17212 * Update text content with 8 bound values surrounded by other text.
17213 *
17214 * Used when a text node has 8 interpolated values in it:
17215 *
17216 * ```html
17217 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix</div>
17218 * ```
17219 *
17220 * Its compiled representation is:
17221 *
17222 * ```ts
17223 * ɵɵtextInterpolate8(
17224 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
17225 * ```
17226 * @returns itself, so that it may be chained.
17227 * @see textInterpolateV
17228 * @codeGenApi
17229 */
17230export declare function ɵɵtextInterpolate8(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, i3: string, v4: any, i4: string, v5: any, i5: string, v6: any, i6: string, v7: any, suffix: string): typeof ɵɵtextInterpolate8;
17231
17232/**
17233 * Update text content with 9 or more bound values other surrounded by text.
17234 *
17235 * Used when the number of interpolated values exceeds 8.
17236 *
17237 * ```html
17238 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix</div>
17239 * ```
17240 *
17241 * Its compiled representation is:
17242 *
17243 * ```ts
17244 * ɵɵtextInterpolateV(
17245 * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
17246 * 'suffix']);
17247 * ```
17248 *.
17249 * @param values The collection of values and the strings in between those values, beginning with
17250 * a string prefix and ending with a string suffix.
17251 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
17252 *
17253 * @returns itself, so that it may be chained.
17254 * @codeGenApi
17255 */
17256export declare function ɵɵtextInterpolateV(values: any[]): typeof ɵɵtextInterpolateV;
17257
17258/**
17259 * A template tag function for promoting the associated constant literal to a
17260 * TrustedHTML. Interpolation is explicitly not allowed.
17261 *
17262 * @param html constant template literal containing trusted HTML.
17263 * @returns TrustedHTML wrapping `html`.
17264 *
17265 * @security This is a security-sensitive function and should only be used to
17266 * convert constant values of attributes and properties found in
17267 * application-provided Angular templates to TrustedHTML.
17268 *
17269 * @codeGenApi
17270 */
17271export declare function ɵɵtrustConstantHtml(html: TemplateStringsArray): TrustedHTML | string;
17272
17273/**
17274 * A template tag function for promoting the associated constant literal to a
17275 * TrustedScriptURL. Interpolation is explicitly not allowed.
17276 *
17277 * @param url constant template literal containing a trusted script URL.
17278 * @returns TrustedScriptURL wrapping `url`.
17279 *
17280 * @security This is a security-sensitive function and should only be used to
17281 * convert constant values of attributes and properties found in
17282 * application-provided Angular templates to TrustedScriptURL.
17283 *
17284 * @codeGenApi
17285 */
17286export declare function ɵɵtrustConstantResourceUrl(url: TemplateStringsArray): TrustedScriptURL | string;
17287
17288/**
17289 * Function used inside two-way listeners to conditionally set the value of the bound expression.
17290 *
17291 * @param target Field on which to set the value.
17292 * @param value Value to be set to the field.
17293 *
17294 * @codeGenApi
17295 */
17296export declare function ɵɵtwoWayBindingSet<T>(target: unknown, value: T): boolean;
17297
17298/**
17299 * Adds an event listener that updates a two-way binding to the current node.
17300 *
17301 * @param eventName Name of the event.
17302 * @param listenerFn The function to be called when event emits.
17303 *
17304 * @codeGenApi
17305 */
17306export declare function ɵɵtwoWayListener(eventName: string, listenerFn: (e?: any) => any): typeof ɵɵtwoWayListener;
17307
17308/**
17309 * Update a two-way bound property on a selected element.
17310 *
17311 * Operates on the element selected by index via the {@link select} instruction.
17312 *
17313 * @param propName Name of property.
17314 * @param value New value to write.
17315 * @param sanitizer An optional function used to sanitize the value.
17316 * @returns This function returns itself so that it may be chained
17317 * (e.g. `twoWayProperty('name', ctx.name)('title', ctx.title)`)
17318 *
17319 * @codeGenApi
17320 */
17321export declare function ɵɵtwoWayProperty<T>(propName: string, value: T | WritableSignal<T>, sanitizer?: SanitizerFn | null): typeof ɵɵtwoWayProperty;
17322
17323
17324/**
17325 * Validation function invoked at runtime for each binding that might potentially
17326 * represent a security-sensitive attribute of an <iframe>.
17327 * See `IFRAME_SECURITY_SENSITIVE_ATTRS` in the
17328 * `packages/compiler/src/schema/dom_security_schema.ts` script for the full list
17329 * of such attributes.
17330 *
17331 * @codeGenApi
17332 */
17333export declare function ɵɵvalidateIframeAttribute(attrValue: any, tagName: string, attrName: string): any;
17334
17335/**
17336 * Creates a new view query by initializing internal data structures.
17337 *
17338 * @param predicate The type for which the query will search
17339 * @param flags Flags associated with the query
17340 * @param read What to save in the query
17341 *
17342 * @codeGenApi
17343 */
17344export declare function ɵɵviewQuery<T>(predicate: ProviderToken<unknown> | string | string[], flags: QueryFlags, read?: any): void;
17345
17346/**
17347 * Creates a new view query by initializing internal data structures and binding a new query to the
17348 * target signal.
17349 *
17350 * @param target The target signal to assign the query results to.
17351 * @param predicate The type or label that should match a given query
17352 * @param flags Flags associated with the query
17353 * @param read What to save in the query
17354 *
17355 * @codeGenApi
17356 */
17357export declare function ɵɵviewQuerySignal(target: Signal<unknown>, predicate: ProviderToken<unknown> | string[], flags: QueryFlags, read?: ProviderToken<unknown>): void;
17358
17359export { }