UNPKG

544 kBTypeScriptView Raw
1/**
2 * @license Angular v16.0.4
3 * (c) 2010-2022 Google LLC. https://angular.io/
4 * License: MIT
5 */
6
7
8import { BehaviorSubject } from 'rxjs';
9import { Observable } from 'rxjs';
10import { Subject } from 'rxjs';
11import { Subscribable } from 'rxjs';
12import { Subscription } from 'rxjs';
13
14/**
15 * @description
16 *
17 * Represents an abstract class `T`, if applied to a concrete class it would stop being
18 * instantiable.
19 *
20 * @publicApi
21 */
22export declare interface AbstractType<T> extends Function {
23 prototype: T;
24}
25
26/**
27 * @description
28 * A lifecycle hook that is called after the default change detector has
29 * completed checking all content of a directive. It will run after the content
30 * has been checked and most of the time it's during a change detection cycle.
31 *
32 * @see `AfterViewChecked`
33 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
34 *
35 * @usageNotes
36 * The following snippet shows how a component can implement this interface to
37 * define its own after-check functionality.
38 *
39 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentChecked'}
40 *
41 * @publicApi
42 */
43export declare interface AfterContentChecked {
44 /**
45 * A callback method that is invoked immediately after the
46 * default change detector has completed checking all of the directive's
47 * content.
48 */
49 ngAfterContentChecked(): void;
50}
51
52/**
53 * @description
54 * A lifecycle hook that is called after Angular has fully initialized
55 * all content of a directive. It will run only once when the projected content is initialized.
56 * Define an `ngAfterContentInit()` method to handle any additional initialization tasks.
57 *
58 * @see `OnInit`
59 * @see `AfterViewInit`
60 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
61 *
62 * @usageNotes
63 * The following snippet shows how a component can implement this interface to
64 * define its own content initialization method.
65 *
66 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentInit'}
67 *
68 * @publicApi
69 */
70export declare interface AfterContentInit {
71 /**
72 * A callback method that is invoked immediately after
73 * Angular has completed initialization of all of the directive's
74 * content.
75 * It is invoked only once when the directive is instantiated.
76 */
77 ngAfterContentInit(): void;
78}
79
80/**
81 * @description
82 * A lifecycle hook that is called after the default change detector has
83 * completed checking a component's view for changes.
84 *
85 * @see `AfterContentChecked`
86 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
87 *
88 * @usageNotes
89 * The following snippet shows how a component can implement this interface to
90 * define its own after-check functionality.
91 *
92 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewChecked'}
93 *
94 * @publicApi
95 */
96export declare interface AfterViewChecked {
97 /**
98 * A callback method that is invoked immediately after the
99 * default change detector has completed one change-check cycle
100 * for a component's view.
101 */
102 ngAfterViewChecked(): void;
103}
104
105/**
106 * @description
107 * A lifecycle hook that is called after Angular has fully initialized
108 * a component's view.
109 * Define an `ngAfterViewInit()` method to handle any additional initialization tasks.
110 *
111 * @see `OnInit`
112 * @see `AfterContentInit`
113 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
114 *
115 * @usageNotes
116 * The following snippet shows how a component can implement this interface to
117 * define its own view initialization method.
118 *
119 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewInit'}
120 *
121 * @publicApi
122 */
123export declare interface AfterViewInit {
124 /**
125 * A callback method that is invoked immediately after
126 * Angular has completed initialization of a component's view.
127 * It is invoked only once when the view is instantiated.
128 *
129 */
130 ngAfterViewInit(): void;
131}
132
133/**
134 * A [DI token](guide/glossary#di-token "DI token definition") that indicates which animations
135 * module has been loaded.
136 * @publicApi
137 */
138export declare const ANIMATION_MODULE_TYPE: InjectionToken<"NoopAnimations" | "BrowserAnimations">;
139
140/**
141 * A [DI token](guide/glossary#di-token "DI token definition") that provides a set of callbacks to
142 * be called for every component that is bootstrapped.
143 *
144 * Each callback must take a `ComponentRef` instance and return nothing.
145 *
146 * `(componentRef: ComponentRef) => void`
147 *
148 * @publicApi
149 */
150export declare const APP_BOOTSTRAP_LISTENER: InjectionToken<((compRef: ComponentRef<any>) => void)[]>;
151
152/**
153 * A [DI token](guide/glossary#di-token "DI token definition") representing a string ID, used
154 * primarily for prefixing application attributes and CSS styles when
155 * {@link ViewEncapsulation#Emulated ViewEncapsulation.Emulated} is being used.
156 *
157 * The token is needed in cases when multiple applications are bootstrapped on a page
158 * (for example, using `bootstrapApplication` calls). In this case, ensure that those applications
159 * have different `APP_ID` value setup. For example:
160 *
161 * ```
162 * bootstrapApplication(ComponentA, {
163 * providers: [
164 * { provide: APP_ID, useValue: 'app-a' },
165 * // ... other providers ...
166 * ]
167 * });
168 *
169 * bootstrapApplication(ComponentB, {
170 * providers: [
171 * { provide: APP_ID, useValue: 'app-b' },
172 * // ... other providers ...
173 * ]
174 * });
175 * ```
176 *
177 * By default, when there is only one application bootstrapped, you don't need to provide the
178 * `APP_ID` token (the `ng` will be used as an app ID).
179 *
180 * @publicApi
181 */
182export declare const APP_ID: InjectionToken<string>;
183
184/**
185 * A [DI token](guide/glossary#di-token "DI token definition") that you can use to provide
186 * one or more initialization functions.
187 *
188 * The provided functions are injected at application startup and executed during
189 * app initialization. If any of these functions returns a Promise or an Observable, initialization
190 * does not complete until the Promise is resolved or the Observable is completed.
191 *
192 * You can, for example, create a factory function that loads language data
193 * or an external configuration, and provide that function to the `APP_INITIALIZER` token.
194 * The function is executed during the application bootstrap process,
195 * and the needed data is available on startup.
196 *
197 * @see `ApplicationInitStatus`
198 *
199 * @usageNotes
200 *
201 * The following example illustrates how to configure a multi-provider using `APP_INITIALIZER` token
202 * and a function returning a promise.
203 *
204 * ```
205 * function initializeApp(): Promise<any> {
206 * return new Promise((resolve, reject) => {
207 * // Do some asynchronous stuff
208 * resolve();
209 * });
210 * }
211 *
212 * @NgModule({
213 * imports: [BrowserModule],
214 * declarations: [AppComponent],
215 * bootstrap: [AppComponent],
216 * providers: [{
217 * provide: APP_INITIALIZER,
218 * useFactory: () => initializeApp,
219 * multi: true
220 * }]
221 * })
222 * export class AppModule {}
223 * ```
224 *
225 * It's also possible to configure a multi-provider using `APP_INITIALIZER` token and a function
226 * returning an observable, see an example below. Note: the `HttpClient` in this example is used for
227 * demo purposes to illustrate how the factory function can work with other providers available
228 * through DI.
229 *
230 * ```
231 * function initializeAppFactory(httpClient: HttpClient): () => Observable<any> {
232 * return () => httpClient.get("https://someUrl.com/api/user")
233 * .pipe(
234 * tap(user => { ... })
235 * );
236 * }
237 *
238 * @NgModule({
239 * imports: [BrowserModule, HttpClientModule],
240 * declarations: [AppComponent],
241 * bootstrap: [AppComponent],
242 * providers: [{
243 * provide: APP_INITIALIZER,
244 * useFactory: initializeAppFactory,
245 * deps: [HttpClient],
246 * multi: true
247 * }]
248 * })
249 * export class AppModule {}
250 * ```
251 *
252 * @publicApi
253 */
254export declare const APP_INITIALIZER: InjectionToken<readonly (() => Observable<unknown> | Promise<unknown> | void)[]>;
255
256/**
257 * Set of config options available during the application bootstrap operation.
258 *
259 * @publicApi
260 */
261export declare interface ApplicationConfig {
262 /**
263 * List of providers that should be available to the root component and all its children.
264 */
265 providers: Array<Provider | EnvironmentProviders>;
266}
267
268/**
269 * A class that reflects the state of running {@link APP_INITIALIZER} functions.
270 *
271 * @publicApi
272 */
273export declare class ApplicationInitStatus {
274 private resolve;
275 private reject;
276 private initialized;
277 readonly done = false;
278 readonly donePromise: Promise<any>;
279 private readonly appInits;
280 constructor();
281 static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationInitStatus, never>;
282 static ɵprov: i0.ɵɵInjectableDeclaration<ApplicationInitStatus>;
283}
284
285/**
286 * Re-exported by `BrowserModule`, which is included automatically in the root
287 * `AppModule` when you create a new app with the CLI `new` command. Eagerly injects
288 * `ApplicationRef` to instantiate it.
289 *
290 * @publicApi
291 */
292export declare class ApplicationModule {
293 constructor(appRef: ApplicationRef);
294 static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationModule, never>;
295 static ɵmod: i0.ɵɵNgModuleDeclaration<ApplicationModule, never, never, never>;
296 static ɵinj: i0.ɵɵInjectorDeclaration<ApplicationModule>;
297}
298
299/**
300 * A reference to an Angular application running on a page.
301 *
302 * @usageNotes
303 * {@a is-stable-examples}
304 * ### isStable examples and caveats
305 *
306 * Note two important points about `isStable`, demonstrated in the examples below:
307 * - the application will never be stable if you start any kind
308 * of recurrent asynchronous task when the application starts
309 * (for example for a polling process, started with a `setInterval`, a `setTimeout`
310 * or using RxJS operators like `interval`);
311 * - the `isStable` Observable runs outside of the Angular zone.
312 *
313 * Let's imagine that you start a recurrent task
314 * (here incrementing a counter, using RxJS `interval`),
315 * and at the same time subscribe to `isStable`.
316 *
317 * ```
318 * constructor(appRef: ApplicationRef) {
319 * appRef.isStable.pipe(
320 * filter(stable => stable)
321 * ).subscribe(() => console.log('App is stable now');
322 * interval(1000).subscribe(counter => console.log(counter));
323 * }
324 * ```
325 * In this example, `isStable` will never emit `true`,
326 * and the trace "App is stable now" will never get logged.
327 *
328 * If you want to execute something when the app is stable,
329 * you have to wait for the application to be stable
330 * before starting your polling process.
331 *
332 * ```
333 * constructor(appRef: ApplicationRef) {
334 * appRef.isStable.pipe(
335 * first(stable => stable),
336 * tap(stable => console.log('App is stable now')),
337 * switchMap(() => interval(1000))
338 * ).subscribe(counter => console.log(counter));
339 * }
340 * ```
341 * In this example, the trace "App is stable now" will be logged
342 * and then the counter starts incrementing every second.
343 *
344 * Note also that this Observable runs outside of the Angular zone,
345 * which means that the code in the subscription
346 * to this Observable will not trigger the change detection.
347 *
348 * Let's imagine that instead of logging the counter value,
349 * you update a field of your component
350 * and display it in its template.
351 *
352 * ```
353 * constructor(appRef: ApplicationRef) {
354 * appRef.isStable.pipe(
355 * first(stable => stable),
356 * switchMap(() => interval(1000))
357 * ).subscribe(counter => this.value = counter);
358 * }
359 * ```
360 * As the `isStable` Observable runs outside the zone,
361 * the `value` field will be updated properly,
362 * but the template will not be refreshed!
363 *
364 * You'll have to manually trigger the change detection to update the template.
365 *
366 * ```
367 * constructor(appRef: ApplicationRef, cd: ChangeDetectorRef) {
368 * appRef.isStable.pipe(
369 * first(stable => stable),
370 * switchMap(() => interval(1000))
371 * ).subscribe(counter => {
372 * this.value = counter;
373 * cd.detectChanges();
374 * });
375 * }
376 * ```
377 *
378 * Or make the subscription callback run inside the zone.
379 *
380 * ```
381 * constructor(appRef: ApplicationRef, zone: NgZone) {
382 * appRef.isStable.pipe(
383 * first(stable => stable),
384 * switchMap(() => interval(1000))
385 * ).subscribe(counter => zone.run(() => this.value = counter));
386 * }
387 * ```
388 *
389 * @publicApi
390 */
391export declare class ApplicationRef {
392 private _runningTick;
393 private _destroyed;
394 private _destroyListeners;
395 private readonly internalErrorHandler;
396 private readonly zoneIsStable;
397 /**
398 * Indicates whether this instance was destroyed.
399 */
400 get destroyed(): boolean;
401 /**
402 * Get a list of component types registered to this application.
403 * This list is populated even before the component is created.
404 */
405 readonly componentTypes: Type<any>[];
406 /**
407 * Get a list of components registered to this application.
408 */
409 readonly components: ComponentRef<any>[];
410 /**
411 * Returns an Observable that indicates when the application is stable or unstable.
412 */
413 readonly isStable: Observable<boolean>;
414 private readonly _injector;
415 /**
416 * The `EnvironmentInjector` used to create this application.
417 */
418 get injector(): EnvironmentInjector;
419 /**
420 * Bootstrap a component onto the element identified by its selector or, optionally, to a
421 * specified element.
422 *
423 * @usageNotes
424 * ### Bootstrap process
425 *
426 * When bootstrapping a component, Angular mounts it onto a target DOM element
427 * and kicks off automatic change detection. The target DOM element can be
428 * provided using the `rootSelectorOrNode` argument.
429 *
430 * If the target DOM element is not provided, Angular tries to find one on a page
431 * using the `selector` of the component that is being bootstrapped
432 * (first matched element is used).
433 *
434 * ### Example
435 *
436 * Generally, we define the component to bootstrap in the `bootstrap` array of `NgModule`,
437 * but it requires us to know the component while writing the application code.
438 *
439 * Imagine a situation where we have to wait for an API call to decide about the component to
440 * bootstrap. We can use the `ngDoBootstrap` hook of the `NgModule` and call this method to
441 * dynamically bootstrap a component.
442 *
443 * {@example core/ts/platform/platform.ts region='componentSelector'}
444 *
445 * Optionally, a component can be mounted onto a DOM element that does not match the
446 * selector of the bootstrapped component.
447 *
448 * In the following example, we are providing a CSS selector to match the target element.
449 *
450 * {@example core/ts/platform/platform.ts region='cssSelector'}
451 *
452 * While in this example, we are providing reference to a DOM node.
453 *
454 * {@example core/ts/platform/platform.ts region='domNode'}
455 */
456 bootstrap<C>(component: Type<C>, rootSelectorOrNode?: string | any): ComponentRef<C>;
457 /**
458 * Bootstrap a component onto the element identified by its selector or, optionally, to a
459 * specified element.
460 *
461 * @usageNotes
462 * ### Bootstrap process
463 *
464 * When bootstrapping a component, Angular mounts it onto a target DOM element
465 * and kicks off automatic change detection. The target DOM element can be
466 * provided using the `rootSelectorOrNode` argument.
467 *
468 * If the target DOM element is not provided, Angular tries to find one on a page
469 * using the `selector` of the component that is being bootstrapped
470 * (first matched element is used).
471 *
472 * ### Example
473 *
474 * Generally, we define the component to bootstrap in the `bootstrap` array of `NgModule`,
475 * but it requires us to know the component while writing the application code.
476 *
477 * Imagine a situation where we have to wait for an API call to decide about the component to
478 * bootstrap. We can use the `ngDoBootstrap` hook of the `NgModule` and call this method to
479 * dynamically bootstrap a component.
480 *
481 * {@example core/ts/platform/platform.ts region='componentSelector'}
482 *
483 * Optionally, a component can be mounted onto a DOM element that does not match the
484 * selector of the bootstrapped component.
485 *
486 * In the following example, we are providing a CSS selector to match the target element.
487 *
488 * {@example core/ts/platform/platform.ts region='cssSelector'}
489 *
490 * While in this example, we are providing reference to a DOM node.
491 *
492 * {@example core/ts/platform/platform.ts region='domNode'}
493 *
494 * @deprecated Passing Component factories as the `Application.bootstrap` function argument is
495 * deprecated. Pass Component Types instead.
496 */
497 bootstrap<C>(componentFactory: ComponentFactory<C>, rootSelectorOrNode?: string | any): ComponentRef<C>;
498 /**
499 * Invoke this method to explicitly process change detection and its side-effects.
500 *
501 * In development mode, `tick()` also performs a second change detection cycle to ensure that no
502 * further changes are detected. If additional changes are picked up during this second cycle,
503 * bindings in the app have side-effects that cannot be resolved in a single change detection
504 * pass.
505 * In this case, Angular throws an error, since an Angular application can only have one change
506 * detection pass during which all change detection must complete.
507 */
508 tick(): void;
509 /**
510 * Attaches a view so that it will be dirty checked.
511 * The view will be automatically detached when it is destroyed.
512 * This will throw if the view is already attached to a ViewContainer.
513 */
514 attachView(viewRef: ViewRef): void;
515 /**
516 * Detaches a view from dirty checking again.
517 */
518 detachView(viewRef: ViewRef): void;
519 private _loadComponent;
520 /**
521 * Registers a listener to be called when an instance is destroyed.
522 *
523 * @param callback A callback function to add as a listener.
524 * @returns A function which unregisters a listener.
525 */
526 onDestroy(callback: () => void): VoidFunction;
527 /**
528 * Destroys an Angular application represented by this `ApplicationRef`. Calling this function
529 * will destroy the associated environment injectors as well as all the bootstrapped components
530 * with their views.
531 */
532 destroy(): void;
533 /**
534 * Returns the number of attached views.
535 */
536 get viewCount(): number;
537 private warnIfDestroyed;
538 static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationRef, never>;
539 static ɵprov: i0.ɵɵInjectableDeclaration<ApplicationRef>;
540}
541
542/**
543 * @publicApi
544 */
545export declare function asNativeElements(debugEls: DebugElement[]): any;
546
547/**
548 * Asserts that the current stack frame is within an injection context and has access to `inject`.
549 *
550 * @param debugFn a reference to the function making the assertion (used for the error message).
551 *
552 * @publicApi
553 */
554export declare function assertInInjectionContext(debugFn: Function): void;
555
556/**
557 * Checks that there is currently a platform that contains the given token as a provider.
558 *
559 * @publicApi
560 */
561export declare function assertPlatform(requiredToken: any): PlatformRef;
562
563/**
564 * Type of the Attribute metadata.
565 *
566 * @publicApi
567 */
568export declare interface Attribute {
569 /**
570 * The name of the attribute whose value can be injected.
571 */
572 attributeName: string;
573}
574
575/**
576 * Attribute decorator and metadata.
577 *
578 * @Annotation
579 * @publicApi
580 */
581export declare const Attribute: AttributeDecorator;
582
583
584/**
585 * Type of the Attribute decorator / constructor function.
586 *
587 * @publicApi
588 */
589export declare interface AttributeDecorator {
590 /**
591 * Parameter decorator for a directive constructor that designates
592 * a host-element attribute whose value is injected as a constant string literal.
593 *
594 * @usageNotes
595 *
596 * Suppose we have an `<input>` element and want to know its `type`.
597 *
598 * ```html
599 * <input type="text">
600 * ```
601 *
602 * The following example uses the decorator to inject the string literal `text` in a directive.
603 *
604 * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}
605 *
606 * The following example uses the decorator in a component constructor.
607 *
608 * {@example core/ts/metadata/metadata.ts region='attributeFactory'}
609 *
610 */
611 (name: string): any;
612 new (name: string): Attribute;
613}
614
615/**
616 * Provides additional options to the bootstrapping process.
617 *
618 * @publicApi
619 */
620export declare interface BootstrapOptions {
621 /**
622 * Optionally specify which `NgZone` should be used.
623 *
624 * - Provide your own `NgZone` instance.
625 * - `zone.js` - Use default `NgZone` which requires `Zone.js`.
626 * - `noop` - Use `NoopNgZone` which does nothing.
627 */
628 ngZone?: NgZone | 'zone.js' | 'noop';
629 /**
630 * Optionally specify coalescing event change detections or not.
631 * Consider the following case.
632 *
633 * ```
634 * <div (click)="doSomething()">
635 * <button (click)="doSomethingElse()"></button>
636 * </div>
637 * ```
638 *
639 * When button is clicked, because of the event bubbling, both
640 * event handlers will be called and 2 change detections will be
641 * triggered. We can coalesce such kind of events to only trigger
642 * change detection only once.
643 *
644 * By default, this option will be false. So the events will not be
645 * coalesced and the change detection will be triggered multiple times.
646 * And if this option be set to true, the change detection will be
647 * triggered async by scheduling a animation frame. So in the case above,
648 * the change detection will only be triggered once.
649 */
650 ngZoneEventCoalescing?: boolean;
651 /**
652 * Optionally specify if `NgZone#run()` method invocations should be coalesced
653 * into a single change detection.
654 *
655 * Consider the following case.
656 * ```
657 * for (let i = 0; i < 10; i ++) {
658 * ngZone.run(() => {
659 * // do something
660 * });
661 * }
662 * ```
663 *
664 * This case triggers the change detection multiple times.
665 * With ngZoneRunCoalescing options, all change detections in an event loop trigger only once.
666 * In addition, the change detection executes in requestAnimation.
667 *
668 */
669 ngZoneRunCoalescing?: boolean;
670}
671
672
673/**
674 * The strategy that the default change detector uses to detect changes.
675 * When set, takes effect the next time change detection is triggered.
676 *
677 * @see {@link ChangeDetectorRef#usage-notes Change detection usage}
678 *
679 * @publicApi
680 */
681export declare enum ChangeDetectionStrategy {
682 /**
683 * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated
684 * until reactivated by setting the strategy to `Default` (`CheckAlways`).
685 * Change detection can still be explicitly invoked.
686 * This strategy applies to all child directives and cannot be overridden.
687 */
688 OnPush = 0,
689 /**
690 * Use the default `CheckAlways` strategy, in which change detection is automatic until
691 * explicitly deactivated.
692 */
693 Default = 1
694}
695
696declare type ChangeDetectionStrategy_2 = number;
697
698/**
699 * Base class that provides change detection functionality.
700 * A change-detection tree collects all views that are to be checked for changes.
701 * Use the methods to add and remove views from the tree, initiate change-detection,
702 * and explicitly mark views as _dirty_, meaning that they have changed and need to be re-rendered.
703 *
704 * @see [Using change detection hooks](guide/lifecycle-hooks#using-change-detection-hooks)
705 * @see [Defining custom change detection](guide/lifecycle-hooks#defining-custom-change-detection)
706 *
707 * @usageNotes
708 *
709 * The following examples demonstrate how to modify default change-detection behavior
710 * to perform explicit detection when needed.
711 *
712 * ### Use `markForCheck()` with `CheckOnce` strategy
713 *
714 * The following example sets the `OnPush` change-detection strategy for a component
715 * (`CheckOnce`, rather than the default `CheckAlways`), then forces a second check
716 * after an interval.
717 *
718 * <code-example path="core/ts/change_detect/change-detection.ts"
719 * region="mark-for-check"></code-example>
720 *
721 * ### Detach change detector to limit how often check occurs
722 *
723 * The following example defines a component with a large list of read-only data
724 * that is expected to change constantly, many times per second.
725 * To improve performance, we want to check and update the list
726 * less often than the changes actually occur. To do that, we detach
727 * the component's change detector and perform an explicit local check every five seconds.
728 *
729 * <code-example path="core/ts/change_detect/change-detection.ts" region="detach"></code-example>
730 *
731 *
732 * ### Reattaching a detached component
733 *
734 * The following example creates a component displaying live data.
735 * The component detaches its change detector from the main change detector tree
736 * when the `live` property is set to false, and reattaches it when the property
737 * becomes true.
738 *
739 * <code-example path="core/ts/change_detect/change-detection.ts" region="reattach"></code-example>
740 *
741 * @publicApi
742 */
743export declare abstract class ChangeDetectorRef {
744 /**
745 * When a view uses the {@link ChangeDetectionStrategy#OnPush OnPush} (checkOnce)
746 * change detection strategy, explicitly marks the view as changed so that
747 * it can be checked again.
748 *
749 * Components are normally marked as dirty (in need of rerendering) when inputs
750 * have changed or events have fired in the view. Call this method to ensure that
751 * a component is checked even if these triggers have not occurred.
752 *
753 * <!-- TODO: Add a link to a chapter on OnPush components -->
754 *
755 */
756 abstract markForCheck(): void;
757 /**
758 * Detaches this view from the change-detection tree.
759 * A detached view is not checked until it is reattached.
760 * Use in combination with `detectChanges()` to implement local change detection checks.
761 *
762 * Detached views are not checked during change detection runs until they are
763 * re-attached, even if they are marked as dirty.
764 *
765 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
766 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
767 *
768 */
769 abstract detach(): void;
770 /**
771 * Checks this view and its children. Use in combination with {@link ChangeDetectorRef#detach
772 * detach}
773 * to implement local change detection checks.
774 *
775 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
776 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
777 *
778 */
779 abstract detectChanges(): void;
780 /**
781 * Checks the change detector and its children, and throws if any changes are detected.
782 *
783 * Use in development mode to verify that running change detection doesn't introduce
784 * other changes. Calling it in production mode is a noop.
785 */
786 abstract checkNoChanges(): void;
787 /**
788 * Re-attaches the previously detached view to the change detection tree.
789 * Views are attached to the tree by default.
790 *
791 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
792 *
793 */
794 abstract reattach(): void;
795}
796
797declare interface ChangeDetectorRefInterface extends ChangeDetectorRef {
798}
799
800declare const CHILD_HEAD = 12;
801
802declare const CHILD_TAIL = 13;
803
804/**
805 * Configures the `Injector` to return an instance of `useClass` for a token.
806 * @see ["Dependency Injection Guide"](guide/dependency-injection).
807 *
808 * @usageNotes
809 *
810 * {@example core/di/ts/provider_spec.ts region='ClassProvider'}
811 *
812 * Note that following two providers are not equal:
813 *
814 * {@example core/di/ts/provider_spec.ts region='ClassProviderDifference'}
815 *
816 * ### Multi-value example
817 *
818 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
819 *
820 * @publicApi
821 */
822export declare interface ClassProvider extends ClassSansProvider {
823 /**
824 * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
825 */
826 provide: any;
827 /**
828 * When true, injector returns an array of instances. This is useful to allow multiple
829 * providers spread across many files to provide configuration information to a common token.
830 */
831 multi?: boolean;
832}
833
834/**
835 * Configures the `Injector` to return a value by invoking a `useClass` function.
836 * Base for `ClassProvider` decorator.
837 *
838 * @see ["Dependency Injection Guide"](guide/dependency-injection).
839 *
840 * @publicApi
841 */
842export declare interface ClassSansProvider {
843 /**
844 * Class to instantiate for the `token`.
845 */
846 useClass: Type<any>;
847}
848
849declare const CLEANUP = 7;
850
851/**
852 * Low-level service for running the angular compiler during runtime
853 * to create {@link ComponentFactory}s, which
854 * can later be used to create and render a Component instance.
855 *
856 * Each `@NgModule` provides an own `Compiler` to its injector,
857 * that will use the directives/pipes of the ng module for compilation
858 * of components.
859 *
860 * @publicApi
861 *
862 * @deprecated
863 * Ivy JIT mode doesn't require accessing this symbol.
864 * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for
865 * additional context.
866 */
867export declare class Compiler {
868 /**
869 * Compiles the given NgModule and all of its components. All templates of the components
870 * have to be inlined.
871 */
872 compileModuleSync<T>(moduleType: Type<T>): NgModuleFactory<T>;
873 /**
874 * Compiles the given NgModule and all of its components
875 */
876 compileModuleAsync<T>(moduleType: Type<T>): Promise<NgModuleFactory<T>>;
877 /**
878 * Same as {@link #compileModuleSync} but also creates ComponentFactories for all components.
879 */
880 compileModuleAndAllComponentsSync<T>(moduleType: Type<T>): ModuleWithComponentFactories<T>;
881 /**
882 * Same as {@link #compileModuleAsync} but also creates ComponentFactories for all components.
883 */
884 compileModuleAndAllComponentsAsync<T>(moduleType: Type<T>): Promise<ModuleWithComponentFactories<T>>;
885 /**
886 * Clears all caches.
887 */
888 clearCache(): void;
889 /**
890 * Clears the cache for the given component/ngModule.
891 */
892 clearCacheFor(type: Type<any>): void;
893 /**
894 * Returns the id for a given NgModule, if one is defined and known to the compiler.
895 */
896 getModuleId(moduleType: Type<any>): string | undefined;
897 static ɵfac: i0.ɵɵFactoryDeclaration<Compiler, never>;
898 static ɵprov: i0.ɵɵInjectableDeclaration<Compiler>;
899}
900
901/**
902 * Token to provide CompilerOptions in the platform injector.
903 *
904 * @publicApi
905 */
906export declare const COMPILER_OPTIONS: InjectionToken<CompilerOptions[]>;
907
908/**
909 * A factory for creating a Compiler
910 *
911 * @publicApi
912 *
913 * @deprecated
914 * Ivy JIT mode doesn't require accessing this symbol.
915 * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for
916 * additional context.
917 */
918export declare abstract class CompilerFactory {
919 abstract createCompiler(options?: CompilerOptions[]): Compiler;
920}
921
922/**
923 * Options for creating a compiler.
924 *
925 * Note: the `useJit` and `missingTranslation` config options are not used in Ivy, passing them has
926 * no effect. Those config options are deprecated since v13.
927 *
928 * @publicApi
929 */
930export declare type CompilerOptions = {
931 /**
932 * @deprecated not used at all in Ivy, providing this config option has no effect.
933 */
934 useJit?: boolean;
935 defaultEncapsulation?: ViewEncapsulation;
936 providers?: StaticProvider[];
937 /**
938 * @deprecated not used at all in Ivy, providing this config option has no effect.
939 */
940 missingTranslation?: MissingTranslationStrategy;
941 preserveWhitespaces?: boolean;
942};
943
944/**
945 * Supplies configuration metadata for an Angular component.
946 *
947 * @publicApi
948 */
949export declare interface Component extends Directive {
950 /**
951 * The change-detection strategy to use for this component.
952 *
953 * When a component is instantiated, Angular creates a change detector,
954 * which is responsible for propagating the component's bindings.
955 * The strategy is one of:
956 * - `ChangeDetectionStrategy#OnPush` sets the strategy to `CheckOnce` (on demand).
957 * - `ChangeDetectionStrategy#Default` sets the strategy to `CheckAlways`.
958 */
959 changeDetection?: ChangeDetectionStrategy;
960 /**
961 * Defines the set of injectable objects that are visible to its view DOM children.
962 * See [example](#injecting-a-class-with-a-view-provider).
963 *
964 */
965 viewProviders?: Provider[];
966 /**
967 * The module ID of the module that contains the component.
968 * The component must be able to resolve relative URLs for templates and styles.
969 * SystemJS exposes the `__moduleName` variable within each module.
970 * In CommonJS, this can be set to `module.id`.
971 *
972 * @deprecated This option does not have any effect. Will be removed in Angular v17.
973 */
974 moduleId?: string;
975 /**
976 * The relative path or absolute URL of a template file for an Angular component.
977 * If provided, do not supply an inline template using `template`.
978 *
979 */
980 templateUrl?: string;
981 /**
982 * An inline template for an Angular component. If provided,
983 * do not supply a template file using `templateUrl`.
984 *
985 */
986 template?: string;
987 /**
988 * One or more relative paths or absolute URLs for files containing CSS stylesheets to use
989 * in this component.
990 */
991 styleUrls?: string[];
992 /**
993 * One or more inline CSS stylesheets to use
994 * in this component.
995 */
996 styles?: string[];
997 /**
998 * One or more animation `trigger()` calls, containing
999 * [`state()`](api/animations/state) and `transition()` definitions.
1000 * See the [Animations guide](/guide/animations) and animations API documentation.
1001 *
1002 */
1003 animations?: any[];
1004 /**
1005 * An encapsulation policy for the component's styling.
1006 * Possible values:
1007 * - `ViewEncapsulation.Emulated`: Apply modified component styles in order to emulate
1008 * a native Shadow DOM CSS encapsulation behavior.
1009 * - `ViewEncapsulation.None`: Apply component styles globally without any sort of encapsulation.
1010 * - `ViewEncapsulation.ShadowDom`: Use the browser's native Shadow DOM API to encapsulate styles.
1011 *
1012 * If not supplied, the value is taken from the `CompilerOptions`
1013 * which defaults to `ViewEncapsulation.Emulated`.
1014 *
1015 * If the policy is `ViewEncapsulation.Emulated` and the component has no
1016 * {@link Component#styles styles} nor {@link Component#styleUrls styleUrls},
1017 * the policy is automatically switched to `ViewEncapsulation.None`.
1018 */
1019 encapsulation?: ViewEncapsulation;
1020 /**
1021 * Overrides the default interpolation start and end delimiters (`{{` and `}}`).
1022 */
1023 interpolation?: [string, string];
1024 /**
1025 * True to preserve or false to remove potentially superfluous whitespace characters
1026 * from the compiled template. Whitespace characters are those matching the `\s`
1027 * character class in JavaScript regular expressions. Default is false, unless
1028 * overridden in compiler options.
1029 */
1030 preserveWhitespaces?: boolean;
1031 /**
1032 * Angular components marked as `standalone` do not need to be declared in an NgModule. Such
1033 * components directly manage their own template dependencies (components, directives, and pipes
1034 * used in a template) via the imports property.
1035 *
1036 * More information about standalone components, directives, and pipes can be found in [this
1037 * guide](guide/standalone-components).
1038 */
1039 standalone?: boolean;
1040 /**
1041 * The imports property specifies the standalone component's template dependencies — those
1042 * directives, components, and pipes that can be used within its template. Standalone components
1043 * can import other standalone components, directives, and pipes as well as existing NgModules.
1044 *
1045 * This property is only available for standalone components - specifying it for components
1046 * declared in an NgModule generates a compilation error.
1047 *
1048 * More information about standalone components, directives, and pipes can be found in [this
1049 * guide](guide/standalone-components).
1050 */
1051 imports?: (Type<any> | ReadonlyArray<any>)[];
1052 /**
1053 * The set of schemas that declare elements to be allowed in a standalone component. Elements and
1054 * properties that are neither Angular components nor directives must be declared in a schema.
1055 *
1056 * This property is only available for standalone components - specifying it for components
1057 * declared in an NgModule generates a compilation error.
1058 *
1059 * More information about standalone components, directives, and pipes can be found in [this
1060 * guide](guide/standalone-components).
1061 */
1062 schemas?: SchemaMetadata[];
1063}
1064
1065/**
1066 * Component decorator and metadata.
1067 *
1068 * @Annotation
1069 * @publicApi
1070 */
1071export declare const Component: ComponentDecorator;
1072
1073/**
1074 * Component decorator interface
1075 *
1076 * @publicApi
1077 */
1078export declare interface ComponentDecorator {
1079 /**
1080 * Decorator that marks a class as an Angular component and provides configuration
1081 * metadata that determines how the component should be processed,
1082 * instantiated, and used at runtime.
1083 *
1084 * Components are the most basic UI building block of an Angular app.
1085 * An Angular app contains a tree of Angular components.
1086 *
1087 * Angular components are a subset of directives, always associated with a template.
1088 * Unlike other directives, only one component can be instantiated for a given element in a
1089 * template.
1090 *
1091 * A component must belong to an NgModule in order for it to be available
1092 * to another component or application. To make it a member of an NgModule,
1093 * list it in the `declarations` field of the `NgModule` metadata.
1094 *
1095 * Note that, in addition to these options for configuring a directive,
1096 * you can control a component's runtime behavior by implementing
1097 * life-cycle hooks. For more information, see the
1098 * [Lifecycle Hooks](guide/lifecycle-hooks) guide.
1099 *
1100 * @usageNotes
1101 *
1102 * ### Setting component inputs
1103 *
1104 * The following example creates a component with two data-bound properties,
1105 * specified by the `inputs` value.
1106 *
1107 * <code-example path="core/ts/metadata/directives.ts" region="component-input"></code-example>
1108 *
1109 *
1110 * ### Setting component outputs
1111 *
1112 * The following example shows two event emitters that emit on an interval. One
1113 * emits an output every second, while the other emits every five seconds.
1114 *
1115 * {@example core/ts/metadata/directives.ts region='component-output-interval'}
1116 *
1117 * ### Injecting a class with a view provider
1118 *
1119 * The following simple example injects a class into a component
1120 * using the view provider specified in component metadata:
1121 *
1122 * ```ts
1123 * class Greeter {
1124 * greet(name:string) {
1125 * return 'Hello ' + name + '!';
1126 * }
1127 * }
1128 *
1129 * @Directive({
1130 * selector: 'needs-greeter'
1131 * })
1132 * class NeedsGreeter {
1133 * greeter:Greeter;
1134 *
1135 * constructor(greeter:Greeter) {
1136 * this.greeter = greeter;
1137 * }
1138 * }
1139 *
1140 * @Component({
1141 * selector: 'greet',
1142 * viewProviders: [
1143 * Greeter
1144 * ],
1145 * template: `<needs-greeter></needs-greeter>`
1146 * })
1147 * class HelloWorld {
1148 * }
1149 *
1150 * ```
1151 *
1152 * ### Preserving whitespace
1153 *
1154 * Removing whitespace can greatly reduce AOT-generated code size and speed up view creation.
1155 * As of Angular 6, the default for `preserveWhitespaces` is false (whitespace is removed).
1156 * To change the default setting for all components in your application, set
1157 * the `preserveWhitespaces` option of the AOT compiler.
1158 *
1159 * By default, the AOT compiler removes whitespace characters as follows:
1160 * * Trims all whitespaces at the beginning and the end of a template.
1161 * * Removes whitespace-only text nodes. For example,
1162 *
1163 * ```html
1164 * <button>Action 1</button> <button>Action 2</button>
1165 * ```
1166 *
1167 * becomes:
1168 *
1169 * ```html
1170 * <button>Action 1</button><button>Action 2</button>
1171 * ```
1172 *
1173 * * Replaces a series of whitespace characters in text nodes with a single space.
1174 * For example, `<span>\n some text\n</span>` becomes `<span> some text </span>`.
1175 * * Does NOT alter text nodes inside HTML tags such as `<pre>` or `<textarea>`,
1176 * where whitespace characters are significant.
1177 *
1178 * Note that these transformations can influence DOM nodes layout, although impact
1179 * should be minimal.
1180 *
1181 * You can override the default behavior to preserve whitespace characters
1182 * in certain fragments of a template. For example, you can exclude an entire
1183 * DOM sub-tree by using the `ngPreserveWhitespaces` attribute:
1184 *
1185 * ```html
1186 * <div ngPreserveWhitespaces>
1187 * whitespaces are preserved here
1188 * <span> and here </span>
1189 * </div>
1190 * ```
1191 *
1192 * You can force a single space to be preserved in a text node by using `&ngsp;`,
1193 * which is replaced with a space character by Angular's template
1194 * compiler:
1195 *
1196 * ```html
1197 * <a>Spaces</a>&ngsp;<a>between</a>&ngsp;<a>links.</a>
1198 * <!-- compiled to be equivalent to:
1199 * <a>Spaces</a> <a>between</a> <a>links.</a> -->
1200 * ```
1201 *
1202 * Note that sequences of `&ngsp;` are still collapsed to just one space character when
1203 * the `preserveWhitespaces` option is set to `false`.
1204 *
1205 * ```html
1206 * <a>before</a>&ngsp;&ngsp;&ngsp;<a>after</a>
1207 * <!-- compiled to be equivalent to:
1208 * <a>before</a> <a>after</a> -->
1209 * ```
1210 *
1211 * To preserve sequences of whitespace characters, use the
1212 * `ngPreserveWhitespaces` attribute.
1213 *
1214 * @Annotation
1215 */
1216 (obj: Component): TypeDecorator;
1217 /**
1218 * See the `Component` decorator.
1219 */
1220 new (obj: Component): Component;
1221}
1222
1223declare interface ComponentDefFeature {
1224 <T>(componentDef: ɵComponentDef<T>): void;
1225 /**
1226 * Marks a feature as something that {@link InheritDefinitionFeature} will execute
1227 * during inheritance.
1228 *
1229 * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers
1230 * identifying the change as a side effect, and the feature will be included in
1231 * every bundle.
1232 */
1233 ngInherit?: true;
1234}
1235
1236declare interface ComponentDefinition<T> extends Omit<DirectiveDefinition<T>, 'features'> {
1237 /**
1238 * The number of nodes, local refs, and pipes in this component template.
1239 *
1240 * Used to calculate the length of this component's LView array, so we
1241 * can pre-fill the array and set the binding start index.
1242 */
1243 decls: number;
1244 /**
1245 * The number of bindings in this component template (including pure fn bindings).
1246 *
1247 * Used to calculate the length of this component's LView array, so we
1248 * can pre-fill the array and set the host binding start index.
1249 */
1250 vars: number;
1251 /**
1252 * Template function use for rendering DOM.
1253 *
1254 * This function has following structure.
1255 *
1256 * ```
1257 * function Template<T>(ctx:T, creationMode: boolean) {
1258 * if (creationMode) {
1259 * // Contains creation mode instructions.
1260 * }
1261 * // Contains binding update instructions
1262 * }
1263 * ```
1264 *
1265 * Common instructions are:
1266 * Creation mode instructions:
1267 * - `elementStart`, `elementEnd`
1268 * - `text`
1269 * - `container`
1270 * - `listener`
1271 *
1272 * Binding update instructions:
1273 * - `bind`
1274 * - `elementAttribute`
1275 * - `elementProperty`
1276 * - `elementClass`
1277 * - `elementStyle`
1278 *
1279 */
1280 template: ComponentTemplate<T>;
1281 /**
1282 * Constants for the nodes in the component's view.
1283 * Includes attribute arrays, local definition arrays etc.
1284 */
1285 consts?: TConstantsOrFactory;
1286 /**
1287 * An array of `ngContent[selector]` values that were found in the template.
1288 */
1289 ngContentSelectors?: string[];
1290 /**
1291 * A list of optional features to apply.
1292 *
1293 * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}
1294 */
1295 features?: ComponentDefFeature[];
1296 /**
1297 * Defines template and style encapsulation options available for Component's {@link Component}.
1298 */
1299 encapsulation?: ViewEncapsulation;
1300 /**
1301 * Defines arbitrary developer-defined data to be stored on a renderer instance.
1302 * This is useful for renderers that delegate to other renderers.
1303 *
1304 * see: animation
1305 */
1306 data?: {
1307 [kind: string]: any;
1308 };
1309 /**
1310 * A set of styles that the component needs to be present for component to render correctly.
1311 */
1312 styles?: string[];
1313 /**
1314 * The strategy that the default change detector uses to detect changes.
1315 * When set, takes effect the next time change detection is triggered.
1316 */
1317 changeDetection?: ChangeDetectionStrategy;
1318 /**
1319 * Registry of directives, components, and pipes that may be found in this component's view.
1320 *
1321 * This property is either an array of types or a function that returns the array of types. This
1322 * function may be necessary to support forward declarations.
1323 */
1324 dependencies?: TypeOrFactory<DependencyTypeList>;
1325 /**
1326 * The set of schemas that declare elements to be allowed in the component's template.
1327 */
1328 schemas?: SchemaMetadata[] | null;
1329}
1330
1331/**
1332 * Base class for a factory that can create a component dynamically.
1333 * Instantiate a factory for a given type of component with `resolveComponentFactory()`.
1334 * Use the resulting `ComponentFactory.create()` method to create a component of that type.
1335 *
1336 * @see [Dynamic Components](guide/dynamic-component-loader)
1337 *
1338 * @publicApi
1339 *
1340 * @deprecated Angular no longer requires Component factories. Please use other APIs where
1341 * Component class can be used directly.
1342 */
1343declare abstract class ComponentFactory<C> {
1344 /**
1345 * The component's HTML selector.
1346 */
1347 abstract get selector(): string;
1348 /**
1349 * The type of component the factory will create.
1350 */
1351 abstract get componentType(): Type<any>;
1352 /**
1353 * Selector for all <ng-content> elements in the component.
1354 */
1355 abstract get ngContentSelectors(): string[];
1356 /**
1357 * The inputs of the component.
1358 */
1359 abstract get inputs(): {
1360 propName: string;
1361 templateName: string;
1362 }[];
1363 /**
1364 * The outputs of the component.
1365 */
1366 abstract get outputs(): {
1367 propName: string;
1368 templateName: string;
1369 }[];
1370 /**
1371 * Creates a new component.
1372 */
1373 abstract create(injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string | any, environmentInjector?: EnvironmentInjector | NgModuleRef<any>): ComponentRef<C>;
1374}
1375export { ComponentFactory }
1376export { ComponentFactory as ɵComponentFactory }
1377
1378/**
1379 * A simple registry that maps `Components` to generated `ComponentFactory` classes
1380 * that can be used to create instances of components.
1381 * Use to obtain the factory for a given component type,
1382 * then use the factory's `create()` method to create a component of that type.
1383 *
1384 * Note: since v13, dynamic component creation via
1385 * [`ViewContainerRef.createComponent`](api/core/ViewContainerRef#createComponent)
1386 * does **not** require resolving component factory: component class can be used directly.
1387 *
1388 * @publicApi
1389 *
1390 * @deprecated Angular no longer requires Component factories. Please use other APIs where
1391 * Component class can be used directly.
1392 */
1393export declare abstract class ComponentFactoryResolver {
1394 static NULL: ComponentFactoryResolver;
1395 /**
1396 * Retrieves the factory object that creates a component of the given type.
1397 * @param component The component type.
1398 */
1399 abstract resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1400}
1401
1402declare class ComponentFactoryResolver_2 extends ComponentFactoryResolver {
1403 private ngModule?;
1404 /**
1405 * @param ngModule The NgModuleRef to which all resolved factories are bound.
1406 */
1407 constructor(ngModule?: NgModuleRef<any> | undefined);
1408 resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1409}
1410
1411/**
1412 * An interface that describes the subset of component metadata
1413 * that can be retrieved using the `reflectComponentType` function.
1414 *
1415 * @publicApi
1416 */
1417export declare interface ComponentMirror<C> {
1418 /**
1419 * The component's HTML selector.
1420 */
1421 get selector(): string;
1422 /**
1423 * The type of component the factory will create.
1424 */
1425 get type(): Type<C>;
1426 /**
1427 * The inputs of the component.
1428 */
1429 get inputs(): ReadonlyArray<{
1430 readonly propName: string;
1431 readonly templateName: string;
1432 }>;
1433 /**
1434 * The outputs of the component.
1435 */
1436 get outputs(): ReadonlyArray<{
1437 readonly propName: string;
1438 readonly templateName: string;
1439 }>;
1440 /**
1441 * Selector for all <ng-content> elements in the component.
1442 */
1443 get ngContentSelectors(): ReadonlyArray<string>;
1444 /**
1445 * Whether this component is marked as standalone.
1446 * Note: an extra flag, not present in `ComponentFactory`.
1447 */
1448 get isStandalone(): boolean;
1449}
1450
1451/**
1452 * Represents a component created by a `ComponentFactory`.
1453 * Provides access to the component instance and related objects,
1454 * and provides the means of destroying the instance.
1455 *
1456 * @publicApi
1457 */
1458export declare abstract class ComponentRef<C> {
1459 /**
1460 * Updates a specified input name to a new value. Using this method will properly mark for check
1461 * component using the `OnPush` change detection strategy. It will also assure that the
1462 * `OnChanges` lifecycle hook runs when a dynamically created component is change-detected.
1463 *
1464 * @param name The name of an input.
1465 * @param value The new value of an input.
1466 */
1467 abstract setInput(name: string, value: unknown): void;
1468 /**
1469 * The host or anchor [element](guide/glossary#element) for this component instance.
1470 */
1471 abstract get location(): ElementRef;
1472 /**
1473 * The [dependency injector](guide/glossary#injector) for this component instance.
1474 */
1475 abstract get injector(): Injector;
1476 /**
1477 * This component instance.
1478 */
1479 abstract get instance(): C;
1480 /**
1481 * The [host view](guide/glossary#view-hierarchy) defined by the template
1482 * for this component instance.
1483 */
1484 abstract get hostView(): ViewRef;
1485 /**
1486 * The change detector for this component instance.
1487 */
1488 abstract get changeDetectorRef(): ChangeDetectorRef;
1489 /**
1490 * The type of this component (as created by a `ComponentFactory` class).
1491 */
1492 abstract get componentType(): Type<any>;
1493 /**
1494 * Destroys the component instance and all of the data structures associated with it.
1495 */
1496 abstract destroy(): void;
1497 /**
1498 * A lifecycle hook that provides additional developer-defined cleanup
1499 * functionality for the component.
1500 * @param callback A handler function that cleans up developer-defined data
1501 * associated with this component. Called when the `destroy()` method is invoked.
1502 */
1503 abstract onDestroy(callback: Function): void;
1504}
1505
1506/**
1507 * Definition of what a template rendering function should look like for a component.
1508 */
1509declare type ComponentTemplate<T> = {
1510 <U extends T>(rf: ɵRenderFlags, ctx: T | U): void;
1511};
1512
1513/**
1514 * Create a computed `Signal` which derives a reactive value from an expression.
1515 *
1516 * @developerPreview
1517 */
1518export declare function computed<T>(computation: () => T, options?: CreateComputedOptions<T>): Signal<T>;
1519
1520/**
1521 * Configures the `Injector` to return an instance of a token.
1522 *
1523 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1524 *
1525 * @usageNotes
1526 *
1527 * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
1528 *
1529 * ### Multi-value example
1530 *
1531 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
1532 *
1533 * @publicApi
1534 */
1535export declare interface ConstructorProvider extends ConstructorSansProvider {
1536 /**
1537 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
1538 */
1539 provide: Type<any>;
1540 /**
1541 * When true, injector returns an array of instances. This is useful to allow multiple
1542 * providers spread across many files to provide configuration information to a common token.
1543 */
1544 multi?: boolean;
1545}
1546
1547/**
1548 * Configures the `Injector` to return an instance of a token.
1549 *
1550 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1551 *
1552 * @usageNotes
1553 *
1554 * ```ts
1555 * @Injectable(SomeModule, {deps: []})
1556 * class MyService {}
1557 * ```
1558 *
1559 * @publicApi
1560 */
1561export declare interface ConstructorSansProvider {
1562 /**
1563 * A list of `token`s to be resolved by the injector.
1564 */
1565 deps?: any[];
1566}
1567
1568declare const CONTAINERS = "c";
1569
1570/**
1571 * Type of the ContentChild metadata.
1572 *
1573 * @publicApi
1574 */
1575export declare type ContentChild = Query;
1576
1577/**
1578 * ContentChild decorator and metadata.
1579 *
1580 *
1581 * @Annotation
1582 *
1583 * @publicApi
1584 */
1585export declare const ContentChild: ContentChildDecorator;
1586
1587/**
1588 * Type of the ContentChild decorator / constructor function.
1589 *
1590 * @publicApi
1591 */
1592export declare interface ContentChildDecorator {
1593 /**
1594 * @description
1595 * Property decorator that configures a content query.
1596 *
1597 * Use to get the first element or the directive matching the selector from the content DOM.
1598 * If the content DOM changes, and a new child matches the selector,
1599 * the property will be updated.
1600 *
1601 * Content queries are set before the `ngAfterContentInit` callback is called.
1602 *
1603 * Does not retrieve elements or directives that are in other components' templates,
1604 * since a component's template is always a black box to its ancestors.
1605 *
1606 * **Metadata Properties**:
1607 *
1608 * * **selector** - The directive type or the name used for querying.
1609 * * **descendants** - If `true` (default) include all descendants of the element. If `false` then
1610 * only query direct children of the element.
1611 * * **read** - Used to read a different token from the queried element.
1612 * * **static** - True to resolve query results before change detection runs,
1613 * false to resolve after change detection. Defaults to false.
1614 *
1615 * The following selectors are supported.
1616 * * Any class with the `@Component` or `@Directive` decorator
1617 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
1618 * with `@ContentChild('cmp')`)
1619 * * Any provider defined in the child component tree of the current component (e.g.
1620 * `@ContentChild(SomeService) someService: SomeService`)
1621 * * Any provider defined through a string token (e.g. `@ContentChild('someToken') someTokenVal:
1622 * any`)
1623 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ContentChild(TemplateRef)
1624 * template;`)
1625 *
1626 * The following values are supported by `read`:
1627 * * Any class with the `@Component` or `@Directive` decorator
1628 * * Any provider defined on the injector of the component that is matched by the `selector` of
1629 * this query
1630 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
1631 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
1632 *
1633 * @usageNotes
1634 *
1635 * {@example core/di/ts/contentChild/content_child_howto.ts region='HowTo'}
1636 *
1637 * ### Example
1638 *
1639 * {@example core/di/ts/contentChild/content_child_example.ts region='Component'}
1640 *
1641 * @Annotation
1642 */
1643 (selector: ProviderToken<unknown> | Function | string, opts?: {
1644 descendants?: boolean;
1645 read?: any;
1646 static?: boolean;
1647 }): any;
1648 new (selector: ProviderToken<unknown> | Function | string, opts?: {
1649 descendants?: boolean;
1650 read?: any;
1651 static?: boolean;
1652 }): ContentChild;
1653}
1654
1655/**
1656 * Type of the ContentChildren metadata.
1657 *
1658 *
1659 * @Annotation
1660 * @publicApi
1661 */
1662export declare type ContentChildren = Query;
1663
1664/**
1665 * ContentChildren decorator and metadata.
1666 *
1667 *
1668 * @Annotation
1669 * @publicApi
1670 */
1671export declare const ContentChildren: ContentChildrenDecorator;
1672
1673/**
1674 * Type of the ContentChildren decorator / constructor function.
1675 *
1676 * @see `ContentChildren`.
1677 * @publicApi
1678 */
1679export declare interface ContentChildrenDecorator {
1680 /**
1681 * @description
1682 * Property decorator that configures a content query.
1683 *
1684 * Use to get the `QueryList` of elements or directives from the content DOM.
1685 * Any time a child element is added, removed, or moved, the query list will be
1686 * updated, and the changes observable of the query list will emit a new value.
1687 *
1688 * Content queries are set before the `ngAfterContentInit` callback is called.
1689 *
1690 * Does not retrieve elements or directives that are in other components' templates,
1691 * since a component's template is always a black box to its ancestors.
1692 *
1693 * **Metadata Properties**:
1694 *
1695 * * **selector** - The directive type or the name used for querying.
1696 * * **descendants** - If `true` include all descendants of the element. If `false` then only
1697 * query direct children of the element.
1698 * * **emitDistinctChangesOnly** - The ` QueryList#changes` observable will emit new values only
1699 * if the QueryList result has changed. When `false` the `changes` observable might emit even
1700 * if the QueryList has not changed.
1701 * ** Note: *** This config option is **deprecated**, it will be permanently set to `true` and
1702 * removed in future versions of Angular.
1703 * * **read** - Used to read a different token from the queried elements.
1704 *
1705 * The following selectors are supported.
1706 * * Any class with the `@Component` or `@Directive` decorator
1707 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
1708 * with `@ContentChildren('cmp')`)
1709 * * Any provider defined in the child component tree of the current component (e.g.
1710 * `@ContentChildren(SomeService) someService: SomeService`)
1711 * * Any provider defined through a string token (e.g. `@ContentChildren('someToken')
1712 * someTokenVal: any`)
1713 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with
1714 * `@ContentChildren(TemplateRef) template;`)
1715 *
1716 * In addition, multiple string selectors can be separated with a comma (e.g.
1717 * `@ContentChildren('cmp1,cmp2')`)
1718 *
1719 * The following values are supported by `read`:
1720 * * Any class with the `@Component` or `@Directive` decorator
1721 * * Any provider defined on the injector of the component that is matched by the `selector` of
1722 * this query
1723 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
1724 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
1725 *
1726 * @usageNotes
1727 *
1728 * Here is a simple demonstration of how the `ContentChildren` decorator can be used.
1729 *
1730 * {@example core/di/ts/contentChildren/content_children_howto.ts region='HowTo'}
1731 *
1732 * ### Tab-pane example
1733 *
1734 * Here is a slightly more realistic example that shows how `ContentChildren` decorators
1735 * can be used to implement a tab pane component.
1736 *
1737 * {@example core/di/ts/contentChildren/content_children_example.ts region='Component'}
1738 *
1739 * @Annotation
1740 */
1741 (selector: ProviderToken<unknown> | Function | string, opts?: {
1742 descendants?: boolean;
1743 emitDistinctChangesOnly?: boolean;
1744 read?: any;
1745 }): any;
1746 new (selector: ProviderToken<unknown> | Function | string, opts?: {
1747 descendants?: boolean;
1748 emitDistinctChangesOnly?: boolean;
1749 read?: any;
1750 }): Query;
1751}
1752
1753/**
1754 * Definition of what a content queries function should look like.
1755 */
1756declare type ContentQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U, directiveIndex: number) => void;
1757
1758declare const CONTEXT = 8;
1759
1760/**
1761 * Creates a `ComponentRef` instance based on provided component type and a set of options.
1762 *
1763 * @usageNotes
1764 *
1765 * The example below demonstrates how the `createComponent` function can be used
1766 * to create an instance of a ComponentRef dynamically and attach it to an ApplicationRef,
1767 * so that it gets included into change detection cycles.
1768 *
1769 * Note: the example uses standalone components, but the function can also be used for
1770 * non-standalone components (declared in an NgModule) as well.
1771 *
1772 * ```typescript
1773 * @Component({
1774 * standalone: true,
1775 * template: `Hello {{ name }}!`
1776 * })
1777 * class HelloComponent {
1778 * name = 'Angular';
1779 * }
1780 *
1781 * @Component({
1782 * standalone: true,
1783 * template: `<div id="hello-component-host"></div>`
1784 * })
1785 * class RootComponent {}
1786 *
1787 * // Bootstrap an application.
1788 * const applicationRef = await bootstrapApplication(RootComponent);
1789 *
1790 * // Locate a DOM node that would be used as a host.
1791 * const host = document.getElementById('hello-component-host');
1792 *
1793 * // Get an `EnvironmentInjector` instance from the `ApplicationRef`.
1794 * const environmentInjector = applicationRef.injector;
1795 *
1796 * // We can now create a `ComponentRef` instance.
1797 * const componentRef = createComponent(HelloComponent, {host, environmentInjector});
1798 *
1799 * // Last step is to register the newly created ref using the `ApplicationRef` instance
1800 * // to include the component view into change detection cycles.
1801 * applicationRef.attachView(componentRef.hostView);
1802 * ```
1803 *
1804 * @param component Component class reference.
1805 * @param options Set of options to use:
1806 * * `environmentInjector`: An `EnvironmentInjector` instance to be used for the component, see
1807 * additional info about it [here](/guide/standalone-components#environment-injectors).
1808 * * `hostElement` (optional): A DOM node that should act as a host node for the component. If not
1809 * provided, Angular creates one based on the tag name used in the component selector (and falls
1810 * back to using `div` if selector doesn't have tag name info).
1811 * * `elementInjector` (optional): An `ElementInjector` instance, see additional info about it
1812 * [here](/guide/hierarchical-dependency-injection#elementinjector).
1813 * * `projectableNodes` (optional): A list of DOM nodes that should be projected through
1814 * [`<ng-content>`](api/core/ng-content) of the new component instance.
1815 * @returns ComponentRef instance that represents a given Component.
1816 *
1817 * @publicApi
1818 */
1819export declare function createComponent<C>(component: Type<C>, options: {
1820 environmentInjector: EnvironmentInjector;
1821 hostElement?: Element;
1822 elementInjector?: Injector;
1823 projectableNodes?: Node[][];
1824}): ComponentRef<C>;
1825
1826/**
1827 * Options passed to the `computed` creation function.
1828 *
1829 * @developerPreview
1830 */
1831export declare interface CreateComputedOptions<T> {
1832 /**
1833 * A comparison function which defines equality for computed values.
1834 */
1835 equal?: ValueEqualityFn<T>;
1836}
1837
1838/**
1839 * Options passed to the `effect` function.
1840 *
1841 * @developerPreview
1842 */
1843export declare interface CreateEffectOptions {
1844 /**
1845 * The `Injector` in which to create the effect.
1846 *
1847 * If this is not provided, the current injection context will be used instead (via `inject`).
1848 */
1849 injector?: Injector;
1850 /**
1851 * Whether the `effect` should require manual cleanup.
1852 *
1853 * If this is `false` (the default) the effect will automatically register itself to be cleaned up
1854 * with the current `DestroyRef`.
1855 */
1856 manualCleanup?: boolean;
1857 /**
1858 * Whether the `effect` should allow writing to signals.
1859 *
1860 * Using effects to synchronize data by writing to signals can lead to confusing and potentially
1861 * incorrect behavior, and should be enabled only when necessary.
1862 */
1863 allowSignalWrites?: boolean;
1864}
1865
1866/**
1867 * Create a new environment injector.
1868 *
1869 * Learn more about environment injectors in
1870 * [this guide](guide/standalone-components#environment-injectors).
1871 *
1872 * @param providers An array of providers.
1873 * @param parent A parent environment injector.
1874 * @param debugName An optional name for this injector instance, which will be used in error
1875 * messages.
1876 *
1877 * @publicApi
1878 */
1879export declare function createEnvironmentInjector(providers: Array<Provider | EnvironmentProviders>, parent: EnvironmentInjector, debugName?: string | null): EnvironmentInjector;
1880
1881/**
1882 * Returns a new NgModuleRef instance based on the NgModule class and parent injector provided.
1883 *
1884 * @param ngModule NgModule class.
1885 * @param parentInjector Optional injector instance to use as a parent for the module injector. If
1886 * not provided, `NullInjector` will be used instead.
1887 * @returns NgModuleRef that represents an NgModule instance.
1888 *
1889 * @publicApi
1890 */
1891export declare function createNgModule<T>(ngModule: Type<T>, parentInjector?: Injector): NgModuleRef<T>;
1892
1893/**
1894 * The `createNgModule` function alias for backwards-compatibility.
1895 * Please avoid using it directly and use `createNgModule` instead.
1896 *
1897 * @deprecated Use `createNgModule` instead.
1898 */
1899export declare const createNgModuleRef: typeof createNgModule;
1900
1901/**
1902 * Creates a platform.
1903 * Platforms must be created on launch using this function.
1904 *
1905 * @publicApi
1906 */
1907export declare function createPlatform(injector: Injector): PlatformRef;
1908
1909/**
1910 * Creates a factory for a platform. Can be used to provide or override `Providers` specific to
1911 * your application's runtime needs, such as `PLATFORM_INITIALIZER` and `PLATFORM_ID`.
1912 * @param parentPlatformFactory Another platform factory to modify. Allows you to compose factories
1913 * to build up configurations that might be required by different libraries or parts of the
1914 * application.
1915 * @param name Identifies the new platform factory.
1916 * @param providers A set of dependency providers for platforms created with the new factory.
1917 *
1918 * @publicApi
1919 */
1920export declare function createPlatformFactory(parentPlatformFactory: ((extraProviders?: StaticProvider[]) => PlatformRef) | null, name: string, providers?: StaticProvider[]): (extraProviders?: StaticProvider[]) => PlatformRef;
1921
1922/**
1923 * Options passed to the `signal` creation function.
1924 *
1925 * @developerPreview
1926 */
1927export declare interface CreateSignalOptions<T> {
1928 /**
1929 * A comparison function which defines equality for signal values.
1930 */
1931 equal?: ValueEqualityFn<T>;
1932}
1933
1934/**
1935 * Token used to configure the [Content Security Policy](https://web.dev/strict-csp/) nonce that
1936 * Angular will apply when inserting inline styles. If not provided, Angular will look up its value
1937 * from the `ngCspNonce` attribute of the application root node.
1938 *
1939 * @publicApi
1940 */
1941export declare const CSP_NONCE: InjectionToken<string | null>;
1942
1943
1944/**
1945 * Expresses a single CSS Selector.
1946 *
1947 * Beginning of array
1948 * - First index: element name
1949 * - Subsequent odd indices: attr keys
1950 * - Subsequent even indices: attr values
1951 *
1952 * After SelectorFlags.CLASS flag
1953 * - Class name values
1954 *
1955 * SelectorFlags.NOT flag
1956 * - Changes the mode to NOT
1957 * - Can be combined with other flags to set the element / attr / class mode
1958 *
1959 * e.g. SelectorFlags.NOT | SelectorFlags.ELEMENT
1960 *
1961 * Example:
1962 * Original: `div.foo.bar[attr1=val1][attr2]`
1963 * Parsed: ['div', 'attr1', 'val1', 'attr2', '', SelectorFlags.CLASS, 'foo', 'bar']
1964 *
1965 * Original: 'div[attr1]:not(.foo[attr2])
1966 * Parsed: [
1967 * 'div', 'attr1', '',
1968 * SelectorFlags.NOT | SelectorFlags.ATTRIBUTE 'attr2', '', SelectorFlags.CLASS, 'foo'
1969 * ]
1970 *
1971 * See more examples in node_selector_matcher_spec.ts
1972 */
1973declare type CssSelector = (string | SelectorFlags)[];
1974
1975/**
1976 * An object literal of this type is used to represent the metadata of a constructor dependency.
1977 * The type itself is never referred to from generated code.
1978 *
1979 * @publicApi
1980 */
1981declare type CtorDependency = {
1982 /**
1983 * If an `@Attribute` decorator is used, this represents the injected attribute's name. If the
1984 * attribute name is a dynamic expression instead of a string literal, this will be the unknown
1985 * type.
1986 */
1987 attribute?: string | unknown;
1988 /**
1989 * If `@Optional()` is used, this key is set to true.
1990 */
1991 optional?: true;
1992 /**
1993 * If `@Host` is used, this key is set to true.
1994 */
1995 host?: true;
1996 /**
1997 * If `@Self` is used, this key is set to true.
1998 */
1999 self?: true;
2000 /**
2001 * If `@SkipSelf` is used, this key is set to true.
2002 */
2003 skipSelf?: true;
2004} | null;
2005
2006/**
2007 * Defines a schema that allows an NgModule to contain the following:
2008 * - Non-Angular elements named with dash case (`-`).
2009 * - Element properties named with dash case (`-`).
2010 * Dash case is the naming convention for custom elements.
2011 *
2012 * @publicApi
2013 */
2014export declare const CUSTOM_ELEMENTS_SCHEMA: SchemaMetadata;
2015
2016/**
2017 * @publicApi
2018 *
2019 * @see [Component testing scenarios](guide/testing-components-scenarios)
2020 * @see [Basics of testing components](guide/testing-components-basics)
2021 * @see [Testing utility APIs](guide/testing-utility-apis)
2022 */
2023export declare class DebugElement extends DebugNode {
2024 constructor(nativeNode: Element);
2025 /**
2026 * The underlying DOM element at the root of the component.
2027 */
2028 get nativeElement(): any;
2029 /**
2030 * The element tag name, if it is an element.
2031 */
2032 get name(): string;
2033 /**
2034 * Gets a map of property names to property values for an element.
2035 *
2036 * This map includes:
2037 * - Regular property bindings (e.g. `[id]="id"`)
2038 * - Host property bindings (e.g. `host: { '[id]': "id" }`)
2039 * - Interpolated property bindings (e.g. `id="{{ value }}")
2040 *
2041 * It does not include:
2042 * - input property bindings (e.g. `[myCustomInput]="value"`)
2043 * - attribute bindings (e.g. `[attr.role]="menu"`)
2044 */
2045 get properties(): {
2046 [key: string]: any;
2047 };
2048 /**
2049 * A map of attribute names to attribute values for an element.
2050 */
2051 get attributes(): {
2052 [key: string]: string | null;
2053 };
2054 /**
2055 * The inline styles of the DOM element.
2056 *
2057 * Will be `null` if there is no `style` property on the underlying DOM element.
2058 *
2059 * @see [ElementCSSInlineStyle](https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle/style)
2060 */
2061 get styles(): {
2062 [key: string]: string | null;
2063 };
2064 /**
2065 * A map containing the class names on the element as keys.
2066 *
2067 * This map is derived from the `className` property of the DOM element.
2068 *
2069 * Note: The values of this object will always be `true`. The class key will not appear in the KV
2070 * object if it does not exist on the element.
2071 *
2072 * @see [Element.className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className)
2073 */
2074 get classes(): {
2075 [key: string]: boolean;
2076 };
2077 /**
2078 * The `childNodes` of the DOM element as a `DebugNode` array.
2079 *
2080 * @see [Node.childNodes](https://developer.mozilla.org/en-US/docs/Web/API/Node/childNodes)
2081 */
2082 get childNodes(): DebugNode[];
2083 /**
2084 * The immediate `DebugElement` children. Walk the tree by descending through `children`.
2085 */
2086 get children(): DebugElement[];
2087 /**
2088 * @returns the first `DebugElement` that matches the predicate at any depth in the subtree.
2089 */
2090 query(predicate: Predicate<DebugElement>): DebugElement;
2091 /**
2092 * @returns All `DebugElement` matches for the predicate at any depth in the subtree.
2093 */
2094 queryAll(predicate: Predicate<DebugElement>): DebugElement[];
2095 /**
2096 * @returns All `DebugNode` matches for the predicate at any depth in the subtree.
2097 */
2098 queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
2099 /**
2100 * Triggers the event by its name if there is a corresponding listener in the element's
2101 * `listeners` collection.
2102 *
2103 * If the event lacks a listener or there's some other problem, consider
2104 * calling `nativeElement.dispatchEvent(eventObject)`.
2105 *
2106 * @param eventName The name of the event to trigger
2107 * @param eventObj The _event object_ expected by the handler
2108 *
2109 * @see [Testing components scenarios](guide/testing-components-scenarios#trigger-event-handler)
2110 */
2111 triggerEventHandler(eventName: string, eventObj?: any): void;
2112}
2113
2114/**
2115 * @publicApi
2116 */
2117export declare class DebugEventListener {
2118 name: string;
2119 callback: Function;
2120 constructor(name: string, callback: Function);
2121}
2122
2123/**
2124 * @publicApi
2125 */
2126export declare class DebugNode {
2127 /**
2128 * The underlying DOM node.
2129 */
2130 readonly nativeNode: any;
2131 constructor(nativeNode: Node);
2132 /**
2133 * The `DebugElement` parent. Will be `null` if this is the root element.
2134 */
2135 get parent(): DebugElement | null;
2136 /**
2137 * The host dependency injector. For example, the root element's component instance injector.
2138 */
2139 get injector(): Injector;
2140 /**
2141 * The element's own component instance, if it has one.
2142 */
2143 get componentInstance(): any;
2144 /**
2145 * An object that provides parent context for this element. Often an ancestor component instance
2146 * that governs this element.
2147 *
2148 * When an element is repeated within *ngFor, the context is an `NgForOf` whose `$implicit`
2149 * property is the value of the row instance value. For example, the `hero` in `*ngFor="let hero
2150 * of heroes"`.
2151 */
2152 get context(): any;
2153 /**
2154 * The callbacks attached to the component's @Output properties and/or the element's event
2155 * properties.
2156 */
2157 get listeners(): DebugEventListener[];
2158 /**
2159 * Dictionary of objects associated with template local variables (e.g. #foo), keyed by the local
2160 * variable name.
2161 */
2162 get references(): {
2163 [key: string]: any;
2164 };
2165 /**
2166 * This component's injector lookup tokens. Includes the component itself plus the tokens that the
2167 * component lists in its providers metadata.
2168 */
2169 get providerTokens(): any[];
2170}
2171
2172declare const DECLARATION_COMPONENT_VIEW = 15;
2173
2174declare const DECLARATION_LCONTAINER = 16;
2175
2176declare const DECLARATION_VIEW = 14;
2177
2178/**
2179 * Provide this token to set the default currency code your application uses for
2180 * CurrencyPipe when there is no currency code passed into it. This is only used by
2181 * CurrencyPipe and has no relation to locale currency. Defaults to USD if not configured.
2182 *
2183 * See the [i18n guide](guide/i18n-common-locale-id) for more information.
2184 *
2185 * <div class="alert is-helpful">
2186 *
2187 * **Deprecation notice:**
2188 *
2189 * The default currency code is currently always `USD` but this is deprecated from v9.
2190 *
2191 * **In v10 the default currency code will be taken from the current locale.**
2192 *
2193 * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in
2194 * your application `NgModule`:
2195 *
2196 * ```ts
2197 * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}
2198 * ```
2199 *
2200 * </div>
2201 *
2202 * @usageNotes
2203 * ### Example
2204 *
2205 * ```typescript
2206 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
2207 * import { AppModule } from './app/app.module';
2208 *
2209 * platformBrowserDynamic().bootstrapModule(AppModule, {
2210 * providers: [{provide: DEFAULT_CURRENCY_CODE, useValue: 'EUR' }]
2211 * });
2212 * ```
2213 *
2214 * @publicApi
2215 */
2216export declare const DEFAULT_CURRENCY_CODE: InjectionToken<string>;
2217
2218/**
2219 * @deprecated v4.0.0 - Should not be part of public API.
2220 * @publicApi
2221 */
2222export declare class DefaultIterableDiffer<V> implements IterableDiffer<V>, IterableChanges<V> {
2223 readonly length: number;
2224 readonly collection: V[] | Iterable<V> | null;
2225 private _linkedRecords;
2226 private _unlinkedRecords;
2227 private _previousItHead;
2228 private _itHead;
2229 private _itTail;
2230 private _additionsHead;
2231 private _additionsTail;
2232 private _movesHead;
2233 private _movesTail;
2234 private _removalsHead;
2235 private _removalsTail;
2236 private _identityChangesHead;
2237 private _identityChangesTail;
2238 private _trackByFn;
2239 constructor(trackByFn?: TrackByFunction<V>);
2240 forEachItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2241 forEachOperation(fn: (item: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void;
2242 forEachPreviousItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2243 forEachAddedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2244 forEachMovedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2245 forEachRemovedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
2246 forEachIdentityChange(fn: (record: IterableChangeRecord_<V>) => void): void;
2247 diff(collection: NgIterable<V> | null | undefined): DefaultIterableDiffer<V> | null;
2248 onDestroy(): void;
2249 check(collection: NgIterable<V>): boolean;
2250 get isDirty(): boolean;
2251 private _addToRemovals;
2252}
2253
2254/**
2255 * @deprecated in v8, delete after v10. This API should be used only by generated code, and that
2256 * code should now use ɵɵdefineInjectable instead.
2257 * @publicApi
2258 */
2259export declare const defineInjectable: typeof ɵɵdefineInjectable;
2260
2261declare const DEHYDRATED_VIEWS = 10;
2262
2263/**
2264 * An object that contains hydration-related information serialized
2265 * on the server, as well as the necessary references to segments of
2266 * the DOM, to facilitate the hydration process for a given view
2267 * inside a view container (either an embedded view or a view created
2268 * for a component).
2269 */
2270declare interface DehydratedContainerView extends DehydratedView {
2271 data: Readonly<SerializedContainerView>;
2272}
2273
2274/**
2275 * An object that contains hydration-related information serialized
2276 * on the server, as well as the necessary references to segments of
2277 * the DOM, to facilitate the hydration process for a given hydration
2278 * boundary on the client.
2279 */
2280declare interface DehydratedView {
2281 /**
2282 * The readonly hydration annotation data.
2283 */
2284 data: Readonly<SerializedView>;
2285 /**
2286 * A reference to the first child in a DOM segment associated
2287 * with a given hydration boundary.
2288 */
2289 firstChild: RNode | null;
2290 /**
2291 * Stores references to first nodes in DOM segments that
2292 * represent either an <ng-container> or a view container.
2293 */
2294 segmentHeads?: {
2295 [index: number]: RNode | null;
2296 };
2297 /**
2298 * An instance of a Set that represents nodes disconnected from
2299 * the DOM tree at the serialization time, but otherwise present
2300 * in the internal data structures.
2301 *
2302 * The Set is based on the `SerializedView[DISCONNECTED_NODES]` data
2303 * and is needed to have constant-time lookups.
2304 *
2305 * If the value is `null`, it means that there were no disconnected
2306 * nodes detected in this view at serialization time.
2307 */
2308 disconnectedNodes?: Set<number> | null;
2309}
2310
2311declare type DependencyTypeList = (ɵDirectiveType<any> | ɵComponentType<any> | PipeType<any> | Type<any>)[];
2312
2313declare const DESCENDANT_VIEWS_TO_REFRESH = 5;
2314
2315/**
2316 * Array of destroy hooks that should be executed for a view and their directive indices.
2317 *
2318 * The array is set up as a series of number/function or number/(number|function)[]:
2319 * - Even indices represent the context with which hooks should be called.
2320 * - Odd indices are the hook functions themselves. If a value at an odd index is an array,
2321 * it represents the destroy hooks of a `multi` provider where:
2322 * - Even indices represent the index of the provider for which we've registered a destroy hook,
2323 * inside of the `multi` provider array.
2324 * - Odd indices are the destroy hook functions.
2325 * For example:
2326 * LView: `[0, 1, 2, AService, 4, [BService, CService, DService]]`
2327 * destroyHooks: `[3, AService.ngOnDestroy, 5, [0, BService.ngOnDestroy, 2, DService.ngOnDestroy]]`
2328 *
2329 * In the example above `AService` is a type provider with an `ngOnDestroy`, whereas `BService`,
2330 * `CService` and `DService` are part of a `multi` provider where only `BService` and `DService`
2331 * have an `ngOnDestroy` hook.
2332 */
2333declare type DestroyHookData = (HookEntry | HookData)[];
2334
2335/**
2336 * Destroys the current Angular platform and all Angular applications on the page.
2337 * Destroys all modules and listeners registered with the platform.
2338 *
2339 * @publicApi
2340 */
2341export declare function destroyPlatform(): void;
2342
2343
2344/**
2345 * `DestroyRef` lets you set callbacks to run for any cleanup or destruction behavior.
2346 * The scope of this destruction depends on where `DestroyRef` is injected. If `DestroyRef`
2347 * is injected in a component or directive, the callbacks run when that component or
2348 * directive is destroyed. Otherwise the callbacks run when a corresponding injector is destroyed.
2349 *
2350 * @publicApi
2351 */
2352export declare abstract class DestroyRef {
2353 /**
2354 * Registers a destroy callback in a given lifecycle scope. Returns a cleanup function that can
2355 * be invoked to unregister the callback.
2356 *
2357 * @usageNotes
2358 * ### Example
2359 * ```typescript
2360 * const destroyRef = inject(DestroyRef);
2361 *
2362 * // register a destroy callback
2363 * const unregisterFn = destroyRef.onDestroy(() => doSomethingOnDestroy());
2364 *
2365 * // stop the destroy callback from executing if needed
2366 * unregisterFn();
2367 * ```
2368 */
2369 abstract onDestroy(callback: () => void): () => void;
2370}
2371
2372/**
2373 * Directive decorator and metadata.
2374 *
2375 * @Annotation
2376 * @publicApi
2377 */
2378export declare interface Directive {
2379 /**
2380 * The CSS selector that identifies this directive in a template
2381 * and triggers instantiation of the directive.
2382 *
2383 * Declare as one of the following:
2384 *
2385 * - `element-name`: Select by element name.
2386 * - `.class`: Select by class name.
2387 * - `[attribute]`: Select by attribute name.
2388 * - `[attribute=value]`: Select by attribute name and value.
2389 * - `:not(sub_selector)`: Select only if the element does not match the `sub_selector`.
2390 * - `selector1, selector2`: Select if either `selector1` or `selector2` matches.
2391 *
2392 * Angular only allows directives to apply on CSS selectors that do not cross
2393 * element boundaries.
2394 *
2395 * For the following template HTML, a directive with an `input[type=text]` selector,
2396 * would be instantiated only on the `<input type="text">` element.
2397 *
2398 * ```html
2399 * <form>
2400 * <input type="text">
2401 * <input type="radio">
2402 * <form>
2403 * ```
2404 *
2405 */
2406 selector?: string;
2407 /**
2408 * Enumerates the set of data-bound input properties for a directive
2409 *
2410 * Angular automatically updates input properties during change detection.
2411 * The `inputs` property accepts either strings or object literals that configure the directive
2412 * properties that should be exposed as inputs.
2413 *
2414 * When an object literal is passed in, the `name` property indicates which property on the
2415 * class the input should write to, while the `alias` determines the name under
2416 * which the input will be available in template bindings. The `required` property indicates that
2417 * the input is required which will trigger a compile-time error if it isn't passed in when the
2418 * directive is used.
2419 *
2420 * When a string is passed into the `inputs` array, it can have a format of `'name'` or
2421 * `'name: alias'` where `name` is the property on the class that the directive should write
2422 * to, while the `alias` determines the name under which the input will be available in
2423 * template bindings. String-based input definitions are assumed to be optional.
2424 *
2425 * @usageNotes
2426 *
2427 * The following example creates a component with two data-bound properties.
2428 *
2429 * ```typescript
2430 * @Component({
2431 * selector: 'bank-account',
2432 * inputs: ['bankName', {name: 'id', alias: 'account-id'}],
2433 * template: `
2434 * Bank Name: {{bankName}}
2435 * Account Id: {{id}}
2436 * `
2437 * })
2438 * class BankAccount {
2439 * bankName: string;
2440 * id: string;
2441 * }
2442 * ```
2443 *
2444 */
2445 inputs?: ({
2446 name: string;
2447 alias?: string;
2448 required?: boolean;
2449 } | string)[];
2450 /**
2451 * Enumerates the set of event-bound output properties.
2452 *
2453 * When an output property emits an event, an event handler attached to that event
2454 * in the template is invoked.
2455 *
2456 * The `outputs` property defines a set of `directiveProperty` to `alias`
2457 * configuration:
2458 *
2459 * - `directiveProperty` specifies the component property that emits events.
2460 * - `alias` specifies the DOM property the event handler is attached to.
2461 *
2462 * @usageNotes
2463 *
2464 * ```typescript
2465 * @Component({
2466 * selector: 'child-dir',
2467 * outputs: [ 'bankNameChange' ],
2468 * template: `<input (input)="bankNameChange.emit($event.target.value)" />`
2469 * })
2470 * class ChildDir {
2471 * bankNameChange: EventEmitter<string> = new EventEmitter<string>();
2472 * }
2473 *
2474 * @Component({
2475 * selector: 'main',
2476 * template: `
2477 * {{ bankName }} <child-dir (bankNameChange)="onBankNameChange($event)"></child-dir>
2478 * `
2479 * })
2480 * class MainComponent {
2481 * bankName: string;
2482 *
2483 * onBankNameChange(bankName: string) {
2484 * this.bankName = bankName;
2485 * }
2486 * }
2487 * ```
2488 *
2489 */
2490 outputs?: string[];
2491 /**
2492 * Configures the [injector](guide/glossary#injector) of this
2493 * directive or component with a [token](guide/glossary#di-token)
2494 * that maps to a [provider](guide/glossary#provider) of a dependency.
2495 */
2496 providers?: Provider[];
2497 /**
2498 * Defines the name that can be used in the template to assign this directive to a variable.
2499 *
2500 * @usageNotes
2501 *
2502 * ```ts
2503 * @Directive({
2504 * selector: 'child-dir',
2505 * exportAs: 'child'
2506 * })
2507 * class ChildDir {
2508 * }
2509 *
2510 * @Component({
2511 * selector: 'main',
2512 * template: `<child-dir #c="child"></child-dir>`
2513 * })
2514 * class MainComponent {
2515 * }
2516 * ```
2517 *
2518 */
2519 exportAs?: string;
2520 /**
2521 * Configures the queries that will be injected into the directive.
2522 *
2523 * Content queries are set before the `ngAfterContentInit` callback is called.
2524 * View queries are set before the `ngAfterViewInit` callback is called.
2525 *
2526 * @usageNotes
2527 *
2528 * The following example shows how queries are defined
2529 * and when their results are available in lifecycle hooks:
2530 *
2531 * ```ts
2532 * @Component({
2533 * selector: 'someDir',
2534 * queries: {
2535 * contentChildren: new ContentChildren(ChildDirective),
2536 * viewChildren: new ViewChildren(ChildDirective)
2537 * },
2538 * template: '<child-directive></child-directive>'
2539 * })
2540 * class SomeDir {
2541 * contentChildren: QueryList<ChildDirective>,
2542 * viewChildren: QueryList<ChildDirective>
2543 *
2544 * ngAfterContentInit() {
2545 * // contentChildren is set
2546 * }
2547 *
2548 * ngAfterViewInit() {
2549 * // viewChildren is set
2550 * }
2551 * }
2552 * ```
2553 *
2554 * @Annotation
2555 */
2556 queries?: {
2557 [key: string]: any;
2558 };
2559 /**
2560 * Maps class properties to host element bindings for properties,
2561 * attributes, and events, using a set of key-value pairs.
2562 *
2563 * Angular automatically checks host property bindings during change detection.
2564 * If a binding changes, Angular updates the directive's host element.
2565 *
2566 * When the key is a property of the host element, the property value is
2567 * the propagated to the specified DOM property.
2568 *
2569 * When the key is a static attribute in the DOM, the attribute value
2570 * is propagated to the specified property in the host element.
2571 *
2572 * For event handling:
2573 * - The key is the DOM event that the directive listens to.
2574 * To listen to global events, add the target to the event name.
2575 * The target can be `window`, `document` or `body`.
2576 * - The value is the statement to execute when the event occurs. If the
2577 * statement evaluates to `false`, then `preventDefault` is applied on the DOM
2578 * event. A handler method can refer to the `$event` local variable.
2579 *
2580 */
2581 host?: {
2582 [key: string]: string;
2583 };
2584 /**
2585 * When present, this directive/component is ignored by the AOT compiler.
2586 * It remains in distributed code, and the JIT compiler attempts to compile it
2587 * at run time, in the browser.
2588 * To ensure the correct behavior, the app must import `@angular/compiler`.
2589 */
2590 jit?: true;
2591 /**
2592 * Angular directives marked as `standalone` do not need to be declared in an NgModule. Such
2593 * directives don't depend on any "intermediate context" of an NgModule (ex. configured
2594 * providers).
2595 *
2596 * More information about standalone components, directives, and pipes can be found in [this
2597 * guide](guide/standalone-components).
2598 */
2599 standalone?: boolean;
2600 /**
2601 * Standalone directives that should be applied to the host whenever the directive is matched.
2602 * By default, none of the inputs or outputs of the host directives will be available on the host,
2603 * unless they are specified in the `inputs` or `outputs` properties.
2604 *
2605 * You can additionally alias inputs and outputs by putting a colon and the alias after the
2606 * original input or output name. For example, if a directive applied via `hostDirectives`
2607 * defines an input named `menuDisabled`, you can alias this to `disabled` by adding
2608 * `'menuDisabled: disabled'` as an entry to `inputs`.
2609 */
2610 hostDirectives?: (Type<unknown> | {
2611 directive: Type<unknown>;
2612 inputs?: string[];
2613 outputs?: string[];
2614 })[];
2615}
2616
2617/**
2618 * Type of the Directive metadata.
2619 *
2620 * @publicApi
2621 */
2622export declare const Directive: DirectiveDecorator;
2623
2624/**
2625 * Type of the Directive decorator / constructor function.
2626 * @publicApi
2627 */
2628export declare interface DirectiveDecorator {
2629 /**
2630 * Decorator that marks a class as an Angular directive.
2631 * You can define your own directives to attach custom behavior to elements in the DOM.
2632 *
2633 * The options provide configuration metadata that determines
2634 * how the directive should be processed, instantiated and used at
2635 * runtime.
2636 *
2637 * Directive classes, like component classes, can implement
2638 * [life-cycle hooks](guide/lifecycle-hooks) to influence their configuration and behavior.
2639 *
2640 *
2641 * @usageNotes
2642 * To define a directive, mark the class with the decorator and provide metadata.
2643 *
2644 * ```ts
2645 * import {Directive} from '@angular/core';
2646 *
2647 * @Directive({
2648 * selector: 'my-directive',
2649 * })
2650 * export class MyDirective {
2651 * ...
2652 * }
2653 * ```
2654 *
2655 * ### Declaring directives
2656 *
2657 * In order to make a directive available to other components in your application, you should do
2658 * one of the following:
2659 * - either mark the directive as [standalone](guide/standalone-components),
2660 * - or declare it in an NgModule by adding it to the `declarations` and `exports` fields.
2661 *
2662 * ** Marking a directive as standalone **
2663 *
2664 * You can add the `standalone: true` flag to the Directive decorator metadata to declare it as
2665 * [standalone](guide/standalone-components):
2666 *
2667 * ```ts
2668 * @Directive({
2669 * standalone: true,
2670 * selector: 'my-directive',
2671 * })
2672 * class MyDirective {}
2673 * ```
2674 *
2675 * When marking a directive as standalone, please make sure that the directive is not already
2676 * declared in an NgModule.
2677 *
2678 *
2679 * ** Declaring a directive in an NgModule **
2680 *
2681 * Another approach is to declare a directive in an NgModule:
2682 *
2683 * ```ts
2684 * @Directive({
2685 * selector: 'my-directive',
2686 * })
2687 * class MyDirective {}
2688 *
2689 * @NgModule({
2690 * declarations: [MyDirective, SomeComponent],
2691 * exports: [MyDirective], // making it available outside of this module
2692 * })
2693 * class SomeNgModule {}
2694 * ```
2695 *
2696 * When declaring a directive in an NgModule, please make sure that:
2697 * - the directive is declared in exactly one NgModule.
2698 * - the directive is not standalone.
2699 * - you do not re-declare a directive imported from another module.
2700 * - the directive is included into the `exports` field as well if you want this directive to be
2701 * accessible for components outside of the NgModule.
2702 *
2703 *
2704 * @Annotation
2705 */
2706 (obj?: Directive): TypeDecorator;
2707 /**
2708 * See the `Directive` decorator.
2709 */
2710 new (obj?: Directive): Directive;
2711}
2712
2713declare interface DirectiveDefFeature {
2714 <T>(directiveDef: ɵDirectiveDef<T>): void;
2715 /**
2716 * Marks a feature as something that {@link InheritDefinitionFeature} will execute
2717 * during inheritance.
2718 *
2719 * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers
2720 * identifying the change as a side effect, and the feature will be included in
2721 * every bundle.
2722 */
2723 ngInherit?: true;
2724}
2725
2726declare interface DirectiveDefinition<T> {
2727 /**
2728 * Directive type, needed to configure the injector.
2729 */
2730 type: Type<T>;
2731 /** The selectors that will be used to match nodes to this directive. */
2732 selectors?: ɵCssSelectorList;
2733 /**
2734 * A map of input names.
2735 *
2736 * The format is in: `{[actualPropertyName: string]:(string|[string, string])}`.
2737 *
2738 * Given:
2739 * ```
2740 * class MyComponent {
2741 * @Input()
2742 * publicInput1: string;
2743 *
2744 * @Input('publicInput2')
2745 * declaredInput2: string;
2746 * }
2747 * ```
2748 *
2749 * is described as:
2750 * ```
2751 * {
2752 * publicInput1: 'publicInput1',
2753 * declaredInput2: ['declaredInput2', 'publicInput2'],
2754 * }
2755 * ```
2756 *
2757 * Which the minifier may translate to:
2758 * ```
2759 * {
2760 * minifiedPublicInput1: 'publicInput1',
2761 * minifiedDeclaredInput2: [ 'publicInput2', 'declaredInput2'],
2762 * }
2763 * ```
2764 *
2765 * This allows the render to re-construct the minified, public, and declared names
2766 * of properties.
2767 *
2768 * NOTE:
2769 * - Because declared and public name are usually same we only generate the array
2770 * `['declared', 'public']` format when they differ.
2771 * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has
2772 * inconsistent behavior in that it uses declared names rather than minified or public. For
2773 * this reason `NgOnChanges` will be deprecated and removed in future version and this
2774 * API will be simplified to be consistent with `output`.
2775 */
2776 inputs?: {
2777 [P in keyof T]?: string | [string, string];
2778 };
2779 /**
2780 * A map of output names.
2781 *
2782 * The format is in: `{[actualPropertyName: string]:string}`.
2783 *
2784 * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`.
2785 *
2786 * This allows the render to re-construct the minified and non-minified names
2787 * of properties.
2788 */
2789 outputs?: {
2790 [P in keyof T]?: string;
2791 };
2792 /**
2793 * A list of optional features to apply.
2794 *
2795 * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}, {@link InheritDefinitionFeature}
2796 */
2797 features?: DirectiveDefFeature[];
2798 /**
2799 * Function executed by the parent template to allow child directive to apply host bindings.
2800 */
2801 hostBindings?: HostBindingsFunction<T>;
2802 /**
2803 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
2804 *
2805 * Used to calculate the length of the component's LView array, so we
2806 * can pre-fill the array and set the host binding start index.
2807 */
2808 hostVars?: number;
2809 /**
2810 * Assign static attribute values to a host element.
2811 *
2812 * This property will assign static attribute values as well as class and style
2813 * values to a host element. Since attribute values can consist of different types of values,
2814 * the `hostAttrs` array must include the values in the following format:
2815 *
2816 * attrs = [
2817 * // static attributes (like `title`, `name`, `id`...)
2818 * attr1, value1, attr2, value,
2819 *
2820 * // a single namespace value (like `x:id`)
2821 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
2822 *
2823 * // another single namespace value (like `x:name`)
2824 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
2825 *
2826 * // a series of CSS classes that will be applied to the element (no spaces)
2827 * CLASSES_MARKER, class1, class2, class3,
2828 *
2829 * // a series of CSS styles (property + value) that will be applied to the element
2830 * STYLES_MARKER, prop1, value1, prop2, value2
2831 * ]
2832 *
2833 * All non-class and non-style attributes must be defined at the start of the list
2834 * first before all class and style values are set. When there is a change in value
2835 * type (like when classes and styles are introduced) a marker must be used to separate
2836 * the entries. The marker values themselves are set via entries found in the
2837 * [AttributeMarker] enum.
2838 */
2839 hostAttrs?: TAttributes;
2840 /**
2841 * Function to create instances of content queries associated with a given directive.
2842 */
2843 contentQueries?: ContentQueriesFunction<T>;
2844 /**
2845 * Additional set of instructions specific to view query processing. This could be seen as a
2846 * set of instructions to be inserted into the template function.
2847 */
2848 viewQuery?: ViewQueriesFunction<T> | null;
2849 /**
2850 * Defines the name that can be used in the template to assign this directive to a variable.
2851 *
2852 * See: {@link Directive.exportAs}
2853 */
2854 exportAs?: string[];
2855 /**
2856 * Whether this directive/component is standalone.
2857 */
2858 standalone?: boolean;
2859}
2860
2861declare type DirectiveDefList = (ɵDirectiveDef<any> | ɵComponentDef<any>)[];
2862
2863/**
2864 * Type used for directiveDefs on component definition.
2865 *
2866 * The function is necessary to be able to support forward declarations.
2867 */
2868declare type DirectiveDefListOrFactory = (() => DirectiveDefList) | DirectiveDefList;
2869
2870declare const DISCONNECTED_NODES = "d";
2871
2872/**
2873 * @description
2874 * Hook for manual bootstrapping of the application instead of using `bootstrap` array in @NgModule
2875 * annotation. This hook is invoked only when the `bootstrap` array is empty or not provided.
2876 *
2877 * Reference to the current application is provided as a parameter.
2878 *
2879 * See ["Bootstrapping"](guide/bootstrapping).
2880 *
2881 * @usageNotes
2882 * The example below uses `ApplicationRef.bootstrap()` to render the
2883 * `AppComponent` on the page.
2884 *
2885 * ```typescript
2886 * class AppModule implements DoBootstrap {
2887 * ngDoBootstrap(appRef: ApplicationRef) {
2888 * appRef.bootstrap(AppComponent); // Or some other component
2889 * }
2890 * }
2891 * ```
2892 *
2893 * @publicApi
2894 */
2895export declare interface DoBootstrap {
2896 ngDoBootstrap(appRef: ApplicationRef): void;
2897}
2898
2899/**
2900 * A lifecycle hook that invokes a custom change-detection function for a directive,
2901 * in addition to the check performed by the default change-detector.
2902 *
2903 * The default change-detection algorithm looks for differences by comparing
2904 * bound-property values by reference across change detection runs. You can use this
2905 * hook to check for and respond to changes by some other means.
2906 *
2907 * When the default change detector detects changes, it invokes `ngOnChanges()` if supplied,
2908 * regardless of whether you perform additional change detection.
2909 * Typically, you should not use both `DoCheck` and `OnChanges` to respond to
2910 * changes on the same input.
2911 *
2912 * @see `OnChanges`
2913 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
2914 *
2915 * @usageNotes
2916 * The following snippet shows how a component can implement this interface
2917 * to invoke it own change-detection cycle.
2918 *
2919 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='DoCheck'}
2920 *
2921 * For a more complete example and discussion, see
2922 * [Defining custom change detection](guide/lifecycle-hooks#defining-custom-change-detection).
2923 *
2924 * @publicApi
2925 */
2926export declare interface DoCheck {
2927 /**
2928 * A callback method that performs change-detection, invoked
2929 * after the default change-detector runs.
2930 * See `KeyValueDiffers` and `IterableDiffers` for implementing
2931 * custom change checking for collections.
2932 *
2933 */
2934 ngDoCheck(): void;
2935}
2936
2937/**
2938 * Create a global `Effect` for the given reactive function.
2939 *
2940 * @developerPreview
2941 */
2942export declare function effect(effectFn: (onCleanup: EffectCleanupRegisterFn) => void, options?: CreateEffectOptions): EffectRef;
2943
2944/**
2945 * An effect can, optionally, register a cleanup function. If registered, the cleanup is executed
2946 * before the next effect run. The cleanup function makes it possible to "cancel" any work that the
2947 * previous effect run might have started.
2948 *
2949 * @developerPreview
2950 */
2951export declare type EffectCleanupFn = () => void;
2952
2953/**
2954 * A callback passed to the effect function that makes it possible to register cleanup logic.
2955 */
2956declare type EffectCleanupRegisterFn = (cleanupFn: EffectCleanupFn) => void;
2957
2958/**
2959 * Tracks all effects registered within a given application and runs them via `flush`.
2960 */
2961declare class EffectManager {
2962 private all;
2963 private queue;
2964 create(effectFn: (onCleanup: (cleanupFn: EffectCleanupFn) => void) => void, destroyRef: DestroyRef | null, allowSignalWrites: boolean): EffectRef;
2965 flush(): void;
2966 get isQueueEmpty(): boolean;
2967 /** @nocollapse */
2968 static ɵprov: unknown;
2969}
2970
2971/**
2972 * A global reactive effect, which can be manually destroyed.
2973 *
2974 * @developerPreview
2975 */
2976export declare interface EffectRef {
2977 /**
2978 * Shut down the effect, removing it from any upcoming scheduled executions.
2979 */
2980 destroy(): void;
2981}
2982
2983/**
2984 * Keys within serialized view data structure to represent various
2985 * parts. See the `SerializedView` interface below for additional information.
2986 */
2987declare const ELEMENT_CONTAINERS = "e";
2988
2989/**
2990 * Marks that the next string is an element name.
2991 *
2992 * See `I18nMutateOpCodes` documentation.
2993 */
2994declare const ELEMENT_MARKER: ELEMENT_MARKER;
2995
2996declare interface ELEMENT_MARKER {
2997 marker: 'element';
2998}
2999
3000/**
3001 * A wrapper around a native element inside of a View.
3002 *
3003 * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM
3004 * element.
3005 *
3006 * @security Permitting direct access to the DOM can make your application more vulnerable to
3007 * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the
3008 * [Security Guide](https://g.co/ng/security).
3009 *
3010 * @publicApi
3011 */
3012export declare class ElementRef<T = any> {
3013 /**
3014 * <div class="callout is-critical">
3015 * <header>Use with caution</header>
3016 * <p>
3017 * Use this API as the last resort when direct access to DOM is needed. Use templating and
3018 * data-binding provided by Angular instead. Alternatively you can take a look at {@link
3019 * Renderer2} which provides an API that can be safely used.
3020 * </p>
3021 * </div>
3022 */
3023 nativeElement: T;
3024 constructor(nativeElement: T);
3025}
3026
3027declare const EMBEDDED_VIEW_INJECTOR = 20;
3028
3029/**
3030 * Represents an Angular [view](guide/glossary#view) in a view container.
3031 * An [embedded view](guide/glossary#view-hierarchy) can be referenced from a component
3032 * other than the hosting component whose template defines it, or it can be defined
3033 * independently by a `TemplateRef`.
3034 *
3035 * Properties of elements in a view can change, but the structure (number and order) of elements in
3036 * a view cannot. Change the structure of elements by inserting, moving, or
3037 * removing nested views in a view container.
3038 *
3039 * @see `ViewContainerRef`
3040 *
3041 * @usageNotes
3042 *
3043 * The following template breaks down into two separate `TemplateRef` instances,
3044 * an outer one and an inner one.
3045 *
3046 * ```
3047 * Count: {{items.length}}
3048 * <ul>
3049 * <li *ngFor="let item of items">{{item}}</li>
3050 * </ul>
3051 * ```
3052 *
3053 * This is the outer `TemplateRef`:
3054 *
3055 * ```
3056 * Count: {{items.length}}
3057 * <ul>
3058 * <ng-template ngFor let-item [ngForOf]="items"></ng-template>
3059 * </ul>
3060 * ```
3061 *
3062 * This is the inner `TemplateRef`:
3063 *
3064 * ```
3065 * <li>{{item}}</li>
3066 * ```
3067 *
3068 * The outer and inner `TemplateRef` instances are assembled into views as follows:
3069 *
3070 * ```
3071 * <!-- ViewRef: outer-0 -->
3072 * Count: 2
3073 * <ul>
3074 * <ng-template view-container-ref></ng-template>
3075 * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->
3076 * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->
3077 * </ul>
3078 * <!-- /ViewRef: outer-0 -->
3079 * ```
3080 * @publicApi
3081 */
3082export declare abstract class EmbeddedViewRef<C> extends ViewRef {
3083 /**
3084 * The context for this view, inherited from the anchor element.
3085 */
3086 abstract context: C;
3087 /**
3088 * The root nodes for this embedded view.
3089 */
3090 abstract get rootNodes(): any[];
3091}
3092
3093/**
3094 * Disable Angular's development mode, which turns off assertions and other
3095 * checks within the framework.
3096 *
3097 * One important assertion this disables verifies that a change detection pass
3098 * does not result in additional changes to any bindings (also known as
3099 * unidirectional data flow).
3100 *
3101 * Using this method is discouraged as the Angular CLI will set production mode when using the
3102 * `optimization` option.
3103 * @see {@link cli/build ng build}
3104 *
3105 * @publicApi
3106 */
3107export declare function enableProdMode(): void;
3108
3109declare const ENVIRONMENT = 10;
3110
3111/**
3112 * A multi-provider token for initialization functions that will run upon construction of an
3113 * environment injector.
3114 *
3115 * @publicApi
3116 */
3117export declare const ENVIRONMENT_INITIALIZER: InjectionToken<() => void>;
3118
3119/**
3120 * An `Injector` that's part of the environment injector hierarchy, which exists outside of the
3121 * component tree.
3122 */
3123export declare abstract class EnvironmentInjector implements Injector {
3124 /**
3125 * Retrieves an instance from the injector based on the provided token.
3126 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3127 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3128 */
3129 abstract get<T>(token: ProviderToken<T>, notFoundValue: undefined, options: InjectOptions & {
3130 optional?: false;
3131 }): T;
3132 /**
3133 * Retrieves an instance from the injector based on the provided token.
3134 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3135 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3136 */
3137 abstract get<T>(token: ProviderToken<T>, notFoundValue: null | undefined, options: InjectOptions): T | null;
3138 /**
3139 * Retrieves an instance from the injector based on the provided token.
3140 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3141 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3142 */
3143 abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, options?: InjectOptions): T;
3144 /**
3145 * Retrieves an instance from the injector based on the provided token.
3146 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3147 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3148 * @deprecated use object-based flags (`InjectOptions`) instead.
3149 */
3150 abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
3151 /**
3152 * @deprecated from v4.0.0 use ProviderToken<T>
3153 * @suppress {duplicate}
3154 */
3155 abstract get(token: any, notFoundValue?: any): any;
3156 /**
3157 * Runs the given function in the context of this `EnvironmentInjector`.
3158 *
3159 * Within the function's stack frame, `inject` can be used to inject dependencies from this
3160 * injector. Note that `inject` is only usable synchronously, and cannot be used in any
3161 * asynchronous callbacks or after any `await` points.
3162 *
3163 * @param fn the closure to be run in the context of this injector
3164 * @returns the return value of the function, if any
3165 * @deprecated use the standalone function `runInInjectionContext` instead
3166 */
3167 abstract runInContext<ReturnT>(fn: () => ReturnT): ReturnT;
3168 abstract destroy(): void;
3169}
3170
3171/**
3172 * Encapsulated `Provider`s that are only accepted during creation of an `EnvironmentInjector` (e.g.
3173 * in an `NgModule`).
3174 *
3175 * Using this wrapper type prevents providers which are only designed to work in
3176 * application/environment injectors from being accidentally included in
3177 * `@Component.providers` and ending up in a component injector.
3178 *
3179 * This wrapper type prevents access to the `Provider`s inside.
3180 *
3181 * @see `makeEnvironmentProviders`
3182 * @see `importProvidersFrom`
3183 *
3184 * @publicApi
3185 */
3186export declare type EnvironmentProviders = {
3187 ɵbrand: 'EnvironmentProviders';
3188};
3189
3190
3191/**
3192 * Provides a hook for centralized exception handling.
3193 *
3194 * The default implementation of `ErrorHandler` prints error messages to the `console`. To
3195 * intercept error handling, write a custom exception handler that replaces this default as
3196 * appropriate for your app.
3197 *
3198 * @usageNotes
3199 * ### Example
3200 *
3201 * ```
3202 * class MyErrorHandler implements ErrorHandler {
3203 * handleError(error) {
3204 * // do something with the exception
3205 * }
3206 * }
3207 *
3208 * @NgModule({
3209 * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]
3210 * })
3211 * class MyModule {}
3212 * ```
3213 *
3214 * @publicApi
3215 */
3216export declare class ErrorHandler {
3217 handleError(error: any): void;
3218}
3219
3220/**
3221 * Use in components with the `@Output` directive to emit custom events
3222 * synchronously or asynchronously, and register handlers for those events
3223 * by subscribing to an instance.
3224 *
3225 * @usageNotes
3226 *
3227 * Extends
3228 * [RxJS `Subject`](https://rxjs.dev/api/index/class/Subject)
3229 * for Angular by adding the `emit()` method.
3230 *
3231 * In the following example, a component defines two output properties
3232 * that create event emitters. When the title is clicked, the emitter
3233 * emits an open or close event to toggle the current visibility state.
3234 *
3235 * ```html
3236 * @Component({
3237 * selector: 'zippy',
3238 * template: `
3239 * <div class="zippy">
3240 * <div (click)="toggle()">Toggle</div>
3241 * <div [hidden]="!visible">
3242 * <ng-content></ng-content>
3243 * </div>
3244 * </div>`})
3245 * export class Zippy {
3246 * visible: boolean = true;
3247 * @Output() open: EventEmitter<any> = new EventEmitter();
3248 * @Output() close: EventEmitter<any> = new EventEmitter();
3249 *
3250 * toggle() {
3251 * this.visible = !this.visible;
3252 * if (this.visible) {
3253 * this.open.emit(null);
3254 * } else {
3255 * this.close.emit(null);
3256 * }
3257 * }
3258 * }
3259 * ```
3260 *
3261 * Access the event object with the `$event` argument passed to the output event
3262 * handler:
3263 *
3264 * ```html
3265 * <zippy (open)="onOpen($event)" (close)="onClose($event)"></zippy>
3266 * ```
3267 *
3268 * @see [Observables in Angular](guide/observables-in-angular)
3269 * @publicApi
3270 */
3271export declare interface EventEmitter<T> extends Subject<T> {
3272 /**
3273 * Creates an instance of this class that can
3274 * deliver events synchronously or asynchronously.
3275 *
3276 * @param [isAsync=false] When true, deliver events asynchronously.
3277 *
3278 */
3279 new (isAsync?: boolean): EventEmitter<T>;
3280 /**
3281 * Emits an event containing a given value.
3282 * @param value The value to emit.
3283 */
3284 emit(value?: T): void;
3285 /**
3286 * Registers handlers for events emitted by this instance.
3287 * @param next When supplied, a custom handler for emitted events.
3288 * @param error When supplied, a custom handler for an error notification from this emitter.
3289 * @param complete When supplied, a custom handler for a completion notification from this
3290 * emitter.
3291 */
3292 subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription;
3293 /**
3294 * Registers handlers for events emitted by this instance.
3295 * @param observerOrNext When supplied, a custom handler for emitted events, or an observer
3296 * object.
3297 * @param error When supplied, a custom handler for an error notification from this emitter.
3298 * @param complete When supplied, a custom handler for a completion notification from this
3299 * emitter.
3300 */
3301 subscribe(observerOrNext?: any, error?: any, complete?: any): Subscription;
3302}
3303
3304/**
3305 * @publicApi
3306 */
3307export declare const EventEmitter: {
3308 new (isAsync?: boolean): EventEmitter<any>;
3309 new <T>(isAsync?: boolean): EventEmitter<T>;
3310 readonly prototype: EventEmitter<any>;
3311};
3312
3313/**
3314 * Configures the `Injector` to return a value of another `useExisting` token.
3315 *
3316 * @see ["Dependency Injection Guide"](guide/dependency-injection).
3317 *
3318 * @usageNotes
3319 *
3320 * {@example core/di/ts/provider_spec.ts region='ExistingProvider'}
3321 *
3322 * ### Multi-value example
3323 *
3324 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
3325 *
3326 * @publicApi
3327 */
3328export declare interface ExistingProvider extends ExistingSansProvider {
3329 /**
3330 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
3331 */
3332 provide: any;
3333 /**
3334 * When true, injector returns an array of instances. This is useful to allow multiple
3335 * providers spread across many files to provide configuration information to a common token.
3336 */
3337 multi?: boolean;
3338}
3339
3340/**
3341 * Configures the `Injector` to return a value of another `useExisting` token.
3342 *
3343 * @see `ExistingProvider`
3344 * @see ["Dependency Injection Guide"](guide/dependency-injection).
3345 *
3346 * @publicApi
3347 */
3348export declare interface ExistingSansProvider {
3349 /**
3350 * Existing `token` to return. (Equivalent to `injector.get(useExisting)`)
3351 */
3352 useExisting: any;
3353}
3354
3355/**
3356 * Definition of what a factory function should look like.
3357 */
3358declare type FactoryFn<T> = {
3359 /**
3360 * Subclasses without an explicit constructor call through to the factory of their base
3361 * definition, providing it with their own constructor to instantiate.
3362 */
3363 <U extends T>(t?: Type<U>): U;
3364 /**
3365 * If no constructor to instantiate is provided, an instance of type T itself is created.
3366 */
3367 (t?: undefined): T;
3368};
3369
3370/**
3371 * Configures the `Injector` to return a value by invoking a `useFactory` function.
3372 * @see ["Dependency Injection Guide"](guide/dependency-injection).
3373 *
3374 * @usageNotes
3375 *
3376 * {@example core/di/ts/provider_spec.ts region='FactoryProvider'}
3377 *
3378 * Dependencies can also be marked as optional:
3379 *
3380 * {@example core/di/ts/provider_spec.ts region='FactoryProviderOptionalDeps'}
3381 *
3382 * ### Multi-value example
3383 *
3384 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
3385 *
3386 * @publicApi
3387 */
3388export declare interface FactoryProvider extends FactorySansProvider {
3389 /**
3390 * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
3391 */
3392 provide: any;
3393 /**
3394 * When true, injector returns an array of instances. This is useful to allow multiple
3395 * providers spread across many files to provide configuration information to a common token.
3396 */
3397 multi?: boolean;
3398}
3399
3400/**
3401 * Configures the `Injector` to return a value by invoking a `useFactory` function.
3402 *
3403 * @see `FactoryProvider`
3404 * @see ["Dependency Injection Guide"](guide/dependency-injection).
3405 *
3406 * @publicApi
3407 */
3408export declare interface FactorySansProvider {
3409 /**
3410 * A function to invoke to create a value for this `token`. The function is invoked with
3411 * resolved values of `token`s in the `deps` field.
3412 */
3413 useFactory: Function;
3414 /**
3415 * A list of `token`s to be resolved by the injector. The list of values is then
3416 * used as arguments to the `useFactory` function.
3417 */
3418 deps?: any[];
3419}
3420
3421declare const FLAGS = 2;
3422
3423/**
3424 * Allows to refer to references which are not yet defined.
3425 *
3426 * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of
3427 * DI is declared, but not yet defined. It is also used when the `token` which we use when creating
3428 * a query is not yet defined.
3429 *
3430 * `forwardRef` is also used to break circularities in standalone components imports.
3431 *
3432 * @usageNotes
3433 * ### Circular dependency example
3434 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}
3435 *
3436 * ### Circular standalone reference import example
3437 * ```ts
3438 * @Component({
3439 * standalone: true,
3440 * imports: [ChildComponent],
3441 * selector: 'app-parent',
3442 * template: `<app-child [hideParent]="hideParent"></app-child>`,
3443 * })
3444 * export class ParentComponent {
3445 * @Input() hideParent: boolean;
3446 * }
3447 *
3448 *
3449 * @Component({
3450 * standalone: true,
3451 * imports: [CommonModule, forwardRef(() => ParentComponent)],
3452 * selector: 'app-child',
3453 * template: `<app-parent *ngIf="!hideParent"></app-parent>`,
3454 * })
3455 * export class ChildComponent {
3456 * @Input() hideParent: boolean;
3457 * }
3458 * ```
3459 *
3460 * @publicApi
3461 */
3462export declare function forwardRef(forwardRefFn: ForwardRefFn): Type<any>;
3463
3464/**
3465 * An interface that a function passed into {@link forwardRef} has to implement.
3466 *
3467 * @usageNotes
3468 * ### Example
3469 *
3470 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref_fn'}
3471 * @publicApi
3472 */
3473export declare interface ForwardRefFn {
3474 (): any;
3475}
3476
3477/**
3478 * @publicApi
3479 */
3480declare function getDebugNode(nativeNode: any): DebugNode | null;
3481export { getDebugNode }
3482export { getDebugNode as ɵgetDebugNode }
3483
3484/**
3485 * Returns the NgModuleFactory with the given id (specified using [@NgModule.id
3486 * field](api/core/NgModule#id)), if it exists and has been loaded. Factories for NgModules that do
3487 * not specify an `id` cannot be retrieved. Throws if an NgModule cannot be found.
3488 * @publicApi
3489 * @deprecated Use `getNgModuleById` instead.
3490 */
3491export declare function getModuleFactory(id: string): NgModuleFactory<any>;
3492
3493/**
3494 * Returns the NgModule class with the given id (specified using [@NgModule.id
3495 * field](api/core/NgModule#id)), if it exists and has been loaded. Classes for NgModules that do
3496 * not specify an `id` cannot be retrieved. Throws if an NgModule cannot be found.
3497 * @publicApi
3498 */
3499export declare function getNgModuleById<T>(id: string): Type<T>;
3500
3501/**
3502 * Returns the current platform.
3503 *
3504 * @publicApi
3505 */
3506export declare function getPlatform(): PlatformRef | null;
3507
3508/**
3509 * Adapter interface for retrieving the `Testability` service associated for a
3510 * particular context.
3511 *
3512 * @publicApi
3513 */
3514export declare interface GetTestability {
3515 addToWindow(registry: TestabilityRegistry): void;
3516 findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean): Testability | null;
3517}
3518
3519/**
3520 * The goal here is to make sure that the browser DOM API is the Renderer.
3521 * We do this by defining a subset of DOM API to be the renderer and then
3522 * use that at runtime for rendering.
3523 *
3524 * At runtime we can then use the DOM api directly, in server or web-worker
3525 * it will be easy to implement such API.
3526 */
3527declare type GlobalTargetName = 'document' | 'window' | 'body';
3528
3529declare type GlobalTargetResolver = (element: any) => EventTarget;
3530
3531/**
3532 * Flag to signify that this `LContainer` may have transplanted views which need to be change
3533 * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
3534 *
3535 * This flag, once set, is never unset for the `LContainer`. This means that when unset we can skip
3536 * a lot of work in `refreshEmbeddedViews`. But when set we still need to verify
3537 * that the `MOVED_VIEWS` are transplanted and on-push.
3538 */
3539declare const HAS_TRANSPLANTED_VIEWS = 2;
3540
3541/**
3542 * Array of hooks that should be executed for a view and their directive indices.
3543 *
3544 * For each node of the view, the following data is stored:
3545 * 1) Node index (optional)
3546 * 2) A series of number/function pairs where:
3547 * - even indices are directive indices
3548 * - odd indices are hook functions
3549 *
3550 * Special cases:
3551 * - a negative directive index flags an init hook (ngOnInit, ngAfterContentInit, ngAfterViewInit)
3552 */
3553declare type HookData = HookEntry[];
3554
3555/**
3556 * Information necessary to call a hook. E.g. the callback that
3557 * needs to invoked and the index at which to find its context.
3558 */
3559declare type HookEntry = number | HookFn;
3560
3561/** Single hook callback function. */
3562declare type HookFn = () => void;
3563
3564declare const HOST = 0;
3565
3566/**
3567 * Type of the Host metadata.
3568 *
3569 * @publicApi
3570 */
3571export declare interface Host {
3572}
3573
3574/**
3575 * Host decorator and metadata.
3576 *
3577 * @Annotation
3578 * @publicApi
3579 */
3580export declare const Host: HostDecorator;
3581
3582/**
3583 * Type of the HostBinding metadata.
3584 *
3585 * @publicApi
3586 */
3587export declare interface HostBinding {
3588 /**
3589 * The DOM property that is bound to a data property.
3590 */
3591 hostPropertyName?: string;
3592}
3593
3594/**
3595 * @Annotation
3596 * @publicApi
3597 */
3598export declare const HostBinding: HostBindingDecorator;
3599
3600/**
3601 * Type of the HostBinding decorator / constructor function.
3602 *
3603 * @publicApi
3604 */
3605export declare interface HostBindingDecorator {
3606 /**
3607 * Decorator that marks a DOM property as a host-binding property and supplies configuration
3608 * metadata.
3609 * Angular automatically checks host property bindings during change detection, and
3610 * if a binding changes it updates the host element of the directive.
3611 *
3612 * @usageNotes
3613 *
3614 * The following example creates a directive that sets the `valid` and `invalid`
3615 * properties on the DOM element that has an `ngModel` directive on it.
3616 *
3617 * ```typescript
3618 * @Directive({selector: '[ngModel]'})
3619 * class NgModelStatus {
3620 * constructor(public control: NgModel) {}
3621 * @HostBinding('class.valid') get valid() { return this.control.valid; }
3622 * @HostBinding('class.invalid') get invalid() { return this.control.invalid; }
3623 * }
3624 *
3625 * @Component({
3626 * selector: 'app',
3627 * template: `<input [(ngModel)]="prop">`,
3628 * })
3629 * class App {
3630 * prop;
3631 * }
3632 * ```
3633 *
3634 */
3635 (hostPropertyName?: string): any;
3636 new (hostPropertyName?: string): any;
3637}
3638
3639/**
3640 * Stores a set of OpCodes to process `HostBindingsFunction` associated with a current view.
3641 *
3642 * In order to invoke `HostBindingsFunction` we need:
3643 * 1. 'elementIdx`: Index to the element associated with the `HostBindingsFunction`.
3644 * 2. 'directiveIdx`: Index to the directive associated with the `HostBindingsFunction`. (This will
3645 * become the context for the `HostBindingsFunction` invocation.)
3646 * 3. `bindingRootIdx`: Location where the bindings for the `HostBindingsFunction` start. Internally
3647 * `HostBindingsFunction` binding indexes start from `0` so we need to add `bindingRootIdx` to
3648 * it.
3649 * 4. `HostBindingsFunction`: A host binding function to execute.
3650 *
3651 * The above information needs to be encoded into the `HostBindingOpCodes` in an efficient manner.
3652 *
3653 * 1. `elementIdx` is encoded into the `HostBindingOpCodes` as `~elementIdx` (so a negative number);
3654 * 2. `directiveIdx`
3655 * 3. `bindingRootIdx`
3656 * 4. `HostBindingsFunction` is passed in as is.
3657 *
3658 * The `HostBindingOpCodes` array contains:
3659 * - negative number to select the element index.
3660 * - followed by 1 or more of:
3661 * - a number to select the directive index
3662 * - a number to select the bindingRoot index
3663 * - and a function to invoke.
3664 *
3665 * ## Example
3666 *
3667 * ```
3668 * const hostBindingOpCodes = [
3669 * ~30, // Select element 30
3670 * 40, 45, MyDirdir.hostBindings // Invoke host bindings on MyDir on element 30;
3671 * // directiveIdx = 40; bindingRootIdx = 45;
3672 * 50, 55, OtherDir.ɵdir.hostBindings // Invoke host bindings on OtherDire on element 30
3673 * // directiveIdx = 50; bindingRootIdx = 55;
3674 * ]
3675 * ```
3676 *
3677 * ## Pseudocode
3678 * ```
3679 * const hostBindingOpCodes = tView.hostBindingOpCodes;
3680 * if (hostBindingOpCodes === null) return;
3681 * for (let i = 0; i < hostBindingOpCodes.length; i++) {
3682 * const opCode = hostBindingOpCodes[i] as number;
3683 * if (opCode < 0) {
3684 * // Negative numbers are element indexes.
3685 * setSelectedIndex(~opCode);
3686 * } else {
3687 * // Positive numbers are NumberTuple which store bindingRootIndex and directiveIndex.
3688 * const directiveIdx = opCode;
3689 * const bindingRootIndx = hostBindingOpCodes[++i] as number;
3690 * const hostBindingFn = hostBindingOpCodes[++i] as HostBindingsFunction<any>;
3691 * setBindingRootForHostBindings(bindingRootIndx, directiveIdx);
3692 * const context = lView[directiveIdx];
3693 * hostBindingFn(RenderFlags.Update, context);
3694 * }
3695 * }
3696 * ```
3697 *
3698 */
3699declare interface HostBindingOpCodes extends Array<number | HostBindingsFunction<any>> {
3700 __brand__: 'HostBindingOpCodes';
3701 debug?: string[];
3702}
3703
3704declare type HostBindingsFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void;
3705
3706/**
3707 * Type of the `Host` decorator / constructor function.
3708 *
3709 * @publicApi
3710 */
3711export declare interface HostDecorator {
3712 /**
3713 * Parameter decorator on a view-provider parameter of a class constructor
3714 * that tells the DI framework to resolve the view by checking injectors of child
3715 * elements, and stop when reaching the host element of the current component.
3716 *
3717 * @usageNotes
3718 *
3719 * The following shows use with the `@Optional` decorator, and allows for a `null` result.
3720 *
3721 * <code-example path="core/di/ts/metadata_spec.ts" region="Host">
3722 * </code-example>
3723 *
3724 * For an extended example, see ["Dependency Injection
3725 * Guide"](guide/dependency-injection-in-action#optional).
3726 */
3727 (): any;
3728 new (): Host;
3729}
3730
3731/**
3732 * Mapping between the public aliases of directive bindings and the underlying inputs/outputs that
3733 * they represent. Also serves as an allowlist of the inputs/outputs from the host directive that
3734 * the author has decided to expose.
3735 */
3736declare type HostDirectiveBindingMap = {
3737 [publicName: string]: string;
3738};
3739
3740/** Values that can be used to define a host directive through the `HostDirectivesFeature`. */
3741declare type HostDirectiveConfig = Type<unknown> | {
3742 directive: Type<unknown>;
3743 inputs?: string[];
3744 outputs?: string[];
3745};
3746
3747/** Runtime information used to configure a host directive. */
3748declare interface HostDirectiveDef<T = unknown> {
3749 /** Class representing the host directive. */
3750 directive: Type<T>;
3751 /** Directive inputs that have been exposed. */
3752 inputs: HostDirectiveBindingMap;
3753 /** Directive outputs that have been exposed. */
3754 outputs: HostDirectiveBindingMap;
3755}
3756
3757/**
3758 * Mapping between a directive that was used as a host directive
3759 * and the configuration that was used to define it as such.
3760 */
3761declare type HostDirectiveDefs = Map<ɵDirectiveDef<unknown>, HostDirectiveDef>;
3762
3763/**
3764 * Type of the HostListener metadata.
3765 *
3766 * @publicApi
3767 */
3768export declare interface HostListener {
3769 /**
3770 * The DOM event to listen for.
3771 */
3772 eventName?: string;
3773 /**
3774 * A set of arguments to pass to the handler method when the event occurs.
3775 */
3776 args?: string[];
3777}
3778
3779/**
3780 * Decorator that binds a DOM event to a host listener and supplies configuration metadata.
3781 * Angular invokes the supplied handler method when the host element emits the specified event,
3782 * and updates the bound element with the result.
3783 *
3784 * If the handler method returns false, applies `preventDefault` on the bound element.
3785 *
3786 * @usageNotes
3787 *
3788 * The following example declares a directive
3789 * that attaches a click listener to a button and counts clicks.
3790 *
3791 * ```ts
3792 * @Directive({selector: 'button[counting]'})
3793 * class CountClicks {
3794 * numberOfClicks = 0;
3795 *
3796 * @HostListener('click', ['$event.target'])
3797 * onClick(btn) {
3798 * console.log('button', btn, 'number of clicks:', this.numberOfClicks++);
3799 * }
3800 * }
3801 *
3802 * @Component({
3803 * selector: 'app',
3804 * template: '<button counting>Increment</button>',
3805 * })
3806 * class App {}
3807 *
3808 * ```
3809 *
3810 * The following example registers another DOM event handler that listens for `Enter` key-press
3811 * events on the global `window`.
3812 * ``` ts
3813 * import { HostListener, Component } from "@angular/core";
3814 *
3815 * @Component({
3816 * selector: 'app',
3817 * template: `<h1>Hello, you have pressed enter {{counter}} number of times!</h1> Press enter key
3818 * to increment the counter.
3819 * <button (click)="resetCounter()">Reset Counter</button>`
3820 * })
3821 * class AppComponent {
3822 * counter = 0;
3823 * @HostListener('window:keydown.enter', ['$event'])
3824 * handleKeyDown(event: KeyboardEvent) {
3825 * this.counter++;
3826 * }
3827 * resetCounter() {
3828 * this.counter = 0;
3829 * }
3830 * }
3831 * ```
3832 * The list of valid key names for `keydown` and `keyup` events
3833 * can be found here:
3834 * https://www.w3.org/TR/DOM-Level-3-Events-key/#named-key-attribute-values
3835 *
3836 * Note that keys can also be combined, e.g. `@HostListener('keydown.shift.a')`.
3837 *
3838 * The global target names that can be used to prefix an event name are
3839 * `document:`, `window:` and `body:`.
3840 *
3841 * @Annotation
3842 * @publicApi
3843 */
3844export declare const HostListener: HostListenerDecorator;
3845
3846/**
3847 * Type of the HostListener decorator / constructor function.
3848 *
3849 * @publicApi
3850 */
3851export declare interface HostListenerDecorator {
3852 /**
3853 * Decorator that declares a DOM event to listen for,
3854 * and provides a handler method to run when that event occurs.
3855 *
3856 * Angular invokes the supplied handler method when the host element emits the specified event,
3857 * and updates the bound element with the result.
3858 *
3859 * If the handler method returns false, applies `preventDefault` on the bound element.
3860 */
3861 (eventName: string, args?: string[]): any;
3862 new (eventName: string, args?: string[]): any;
3863}
3864
3865declare const HYDRATION = 22;
3866
3867declare namespace i0 {
3868 export {
3869 ɵɵinject,
3870 ɵɵdefineInjectable,
3871 ɵɵdefineInjector,
3872 ɵɵInjectableDeclaration,
3873 ɵNgModuleDef as NgModuleDef,
3874 ɵɵdefineNgModule,
3875 ɵɵFactoryDeclaration,
3876 ɵɵInjectorDeclaration,
3877 ɵɵNgModuleDeclaration,
3878 ɵsetClassMetadata as setClassMetadata,
3879 ɵNgModuleFactory as NgModuleFactory,
3880 ɵnoSideEffects,
3881 ITS_JUST_ANGULAR
3882 }
3883}
3884
3885/**
3886 * Array storing OpCode for dynamically creating `i18n` translation DOM elements.
3887 *
3888 * This array creates a sequence of `Text` and `Comment` (as ICU anchor) DOM elements. It consists
3889 * of a pair of `number` and `string` pairs which encode the operations for the creation of the
3890 * translated block.
3891 *
3892 * The number is shifted and encoded according to `I18nCreateOpCode`
3893 *
3894 * Pseudocode:
3895 * ```
3896 * const i18nCreateOpCodes = [
3897 * 10 << I18nCreateOpCode.SHIFT, "Text Node add to DOM",
3898 * 11 << I18nCreateOpCode.SHIFT | I18nCreateOpCode.COMMENT, "Comment Node add to DOM",
3899 * 12 << I18nCreateOpCode.SHIFT | I18nCreateOpCode.APPEND_LATER, "Text Node added later"
3900 * ];
3901 *
3902 * for(var i=0; i<i18nCreateOpCodes.length; i++) {
3903 * const opcode = i18NCreateOpCodes[i++];
3904 * const index = opcode >> I18nCreateOpCode.SHIFT;
3905 * const text = i18NCreateOpCodes[i];
3906 * let node: Text|Comment;
3907 * if (opcode & I18nCreateOpCode.COMMENT === I18nCreateOpCode.COMMENT) {
3908 * node = lView[~index] = document.createComment(text);
3909 * } else {
3910 * node = lView[index] = document.createText(text);
3911 * }
3912 * if (opcode & I18nCreateOpCode.APPEND_EAGERLY !== I18nCreateOpCode.APPEND_EAGERLY) {
3913 * parentNode.appendChild(node);
3914 * }
3915 * }
3916 * ```
3917 */
3918declare interface I18nCreateOpCodes extends Array<number | string>, I18nDebug {
3919 __brand__: 'I18nCreateOpCodes';
3920}
3921
3922declare interface I18nDebug {
3923 /**
3924 * Human readable representation of the OpCode arrays.
3925 *
3926 * NOTE: This property only exists if `ngDevMode` is set to `true` and it is not present in
3927 * production. Its presence is purely to help debug issue in development, and should not be relied
3928 * on in production application.
3929 */
3930 debug?: string[];
3931}
3932
3933/**
3934 * Stores a list of nodes which need to be removed.
3935 *
3936 * Numbers are indexes into the `LView`
3937 * - index > 0: `removeRNode(lView[0])`
3938 * - index < 0: `removeICU(~lView[0])`
3939 */
3940declare interface I18nRemoveOpCodes extends Array<number> {
3941 __brand__: 'I18nRemoveOpCodes';
3942}
3943
3944/**
3945 * Stores DOM operations which need to be applied to update DOM render tree due to changes in
3946 * expressions.
3947 *
3948 * The basic idea is that `i18nExp` OpCodes capture expression changes and update a change
3949 * mask bit. (Bit 1 for expression 1, bit 2 for expression 2 etc..., bit 32 for expression 32 and
3950 * higher.) The OpCodes then compare its own change mask against the expression change mask to
3951 * determine if the OpCodes should execute.
3952 *
3953 * NOTE: 32nd bit is special as it says 32nd or higher. This way if we have more than 32 bindings
3954 * the code still works, but with lower efficiency. (it is unlikely that a translation would have
3955 * more than 32 bindings.)
3956 *
3957 * These OpCodes can be used by both the i18n block as well as ICU sub-block.
3958 *
3959 * ## Example
3960 *
3961 * Assume
3962 * ```ts
3963 * if (rf & RenderFlags.Update) {
3964 * i18nExp(ctx.exp1); // If changed set mask bit 1
3965 * i18nExp(ctx.exp2); // If changed set mask bit 2
3966 * i18nExp(ctx.exp3); // If changed set mask bit 3
3967 * i18nExp(ctx.exp4); // If changed set mask bit 4
3968 * i18nApply(0); // Apply all changes by executing the OpCodes.
3969 * }
3970 * ```
3971 * We can assume that each call to `i18nExp` sets an internal `changeMask` bit depending on the
3972 * index of `i18nExp`.
3973 *
3974 * ### OpCodes
3975 * ```ts
3976 * <I18nUpdateOpCodes>[
3977 * // The following OpCodes represent: `<div i18n-title="pre{{exp1}}in{{exp2}}post">`
3978 * // If `changeMask & 0b11`
3979 * // has changed then execute update OpCodes.
3980 * // has NOT changed then skip `8` values and start processing next OpCodes.
3981 * 0b11, 8,
3982 * // Concatenate `newValue = 'pre'+lView[bindIndex-4]+'in'+lView[bindIndex-3]+'post';`.
3983 * 'pre', -4, 'in', -3, 'post',
3984 * // Update attribute: `elementAttribute(1, 'title', sanitizerFn(newValue));`
3985 * 1 << SHIFT_REF | Attr, 'title', sanitizerFn,
3986 *
3987 * // The following OpCodes represent: `<div i18n>Hello {{exp3}}!">`
3988 * // If `changeMask & 0b100`
3989 * // has changed then execute update OpCodes.
3990 * // has NOT changed then skip `4` values and start processing next OpCodes.
3991 * 0b100, 4,
3992 * // Concatenate `newValue = 'Hello ' + lView[bindIndex -2] + '!';`.
3993 * 'Hello ', -2, '!',
3994 * // Update text: `lView[1].textContent = newValue;`
3995 * 1 << SHIFT_REF | Text,
3996 *
3997 * // The following OpCodes represent: `<div i18n>{exp4, plural, ... }">`
3998 * // If `changeMask & 0b1000`
3999 * // has changed then execute update OpCodes.
4000 * // has NOT changed then skip `2` values and start processing next OpCodes.
4001 * 0b1000, 2,
4002 * // Concatenate `newValue = lView[bindIndex -1];`.
4003 * -1,
4004 * // Switch ICU: `icuSwitchCase(lView[1], 0, newValue);`
4005 * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuSwitch,
4006 *
4007 * // Note `changeMask & -1` is always true, so the IcuUpdate will always execute.
4008 * -1, 1,
4009 * // Update ICU: `icuUpdateCase(lView[1], 0);`
4010 * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuUpdate,
4011 *
4012 * ];
4013 * ```
4014 *
4015 */
4016declare interface I18nUpdateOpCodes extends Array<string | number | SanitizerFn | null>, I18nDebug {
4017 __brand__: 'I18nUpdateOpCodes';
4018}
4019
4020/**
4021 * Marks that the next string is comment text need for ICU.
4022 *
4023 * See `I18nMutateOpCodes` documentation.
4024 */
4025declare const ICU_MARKER: ICU_MARKER;
4026
4027declare interface ICU_MARKER {
4028 marker: 'ICU';
4029}
4030
4031/**
4032 * Array storing OpCode for dynamically creating `i18n` blocks.
4033 *
4034 * Example:
4035 * ```ts
4036 * <I18nCreateOpCode>[
4037 * // For adding text nodes
4038 * // ---------------------
4039 * // Equivalent to:
4040 * // lView[1].appendChild(lView[0] = document.createTextNode('xyz'));
4041 * 'xyz', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
4042 *
4043 * // For adding element nodes
4044 * // ---------------------
4045 * // Equivalent to:
4046 * // lView[1].appendChild(lView[0] = document.createElement('div'));
4047 * ELEMENT_MARKER, 'div', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
4048 *
4049 * // For adding comment nodes
4050 * // ---------------------
4051 * // Equivalent to:
4052 * // lView[1].appendChild(lView[0] = document.createComment(''));
4053 * ICU_MARKER, '', 0, 1 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
4054 *
4055 * // For moving existing nodes to a different location
4056 * // --------------------------------------------------
4057 * // Equivalent to:
4058 * // const node = lView[1];
4059 * // lView[2].appendChild(node);
4060 * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | 0 << SHIFT_REF | AppendChild,
4061 *
4062 * // For removing existing nodes
4063 * // --------------------------------------------------
4064 * // const node = lView[1];
4065 * // removeChild(tView.data(1), node, lView);
4066 * 1 << SHIFT_REF | Remove,
4067 *
4068 * // For writing attributes
4069 * // --------------------------------------------------
4070 * // const node = lView[1];
4071 * // node.setAttribute('attr', 'value');
4072 * 1 << SHIFT_REF | Attr, 'attr', 'value'
4073 * ];
4074 * ```
4075 */
4076declare interface IcuCreateOpCodes extends Array<number | string | ELEMENT_MARKER | ICU_MARKER | null>, I18nDebug {
4077 __brand__: 'I18nCreateOpCodes';
4078}
4079
4080/**
4081 * Defines the ICU type of `select` or `plural`
4082 */
4083declare const enum IcuType {
4084 select = 0,
4085 plural = 1
4086}
4087
4088declare const ID = 19;
4089
4090/**
4091 * Providers that were imported from NgModules via the `importProvidersFrom` function.
4092 *
4093 * These providers are meant for use in an application injector (or other environment injectors) and
4094 * should not be used in component injectors.
4095 *
4096 * This type cannot be directly implemented. It's returned from the `importProvidersFrom` function
4097 * and serves to prevent the extracted NgModule providers from being used in the wrong contexts.
4098 *
4099 * @see `importProvidersFrom`
4100 *
4101 * @publicApi
4102 * @deprecated replaced by `EnvironmentProviders`
4103 */
4104export declare type ImportedNgModuleProviders = EnvironmentProviders;
4105
4106/**
4107 * Collects providers from all NgModules and standalone components, including transitively imported
4108 * ones.
4109 *
4110 * Providers extracted via `importProvidersFrom` are only usable in an application injector or
4111 * another environment injector (such as a route injector). They should not be used in component
4112 * providers.
4113 *
4114 * More information about standalone components can be found in [this
4115 * guide](guide/standalone-components).
4116 *
4117 * @usageNotes
4118 * The results of the `importProvidersFrom` call can be used in the `bootstrapApplication` call:
4119 *
4120 * ```typescript
4121 * await bootstrapApplication(RootComponent, {
4122 * providers: [
4123 * importProvidersFrom(NgModuleOne, NgModuleTwo)
4124 * ]
4125 * });
4126 * ```
4127 *
4128 * You can also use the `importProvidersFrom` results in the `providers` field of a route, when a
4129 * standalone component is used:
4130 *
4131 * ```typescript
4132 * export const ROUTES: Route[] = [
4133 * {
4134 * path: 'foo',
4135 * providers: [
4136 * importProvidersFrom(NgModuleOne, NgModuleTwo)
4137 * ],
4138 * component: YourStandaloneComponent
4139 * }
4140 * ];
4141 * ```
4142 *
4143 * @returns Collected providers from the specified list of types.
4144 * @publicApi
4145 */
4146export declare function importProvidersFrom(...sources: ImportProvidersSource[]): EnvironmentProviders;
4147
4148/**
4149 * A source of providers for the `importProvidersFrom` function.
4150 *
4151 * @publicApi
4152 */
4153export declare type ImportProvidersSource = Type<unknown> | ModuleWithProviders<unknown> | Array<ImportProvidersSource>;
4154
4155/**
4156 * This array contains information about input properties that
4157 * need to be set once from attribute data. It's ordered by
4158 * directive index (relative to element) so it's simple to
4159 * look up a specific directive's initial input data.
4160 *
4161 * Within each sub-array:
4162 *
4163 * i+0: attribute name
4164 * i+1: minified/internal input name
4165 * i+2: initial value
4166 *
4167 * If a directive on a node does not have any input properties
4168 * that should be set from attributes, its index is set to null
4169 * to avoid a sparse array.
4170 *
4171 * e.g. [null, ['role-min', 'minified-input', 'button']]
4172 */
4173declare type InitialInputData = (InitialInputs | null)[];
4174
4175/**
4176 * Used by InitialInputData to store input properties
4177 * that should be set once from attributes.
4178 *
4179 * i+0: attribute name
4180 * i+1: minified/internal input name
4181 * i+2: initial value
4182 *
4183 * e.g. ['role-min', 'minified-input', 'button']
4184 */
4185declare type InitialInputs = string[];
4186
4187/**
4188 * Type of the Inject metadata.
4189 *
4190 * @publicApi
4191 */
4192export declare interface Inject {
4193 /**
4194 * A [DI token](guide/glossary#di-token) that maps to the dependency to be injected.
4195 */
4196 token: any;
4197}
4198
4199/**
4200 * Inject decorator and metadata.
4201 *
4202 * @Annotation
4203 * @publicApi
4204 */
4205export declare const Inject: InjectDecorator;
4206
4207/**
4208 * @param token A token that represents a dependency that should be injected.
4209 * @returns the injected value if operation is successful, `null` otherwise.
4210 * @throws if called outside of a supported context.
4211 *
4212 * @publicApi
4213 */
4214export declare function inject<T>(token: ProviderToken<T>): T;
4215
4216/**
4217 * @param token A token that represents a dependency that should be injected.
4218 * @param flags Control how injection is executed. The flags correspond to injection strategies that
4219 * can be specified with parameter decorators `@Host`, `@Self`, `@SkipSelf`, and `@Optional`.
4220 * @returns the injected value if operation is successful, `null` otherwise.
4221 * @throws if called outside of a supported context.
4222 *
4223 * @publicApi
4224 * @deprecated prefer an options object instead of `InjectFlags`
4225 */
4226export declare function inject<T>(token: ProviderToken<T>, flags?: InjectFlags): T | null;
4227
4228/**
4229 * @param token A token that represents a dependency that should be injected.
4230 * @param options Control how injection is executed. Options correspond to injection strategies
4231 * that can be specified with parameter decorators `@Host`, `@Self`, `@SkipSelf`, and
4232 * `@Optional`.
4233 * @returns the injected value if operation is successful.
4234 * @throws if called outside of a supported context, or if the token is not found.
4235 *
4236 * @publicApi
4237 */
4238export declare function inject<T>(token: ProviderToken<T>, options: InjectOptions & {
4239 optional?: false;
4240}): T;
4241
4242/**
4243 * @param token A token that represents a dependency that should be injected.
4244 * @param options Control how injection is executed. Options correspond to injection strategies
4245 * that can be specified with parameter decorators `@Host`, `@Self`, `@SkipSelf`, and
4246 * `@Optional`.
4247 * @returns the injected value if operation is successful, `null` if the token is not
4248 * found and optional injection has been requested.
4249 * @throws if called outside of a supported context, or if the token is not found and optional
4250 * injection was not requested.
4251 *
4252 * @publicApi
4253 */
4254export declare function inject<T>(token: ProviderToken<T>, options: InjectOptions): T | null;
4255
4256/**
4257 * Type of the Injectable metadata.
4258 *
4259 * @publicApi
4260 */
4261export declare interface Injectable {
4262 /**
4263 * Determines which injectors will provide the injectable.
4264 *
4265 * - `Type<any>` - associates the injectable with an `@NgModule` or other `InjectorType`. This
4266 * option is DEPRECATED.
4267 * - 'null' : Equivalent to `undefined`. The injectable is not provided in any scope automatically
4268 * and must be added to a `providers` array of an [@NgModule](api/core/NgModule#providers),
4269 * [@Component](api/core/Directive#providers) or [@Directive](api/core/Directive#providers).
4270 *
4271 * The following options specify that this injectable should be provided in one of the following
4272 * injectors:
4273 * - 'root' : The application-level injector in most apps.
4274 * - 'platform' : A special singleton platform injector shared by all
4275 * applications on the page.
4276 * - 'any' : Provides a unique instance in each lazy loaded module while all eagerly loaded
4277 * modules share one instance. This option is DEPRECATED.
4278 *
4279 */
4280 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
4281}
4282
4283/**
4284 * Injectable decorator and metadata.
4285 *
4286 * @Annotation
4287 * @publicApi
4288 */
4289export declare const Injectable: InjectableDecorator;
4290
4291/**
4292 * Type of the Injectable decorator / constructor function.
4293 *
4294 * @publicApi
4295 */
4296export declare interface InjectableDecorator {
4297 /**
4298 * Decorator that marks a class as available to be
4299 * provided and injected as a dependency.
4300 *
4301 * @see [Introduction to Services and DI](guide/architecture-services)
4302 * @see [Dependency Injection Guide](guide/dependency-injection)
4303 *
4304 * @usageNotes
4305 *
4306 * Marking a class with `@Injectable` ensures that the compiler
4307 * will generate the necessary metadata to create the class's
4308 * dependencies when the class is injected.
4309 *
4310 * The following example shows how a service class is properly
4311 * marked so that a supporting service can be injected upon creation.
4312 *
4313 * <code-example path="core/di/ts/metadata_spec.ts" region="Injectable"></code-example>
4314 *
4315 */
4316 (): TypeDecorator;
4317 (options?: {
4318 providedIn: Type<any> | 'root' | 'platform' | 'any' | null;
4319 } & InjectableProvider): TypeDecorator;
4320 new (): Injectable;
4321 new (options?: {
4322 providedIn: Type<any> | 'root' | 'platform' | 'any' | null;
4323 } & InjectableProvider): Injectable;
4324}
4325
4326/**
4327 * Injectable providers used in `@Injectable` decorator.
4328 *
4329 * @publicApi
4330 */
4331export declare type InjectableProvider = ValueSansProvider | ExistingSansProvider | StaticClassSansProvider | ConstructorSansProvider | FactorySansProvider | ClassSansProvider;
4332
4333/**
4334 * A `Type` which has a `ɵprov: ɵɵInjectableDeclaration` static field.
4335 *
4336 * `InjectableType`s contain their own Dependency Injection metadata and are usable in an
4337 * `InjectorDef`-based `StaticInjector`.
4338 *
4339 * @publicApi
4340 */
4341export declare interface InjectableType<T> extends Type<T> {
4342 /**
4343 * Opaque type whose structure is highly version dependent. Do not rely on any properties.
4344 */
4345 ɵprov: unknown;
4346}
4347
4348
4349/**
4350 * Type of the Inject decorator / constructor function.
4351 *
4352 * @publicApi
4353 */
4354export declare interface InjectDecorator {
4355 /**
4356 * Parameter decorator on a dependency parameter of a class constructor
4357 * that specifies a custom provider of the dependency.
4358 *
4359 * @usageNotes
4360 * The following example shows a class constructor that specifies a
4361 * custom provider of a dependency using the parameter decorator.
4362 *
4363 * When `@Inject()` is not present, the injector uses the type annotation of the
4364 * parameter as the provider.
4365 *
4366 * <code-example path="core/di/ts/metadata_spec.ts" region="InjectWithoutDecorator">
4367 * </code-example>
4368 *
4369 * @see ["Dependency Injection Guide"](guide/dependency-injection)
4370 *
4371 */
4372 (token: any): any;
4373 new (token: any): Inject;
4374}
4375
4376/**
4377 * Injection flags for DI.
4378 *
4379 * @publicApi
4380 * @deprecated use an options object for `inject` instead.
4381 */
4382export declare enum InjectFlags {
4383 /** Check self and check parent injector if needed */
4384 Default = 0,
4385 /**
4386 * Specifies that an injector should retrieve a dependency from any injector until reaching the
4387 * host element of the current component. (Only used with Element Injector)
4388 */
4389 Host = 1,
4390 /** Don't ascend to ancestors of the node requesting injection. */
4391 Self = 2,
4392 /** Skip the node that is requesting injection. */
4393 SkipSelf = 4,
4394 /** Inject `defaultValue` instead if token not found. */
4395 Optional = 8
4396}
4397
4398/**
4399 * Creates a token that can be used in a DI Provider.
4400 *
4401 * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a
4402 * runtime representation) such as when injecting an interface, callable type, array or
4403 * parameterized type.
4404 *
4405 * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by
4406 * the `Injector`. This provides an additional level of type safety.
4407 *
4408 * ```
4409 * interface MyInterface {...}
4410 * const myInterface = injector.get(new InjectionToken<MyInterface>('SomeToken'));
4411 * // myInterface is inferred to be MyInterface.
4412 * ```
4413 *
4414 * When creating an `InjectionToken`, you can optionally specify a factory function which returns
4415 * (possibly by creating) a default value of the parameterized type `T`. This sets up the
4416 * `InjectionToken` using this factory as a provider as if it was defined explicitly in the
4417 * application's root injector. If the factory function, which takes zero arguments, needs to inject
4418 * dependencies, it can do so using the `inject` function.
4419 * As you can see in the Tree-shakable InjectionToken example below.
4420 *
4421 * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which
4422 * overrides the above behavior and marks the token as belonging to a particular `@NgModule` (note:
4423 * this option is now deprecated). As mentioned above, `'root'` is the default value for
4424 * `providedIn`.
4425 *
4426 * The `providedIn: NgModule` and `providedIn: 'any'` options are deprecated.
4427 *
4428 * @usageNotes
4429 * ### Basic Examples
4430 *
4431 * ### Plain InjectionToken
4432 *
4433 * {@example core/di/ts/injector_spec.ts region='InjectionToken'}
4434 *
4435 * ### Tree-shakable InjectionToken
4436 *
4437 * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
4438 *
4439 *
4440 * @publicApi
4441 */
4442export declare class InjectionToken<T> {
4443 protected _desc: string;
4444 readonly ɵprov: unknown;
4445 /**
4446 * @param _desc Description for the token,
4447 * used only for debugging purposes,
4448 * it should but does not need to be unique
4449 * @param options Options for the token's usage, as described above
4450 */
4451 constructor(_desc: string, options?: {
4452 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
4453 factory: () => T;
4454 });
4455 toString(): string;
4456}
4457
4458/**
4459 * Type of the options argument to `inject`.
4460 *
4461 * @publicApi
4462 */
4463export declare interface InjectOptions {
4464 /**
4465 * Use optional injection, and return `null` if the requested token is not found.
4466 */
4467 optional?: boolean;
4468 /**
4469 * Start injection at the parent of the current injector.
4470 */
4471 skipSelf?: boolean;
4472 /**
4473 * Only query the current injector for the token, and don't fall back to the parent injector if
4474 * it's not found.
4475 */
4476 self?: boolean;
4477 /**
4478 * Stop injection at the host component's injector. Only relevant when injecting from an element
4479 * injector, and a no-op for environment injectors.
4480 */
4481 host?: boolean;
4482}
4483
4484/**
4485 * An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.
4486 *
4487 * Requesting this token instead of `Injector` allows `StaticInjector` to be tree-shaken from a
4488 * project.
4489 *
4490 * @publicApi
4491 */
4492export declare const INJECTOR: InjectionToken<Injector>;
4493
4494/**
4495 * Concrete injectors implement this interface. Injectors are configured
4496 * with [providers](guide/glossary#provider) that associate
4497 * dependencies of various types with [injection tokens](guide/glossary#di-token).
4498 *
4499 * @see ["DI Providers"](guide/dependency-injection-providers).
4500 * @see `StaticProvider`
4501 *
4502 * @usageNotes
4503 *
4504 * The following example creates a service injector instance.
4505 *
4506 * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
4507 *
4508 * ### Usage example
4509 *
4510 * {@example core/di/ts/injector_spec.ts region='Injector'}
4511 *
4512 * `Injector` returns itself when given `Injector` as a token:
4513 *
4514 * {@example core/di/ts/injector_spec.ts region='injectInjector'}
4515 *
4516 * @publicApi
4517 */
4518export declare abstract class Injector {
4519 static THROW_IF_NOT_FOUND: {};
4520 static NULL: Injector;
4521 /**
4522 * Internal note on the `options?: InjectOptions|InjectFlags` override of the `get`
4523 * method: consider dropping the `InjectFlags` part in one of the major versions.
4524 * It can **not** be done in minor/patch, since it's breaking for custom injectors
4525 * that only implement the old `InjectorFlags` interface.
4526 */
4527 /**
4528 * Retrieves an instance from the injector based on the provided token.
4529 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
4530 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
4531 */
4532 abstract get<T>(token: ProviderToken<T>, notFoundValue: undefined, options: InjectOptions & {
4533 optional?: false;
4534 }): T;
4535 /**
4536 * Retrieves an instance from the injector based on the provided token.
4537 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
4538 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
4539 */
4540 abstract get<T>(token: ProviderToken<T>, notFoundValue: null | undefined, options: InjectOptions): T | null;
4541 /**
4542 * Retrieves an instance from the injector based on the provided token.
4543 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
4544 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
4545 */
4546 abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, options?: InjectOptions | InjectFlags): T;
4547 /**
4548 * Retrieves an instance from the injector based on the provided token.
4549 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
4550 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
4551 * @deprecated use object-based flags (`InjectOptions`) instead.
4552 */
4553 abstract get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
4554 /**
4555 * @deprecated from v4.0.0 use ProviderToken<T>
4556 * @suppress {duplicate}
4557 */
4558 abstract get(token: any, notFoundValue?: any): any;
4559 /**
4560 * @deprecated from v5 use the new signature Injector.create(options)
4561 */
4562 static create(providers: StaticProvider[], parent?: Injector): Injector;
4563 /**
4564 * Creates a new injector instance that provides one or more dependencies,
4565 * according to a given type or types of `StaticProvider`.
4566 *
4567 * @param options An object with the following properties:
4568 * * `providers`: An array of providers of the [StaticProvider type](api/core/StaticProvider).
4569 * * `parent`: (optional) A parent injector.
4570 * * `name`: (optional) A developer-defined identifying name for the new injector.
4571 *
4572 * @returns The new injector instance.
4573 *
4574 */
4575 static create(options: {
4576 providers: StaticProvider[];
4577 parent?: Injector;
4578 name?: string;
4579 }): Injector;
4580 /** @nocollapse */
4581 static ɵprov: unknown;
4582}
4583
4584declare const INJECTOR_2 = 9;
4585
4586declare type InjectorScope = 'root' | 'platform' | 'environment';
4587
4588/**
4589 * A type which has an `InjectorDef` static field.
4590 *
4591 * `InjectorTypes` can be used to configure a `StaticInjector`.
4592 *
4593 * This is an opaque type whose structure is highly version dependent. Do not rely on any
4594 * properties.
4595 *
4596 * @publicApi
4597 */
4598export declare interface InjectorType<T> extends Type<T> {
4599 ɵfac?: unknown;
4600 ɵinj: unknown;
4601}
4602
4603/**
4604 * Describes the `InjectorDef` equivalent of a `ModuleWithProviders`, an `InjectorType` with an
4605 * associated array of providers.
4606 *
4607 * Objects of this type can be listed in the imports section of an `InjectorDef`.
4608 *
4609 * NOTE: This is a private type and should not be exported
4610 */
4611declare interface InjectorTypeWithProviders<T> {
4612 ngModule: InjectorType<T>;
4613 providers?: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | EnvironmentProviders | any[])[];
4614}
4615
4616/**
4617 * Type of metadata for an `Input` property.
4618 *
4619 * @publicApi
4620 */
4621export declare interface Input {
4622 /**
4623 * The name of the DOM property to which the input property is bound.
4624 */
4625 alias?: string;
4626 /**
4627 * Whether the input is required for the directive to function.
4628 */
4629 required?: boolean;
4630}
4631
4632/**
4633 * @Annotation
4634 * @publicApi
4635 */
4636export declare const Input: InputDecorator;
4637
4638/**
4639 * @publicApi
4640 */
4641export declare interface InputDecorator {
4642 /**
4643 * Decorator that marks a class field as an input property and supplies configuration metadata.
4644 * The input property is bound to a DOM property in the template. During change detection,
4645 * Angular automatically updates the data property with the DOM property's value.
4646 *
4647 * @usageNotes
4648 *
4649 * You can supply an optional name to use in templates when the
4650 * component is instantiated, that maps to the
4651 * name of the bound property. By default, the original
4652 * name of the bound property is used for input binding.
4653 *
4654 * The following example creates a component with two input properties,
4655 * one of which is given a special binding name.
4656 *
4657 * ```typescript
4658 * @Component({
4659 * selector: 'bank-account',
4660 * template: `
4661 * Bank Name: {{bankName}}
4662 * Account Id: {{id}}
4663 * `
4664 * })
4665 * class BankAccount {
4666 * // This property is bound using its original name.
4667 * @Input() bankName: string;
4668 * // this property value is bound to a different property name
4669 * // when this component is instantiated in a template.
4670 * @Input('account-id') id: string;
4671 *
4672 * // this property is not bound, and is not automatically updated by Angular
4673 * normalizedBankName: string;
4674 * }
4675 *
4676 * @Component({
4677 * selector: 'app',
4678 * template: `
4679 * <bank-account bankName="RBC" account-id="4747"></bank-account>
4680 * `
4681 * })
4682 * class App {}
4683 * ```
4684 *
4685 * @see [Input and Output properties](guide/inputs-outputs)
4686 */
4687 (arg?: string | Input): any;
4688 new (arg?: string | Input): any;
4689}
4690
4691/**
4692 * See `TNode.insertBeforeIndex`
4693 */
4694declare type InsertBeforeIndex = null | number | number[];
4695
4696declare interface InternalNgModuleRef<T> extends NgModuleRef<T> {
4697 _bootstrapComponents: Type<any>[];
4698}
4699
4700declare interface InternalViewRef extends ViewRef {
4701 detachFromAppRef(): void;
4702 attachToAppRef(appRef: ViewRefTracker): void;
4703}
4704
4705
4706/**
4707 * Returns whether Angular is in development mode.
4708 *
4709 * By default, this is true, unless `enableProdMode` is invoked prior to calling this method or the
4710 * application is built using the Angular CLI with the `optimization` option.
4711 * @see {@link cli/build ng build}
4712 *
4713 * @publicApi
4714 */
4715export declare function isDevMode(): boolean;
4716
4717/**
4718 * Checks if the given `value` is a reactive `Signal`.
4719 *
4720 * @developerPreview
4721 */
4722export declare function isSignal(value: unknown): value is Signal<unknown>;
4723
4724/**
4725 * Checks whether a given Component, Directive or Pipe is marked as standalone.
4726 * This will return false if passed anything other than a Component, Directive, or Pipe class
4727 * See [this guide](/guide/standalone-components) for additional information:
4728 *
4729 * @param type A reference to a Component, Directive or Pipe.
4730 * @publicApi
4731 */
4732export declare function isStandalone(type: Type<unknown>): boolean;
4733
4734/**
4735 * Record representing the item change information.
4736 *
4737 * @publicApi
4738 */
4739export declare interface IterableChangeRecord<V> {
4740 /** Current index of the item in `Iterable` or null if removed. */
4741 readonly currentIndex: number | null;
4742 /** Previous index of the item in `Iterable` or null if added. */
4743 readonly previousIndex: number | null;
4744 /** The item. */
4745 readonly item: V;
4746 /** Track by identity as computed by the `TrackByFunction`. */
4747 readonly trackById: any;
4748}
4749
4750declare class IterableChangeRecord_<V> implements IterableChangeRecord<V> {
4751 item: V;
4752 trackById: any;
4753 currentIndex: number | null;
4754 previousIndex: number | null;
4755 constructor(item: V, trackById: any);
4756}
4757
4758/**
4759 * An object describing the changes in the `Iterable` collection since last time
4760 * `IterableDiffer#diff()` was invoked.
4761 *
4762 * @publicApi
4763 */
4764export declare interface IterableChanges<V> {
4765 /**
4766 * Iterate over all changes. `IterableChangeRecord` will contain information about changes
4767 * to each item.
4768 */
4769 forEachItem(fn: (record: IterableChangeRecord<V>) => void): void;
4770 /**
4771 * Iterate over a set of operations which when applied to the original `Iterable` will produce the
4772 * new `Iterable`.
4773 *
4774 * NOTE: These are not necessarily the actual operations which were applied to the original
4775 * `Iterable`, rather these are a set of computed operations which may not be the same as the
4776 * ones applied.
4777 *
4778 * @param record A change which needs to be applied
4779 * @param previousIndex The `IterableChangeRecord#previousIndex` of the `record` refers to the
4780 * original `Iterable` location, where as `previousIndex` refers to the transient location
4781 * of the item, after applying the operations up to this point.
4782 * @param currentIndex The `IterableChangeRecord#currentIndex` of the `record` refers to the
4783 * original `Iterable` location, where as `currentIndex` refers to the transient location
4784 * of the item, after applying the operations up to this point.
4785 */
4786 forEachOperation(fn: (record: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void;
4787 /**
4788 * Iterate over changes in the order of original `Iterable` showing where the original items
4789 * have moved.
4790 */
4791 forEachPreviousItem(fn: (record: IterableChangeRecord<V>) => void): void;
4792 /** Iterate over all added items. */
4793 forEachAddedItem(fn: (record: IterableChangeRecord<V>) => void): void;
4794 /** Iterate over all moved items. */
4795 forEachMovedItem(fn: (record: IterableChangeRecord<V>) => void): void;
4796 /** Iterate over all removed items. */
4797 forEachRemovedItem(fn: (record: IterableChangeRecord<V>) => void): void;
4798 /**
4799 * Iterate over all items which had their identity (as computed by the `TrackByFunction`)
4800 * changed.
4801 */
4802 forEachIdentityChange(fn: (record: IterableChangeRecord<V>) => void): void;
4803}
4804
4805/**
4806 * A strategy for tracking changes over time to an iterable. Used by {@link NgForOf} to
4807 * respond to changes in an iterable by effecting equivalent changes in the DOM.
4808 *
4809 * @publicApi
4810 */
4811export declare interface IterableDiffer<V> {
4812 /**
4813 * Compute a difference between the previous state and the new `object` state.
4814 *
4815 * @param object containing the new value.
4816 * @returns an object describing the difference. The return value is only valid until the next
4817 * `diff()` invocation.
4818 */
4819 diff(object: NgIterable<V> | undefined | null): IterableChanges<V> | null;
4820}
4821
4822/**
4823 * Provides a factory for {@link IterableDiffer}.
4824 *
4825 * @publicApi
4826 */
4827export declare interface IterableDifferFactory {
4828 supports(objects: any): boolean;
4829 create<V>(trackByFn?: TrackByFunction<V>): IterableDiffer<V>;
4830}
4831
4832/**
4833 * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.
4834 *
4835 * @publicApi
4836 */
4837export declare class IterableDiffers {
4838 private factories;
4839 /** @nocollapse */
4840 static ɵprov: unknown;
4841 constructor(factories: IterableDifferFactory[]);
4842 static create(factories: IterableDifferFactory[], parent?: IterableDiffers): IterableDiffers;
4843 /**
4844 * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the
4845 * inherited {@link IterableDiffers} instance with the provided factories and return a new
4846 * {@link IterableDiffers} instance.
4847 *
4848 * @usageNotes
4849 * ### Example
4850 *
4851 * The following example shows how to extend an existing list of factories,
4852 * which will only be applied to the injector for this component and its children.
4853 * This step is all that's required to make a new {@link IterableDiffer} available.
4854 *
4855 * ```
4856 * @Component({
4857 * viewProviders: [
4858 * IterableDiffers.extend([new ImmutableListDiffer()])
4859 * ]
4860 * })
4861 * ```
4862 */
4863 static extend(factories: IterableDifferFactory[]): StaticProvider;
4864 find(iterable: any): IterableDifferFactory;
4865}
4866
4867/**
4868 * The existence of this constant (in this particular file) informs the Angular compiler that the
4869 * current program is actually @angular/core, which needs to be compiled specially.
4870 */
4871declare const ITS_JUST_ANGULAR = true;
4872
4873/**
4874 * `KeyValueArray` is an array where even positions contain keys and odd positions contain values.
4875 *
4876 * `KeyValueArray` provides a very efficient way of iterating over its contents. For small
4877 * sets (~10) the cost of binary searching an `KeyValueArray` has about the same performance
4878 * characteristics that of a `Map` with significantly better memory footprint.
4879 *
4880 * If used as a `Map` the keys are stored in alphabetical order so that they can be binary searched
4881 * for retrieval.
4882 *
4883 * See: `keyValueArraySet`, `keyValueArrayGet`, `keyValueArrayIndexOf`, `keyValueArrayDelete`.
4884 */
4885declare interface KeyValueArray<VALUE> extends Array<VALUE | string> {
4886 __brand__: 'array-map';
4887}
4888
4889/**
4890 * Record representing the item change information.
4891 *
4892 * @publicApi
4893 */
4894export declare interface KeyValueChangeRecord<K, V> {
4895 /**
4896 * Current key in the Map.
4897 */
4898 readonly key: K;
4899 /**
4900 * Current value for the key or `null` if removed.
4901 */
4902 readonly currentValue: V | null;
4903 /**
4904 * Previous value for the key or `null` if added.
4905 */
4906 readonly previousValue: V | null;
4907}
4908
4909/**
4910 * An object describing the changes in the `Map` or `{[k:string]: string}` since last time
4911 * `KeyValueDiffer#diff()` was invoked.
4912 *
4913 * @publicApi
4914 */
4915export declare interface KeyValueChanges<K, V> {
4916 /**
4917 * Iterate over all changes. `KeyValueChangeRecord` will contain information about changes
4918 * to each item.
4919 */
4920 forEachItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4921 /**
4922 * Iterate over changes in the order of original Map showing where the original items
4923 * have moved.
4924 */
4925 forEachPreviousItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4926 /**
4927 * Iterate over all keys for which values have changed.
4928 */
4929 forEachChangedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4930 /**
4931 * Iterate over all added items.
4932 */
4933 forEachAddedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4934 /**
4935 * Iterate over all removed items.
4936 */
4937 forEachRemovedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
4938}
4939
4940/**
4941 * A differ that tracks changes made to an object over time.
4942 *
4943 * @publicApi
4944 */
4945export declare interface KeyValueDiffer<K, V> {
4946 /**
4947 * Compute a difference between the previous state and the new `object` state.
4948 *
4949 * @param object containing the new value.
4950 * @returns an object describing the difference. The return value is only valid until the next
4951 * `diff()` invocation.
4952 */
4953 diff(object: Map<K, V>): KeyValueChanges<K, V> | null;
4954 /**
4955 * Compute a difference between the previous state and the new `object` state.
4956 *
4957 * @param object containing the new value.
4958 * @returns an object describing the difference. The return value is only valid until the next
4959 * `diff()` invocation.
4960 */
4961 diff(object: {
4962 [key: string]: V;
4963 }): KeyValueChanges<string, V> | null;
4964}
4965
4966/**
4967 * Provides a factory for {@link KeyValueDiffer}.
4968 *
4969 * @publicApi
4970 */
4971export declare interface KeyValueDifferFactory {
4972 /**
4973 * Test to see if the differ knows how to diff this kind of object.
4974 */
4975 supports(objects: any): boolean;
4976 /**
4977 * Create a `KeyValueDiffer`.
4978 */
4979 create<K, V>(): KeyValueDiffer<K, V>;
4980}
4981
4982/**
4983 * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.
4984 *
4985 * @publicApi
4986 */
4987export declare class KeyValueDiffers {
4988 /** @nocollapse */
4989 static ɵprov: unknown;
4990 /**
4991 * @deprecated v4.0.0 - Should be private.
4992 */
4993 factories: KeyValueDifferFactory[];
4994 constructor(factories: KeyValueDifferFactory[]);
4995 static create<S>(factories: KeyValueDifferFactory[], parent?: KeyValueDiffers): KeyValueDiffers;
4996 /**
4997 * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the
4998 * inherited {@link KeyValueDiffers} instance with the provided factories and return a new
4999 * {@link KeyValueDiffers} instance.
5000 *
5001 * @usageNotes
5002 * ### Example
5003 *
5004 * The following example shows how to extend an existing list of factories,
5005 * which will only be applied to the injector for this component and its children.
5006 * This step is all that's required to make a new {@link KeyValueDiffer} available.
5007 *
5008 * ```
5009 * @Component({
5010 * viewProviders: [
5011 * KeyValueDiffers.extend([new ImmutableMapDiffer()])
5012 * ]
5013 * })
5014 * ```
5015 */
5016 static extend<S>(factories: KeyValueDifferFactory[]): StaticProvider;
5017 find(kv: any): KeyValueDifferFactory;
5018}
5019
5020/**
5021 * The state associated with a container.
5022 *
5023 * This is an array so that its structure is closer to LView. This helps
5024 * when traversing the view tree (which is a mix of containers and component
5025 * views), so we can jump to viewOrContainer[NEXT] in the same way regardless
5026 * of type.
5027 */
5028declare interface LContainer extends Array<any> {
5029 /**
5030 * The host element of this LContainer.
5031 *
5032 * The host could be an LView if this container is on a component node.
5033 * In that case, the component LView is its HOST.
5034 */
5035 readonly [HOST]: RElement | RComment | LView;
5036 /**
5037 * This is a type field which allows us to differentiate `LContainer` from `StylingContext` in an
5038 * efficient way. The value is always set to `true`
5039 */
5040 [TYPE]: true;
5041 /**
5042 * Flag to signify that this `LContainer` may have transplanted views which need to be change
5043 * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
5044 *
5045 * This flag, once set, is never unset for the `LContainer`.
5046 */
5047 [HAS_TRANSPLANTED_VIEWS]: boolean;
5048 /**
5049 * Access to the parent view is necessary so we can propagate back
5050 * up from inside a container to parent[NEXT].
5051 */
5052 [PARENT]: LView;
5053 /**
5054 * This allows us to jump from a container to a sibling container or component
5055 * view with the same parent, so we can remove listeners efficiently.
5056 */
5057 [NEXT]: LView | LContainer | null;
5058 /**
5059 * The number of direct transplanted views which need a refresh or have descendants themselves
5060 * that need a refresh but have not marked their ancestors as Dirty. This tells us that during
5061 * change detection we should still descend to find those children to refresh, even if the parents
5062 * are not `Dirty`/`CheckAlways`.
5063 */
5064 [DESCENDANT_VIEWS_TO_REFRESH]: number;
5065 /**
5066 * A collection of views created based on the underlying `<ng-template>` element but inserted into
5067 * a different `LContainer`. We need to track views created from a given declaration point since
5068 * queries collect matches from the embedded view declaration point and _not_ the insertion point.
5069 */
5070 [MOVED_VIEWS]: LView[] | null;
5071 /**
5072 * Pointer to the `TNode` which represents the host of the container.
5073 */
5074 [T_HOST]: TNode;
5075 /** The comment element that serves as an anchor for this LContainer. */
5076 [NATIVE]: RComment;
5077 /**
5078 * Array of `ViewRef`s used by any `ViewContainerRef`s that point to this container.
5079 *
5080 * This is lazily initialized by `ViewContainerRef` when the first view is inserted.
5081 *
5082 * NOTE: This is stored as `any[]` because render3 should really not be aware of `ViewRef` and
5083 * doing so creates circular dependency.
5084 */
5085 [VIEW_REFS]: unknown[] | null;
5086 /**
5087 * Array of dehydrated views within this container.
5088 *
5089 * This information is used during the hydration process on the client.
5090 * The hydration logic tries to find a matching dehydrated view, "claim" it
5091 * and use this information to do further matching. After that, this "claimed"
5092 * view is removed from the list. The remaining "unclaimed" views are
5093 * "garbage-collected" later on, i.e. removed from the DOM once the hydration
5094 * logic finishes.
5095 */
5096 [DEHYDRATED_VIEWS]: DehydratedContainerView[] | null;
5097}
5098
5099/**
5100 * Provide this token to set the locale of your application.
5101 * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,
5102 * DecimalPipe and PercentPipe) and by ICU expressions.
5103 *
5104 * See the [i18n guide](guide/i18n-common-locale-id) for more information.
5105 *
5106 * @usageNotes
5107 * ### Example
5108 *
5109 * ```typescript
5110 * import { LOCALE_ID } from '@angular/core';
5111 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
5112 * import { AppModule } from './app/app.module';
5113 *
5114 * platformBrowserDynamic().bootstrapModule(AppModule, {
5115 * providers: [{provide: LOCALE_ID, useValue: 'en-US' }]
5116 * });
5117 * ```
5118 *
5119 * @publicApi
5120 */
5121export declare const LOCALE_ID: InjectionToken<string>;
5122
5123/**
5124 * Type for a function that extracts a value for a local refs.
5125 * Example:
5126 * - `<div #nativeDivEl>` - `nativeDivEl` should point to the native `<div>` element;
5127 * - `<ng-template #tplRef>` - `tplRef` should point to the `TemplateRef` instance;
5128 */
5129declare type LocalRefExtractor = (tNode: TNodeWithLocalRefs, currentView: LView) => any;
5130
5131/**
5132 * lQueries represent a collection of individual LQuery objects tracked in a given view.
5133 */
5134declare interface LQueries {
5135 /**
5136 * A collection of queries tracked in a given view.
5137 */
5138 queries: LQuery<any>[];
5139 /**
5140 * A method called when a new embedded view is created. As a result a set of LQueries applicable
5141 * for a new embedded view is instantiated (cloned) from the declaration view.
5142 * @param tView
5143 */
5144 createEmbeddedView(tView: TView): LQueries | null;
5145 /**
5146 * A method called when an embedded view is inserted into a container. As a result all impacted
5147 * `LQuery` objects (and associated `QueryList`) are marked as dirty.
5148 * @param tView
5149 */
5150 insertView(tView: TView): void;
5151 /**
5152 * A method called when an embedded view is detached from a container. As a result all impacted
5153 * `LQuery` objects (and associated `QueryList`) are marked as dirty.
5154 * @param tView
5155 */
5156 detachView(tView: TView): void;
5157}
5158
5159/**
5160 * An interface that represents query-related information specific to a view instance. Most notably
5161 * it contains:
5162 * - materialized query matches;
5163 * - a pointer to a QueryList where materialized query results should be reported.
5164 */
5165declare interface LQuery<T> {
5166 /**
5167 * Materialized query matches for a given view only (!). Results are initialized lazily so the
5168 * array of matches is set to `null` initially.
5169 */
5170 matches: (T | null)[] | null;
5171 /**
5172 * A QueryList where materialized query results should be reported.
5173 */
5174 queryList: QueryList<T>;
5175 /**
5176 * Clones an LQuery for an embedded view. A cloned query shares the same `QueryList` but has a
5177 * separate collection of materialized matches.
5178 */
5179 clone(): LQuery<T>;
5180 /**
5181 * Called when an embedded view, impacting results of this query, is inserted or removed.
5182 */
5183 setDirty(): void;
5184}
5185
5186/**
5187 * `LView` stores all of the information needed to process the instructions as
5188 * they are invoked from the template. Each embedded view and component view has its
5189 * own `LView`. When processing a particular view, we set the `viewData` to that
5190 * `LView`. When that view is done processing, the `viewData` is set back to
5191 * whatever the original `viewData` was before (the parent `LView`).
5192 *
5193 * Keeping separate state for each view facilities view insertion / deletion, so we
5194 * don't have to edit the data array based on which views are present.
5195 */
5196declare interface LView<T = unknown> extends Array<any> {
5197 /**
5198 * The node into which this `LView` is inserted.
5199 */
5200 [HOST]: RElement | null;
5201 /**
5202 * The static data for this view. We need a reference to this so we can easily walk up the
5203 * node tree in DI and get the TView.data array associated with a node (where the
5204 * directive defs are stored).
5205 */
5206 readonly [TVIEW]: TView;
5207 /** Flags for this view. See LViewFlags for more info. */
5208 [FLAGS]: LViewFlags;
5209 /**
5210 * This may store an {@link LView} or {@link LContainer}.
5211 *
5212 * `LView` - The parent view. This is needed when we exit the view and must restore the previous
5213 * LView. Without this, the render method would have to keep a stack of
5214 * views as it is recursively rendering templates.
5215 *
5216 * `LContainer` - The current view is part of a container, and is an embedded view.
5217 */
5218 [PARENT]: LView | LContainer | null;
5219 /**
5220 *
5221 * The next sibling LView or LContainer.
5222 *
5223 * Allows us to propagate between sibling view states that aren't in the same
5224 * container. Embedded views already have a node.next, but it is only set for
5225 * views in the same container. We need a way to link component views and views
5226 * across containers as well.
5227 */
5228 [NEXT]: LView | LContainer | null;
5229 /** Queries active for this view - nodes from a view are reported to those queries. */
5230 [QUERIES]: LQueries | null;
5231 /**
5232 * Store the `TNode` of the location where the current `LView` is inserted into.
5233 *
5234 * Given:
5235 * ```
5236 * <div>
5237 * <ng-template><span></span></ng-template>
5238 * </div>
5239 * ```
5240 *
5241 * We end up with two `TView`s.
5242 * - `parent` `TView` which contains `<div><!-- anchor --></div>`
5243 * - `child` `TView` which contains `<span></span>`
5244 *
5245 * Typically the `child` is inserted into the declaration location of the `parent`, but it can be
5246 * inserted anywhere. Because it can be inserted anywhere it is not possible to store the
5247 * insertion information in the `TView` and instead we must store it in the `LView[T_HOST]`.
5248 *
5249 * So to determine where is our insertion parent we would execute:
5250 * ```
5251 * const parentLView = lView[PARENT];
5252 * const parentTNode = lView[T_HOST];
5253 * const insertionParent = parentLView[parentTNode.index];
5254 * ```
5255 *
5256 *
5257 * If `null`, this is the root view of an application (root component is in this view) and it has
5258 * no parents.
5259 */
5260 [T_HOST]: TNode | null;
5261 /**
5262 * When a view is destroyed, listeners need to be released and outputs need to be
5263 * unsubscribed. This context array stores both listener functions wrapped with
5264 * their context and output subscription instances for a particular view.
5265 *
5266 * These change per LView instance, so they cannot be stored on TView. Instead,
5267 * TView.cleanup saves an index to the necessary context in this array.
5268 *
5269 * After `LView` is created it is possible to attach additional instance specific functions at the
5270 * end of the `lView[CLEANUP]` because we know that no more `T` level cleanup functions will be
5271 * added here.
5272 */
5273 [CLEANUP]: any[] | null;
5274 /**
5275 * - For dynamic views, this is the context with which to render the template (e.g.
5276 * `NgForContext`), or `{}` if not defined explicitly.
5277 * - For root view of the root component it's a reference to the component instance itself.
5278 * - For components, the context is a reference to the component instance itself.
5279 * - For inline views, the context is null.
5280 */
5281 [CONTEXT]: T;
5282 /** An optional Module Injector to be used as fall back after Element Injectors are consulted. */
5283 readonly [INJECTOR_2]: Injector | null;
5284 /**
5285 * Contextual data that is shared across multiple instances of `LView` in the same application.
5286 */
5287 [ENVIRONMENT]: LViewEnvironment;
5288 /** Renderer to be used for this view. */
5289 [RENDERER]: Renderer;
5290 /**
5291 * Reference to the first LView or LContainer beneath this LView in
5292 * the hierarchy.
5293 *
5294 * Necessary to store this so views can traverse through their nested views
5295 * to remove listeners and call onDestroy callbacks.
5296 */
5297 [CHILD_HEAD]: LView | LContainer | null;
5298 /**
5299 * The last LView or LContainer beneath this LView in the hierarchy.
5300 *
5301 * The tail allows us to quickly add a new state to the end of the view list
5302 * without having to propagate starting from the first child.
5303 */
5304 [CHILD_TAIL]: LView | LContainer | null;
5305 /**
5306 * View where this view's template was declared.
5307 *
5308 * The template for a dynamically created view may be declared in a different view than
5309 * it is inserted. We already track the "insertion view" (view where the template was
5310 * inserted) in LView[PARENT], but we also need access to the "declaration view"
5311 * (view where the template was declared). Otherwise, we wouldn't be able to call the
5312 * view's template function with the proper contexts. Context should be inherited from
5313 * the declaration view tree, not the insertion view tree.
5314 *
5315 * Example (AppComponent template):
5316 *
5317 * <ng-template #foo></ng-template> <-- declared here -->
5318 * <some-comp [tpl]="foo"></some-comp> <-- inserted inside this component -->
5319 *
5320 * The <ng-template> above is declared in the AppComponent template, but it will be passed into
5321 * SomeComp and inserted there. In this case, the declaration view would be the AppComponent,
5322 * but the insertion view would be SomeComp. When we are removing views, we would want to
5323 * traverse through the insertion view to clean up listeners. When we are calling the
5324 * template function during change detection, we need the declaration view to get inherited
5325 * context.
5326 */
5327 [DECLARATION_VIEW]: LView | null;
5328 /**
5329 * Points to the declaration component view, used to track transplanted `LView`s.
5330 *
5331 * See: `DECLARATION_VIEW` which points to the actual `LView` where it was declared, whereas
5332 * `DECLARATION_COMPONENT_VIEW` points to the component which may not be same as
5333 * `DECLARATION_VIEW`.
5334 *
5335 * Example:
5336 * ```
5337 * <#VIEW #myComp>
5338 * <div *ngIf="true">
5339 * <ng-template #myTmpl>...</ng-template>
5340 * </div>
5341 * </#VIEW>
5342 * ```
5343 * In the above case `DECLARATION_VIEW` for `myTmpl` points to the `LView` of `ngIf` whereas
5344 * `DECLARATION_COMPONENT_VIEW` points to `LView` of the `myComp` which owns the template.
5345 *
5346 * The reason for this is that all embedded views are always check-always whereas the component
5347 * view can be check-always or on-push. When we have a transplanted view it is important to
5348 * determine if we have transplanted a view from check-always declaration to on-push insertion
5349 * point. In such a case the transplanted view needs to be added to the `LContainer` in the
5350 * declared `LView` and CD during the declared view CD (in addition to the CD at the insertion
5351 * point.) (Any transplanted views which are intra Component are of no interest because the CD
5352 * strategy of declaration and insertion will always be the same, because it is the same
5353 * component.)
5354 *
5355 * Queries already track moved views in `LView[DECLARATION_LCONTAINER]` and
5356 * `LContainer[MOVED_VIEWS]`. However the queries also track `LView`s which moved within the same
5357 * component `LView`. Transplanted views are a subset of moved views, and we use
5358 * `DECLARATION_COMPONENT_VIEW` to differentiate them. As in this example.
5359 *
5360 * Example showing intra component `LView` movement.
5361 * ```
5362 * <#VIEW #myComp>
5363 * <div *ngIf="condition; then thenBlock else elseBlock"></div>
5364 * <ng-template #thenBlock>Content to render when condition is true.</ng-template>
5365 * <ng-template #elseBlock>Content to render when condition is false.</ng-template>
5366 * </#VIEW>
5367 * ```
5368 * The `thenBlock` and `elseBlock` is moved but not transplanted.
5369 *
5370 * Example showing inter component `LView` movement (transplanted view).
5371 * ```
5372 * <#VIEW #myComp>
5373 * <ng-template #myTmpl>...</ng-template>
5374 * <insertion-component [template]="myTmpl"></insertion-component>
5375 * </#VIEW>
5376 * ```
5377 * In the above example `myTmpl` is passed into a different component. If `insertion-component`
5378 * instantiates `myTmpl` and `insertion-component` is on-push then the `LContainer` needs to be
5379 * marked as containing transplanted views and those views need to be CD as part of the
5380 * declaration CD.
5381 *
5382 *
5383 * When change detection runs, it iterates over `[MOVED_VIEWS]` and CDs any child `LView`s where
5384 * the `DECLARATION_COMPONENT_VIEW` of the current component and the child `LView` does not match
5385 * (it has been transplanted across components.)
5386 *
5387 * Note: `[DECLARATION_COMPONENT_VIEW]` points to itself if the LView is a component view (the
5388 * simplest / most common case).
5389 *
5390 * see also:
5391 * - https://hackmd.io/@mhevery/rJUJsvv9H write up of the problem
5392 * - `LContainer[HAS_TRANSPLANTED_VIEWS]` which marks which `LContainer` has transplanted views.
5393 * - `LContainer[TRANSPLANT_HEAD]` and `LContainer[TRANSPLANT_TAIL]` storage for transplanted
5394 * - `LView[DECLARATION_LCONTAINER]` similar problem for queries
5395 * - `LContainer[MOVED_VIEWS]` similar problem for queries
5396 */
5397 [DECLARATION_COMPONENT_VIEW]: LView;
5398 /**
5399 * A declaration point of embedded views (ones instantiated based on the content of a
5400 * <ng-template>), null for other types of views.
5401 *
5402 * We need to track all embedded views created from a given declaration point so we can prepare
5403 * query matches in a proper order (query matches are ordered based on their declaration point and
5404 * _not_ the insertion point).
5405 */
5406 [DECLARATION_LCONTAINER]: LContainer | null;
5407 /**
5408 * More flags for this view. See PreOrderHookFlags for more info.
5409 */
5410 [PREORDER_HOOK_FLAGS]: PreOrderHookFlags;
5411 /**
5412 * The number of direct transplanted views which need a refresh or have descendants themselves
5413 * that need a refresh but have not marked their ancestors as Dirty. This tells us that during
5414 * change detection we should still descend to find those children to refresh, even if the parents
5415 * are not `Dirty`/`CheckAlways`.
5416 */
5417 [DESCENDANT_VIEWS_TO_REFRESH]: number;
5418 /** Unique ID of the view. Used for `__ngContext__` lookups in the `LView` registry. */
5419 [ID]: number;
5420 /**
5421 * A container related to hydration annotation information that's associated with this LView.
5422 */
5423 [HYDRATION]: DehydratedView | null;
5424 /**
5425 * Optional injector assigned to embedded views that takes
5426 * precedence over the element and module injectors.
5427 */
5428 readonly [EMBEDDED_VIEW_INJECTOR]: Injector | null;
5429 /**
5430 * A collection of callbacks functions that are executed when a given LView is destroyed. Those
5431 * are user defined, LView-specific destroy callbacks that don't have any corresponding TView
5432 * entries.
5433 */
5434 [ON_DESTROY_HOOKS]: Array<() => void> | null;
5435 /**
5436 * The `Consumer` for this `LView`'s template so that signal reads can be tracked.
5437 *
5438 * This is initially `null` and gets assigned a consumer after template execution
5439 * if any signals were read.
5440 */
5441 [REACTIVE_TEMPLATE_CONSUMER]: ReactiveLViewConsumer | null;
5442 /**
5443 * Same as REACTIVE_TEMPLATE_CONSUMER, but for the host bindings of the LView.
5444 */
5445 [REACTIVE_HOST_BINDING_CONSUMER]: ReactiveLViewConsumer | null;
5446}
5447
5448/**
5449 * Contextual data that is shared across multiple instances of `LView` in the same application.
5450 */
5451declare interface LViewEnvironment {
5452 /** Factory to be used for creating Renderer. */
5453 rendererFactory: RendererFactory;
5454 /** An optional custom sanitizer. */
5455 sanitizer: Sanitizer | null;
5456 /** Container for reactivity system `effect`s. */
5457 effectManager: EffectManager | null;
5458}
5459
5460/** Flags associated with an LView (saved in LView[FLAGS]) */
5461declare const enum LViewFlags {
5462 /** The state of the init phase on the first 2 bits */
5463 InitPhaseStateIncrementer = 1,
5464 InitPhaseStateMask = 3,
5465 /**
5466 * Whether or not the view is in creationMode.
5467 *
5468 * This must be stored in the view rather than using `data` as a marker so that
5469 * we can properly support embedded views. Otherwise, when exiting a child view
5470 * back into the parent view, `data` will be defined and `creationMode` will be
5471 * improperly reported as false.
5472 */
5473 CreationMode = 4,
5474 /**
5475 * Whether or not this LView instance is on its first processing pass.
5476 *
5477 * An LView instance is considered to be on its "first pass" until it
5478 * has completed one creation mode run and one update mode run. At this
5479 * time, the flag is turned off.
5480 */
5481 FirstLViewPass = 8,
5482 /** Whether this view has default change detection strategy (checks always) or onPush */
5483 CheckAlways = 16,
5484 /** Whether there are any i18n blocks inside this LView. */
5485 HasI18n = 32,
5486 /** Whether or not this view is currently dirty (needing check) */
5487 Dirty = 64,
5488 /** Whether or not this view is currently attached to change detection tree. */
5489 Attached = 128,
5490 /** Whether or not this view is destroyed. */
5491 Destroyed = 256,
5492 /** Whether or not this view is the root view */
5493 IsRoot = 512,
5494 /**
5495 * Whether this moved LView was needs to be refreshed. Similar to the Dirty flag, but used for
5496 * transplanted and signal views where the parent/ancestor views are not marked dirty as well.
5497 * i.e. "Refresh just this view". Used in conjunction with the DESCENDANT_VIEWS_TO_REFRESH
5498 * counter.
5499 */
5500 RefreshView = 1024,
5501 /** Indicates that the view **or any of its ancestors** have an embedded view injector. */
5502 HasEmbeddedViewInjector = 2048,
5503 /**
5504 * Index of the current init phase on last 21 bits
5505 */
5506 IndexWithinInitPhaseIncrementer = 4096,
5507 /**
5508 * This is the count of the bits the 1 was shifted above (base 10)
5509 */
5510 IndexWithinInitPhaseShift = 12,
5511 IndexWithinInitPhaseReset = 4095
5512}
5513
5514/**
5515 * Wrap an array of `Provider`s into `EnvironmentProviders`, preventing them from being accidentally
5516 * referenced in `@Component in a component injector.
5517 */
5518export declare function makeEnvironmentProviders(providers: (Provider | EnvironmentProviders)[]): EnvironmentProviders;
5519
5520/**
5521 * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.
5522 *
5523 * Example:
5524 *
5525 * ```
5526 * const COUNTER_KEY = makeStateKey<number>('counter');
5527 * let value = 10;
5528 *
5529 * transferState.set(COUNTER_KEY, value);
5530 * ```
5531 *
5532 * @publicApi
5533 */
5534export declare function makeStateKey<T = void>(key: string): StateKey<T>;
5535
5536/**
5537 * Merge multiple application configurations from left to right.
5538 *
5539 * @param configs Two or more configurations to be merged.
5540 * @returns A merged [ApplicationConfig](api/core/ApplicationConfig).
5541 *
5542 * @publicApi
5543 */
5544export declare function mergeApplicationConfig(...configs: ApplicationConfig[]): ApplicationConfig;
5545
5546/**
5547 * Use this enum at bootstrap as an option of `bootstrapModule` to define the strategy
5548 * that the compiler should use in case of missing translations:
5549 * - Error: throw if you have missing translations.
5550 * - Warning (default): show a warning in the console and/or shell.
5551 * - Ignore: do nothing.
5552 *
5553 * See the [i18n guide](guide/i18n-common-merge#report-missing-translations) for more information.
5554 *
5555 * @usageNotes
5556 * ### Example
5557 * ```typescript
5558 * import { MissingTranslationStrategy } from '@angular/core';
5559 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
5560 * import { AppModule } from './app/app.module';
5561 *
5562 * platformBrowserDynamic().bootstrapModule(AppModule, {
5563 * missingTranslation: MissingTranslationStrategy.Error
5564 * });
5565 * ```
5566 *
5567 * @publicApi
5568 */
5569export declare enum MissingTranslationStrategy {
5570 Error = 0,
5571 Warning = 1,
5572 Ignore = 2
5573}
5574
5575/**
5576 * Combination of NgModuleFactory and ComponentFactories.
5577 *
5578 * @publicApi
5579 *
5580 * @deprecated
5581 * Ivy JIT mode doesn't require accessing this symbol.
5582 * See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes) for
5583 * additional context.
5584 */
5585export declare class ModuleWithComponentFactories<T> {
5586 ngModuleFactory: NgModuleFactory<T>;
5587 componentFactories: ComponentFactory<any>[];
5588 constructor(ngModuleFactory: NgModuleFactory<T>, componentFactories: ComponentFactory<any>[]);
5589}
5590
5591/**
5592 * A wrapper around an NgModule that associates it with [providers](guide/glossary#provider
5593 * "Definition"). Usage without a generic type is deprecated.
5594 *
5595 * @see [Deprecations](guide/deprecations#modulewithproviders-type-without-a-generic)
5596 *
5597 * @publicApi
5598 */
5599export declare interface ModuleWithProviders<T> {
5600 ngModule: Type<T>;
5601 providers?: Array<Provider | EnvironmentProviders>;
5602}
5603
5604declare const MOVED_VIEWS = 9;
5605
5606declare const MULTIPLIER = "x";
5607
5608declare type Mutable<T extends {
5609 [x: string]: any;
5610}, K extends string> = {
5611 [P in K]: T[P];
5612};
5613
5614declare const NATIVE = 7;
5615
5616declare const NEXT = 4;
5617
5618/**
5619 * A type describing supported iterable types.
5620 *
5621 * @publicApi
5622 */
5623export declare type NgIterable<T> = Array<T> | Iterable<T>;
5624
5625/**
5626 * Type of the NgModule metadata.
5627 *
5628 * @publicApi
5629 */
5630export declare interface NgModule {
5631 /**
5632 * The set of injectable objects that are available in the injector
5633 * of this module.
5634 *
5635 * @see [Dependency Injection guide](guide/dependency-injection)
5636 * @see [NgModule guide](guide/providers)
5637 *
5638 * @usageNotes
5639 *
5640 * Dependencies whose providers are listed here become available for injection
5641 * into any component, directive, pipe or service that is a child of this injector.
5642 * The NgModule used for bootstrapping uses the root injector, and can provide dependencies
5643 * to any part of the app.
5644 *
5645 * A lazy-loaded module has its own injector, typically a child of the app root injector.
5646 * Lazy-loaded services are scoped to the lazy-loaded module's injector.
5647 * If a lazy-loaded module also provides the `UserService`, any component created
5648 * within that module's context (such as by router navigation) gets the local instance
5649 * of the service, not the instance in the root injector.
5650 * Components in external modules continue to receive the instance provided by their injectors.
5651 *
5652 * ### Example
5653 *
5654 * The following example defines a class that is injected in
5655 * the HelloWorld NgModule:
5656 *
5657 * ```
5658 * class Greeter {
5659 * greet(name:string) {
5660 * return 'Hello ' + name + '!';
5661 * }
5662 * }
5663 *
5664 * @NgModule({
5665 * providers: [
5666 * Greeter
5667 * ]
5668 * })
5669 * class HelloWorld {
5670 * greeter:Greeter;
5671 *
5672 * constructor(greeter:Greeter) {
5673 * this.greeter = greeter;
5674 * }
5675 * }
5676 * ```
5677 */
5678 providers?: Array<Provider | EnvironmentProviders>;
5679 /**
5680 * The set of components, directives, and pipes ([declarables](guide/glossary#declarable))
5681 * that belong to this module.
5682 *
5683 * @usageNotes
5684 *
5685 * The set of selectors that are available to a template include those declared here, and
5686 * those that are exported from imported NgModules.
5687 *
5688 * Declarables must belong to exactly one module.
5689 * The compiler emits an error if you try to declare the same class in more than one module.
5690 * Be careful not to declare a class that is imported from another module.
5691 *
5692 * ### Example
5693 *
5694 * The following example allows the CommonModule to use the `NgFor`
5695 * directive.
5696 *
5697 * ```javascript
5698 * @NgModule({
5699 * declarations: [NgFor]
5700 * })
5701 * class CommonModule {
5702 * }
5703 * ```
5704 */
5705 declarations?: Array<Type<any> | any[]>;
5706 /**
5707 * The set of NgModules whose exported [declarables](guide/glossary#declarable)
5708 * are available to templates in this module.
5709 *
5710 * @usageNotes
5711 *
5712 * A template can use exported declarables from any
5713 * imported module, including those from modules that are imported indirectly
5714 * and re-exported.
5715 * For example, `ModuleA` imports `ModuleB`, and also exports
5716 * it, which makes the declarables from `ModuleB` available
5717 * wherever `ModuleA` is imported.
5718 *
5719 * ### Example
5720 *
5721 * The following example allows MainModule to use anything exported by
5722 * `CommonModule`:
5723 *
5724 * ```javascript
5725 * @NgModule({
5726 * imports: [CommonModule]
5727 * })
5728 * class MainModule {
5729 * }
5730 * ```
5731 *
5732 */
5733 imports?: Array<Type<any> | ModuleWithProviders<{}> | any[]>;
5734 /**
5735 * The set of components, directives, and pipes declared in this
5736 * NgModule that can be used in the template of any component that is part of an
5737 * NgModule that imports this NgModule. Exported declarations are the module's public API.
5738 *
5739 * A declarable belongs to one and only one NgModule.
5740 * A module can list another module among its exports, in which case all of that module's
5741 * public declaration are exported.
5742 *
5743 * @usageNotes
5744 *
5745 * Declarations are private by default.
5746 * If this ModuleA does not export UserComponent, then only the components within this
5747 * ModuleA can use UserComponent.
5748 *
5749 * ModuleA can import ModuleB and also export it, making exports from ModuleB
5750 * available to an NgModule that imports ModuleA.
5751 *
5752 * ### Example
5753 *
5754 * The following example exports the `NgFor` directive from CommonModule.
5755 *
5756 * ```javascript
5757 * @NgModule({
5758 * exports: [NgFor]
5759 * })
5760 * class CommonModule {
5761 * }
5762 * ```
5763 */
5764 exports?: Array<Type<any> | any[]>;
5765 /**
5766 * The set of components that are bootstrapped when this module is bootstrapped.
5767 */
5768 bootstrap?: Array<Type<any> | any[]>;
5769 /**
5770 * The set of schemas that declare elements to be allowed in the NgModule.
5771 * Elements and properties that are neither Angular components nor directives
5772 * must be declared in a schema.
5773 *
5774 * Allowed value are `NO_ERRORS_SCHEMA` and `CUSTOM_ELEMENTS_SCHEMA`.
5775 *
5776 * @security When using one of `NO_ERRORS_SCHEMA` or `CUSTOM_ELEMENTS_SCHEMA`
5777 * you must ensure that allowed elements and properties securely escape inputs.
5778 */
5779 schemas?: Array<SchemaMetadata | any[]>;
5780 /**
5781 * A name or path that uniquely identifies this NgModule in `getNgModuleById`.
5782 * If left `undefined`, the NgModule is not registered with `getNgModuleById`.
5783 */
5784 id?: string;
5785 /**
5786 * When present, this module is ignored by the AOT compiler.
5787 * It remains in distributed code, and the JIT compiler attempts to compile it
5788 * at run time, in the browser.
5789 * To ensure the correct behavior, the app must import `@angular/compiler`.
5790 */
5791 jit?: true;
5792}
5793
5794/**
5795 * @Annotation
5796 */
5797export declare const NgModule: NgModuleDecorator;
5798
5799/**
5800 * Type of the NgModule decorator / constructor function.
5801 *
5802 * @publicApi
5803 */
5804export declare interface NgModuleDecorator {
5805 /**
5806 * Decorator that marks a class as an NgModule and supplies configuration metadata.
5807 */
5808 (obj?: NgModule): TypeDecorator;
5809 new (obj?: NgModule): NgModule;
5810}
5811
5812/**
5813 * @publicApi
5814 *
5815 * @deprecated
5816 * This class was mostly used as a part of ViewEngine-based JIT API and is no longer needed in Ivy
5817 * JIT mode. See [JIT API changes due to ViewEngine deprecation](guide/deprecations#jit-api-changes)
5818 * for additional context. Angular provides APIs that accept NgModule classes directly (such as
5819 * [PlatformRef.bootstrapModule](api/core/PlatformRef#bootstrapModule) and
5820 * [createNgModule](api/core/createNgModule)), consider switching to those APIs instead of
5821 * using factory-based ones.
5822 */
5823export declare abstract class NgModuleFactory<T> {
5824 abstract get moduleType(): Type<T>;
5825 abstract create(parentInjector: Injector | null): NgModuleRef<T>;
5826}
5827
5828/**
5829 * Represents an instance of an `NgModule` created by an `NgModuleFactory`.
5830 * Provides access to the `NgModule` instance and related objects.
5831 *
5832 * @publicApi
5833 */
5834export declare abstract class NgModuleRef<T> {
5835 /**
5836 * The injector that contains all of the providers of the `NgModule`.
5837 */
5838 abstract get injector(): EnvironmentInjector;
5839 /**
5840 * The resolver that can retrieve component factories in a context of this module.
5841 *
5842 * Note: since v13, dynamic component creation via
5843 * [`ViewContainerRef.createComponent`](api/core/ViewContainerRef#createComponent)
5844 * does **not** require resolving component factory: component class can be used directly.
5845 *
5846 * @deprecated Angular no longer requires Component factories. Please use other APIs where
5847 * Component class can be used directly.
5848 */
5849 abstract get componentFactoryResolver(): ComponentFactoryResolver;
5850 /**
5851 * The `NgModule` instance.
5852 */
5853 abstract get instance(): T;
5854 /**
5855 * Destroys the module instance and all of the data structures associated with it.
5856 */
5857 abstract destroy(): void;
5858 /**
5859 * Registers a callback to be executed when the module is destroyed.
5860 */
5861 abstract onDestroy(callback: () => void): void;
5862}
5863
5864/**
5865 * A token for third-party components that can register themselves with NgProbe.
5866 *
5867 * @publicApi
5868 */
5869export declare class NgProbeToken {
5870 name: string;
5871 token: any;
5872 constructor(name: string, token: any);
5873}
5874
5875/**
5876 * An injectable service for executing work inside or outside of the Angular zone.
5877 *
5878 * The most common use of this service is to optimize performance when starting a work consisting of
5879 * one or more asynchronous tasks that don't require UI updates or error handling to be handled by
5880 * Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks
5881 * can reenter the Angular zone via {@link #run}.
5882 *
5883 * <!-- TODO: add/fix links to:
5884 * - docs explaining zones and the use of zones in Angular and change-detection
5885 * - link to runOutsideAngular/run (throughout this file!)
5886 * -->
5887 *
5888 * @usageNotes
5889 * ### Example
5890 *
5891 * ```
5892 * import {Component, NgZone} from '@angular/core';
5893 * import {NgIf} from '@angular/common';
5894 *
5895 * @Component({
5896 * selector: 'ng-zone-demo',
5897 * template: `
5898 * <h2>Demo: NgZone</h2>
5899 *
5900 * <p>Progress: {{progress}}%</p>
5901 * <p *ngIf="progress >= 100">Done processing {{label}} of Angular zone!</p>
5902 *
5903 * <button (click)="processWithinAngularZone()">Process within Angular zone</button>
5904 * <button (click)="processOutsideOfAngularZone()">Process outside of Angular zone</button>
5905 * `,
5906 * })
5907 * export class NgZoneDemo {
5908 * progress: number = 0;
5909 * label: string;
5910 *
5911 * constructor(private _ngZone: NgZone) {}
5912 *
5913 * // Loop inside the Angular zone
5914 * // so the UI DOES refresh after each setTimeout cycle
5915 * processWithinAngularZone() {
5916 * this.label = 'inside';
5917 * this.progress = 0;
5918 * this._increaseProgress(() => console.log('Inside Done!'));
5919 * }
5920 *
5921 * // Loop outside of the Angular zone
5922 * // so the UI DOES NOT refresh after each setTimeout cycle
5923 * processOutsideOfAngularZone() {
5924 * this.label = 'outside';
5925 * this.progress = 0;
5926 * this._ngZone.runOutsideAngular(() => {
5927 * this._increaseProgress(() => {
5928 * // reenter the Angular zone and display done
5929 * this._ngZone.run(() => { console.log('Outside Done!'); });
5930 * });
5931 * });
5932 * }
5933 *
5934 * _increaseProgress(doneCallback: () => void) {
5935 * this.progress += 1;
5936 * console.log(`Current progress: ${this.progress}%`);
5937 *
5938 * if (this.progress < 100) {
5939 * window.setTimeout(() => this._increaseProgress(doneCallback), 10);
5940 * } else {
5941 * doneCallback();
5942 * }
5943 * }
5944 * }
5945 * ```
5946 *
5947 * @publicApi
5948 */
5949export declare class NgZone {
5950 readonly hasPendingMacrotasks: boolean;
5951 readonly hasPendingMicrotasks: boolean;
5952 /**
5953 * Whether there are no outstanding microtasks or macrotasks.
5954 */
5955 readonly isStable: boolean;
5956 /**
5957 * Notifies when code enters Angular Zone. This gets fired first on VM Turn.
5958 */
5959 readonly onUnstable: EventEmitter<any>;
5960 /**
5961 * Notifies when there is no more microtasks enqueued in the current VM Turn.
5962 * This is a hint for Angular to do change detection, which may enqueue more microtasks.
5963 * For this reason this event can fire multiple times per VM Turn.
5964 */
5965 readonly onMicrotaskEmpty: EventEmitter<any>;
5966 /**
5967 * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which
5968 * implies we are about to relinquish VM turn.
5969 * This event gets called just once.
5970 */
5971 readonly onStable: EventEmitter<any>;
5972 /**
5973 * Notifies that an error has been delivered.
5974 */
5975 readonly onError: EventEmitter<any>;
5976 constructor({ enableLongStackTrace, shouldCoalesceEventChangeDetection, shouldCoalesceRunChangeDetection }: {
5977 enableLongStackTrace?: boolean | undefined;
5978 shouldCoalesceEventChangeDetection?: boolean | undefined;
5979 shouldCoalesceRunChangeDetection?: boolean | undefined;
5980 });
5981 static isInAngularZone(): boolean;
5982 static assertInAngularZone(): void;
5983 static assertNotInAngularZone(): void;
5984 /**
5985 * Executes the `fn` function synchronously within the Angular zone and returns value returned by
5986 * the function.
5987 *
5988 * Running functions via `run` allows you to reenter Angular zone from a task that was executed
5989 * outside of the Angular zone (typically started via {@link #runOutsideAngular}).
5990 *
5991 * Any future tasks or microtasks scheduled from within this function will continue executing from
5992 * within the Angular zone.
5993 *
5994 * If a synchronous error happens it will be rethrown and not reported via `onError`.
5995 */
5996 run<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T;
5997 /**
5998 * Executes the `fn` function synchronously within the Angular zone as a task and returns value
5999 * returned by the function.
6000 *
6001 * Running functions via `run` allows you to reenter Angular zone from a task that was executed
6002 * outside of the Angular zone (typically started via {@link #runOutsideAngular}).
6003 *
6004 * Any future tasks or microtasks scheduled from within this function will continue executing from
6005 * within the Angular zone.
6006 *
6007 * If a synchronous error happens it will be rethrown and not reported via `onError`.
6008 */
6009 runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[], name?: string): T;
6010 /**
6011 * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not
6012 * rethrown.
6013 */
6014 runGuarded<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T;
6015 /**
6016 * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by
6017 * the function.
6018 *
6019 * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do
6020 * work that
6021 * doesn't trigger Angular change-detection or is subject to Angular's error handling.
6022 *
6023 * Any future tasks or microtasks scheduled from within this function will continue executing from
6024 * outside of the Angular zone.
6025 *
6026 * Use {@link #run} to reenter the Angular zone and do work that updates the application model.
6027 */
6028 runOutsideAngular<T>(fn: (...args: any[]) => T): T;
6029}
6030
6031/**
6032 * Used to configure event and run coalescing with `provideZoneChangeDetection`.
6033 *
6034 * @publicApi
6035 *
6036 * @see provideZoneChangeDetection
6037 */
6038export declare interface NgZoneOptions {
6039 /**
6040 * Optionally specify coalescing event change detections or not.
6041 * Consider the following case.
6042 *
6043 * ```
6044 * <div (click)="doSomething()">
6045 * <button (click)="doSomethingElse()"></button>
6046 * </div>
6047 * ```
6048 *
6049 * When button is clicked, because of the event bubbling, both
6050 * event handlers will be called and 2 change detections will be
6051 * triggered. We can coalesce such kind of events to only trigger
6052 * change detection only once.
6053 *
6054 * By default, this option will be false. So the events will not be
6055 * coalesced and the change detection will be triggered multiple times.
6056 * And if this option be set to true, the change detection will be
6057 * triggered async by scheduling a animation frame. So in the case above,
6058 * the change detection will only be triggered once.
6059 */
6060 eventCoalescing?: boolean;
6061 /**
6062 * Optionally specify if `NgZone#run()` method invocations should be coalesced
6063 * into a single change detection.
6064 *
6065 * Consider the following case.
6066 * ```
6067 * for (let i = 0; i < 10; i ++) {
6068 * ngZone.run(() => {
6069 * // do something
6070 * });
6071 * }
6072 * ```
6073 *
6074 * This case triggers the change detection multiple times.
6075 * With ngZoneRunCoalescing options, all change detections in an event loop trigger only once.
6076 * In addition, the change detection executes in requestAnimation.
6077 *
6078 */
6079 runCoalescing?: boolean;
6080}
6081
6082/**
6083 * Defines a schema that allows any property on any element.
6084 *
6085 * This schema allows you to ignore the errors related to any unknown elements or properties in a
6086 * template. The usage of this schema is generally discouraged because it prevents useful validation
6087 * and may hide real errors in your template. Consider using the `CUSTOM_ELEMENTS_SCHEMA` instead.
6088 *
6089 * @publicApi
6090 */
6091export declare const NO_ERRORS_SCHEMA: SchemaMetadata;
6092
6093declare const NODES = "n";
6094
6095declare const NUM_ROOT_NODES = "r";
6096
6097declare const ON_DESTROY_HOOKS = 21;
6098
6099/**
6100 * @description
6101 * A lifecycle hook that is called when any data-bound property of a directive changes.
6102 * Define an `ngOnChanges()` method to handle the changes.
6103 *
6104 * @see `DoCheck`
6105 * @see `OnInit`
6106 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
6107 *
6108 * @usageNotes
6109 * The following snippet shows how a component can implement this interface to
6110 * define an on-changes handler for an input property.
6111 *
6112 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnChanges'}
6113 *
6114 * @publicApi
6115 */
6116export declare interface OnChanges {
6117 /**
6118 * A callback method that is invoked immediately after the
6119 * default change detector has checked data-bound properties
6120 * if at least one has changed, and before the view and content
6121 * children are checked.
6122 * @param changes The changed properties.
6123 */
6124 ngOnChanges(changes: SimpleChanges): void;
6125}
6126
6127/**
6128 * A lifecycle hook that is called when a directive, pipe, or service is destroyed.
6129 * Use for any custom cleanup that needs to occur when the
6130 * instance is destroyed.
6131 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
6132 *
6133 * @usageNotes
6134 * The following snippet shows how a component can implement this interface
6135 * to define its own custom clean-up method.
6136 *
6137 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnDestroy'}
6138 *
6139 * @publicApi
6140 */
6141export declare interface OnDestroy {
6142 /**
6143 * A callback method that performs custom clean-up, invoked immediately
6144 * before a directive, pipe, or service instance is destroyed.
6145 */
6146 ngOnDestroy(): void;
6147}
6148
6149/**
6150 * @description
6151 * A lifecycle hook that is called after Angular has initialized
6152 * all data-bound properties of a directive.
6153 * Define an `ngOnInit()` method to handle any additional initialization tasks.
6154 *
6155 * @see `AfterContentInit`
6156 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
6157 *
6158 * @usageNotes
6159 * The following snippet shows how a component can implement this interface to
6160 * define its own initialization method.
6161 *
6162 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnInit'}
6163 *
6164 * @publicApi
6165 */
6166export declare interface OnInit {
6167 /**
6168 * A callback method that is invoked immediately after the
6169 * default change detector has checked the directive's
6170 * data-bound properties for the first time,
6171 * and before any of the view or content children have been checked.
6172 * It is invoked only once when the directive is instantiated.
6173 */
6174 ngOnInit(): void;
6175}
6176
6177declare type OpaqueValue = unknown;
6178
6179declare interface OpaqueViewState {
6180 '__brand__': 'Brand for OpaqueViewState that nothing will match';
6181}
6182
6183/**
6184 * Type of the Optional metadata.
6185 *
6186 * @publicApi
6187 */
6188export declare interface Optional {
6189}
6190
6191/**
6192 * Optional decorator and metadata.
6193 *
6194 * @Annotation
6195 * @publicApi
6196 */
6197export declare const Optional: OptionalDecorator;
6198
6199/**
6200 * Type of the Optional decorator / constructor function.
6201 *
6202 * @publicApi
6203 */
6204export declare interface OptionalDecorator {
6205 /**
6206 * Parameter decorator to be used on constructor parameters,
6207 * which marks the parameter as being an optional dependency.
6208 * The DI framework provides `null` if the dependency is not found.
6209 *
6210 * Can be used together with other parameter decorators
6211 * that modify how dependency injection operates.
6212 *
6213 * @usageNotes
6214 *
6215 * The following code allows the possibility of a `null` result:
6216 *
6217 * <code-example path="core/di/ts/metadata_spec.ts" region="Optional">
6218 * </code-example>
6219 *
6220 * @see ["Dependency Injection Guide"](guide/dependency-injection).
6221 */
6222 (): any;
6223 new (): Optional;
6224}
6225
6226/**
6227 * Type of the Output metadata.
6228 *
6229 * @publicApi
6230 */
6231export declare interface Output {
6232 /**
6233 * The name of the DOM property to which the output property is bound.
6234 */
6235 alias?: string;
6236}
6237
6238/**
6239 * @Annotation
6240 * @publicApi
6241 */
6242export declare const Output: OutputDecorator;
6243
6244/**
6245 * Type of the Output decorator / constructor function.
6246 *
6247 * @publicApi
6248 */
6249export declare interface OutputDecorator {
6250 /**
6251 * Decorator that marks a class field as an output property and supplies configuration metadata.
6252 * The DOM property bound to the output property is automatically updated during change detection.
6253 *
6254 * @usageNotes
6255 *
6256 * You can supply an optional name to use in templates when the
6257 * component is instantiated, that maps to the
6258 * name of the bound property. By default, the original
6259 * name of the bound property is used for output binding.
6260 *
6261 * See `Input` decorator for an example of providing a binding name.
6262 *
6263 * @see [Input and Output properties](guide/inputs-outputs)
6264 *
6265 */
6266 (alias?: string): any;
6267 new (alias?: string): any;
6268}
6269
6270/**
6271 * A [DI token](guide/glossary#di-token "DI token definition") that indicates the root directory of
6272 * the application
6273 * @publicApi
6274 */
6275export declare const PACKAGE_ROOT_URL: InjectionToken<string>;
6276
6277declare const PARENT = 3;
6278
6279/**
6280 * Type of the Pipe metadata.
6281 *
6282 * @publicApi
6283 */
6284export declare interface Pipe {
6285 /**
6286 * The pipe name to use in template bindings.
6287 * Typically uses [lowerCamelCase](guide/glossary#case-types)
6288 * because the name cannot contain hyphens.
6289 */
6290 name: string;
6291 /**
6292 * When true, the pipe is pure, meaning that the
6293 * `transform()` method is invoked only when its input arguments
6294 * change. Pipes are pure by default.
6295 *
6296 * If the pipe has internal state (that is, the result
6297 * depends on state other than its arguments), set `pure` to false.
6298 * In this case, the pipe is invoked on each change-detection cycle,
6299 * even if the arguments have not changed.
6300 */
6301 pure?: boolean;
6302 /**
6303 * Angular pipes marked as `standalone` do not need to be declared in an NgModule. Such
6304 * pipes don't depend on any "intermediate context" of an NgModule (ex. configured providers).
6305 *
6306 * More information about standalone components, directives, and pipes can be found in [this
6307 * guide](guide/standalone-components).
6308 */
6309 standalone?: boolean;
6310}
6311
6312/**
6313 * @Annotation
6314 * @publicApi
6315 */
6316export declare const Pipe: PipeDecorator;
6317
6318/**
6319 * Type of the Pipe decorator / constructor function.
6320 *
6321 * @publicApi
6322 */
6323export declare interface PipeDecorator {
6324 /**
6325 *
6326 * Decorator that marks a class as pipe and supplies configuration metadata.
6327 *
6328 * A pipe class must implement the `PipeTransform` interface.
6329 * For example, if the name is "myPipe", use a template binding expression
6330 * such as the following:
6331 *
6332 * ```
6333 * {{ exp | myPipe }}
6334 * ```
6335 *
6336 * The result of the expression is passed to the pipe's `transform()` method.
6337 *
6338 * A pipe must belong to an NgModule in order for it to be available
6339 * to a template. To make it a member of an NgModule,
6340 * list it in the `declarations` field of the `NgModule` metadata.
6341 *
6342 * @see [Style Guide: Pipe Names](guide/styleguide#02-09)
6343 *
6344 */
6345 (obj: Pipe): TypeDecorator;
6346 /**
6347 * See the `Pipe` decorator.
6348 */
6349 new (obj: Pipe): Pipe;
6350}
6351
6352declare type PipeDefList = ɵPipeDef<any>[];
6353
6354/**
6355 * Type used for PipeDefs on component definition.
6356 *
6357 * The function is necessary to be able to support forward declarations.
6358 */
6359declare type PipeDefListOrFactory = (() => PipeDefList) | PipeDefList;
6360
6361
6362/**
6363 * An interface that is implemented by pipes in order to perform a transformation.
6364 * Angular invokes the `transform` method with the value of a binding
6365 * as the first argument, and any parameters as the second argument in list form.
6366 *
6367 * @usageNotes
6368 *
6369 * In the following example, `TruncatePipe` returns the shortened value with an added ellipses.
6370 *
6371 * <code-example path="core/ts/pipes/simple_truncate.ts" header="simple_truncate.ts"></code-example>
6372 *
6373 * Invoking `{{ 'It was the best of times' | truncate }}` in a template will produce `It was...`.
6374 *
6375 * In the following example, `TruncatePipe` takes parameters that sets the truncated length and the
6376 * string to append with.
6377 *
6378 * <code-example path="core/ts/pipes/truncate.ts" header="truncate.ts"></code-example>
6379 *
6380 * Invoking `{{ 'It was the best of times' | truncate:4:'....' }}` in a template will produce `It
6381 * was the best....`.
6382 *
6383 * @publicApi
6384 */
6385export declare interface PipeTransform {
6386 transform(value: any, ...args: any[]): any;
6387}
6388
6389/**
6390 * A subclass of `Type` which has a staticpipe`:`PipeDef` field making it
6391 * consumable for rendering.
6392 */
6393declare interface PipeType<T> extends Type<T> {
6394 ɵpipe: unknown;
6395}
6396
6397/**
6398 * A token that indicates an opaque platform ID.
6399 * @publicApi
6400 */
6401export declare const PLATFORM_ID: InjectionToken<Object>;
6402
6403/**
6404 * A function that is executed when a platform is initialized.
6405 * @publicApi
6406 */
6407export declare const PLATFORM_INITIALIZER: InjectionToken<(() => void)[]>;
6408
6409/**
6410 * This platform has to be included in any other platform
6411 *
6412 * @publicApi
6413 */
6414export declare const platformCore: (extraProviders?: StaticProvider[] | undefined) => PlatformRef;
6415
6416/**
6417 * The Angular platform is the entry point for Angular on a web page.
6418 * Each page has exactly one platform. Services (such as reflection) which are common
6419 * to every Angular application running on the page are bound in its scope.
6420 * A page's platform is initialized implicitly when a platform is created using a platform
6421 * factory such as `PlatformBrowser`, or explicitly by calling the `createPlatform()` function.
6422 *
6423 * @publicApi
6424 */
6425export declare class PlatformRef {
6426 private _injector;
6427 private _modules;
6428 private _destroyListeners;
6429 private _destroyed;
6430 /**
6431 * Creates an instance of an `@NgModule` for the given platform.
6432 *
6433 * @deprecated Passing NgModule factories as the `PlatformRef.bootstrapModuleFactory` function
6434 * argument is deprecated. Use the `PlatformRef.bootstrapModule` API instead.
6435 */
6436 bootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>, options?: BootstrapOptions): Promise<NgModuleRef<M>>;
6437 /**
6438 * Creates an instance of an `@NgModule` for a given platform.
6439 *
6440 * @usageNotes
6441 * ### Simple Example
6442 *
6443 * ```typescript
6444 * @NgModule({
6445 * imports: [BrowserModule]
6446 * })
6447 * class MyModule {}
6448 *
6449 * let moduleRef = platformBrowser().bootstrapModule(MyModule);
6450 * ```
6451 *
6452 */
6453 bootstrapModule<M>(moduleType: Type<M>, compilerOptions?: (CompilerOptions & BootstrapOptions) | Array<CompilerOptions & BootstrapOptions>): Promise<NgModuleRef<M>>;
6454 private _moduleDoBootstrap;
6455 /**
6456 * Registers a listener to be called when the platform is destroyed.
6457 */
6458 onDestroy(callback: () => void): void;
6459 /**
6460 * Retrieves the platform {@link Injector}, which is the parent injector for
6461 * every Angular application on the page and provides singleton providers.
6462 */
6463 get injector(): Injector;
6464 /**
6465 * Destroys the current Angular platform and all Angular applications on the page.
6466 * Destroys all modules and listeners registered with the platform.
6467 */
6468 destroy(): void;
6469 /**
6470 * Indicates whether this instance was destroyed.
6471 */
6472 get destroyed(): boolean;
6473 static ɵfac: i0.ɵɵFactoryDeclaration<PlatformRef, never>;
6474 static ɵprov: i0.ɵɵInjectableDeclaration<PlatformRef>;
6475}
6476
6477declare interface PlatformReflectionCapabilities {
6478 factory(type: Type<any>): Function;
6479 hasLifecycleHook(type: any, lcProperty: string): boolean;
6480 /**
6481 * Return a list of annotations/types for constructor parameters
6482 */
6483 parameters(type: Type<any>): any[][];
6484 /**
6485 * Return a list of annotations declared on the class
6486 */
6487 annotations(type: Type<any>): any[];
6488 /**
6489 * Return a object literal which describes the annotations on Class fields/properties.
6490 */
6491 propMetadata(typeOrFunc: Type<any>): {
6492 [key: string]: any[];
6493 };
6494}
6495
6496/**
6497 * A boolean-valued function over a value, possibly including context information
6498 * regarding that value's position in an array.
6499 *
6500 * @publicApi
6501 */
6502export declare interface Predicate<T> {
6503 (value: T): boolean;
6504}
6505
6506declare const PREORDER_HOOK_FLAGS = 17;
6507
6508/** More flags associated with an LView (saved in LView[PREORDER_HOOK_FLAGS]) */
6509declare const enum PreOrderHookFlags {
6510 /**
6511 The index of the next pre-order hook to be called in the hooks array, on the first 16
6512 bits
6513 */
6514 IndexOfTheNextPreOrderHookMaskMask = 65535,
6515 /**
6516 * The number of init hooks that have already been called, on the last 16 bits
6517 */
6518 NumberOfInitHooksCalledIncrementer = 65536,
6519 NumberOfInitHooksCalledShift = 16,
6520 NumberOfInitHooksCalledMask = 4294901760
6521}
6522
6523/**
6524 * Describes a function that is used to process provider lists (such as provider
6525 * overrides).
6526 */
6527declare type ProcessProvidersFunction = (providers: Provider[]) => Provider[];
6528
6529/**
6530 * List of slots for a projection. A slot can be either based on a parsed CSS selector
6531 * which will be used to determine nodes which are projected into that slot.
6532 *
6533 * When set to "*", the slot is reserved and can be used for multi-slot projection
6534 * using {@link ViewContainerRef#createComponent}. The last slot that specifies the
6535 * wildcard selector will retrieve all projectable nodes which do not match any selector.
6536 */
6537declare type ProjectionSlots = (ɵCssSelectorList | '*')[];
6538
6539/**
6540 * This mapping is necessary so we can set input properties and output listeners
6541 * properly at runtime when property names are minified or aliased.
6542 *
6543 * Key: unminified / public input or output name
6544 * Value: array containing minified / internal name and related directive index
6545 *
6546 * The value must be an array to support inputs and outputs with the same name
6547 * on the same node.
6548 */
6549declare type PropertyAliases = {
6550 [key: string]: PropertyAliasValue;
6551};
6552
6553/**
6554 * Store the runtime input or output names for all the directives.
6555 *
6556 * i+0: directive instance index
6557 * i+1: privateName
6558 *
6559 * e.g. [0, 'change-minified']
6560 */
6561declare type PropertyAliasValue = (number | string)[];
6562
6563/**
6564 * Describes how the `Injector` should be configured.
6565 * @see ["Dependency Injection Guide"](guide/dependency-injection).
6566 *
6567 * @see `StaticProvider`
6568 *
6569 * @publicApi
6570 */
6571export declare type Provider = TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | any[];
6572
6573/**
6574 * @description
6575 *
6576 * Token that can be used to retrieve an instance from an injector or through a query.
6577 *
6578 * @publicApi
6579 */
6580export declare type ProviderToken<T> = Type<T> | AbstractType<T> | InjectionToken<T>;
6581
6582/**
6583 * Provides `NgZone`-based change detection for the application bootstrapped using
6584 * `bootstrapApplication`.
6585 *
6586 * `NgZone` is already provided in applications by default. This provider allows you to configure
6587 * options like `eventCoalescing` in the `NgZone`.
6588 * This provider is not available for `platformBrowser().bootstrapModule`, which uses
6589 * `BootstrapOptions` instead.
6590 *
6591 * @usageNotes
6592 * ```typescript=
6593 * bootstrapApplication(MyApp, {providers: [
6594 * provideZoneChangeDetection({eventCoalescing: true}),
6595 * ]});
6596 * ```
6597 *
6598 * @publicApi
6599 * @see bootstrapApplication
6600 * @see NgZoneOptions
6601 */
6602export declare function provideZoneChangeDetection(options?: NgZoneOptions): EnvironmentProviders;
6603
6604/**
6605 * Testability API.
6606 * `declare` keyword causes tsickle to generate externs, so these methods are
6607 * not renamed by Closure Compiler.
6608 * @publicApi
6609 */
6610declare interface PublicTestability {
6611 isStable(): boolean;
6612 whenStable(callback: Function, timeout?: number, updateCallback?: Function): void;
6613 findProviders(using: any, provider: string, exactMatch: boolean): any[];
6614}
6615
6616declare const QUERIES = 18;
6617
6618/**
6619 * Type of the Query metadata.
6620 *
6621 * @publicApi
6622 */
6623export declare interface Query {
6624 descendants: boolean;
6625 emitDistinctChangesOnly: boolean;
6626 first: boolean;
6627 read: any;
6628 isViewQuery: boolean;
6629 selector: any;
6630 static?: boolean;
6631}
6632
6633/**
6634 * Base class for query metadata.
6635 *
6636 * @see `ContentChildren`.
6637 * @see `ContentChild`.
6638 * @see `ViewChildren`.
6639 * @see `ViewChild`.
6640 *
6641 * @publicApi
6642 */
6643export declare abstract class Query {
6644}
6645
6646/**
6647 * A set of flags to be used with Queries.
6648 *
6649 * NOTE: Ensure changes here are reflected in `packages/compiler/src/render3/view/compiler.ts`
6650 */
6651declare const enum QueryFlags {
6652 /**
6653 * No flags
6654 */
6655 none = 0,
6656 /**
6657 * Whether or not the query should descend into children.
6658 */
6659 descendants = 1,
6660 /**
6661 * The query can be computed statically and hence can be assigned eagerly.
6662 *
6663 * NOTE: Backwards compatibility with ViewEngine.
6664 */
6665 isStatic = 2,
6666 /**
6667 * If the `QueryList` should fire change event only if actual change to query was computed (vs old
6668 * behavior where the change was fired whenever the query was recomputed, even if the recomputed
6669 * query resulted in the same list.)
6670 */
6671 emitDistinctChangesOnly = 4
6672}
6673
6674/**
6675 * An unmodifiable list of items that Angular keeps up to date when the state
6676 * of the application changes.
6677 *
6678 * The type of object that {@link ViewChildren}, {@link ContentChildren}, and {@link QueryList}
6679 * provide.
6680 *
6681 * Implements an iterable interface, therefore it can be used in both ES6
6682 * javascript `for (var i of items)` loops as well as in Angular templates with
6683 * `*ngFor="let i of myList"`.
6684 *
6685 * Changes can be observed by subscribing to the changes `Observable`.
6686 *
6687 * NOTE: In the future this class will implement an `Observable` interface.
6688 *
6689 * @usageNotes
6690 * ### Example
6691 * ```typescript
6692 * @Component({...})
6693 * class Container {
6694 * @ViewChildren(Item) items:QueryList<Item>;
6695 * }
6696 * ```
6697 *
6698 * @publicApi
6699 */
6700export declare class QueryList<T> implements Iterable<T> {
6701 private _emitDistinctChangesOnly;
6702 readonly dirty = true;
6703 private _results;
6704 private _changesDetected;
6705 private _changes;
6706 readonly length: number;
6707 readonly first: T;
6708 readonly last: T;
6709 /**
6710 * Returns `Observable` of `QueryList` notifying the subscriber of changes.
6711 */
6712 get changes(): Observable<any>;
6713 /**
6714 * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
6715 * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
6716 * the same result)
6717 */
6718 constructor(_emitDistinctChangesOnly?: boolean);
6719 /**
6720 * Returns the QueryList entry at `index`.
6721 */
6722 get(index: number): T | undefined;
6723 /**
6724 * See
6725 * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
6726 */
6727 map<U>(fn: (item: T, index: number, array: T[]) => U): U[];
6728 /**
6729 * See
6730 * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
6731 */
6732 filter<S extends T>(predicate: (value: T, index: number, array: readonly T[]) => value is S): S[];
6733 filter(predicate: (value: T, index: number, array: readonly T[]) => unknown): T[];
6734 /**
6735 * See
6736 * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)
6737 */
6738 find(fn: (item: T, index: number, array: T[]) => boolean): T | undefined;
6739 /**
6740 * See
6741 * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
6742 */
6743 reduce<U>(fn: (prevValue: U, curValue: T, curIndex: number, array: T[]) => U, init: U): U;
6744 /**
6745 * See
6746 * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)
6747 */
6748 forEach(fn: (item: T, index: number, array: T[]) => void): void;
6749 /**
6750 * See
6751 * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
6752 */
6753 some(fn: (value: T, index: number, array: T[]) => boolean): boolean;
6754 /**
6755 * Returns a copy of the internal results list as an Array.
6756 */
6757 toArray(): T[];
6758 toString(): string;
6759 /**
6760 * Updates the stored data of the query list, and resets the `dirty` flag to `false`, so that
6761 * on change detection, it will not notify of changes to the queries, unless a new change
6762 * occurs.
6763 *
6764 * @param resultsTree The query results to store
6765 * @param identityAccessor Optional function for extracting stable object identity from a value
6766 * in the array. This function is executed for each element of the query result list while
6767 * comparing current query list with the new one (provided as a first argument of the `reset`
6768 * function) to detect if the lists are different. If the function is not provided, elements
6769 * are compared as is (without any pre-processing).
6770 */
6771 reset(resultsTree: Array<T | any[]>, identityAccessor?: (value: T) => unknown): void;
6772 /**
6773 * Triggers a change event by emitting on the `changes` {@link EventEmitter}.
6774 */
6775 notifyOnChanges(): void;
6776 /** internal */
6777 setDirty(): void;
6778 /** internal */
6779 destroy(): void;
6780 [Symbol.iterator]: () => Iterator<T>;
6781}
6782
6783declare interface R3DeclareComponentFacade extends R3DeclareDirectiveFacade {
6784 template: string;
6785 isInline?: boolean;
6786 styles?: string[];
6787 dependencies?: R3DeclareTemplateDependencyFacade[];
6788 components?: R3DeclareDirectiveDependencyFacade[];
6789 directives?: R3DeclareDirectiveDependencyFacade[];
6790 pipes?: {
6791 [pipeName: string]: OpaqueValue | (() => OpaqueValue);
6792 };
6793 viewProviders?: OpaqueValue;
6794 animations?: OpaqueValue;
6795 changeDetection?: ChangeDetectionStrategy_2;
6796 encapsulation?: ViewEncapsulation_2;
6797 interpolation?: [string, string];
6798 preserveWhitespaces?: boolean;
6799}
6800
6801declare interface R3DeclareDependencyMetadataFacade {
6802 token: OpaqueValue;
6803 attribute?: boolean;
6804 host?: boolean;
6805 optional?: boolean;
6806 self?: boolean;
6807 skipSelf?: boolean;
6808}
6809
6810declare interface R3DeclareDirectiveDependencyFacade {
6811 kind?: 'directive' | 'component';
6812 selector: string;
6813 type: OpaqueValue | (() => OpaqueValue);
6814 inputs?: string[];
6815 outputs?: string[];
6816 exportAs?: string[];
6817}
6818
6819declare interface R3DeclareDirectiveFacade {
6820 selector?: string;
6821 type: Type_2;
6822 inputs?: {
6823 [classPropertyName: string]: string | [string, string];
6824 };
6825 outputs?: {
6826 [classPropertyName: string]: string;
6827 };
6828 host?: {
6829 attributes?: {
6830 [key: string]: OpaqueValue;
6831 };
6832 listeners?: {
6833 [key: string]: string;
6834 };
6835 properties?: {
6836 [key: string]: string;
6837 };
6838 classAttribute?: string;
6839 styleAttribute?: string;
6840 };
6841 queries?: R3DeclareQueryMetadataFacade[];
6842 viewQueries?: R3DeclareQueryMetadataFacade[];
6843 providers?: OpaqueValue;
6844 exportAs?: string[];
6845 usesInheritance?: boolean;
6846 usesOnChanges?: boolean;
6847 isStandalone?: boolean;
6848 hostDirectives?: R3HostDirectiveMetadataFacade[] | null;
6849}
6850
6851declare interface R3DeclareFactoryFacade {
6852 type: Type_2;
6853 deps: R3DeclareDependencyMetadataFacade[] | 'invalid' | null;
6854 target: ɵɵFactoryTarget;
6855}
6856
6857declare interface R3DeclareInjectableFacade {
6858 type: Type_2;
6859 providedIn?: Type_2 | 'root' | 'platform' | 'any' | null;
6860 useClass?: OpaqueValue;
6861 useFactory?: OpaqueValue;
6862 useExisting?: OpaqueValue;
6863 useValue?: OpaqueValue;
6864 deps?: R3DeclareDependencyMetadataFacade[];
6865}
6866
6867declare interface R3DeclareInjectorFacade {
6868 type: Type_2;
6869 imports?: OpaqueValue[];
6870 providers?: OpaqueValue[];
6871}
6872
6873declare interface R3DeclareNgModuleDependencyFacade {
6874 kind: 'ngmodule';
6875 type: OpaqueValue | (() => OpaqueValue);
6876}
6877
6878declare interface R3DeclareNgModuleFacade {
6879 type: Type_2;
6880 bootstrap?: OpaqueValue[] | (() => OpaqueValue[]);
6881 declarations?: OpaqueValue[] | (() => OpaqueValue[]);
6882 imports?: OpaqueValue[] | (() => OpaqueValue[]);
6883 exports?: OpaqueValue[] | (() => OpaqueValue[]);
6884 schemas?: OpaqueValue[];
6885 id?: OpaqueValue;
6886}
6887
6888declare interface R3DeclarePipeDependencyFacade {
6889 kind?: 'pipe';
6890 name: string;
6891 type: OpaqueValue | (() => OpaqueValue);
6892}
6893
6894declare interface R3DeclarePipeFacade {
6895 type: Type_2;
6896 name: string;
6897 pure?: boolean;
6898 isStandalone?: boolean;
6899}
6900
6901declare interface R3DeclareQueryMetadataFacade {
6902 propertyName: string;
6903 first?: boolean;
6904 predicate: OpaqueValue | string[];
6905 descendants?: boolean;
6906 read?: OpaqueValue;
6907 static?: boolean;
6908 emitDistinctChangesOnly?: boolean;
6909}
6910
6911declare type R3DeclareTemplateDependencyFacade = {
6912 kind: string;
6913} & (R3DeclareDirectiveDependencyFacade | R3DeclarePipeDependencyFacade | R3DeclareNgModuleDependencyFacade);
6914
6915declare interface R3HostDirectiveMetadataFacade {
6916 directive: Type_2;
6917 inputs?: string[];
6918 outputs?: string[];
6919}
6920
6921declare class R3Injector extends EnvironmentInjector {
6922 readonly parent: Injector;
6923 readonly source: string | null;
6924 readonly scopes: Set<InjectorScope>;
6925 /**
6926 * Map of tokens to records which contain the instances of those tokens.
6927 * - `null` value implies that we don't have the record. Used by tree-shakable injectors
6928 * to prevent further searches.
6929 */
6930 private records;
6931 /**
6932 * Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks.
6933 */
6934 private _ngOnDestroyHooks;
6935 private _onDestroyHooks;
6936 /**
6937 * Flag indicating that this injector was previously destroyed.
6938 */
6939 get destroyed(): boolean;
6940 private _destroyed;
6941 private injectorDefTypes;
6942 constructor(providers: Array<Provider | EnvironmentProviders>, parent: Injector, source: string | null, scopes: Set<InjectorScope>);
6943 /**
6944 * Destroy the injector and release references to every instance or provider associated with it.
6945 *
6946 * Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a
6947 * hook was found.
6948 */
6949 destroy(): void;
6950 onDestroy(callback: () => void): () => void;
6951 runInContext<ReturnT>(fn: () => ReturnT): ReturnT;
6952 get<T>(token: ProviderToken<T>, notFoundValue?: any, flags?: InjectFlags | InjectOptions): T;
6953 toString(): string;
6954 assertNotDestroyed(): void;
6955 /**
6956 * Process a `SingleProvider` and add it.
6957 */
6958 private processProvider;
6959 private hydrate;
6960 private injectableDefInScope;
6961 private removeOnDestroy;
6962}
6963
6964declare interface RComment extends RNode {
6965 textContent: string | null;
6966}
6967
6968declare interface RCssStyleDeclaration {
6969 removeProperty(propertyName: string): string;
6970 setProperty(propertyName: string, value: string | null, priority?: string): void;
6971}
6972
6973declare interface RDomTokenList {
6974 add(token: string): void;
6975 remove(token: string): void;
6976}
6977
6978declare const REACTIVE_HOST_BINDING_CONSUMER = 24;
6979
6980declare const REACTIVE_TEMPLATE_CONSUMER = 23;
6981
6982declare class ReactiveLViewConsumer extends ReactiveNode {
6983 protected consumerAllowSignalWrites: boolean;
6984 private _lView;
6985 set lView(lView: LView);
6986 protected onConsumerDependencyMayHaveChanged(): void;
6987 protected onProducerUpdateValueVersion(): void;
6988 get hasReadASignal(): boolean;
6989 runInContext(fn: HostBindingsFunction<unknown> | ComponentTemplate<unknown>, rf: ɵRenderFlags, ctx: unknown): void;
6990 destroy(): void;
6991}
6992
6993/**
6994 * A node in the reactive graph.
6995 *
6996 * Nodes can be producers of reactive values, consumers of other reactive values, or both.
6997 *
6998 * Producers are nodes that produce values, and can be depended upon by consumer nodes.
6999 *
7000 * Producers expose a monotonic `valueVersion` counter, and are responsible for incrementing this
7001 * version when their value semantically changes. Some producers may produce their values lazily and
7002 * thus at times need to be polled for potential updates to their value (and by extension their
7003 * `valueVersion`). This is accomplished via the `onProducerUpdateValueVersion` method for
7004 * implemented by producers, which should perform whatever calculations are necessary to ensure
7005 * `valueVersion` is up to date.
7006 *
7007 * Consumers are nodes that depend on the values of producers and are notified when those values
7008 * might have changed.
7009 *
7010 * Consumers do not wrap the reads they consume themselves, but rather can be set as the active
7011 * reader via `setActiveConsumer`. Reads of producers that happen while a consumer is active will
7012 * result in those producers being added as dependencies of that consumer node.
7013 *
7014 * The set of dependencies of a consumer is dynamic. Implementers expose a monotonically increasing
7015 * `trackingVersion` counter, which increments whenever the consumer is about to re-run any reactive
7016 * reads it needs and establish a new set of dependencies as a result.
7017 *
7018 * Producers store the last `trackingVersion` they've seen from `Consumer`s which have read them.
7019 * This allows a producer to identify whether its record of the dependency is current or stale, by
7020 * comparing the consumer's `trackingVersion` to the version at which the dependency was
7021 * last observed.
7022 */
7023declare abstract class ReactiveNode {
7024 private readonly id;
7025 /**
7026 * A cached weak reference to this node, which will be used in `ReactiveEdge`s.
7027 */
7028 private readonly ref;
7029 /**
7030 * Edges to producers on which this node depends (in its consumer capacity).
7031 */
7032 private readonly producers;
7033 /**
7034 * Edges to consumers on which this node depends (in its producer capacity).
7035 */
7036 private readonly consumers;
7037 /**
7038 * Monotonically increasing counter representing a version of this `Consumer`'s
7039 * dependencies.
7040 */
7041 protected trackingVersion: number;
7042 /**
7043 * Monotonically increasing counter which increases when the value of this `Producer`
7044 * semantically changes.
7045 */
7046 protected valueVersion: number;
7047 /**
7048 * Whether signal writes should be allowed while this `ReactiveNode` is the current consumer.
7049 */
7050 protected abstract readonly consumerAllowSignalWrites: boolean;
7051 /**
7052 * Called for consumers whenever one of their dependencies notifies that it might have a new
7053 * value.
7054 */
7055 protected abstract onConsumerDependencyMayHaveChanged(): void;
7056 /**
7057 * Called for producers when a dependent consumer is checking if the producer's value has actually
7058 * changed.
7059 */
7060 protected abstract onProducerUpdateValueVersion(): void;
7061 /**
7062 * Polls dependencies of a consumer to determine if they have actually changed.
7063 *
7064 * If this returns `false`, then even though the consumer may have previously been notified of a
7065 * change, the values of its dependencies have not actually changed and the consumer should not
7066 * rerun any reactions.
7067 */
7068 protected consumerPollProducersForChange(): boolean;
7069 /**
7070 * Notify all consumers of this producer that its value may have changed.
7071 */
7072 protected producerMayHaveChanged(): void;
7073 /**
7074 * Mark that this producer node has been accessed in the current reactive context.
7075 */
7076 protected producerAccessed(): void;
7077 /**
7078 * Whether this consumer currently has any producers registered.
7079 */
7080 protected get hasProducers(): boolean;
7081 /**
7082 * Whether this `ReactiveNode` in its producer capacity is currently allowed to initiate updates,
7083 * based on the current consumer context.
7084 */
7085 protected get producerUpdatesAllowed(): boolean;
7086 /**
7087 * Checks if a `Producer` has a current value which is different than the value
7088 * last seen at a specific version by a `Consumer` which recorded a dependency on
7089 * this `Producer`.
7090 */
7091 private producerPollStatus;
7092}
7093
7094/**
7095 * Creates an object that allows to retrieve component metadata.
7096 *
7097 * @usageNotes
7098 *
7099 * The example below demonstrates how to use the function and how the fields
7100 * of the returned object map to the component metadata.
7101 *
7102 * ```typescript
7103 * @Component({
7104 * standalone: true,
7105 * selector: 'foo-component',
7106 * template: `
7107 * <ng-content></ng-content>
7108 * <ng-content select="content-selector-a"></ng-content>
7109 * `,
7110 * })
7111 * class FooComponent {
7112 * @Input('inputName') inputPropName: string;
7113 * @Output('outputName') outputPropName = new EventEmitter<void>();
7114 * }
7115 *
7116 * const mirror = reflectComponentType(FooComponent);
7117 * expect(mirror.type).toBe(FooComponent);
7118 * expect(mirror.selector).toBe('foo-component');
7119 * expect(mirror.isStandalone).toBe(true);
7120 * expect(mirror.inputs).toEqual([{propName: 'inputName', templateName: 'inputPropName'}]);
7121 * expect(mirror.outputs).toEqual([{propName: 'outputName', templateName: 'outputPropName'}]);
7122 * expect(mirror.ngContentSelectors).toEqual([
7123 * '*', // first `<ng-content>` in a template, the selector defaults to `*`
7124 * 'content-selector-a' // second `<ng-content>` in a template
7125 * ]);
7126 * ```
7127 *
7128 * @param component Component class reference.
7129 * @returns An object that allows to retrieve component metadata.
7130 *
7131 * @publicApi
7132 */
7133export declare function reflectComponentType<C>(component: Type<C>): ComponentMirror<C> | null;
7134
7135/**
7136 * Subset of API needed for writing attributes, properties, and setting up
7137 * listeners on Element.
7138 */
7139declare interface RElement extends RNode {
7140 firstChild: RNode | null;
7141 style: RCssStyleDeclaration;
7142 classList: RDomTokenList;
7143 className: string;
7144 tagName: string;
7145 textContent: string | null;
7146 getAttribute(name: string): string | null;
7147 setAttribute(name: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL): void;
7148 removeAttribute(name: string): void;
7149 setAttributeNS(namespaceURI: string, qualifiedName: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL): void;
7150 addEventListener(type: string, listener: EventListener, useCapture?: boolean): void;
7151 removeEventListener(type: string, listener?: EventListener, options?: boolean): void;
7152 setProperty?(name: string, value: any): void;
7153}
7154
7155declare const RENDERER = 11;
7156
7157/**
7158 * Procedural style of API needed to create elements and text nodes.
7159 *
7160 * In non-native browser environments (e.g. platforms such as web-workers), this is the
7161 * facade that enables element manipulation. In practice, this is implemented by `Renderer2`.
7162 */
7163declare interface Renderer {
7164 destroy(): void;
7165 createComment(value: string): RComment;
7166 createElement(name: string, namespace?: string | null): RElement;
7167 createText(value: string): RText;
7168 /**
7169 * This property is allowed to be null / undefined,
7170 * in which case the view engine won't call it.
7171 * This is used as a performance optimization for production mode.
7172 */
7173 destroyNode?: ((node: RNode) => void) | null;
7174 appendChild(parent: RElement, newChild: RNode): void;
7175 insertBefore(parent: RNode, newChild: RNode, refChild: RNode | null, isMove?: boolean): void;
7176 removeChild(parent: RElement, oldChild: RNode, isHostElement?: boolean): void;
7177 selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): RElement;
7178 parentNode(node: RNode): RElement | null;
7179 nextSibling(node: RNode): RNode | null;
7180 setAttribute(el: RElement, name: string, value: string | TrustedHTML | TrustedScript | TrustedScriptURL, namespace?: string | null): void;
7181 removeAttribute(el: RElement, name: string, namespace?: string | null): void;
7182 addClass(el: RElement, name: string): void;
7183 removeClass(el: RElement, name: string): void;
7184 setStyle(el: RElement, style: string, value: any, flags?: RendererStyleFlags2): void;
7185 removeStyle(el: RElement, style: string, flags?: RendererStyleFlags2): void;
7186 setProperty(el: RElement, name: string, value: any): void;
7187 setValue(node: RText | RComment, value: string): void;
7188 listen(target: GlobalTargetName | RNode, eventName: string, callback: (event: any) => boolean | void): () => void;
7189}
7190
7191/**
7192 * Extend this base class to implement custom rendering. By default, Angular
7193 * renders a template into DOM. You can use custom rendering to intercept
7194 * rendering calls, or to render to something other than DOM.
7195 *
7196 * Create your custom renderer using `RendererFactory2`.
7197 *
7198 * Use a custom renderer to bypass Angular's templating and
7199 * make custom UI changes that can't be expressed declaratively.
7200 * For example if you need to set a property or an attribute whose name is
7201 * not statically known, use the `setProperty()` or
7202 * `setAttribute()` method.
7203 *
7204 * @publicApi
7205 */
7206export declare abstract class Renderer2 {
7207 /**
7208 * Use to store arbitrary developer-defined data on a renderer instance,
7209 * as an object containing key-value pairs.
7210 * This is useful for renderers that delegate to other renderers.
7211 */
7212 abstract get data(): {
7213 [key: string]: any;
7214 };
7215 /**
7216 * Implement this callback to destroy the renderer or the host element.
7217 */
7218 abstract destroy(): void;
7219 /**
7220 * Implement this callback to create an instance of the host element.
7221 * @param name An identifying name for the new element, unique within the namespace.
7222 * @param namespace The namespace for the new element.
7223 * @returns The new element.
7224 */
7225 abstract createElement(name: string, namespace?: string | null): any;
7226 /**
7227 * Implement this callback to add a comment to the DOM of the host element.
7228 * @param value The comment text.
7229 * @returns The modified element.
7230 */
7231 abstract createComment(value: string): any;
7232 /**
7233 * Implement this callback to add text to the DOM of the host element.
7234 * @param value The text string.
7235 * @returns The modified element.
7236 */
7237 abstract createText(value: string): any;
7238 /**
7239 * If null or undefined, the view engine won't call it.
7240 * This is used as a performance optimization for production mode.
7241 */
7242 destroyNode: ((node: any) => void) | null;
7243 /**
7244 * Appends a child to a given parent node in the host element DOM.
7245 * @param parent The parent node.
7246 * @param newChild The new child node.
7247 */
7248 abstract appendChild(parent: any, newChild: any): void;
7249 /**
7250 * Implement this callback to insert a child node at a given position in a parent node
7251 * in the host element DOM.
7252 * @param parent The parent node.
7253 * @param newChild The new child nodes.
7254 * @param refChild The existing child node before which `newChild` is inserted.
7255 * @param isMove Optional argument which signifies if the current `insertBefore` is a result of a
7256 * move. Animation uses this information to trigger move animations. In the past the Animation
7257 * would always assume that any `insertBefore` is a move. This is not strictly true because
7258 * with runtime i18n it is possible to invoke `insertBefore` as a result of i18n and it should
7259 * not trigger an animation move.
7260 */
7261 abstract insertBefore(parent: any, newChild: any, refChild: any, isMove?: boolean): void;
7262 /**
7263 * Implement this callback to remove a child node from the host element's DOM.
7264 * @param parent The parent node.
7265 * @param oldChild The child node to remove.
7266 * @param isHostElement Optionally signal to the renderer whether this element is a host element
7267 * or not
7268 */
7269 abstract removeChild(parent: any, oldChild: any, isHostElement?: boolean): void;
7270 /**
7271 * Implement this callback to prepare an element to be bootstrapped
7272 * as a root element, and return the element instance.
7273 * @param selectorOrNode The DOM element.
7274 * @param preserveContent Whether the contents of the root element
7275 * should be preserved, or cleared upon bootstrap (default behavior).
7276 * Use with `ViewEncapsulation.ShadowDom` to allow simple native
7277 * content projection via `<slot>` elements.
7278 * @returns The root element.
7279 */
7280 abstract selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): any;
7281 /**
7282 * Implement this callback to get the parent of a given node
7283 * in the host element's DOM.
7284 * @param node The child node to query.
7285 * @returns The parent node, or null if there is no parent.
7286 * This is because the check is synchronous,
7287 * and the caller can't rely on checking for null.
7288 */
7289 abstract parentNode(node: any): any;
7290 /**
7291 * Implement this callback to get the next sibling node of a given node
7292 * in the host element's DOM.
7293 * @returns The sibling node, or null if there is no sibling.
7294 * This is because the check is synchronous,
7295 * and the caller can't rely on checking for null.
7296 */
7297 abstract nextSibling(node: any): any;
7298 /**
7299 * Implement this callback to set an attribute value for an element in the DOM.
7300 * @param el The element.
7301 * @param name The attribute name.
7302 * @param value The new value.
7303 * @param namespace The namespace.
7304 */
7305 abstract setAttribute(el: any, name: string, value: string, namespace?: string | null): void;
7306 /**
7307 * Implement this callback to remove an attribute from an element in the DOM.
7308 * @param el The element.
7309 * @param name The attribute name.
7310 * @param namespace The namespace.
7311 */
7312 abstract removeAttribute(el: any, name: string, namespace?: string | null): void;
7313 /**
7314 * Implement this callback to add a class to an element in the DOM.
7315 * @param el The element.
7316 * @param name The class name.
7317 */
7318 abstract addClass(el: any, name: string): void;
7319 /**
7320 * Implement this callback to remove a class from an element in the DOM.
7321 * @param el The element.
7322 * @param name The class name.
7323 */
7324 abstract removeClass(el: any, name: string): void;
7325 /**
7326 * Implement this callback to set a CSS style for an element in the DOM.
7327 * @param el The element.
7328 * @param style The name of the style.
7329 * @param value The new value.
7330 * @param flags Flags for style variations. No flags are set by default.
7331 */
7332 abstract setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2): void;
7333 /**
7334 * Implement this callback to remove the value from a CSS style for an element in the DOM.
7335 * @param el The element.
7336 * @param style The name of the style.
7337 * @param flags Flags for style variations to remove, if set. ???
7338 */
7339 abstract removeStyle(el: any, style: string, flags?: RendererStyleFlags2): void;
7340 /**
7341 * Implement this callback to set the value of a property of an element in the DOM.
7342 * @param el The element.
7343 * @param name The property name.
7344 * @param value The new value.
7345 */
7346 abstract setProperty(el: any, name: string, value: any): void;
7347 /**
7348 * Implement this callback to set the value of a node in the host element.
7349 * @param node The node.
7350 * @param value The new value.
7351 */
7352 abstract setValue(node: any, value: string): void;
7353 /**
7354 * Implement this callback to start an event listener.
7355 * @param target The context in which to listen for events. Can be
7356 * the entire window or document, the body of the document, or a specific
7357 * DOM element.
7358 * @param eventName The event to listen for.
7359 * @param callback A handler function to invoke when the event occurs.
7360 * @returns An "unlisten" function for disposing of this handler.
7361 */
7362 abstract listen(target: 'window' | 'document' | 'body' | any, eventName: string, callback: (event: any) => boolean | void): () => void;
7363}
7364
7365declare interface RendererFactory {
7366 createRenderer(hostElement: RElement | null, rendererType: RendererType2 | null): Renderer;
7367 begin?(): void;
7368 end?(): void;
7369}
7370
7371/**
7372 * Creates and initializes a custom renderer that implements the `Renderer2` base class.
7373 *
7374 * @publicApi
7375 */
7376export declare abstract class RendererFactory2 {
7377 /**
7378 * Creates and initializes a custom renderer for a host DOM element.
7379 * @param hostElement The element to render.
7380 * @param type The base class to implement.
7381 * @returns The new custom renderer instance.
7382 */
7383 abstract createRenderer(hostElement: any, type: RendererType2 | null): Renderer2;
7384 /**
7385 * A callback invoked when rendering has begun.
7386 */
7387 abstract begin?(): void;
7388 /**
7389 * A callback invoked when rendering has completed.
7390 */
7391 abstract end?(): void;
7392 /**
7393 * Use with animations test-only mode. Notifies the test when rendering has completed.
7394 * @returns The asynchronous result of the developer-defined function.
7395 */
7396 abstract whenRenderingDone?(): Promise<any>;
7397}
7398
7399/**
7400 * Flags for renderer-specific style modifiers.
7401 * @publicApi
7402 */
7403export declare enum RendererStyleFlags2 {
7404 /**
7405 * Marks a style as important.
7406 */
7407 Important = 1,
7408 /**
7409 * Marks a style as using dash case naming (this-is-dash-case).
7410 */
7411 DashCase = 2
7412}
7413
7414/**
7415 * Used by `RendererFactory2` to associate custom rendering data and styles
7416 * with a rendering implementation.
7417 * @publicApi
7418 */
7419export declare interface RendererType2 {
7420 /**
7421 * A unique identifying string for the new renderer, used when creating
7422 * unique styles for encapsulation.
7423 */
7424 id: string;
7425 /**
7426 * The view encapsulation type, which determines how styles are applied to
7427 * DOM elements. One of
7428 * - `Emulated` (default): Emulate native scoping of styles.
7429 * - `Native`: Use the native encapsulation mechanism of the renderer.
7430 * - `ShadowDom`: Use modern [Shadow
7431 * DOM](https://w3c.github.io/webcomponents/spec/shadow/) and
7432 * create a ShadowRoot for component's host element.
7433 * - `None`: Do not provide any template or style encapsulation.
7434 */
7435 encapsulation: ViewEncapsulation;
7436 /**
7437 * Defines CSS styles to be stored on a renderer instance.
7438 */
7439 styles: string[];
7440 /**
7441 * Defines arbitrary developer-defined data to be stored on a renderer instance.
7442 * This is useful for renderers that delegate to other renderers.
7443 */
7444 data: {
7445 [kind: string]: any;
7446 };
7447}
7448
7449/**
7450 * Lazily retrieves the reference value from a forwardRef.
7451 *
7452 * Acts as the identity function when given a non-forward-ref value.
7453 *
7454 * @usageNotes
7455 * ### Example
7456 *
7457 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}
7458 *
7459 * @see `forwardRef`
7460 * @publicApi
7461 */
7462export declare function resolveForwardRef<T>(type: T): T;
7463
7464/**
7465 * The goal here is to make sure that the browser DOM API is the Renderer.
7466 * We do this by defining a subset of DOM API to be the renderer and then
7467 * use that at runtime for rendering.
7468 *
7469 * At runtime we can then use the DOM api directly, in server or web-worker
7470 * it will be easy to implement such API.
7471 */
7472/** Subset of API needed for appending elements and text nodes. */
7473declare interface RNode {
7474 /**
7475 * Returns the parent Element, Document, or DocumentFragment
7476 */
7477 parentNode: RNode | null;
7478 /**
7479 * Returns the parent Element if there is one
7480 */
7481 parentElement: RElement | null;
7482 /**
7483 * Gets the Node immediately following this one in the parent's childNodes
7484 */
7485 nextSibling: RNode | null;
7486 /**
7487 * Removes a child from the current node and returns the removed node
7488 * @param oldChild the child node to remove
7489 */
7490 removeChild(oldChild: RNode): RNode;
7491 /**
7492 * Insert a child node.
7493 *
7494 * Used exclusively for adding View root nodes into ViewAnchor location.
7495 */
7496 insertBefore(newChild: RNode, refChild: RNode | null, isViewRoot: boolean): void;
7497 /**
7498 * Append a child node.
7499 *
7500 * Used exclusively for building up DOM which are static (ie not View roots)
7501 */
7502 appendChild(newChild: RNode): RNode;
7503}
7504
7505declare interface RText extends RNode {
7506 textContent: string | null;
7507}
7508
7509/**
7510 * Runs the given function in the context of the given `Injector`.
7511 *
7512 * Within the function's stack frame, `inject` can be used to inject dependencies from the given
7513 * `Injector`. Note that `inject` is only usable synchronously, and cannot be used in any
7514 * asynchronous callbacks or after any `await` points.
7515 *
7516 * @param injector the injector which will satisfy calls to `inject` while `fn` is executing
7517 * @param fn the closure to be run in the context of `injector`
7518 * @returns the return value of the function, if any
7519 * @publicApi
7520 */
7521export declare function runInInjectionContext<ReturnT>(injector: Injector, fn: () => ReturnT): ReturnT;
7522
7523
7524/**
7525 * The list of error codes used in runtime code of the `core` package.
7526 * Reserved error code range: 100-999.
7527 *
7528 * Note: the minus sign denotes the fact that a particular code has a detailed guide on
7529 * angular.io. This extra annotation is needed to avoid introducing a separate set to store
7530 * error codes which have guides, which might leak into runtime code.
7531 *
7532 * Full list of available error guides can be found at https://angular.io/errors.
7533 *
7534 * Error code ranges per package:
7535 * - core (this package): 100-999
7536 * - forms: 1000-1999
7537 * - common: 2000-2999
7538 * - animations: 3000-3999
7539 * - router: 4000-4999
7540 * - platform-browser: 5000-5500
7541 */
7542declare const enum RuntimeErrorCode {
7543 EXPRESSION_CHANGED_AFTER_CHECKED = -100,
7544 RECURSIVE_APPLICATION_REF_TICK = 101,
7545 CYCLIC_DI_DEPENDENCY = -200,
7546 PROVIDER_NOT_FOUND = -201,
7547 INVALID_FACTORY_DEPENDENCY = 202,
7548 MISSING_INJECTION_CONTEXT = -203,
7549 INVALID_INJECTION_TOKEN = 204,
7550 INJECTOR_ALREADY_DESTROYED = 205,
7551 PROVIDER_IN_WRONG_CONTEXT = 207,
7552 MISSING_INJECTION_TOKEN = 208,
7553 INVALID_MULTI_PROVIDER = -209,
7554 MISSING_DOCUMENT = 210,
7555 MULTIPLE_COMPONENTS_MATCH = -300,
7556 EXPORT_NOT_FOUND = -301,
7557 PIPE_NOT_FOUND = -302,
7558 UNKNOWN_BINDING = 303,
7559 UNKNOWN_ELEMENT = 304,
7560 TEMPLATE_STRUCTURE_ERROR = 305,
7561 INVALID_EVENT_BINDING = 306,
7562 HOST_DIRECTIVE_UNRESOLVABLE = 307,
7563 HOST_DIRECTIVE_NOT_STANDALONE = 308,
7564 DUPLICATE_DIRECTITVE = 309,
7565 HOST_DIRECTIVE_COMPONENT = 310,
7566 HOST_DIRECTIVE_UNDEFINED_BINDING = 311,
7567 HOST_DIRECTIVE_CONFLICTING_ALIAS = 312,
7568 MULTIPLE_PLATFORMS = 400,
7569 PLATFORM_NOT_FOUND = 401,
7570 MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP = 402,
7571 BOOTSTRAP_COMPONENTS_NOT_FOUND = -403,
7572 PLATFORM_ALREADY_DESTROYED = 404,
7573 ASYNC_INITIALIZERS_STILL_RUNNING = 405,
7574 APPLICATION_REF_ALREADY_DESTROYED = 406,
7575 RENDERER_NOT_FOUND = 407,
7576 HYDRATION_NODE_MISMATCH = -500,
7577 HYDRATION_MISSING_SIBLINGS = -501,
7578 HYDRATION_MISSING_NODE = -502,
7579 UNSUPPORTED_PROJECTION_DOM_NODES = -503,
7580 INVALID_SKIP_HYDRATION_HOST = -504,
7581 MISSING_HYDRATION_ANNOTATIONS = -505,
7582 HYDRATION_STABLE_TIMEDOUT = -506,
7583 SIGNAL_WRITE_FROM_ILLEGAL_CONTEXT = 600,
7584 REQUIRE_SYNC_WITHOUT_SYNC_EMIT = 601,
7585 INVALID_I18N_STRUCTURE = 700,
7586 MISSING_LOCALE_DATA = 701,
7587 IMPORT_PROVIDERS_FROM_STANDALONE = 800,
7588 INVALID_DIFFER_INPUT = 900,
7589 NO_SUPPORTING_DIFFER_FACTORY = 901,
7590 VIEW_ALREADY_ATTACHED = 902,
7591 INVALID_INHERITANCE = 903,
7592 UNSAFE_VALUE_IN_RESOURCE_URL = 904,
7593 UNSAFE_VALUE_IN_SCRIPT = 905,
7594 MISSING_GENERATED_DEF = 906,
7595 TYPE_IS_NOT_STANDALONE = 907,
7596 MISSING_ZONEJS = 908,
7597 UNEXPECTED_ZONE_STATE = 909,
7598 UNSAFE_IFRAME_ATTRS = -910,
7599 VIEW_ALREADY_DESTROYED = 911,
7600 COMPONENT_ID_COLLISION = -912
7601}
7602
7603/**
7604 * Sanitizer is used by the views to sanitize potentially dangerous values.
7605 *
7606 * @publicApi
7607 */
7608export declare abstract class Sanitizer {
7609 abstract sanitize(context: SecurityContext, value: {} | string | null): string | null;
7610 /** @nocollapse */
7611 static ɵprov: unknown;
7612}
7613
7614/**
7615 * Function used to sanitize the value before writing it into the renderer.
7616 */
7617declare type SanitizerFn = (value: any, tagName?: string, propName?: string) => string | TrustedHTML | TrustedScript | TrustedScriptURL;
7618
7619
7620/**
7621 * A schema definition associated with an NgModule.
7622 *
7623 * @see `@NgModule`, `CUSTOM_ELEMENTS_SCHEMA`, `NO_ERRORS_SCHEMA`
7624 *
7625 * @param name The name of a defined schema.
7626 *
7627 * @publicApi
7628 */
7629export declare interface SchemaMetadata {
7630 name: string;
7631}
7632
7633
7634/**
7635 * A SecurityContext marks a location that has dangerous security implications, e.g. a DOM property
7636 * like `innerHTML` that could cause Cross Site Scripting (XSS) security bugs when improperly
7637 * handled.
7638 *
7639 * See DomSanitizer for more details on security in Angular applications.
7640 *
7641 * @publicApi
7642 */
7643export declare enum SecurityContext {
7644 NONE = 0,
7645 HTML = 1,
7646 STYLE = 2,
7647 SCRIPT = 3,
7648 URL = 4,
7649 RESOURCE_URL = 5
7650}
7651
7652/** Flags used to build up CssSelectors */
7653declare const enum SelectorFlags {
7654 /** Indicates this is the beginning of a new negative selector */
7655 NOT = 1,
7656 /** Mode for matching attributes */
7657 ATTRIBUTE = 2,
7658 /** Mode for matching tag names */
7659 ELEMENT = 4,
7660 /** Mode for matching class names */
7661 CLASS = 8
7662}
7663
7664/**
7665 * Type of the Self metadata.
7666 *
7667 * @publicApi
7668 */
7669export declare interface Self {
7670}
7671
7672/**
7673 * Self decorator and metadata.
7674 *
7675 * @Annotation
7676 * @publicApi
7677 */
7678export declare const Self: SelfDecorator;
7679
7680/**
7681 * Type of the Self decorator / constructor function.
7682 *
7683 * @publicApi
7684 */
7685export declare interface SelfDecorator {
7686 /**
7687 * Parameter decorator to be used on constructor parameters,
7688 * which tells the DI framework to start dependency resolution from the local injector.
7689 *
7690 * Resolution works upward through the injector hierarchy, so the children
7691 * of this class must configure their own providers or be prepared for a `null` result.
7692 *
7693 * @usageNotes
7694 *
7695 * In the following example, the dependency can be resolved
7696 * by the local injector when instantiating the class itself, but not
7697 * when instantiating a child.
7698 *
7699 * <code-example path="core/di/ts/metadata_spec.ts" region="Self">
7700 * </code-example>
7701 *
7702 * @see `SkipSelf`
7703 * @see `Optional`
7704 *
7705 */
7706 (): any;
7707 new (): Self;
7708}
7709
7710/**
7711 * Serialized data structure that contains relevant hydration
7712 * annotation information about a view that is a part of a
7713 * ViewContainer collection.
7714 */
7715declare interface SerializedContainerView extends SerializedView {
7716 /**
7717 * Unique id that represents a TView that was used to create
7718 * a given instance of a view:
7719 * - TViewType.Embedded: a unique id generated during serialization on the server
7720 * - TViewType.Component: an id generated based on component properties
7721 * (see `getComponentId` function for details)
7722 */
7723 [TEMPLATE_ID]: string;
7724 /**
7725 * Number of root nodes that belong to this view.
7726 * This information is needed to effectively traverse the DOM tree
7727 * and identify segments that belong to different views.
7728 */
7729 [NUM_ROOT_NODES]: number;
7730 /**
7731 * Number of times this view is repeated.
7732 * This is used to avoid serializing and sending the same hydration
7733 * information about similar views (for example, produced by *ngFor).
7734 */
7735 [MULTIPLIER]?: number;
7736}
7737
7738/**
7739 * Represents element containers within this view, stored as key-value pairs
7740 * where key is an index of a container in an LView (also used in the
7741 * `elementContainerStart` instruction), the value is the number of root nodes
7742 * in this container. This information is needed to locate an anchor comment
7743 * node that goes after all container nodes.
7744 */
7745declare interface SerializedElementContainers {
7746 [key: number]: number;
7747}
7748
7749/**
7750 * Serialized data structure that contains relevant hydration
7751 * annotation information that describes a given hydration boundary
7752 * (e.g. a component).
7753 */
7754declare interface SerializedView {
7755 /**
7756 * Serialized information about <ng-container>s.
7757 */
7758 [ELEMENT_CONTAINERS]?: SerializedElementContainers;
7759 /**
7760 * Serialized information about templates.
7761 * Key-value pairs where a key is an index of the corresponding
7762 * `template` instruction and the value is a unique id that can
7763 * be used during hydration to identify that template.
7764 */
7765 [TEMPLATES]?: Record<number, string>;
7766 /**
7767 * Serialized information about view containers.
7768 * Key-value pairs where a key is an index of the corresponding
7769 * LContainer entry within an LView, and the value is a list
7770 * of serialized information about views within this container.
7771 */
7772 [CONTAINERS]?: Record<number, SerializedContainerView[]>;
7773 /**
7774 * Serialized information about nodes in a template.
7775 * Key-value pairs where a key is an index of the corresponding
7776 * DOM node in an LView and the value is a path that describes
7777 * the location of this node (as a set of navigation instructions).
7778 */
7779 [NODES]?: Record<number, string>;
7780 /**
7781 * A list of ids which represents a set of nodes disconnected
7782 * from the DOM tree at the serialization time, but otherwise
7783 * present in the internal data structures.
7784 *
7785 * This information is used to avoid triggering the hydration
7786 * logic for such nodes and instead use a regular "creation mode".
7787 */
7788 [DISCONNECTED_NODES]?: number[];
7789}
7790
7791/**
7792 * Set the {@link GetTestability} implementation used by the Angular testing framework.
7793 * @publicApi
7794 */
7795export declare function setTestabilityGetter(getter: GetTestability): void;
7796
7797/**
7798 * Symbol used to tell `Signal`s apart from other functions.
7799 *
7800 * This can be used to auto-unwrap signals in various cases, or to auto-wrap non-signal values.
7801 */
7802declare const SIGNAL: unique symbol;
7803
7804/**
7805 * A reactive value which notifies consumers of any changes.
7806 *
7807 * Signals are functions which returns their current value. To access the current value of a signal,
7808 * call it.
7809 *
7810 * Ordinary values can be turned into `Signal`s with the `signal` function.
7811 *
7812 * @developerPreview
7813 */
7814export declare type Signal<T> = (() => T) & {
7815 [SIGNAL]: unknown;
7816};
7817
7818/**
7819 * Create a `Signal` that can be set or updated directly.
7820 *
7821 * @developerPreview
7822 */
7823export declare function signal<T>(initialValue: T, options?: CreateSignalOptions<T>): WritableSignal<T>;
7824
7825
7826/**
7827 * Represents a basic change from a previous to a new value for a single
7828 * property on a directive instance. Passed as a value in a
7829 * {@link SimpleChanges} object to the `ngOnChanges` hook.
7830 *
7831 * @see `OnChanges`
7832 *
7833 * @publicApi
7834 */
7835export declare class SimpleChange {
7836 previousValue: any;
7837 currentValue: any;
7838 firstChange: boolean;
7839 constructor(previousValue: any, currentValue: any, firstChange: boolean);
7840 /**
7841 * Check whether the new value is the first value assigned.
7842 */
7843 isFirstChange(): boolean;
7844}
7845
7846/**
7847 * A hashtable of changes represented by {@link SimpleChange} objects stored
7848 * at the declared property name they belong to on a Directive or Component. This is
7849 * the type passed to the `ngOnChanges` hook.
7850 *
7851 * @see `OnChanges`
7852 *
7853 * @publicApi
7854 */
7855export declare interface SimpleChanges {
7856 [propName: string]: SimpleChange;
7857}
7858
7859/**
7860 * Type of the `SkipSelf` metadata.
7861 *
7862 * @publicApi
7863 */
7864export declare interface SkipSelf {
7865}
7866
7867/**
7868 * `SkipSelf` decorator and metadata.
7869 *
7870 * @Annotation
7871 * @publicApi
7872 */
7873export declare const SkipSelf: SkipSelfDecorator;
7874
7875/**
7876 * Type of the `SkipSelf` decorator / constructor function.
7877 *
7878 * @publicApi
7879 */
7880export declare interface SkipSelfDecorator {
7881 /**
7882 * Parameter decorator to be used on constructor parameters,
7883 * which tells the DI framework to start dependency resolution from the parent injector.
7884 * Resolution works upward through the injector hierarchy, so the local injector
7885 * is not checked for a provider.
7886 *
7887 * @usageNotes
7888 *
7889 * In the following example, the dependency can be resolved when
7890 * instantiating a child, but not when instantiating the class itself.
7891 *
7892 * <code-example path="core/di/ts/metadata_spec.ts" region="SkipSelf">
7893 * </code-example>
7894 *
7895 * @see [Dependency Injection guide](guide/dependency-injection-in-action#skip).
7896 * @see `Self`
7897 * @see `Optional`
7898 *
7899 */
7900 (): any;
7901 new (): SkipSelf;
7902}
7903
7904
7905/**
7906 * A type-safe key to use with `TransferState`.
7907 *
7908 * Example:
7909 *
7910 * ```
7911 * const COUNTER_KEY = makeStateKey<number>('counter');
7912 * let value = 10;
7913 *
7914 * transferState.set(COUNTER_KEY, value);
7915 * ```
7916 *
7917 * @publicApi
7918 */
7919export declare type StateKey<T> = string & {
7920 __not_a_string: never;
7921 __value_type?: T;
7922};
7923
7924/**
7925 * Configures the `Injector` to return an instance of `useClass` for a token.
7926 * @see ["Dependency Injection Guide"](guide/dependency-injection).
7927 *
7928 * @usageNotes
7929 *
7930 * {@example core/di/ts/provider_spec.ts region='StaticClassProvider'}
7931 *
7932 * Note that following two providers are not equal:
7933 *
7934 * {@example core/di/ts/provider_spec.ts region='StaticClassProviderDifference'}
7935 *
7936 * ### Multi-value example
7937 *
7938 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
7939 *
7940 * @publicApi
7941 */
7942export declare interface StaticClassProvider extends StaticClassSansProvider {
7943 /**
7944 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
7945 */
7946 provide: any;
7947 /**
7948 * When true, injector returns an array of instances. This is useful to allow multiple
7949 * providers spread across many files to provide configuration information to a common token.
7950 */
7951 multi?: boolean;
7952}
7953
7954/**
7955 * Configures the `Injector` to return an instance of `useClass` for a token.
7956 * Base for `StaticClassProvider` decorator.
7957 *
7958 * @publicApi
7959 */
7960export declare interface StaticClassSansProvider {
7961 /**
7962 * An optional class to instantiate for the `token`. By default, the `provide`
7963 * class is instantiated.
7964 */
7965 useClass: Type<any>;
7966 /**
7967 * A list of `token`s to be resolved by the injector. The list of values is then
7968 * used as arguments to the `useClass` constructor.
7969 */
7970 deps: any[];
7971}
7972
7973/**
7974 * Describes how an `Injector` should be configured as static (that is, without reflection).
7975 * A static provider provides tokens to an injector for various types of dependencies.
7976 *
7977 * @see `Injector.create()`.
7978 * @see ["Dependency Injection Guide"](guide/dependency-injection-providers).
7979 *
7980 * @publicApi
7981 */
7982export declare type StaticProvider = ValueProvider | ExistingProvider | StaticClassProvider | ConstructorProvider | FactoryProvider | any[];
7983
7984declare const T_HOST = 6;
7985
7986/**
7987 * A combination of:
7988 * - Attribute names and values.
7989 * - Special markers acting as flags to alter attributes processing.
7990 * - Parsed ngProjectAs selectors.
7991 */
7992declare type TAttributes = (string | ɵAttributeMarker | CssSelector)[];
7993
7994/**
7995 * Constants that are associated with a view. Includes:
7996 * - Attribute arrays.
7997 * - Local definition arrays.
7998 * - Translated messages (i18n).
7999 */
8000declare type TConstants = (TAttributes | string)[];
8001
8002/**
8003 * Factory function that returns an array of consts. Consts can be represented as a function in
8004 * case any additional statements are required to define consts in the list. An example is i18n
8005 * where additional i18n calls are generated, which should be executed when consts are requested
8006 * for the first time.
8007 */
8008declare type TConstantsFactory = () => TConstants;
8009
8010/**
8011 * TConstants type that describes how the `consts` field is generated on ComponentDef: it can be
8012 * either an array or a factory function that returns that array.
8013 */
8014declare type TConstantsOrFactory = TConstants | TConstantsFactory;
8015
8016/** Static data for an LContainer */
8017declare interface TContainerNode extends TNode {
8018 /**
8019 * Index in the data[] array.
8020 *
8021 * If it's -1, this is a dynamically created container node that isn't stored in
8022 * data[] (e.g. when you inject ViewContainerRef) .
8023 */
8024 index: number;
8025 child: null;
8026 /**
8027 * Container nodes will have parents unless:
8028 *
8029 * - They are the first node of a component or embedded view
8030 * - They are dynamically created
8031 */
8032 parent: TElementNode | TElementContainerNode | null;
8033 tView: TView | null;
8034 projection: null;
8035 value: null;
8036}
8037
8038/**
8039 * Static data that corresponds to the instance-specific data array on an LView.
8040 *
8041 * Each node's static data is stored in tData at the same index that it's stored
8042 * in the data array. Any nodes that do not have static data store a null value in
8043 * tData to avoid a sparse array.
8044 *
8045 * Each pipe's definition is stored here at the same index as its pipe instance in
8046 * the data array.
8047 *
8048 * Each host property's name is stored here at the same index as its value in the
8049 * data array.
8050 *
8051 * Each property binding name is stored here at the same index as its value in
8052 * the data array. If the binding is an interpolation, the static string values
8053 * are stored parallel to the dynamic values. Example:
8054 *
8055 * id="prefix {{ v0 }} a {{ v1 }} b {{ v2 }} suffix"
8056 *
8057 * LView | TView.data
8058 *------------------------
8059 * v0 value | 'a'
8060 * v1 value | 'b'
8061 * v2 value | id � prefix � suffix
8062 *
8063 * Injector bloom filters are also stored here.
8064 */
8065declare type TData = (TNode | ɵPipeDef<any> | ɵDirectiveDef<any> | ɵComponentDef<any> | number | TStylingRange | TStylingKey | ProviderToken<any> | TI18n | I18nUpdateOpCodes | TIcu | null | string)[];
8066
8067/** Static data for an <ng-container> */
8068declare interface TElementContainerNode extends TNode {
8069 /** Index in the LView[] array. */
8070 index: number;
8071 child: TElementNode | TTextNode | TContainerNode | TElementContainerNode | TProjectionNode | null;
8072 parent: TElementNode | TElementContainerNode | null;
8073 tView: null;
8074 projection: null;
8075}
8076
8077/** Static data for an element */
8078declare interface TElementNode extends TNode {
8079 /** Index in the data[] array */
8080 index: number;
8081 child: TElementNode | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null;
8082 /**
8083 * Element nodes will have parents unless they are the first node of a component or
8084 * embedded view (which means their parent is in a different view and must be
8085 * retrieved using viewData[HOST_NODE]).
8086 */
8087 parent: TElementNode | TElementContainerNode | null;
8088 tView: null;
8089 /**
8090 * If this is a component TNode with projection, this will be an array of projected
8091 * TNodes or native nodes (see TNode.projection for more info). If it's a regular element node
8092 * or a component without projection, it will be null.
8093 */
8094 projection: (TNode | RNode[])[] | null;
8095 /**
8096 * Stores TagName
8097 */
8098 value: string;
8099}
8100
8101declare const TEMPLATE_ID = "i";
8102
8103/**
8104 * Represents an embedded template that can be used to instantiate embedded views.
8105 * To instantiate embedded views based on a template, use the `ViewContainerRef`
8106 * method `createEmbeddedView()`.
8107 *
8108 * Access a `TemplateRef` instance by placing a directive on an `<ng-template>`
8109 * element (or directive prefixed with `*`). The `TemplateRef` for the embedded view
8110 * is injected into the constructor of the directive,
8111 * using the `TemplateRef` token.
8112 *
8113 * You can also use a `Query` to find a `TemplateRef` associated with
8114 * a component or a directive.
8115 *
8116 * @see `ViewContainerRef`
8117 * @see [Navigate the Component Tree with DI](guide/dependency-injection-navtree)
8118 *
8119 * @publicApi
8120 */
8121export declare abstract class TemplateRef<C> {
8122 /**
8123 * The anchor element in the parent view for this embedded view.
8124 *
8125 * The data-binding and injection contexts of embedded views created from this `TemplateRef`
8126 * inherit from the contexts of this location.
8127 *
8128 * Typically new embedded views are attached to the view container of this location, but in
8129 * advanced use-cases, the view can be attached to a different container while keeping the
8130 * data-binding and injection context from the original location.
8131 *
8132 */
8133 abstract readonly elementRef: ElementRef;
8134 /**
8135 * Instantiates an unattached embedded view based on this template.
8136 * @param context The data-binding context of the embedded view, as declared
8137 * in the `<ng-template>` usage.
8138 * @param injector Injector to be used within the embedded view.
8139 * @returns The new embedded view object.
8140 */
8141 abstract createEmbeddedView(context: C, injector?: Injector): EmbeddedViewRef<C>;
8142}
8143
8144declare const TEMPLATES = "t";
8145
8146/**
8147 * The Testability service provides testing hooks that can be accessed from
8148 * the browser.
8149 *
8150 * Angular applications bootstrapped using an NgModule (via `@NgModule.bootstrap` field) will also
8151 * instantiate Testability by default (in both development and production modes).
8152 *
8153 * For applications bootstrapped using the `bootstrapApplication` function, Testability is not
8154 * included by default. You can include it into your applications by getting the list of necessary
8155 * providers using the `provideProtractorTestingSupport()` function and adding them into the
8156 * `options.providers` array. Example:
8157 *
8158 * ```typescript
8159 * import {provideProtractorTestingSupport} from '@angular/platform-browser';
8160 *
8161 * await bootstrapApplication(RootComponent, providers: [provideProtractorTestingSupport()]);
8162 * ```
8163 *
8164 * @publicApi
8165 */
8166export declare class Testability implements PublicTestability {
8167 private _ngZone;
8168 private registry;
8169 private _pendingCount;
8170 private _isZoneStable;
8171 private _callbacks;
8172 private taskTrackingZone;
8173 constructor(_ngZone: NgZone, registry: TestabilityRegistry, testabilityGetter: GetTestability);
8174 private _watchAngularEvents;
8175 /**
8176 * Increases the number of pending request
8177 * @deprecated pending requests are now tracked with zones.
8178 */
8179 increasePendingRequestCount(): number;
8180 /**
8181 * Decreases the number of pending request
8182 * @deprecated pending requests are now tracked with zones
8183 */
8184 decreasePendingRequestCount(): number;
8185 /**
8186 * Whether an associated application is stable
8187 */
8188 isStable(): boolean;
8189 private _runCallbacksIfReady;
8190 private getPendingTasks;
8191 private addCallback;
8192 /**
8193 * Wait for the application to be stable with a timeout. If the timeout is reached before that
8194 * happens, the callback receives a list of the macro tasks that were pending, otherwise null.
8195 *
8196 * @param doneCb The callback to invoke when Angular is stable or the timeout expires
8197 * whichever comes first.
8198 * @param timeout Optional. The maximum time to wait for Angular to become stable. If not
8199 * specified, whenStable() will wait forever.
8200 * @param updateCb Optional. If specified, this callback will be invoked whenever the set of
8201 * pending macrotasks changes. If this callback returns true doneCb will not be invoked
8202 * and no further updates will be issued.
8203 */
8204 whenStable(doneCb: Function, timeout?: number, updateCb?: Function): void;
8205 /**
8206 * Get the number of pending requests
8207 * @deprecated pending requests are now tracked with zones
8208 */
8209 getPendingRequestCount(): number;
8210 /**
8211 * Find providers by name
8212 * @param using The root element to search from
8213 * @param provider The name of binding variable
8214 * @param exactMatch Whether using exactMatch
8215 */
8216 findProviders(using: any, provider: string, exactMatch: boolean): any[];
8217 static ɵfac: i0.ɵɵFactoryDeclaration<Testability, never>;
8218 static ɵprov: i0.ɵɵInjectableDeclaration<Testability>;
8219}
8220
8221/**
8222 * A global registry of {@link Testability} instances for specific elements.
8223 * @publicApi
8224 */
8225export declare class TestabilityRegistry {
8226 /**
8227 * Registers an application with a testability hook so that it can be tracked
8228 * @param token token of application, root element
8229 * @param testability Testability hook
8230 */
8231 registerApplication(token: any, testability: Testability): void;
8232 /**
8233 * Unregisters an application.
8234 * @param token token of application, root element
8235 */
8236 unregisterApplication(token: any): void;
8237 /**
8238 * Unregisters all applications
8239 */
8240 unregisterAllApplications(): void;
8241 /**
8242 * Get a testability hook associated with the application
8243 * @param elem root element
8244 */
8245 getTestability(elem: any): Testability | null;
8246 /**
8247 * Get all registered testabilities
8248 */
8249 getAllTestabilities(): Testability[];
8250 /**
8251 * Get all registered applications(root elements)
8252 */
8253 getAllRootElements(): any[];
8254 /**
8255 * Find testability of a node in the Tree
8256 * @param elem node
8257 * @param findInAncestors whether finding testability in ancestors if testability was not found in
8258 * current node
8259 */
8260 findTestabilityInTree(elem: Node, findInAncestors?: boolean): Testability | null;
8261 static ɵfac: i0.ɵɵFactoryDeclaration<TestabilityRegistry, never>;
8262 static ɵprov: i0.ɵɵInjectableDeclaration<TestabilityRegistry>;
8263}
8264
8265/**
8266 * Store information for the i18n translation block.
8267 */
8268declare interface TI18n {
8269 /**
8270 * A set of OpCodes which will create the Text Nodes and ICU anchors for the translation blocks.
8271 *
8272 * NOTE: The ICU anchors are filled in with ICU Update OpCode.
8273 */
8274 create: I18nCreateOpCodes;
8275 /**
8276 * A set of OpCodes which will be executed on each change detection to determine if any changes to
8277 * DOM are required.
8278 */
8279 update: I18nUpdateOpCodes;
8280}
8281
8282declare interface TIcu {
8283 /**
8284 * Defines the ICU type of `select` or `plural`
8285 */
8286 type: IcuType;
8287 /**
8288 * Index in `LView` where the anchor node is stored. `<!-- ICU 0:0 -->`
8289 */
8290 anchorIdx: number;
8291 /**
8292 * Currently selected ICU case pointer.
8293 *
8294 * `lView[currentCaseLViewIndex]` stores the currently selected case. This is needed to know how
8295 * to clean up the current case when transitioning no the new case.
8296 *
8297 * If the value stored is:
8298 * `null`: No current case selected.
8299 * `<0`: A flag which means that the ICU just switched and that `icuUpdate` must be executed
8300 * regardless of the `mask`. (After the execution the flag is cleared)
8301 * `>=0` A currently selected case index.
8302 */
8303 currentCaseLViewIndex: number;
8304 /**
8305 * A list of case values which the current ICU will try to match.
8306 *
8307 * The last value is `other`
8308 */
8309 cases: any[];
8310 /**
8311 * A set of OpCodes to apply in order to build up the DOM render tree for the ICU
8312 */
8313 create: IcuCreateOpCodes[];
8314 /**
8315 * A set of OpCodes to apply in order to destroy the DOM render tree for the ICU.
8316 */
8317 remove: I18nRemoveOpCodes[];
8318 /**
8319 * A set of OpCodes to apply in order to update the DOM render tree for the ICU bindings.
8320 */
8321 update: I18nUpdateOpCodes[];
8322}
8323
8324/**
8325 * Binding data (flyweight) for a particular node that is shared between all templates
8326 * of a specific type.
8327 *
8328 * If a property is:
8329 * - PropertyAliases: that property's data was generated and this is it
8330 * - Null: that property's data was already generated and nothing was found.
8331 * - Undefined: that property's data has not yet been generated
8332 *
8333 * see: https://en.wikipedia.org/wiki/Flyweight_pattern for more on the Flyweight pattern
8334 */
8335declare interface TNode {
8336 /** The type of the TNode. See TNodeType. */
8337 type: TNodeType;
8338 /**
8339 * Index of the TNode in TView.data and corresponding native element in LView.
8340 *
8341 * This is necessary to get from any TNode to its corresponding native element when
8342 * traversing the node tree.
8343 *
8344 * If index is -1, this is a dynamically created container node or embedded view node.
8345 */
8346 index: number;
8347 /**
8348 * Insert before existing DOM node index.
8349 *
8350 * When DOM nodes are being inserted, normally they are being appended as they are created.
8351 * Under i18n case, the translated text nodes are created ahead of time as part of the
8352 * `ɵɵi18nStart` instruction which means that this `TNode` can't just be appended and instead
8353 * needs to be inserted using `insertBeforeIndex` semantics.
8354 *
8355 * Additionally sometimes it is necessary to insert new text nodes as a child of this `TNode`. In
8356 * such a case the value stores an array of text nodes to insert.
8357 *
8358 * Example:
8359 * ```
8360 * <div i18n>
8361 * Hello <span>World</span>!
8362 * </div>
8363 * ```
8364 * In the above example the `ɵɵi18nStart` instruction can create `Hello `, `World` and `!` text
8365 * nodes. It can also insert `Hello ` and `!` text node as a child of `<div>`, but it can't
8366 * insert `World` because the `<span>` node has not yet been created. In such a case the
8367 * `<span>` `TNode` will have an array which will direct the `<span>` to not only insert
8368 * itself in front of `!` but also to insert the `World` (created by `ɵɵi18nStart`) into
8369 * `<span>` itself.
8370 *
8371 * Pseudo code:
8372 * ```
8373 * if (insertBeforeIndex === null) {
8374 * // append as normal
8375 * } else if (Array.isArray(insertBeforeIndex)) {
8376 * // First insert current `TNode` at correct location
8377 * const currentNode = lView[this.index];
8378 * parentNode.insertBefore(currentNode, lView[this.insertBeforeIndex[0]]);
8379 * // Now append all of the children
8380 * for(let i=1; i<this.insertBeforeIndex; i++) {
8381 * currentNode.appendChild(lView[this.insertBeforeIndex[i]]);
8382 * }
8383 * } else {
8384 * parentNode.insertBefore(lView[this.index], lView[this.insertBeforeIndex])
8385 * }
8386 * ```
8387 * - null: Append as normal using `parentNode.appendChild`
8388 * - `number`: Append using
8389 * `parentNode.insertBefore(lView[this.index], lView[this.insertBeforeIndex])`
8390 *
8391 * *Initialization*
8392 *
8393 * Because `ɵɵi18nStart` executes before nodes are created, on `TView.firstCreatePass` it is not
8394 * possible for `ɵɵi18nStart` to set the `insertBeforeIndex` value as the corresponding `TNode`
8395 * has not yet been created. For this reason the `ɵɵi18nStart` creates a `TNodeType.Placeholder`
8396 * `TNode` at that location. See `TNodeType.Placeholder` for more information.
8397 */
8398 insertBeforeIndex: InsertBeforeIndex;
8399 /**
8400 * The index of the closest injector in this node's LView.
8401 *
8402 * If the index === -1, there is no injector on this node or any ancestor node in this view.
8403 *
8404 * If the index !== -1, it is the index of this node's injector OR the index of a parent
8405 * injector in the same view. We pass the parent injector index down the node tree of a view so
8406 * it's possible to find the parent injector without walking a potentially deep node tree.
8407 * Injector indices are not set across view boundaries because there could be multiple component
8408 * hosts.
8409 *
8410 * If tNode.injectorIndex === tNode.parent.injectorIndex, then the index belongs to a parent
8411 * injector.
8412 */
8413 injectorIndex: number;
8414 /** Stores starting index of the directives. */
8415 directiveStart: number;
8416 /**
8417 * Stores final exclusive index of the directives.
8418 *
8419 * The area right behind the `directiveStart-directiveEnd` range is used to allocate the
8420 * `HostBindingFunction` `vars` (or null if no bindings.) Therefore `directiveEnd` is used to set
8421 * `LFrame.bindingRootIndex` before `HostBindingFunction` is executed.
8422 */
8423 directiveEnd: number;
8424 /**
8425 * Offset from the `directiveStart` at which the component (one at most) of the node is stored.
8426 * Set to -1 if no components have been applied to the node. Component index can be found using
8427 * `directiveStart + componentOffset`.
8428 */
8429 componentOffset: number;
8430 /**
8431 * Stores the last directive which had a styling instruction.
8432 *
8433 * Initial value of this is `-1` which means that no `hostBindings` styling instruction has
8434 * executed. As `hostBindings` instructions execute they set the value to the index of the
8435 * `DirectiveDef` which contained the last `hostBindings` styling instruction.
8436 *
8437 * Valid values are:
8438 * - `-1` No `hostBindings` instruction has executed.
8439 * - `directiveStart <= directiveStylingLast < directiveEnd`: Points to the `DirectiveDef` of
8440 * the last styling instruction which executed in the `hostBindings`.
8441 *
8442 * This data is needed so that styling instructions know which static styling data needs to be
8443 * collected from the `DirectiveDef.hostAttrs`. A styling instruction needs to collect all data
8444 * since last styling instruction.
8445 */
8446 directiveStylingLast: number;
8447 /**
8448 * Stores indexes of property bindings. This field is only set in the ngDevMode and holds
8449 * indexes of property bindings so TestBed can get bound property metadata for a given node.
8450 */
8451 propertyBindings: number[] | null;
8452 /**
8453 * Stores if Node isComponent, isProjected, hasContentQuery, hasClassInput and hasStyleInput
8454 * etc.
8455 */
8456 flags: TNodeFlags;
8457 /**
8458 * This number stores two values using its bits:
8459 *
8460 * - the index of the first provider on that node (first 16 bits)
8461 * - the count of view providers from the component on this node (last 16 bits)
8462 */
8463 providerIndexes: TNodeProviderIndexes;
8464 /**
8465 * The value name associated with this node.
8466 * if type:
8467 * `TNodeType.Text`: text value
8468 * `TNodeType.Element`: tag name
8469 * `TNodeType.ICUContainer`: `TIcu`
8470 */
8471 value: any;
8472 /**
8473 * Attributes associated with an element. We need to store attributes to support various
8474 * use-cases (attribute injection, content projection with selectors, directives matching).
8475 * Attributes are stored statically because reading them from the DOM would be way too slow for
8476 * content projection and queries.
8477 *
8478 * Since attrs will always be calculated first, they will never need to be marked undefined by
8479 * other instructions.
8480 *
8481 * For regular attributes a name of an attribute and its value alternate in the array.
8482 * e.g. ['role', 'checkbox']
8483 * This array can contain flags that will indicate "special attributes" (attributes with
8484 * namespaces, attributes extracted from bindings and outputs).
8485 */
8486 attrs: TAttributes | null;
8487 /**
8488 * Same as `TNode.attrs` but contains merged data across all directive host bindings.
8489 *
8490 * We need to keep `attrs` as unmerged so that it can be used for attribute selectors.
8491 * We merge attrs here so that it can be used in a performant way for initial rendering.
8492 *
8493 * The `attrs` are merged in first pass in following order:
8494 * - Component's `hostAttrs`
8495 * - Directives' `hostAttrs`
8496 * - Template `TNode.attrs` associated with the current `TNode`.
8497 */
8498 mergedAttrs: TAttributes | null;
8499 /**
8500 * A set of local names under which a given element is exported in a template and
8501 * visible to queries. An entry in this array can be created for different reasons:
8502 * - an element itself is referenced, ex.: `<div #foo>`
8503 * - a component is referenced, ex.: `<my-cmpt #foo>`
8504 * - a directive is referenced, ex.: `<my-cmpt #foo="directiveExportAs">`.
8505 *
8506 * A given element might have different local names and those names can be associated
8507 * with a directive. We store local names at even indexes while odd indexes are reserved
8508 * for directive index in a view (or `-1` if there is no associated directive).
8509 *
8510 * Some examples:
8511 * - `<div #foo>` => `["foo", -1]`
8512 * - `<my-cmpt #foo>` => `["foo", myCmptIdx]`
8513 * - `<my-cmpt #foo #bar="directiveExportAs">` => `["foo", myCmptIdx, "bar", directiveIdx]`
8514 * - `<div #foo #bar="directiveExportAs">` => `["foo", -1, "bar", directiveIdx]`
8515 */
8516 localNames: (string | number)[] | null;
8517 /** Information about input properties that need to be set once from attribute data. */
8518 initialInputs: InitialInputData | null | undefined;
8519 /**
8520 * Input data for all directives on this node. `null` means that there are no directives with
8521 * inputs on this node.
8522 */
8523 inputs: PropertyAliases | null;
8524 /**
8525 * Output data for all directives on this node. `null` means that there are no directives with
8526 * outputs on this node.
8527 */
8528 outputs: PropertyAliases | null;
8529 /**
8530 * The TView attached to this node.
8531 *
8532 * If this TNode corresponds to an LContainer with a template (e.g. structural
8533 * directive), the template's TView will be stored here.
8534 *
8535 * If this TNode corresponds to an element, tView will be `null`.
8536 */
8537 tView: TView | null;
8538 /**
8539 * The next sibling node. Necessary so we can propagate through the root nodes of a view
8540 * to insert them or remove them from the DOM.
8541 */
8542 next: TNode | null;
8543 /**
8544 * The previous sibling node.
8545 * This simplifies operations when we need a pointer to the previous node.
8546 */
8547 prev: TNode | null;
8548 /**
8549 * The next projected sibling. Since in Angular content projection works on the node-by-node
8550 * basis the act of projecting nodes might change nodes relationship at the insertion point
8551 * (target view). At the same time we need to keep initial relationship between nodes as
8552 * expressed in content view.
8553 */
8554 projectionNext: TNode | null;
8555 /**
8556 * First child of the current node.
8557 *
8558 * For component nodes, the child will always be a ContentChild (in same view).
8559 * For embedded view nodes, the child will be in their child view.
8560 */
8561 child: TNode | null;
8562 /**
8563 * Parent node (in the same view only).
8564 *
8565 * We need a reference to a node's parent so we can append the node to its parent's native
8566 * element at the appropriate time.
8567 *
8568 * If the parent would be in a different view (e.g. component host), this property will be null.
8569 * It's important that we don't try to cross component boundaries when retrieving the parent
8570 * because the parent will change (e.g. index, attrs) depending on where the component was
8571 * used (and thus shouldn't be stored on TNode). In these cases, we retrieve the parent through
8572 * LView.node instead (which will be instance-specific).
8573 *
8574 * If this is an inline view node (V), the parent will be its container.
8575 */
8576 parent: TElementNode | TContainerNode | null;
8577 /**
8578 * List of projected TNodes for a given component host element OR index into the said nodes.
8579 *
8580 * For easier discussion assume this example:
8581 * `<parent>`'s view definition:
8582 * ```
8583 * <child id="c1">content1</child>
8584 * <child id="c2"><span>content2</span></child>
8585 * ```
8586 * `<child>`'s view definition:
8587 * ```
8588 * <ng-content id="cont1"></ng-content>
8589 * ```
8590 *
8591 * If `Array.isArray(projection)` then `TNode` is a host element:
8592 * - `projection` stores the content nodes which are to be projected.
8593 * - The nodes represent categories defined by the selector: For example:
8594 * `<ng-content/><ng-content select="abc"/>` would represent the heads for `<ng-content/>`
8595 * and `<ng-content select="abc"/>` respectively.
8596 * - The nodes we store in `projection` are heads only, we used `.next` to get their
8597 * siblings.
8598 * - The nodes `.next` is sorted/rewritten as part of the projection setup.
8599 * - `projection` size is equal to the number of projections `<ng-content>`. The size of
8600 * `c1` will be `1` because `<child>` has only one `<ng-content>`.
8601 * - we store `projection` with the host (`c1`, `c2`) rather than the `<ng-content>` (`cont1`)
8602 * because the same component (`<child>`) can be used in multiple locations (`c1`, `c2`) and
8603 * as a result have different set of nodes to project.
8604 * - without `projection` it would be difficult to efficiently traverse nodes to be projected.
8605 *
8606 * If `typeof projection == 'number'` then `TNode` is a `<ng-content>` element:
8607 * - `projection` is an index of the host's `projection`Nodes.
8608 * - This would return the first head node to project:
8609 * `getHost(currentTNode).projection[currentTNode.projection]`.
8610 * - When projecting nodes the parent node retrieved may be a `<ng-content>` node, in which case
8611 * the process is recursive in nature.
8612 *
8613 * If `projection` is of type `RNode[][]` than we have a collection of native nodes passed as
8614 * projectable nodes during dynamic component creation.
8615 */
8616 projection: (TNode | RNode[])[] | number | null;
8617 /**
8618 * A collection of all `style` static values for an element (including from host).
8619 *
8620 * This field will be populated if and when:
8621 *
8622 * - There are one or more initial `style`s on an element (e.g. `<div style="width:200px;">`)
8623 * - There are one or more initial `style`s on a directive/component host
8624 * (e.g. `@Directive({host: {style: "width:200px;" } }`)
8625 */
8626 styles: string | null;
8627 /**
8628 * A collection of all `style` static values for an element excluding host sources.
8629 *
8630 * Populated when there are one or more initial `style`s on an element
8631 * (e.g. `<div style="width:200px;">`)
8632 * Must be stored separately from `tNode.styles` to facilitate setting directive
8633 * inputs that shadow the `style` property. If we used `tNode.styles` as is for shadowed inputs,
8634 * we would feed host styles back into directives as "inputs". If we used `tNode.attrs`, we
8635 * would have to concatenate the attributes on every template pass. Instead, we process once on
8636 * first create pass and store here.
8637 */
8638 stylesWithoutHost: string | null;
8639 /**
8640 * A `KeyValueArray` version of residual `styles`.
8641 *
8642 * When there are styling instructions than each instruction stores the static styling
8643 * which is of lower priority than itself. This means that there may be a higher priority
8644 * styling than the instruction.
8645 *
8646 * Imagine:
8647 * ```
8648 * <div style="color: highest;" my-dir>
8649 *
8650 * @Directive({
8651 * host: {
8652 * style: 'color: lowest; ',
8653 * '[styles.color]': 'exp' // ɵɵstyleProp('color', ctx.exp);
8654 * }
8655 * })
8656 * ```
8657 *
8658 * In the above case:
8659 * - `color: lowest` is stored with `ɵɵstyleProp('color', ctx.exp);` instruction
8660 * - `color: highest` is the residual and is stored here.
8661 *
8662 * - `undefined': not initialized.
8663 * - `null`: initialized but `styles` is `null`
8664 * - `KeyValueArray`: parsed version of `styles`.
8665 */
8666 residualStyles: KeyValueArray<any> | undefined | null;
8667 /**
8668 * A collection of all class static values for an element (including from host).
8669 *
8670 * This field will be populated if and when:
8671 *
8672 * - There are one or more initial classes on an element (e.g. `<div class="one two three">`)
8673 * - There are one or more initial classes on an directive/component host
8674 * (e.g. `@Directive({host: {class: "SOME_CLASS" } }`)
8675 */
8676 classes: string | null;
8677 /**
8678 * A collection of all class static values for an element excluding host sources.
8679 *
8680 * Populated when there are one or more initial classes on an element
8681 * (e.g. `<div class="SOME_CLASS">`)
8682 * Must be stored separately from `tNode.classes` to facilitate setting directive
8683 * inputs that shadow the `class` property. If we used `tNode.classes` as is for shadowed
8684 * inputs, we would feed host classes back into directives as "inputs". If we used
8685 * `tNode.attrs`, we would have to concatenate the attributes on every template pass. Instead,
8686 * we process once on first create pass and store here.
8687 */
8688 classesWithoutHost: string | null;
8689 /**
8690 * A `KeyValueArray` version of residual `classes`.
8691 *
8692 * Same as `TNode.residualStyles` but for classes.
8693 *
8694 * - `undefined': not initialized.
8695 * - `null`: initialized but `classes` is `null`
8696 * - `KeyValueArray`: parsed version of `classes`.
8697 */
8698 residualClasses: KeyValueArray<any> | undefined | null;
8699 /**
8700 * Stores the head/tail index of the class bindings.
8701 *
8702 * - If no bindings, the head and tail will both be 0.
8703 * - If there are template bindings, stores the head/tail of the class bindings in the template.
8704 * - If no template bindings but there are host bindings, the head value will point to the last
8705 * host binding for "class" (not the head of the linked list), tail will be 0.
8706 *
8707 * See: `style_binding_list.ts` for details.
8708 *
8709 * This is used by `insertTStylingBinding` to know where the next styling binding should be
8710 * inserted so that they can be sorted in priority order.
8711 */
8712 classBindings: TStylingRange;
8713 /**
8714 * Stores the head/tail index of the class bindings.
8715 *
8716 * - If no bindings, the head and tail will both be 0.
8717 * - If there are template bindings, stores the head/tail of the style bindings in the template.
8718 * - If no template bindings but there are host bindings, the head value will point to the last
8719 * host binding for "style" (not the head of the linked list), tail will be 0.
8720 *
8721 * See: `style_binding_list.ts` for details.
8722 *
8723 * This is used by `insertTStylingBinding` to know where the next styling binding should be
8724 * inserted so that they can be sorted in priority order.
8725 */
8726 styleBindings: TStylingRange;
8727}
8728
8729/**
8730 * Corresponds to the TNode.flags property.
8731 */
8732declare const enum TNodeFlags {
8733 /** Bit #1 - This bit is set if the node is a host for any directive (including a component) */
8734 isDirectiveHost = 1,
8735 /** Bit #2 - This bit is set if the node has been projected */
8736 isProjected = 2,
8737 /** Bit #3 - This bit is set if any directive on this node has content queries */
8738 hasContentQuery = 4,
8739 /** Bit #4 - This bit is set if the node has any "class" inputs */
8740 hasClassInput = 8,
8741 /** Bit #5 - This bit is set if the node has any "style" inputs */
8742 hasStyleInput = 16,
8743 /** Bit #6 - This bit is set if the node has been detached by i18n */
8744 isDetached = 32,
8745 /**
8746 * Bit #7 - This bit is set if the node has directives with host bindings.
8747 *
8748 * This flags allows us to guard host-binding logic and invoke it only on nodes
8749 * that actually have directives with host bindings.
8750 */
8751 hasHostBindings = 64,
8752 /**
8753 * Bit #8 - This bit is set if the node is a located inside skip hydration block.
8754 */
8755 inSkipHydrationBlock = 128
8756}
8757
8758/**
8759 * Corresponds to the TNode.providerIndexes property.
8760 */
8761declare const enum TNodeProviderIndexes {
8762 /** The index of the first provider on this node is encoded on the least significant bits. */
8763 ProvidersStartIndexMask = 1048575,
8764 /**
8765 * The count of view providers from the component on this node is
8766 * encoded on the 20 most significant bits.
8767 */
8768 CptViewProvidersCountShift = 20,
8769 CptViewProvidersCountShifter = 1048576
8770}
8771
8772/**
8773 * TNodeType corresponds to the {@link TNode} `type` property.
8774 *
8775 * NOTE: type IDs are such that we use each bit to denote a type. This is done so that we can easily
8776 * check if the `TNode` is of more than one type.
8777 *
8778 * `if (tNode.type === TNodeType.Text || tNode.type === TNode.Element)`
8779 * can be written as:
8780 * `if (tNode.type & (TNodeType.Text | TNodeType.Element))`
8781 *
8782 * However any given `TNode` can only be of one type.
8783 */
8784declare const enum TNodeType {
8785 /**
8786 * The TNode contains information about a DOM element aka {@link RText}.
8787 */
8788 Text = 1,
8789 /**
8790 * The TNode contains information about a DOM element aka {@link RElement}.
8791 */
8792 Element = 2,
8793 /**
8794 * The TNode contains information about an {@link LContainer} for embedded views.
8795 */
8796 Container = 4,
8797 /**
8798 * The TNode contains information about an `<ng-container>` element {@link RNode}.
8799 */
8800 ElementContainer = 8,
8801 /**
8802 * The TNode contains information about an `<ng-content>` projection
8803 */
8804 Projection = 16,
8805 /**
8806 * The TNode contains information about an ICU comment used in `i18n`.
8807 */
8808 Icu = 32,
8809 /**
8810 * Special node type representing a placeholder for future `TNode` at this location.
8811 *
8812 * I18n translation blocks are created before the element nodes which they contain. (I18n blocks
8813 * can span over many elements.) Because i18n `TNode`s (representing text) are created first they
8814 * often may need to point to element `TNode`s which are not yet created. In such a case we create
8815 * a `Placeholder` `TNode`. This allows the i18n to structurally link the `TNode`s together
8816 * without knowing any information about the future nodes which will be at that location.
8817 *
8818 * On `firstCreatePass` When element instruction executes it will try to create a `TNode` at that
8819 * location. Seeing a `Placeholder` `TNode` already there tells the system that it should reuse
8820 * existing `TNode` (rather than create a new one) and just update the missing information.
8821 */
8822 Placeholder = 64,
8823 AnyRNode = 3,
8824 AnyContainer = 12
8825}
8826
8827/**
8828 * Type representing a set of TNodes that can have local refs (`#foo`) placed on them.
8829 */
8830declare type TNodeWithLocalRefs = TContainerNode | TElementNode | TElementContainerNode;
8831
8832/** Static data for an LProjectionNode */
8833declare interface TProjectionNode extends TNode {
8834 /** Index in the data[] array */
8835 child: null;
8836 /**
8837 * Projection nodes will have parents unless they are the first node of a component
8838 * or embedded view (which means their parent is in a different view and must be
8839 * retrieved using LView.node).
8840 */
8841 parent: TElementNode | TElementContainerNode | null;
8842 tView: null;
8843 /** Index of the projection node. (See TNode.projection for more info.) */
8844 projection: number;
8845 value: null;
8846}
8847
8848/**
8849 * TQueries represent a collection of individual TQuery objects tracked in a given view. Most of the
8850 * methods on this interface are simple proxy methods to the corresponding functionality on TQuery.
8851 */
8852declare interface TQueries {
8853 /**
8854 * Adds a new TQuery to a collection of queries tracked in a given view.
8855 * @param tQuery
8856 */
8857 track(tQuery: TQuery): void;
8858 /**
8859 * Returns a TQuery instance for at the given index in the queries array.
8860 * @param index
8861 */
8862 getByIndex(index: number): TQuery;
8863 /**
8864 * Returns the number of queries tracked in a given view.
8865 */
8866 length: number;
8867 /**
8868 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
8869 * `elementStart` on each and every TQuery.
8870 * @param tView
8871 * @param tNode
8872 */
8873 elementStart(tView: TView, tNode: TNode): void;
8874 /**
8875 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
8876 * `elementEnd` on each and every TQuery.
8877 * @param tNode
8878 */
8879 elementEnd(tNode: TNode): void;
8880 /**
8881 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
8882 * `template` on each and every TQuery.
8883 * @param tView
8884 * @param tNode
8885 */
8886 template(tView: TView, tNode: TNode): void;
8887 /**
8888 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
8889 * `embeddedTView` on each and every TQuery.
8890 * @param tNode
8891 */
8892 embeddedTView(tNode: TNode): TQueries | null;
8893}
8894
8895/**
8896 * TQuery objects represent all the query-related data that remain the same from one view instance
8897 * to another and can be determined on the very first template pass. Most notably TQuery holds all
8898 * the matches for a given view.
8899 */
8900declare interface TQuery {
8901 /**
8902 * Query metadata extracted from query annotations.
8903 */
8904 metadata: TQueryMetadata;
8905 /**
8906 * Index of a query in a declaration view in case of queries propagated to en embedded view, -1
8907 * for queries declared in a given view. We are storing this index so we can find a parent query
8908 * to clone for an embedded view (when an embedded view is created).
8909 */
8910 indexInDeclarationView: number;
8911 /**
8912 * Matches collected on the first template pass. Each match is a pair of:
8913 * - TNode index;
8914 * - match index;
8915 *
8916 * A TNode index can be either:
8917 * - a positive number (the most common case) to indicate a matching TNode;
8918 * - a negative number to indicate that a given query is crossing a <ng-template> element and
8919 * results from views created based on TemplateRef should be inserted at this place.
8920 *
8921 * A match index is a number used to find an actual value (for a given node) when query results
8922 * are materialized. This index can have one of the following values:
8923 * - -2 - indicates that we need to read a special token (TemplateRef, ViewContainerRef etc.);
8924 * - -1 - indicates that we need to read a default value based on the node type (TemplateRef for
8925 * ng-template and ElementRef for other elements);
8926 * - a positive number - index of an injectable to be read from the element injector.
8927 */
8928 matches: number[] | null;
8929 /**
8930 * A flag indicating if a given query crosses an <ng-template> element. This flag exists for
8931 * performance reasons: we can notice that queries not crossing any <ng-template> elements will
8932 * have matches from a given view only (and adapt processing accordingly).
8933 */
8934 crossesNgTemplate: boolean;
8935 /**
8936 * A method call when a given query is crossing an element (or element container). This is where a
8937 * given TNode is matched against a query predicate.
8938 * @param tView
8939 * @param tNode
8940 */
8941 elementStart(tView: TView, tNode: TNode): void;
8942 /**
8943 * A method called when processing the elementEnd instruction - this is mostly useful to determine
8944 * if a given content query should match any nodes past this point.
8945 * @param tNode
8946 */
8947 elementEnd(tNode: TNode): void;
8948 /**
8949 * A method called when processing the template instruction. This is where a
8950 * given TContainerNode is matched against a query predicate.
8951 * @param tView
8952 * @param tNode
8953 */
8954 template(tView: TView, tNode: TNode): void;
8955 /**
8956 * A query-related method called when an embedded TView is created based on the content of a
8957 * <ng-template> element. We call this method to determine if a given query should be propagated
8958 * to the embedded view and if so - return a cloned TQuery for this embedded view.
8959 * @param tNode
8960 * @param childQueryIndex
8961 */
8962 embeddedTView(tNode: TNode, childQueryIndex: number): TQuery | null;
8963}
8964
8965/**
8966 * An object representing query metadata extracted from query annotations.
8967 */
8968declare interface TQueryMetadata {
8969 predicate: ProviderToken<unknown> | string[];
8970 read: any;
8971 flags: QueryFlags;
8972}
8973
8974/**
8975 * A function optionally passed into the `NgForOf` directive to customize how `NgForOf` uniquely
8976 * identifies items in an iterable.
8977 *
8978 * `NgForOf` needs to uniquely identify items in the iterable to correctly perform DOM updates
8979 * when items in the iterable are reordered, new items are added, or existing items are removed.
8980 *
8981 *
8982 * In all of these scenarios it is usually desirable to only update the DOM elements associated
8983 * with the items affected by the change. This behavior is important to:
8984 *
8985 * - preserve any DOM-specific UI state (like cursor position, focus, text selection) when the
8986 * iterable is modified
8987 * - enable animation of item addition, removal, and iterable reordering
8988 * - preserve the value of the `<select>` element when nested `<option>` elements are dynamically
8989 * populated using `NgForOf` and the bound iterable is updated
8990 *
8991 * A common use for custom `trackBy` functions is when the model that `NgForOf` iterates over
8992 * contains a property with a unique identifier. For example, given a model:
8993 *
8994 * ```ts
8995 * class User {
8996 * id: number;
8997 * name: string;
8998 * ...
8999 * }
9000 * ```
9001 * a custom `trackBy` function could look like the following:
9002 * ```ts
9003 * function userTrackBy(index, user) {
9004 * return user.id;
9005 * }
9006 * ```
9007 *
9008 * A custom `trackBy` function must have several properties:
9009 *
9010 * - be [idempotent](https://en.wikipedia.org/wiki/Idempotence) (be without side effects, and always
9011 * return the same value for a given input)
9012 * - return unique value for all unique inputs
9013 * - be fast
9014 *
9015 * @see [`NgForOf#ngForTrackBy`](api/common/NgForOf#ngForTrackBy)
9016 * @publicApi
9017 */
9018export declare interface TrackByFunction<T> {
9019 /**
9020 * @param index The index of the item within the iterable.
9021 * @param item The item in the iterable.
9022 */
9023 <U extends T>(index: number, item: T & U): any;
9024}
9025
9026/**
9027 * A key value store that is transferred from the application on the server side to the application
9028 * on the client side.
9029 *
9030 * The `TransferState` is available as an injectable token.
9031 * On the client, just inject this token using DI and use it, it will be lazily initialized.
9032 * On the server it's already included if `renderApplication` function is used. Otherwise, import
9033 * the `ServerTransferStateModule` module to make the `TransferState` available.
9034 *
9035 * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only
9036 * boolean, number, string, null and non-class objects will be serialized and deserialized in a
9037 * non-lossy manner.
9038 *
9039 * @publicApi
9040 */
9041export declare class TransferState {
9042 /** @nocollapse */
9043 static ɵprov: unknown;
9044 private onSerializeCallbacks;
9045 /**
9046 * Get the value corresponding to a key. Return `defaultValue` if key is not found.
9047 */
9048 get<T>(key: StateKey<T>, defaultValue: T): T;
9049 /**
9050 * Set the value corresponding to a key.
9051 */
9052 set<T>(key: StateKey<T>, value: T): void;
9053 /**
9054 * Remove a key from the store.
9055 */
9056 remove<T>(key: StateKey<T>): void;
9057 /**
9058 * Test whether a key exists in the store.
9059 */
9060 hasKey<T>(key: StateKey<T>): boolean;
9061 /**
9062 * Indicates whether the state is empty.
9063 */
9064 get isEmpty(): boolean;
9065 /**
9066 * Register a callback to provide the value for a key when `toJson` is called.
9067 */
9068 onSerialize<T>(key: StateKey<T>, callback: () => T): void;
9069 /**
9070 * Serialize the current state of the store to JSON.
9071 */
9072 toJson(): string;
9073}
9074
9075/**
9076 * Use this token at bootstrap to provide the content of your translation file (`xtb`,
9077 * `xlf` or `xlf2`) when you want to translate your application in another language.
9078 *
9079 * See the [i18n guide](guide/i18n-common-merge) for more information.
9080 *
9081 * @usageNotes
9082 * ### Example
9083 *
9084 * ```typescript
9085 * import { TRANSLATIONS } from '@angular/core';
9086 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
9087 * import { AppModule } from './app/app.module';
9088 *
9089 * // content of your translation file
9090 * const translations = '....';
9091 *
9092 * platformBrowserDynamic().bootstrapModule(AppModule, {
9093 * providers: [{provide: TRANSLATIONS, useValue: translations }]
9094 * });
9095 * ```
9096 *
9097 * @publicApi
9098 */
9099export declare const TRANSLATIONS: InjectionToken<string>;
9100
9101/**
9102 * Provide this token at bootstrap to set the format of your {@link TRANSLATIONS}: `xtb`,
9103 * `xlf` or `xlf2`.
9104 *
9105 * See the [i18n guide](guide/i18n-common-merge) for more information.
9106 *
9107 * @usageNotes
9108 * ### Example
9109 *
9110 * ```typescript
9111 * import { TRANSLATIONS_FORMAT } from '@angular/core';
9112 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
9113 * import { AppModule } from './app/app.module';
9114 *
9115 * platformBrowserDynamic().bootstrapModule(AppModule, {
9116 * providers: [{provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }]
9117 * });
9118 * ```
9119 *
9120 * @publicApi
9121 */
9122export declare const TRANSLATIONS_FORMAT: InjectionToken<string>;
9123
9124
9125/**
9126 * @fileoverview
9127 * While Angular only uses Trusted Types internally for the time being,
9128 * references to Trusted Types could leak into our core.d.ts, which would force
9129 * anyone compiling against @angular/core to provide the @types/trusted-types
9130 * package in their compilation unit.
9131 *
9132 * Until https://github.com/microsoft/TypeScript/issues/30024 is resolved, we
9133 * will keep Angular's public API surface free of references to Trusted Types.
9134 * For internal and semi-private APIs that need to reference Trusted Types, the
9135 * minimal type definitions for the Trusted Types API provided by this module
9136 * should be used instead. They are marked as "declare" to prevent them from
9137 * being renamed by compiler optimization.
9138 *
9139 * Adapted from
9140 * https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/trusted-types/index.d.ts
9141 * but restricted to the API surface used within Angular.
9142 */
9143declare interface TrustedHTML {
9144 __brand__: 'TrustedHTML';
9145}
9146
9147declare interface TrustedScript {
9148 __brand__: 'TrustedScript';
9149}
9150
9151declare interface TrustedScriptURL {
9152 __brand__: 'TrustedScriptURL';
9153}
9154
9155/**
9156 * Value stored in the `TData` which is needed to re-concatenate the styling.
9157 *
9158 * See: `TStylingKeyPrimitive` and `TStylingStatic`
9159 */
9160declare type TStylingKey = TStylingKeyPrimitive | TStylingStatic;
9161
9162/**
9163 * The primitive portion (`TStylingStatic` removed) of the value stored in the `TData` which is
9164 * needed to re-concatenate the styling.
9165 *
9166 * - `string`: Stores the property name. Used with `ɵɵstyleProp`/`ɵɵclassProp` instruction.
9167 * - `null`: Represents map, so there is no name. Used with `ɵɵstyleMap`/`ɵɵclassMap`.
9168 * - `false`: Represents an ignore case. This happens when `ɵɵstyleProp`/`ɵɵclassProp` instruction
9169 * is combined with directive which shadows its input `@Input('class')`. That way the binding
9170 * should not participate in the styling resolution.
9171 */
9172declare type TStylingKeyPrimitive = string | null | false;
9173
9174/**
9175 * This is a branded number which contains previous and next index.
9176 *
9177 * When we come across styling instructions we need to store the `TStylingKey` in the correct
9178 * order so that we can re-concatenate the styling value in the desired priority.
9179 *
9180 * The insertion can happen either at the:
9181 * - end of template as in the case of coming across additional styling instruction in the template
9182 * - in front of the template in the case of coming across additional instruction in the
9183 * `hostBindings`.
9184 *
9185 * We use `TStylingRange` to store the previous and next index into the `TData` where the template
9186 * bindings can be found.
9187 *
9188 * - bit 0 is used to mark that the previous index has a duplicate for current value.
9189 * - bit 1 is used to mark that the next index has a duplicate for the current value.
9190 * - bits 2-16 are used to encode the next/tail of the template.
9191 * - bits 17-32 are used to encode the previous/head of template.
9192 *
9193 * NODE: *duplicate* false implies that it is statically known that this binding will not collide
9194 * with other bindings and therefore there is no need to check other bindings. For example the
9195 * bindings in `<div [style.color]="exp" [style.width]="exp">` will never collide and will have
9196 * their bits set accordingly. Previous duplicate means that we may need to check previous if the
9197 * current binding is `null`. Next duplicate means that we may need to check next bindings if the
9198 * current binding is not `null`.
9199 *
9200 * NOTE: `0` has special significance and represents `null` as in no additional pointer.
9201 */
9202declare interface TStylingRange {
9203 __brand__: 'TStylingRange';
9204}
9205
9206/**
9207 * Store the static values for the styling binding.
9208 *
9209 * The `TStylingStatic` is just `KeyValueArray` where key `""` (stored at location 0) contains the
9210 * `TStylingKey` (stored at location 1). In other words this wraps the `TStylingKey` such that the
9211 * `""` contains the wrapped value.
9212 *
9213 * When instructions are resolving styling they may need to look forward or backwards in the linked
9214 * list to resolve the value. For this reason we have to make sure that he linked list also contains
9215 * the static values. However the list only has space for one item per styling instruction. For this
9216 * reason we store the static values here as part of the `TStylingKey`. This means that the
9217 * resolution function when looking for a value needs to first look at the binding value, and than
9218 * at `TStylingKey` (if it exists).
9219 *
9220 * Imagine we have:
9221 *
9222 * ```
9223 * <div class="TEMPLATE" my-dir>
9224 *
9225 * @Directive({
9226 * host: {
9227 * class: 'DIR',
9228 * '[class.dynamic]': 'exp' // ɵɵclassProp('dynamic', ctx.exp);
9229 * }
9230 * })
9231 * ```
9232 *
9233 * In the above case the linked list will contain one item:
9234 *
9235 * ```
9236 * // assume binding location: 10 for `ɵɵclassProp('dynamic', ctx.exp);`
9237 * tData[10] = <TStylingStatic>[
9238 * '': 'dynamic', // This is the wrapped value of `TStylingKey`
9239 * 'DIR': true, // This is the default static value of directive binding.
9240 * ];
9241 * tData[10 + 1] = 0; // We don't have prev/next.
9242 *
9243 * lView[10] = undefined; // assume `ctx.exp` is `undefined`
9244 * lView[10 + 1] = undefined; // Just normalized `lView[10]`
9245 * ```
9246 *
9247 * So when the function is resolving styling value, it first needs to look into the linked list
9248 * (there is none) and than into the static `TStylingStatic` too see if there is a default value for
9249 * `dynamic` (there is not). Therefore it is safe to remove it.
9250 *
9251 * If setting `true` case:
9252 * ```
9253 * lView[10] = true; // assume `ctx.exp` is `true`
9254 * lView[10 + 1] = true; // Just normalized `lView[10]`
9255 * ```
9256 * So when the function is resolving styling value, it first needs to look into the linked list
9257 * (there is none) and than into `TNode.residualClass` (TNode.residualStyle) which contains
9258 * ```
9259 * tNode.residualClass = [
9260 * 'TEMPLATE': true,
9261 * ];
9262 * ```
9263 *
9264 * This means that it is safe to add class.
9265 */
9266declare interface TStylingStatic extends KeyValueArray<any> {
9267}
9268
9269/** Static data for a text node */
9270declare interface TTextNode extends TNode {
9271 /** Index in the data[] array */
9272 index: number;
9273 child: null;
9274 /**
9275 * Text nodes will have parents unless they are the first node of a component or
9276 * embedded view (which means their parent is in a different view and must be
9277 * retrieved using LView.node).
9278 */
9279 parent: TElementNode | TElementContainerNode | null;
9280 tView: null;
9281 projection: null;
9282}
9283
9284declare const TVIEW = 1;
9285
9286/**
9287 * The static data for an LView (shared between all templates of a
9288 * given type).
9289 *
9290 * Stored on the `ComponentDef.tView`.
9291 */
9292declare interface TView {
9293 /**
9294 * Type of `TView` (`Root`|`Component`|`Embedded`).
9295 */
9296 type: TViewType;
9297 /**
9298 * This is a blueprint used to generate LView instances for this TView. Copying this
9299 * blueprint is faster than creating a new LView from scratch.
9300 */
9301 blueprint: LView;
9302 /**
9303 * The template function used to refresh the view of dynamically created views
9304 * and components. Will be null for inline views.
9305 */
9306 template: ComponentTemplate<{}> | null;
9307 /**
9308 * A function containing query-related instructions.
9309 */
9310 viewQuery: ViewQueriesFunction<{}> | null;
9311 /**
9312 * A `TNode` representing the declaration location of this `TView` (not part of this TView).
9313 */
9314 declTNode: TNode | null;
9315 /** Whether or not this template has been processed in creation mode. */
9316 firstCreatePass: boolean;
9317 /**
9318 * Whether or not this template has been processed in update mode (e.g. change detected)
9319 *
9320 * `firstUpdatePass` is used by styling to set up `TData` to contain metadata about the styling
9321 * instructions. (Mainly to build up a linked list of styling priority order.)
9322 *
9323 * Typically this function gets cleared after first execution. If exception is thrown then this
9324 * flag can remain turned un until there is first successful (no exception) pass. This means that
9325 * individual styling instructions keep track of if they have already been added to the linked
9326 * list to prevent double adding.
9327 */
9328 firstUpdatePass: boolean;
9329 /** Static data equivalent of LView.data[]. Contains TNodes, PipeDefInternal or TI18n. */
9330 data: TData;
9331 /**
9332 * The binding start index is the index at which the data array
9333 * starts to store bindings only. Saving this value ensures that we
9334 * will begin reading bindings at the correct point in the array when
9335 * we are in update mode.
9336 *
9337 * -1 means that it has not been initialized.
9338 */
9339 bindingStartIndex: number;
9340 /**
9341 * The index where the "expando" section of `LView` begins. The expando
9342 * section contains injectors, directive instances, and host binding values.
9343 * Unlike the "decls" and "vars" sections of `LView`, the length of this
9344 * section cannot be calculated at compile-time because directives are matched
9345 * at runtime to preserve locality.
9346 *
9347 * We store this start index so we know where to start checking host bindings
9348 * in `setHostBindings`.
9349 */
9350 expandoStartIndex: number;
9351 /**
9352 * Whether or not there are any static view queries tracked on this view.
9353 *
9354 * We store this so we know whether or not we should do a view query
9355 * refresh after creation mode to collect static query results.
9356 */
9357 staticViewQueries: boolean;
9358 /**
9359 * Whether or not there are any static content queries tracked on this view.
9360 *
9361 * We store this so we know whether or not we should do a content query
9362 * refresh after creation mode to collect static query results.
9363 */
9364 staticContentQueries: boolean;
9365 /**
9366 * A reference to the first child node located in the view.
9367 */
9368 firstChild: TNode | null;
9369 /**
9370 * Stores the OpCodes to be replayed during change-detection to process the `HostBindings`
9371 *
9372 * See `HostBindingOpCodes` for encoding details.
9373 */
9374 hostBindingOpCodes: HostBindingOpCodes | null;
9375 /**
9376 * Full registry of directives and components that may be found in this view.
9377 *
9378 * It's necessary to keep a copy of the full def list on the TView so it's possible
9379 * to render template functions without a host component.
9380 */
9381 directiveRegistry: DirectiveDefList | null;
9382 /**
9383 * Full registry of pipes that may be found in this view.
9384 *
9385 * The property is either an array of `PipeDefs`s or a function which returns the array of
9386 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
9387 *
9388 * It's necessary to keep a copy of the full def list on the TView so it's possible
9389 * to render template functions without a host component.
9390 */
9391 pipeRegistry: PipeDefList | null;
9392 /**
9393 * Array of ngOnInit, ngOnChanges and ngDoCheck hooks that should be executed for this view in
9394 * creation mode.
9395 *
9396 * This array has a flat structure and contains TNode indices, directive indices (where an
9397 * instance can be found in `LView`) and hook functions. TNode index is followed by the directive
9398 * index and a hook function. If there are multiple hooks for a given TNode, the TNode index is
9399 * not repeated and the next lifecycle hook information is stored right after the previous hook
9400 * function. This is done so that at runtime the system can efficiently iterate over all of the
9401 * functions to invoke without having to make any decisions/lookups.
9402 */
9403 preOrderHooks: HookData | null;
9404 /**
9405 * Array of ngOnChanges and ngDoCheck hooks that should be executed for this view in update mode.
9406 *
9407 * This array has the same structure as the `preOrderHooks` one.
9408 */
9409 preOrderCheckHooks: HookData | null;
9410 /**
9411 * Array of ngAfterContentInit and ngAfterContentChecked hooks that should be executed
9412 * for this view in creation mode.
9413 *
9414 * Even indices: Directive index
9415 * Odd indices: Hook function
9416 */
9417 contentHooks: HookData | null;
9418 /**
9419 * Array of ngAfterContentChecked hooks that should be executed for this view in update
9420 * mode.
9421 *
9422 * Even indices: Directive index
9423 * Odd indices: Hook function
9424 */
9425 contentCheckHooks: HookData | null;
9426 /**
9427 * Array of ngAfterViewInit and ngAfterViewChecked hooks that should be executed for
9428 * this view in creation mode.
9429 *
9430 * Even indices: Directive index
9431 * Odd indices: Hook function
9432 */
9433 viewHooks: HookData | null;
9434 /**
9435 * Array of ngAfterViewChecked hooks that should be executed for this view in
9436 * update mode.
9437 *
9438 * Even indices: Directive index
9439 * Odd indices: Hook function
9440 */
9441 viewCheckHooks: HookData | null;
9442 /**
9443 * Array of ngOnDestroy hooks that should be executed when this view is destroyed.
9444 *
9445 * Even indices: Directive index
9446 * Odd indices: Hook function
9447 */
9448 destroyHooks: DestroyHookData | null;
9449 /**
9450 * When a view is destroyed, listeners need to be released and outputs need to be
9451 * unsubscribed. This cleanup array stores both listener data (in chunks of 4)
9452 * and output data (in chunks of 2) for a particular view. Combining the arrays
9453 * saves on memory (70 bytes per array) and on a few bytes of code size (for two
9454 * separate for loops).
9455 *
9456 * If it's a native DOM listener or output subscription being stored:
9457 * 1st index is: event name `name = tView.cleanup[i+0]`
9458 * 2nd index is: index of native element or a function that retrieves global target (window,
9459 * document or body) reference based on the native element:
9460 * `typeof idxOrTargetGetter === 'function'`: global target getter function
9461 * `typeof idxOrTargetGetter === 'number'`: index of native element
9462 *
9463 * 3rd index is: index of listener function `listener = lView[CLEANUP][tView.cleanup[i+2]]`
9464 * 4th index is: `useCaptureOrIndx = tView.cleanup[i+3]`
9465 * `typeof useCaptureOrIndx == 'boolean' : useCapture boolean
9466 * `typeof useCaptureOrIndx == 'number':
9467 * `useCaptureOrIndx >= 0` `removeListener = LView[CLEANUP][useCaptureOrIndx]`
9468 * `useCaptureOrIndx < 0` `subscription = LView[CLEANUP][-useCaptureOrIndx]`
9469 *
9470 * If it's an output subscription or query list destroy hook:
9471 * 1st index is: output unsubscribe function / query list destroy function
9472 * 2nd index is: index of function context in LView.cleanupInstances[]
9473 * `tView.cleanup[i+0].call(lView[CLEANUP][tView.cleanup[i+1]])`
9474 */
9475 cleanup: any[] | null;
9476 /**
9477 * A list of element indices for child components that will need to be
9478 * refreshed when the current view has finished its check. These indices have
9479 * already been adjusted for the HEADER_OFFSET.
9480 *
9481 */
9482 components: number[] | null;
9483 /**
9484 * A collection of queries tracked in a given view.
9485 */
9486 queries: TQueries | null;
9487 /**
9488 * An array of indices pointing to directives with content queries alongside with the
9489 * corresponding query index. Each entry in this array is a tuple of:
9490 * - index of the first content query index declared by a given directive;
9491 * - index of a directive.
9492 *
9493 * We are storing those indexes so we can refresh content queries as part of a view refresh
9494 * process.
9495 */
9496 contentQueries: number[] | null;
9497 /**
9498 * Set of schemas that declare elements to be allowed inside the view.
9499 */
9500 schemas: SchemaMetadata[] | null;
9501 /**
9502 * Array of constants for the view. Includes attribute arrays, local definition arrays etc.
9503 * Used for directive matching, attribute bindings, local definitions and more.
9504 */
9505 consts: TConstants | null;
9506 /**
9507 * Indicates that there was an error before we managed to complete the first create pass of the
9508 * view. This means that the view is likely corrupted and we should try to recover it.
9509 */
9510 incompleteFirstPass: boolean;
9511 /**
9512 * Unique id of this TView for hydration purposes:
9513 * - TViewType.Embedded: a unique id generated during serialization on the server
9514 * - TViewType.Component: an id generated based on component properties
9515 * (see `getComponentId` function for details)
9516 */
9517 ssrId: string | null;
9518}
9519
9520/**
9521 * Explicitly marks `TView` as a specific type in `ngDevMode`
9522 *
9523 * It is useful to know conceptually what time of `TView` we are dealing with when
9524 * debugging an application (even if the runtime does not need it.) For this reason
9525 * we store this information in the `ngDevMode` `TView` and than use it for
9526 * better debugging experience.
9527 */
9528declare const enum TViewType {
9529 /**
9530 * Root `TView` is the used to bootstrap components into. It is used in conjunction with
9531 * `LView` which takes an existing DOM node not owned by Angular and wraps it in `TView`/`LView`
9532 * so that other components can be loaded into it.
9533 */
9534 Root = 0,
9535 /**
9536 * `TView` associated with a Component. This would be the `TView` directly associated with the
9537 * component view (as opposed an `Embedded` `TView` which would be a child of `Component` `TView`)
9538 */
9539 Component = 1,
9540 /**
9541 * `TView` associated with a template. Such as `*ngIf`, `<ng-template>` etc... A `Component`
9542 * can have zero or more `Embedded` `TView`s.
9543 */
9544 Embedded = 2
9545}
9546
9547/**
9548 * Special location which allows easy identification of type. If we have an array which was
9549 * retrieved from the `LView` and that array has `true` at `TYPE` location, we know it is
9550 * `LContainer`.
9551 */
9552declare const TYPE = 1;
9553
9554/**
9555 * @description
9556 *
9557 * Represents a type that a Component or other object is instances of.
9558 *
9559 * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is represented by
9560 * the `MyCustomComponent` constructor function.
9561 *
9562 * @publicApi
9563 */
9564export declare const Type: FunctionConstructor;
9565
9566export declare interface Type<T> extends Function {
9567 new (...args: any[]): T;
9568}
9569
9570declare type Type_2 = Function;
9571
9572/**
9573 * An interface implemented by all Angular type decorators, which allows them to be used as
9574 * decorators as well as Angular syntax.
9575 *
9576 * ```
9577 * @ng.Component({...})
9578 * class MyClass {...}
9579 * ```
9580 *
9581 * @publicApi
9582 */
9583export declare interface TypeDecorator {
9584 /**
9585 * Invoke as decorator.
9586 */
9587 <T extends Type<any>>(type: T): T;
9588 (target: Object, propertyKey?: string | symbol, parameterIndex?: number): void;
9589 (target: unknown, context: unknown): void;
9590}
9591
9592declare type TypeOrFactory<T> = T | (() => T);
9593
9594/**
9595 * Configures the `Injector` to return an instance of `Type` when `Type' is used as the token.
9596 *
9597 * Create an instance by invoking the `new` operator and supplying additional arguments.
9598 * This form is a short form of `TypeProvider`;
9599 *
9600 * For more details, see the ["Dependency Injection Guide"](guide/dependency-injection).
9601 *
9602 * @usageNotes
9603 *
9604 * {@example core/di/ts/provider_spec.ts region='TypeProvider'}
9605 *
9606 * @publicApi
9607 */
9608export declare interface TypeProvider extends Type<any> {
9609}
9610
9611
9612/**
9613 * Execute an arbitrary function in a non-reactive (non-tracking) context. The executed function
9614 * can, optionally, return a value.
9615 *
9616 * @developerPreview
9617 */
9618export declare function untracked<T>(nonReactiveReadsFn: () => T): T;
9619
9620/**
9621 * A comparison function which can determine if two values are equal.
9622 *
9623 * @developerPreview
9624 */
9625export declare type ValueEqualityFn<T> = (a: T, b: T) => boolean;
9626
9627/**
9628 * Configures the `Injector` to return a value for a token.
9629 * @see ["Dependency Injection Guide"](guide/dependency-injection).
9630 *
9631 * @usageNotes
9632 *
9633 * ### Example
9634 *
9635 * {@example core/di/ts/provider_spec.ts region='ValueProvider'}
9636 *
9637 * ### Multi-value example
9638 *
9639 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
9640 *
9641 * @publicApi
9642 */
9643export declare interface ValueProvider extends ValueSansProvider {
9644 /**
9645 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
9646 */
9647 provide: any;
9648 /**
9649 * When true, injector returns an array of instances. This is useful to allow multiple
9650 * providers spread across many files to provide configuration information to a common token.
9651 */
9652 multi?: boolean;
9653}
9654
9655/**
9656 * Configures the `Injector` to return a value for a token.
9657 * Base for `ValueProvider` decorator.
9658 *
9659 * @publicApi
9660 */
9661export declare interface ValueSansProvider {
9662 /**
9663 * The value to inject.
9664 */
9665 useValue: any;
9666}
9667
9668/**
9669 * @publicApi
9670 */
9671export declare const VERSION: Version;
9672
9673
9674/**
9675 * @description Represents the version of Angular
9676 *
9677 * @publicApi
9678 */
9679export declare class Version {
9680 full: string;
9681 readonly major: string;
9682 readonly minor: string;
9683 readonly patch: string;
9684 constructor(full: string);
9685}
9686
9687declare const VIEW_REFS = 8;
9688
9689/**
9690 * Type of the ViewChild metadata.
9691 *
9692 * @publicApi
9693 */
9694export declare type ViewChild = Query;
9695
9696/**
9697 * ViewChild decorator and metadata.
9698 *
9699 * @Annotation
9700 * @publicApi
9701 */
9702export declare const ViewChild: ViewChildDecorator;
9703
9704/**
9705 * Type of the ViewChild decorator / constructor function.
9706 *
9707 * @see `ViewChild`.
9708 * @publicApi
9709 */
9710export declare interface ViewChildDecorator {
9711 /**
9712 * @description
9713 * Property decorator that configures a view query.
9714 * The change detector looks for the first element or the directive matching the selector
9715 * in the view DOM. If the view DOM changes, and a new child matches the selector,
9716 * the property is updated.
9717 *
9718 * View queries are set before the `ngAfterViewInit` callback is called.
9719 *
9720 * **Metadata Properties**:
9721 *
9722 * * **selector** - The directive type or the name used for querying.
9723 * * **read** - Used to read a different token from the queried elements.
9724 * * **static** - True to resolve query results before change detection runs,
9725 * false to resolve after change detection. Defaults to false.
9726 *
9727 *
9728 * The following selectors are supported.
9729 * * Any class with the `@Component` or `@Directive` decorator
9730 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
9731 * with `@ViewChild('cmp')`)
9732 * * Any provider defined in the child component tree of the current component (e.g.
9733 * `@ViewChild(SomeService) someService: SomeService`)
9734 * * Any provider defined through a string token (e.g. `@ViewChild('someToken') someTokenVal:
9735 * any`)
9736 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ViewChild(TemplateRef)
9737 * template;`)
9738 *
9739 * The following values are supported by `read`:
9740 * * Any class with the `@Component` or `@Directive` decorator
9741 * * Any provider defined on the injector of the component that is matched by the `selector` of
9742 * this query
9743 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
9744 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
9745 *
9746 * @usageNotes
9747 *
9748 * {@example core/di/ts/viewChild/view_child_example.ts region='Component'}
9749 *
9750 * ### Example 2
9751 *
9752 * {@example core/di/ts/viewChild/view_child_howto.ts region='HowTo'}
9753 *
9754 * @Annotation
9755 */
9756 (selector: ProviderToken<unknown> | Function | string, opts?: {
9757 read?: any;
9758 static?: boolean;
9759 }): any;
9760 new (selector: ProviderToken<unknown> | Function | string, opts?: {
9761 read?: any;
9762 static?: boolean;
9763 }): ViewChild;
9764}
9765
9766/**
9767 * Type of the ViewChildren metadata.
9768 *
9769 * @publicApi
9770 */
9771export declare type ViewChildren = Query;
9772
9773/**
9774 * ViewChildren decorator and metadata.
9775 *
9776 * @Annotation
9777 * @publicApi
9778 */
9779export declare const ViewChildren: ViewChildrenDecorator;
9780
9781/**
9782 * Type of the ViewChildren decorator / constructor function.
9783 *
9784 * @see `ViewChildren`.
9785 *
9786 * @publicApi
9787 */
9788export declare interface ViewChildrenDecorator {
9789 /**
9790 * @description
9791 * Property decorator that configures a view query.
9792 *
9793 * Use to get the `QueryList` of elements or directives from the view DOM.
9794 * Any time a child element is added, removed, or moved, the query list will be updated,
9795 * and the changes observable of the query list will emit a new value.
9796 *
9797 * View queries are set before the `ngAfterViewInit` callback is called.
9798 *
9799 * **Metadata Properties**:
9800 *
9801 * * **selector** - The directive type or the name used for querying.
9802 * * **read** - Used to read a different token from the queried elements.
9803 * * **emitDistinctChangesOnly** - The ` QueryList#changes` observable will emit new values only
9804 * if the QueryList result has changed. When `false` the `changes` observable might emit even
9805 * if the QueryList has not changed.
9806 * ** Note: *** This config option is **deprecated**, it will be permanently set to `true` and
9807 * removed in future versions of Angular.
9808 *
9809 * The following selectors are supported.
9810 * * Any class with the `@Component` or `@Directive` decorator
9811 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
9812 * with `@ViewChildren('cmp')`)
9813 * * Any provider defined in the child component tree of the current component (e.g.
9814 * `@ViewChildren(SomeService) someService!: SomeService`)
9815 * * Any provider defined through a string token (e.g. `@ViewChildren('someToken')
9816 * someTokenVal!: any`)
9817 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ViewChildren(TemplateRef)
9818 * template;`)
9819 *
9820 * In addition, multiple string selectors can be separated with a comma (e.g.
9821 * `@ViewChildren('cmp1,cmp2')`)
9822 *
9823 * The following values are supported by `read`:
9824 * * Any class with the `@Component` or `@Directive` decorator
9825 * * Any provider defined on the injector of the component that is matched by the `selector` of
9826 * this query
9827 * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)
9828 * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`
9829 *
9830 * @usageNotes
9831 *
9832 * {@example core/di/ts/viewChildren/view_children_howto.ts region='HowTo'}
9833 *
9834 * ### Another example
9835 *
9836 * {@example core/di/ts/viewChildren/view_children_example.ts region='Component'}
9837 *
9838 * @Annotation
9839 */
9840 (selector: ProviderToken<unknown> | Function | string, opts?: {
9841 read?: any;
9842 emitDistinctChangesOnly?: boolean;
9843 }): any;
9844 new (selector: ProviderToken<unknown> | Function | string, opts?: {
9845 read?: any;
9846 emitDistinctChangesOnly?: boolean;
9847 }): ViewChildren;
9848}
9849
9850/**
9851 * Represents a container where one or more views can be attached to a component.
9852 *
9853 * Can contain *host views* (created by instantiating a
9854 * component with the `createComponent()` method), and *embedded views*
9855 * (created by instantiating a `TemplateRef` with the `createEmbeddedView()` method).
9856 *
9857 * A view container instance can contain other view containers,
9858 * creating a [view hierarchy](guide/glossary#view-hierarchy).
9859 *
9860 * @see `ComponentRef`
9861 * @see `EmbeddedViewRef`
9862 *
9863 * @publicApi
9864 */
9865export declare abstract class ViewContainerRef {
9866 /**
9867 * Anchor element that specifies the location of this container in the containing view.
9868 * Each view container can have only one anchor element, and each anchor element
9869 * can have only a single view container.
9870 *
9871 * Root elements of views attached to this container become siblings of the anchor element in
9872 * the rendered view.
9873 *
9874 * Access the `ViewContainerRef` of an element by placing a `Directive` injected
9875 * with `ViewContainerRef` on the element, or use a `ViewChild` query.
9876 *
9877 * <!-- TODO: rename to anchorElement -->
9878 */
9879 abstract get element(): ElementRef;
9880 /**
9881 * The [dependency injector](guide/glossary#injector) for this view container.
9882 */
9883 abstract get injector(): Injector;
9884 /** @deprecated No replacement */
9885 abstract get parentInjector(): Injector;
9886 /**
9887 * Destroys all views in this container.
9888 */
9889 abstract clear(): void;
9890 /**
9891 * Retrieves a view from this container.
9892 * @param index The 0-based index of the view to retrieve.
9893 * @returns The `ViewRef` instance, or null if the index is out of range.
9894 */
9895 abstract get(index: number): ViewRef | null;
9896 /**
9897 * Reports how many views are currently attached to this container.
9898 * @returns The number of views.
9899 */
9900 abstract get length(): number;
9901 /**
9902 * Instantiates an embedded view and inserts it
9903 * into this container.
9904 * @param templateRef The HTML template that defines the view.
9905 * @param context The data-binding context of the embedded view, as declared
9906 * in the `<ng-template>` usage.
9907 * @param options Extra configuration for the created view. Includes:
9908 * * index: The 0-based index at which to insert the new view into this container.
9909 * If not specified, appends the new view as the last entry.
9910 * * injector: Injector to be used within the embedded view.
9911 *
9912 * @returns The `ViewRef` instance for the newly created view.
9913 */
9914 abstract createEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, options?: {
9915 index?: number;
9916 injector?: Injector;
9917 }): EmbeddedViewRef<C>;
9918 /**
9919 * Instantiates an embedded view and inserts it
9920 * into this container.
9921 * @param templateRef The HTML template that defines the view.
9922 * @param context The data-binding context of the embedded view, as declared
9923 * in the `<ng-template>` usage.
9924 * @param index The 0-based index at which to insert the new view into this container.
9925 * If not specified, appends the new view as the last entry.
9926 *
9927 * @returns The `ViewRef` instance for the newly created view.
9928 */
9929 abstract createEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, index?: number): EmbeddedViewRef<C>;
9930 /**
9931 * Instantiates a single component and inserts its host view into this container.
9932 *
9933 * @param componentType Component Type to use.
9934 * @param options An object that contains extra parameters:
9935 * * index: the index at which to insert the new component's host view into this container.
9936 * If not specified, appends the new view as the last entry.
9937 * * injector: the injector to use as the parent for the new component.
9938 * * ngModuleRef: an NgModuleRef of the component's NgModule, you should almost always provide
9939 * this to ensure that all expected providers are available for the component
9940 * instantiation.
9941 * * environmentInjector: an EnvironmentInjector which will provide the component's environment.
9942 * you should almost always provide this to ensure that all expected providers
9943 * are available for the component instantiation. This option is intended to
9944 * replace the `ngModuleRef` parameter.
9945 * * projectableNodes: list of DOM nodes that should be projected through
9946 * [`<ng-content>`](api/core/ng-content) of the new component instance.
9947 *
9948 * @returns The new `ComponentRef` which contains the component instance and the host view.
9949 */
9950 abstract createComponent<C>(componentType: Type<C>, options?: {
9951 index?: number;
9952 injector?: Injector;
9953 ngModuleRef?: NgModuleRef<unknown>;
9954 environmentInjector?: EnvironmentInjector | NgModuleRef<unknown>;
9955 projectableNodes?: Node[][];
9956 }): ComponentRef<C>;
9957 /**
9958 * Instantiates a single component and inserts its host view into this container.
9959 *
9960 * @param componentFactory Component factory to use.
9961 * @param index The index at which to insert the new component's host view into this container.
9962 * If not specified, appends the new view as the last entry.
9963 * @param injector The injector to use as the parent for the new component.
9964 * @param projectableNodes List of DOM nodes that should be projected through
9965 * [`<ng-content>`](api/core/ng-content) of the new component instance.
9966 * @param ngModuleRef An instance of the NgModuleRef that represent an NgModule.
9967 * This information is used to retrieve corresponding NgModule injector.
9968 *
9969 * @returns The new `ComponentRef` which contains the component instance and the host view.
9970 *
9971 * @deprecated Angular no longer requires component factories to dynamically create components.
9972 * Use different signature of the `createComponent` method, which allows passing
9973 * Component class directly.
9974 */
9975 abstract createComponent<C>(componentFactory: ComponentFactory<C>, index?: number, injector?: Injector, projectableNodes?: any[][], environmentInjector?: EnvironmentInjector | NgModuleRef<any>): ComponentRef<C>;
9976 /**
9977 * Inserts a view into this container.
9978 * @param viewRef The view to insert.
9979 * @param index The 0-based index at which to insert the view.
9980 * If not specified, appends the new view as the last entry.
9981 * @returns The inserted `ViewRef` instance.
9982 *
9983 */
9984 abstract insert(viewRef: ViewRef, index?: number): ViewRef;
9985 /**
9986 * Moves a view to a new location in this container.
9987 * @param viewRef The view to move.
9988 * @param index The 0-based index of the new location.
9989 * @returns The moved `ViewRef` instance.
9990 */
9991 abstract move(viewRef: ViewRef, currentIndex: number): ViewRef;
9992 /**
9993 * Returns the index of a view within the current container.
9994 * @param viewRef The view to query.
9995 * @returns The 0-based index of the view's position in this container,
9996 * or `-1` if this container doesn't contain the view.
9997 */
9998 abstract indexOf(viewRef: ViewRef): number;
9999 /**
10000 * Destroys a view attached to this container
10001 * @param index The 0-based index of the view to destroy.
10002 * If not specified, the last view in the container is removed.
10003 */
10004 abstract remove(index?: number): void;
10005 /**
10006 * Detaches a view from this container without destroying it.
10007 * Use along with `insert()` to move a view within the current container.
10008 * @param index The 0-based index of the view to detach.
10009 * If not specified, the last view in the container is detached.
10010 */
10011 abstract detach(index?: number): ViewRef | null;
10012}
10013
10014
10015/**
10016 * Defines the CSS styles encapsulation policies for the {@link Component} decorator's
10017 * `encapsulation` option.
10018 *
10019 * See {@link Component#encapsulation encapsulation}.
10020 *
10021 * @usageNotes
10022 * ### Example
10023 *
10024 * {@example core/ts/metadata/encapsulation.ts region='longform'}
10025 *
10026 * @publicApi
10027 */
10028export declare enum ViewEncapsulation {
10029 /**
10030 * Emulates a native Shadow DOM encapsulation behavior by adding a specific attribute to the
10031 * component's host element and applying the same attribute to all the CSS selectors provided
10032 * via {@link Component#styles styles} or {@link Component#styleUrls styleUrls}.
10033 *
10034 * This is the default option.
10035 */
10036 Emulated = 0,
10037 /**
10038 * Doesn't provide any sort of CSS style encapsulation, meaning that all the styles provided
10039 * via {@link Component#styles styles} or {@link Component#styleUrls styleUrls} are applicable
10040 * to any HTML element of the application regardless of their host Component.
10041 */
10042 None = 2,
10043 /**
10044 * Uses the browser's native Shadow DOM API to encapsulate CSS styles, meaning that it creates
10045 * a ShadowRoot for the component's host element which is then used to encapsulate
10046 * all the Component's styling.
10047 */
10048 ShadowDom = 3
10049}
10050
10051declare enum ViewEncapsulation_2 {
10052 Emulated = 0,
10053 None = 2,
10054 ShadowDom = 3
10055}
10056
10057/**
10058 * Definition of what a view queries function should look like.
10059 */
10060declare type ViewQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void;
10061
10062/**
10063 * Represents an Angular [view](guide/glossary#view "Definition").
10064 *
10065 * @see {@link ChangeDetectorRef#usage-notes Change detection usage}
10066 *
10067 * @publicApi
10068 */
10069export declare abstract class ViewRef extends ChangeDetectorRef {
10070 /**
10071 * Destroys this view and all of the data structures associated with it.
10072 */
10073 abstract destroy(): void;
10074 /**
10075 * Reports whether this view has been destroyed.
10076 * @returns True after the `destroy()` method has been called, false otherwise.
10077 */
10078 abstract get destroyed(): boolean;
10079 /**
10080 * A lifecycle hook that provides additional developer-defined cleanup
10081 * functionality for views.
10082 * @param callback A handler function that cleans up developer-defined data
10083 * associated with a view. Called when the `destroy()` method is invoked.
10084 */
10085 abstract onDestroy(callback: Function): void;
10086}
10087
10088/**
10089 * Interface for tracking root `ViewRef`s in `ApplicationRef`.
10090 *
10091 * NOTE: Importing `ApplicationRef` here directly creates circular dependency, which is why we have
10092 * a subset of the `ApplicationRef` interface `ViewRefTracker` here.
10093 */
10094declare interface ViewRefTracker {
10095 detachView(viewRef: ViewRef): void;
10096}
10097
10098declare interface WeakRef<T extends object> {
10099 deref(): T | undefined;
10100}
10101
10102declare interface WeakRefCtor {
10103 new <T extends object>(value: T): WeakRef<T>;
10104}
10105
10106/**
10107 * A `Signal` with a value that can be mutated via a setter interface.
10108 *
10109 * @developerPreview
10110 */
10111export declare interface WritableSignal<T> extends Signal<T> {
10112 /**
10113 * Directly set the signal to a new value, and notify any dependents.
10114 */
10115 set(value: T): void;
10116 /**
10117 * Update the value of the signal based on its current value, and
10118 * notify any dependents.
10119 */
10120 update(updateFn: (value: T) => T): void;
10121 /**
10122 * Update the current value by mutating it in-place, and
10123 * notify any dependents.
10124 */
10125 mutate(mutatorFn: (value: T) => void): void;
10126 /**
10127 * Returns a readonly version of this signal. Readonly signals can be accessed to read their value
10128 * but can't be changed using set, update or mutate methods. The readonly signals do _not_ have
10129 * any built-in mechanism that would prevent deep-mutation of their value.
10130 */
10131 asReadonly(): Signal<T>;
10132}
10133
10134/**
10135 * Sanitizes the given unsafe, untrusted HTML fragment, and returns HTML text that is safe to add to
10136 * the DOM in a browser environment.
10137 */
10138export declare function ɵ_sanitizeHtml(defaultDoc: any, unsafeHtmlInput: string): TrustedHTML | string;
10139
10140
10141export declare function ɵ_sanitizeUrl(url: string): string;
10142
10143/**
10144 * Internal token to indicate whether having multiple bootstrapped platform should be allowed (only
10145 * one bootstrapped platform is allowed by default). This token helps to support SSR scenarios.
10146 */
10147export declare const ɵALLOW_MULTIPLE_PLATFORMS: InjectionToken<boolean>;
10148
10149export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Html): value is ɵSafeHtml;
10150
10151export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.ResourceUrl): value is ɵSafeResourceUrl;
10152
10153export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Script): value is ɵSafeScript;
10154
10155export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Style): value is ɵSafeStyle;
10156
10157export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Url): value is ɵSafeUrl;
10158
10159export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType): boolean;
10160
10161/**
10162 * Annotates all components bootstrapped in a given ApplicationRef
10163 * with info needed for hydration.
10164 *
10165 * @param appRef An instance of an ApplicationRef.
10166 * @param doc A reference to the current Document instance.
10167 */
10168export declare function ɵannotateForHydration(appRef: ApplicationRef, doc: Document): void;
10169
10170/**
10171 * A set of marker values to be used in the attributes arrays. These markers indicate that some
10172 * items are not regular attributes and the processing should be adapted accordingly.
10173 */
10174export declare const enum ɵAttributeMarker {
10175 /**
10176 * An implicit marker which indicates that the value in the array are of `attributeKey`,
10177 * `attributeValue` format.
10178 *
10179 * NOTE: This is implicit as it is the type when no marker is present in array. We indicate that
10180 * it should not be present at runtime by the negative number.
10181 */
10182 ImplicitAttributes = -1,
10183 /**
10184 * Marker indicates that the following 3 values in the attributes array are:
10185 * namespaceUri, attributeName, attributeValue
10186 * in that order.
10187 */
10188 NamespaceURI = 0,
10189 /**
10190 * Signals class declaration.
10191 *
10192 * Each value following `Classes` designates a class name to include on the element.
10193 * ## Example:
10194 *
10195 * Given:
10196 * ```
10197 * <div class="foo bar baz">...<d/vi>
10198 * ```
10199 *
10200 * the generated code is:
10201 * ```
10202 * var _c1 = [AttributeMarker.Classes, 'foo', 'bar', 'baz'];
10203 * ```
10204 */
10205 Classes = 1,
10206 /**
10207 * Signals style declaration.
10208 *
10209 * Each pair of values following `Styles` designates a style name and value to include on the
10210 * element.
10211 * ## Example:
10212 *
10213 * Given:
10214 * ```
10215 * <div style="width:100px; height:200px; color:red">...</div>
10216 * ```
10217 *
10218 * the generated code is:
10219 * ```
10220 * var _c1 = [AttributeMarker.Styles, 'width', '100px', 'height'. '200px', 'color', 'red'];
10221 * ```
10222 */
10223 Styles = 2,
10224 /**
10225 * Signals that the following attribute names were extracted from input or output bindings.
10226 *
10227 * For example, given the following HTML:
10228 *
10229 * ```
10230 * <div moo="car" [foo]="exp" (bar)="doSth()">
10231 * ```
10232 *
10233 * the generated code is:
10234 *
10235 * ```
10236 * var _c1 = ['moo', 'car', AttributeMarker.Bindings, 'foo', 'bar'];
10237 * ```
10238 */
10239 Bindings = 3,
10240 /**
10241 * Signals that the following attribute names were hoisted from an inline-template declaration.
10242 *
10243 * For example, given the following HTML:
10244 *
10245 * ```
10246 * <div *ngFor="let value of values; trackBy:trackBy" dirA [dirB]="value">
10247 * ```
10248 *
10249 * the generated code for the `template()` instruction would include:
10250 *
10251 * ```
10252 * ['dirA', '', AttributeMarker.Bindings, 'dirB', AttributeMarker.Template, 'ngFor', 'ngForOf',
10253 * 'ngForTrackBy', 'let-value']
10254 * ```
10255 *
10256 * while the generated code for the `element()` instruction inside the template function would
10257 * include:
10258 *
10259 * ```
10260 * ['dirA', '', AttributeMarker.Bindings, 'dirB']
10261 * ```
10262 */
10263 Template = 4,
10264 /**
10265 * Signals that the following attribute is `ngProjectAs` and its value is a parsed
10266 * `CssSelector`.
10267 *
10268 * For example, given the following HTML:
10269 *
10270 * ```
10271 * <h1 attr="value" ngProjectAs="[title]">
10272 * ```
10273 *
10274 * the generated code for the `element()` instruction would include:
10275 *
10276 * ```
10277 * ['attr', 'value', AttributeMarker.ProjectAs, ['', 'title', '']]
10278 * ```
10279 */
10280 ProjectAs = 5,
10281 /**
10282 * Signals that the following attribute will be translated by runtime i18n
10283 *
10284 * For example, given the following HTML:
10285 *
10286 * ```
10287 * <div moo="car" foo="value" i18n-foo [bar]="binding" i18n-bar>
10288 * ```
10289 *
10290 * the generated code is:
10291 *
10292 * ```
10293 * var _c1 = ['moo', 'car', AttributeMarker.I18n, 'foo', 'bar'];
10294 */
10295 I18n = 6
10296}
10297
10298/**
10299 * Mark `html` string as trusted.
10300 *
10301 * This function wraps the trusted string in `String` and brands it in a way which makes it
10302 * recognizable to {@link htmlSanitizer} to be trusted implicitly.
10303 *
10304 * @param trustedHtml `html` string which needs to be implicitly trusted.
10305 * @returns a `html` which has been branded to be implicitly trusted.
10306 */
10307export declare function ɵbypassSanitizationTrustHtml(trustedHtml: string): ɵSafeHtml;
10308
10309/**
10310 * Mark `url` string as trusted.
10311 *
10312 * This function wraps the trusted string in `String` and brands it in a way which makes it
10313 * recognizable to {@link resourceUrlSanitizer} to be trusted implicitly.
10314 *
10315 * @param trustedResourceUrl `url` string which needs to be implicitly trusted.
10316 * @returns a `url` which has been branded to be implicitly trusted.
10317 */
10318export declare function ɵbypassSanitizationTrustResourceUrl(trustedResourceUrl: string): ɵSafeResourceUrl;
10319
10320/**
10321 * Mark `script` string as trusted.
10322 *
10323 * This function wraps the trusted string in `String` and brands it in a way which makes it
10324 * recognizable to {@link scriptSanitizer} to be trusted implicitly.
10325 *
10326 * @param trustedScript `script` string which needs to be implicitly trusted.
10327 * @returns a `script` which has been branded to be implicitly trusted.
10328 */
10329export declare function ɵbypassSanitizationTrustScript(trustedScript: string): ɵSafeScript;
10330
10331/**
10332 * Mark `style` string as trusted.
10333 *
10334 * This function wraps the trusted string in `String` and brands it in a way which makes it
10335 * recognizable to {@link styleSanitizer} to be trusted implicitly.
10336 *
10337 * @param trustedStyle `style` string which needs to be implicitly trusted.
10338 * @returns a `style` hich has been branded to be implicitly trusted.
10339 */
10340export declare function ɵbypassSanitizationTrustStyle(trustedStyle: string): ɵSafeStyle;
10341
10342/**
10343 * Mark `url` string as trusted.
10344 *
10345 * This function wraps the trusted string in `String` and brands it in a way which makes it
10346 * recognizable to {@link urlSanitizer} to be trusted implicitly.
10347 *
10348 * @param trustedUrl `url` string which needs to be implicitly trusted.
10349 * @returns a `url` which has been branded to be implicitly trusted.
10350 */
10351export declare function ɵbypassSanitizationTrustUrl(trustedUrl: string): ɵSafeUrl;
10352
10353
10354export declare const enum ɵBypassType {
10355 Url = "URL",
10356 Html = "HTML",
10357 ResourceUrl = "ResourceURL",
10358 Script = "Script",
10359 Style = "Style"
10360}
10361
10362export declare function ɵclearResolutionOfComponentResourcesQueue(): Map<Type<any>, Component>;
10363
10364
10365/** Coerces a value (typically a string) to a boolean. */
10366export declare function ɵcoerceToBoolean(value: unknown): boolean;
10367
10368/**
10369 * Compile an Angular component according to its decorator metadata, and patch the resulting
10370 * component def (ɵcmp) onto the component type.
10371 *
10372 * Compilation may be asynchronous (due to the need to resolve URLs for the component template or
10373 * other resources, for example). In the event that compilation is not immediate, `compileComponent`
10374 * will enqueue resource resolution into a global queue and will fail to return the `ɵcmp`
10375 * until the global queue has been resolved with a call to `resolveComponentResources`.
10376 */
10377export declare function ɵcompileComponent(type: Type<any>, metadata: Component): void;
10378
10379/**
10380 * Compile an Angular directive according to its decorator metadata, and patch the resulting
10381 * directive def onto the component type.
10382 *
10383 * In the event that compilation is not immediate, `compileDirective` will return a `Promise` which
10384 * will resolve when compilation completes and the directive becomes usable.
10385 */
10386export declare function ɵcompileDirective(type: Type<any>, directive: Directive | null): void;
10387
10388/**
10389 * Compiles a module in JIT mode.
10390 *
10391 * This function automatically gets called when a class has a `@NgModule` decorator.
10392 */
10393export declare function ɵcompileNgModule(moduleType: Type<any>, ngModule?: NgModule): void;
10394
10395/**
10396 * Compiles and adds the `ɵmod`, `ɵfac` and `ɵinj` properties to the module class.
10397 *
10398 * It's possible to compile a module via this API which will allow duplicate declarations in its
10399 * root.
10400 */
10401export declare function ɵcompileNgModuleDefs(moduleType: ɵNgModuleType, ngModule: NgModule, allowDuplicateDeclarationsInRoot?: boolean): void;
10402
10403export declare function ɵcompileNgModuleFactory<M>(injector: Injector, options: CompilerOptions, moduleType: Type<M>): Promise<NgModuleFactory<M>>;
10404
10405export declare function ɵcompilePipe(type: Type<any>, meta: Pipe): void;
10406
10407/**
10408 * Runtime link information for Components.
10409 *
10410 * This is an internal data structure used by the render to link
10411 * components into templates.
10412 *
10413 * NOTE: Always use `defineComponent` function to create this object,
10414 * never create the object directly since the shape of this object
10415 * can change between versions.
10416 *
10417 * See: {@link defineComponent}
10418 */
10419export declare interface ɵComponentDef<T> extends ɵDirectiveDef<T> {
10420 /**
10421 * Unique ID for the component. Used in view encapsulation and
10422 * to keep track of the injector in standalone components.
10423 */
10424 readonly id: string;
10425 /**
10426 * The View template of the component.
10427 */
10428 readonly template: ComponentTemplate<T>;
10429 /** Constants associated with the component's view. */
10430 readonly consts: TConstantsOrFactory | null;
10431 /**
10432 * An array of `ngContent[selector]` values that were found in the template.
10433 */
10434 readonly ngContentSelectors?: string[];
10435 /**
10436 * A set of styles that the component needs to be present for component to render correctly.
10437 */
10438 readonly styles: string[];
10439 /**
10440 * The number of nodes, local refs, and pipes in this component template.
10441 *
10442 * Used to calculate the length of the component's LView array, so we
10443 * can pre-fill the array and set the binding start index.
10444 */
10445 readonly decls: number;
10446 /**
10447 * The number of bindings in this component template (including pure fn bindings).
10448 *
10449 * Used to calculate the length of the component's LView array, so we
10450 * can pre-fill the array and set the host binding start index.
10451 */
10452 readonly vars: number;
10453 /**
10454 * Query-related instructions for a component.
10455 */
10456 viewQuery: ViewQueriesFunction<T> | null;
10457 /**
10458 * The view encapsulation type, which determines how styles are applied to
10459 * DOM elements. One of
10460 * - `Emulated` (default): Emulate native scoping of styles.
10461 * - `Native`: Use the native encapsulation mechanism of the renderer.
10462 * - `ShadowDom`: Use modern [ShadowDOM](https://w3c.github.io/webcomponents/spec/shadow/) and
10463 * create a ShadowRoot for component's host element.
10464 * - `None`: Do not provide any template or style encapsulation.
10465 */
10466 readonly encapsulation: ViewEncapsulation;
10467 /**
10468 * Defines arbitrary developer-defined data to be stored on a renderer instance.
10469 * This is useful for renderers that delegate to other renderers.
10470 */
10471 readonly data: {
10472 [kind: string]: any;
10473 };
10474 /** Whether or not this component's ChangeDetectionStrategy is OnPush */
10475 readonly onPush: boolean;
10476 /**
10477 * Registry of directives and components that may be found in this view.
10478 *
10479 * The property is either an array of `DirectiveDef`s or a function which returns the array of
10480 * `DirectiveDef`s. The function is necessary to be able to support forward declarations.
10481 */
10482 directiveDefs: DirectiveDefListOrFactory | null;
10483 /**
10484 * Registry of pipes that may be found in this view.
10485 *
10486 * The property is either an array of `PipeDefs`s or a function which returns the array of
10487 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
10488 */
10489 pipeDefs: PipeDefListOrFactory | null;
10490 /**
10491 * Unfiltered list of all dependencies of a component, or `null` if none.
10492 */
10493 dependencies: TypeOrFactory<DependencyTypeList> | null;
10494 /**
10495 * The set of schemas that declare elements to be allowed in the component's template.
10496 */
10497 schemas: SchemaMetadata[] | null;
10498 /**
10499 * Ivy runtime uses this place to store the computed tView for the component. This gets filled on
10500 * the first run of component.
10501 */
10502 tView: TView | null;
10503 /**
10504 * A function added by the {@link ɵɵStandaloneFeature} and used by the framework to create
10505 * standalone injectors.
10506 */
10507 getStandaloneInjector: ((parentInjector: EnvironmentInjector) => EnvironmentInjector | null) | null;
10508 /**
10509 * Used to store the result of `noSideEffects` function so that it is not removed by closure
10510 * compiler. The property should never be read.
10511 */
10512 readonly _?: unknown;
10513}
10514
10515/**
10516 * A subclass of `Type` which has a static `ɵcmp`:`ComponentDef` field making it
10517 * consumable for rendering.
10518 */
10519export declare interface ɵComponentType<T> extends Type<T> {
10520 ɵcmp: unknown;
10521}
10522
10523export declare class ɵConsole {
10524 log(message: string): void;
10525 warn(message: string): void;
10526 static ɵfac: i0.ɵɵFactoryDeclaration<ɵConsole, never>;
10527 static ɵprov: i0.ɵɵInjectableDeclaration<ɵConsole>;
10528}
10529
10530export declare function ɵconvertToBitFlags(flags: InjectOptions | InjectFlags | undefined): InjectFlags | undefined;
10531
10532/**
10533 * Create a new `Injector` which is configured using a `defType` of `InjectorType<any>`s.
10534 *
10535 * @publicApi
10536 */
10537export declare function ɵcreateInjector(defType: any, parent?: Injector | null, additionalProviders?: StaticProvider[] | null, name?: string): Injector;
10538
10539/**
10540 * A list of CssSelectors.
10541 *
10542 * A directive or component can have multiple selectors. This type is used for
10543 * directive defs so any of the selectors in the list will match that directive.
10544 *
10545 * Original: 'form, [ngForm]'
10546 * Parsed: [['form'], ['', 'ngForm', '']]
10547 */
10548export declare type ɵCssSelectorList = CssSelector[];
10549
10550/**
10551 * Index of each value in currency data (used to describe CURRENCIES_EN in currencies.ts)
10552 */
10553export declare const enum ɵCurrencyIndex {
10554 Symbol = 0,
10555 SymbolNarrow = 1,
10556 NbOfDigits = 2
10557}
10558
10559/**
10560 * The locale id that the application is using by default (for translations and ICU expressions).
10561 */
10562export declare const ɵDEFAULT_LOCALE_ID = "en-US";
10563
10564export declare const ɵdefaultIterableDiffers: IterableDiffers;
10565
10566export declare const ɵdefaultKeyValueDiffers: KeyValueDiffers;
10567
10568/**
10569 * Synchronously perform change detection on a component (and possibly its sub-components).
10570 *
10571 * This function triggers change detection in a synchronous way on a component.
10572 *
10573 * @param component The component which the change detection should be performed on.
10574 */
10575export declare function ɵdetectChanges(component: {}): void;
10576
10577
10578export declare function ɵdevModeEqual(a: any, b: any): boolean;
10579
10580/**
10581 * Runtime link information for Directives.
10582 *
10583 * This is an internal data structure used by the render to link
10584 * directives into templates.
10585 *
10586 * NOTE: Always use `defineDirective` function to create this object,
10587 * never create the object directly since the shape of this object
10588 * can change between versions.
10589 *
10590 * @param Selector type metadata specifying the selector of the directive or component
10591 *
10592 * See: {@link defineDirective}
10593 */
10594export declare interface ɵDirectiveDef<T> {
10595 /**
10596 * A dictionary mapping the inputs' minified property names to their public API names, which
10597 * are their aliases if any, or their original unminified property names
10598 * (as in `@Input('alias') propertyName: any;`).
10599 */
10600 readonly inputs: {
10601 [P in keyof T]: string;
10602 };
10603 /**
10604 * @deprecated This is only here because `NgOnChanges` incorrectly uses declared name instead of
10605 * public or minified name.
10606 */
10607 readonly declaredInputs: {
10608 [P in keyof T]: string;
10609 };
10610 /**
10611 * A dictionary mapping the outputs' minified property names to their public API names, which
10612 * are their aliases if any, or their original unminified property names
10613 * (as in `@Output('alias') propertyName: any;`).
10614 */
10615 readonly outputs: {
10616 [P in keyof T]: string;
10617 };
10618 /**
10619 * Function to create and refresh content queries associated with a given directive.
10620 */
10621 contentQueries: ContentQueriesFunction<T> | null;
10622 /**
10623 * Query-related instructions for a directive. Note that while directives don't have a
10624 * view and as such view queries won't necessarily do anything, there might be
10625 * components that extend the directive.
10626 */
10627 viewQuery: ViewQueriesFunction<T> | null;
10628 /**
10629 * Refreshes host bindings on the associated directive.
10630 */
10631 readonly hostBindings: HostBindingsFunction<T> | null;
10632 /**
10633 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
10634 *
10635 * Used to calculate the length of the component's LView array, so we
10636 * can pre-fill the array and set the host binding start index.
10637 */
10638 readonly hostVars: number;
10639 /**
10640 * Assign static attribute values to a host element.
10641 *
10642 * This property will assign static attribute values as well as class and style
10643 * values to a host element. Since attribute values can consist of different types of values, the
10644 * `hostAttrs` array must include the values in the following format:
10645 *
10646 * attrs = [
10647 * // static attributes (like `title`, `name`, `id`...)
10648 * attr1, value1, attr2, value,
10649 *
10650 * // a single namespace value (like `x:id`)
10651 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
10652 *
10653 * // another single namespace value (like `x:name`)
10654 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
10655 *
10656 * // a series of CSS classes that will be applied to the element (no spaces)
10657 * CLASSES_MARKER, class1, class2, class3,
10658 *
10659 * // a series of CSS styles (property + value) that will be applied to the element
10660 * STYLES_MARKER, prop1, value1, prop2, value2
10661 * ]
10662 *
10663 * All non-class and non-style attributes must be defined at the start of the list
10664 * first before all class and style values are set. When there is a change in value
10665 * type (like when classes and styles are introduced) a marker must be used to separate
10666 * the entries. The marker values themselves are set via entries found in the
10667 * [AttributeMarker] enum.
10668 */
10669 readonly hostAttrs: TAttributes | null;
10670 /** Token representing the directive. Used by DI. */
10671 readonly type: Type<T>;
10672 /** Function that resolves providers and publishes them into the DI system. */
10673 providersResolver: (<U extends T>(def: ɵDirectiveDef<U>, processProvidersFn?: ProcessProvidersFunction) => void) | null;
10674 /** The selectors that will be used to match nodes to this directive. */
10675 readonly selectors: ɵCssSelectorList;
10676 /**
10677 * Name under which the directive is exported (for use with local references in template)
10678 */
10679 readonly exportAs: string[] | null;
10680 /**
10681 * Whether this directive (or component) is standalone.
10682 */
10683 readonly standalone: boolean;
10684 /**
10685 * Factory function used to create a new directive instance. Will be null initially.
10686 * Populated when the factory is first requested by directive instantiation logic.
10687 */
10688 readonly factory: FactoryFn<T> | null;
10689 /**
10690 * The features applied to this directive
10691 */
10692 readonly features: DirectiveDefFeature[] | null;
10693 /**
10694 * Function that will add the host directives to the list of matches during directive matching.
10695 * Patched onto the definition by the `HostDirectivesFeature`.
10696 * @param currentDef Definition that has been matched.
10697 * @param matchedDefs List of all matches for a specified node. Will be mutated to include the
10698 * host directives.
10699 * @param hostDirectiveDefs Mapping of directive definitions to their host directive
10700 * configuration. Host directives will be added to the map as they're being matched to the node.
10701 */
10702 findHostDirectiveDefs: ((currentDef: ɵDirectiveDef<unknown>, matchedDefs: ɵDirectiveDef<unknown>[], hostDirectiveDefs: HostDirectiveDefs) => void) | null;
10703 /** Additional directives to be applied whenever the directive has been matched. */
10704 hostDirectives: HostDirectiveDef[] | null;
10705 setInput: (<U extends T>(this: ɵDirectiveDef<U>, instance: U, value: any, publicName: string, privateName: string) => void) | null;
10706}
10707
10708/**
10709 * A subclass of `Type` which has a static `ɵdir`:`DirectiveDef` field making it
10710 * consumable for rendering.
10711 */
10712export declare interface ɵDirectiveType<T> extends Type<T> {
10713 ɵdir: unknown;
10714 ɵfac: unknown;
10715}
10716
10717/**
10718 * Internal token to collect all SSR-related features enabled for this application.
10719 *
10720 * Note: the token is in `core` to let other packages register features (the `core`
10721 * package is imported in other packages).
10722 */
10723export declare const ɵENABLED_SSR_FEATURES: InjectionToken<Set<string>>;
10724
10725/**
10726 * Index of each type of locale data from the extra locale data array
10727 */
10728export declare const enum ɵExtraLocaleDataIndex {
10729 ExtraDayPeriodFormats = 0,
10730 ExtraDayPeriodStandalone = 1,
10731 ExtraDayPeriodsRules = 2
10732}
10733
10734/**
10735 * Finds the locale data for a given locale.
10736 *
10737 * @param locale The locale code.
10738 * @returns The locale data.
10739 * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)
10740 */
10741export declare function ɵfindLocaleData(locale: string): any;
10742
10743/**
10744 * Loops over queued module definitions, if a given module definition has all of its
10745 * declarations resolved, it dequeues that module definition and sets the scope on
10746 * its declarations.
10747 */
10748export declare function ɵflushModuleScopingQueueAsMuchAsPossible(): void;
10749
10750/**
10751 * Called to format a runtime error.
10752 * See additional info on the `message` argument type in the `RuntimeError` class description.
10753 */
10754export declare function ɵformatRuntimeError<T extends number = RuntimeErrorCode>(code: T, message: null | false | string): string;
10755
10756/**
10757 * Retrieves directive instances associated with a given DOM node. Does not include
10758 * component instances.
10759 *
10760 * @usageNotes
10761 * Given the following DOM structure:
10762 *
10763 * ```html
10764 * <app-root>
10765 * <button my-button></button>
10766 * <my-comp></my-comp>
10767 * </app-root>
10768 * ```
10769 *
10770 * Calling `getDirectives` on `<button>` will return an array with an instance of the `MyButton`
10771 * directive that is associated with the DOM node.
10772 *
10773 * Calling `getDirectives` on `<my-comp>` will return an empty array.
10774 *
10775 * @param node DOM node for which to get the directives.
10776 * @returns Array of directives associated with the node.
10777 *
10778 * @publicApi
10779 * @globalApi ng
10780 */
10781export declare function ɵgetDirectives(node: Node): {}[];
10782
10783/**
10784 * Retrieves the host element of a component or directive instance.
10785 * The host element is the DOM element that matched the selector of the directive.
10786 *
10787 * @param componentOrDirective Component or directive instance for which the host
10788 * element should be retrieved.
10789 * @returns Host element of the target.
10790 *
10791 * @publicApi
10792 * @globalApi ng
10793 */
10794export declare function ɵgetHostElement(componentOrDirective: {}): Element;
10795
10796/**
10797 * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading
10798 * inherited value.
10799 *
10800 * @param type A type which may have its own (non-inherited) `ɵprov`.
10801 */
10802export declare function ɵgetInjectableDef<T>(type: any): ɵɵInjectableDeclaration<T> | null;
10803
10804/**
10805 * Returns the matching `LContext` data for a given DOM node, directive or component instance.
10806 *
10807 * This function will examine the provided DOM element, component, or directive instance\'s
10808 * monkey-patched property to derive the `LContext` data. Once called then the monkey-patched
10809 * value will be that of the newly created `LContext`.
10810 *
10811 * If the monkey-patched value is the `LView` instance then the context value for that
10812 * target will be created and the monkey-patch reference will be updated. Therefore when this
10813 * function is called it may mutate the provided element\'s, component\'s or any of the associated
10814 * directive\'s monkey-patch values.
10815 *
10816 * If the monkey-patch value is not detected then the code will walk up the DOM until an element
10817 * is found which contains a monkey-patch reference. When that occurs then the provided element
10818 * will be updated with a new context (which is then returned). If the monkey-patch value is not
10819 * detected for a component/directive instance then it will throw an error (all components and
10820 * directives should be automatically monkey-patched by ivy).
10821 *
10822 * @param target Component, Directive or DOM Node.
10823 */
10824export declare function ɵgetLContext(target: any): ɵLContext | null;
10825
10826/**
10827 * Retrieves the default currency code for the given locale.
10828 *
10829 * The default is defined as the first currency which is still in use.
10830 *
10831 * @param locale The code of the locale whose currency code we want.
10832 * @returns The code of the default currency for the given locale.
10833 *
10834 */
10835export declare function ɵgetLocaleCurrencyCode(locale: string): string | null;
10836
10837/**
10838 * Retrieves the plural function used by ICU expressions to determine the plural case to use
10839 * for a given locale.
10840 * @param locale A locale code for the locale format rules to use.
10841 * @returns The plural function for the locale.
10842 * @see `NgPlural`
10843 * @see [Internationalization (i18n) Guide](/guide/i18n-overview)
10844 */
10845export declare function ɵgetLocalePluralCase(locale: string): (value: number) => number;
10846
10847export declare function ɵgetSanitizationBypassType(value: any): ɵBypassType | null;
10848
10849/**
10850 * Gets the current value of the strict mode.
10851 */
10852export declare function ɵgetUnknownElementStrictMode(): boolean;
10853
10854/**
10855 * Gets the current value of the strict mode.
10856 */
10857export declare function ɵgetUnknownPropertyStrictMode(): boolean;
10858
10859
10860export declare const ɵglobal: any;
10861
10862/**
10863 * *Internal* service that keeps track of pending tasks happening in the system
10864 * during the initial rendering. No tasks are tracked after an initial
10865 * rendering.
10866 *
10867 * This information is needed to make sure that the serialization on the server
10868 * is delayed until all tasks in the queue (such as an initial navigation or a
10869 * pending HTTP request) are completed.
10870 */
10871export declare class ɵInitialRenderPendingTasks implements OnDestroy {
10872 private taskId;
10873 private pendingTasks;
10874 hasPendingTasks: BehaviorSubject<boolean>;
10875 add(): number;
10876 remove(taskId: number): void;
10877 ngOnDestroy(): void;
10878 static ɵfac: i0.ɵɵFactoryDeclaration<ɵInitialRenderPendingTasks, never>;
10879 static ɵprov: i0.ɵɵInjectableDeclaration<ɵInitialRenderPendingTasks>;
10880}
10881
10882/** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */
10883export declare function ɵinjectChangeDetectorRef(flags: InjectFlags): ChangeDetectorRef;
10884
10885/**
10886 * An internal token whose presence in an injector indicates that the injector should treat itself
10887 * as a root scoped injector when processing requests for unknown tokens which may indicate
10888 * they are provided in the root scope.
10889 */
10890export declare const ɵINJECTOR_SCOPE: InjectionToken<InjectorScope | null>;
10891
10892/**
10893 * Internal create application API that implements the core application creation logic and optional
10894 * bootstrap logic.
10895 *
10896 * Platforms (such as `platform-browser`) may require different set of application and platform
10897 * providers for an application to function correctly. As a result, platforms may use this function
10898 * internally and supply the necessary providers during the bootstrap, while exposing
10899 * platform-specific APIs as a part of their public API.
10900 *
10901 * @returns A promise that returns an `ApplicationRef` instance once resolved.
10902 */
10903export declare function ɵinternalCreateApplication(config: {
10904 rootComponent?: Type<unknown>;
10905 appProviders?: Array<Provider | EnvironmentProviders>;
10906 platformProviders?: Provider[];
10907}): Promise<ApplicationRef>;
10908
10909export declare interface ɵInternalEnvironmentProviders extends EnvironmentProviders {
10910 ɵproviders: (Provider | EnvironmentProviders)[];
10911 /**
10912 * If present, indicates that the `EnvironmentProviders` were derived from NgModule providers.
10913 *
10914 * This is used to produce clearer error messages.
10915 */
10916 ɵfromNgModule?: true;
10917}
10918
10919/**
10920 * Internal token that specifies whether DOM reuse logic
10921 * during hydration is enabled.
10922 */
10923export declare const ɵIS_HYDRATION_DOM_REUSE_ENABLED: InjectionToken<boolean>;
10924
10925export declare function ɵisBoundToModule<C>(cf: ComponentFactory<C>): boolean;
10926
10927export declare function ɵisEnvironmentProviders(value: Provider | EnvironmentProviders | ɵInternalEnvironmentProviders): value is ɵInternalEnvironmentProviders;
10928
10929export declare function ɵisInjectable(type: any): boolean;
10930
10931export declare function ɵisNgModule<T>(value: Type<T>): value is Type<T> & {
10932 ɵmod: ɵNgModuleDef<T>;
10933};
10934
10935/**
10936 * Determine if the argument is shaped like a Promise
10937 */
10938export declare function ɵisPromise<T = any>(obj: any): obj is Promise<T>;
10939
10940/**
10941 * Determine if the argument is a Subscribable
10942 */
10943export declare function ɵisSubscribable<T>(obj: any | Subscribable<T>): obj is Subscribable<T>;
10944
10945/**
10946 * The internal view context which is specific to a given DOM element, directive or
10947 * component instance. Each value in here (besides the LView and element node details)
10948 * can be present, null or undefined. If undefined then it implies the value has not been
10949 * looked up yet, otherwise, if null, then a lookup was executed and nothing was found.
10950 *
10951 * Each value will get filled when the respective value is examined within the getContext
10952 * function. The component, element and each directive instance will share the same instance
10953 * of the context.
10954 */
10955export declare class ɵLContext {
10956 /**
10957 * ID of the component's parent view data.
10958 */
10959 private lViewId;
10960 /**
10961 * The index instance of the node.
10962 */
10963 nodeIndex: number;
10964 /**
10965 * The instance of the DOM node that is attached to the lNode.
10966 */
10967 native: RNode;
10968 /**
10969 * The instance of the Component node.
10970 */
10971 component: {} | null | undefined;
10972 /**
10973 * The list of active directives that exist on this element.
10974 */
10975 directives: any[] | null | undefined;
10976 /**
10977 * The map of local references (local reference name => element or directive instance) that
10978 * exist on this element.
10979 */
10980 localRefs: {
10981 [key: string]: any;
10982 } | null | undefined;
10983 /** Component's parent view data. */
10984 get lView(): LView | null;
10985 constructor(
10986 /**
10987 * ID of the component's parent view data.
10988 */
10989 lViewId: number,
10990 /**
10991 * The index instance of the node.
10992 */
10993 nodeIndex: number,
10994 /**
10995 * The instance of the DOM node that is attached to the lNode.
10996 */
10997 native: RNode);
10998}
10999
11000/**
11001 * Used to enable lifecycle hooks on the root component.
11002 *
11003 * Include this feature when calling `renderComponent` if the root component
11004 * you are rendering has lifecycle hooks defined. Otherwise, the hooks won't
11005 * be called properly.
11006 *
11007 * Example:
11008 *
11009 * ```
11010 * renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});
11011 * ```
11012 */
11013export declare function ɵLifecycleHooksFeature(): void;
11014
11015/**
11016 * Index of each type of locale data from the locale data array
11017 */
11018export declare enum ɵLocaleDataIndex {
11019 LocaleId = 0,
11020 DayPeriodsFormat = 1,
11021 DayPeriodsStandalone = 2,
11022 DaysFormat = 3,
11023 DaysStandalone = 4,
11024 MonthsFormat = 5,
11025 MonthsStandalone = 6,
11026 Eras = 7,
11027 FirstDayOfWeek = 8,
11028 WeekendRange = 9,
11029 DateFormat = 10,
11030 TimeFormat = 11,
11031 DateTimeFormat = 12,
11032 NumberSymbols = 13,
11033 NumberFormats = 14,
11034 CurrencyCode = 15,
11035 CurrencySymbol = 16,
11036 CurrencyName = 17,
11037 Currencies = 18,
11038 Directionality = 19,
11039 PluralCase = 20,
11040 ExtraData = 21
11041}
11042
11043
11044export declare const ɵNG_COMP_DEF: string;
11045
11046export declare const ɵNG_DIR_DEF: string;
11047
11048/**
11049 * If a directive is diPublic, bloomAdd sets a property on the type with this constant as
11050 * the key and the directive's unique ID as the value. This allows us to map directives to their
11051 * bloom filter bit for DI.
11052 */
11053export declare const ɵNG_ELEMENT_ID: string;
11054
11055export declare const ɵNG_INJ_DEF: string;
11056
11057export declare const ɵNG_MOD_DEF: string;
11058
11059export declare const ɵNG_PIPE_DEF: string;
11060
11061export declare const ɵNG_PROV_DEF: string;
11062
11063/**
11064 * Runtime link information for NgModules.
11065 *
11066 * This is the internal data structure used by the runtime to assemble components, directives,
11067 * pipes, and injectors.
11068 *
11069 * NOTE: Always use `ɵɵdefineNgModule` function to create this object,
11070 * never create the object directly since the shape of this object
11071 * can change between versions.
11072 */
11073export declare interface ɵNgModuleDef<T> {
11074 /** Token representing the module. Used by DI. */
11075 type: T;
11076 /** List of components to bootstrap. */
11077 bootstrap: Type<any>[] | (() => Type<any>[]);
11078 /** List of components, directives, and pipes declared by this module. */
11079 declarations: Type<any>[] | (() => Type<any>[]);
11080 /** List of modules or `ModuleWithProviders` imported by this module. */
11081 imports: Type<any>[] | (() => Type<any>[]);
11082 /**
11083 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
11084 * module.
11085 */
11086 exports: Type<any>[] | (() => Type<any>[]);
11087 /**
11088 * Cached value of computed `transitiveCompileScopes` for this module.
11089 *
11090 * This should never be read directly, but accessed via `transitiveScopesFor`.
11091 */
11092 transitiveCompileScopes: ɵNgModuleTransitiveScopes | null;
11093 /** The set of schemas that declare elements to be allowed in the NgModule. */
11094 schemas: SchemaMetadata[] | null;
11095 /** Unique ID for the module with which it should be registered. */
11096 id: string | null;
11097}
11098
11099export declare class ɵNgModuleFactory<T> extends NgModuleFactory<T> {
11100 moduleType: Type<T>;
11101 constructor(moduleType: Type<T>);
11102 create(parentInjector: Injector | null): NgModuleRef<T>;
11103}
11104
11105/**
11106 * Represents the expansion of an `NgModule` into its scopes.
11107 *
11108 * A scope is a set of directives and pipes that are visible in a particular context. Each
11109 * `NgModule` has two scopes. The `compilation` scope is the set of directives and pipes that will
11110 * be recognized in the templates of components declared by the module. The `exported` scope is the
11111 * set of directives and pipes exported by a module (that is, module B's exported scope gets added
11112 * to module A's compilation scope when module A imports B).
11113 */
11114export declare interface ɵNgModuleTransitiveScopes {
11115 compilation: {
11116 directives: Set<any>;
11117 pipes: Set<any>;
11118 };
11119 exported: {
11120 directives: Set<any>;
11121 pipes: Set<any>;
11122 };
11123 schemas: SchemaMetadata[] | null;
11124}
11125
11126export declare interface ɵNgModuleType<T = any> extends Type<T> {
11127 ɵmod: ɵNgModuleDef<T>;
11128}
11129
11130
11131export declare interface ɵNO_CHANGE {
11132 __brand__: 'NO_CHANGE';
11133}
11134
11135/** A special value which designates that a value has not changed. */
11136export declare const ɵNO_CHANGE: ɵNO_CHANGE;
11137
11138/**
11139 * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls
11140 * to framework to perform rendering.
11141 */
11142export declare class ɵNoopNgZone implements NgZone {
11143 readonly hasPendingMicrotasks = false;
11144 readonly hasPendingMacrotasks = false;
11145 readonly isStable = true;
11146 readonly onUnstable: EventEmitter<any>;
11147 readonly onMicrotaskEmpty: EventEmitter<any>;
11148 readonly onStable: EventEmitter<any>;
11149 readonly onError: EventEmitter<any>;
11150 run<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any): T;
11151 runGuarded<T>(fn: (...args: any[]) => any, applyThis?: any, applyArgs?: any): T;
11152 runOutsideAngular<T>(fn: (...args: any[]) => T): T;
11153 runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any, name?: string): T;
11154}
11155
11156
11157/**
11158 * Convince closure compiler that the wrapped function has no side-effects.
11159 *
11160 * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to
11161 * allow us to execute a function but have closure compiler mark the call as no-side-effects.
11162 * It is important that the return value for the `noSideEffects` function be assigned
11163 * to something which is retained otherwise the call to `noSideEffects` will be removed by closure
11164 * compiler.
11165 */
11166export declare function ɵnoSideEffects<T>(fn: () => T): T;
11167
11168
11169export declare const ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR: {};
11170
11171/**
11172 * Patch the definition of a component with directives and pipes from the compilation scope of
11173 * a given module.
11174 */
11175export declare function ɵpatchComponentDefWithScope<C>(componentDef: ɵComponentDef<C>, transitiveScopes: ɵNgModuleTransitiveScopes): void;
11176
11177/**
11178 * Runtime link information for Pipes.
11179 *
11180 * This is an internal data structure used by the renderer to link
11181 * pipes into templates.
11182 *
11183 * NOTE: Always use `definePipe` function to create this object,
11184 * never create the object directly since the shape of this object
11185 * can change between versions.
11186 *
11187 * See: {@link definePipe}
11188 */
11189export declare interface ɵPipeDef<T> {
11190 /** Token representing the pipe. */
11191 type: Type<T>;
11192 /**
11193 * Pipe name.
11194 *
11195 * Used to resolve pipe in templates.
11196 */
11197 readonly name: string;
11198 /**
11199 * Factory function used to create a new pipe instance. Will be null initially.
11200 * Populated when the factory is first requested by pipe instantiation logic.
11201 */
11202 factory: FactoryFn<T> | null;
11203 /**
11204 * Whether or not the pipe is pure.
11205 *
11206 * Pure pipes result only depends on the pipe input and not on internal
11207 * state of the pipe.
11208 */
11209 readonly pure: boolean;
11210 /**
11211 * Whether this pipe is standalone.
11212 */
11213 readonly standalone: boolean;
11214 onDestroy: (() => void) | null;
11215}
11216
11217/**
11218 * Profiler function which the runtime will invoke before and after user code.
11219 */
11220export declare interface ɵProfiler {
11221 (event: ɵProfilerEvent, instance: {} | null, hookOrListener?: (e?: any) => any): void;
11222}
11223
11224
11225/**
11226 * Profiler events is an enum used by the profiler to distinguish between different calls of user
11227 * code invoked throughout the application lifecycle.
11228 */
11229export declare const enum ɵProfilerEvent {
11230 /**
11231 * Corresponds to the point in time before the runtime has called the template function of a
11232 * component with `RenderFlags.Create`.
11233 */
11234 TemplateCreateStart = 0,
11235 /**
11236 * Corresponds to the point in time after the runtime has called the template function of a
11237 * component with `RenderFlags.Create`.
11238 */
11239 TemplateCreateEnd = 1,
11240 /**
11241 * Corresponds to the point in time before the runtime has called the template function of a
11242 * component with `RenderFlags.Update`.
11243 */
11244 TemplateUpdateStart = 2,
11245 /**
11246 * Corresponds to the point in time after the runtime has called the template function of a
11247 * component with `RenderFlags.Update`.
11248 */
11249 TemplateUpdateEnd = 3,
11250 /**
11251 * Corresponds to the point in time before the runtime has called a lifecycle hook of a component
11252 * or directive.
11253 */
11254 LifecycleHookStart = 4,
11255 /**
11256 * Corresponds to the point in time after the runtime has called a lifecycle hook of a component
11257 * or directive.
11258 */
11259 LifecycleHookEnd = 5,
11260 /**
11261 * Corresponds to the point in time before the runtime has evaluated an expression associated with
11262 * an event or an output.
11263 */
11264 OutputStart = 6,
11265 /**
11266 * Corresponds to the point in time after the runtime has evaluated an expression associated with
11267 * an event or an output.
11268 */
11269 OutputEnd = 7
11270}
11271
11272/**
11273 * Publishes a collection of default debug tools onto`window.ng`.
11274 *
11275 * These functions are available globally when Angular is in development
11276 * mode and are automatically stripped away from prod mode is on.
11277 */
11278export declare function ɵpublishDefaultGlobalUtils(): void;
11279
11280/**
11281 * Publishes the given function to `window.ng` so that it can be
11282 * used from the browser console when an application is not in production.
11283 */
11284export declare function ɵpublishGlobalUtil(name: string, fn: Function): void;
11285
11286export declare class ɵReflectionCapabilities implements PlatformReflectionCapabilities {
11287 private _reflect;
11288 constructor(reflect?: any);
11289 factory<T>(t: Type<T>): (args: any[]) => T;
11290 private _ownParameters;
11291 parameters(type: Type<any>): any[][];
11292 private _ownAnnotations;
11293 annotations(typeOrFunc: Type<any>): any[];
11294 private _ownPropMetadata;
11295 propMetadata(typeOrFunc: any): {
11296 [key: string]: any[];
11297 };
11298 ownPropMetadata(typeOrFunc: any): {
11299 [key: string]: any[];
11300 };
11301 hasLifecycleHook(type: any, lcProperty: string): boolean;
11302}
11303
11304/**
11305 * Register locale data to be used internally by Angular. See the
11306 * ["I18n guide"](guide/i18n-common-format-data-locale) to know how to import additional locale
11307 * data.
11308 *
11309 * The signature `registerLocaleData(data: any, extraData?: any)` is deprecated since v5.1
11310 */
11311export declare function ɵregisterLocaleData(data: any, localeId?: string | any, extraData?: any): void;
11312
11313/**
11314 * ComponentFactory interface implementation.
11315 */
11316export declare class ɵRender3ComponentFactory<T> extends ComponentFactory<T> {
11317 private componentDef;
11318 private ngModule?;
11319 selector: string;
11320 componentType: Type<any>;
11321 ngContentSelectors: string[];
11322 isBoundToModule: boolean;
11323 get inputs(): {
11324 propName: string;
11325 templateName: string;
11326 }[];
11327 get outputs(): {
11328 propName: string;
11329 templateName: string;
11330 }[];
11331 /**
11332 * @param componentDef The component definition.
11333 * @param ngModule The NgModuleRef to which the factory is bound.
11334 */
11335 constructor(componentDef: ɵComponentDef<any>, ngModule?: NgModuleRef<any> | undefined);
11336 create(injector: Injector, projectableNodes?: any[][] | undefined, rootSelectorOrNode?: any, environmentInjector?: NgModuleRef<any> | EnvironmentInjector | undefined): ComponentRef<T>;
11337}
11338
11339/**
11340 * Represents an instance of a Component created via a {@link ComponentFactory}.
11341 *
11342 * `ComponentRef` provides access to the Component Instance as well other objects related to this
11343 * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}
11344 * method.
11345 *
11346 */
11347export declare class ɵRender3ComponentRef<T> extends ComponentRef<T> {
11348 location: ElementRef;
11349 private _rootLView;
11350 private _tNode;
11351 instance: T;
11352 hostView: ɵViewRef<T>;
11353 changeDetectorRef: ChangeDetectorRef;
11354 componentType: Type<T>;
11355 private previousInputValues;
11356 constructor(componentType: Type<T>, instance: T, location: ElementRef, _rootLView: LView, _tNode: TElementNode | TContainerNode | TElementContainerNode);
11357 setInput(name: string, value: unknown): void;
11358 get injector(): Injector;
11359 destroy(): void;
11360 onDestroy(callback: () => void): void;
11361}
11362
11363export declare class ɵRender3NgModuleRef<T> extends NgModuleRef<T> implements InternalNgModuleRef<T> {
11364 _parent: Injector | null;
11365 _bootstrapComponents: Type<any>[];
11366 _r3Injector: R3Injector;
11367 instance: T;
11368 destroyCbs: (() => void)[] | null;
11369 readonly componentFactoryResolver: ComponentFactoryResolver_2;
11370 constructor(ngModuleType: Type<T>, _parent: Injector | null, additionalProviders: StaticProvider[]);
11371 get injector(): EnvironmentInjector;
11372 destroy(): void;
11373 onDestroy(callback: () => void): void;
11374}
11375
11376/**
11377 * Flags passed into template functions to determine which blocks (i.e. creation, update)
11378 * should be executed.
11379 *
11380 * Typically, a template runs both the creation block and the update block on initialization and
11381 * subsequent runs only execute the update block. However, dynamically created views require that
11382 * the creation block be executed separately from the update block (for backwards compat).
11383 */
11384export declare const enum ɵRenderFlags {
11385 Create = 1,
11386 Update = 2
11387}
11388
11389export declare function ɵresetCompiledComponents(): void;
11390
11391export declare function ɵresetJitOptions(): void;
11392
11393/**
11394 * Used to resolve resource URLs on `@Component` when used with JIT compilation.
11395 *
11396 * Example:
11397 * ```
11398 * @Component({
11399 * selector: 'my-comp',
11400 * templateUrl: 'my-comp.html', // This requires asynchronous resolution
11401 * })
11402 * class MyComponent{
11403 * }
11404 *
11405 * // Calling `renderComponent` will fail because `renderComponent` is a synchronous process
11406 * // and `MyComponent`'s `@Component.templateUrl` needs to be resolved asynchronously.
11407 *
11408 * // Calling `resolveComponentResources()` will resolve `@Component.templateUrl` into
11409 * // `@Component.template`, which allows `renderComponent` to proceed in a synchronous manner.
11410 *
11411 * // Use browser's `fetch()` function as the default resource resolution strategy.
11412 * resolveComponentResources(fetch).then(() => {
11413 * // After resolution all URLs have been converted into `template` strings.
11414 * renderComponent(MyComponent);
11415 * });
11416 *
11417 * ```
11418 *
11419 * NOTE: In AOT the resolution happens during compilation, and so there should be no need
11420 * to call this method outside JIT mode.
11421 *
11422 * @param resourceResolver a function which is responsible for returning a `Promise` to the
11423 * contents of the resolved URL. Browser's `fetch()` method is a good default implementation.
11424 */
11425export declare function ɵresolveComponentResources(resourceResolver: (url: string) => (Promise<string | {
11426 text(): Promise<string>;
11427}>)): Promise<void>;
11428
11429/**
11430 * Class that represents a runtime error.
11431 * Formats and outputs the error message in a consistent way.
11432 *
11433 * Example:
11434 * ```
11435 * throw new RuntimeError(
11436 * RuntimeErrorCode.INJECTOR_ALREADY_DESTROYED,
11437 * ngDevMode && 'Injector has already been destroyed.');
11438 * ```
11439 *
11440 * Note: the `message` argument contains a descriptive error message as a string in development
11441 * mode (when the `ngDevMode` is defined). In production mode (after tree-shaking pass), the
11442 * `message` argument becomes `false`, thus we account for it in the typings and the runtime
11443 * logic.
11444 */
11445export declare class ɵRuntimeError<T extends number = RuntimeErrorCode> extends Error {
11446 code: T;
11447 constructor(code: T, message: null | false | string);
11448}
11449
11450/**
11451 * Marker interface for a value that's safe to use as HTML.
11452 *
11453 * @publicApi
11454 */
11455export declare interface ɵSafeHtml extends ɵSafeValue {
11456}
11457
11458/**
11459 * Marker interface for a value that's safe to use as a URL to load executable code from.
11460 *
11461 * @publicApi
11462 */
11463export declare interface ɵSafeResourceUrl extends ɵSafeValue {
11464}
11465
11466/**
11467 * Marker interface for a value that's safe to use as JavaScript.
11468 *
11469 * @publicApi
11470 */
11471export declare interface ɵSafeScript extends ɵSafeValue {
11472}
11473
11474/**
11475 * Marker interface for a value that's safe to use as style (CSS).
11476 *
11477 * @publicApi
11478 */
11479export declare interface ɵSafeStyle extends ɵSafeValue {
11480}
11481
11482/**
11483 * Marker interface for a value that's safe to use as a URL linking to a document.
11484 *
11485 * @publicApi
11486 */
11487export declare interface ɵSafeUrl extends ɵSafeValue {
11488}
11489
11490/**
11491 * Marker interface for a value that's safe to use in a particular context.
11492 *
11493 * @publicApi
11494 */
11495export declare interface ɵSafeValue {
11496}
11497
11498/**
11499 * Control whether the NgModule registration system enforces that each NgModule type registered has
11500 * a unique id.
11501 *
11502 * This is useful for testing as the NgModule registry cannot be properly reset between tests with
11503 * Angular's current API.
11504 */
11505export declare function ɵsetAllowDuplicateNgModuleIdsForTest(allowDuplicates: boolean): void;
11506
11507export declare function ɵsetAlternateWeakRefImpl(impl: WeakRefCtor): void;
11508
11509/**
11510 * Adds decorator, constructor, and property metadata to a given type via static metadata fields
11511 * on the type.
11512 *
11513 * These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
11514 *
11515 * Calls to `setClassMetadata` can be guarded by ngDevMode, resulting in the metadata assignments
11516 * being tree-shaken away during production builds.
11517 */
11518export declare function ɵsetClassMetadata(type: Type<any>, decorators: any[] | null, ctorParameters: (() => any[]) | null, propDecorators: {
11519 [field: string]: any;
11520} | null): void;
11521
11522export declare function ɵsetCurrentInjector(injector: Injector | null | undefined): Injector | undefined | null;
11523
11524
11525/**
11526 * Tell ivy what the `document` is for this platform.
11527 *
11528 * It is only necessary to call this if the current platform is not a browser.
11529 *
11530 * @param document The object representing the global `document` in this environment.
11531 */
11532export declare function ɵsetDocument(document: Document | undefined): void;
11533
11534
11535/**
11536 * Sets the locale id that will be used for translations and ICU expressions.
11537 * This is the ivy version of `LOCALE_ID` that was defined as an injection token for the view engine
11538 * but is now defined as a global value.
11539 *
11540 * @param localeId
11541 */
11542export declare function ɵsetLocaleId(localeId: string): void;
11543
11544/**
11545 * Sets a strict mode for JIT-compiled components to throw an error on unknown elements,
11546 * instead of just logging the error.
11547 * (for AOT-compiled ones this check happens at build time).
11548 */
11549export declare function ɵsetUnknownElementStrictMode(shouldThrow: boolean): void;
11550
11551/**
11552 * Sets a strict mode for JIT-compiled components to throw an error on unknown properties,
11553 * instead of just logging the error.
11554 * (for AOT-compiled ones this check happens at build time).
11555 */
11556export declare function ɵsetUnknownPropertyStrictMode(shouldThrow: boolean): void;
11557
11558/** Store a value in the `data` at a given `index`. */
11559export declare function ɵstore<T>(tView: TView, lView: LView, index: number, value: T): void;
11560
11561
11562export declare function ɵstringify(token: any): string;
11563
11564/**
11565 * Internal injection token that can used to access an instance of a Testability class.
11566 *
11567 * This token acts as a bridge between the core bootstrap code and the `Testability` class. This is
11568 * needed to ensure that there are no direct references to the `Testability` class, so it can be
11569 * tree-shaken away (if not referenced). For the environments/setups when the `Testability` class
11570 * should be available, this token is used to add a provider that references the `Testability`
11571 * class. Otherwise, only this token is retained in a bundle, but the `Testability` class is not.
11572 */
11573export declare const ɵTESTABILITY: InjectionToken<Testability>;
11574
11575/**
11576 * Internal injection token to retrieve Testability getter class instance.
11577 */
11578export declare const ɵTESTABILITY_GETTER: InjectionToken<GetTestability>;
11579
11580/**
11581 * Compute the pair of transitive scopes (compilation scope and exported scope) for a given type
11582 * (either a NgModule or a standalone component / directive / pipe).
11583 */
11584export declare function ɵtransitiveScopesFor<T>(type: Type<T>): ɵNgModuleTransitiveScopes;
11585
11586/**
11587 * Helper function to remove all the locale data from `LOCALE_DATA`.
11588 */
11589export declare function ɵunregisterLocaleData(): void;
11590
11591export declare function ɵunwrapSafeValue(value: ɵSafeValue): string;
11592
11593export declare function ɵunwrapSafeValue<T>(value: T): T;
11594
11595export declare class ɵViewRef<T> implements EmbeddedViewRef<T>, InternalViewRef, ChangeDetectorRefInterface {
11596 /**
11597 * This represents the `LView` associated with the point where `ChangeDetectorRef` was
11598 * requested.
11599 *
11600 * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
11601 */
11602 private _cdRefInjectingView?;
11603 private _appRef;
11604 private _attachedToViewContainer;
11605 get rootNodes(): any[];
11606 constructor(
11607 /**
11608 * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.
11609 *
11610 * When ViewRef is created for a dynamic component, this also represents the `LView` for the
11611 * component.
11612 *
11613 * For a "regular" ViewRef created for an embedded view, this is the `LView` for the embedded
11614 * view.
11615 *
11616 * @internal
11617 */
11618 _lView: LView,
11619 /**
11620 * This represents the `LView` associated with the point where `ChangeDetectorRef` was
11621 * requested.
11622 *
11623 * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
11624 */
11625 _cdRefInjectingView?: LView<unknown> | undefined);
11626 get context(): T;
11627 set context(value: T);
11628 get destroyed(): boolean;
11629 destroy(): void;
11630 onDestroy(callback: Function): void;
11631 /**
11632 * Marks a view and all of its ancestors dirty.
11633 *
11634 * This can be used to ensure an {@link ChangeDetectionStrategy#OnPush OnPush} component is
11635 * checked when it needs to be re-rendered but the two normal triggers haven't marked it
11636 * dirty (i.e. inputs haven't changed and events haven't fired in the view).
11637 *
11638 * <!-- TODO: Add a link to a chapter on OnPush components -->
11639 *
11640 * @usageNotes
11641 * ### Example
11642 *
11643 * ```typescript
11644 * @Component({
11645 * selector: 'app-root',
11646 * template: `Number of ticks: {{numberOfTicks}}`
11647 * changeDetection: ChangeDetectionStrategy.OnPush,
11648 * })
11649 * class AppComponent {
11650 * numberOfTicks = 0;
11651 *
11652 * constructor(private ref: ChangeDetectorRef) {
11653 * setInterval(() => {
11654 * this.numberOfTicks++;
11655 * // the following is required, otherwise the view will not be updated
11656 * this.ref.markForCheck();
11657 * }, 1000);
11658 * }
11659 * }
11660 * ```
11661 */
11662 markForCheck(): void;
11663 /**
11664 * Detaches the view from the change detection tree.
11665 *
11666 * Detached views will not be checked during change detection runs until they are
11667 * re-attached, even if they are dirty. `detach` can be used in combination with
11668 * {@link ChangeDetectorRef#detectChanges detectChanges} to implement local change
11669 * detection checks.
11670 *
11671 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
11672 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
11673 *
11674 * @usageNotes
11675 * ### Example
11676 *
11677 * The following example defines a component with a large list of readonly data.
11678 * Imagine the data changes constantly, many times per second. For performance reasons,
11679 * we want to check and update the list every five seconds. We can do that by detaching
11680 * the component's change detector and doing a local check every five seconds.
11681 *
11682 * ```typescript
11683 * class DataProvider {
11684 * // in a real application the returned data will be different every time
11685 * get data() {
11686 * return [1,2,3,4,5];
11687 * }
11688 * }
11689 *
11690 * @Component({
11691 * selector: 'giant-list',
11692 * template: `
11693 * <li *ngFor="let d of dataProvider.data">Data {{d}}</li>
11694 * `,
11695 * })
11696 * class GiantList {
11697 * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {
11698 * ref.detach();
11699 * setInterval(() => {
11700 * this.ref.detectChanges();
11701 * }, 5000);
11702 * }
11703 * }
11704 *
11705 * @Component({
11706 * selector: 'app',
11707 * providers: [DataProvider],
11708 * template: `
11709 * <giant-list><giant-list>
11710 * `,
11711 * })
11712 * class App {
11713 * }
11714 * ```
11715 */
11716 detach(): void;
11717 /**
11718 * Re-attaches a view to the change detection tree.
11719 *
11720 * This can be used to re-attach views that were previously detached from the tree
11721 * using {@link ChangeDetectorRef#detach detach}. Views are attached to the tree by default.
11722 *
11723 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
11724 *
11725 * @usageNotes
11726 * ### Example
11727 *
11728 * The following example creates a component displaying `live` data. The component will detach
11729 * its change detector from the main change detector tree when the component's live property
11730 * is set to false.
11731 *
11732 * ```typescript
11733 * class DataProvider {
11734 * data = 1;
11735 *
11736 * constructor() {
11737 * setInterval(() => {
11738 * this.data = this.data * 2;
11739 * }, 500);
11740 * }
11741 * }
11742 *
11743 * @Component({
11744 * selector: 'live-data',
11745 * inputs: ['live'],
11746 * template: 'Data: {{dataProvider.data}}'
11747 * })
11748 * class LiveData {
11749 * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {}
11750 *
11751 * set live(value) {
11752 * if (value) {
11753 * this.ref.reattach();
11754 * } else {
11755 * this.ref.detach();
11756 * }
11757 * }
11758 * }
11759 *
11760 * @Component({
11761 * selector: 'app-root',
11762 * providers: [DataProvider],
11763 * template: `
11764 * Live Update: <input type="checkbox" [(ngModel)]="live">
11765 * <live-data [live]="live"><live-data>
11766 * `,
11767 * })
11768 * class AppComponent {
11769 * live = true;
11770 * }
11771 * ```
11772 */
11773 reattach(): void;
11774 /**
11775 * Checks the view and its children.
11776 *
11777 * This can also be used in combination with {@link ChangeDetectorRef#detach detach} to implement
11778 * local change detection checks.
11779 *
11780 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
11781 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
11782 *
11783 * @usageNotes
11784 * ### Example
11785 *
11786 * The following example defines a component with a large list of readonly data.
11787 * Imagine, the data changes constantly, many times per second. For performance reasons,
11788 * we want to check and update the list every five seconds.
11789 *
11790 * We can do that by detaching the component's change detector and doing a local change detection
11791 * check every five seconds.
11792 *
11793 * See {@link ChangeDetectorRef#detach detach} for more information.
11794 */
11795 detectChanges(): void;
11796 /**
11797 * Checks the change detector and its children, and throws if any changes are detected.
11798 *
11799 * This is used in development mode to verify that running change detection doesn't
11800 * introduce other changes.
11801 */
11802 checkNoChanges(): void;
11803 attachToViewContainerRef(): void;
11804 detachFromAppRef(): void;
11805 attachToAppRef(appRef: ViewRefTracker): void;
11806}
11807
11808/**
11809 * Returns a set of providers required to setup hydration support
11810 * for an application that is server side rendered. This function is
11811 * included into the `provideClientHydration` public API function from
11812 * the `platform-browser` package.
11813 *
11814 * The function sets up an internal flag that would be recognized during
11815 * the server side rendering time as well, so there is no need to
11816 * configure or change anything in NgUniversal to enable the feature.
11817 */
11818export declare function ɵwithDomHydration(): EnvironmentProviders;
11819
11820/**
11821 * URL for the XSS security documentation.
11822 */
11823export declare const ɵXSS_SECURITY_URL = "https://g.co/ng/security#xss";
11824
11825/**
11826 * Advances to an element for later binding instructions.
11827 *
11828 * Used in conjunction with instructions like {@link property} to act on elements with specified
11829 * indices, for example those created with {@link element} or {@link elementStart}.
11830 *
11831 * ```ts
11832 * (rf: RenderFlags, ctx: any) => {
11833 * if (rf & 1) {
11834 * text(0, 'Hello');
11835 * text(1, 'Goodbye')
11836 * element(2, 'div');
11837 * }
11838 * if (rf & 2) {
11839 * advance(2); // Advance twice to the <div>.
11840 * property('title', 'test');
11841 * }
11842 * }
11843 * ```
11844 * @param delta Number of elements to advance forwards by.
11845 *
11846 * @codeGenApi
11847 */
11848export declare function ɵɵadvance(delta: number): void;
11849
11850/**
11851 * Updates the value of or removes a bound attribute on an Element.
11852 *
11853 * Used in the case of `[attr.title]="value"`
11854 *
11855 * @param name name The name of the attribute.
11856 * @param value value The attribute is removed when value is `null` or `undefined`.
11857 * Otherwise the attribute value is set to the stringified value.
11858 * @param sanitizer An optional function used to sanitize the value.
11859 * @param namespace Optional namespace to use when setting the attribute.
11860 *
11861 * @codeGenApi
11862 */
11863export declare function ɵɵattribute(name: string, value: any, sanitizer?: SanitizerFn | null, namespace?: string): typeof ɵɵattribute;
11864
11865/**
11866 *
11867 * Update an interpolated attribute on an element with single bound value surrounded by text.
11868 *
11869 * Used when the value passed to a property has 1 interpolated value in it:
11870 *
11871 * ```html
11872 * <div attr.title="prefix{{v0}}suffix"></div>
11873 * ```
11874 *
11875 * Its compiled representation is::
11876 *
11877 * ```ts
11878 * ɵɵattributeInterpolate1('title', 'prefix', v0, 'suffix');
11879 * ```
11880 *
11881 * @param attrName The name of the attribute to update
11882 * @param prefix Static value used for concatenation only.
11883 * @param v0 Value checked for change.
11884 * @param suffix Static value used for concatenation only.
11885 * @param sanitizer An optional sanitizer function
11886 * @returns itself, so that it may be chained.
11887 * @codeGenApi
11888 */
11889export declare function ɵɵattributeInterpolate1(attrName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate1;
11890
11891/**
11892 *
11893 * Update an interpolated attribute on an element with 2 bound values surrounded by text.
11894 *
11895 * Used when the value passed to a property has 2 interpolated values in it:
11896 *
11897 * ```html
11898 * <div attr.title="prefix{{v0}}-{{v1}}suffix"></div>
11899 * ```
11900 *
11901 * Its compiled representation is::
11902 *
11903 * ```ts
11904 * ɵɵattributeInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
11905 * ```
11906 *
11907 * @param attrName The name of the attribute to update
11908 * @param prefix Static value used for concatenation only.
11909 * @param v0 Value checked for change.
11910 * @param i0 Static value used for concatenation only.
11911 * @param v1 Value checked for change.
11912 * @param suffix Static value used for concatenation only.
11913 * @param sanitizer An optional sanitizer function
11914 * @returns itself, so that it may be chained.
11915 * @codeGenApi
11916 */
11917export declare function ɵɵattributeInterpolate2(attrName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate2;
11918
11919/**
11920 *
11921 * Update an interpolated attribute on an element with 3 bound values surrounded by text.
11922 *
11923 * Used when the value passed to a property has 3 interpolated values in it:
11924 *
11925 * ```html
11926 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
11927 * ```
11928 *
11929 * Its compiled representation is::
11930 *
11931 * ```ts
11932 * ɵɵattributeInterpolate3(
11933 * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
11934 * ```
11935 *
11936 * @param attrName The name of the attribute to update
11937 * @param prefix Static value used for concatenation only.
11938 * @param v0 Value checked for change.
11939 * @param i0 Static value used for concatenation only.
11940 * @param v1 Value checked for change.
11941 * @param i1 Static value used for concatenation only.
11942 * @param v2 Value checked for change.
11943 * @param suffix Static value used for concatenation only.
11944 * @param sanitizer An optional sanitizer function
11945 * @returns itself, so that it may be chained.
11946 * @codeGenApi
11947 */
11948export 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;
11949
11950/**
11951 *
11952 * Update an interpolated attribute on an element with 4 bound values surrounded by text.
11953 *
11954 * Used when the value passed to a property has 4 interpolated values in it:
11955 *
11956 * ```html
11957 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
11958 * ```
11959 *
11960 * Its compiled representation is::
11961 *
11962 * ```ts
11963 * ɵɵattributeInterpolate4(
11964 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
11965 * ```
11966 *
11967 * @param attrName The name of the attribute to update
11968 * @param prefix Static value used for concatenation only.
11969 * @param v0 Value checked for change.
11970 * @param i0 Static value used for concatenation only.
11971 * @param v1 Value checked for change.
11972 * @param i1 Static value used for concatenation only.
11973 * @param v2 Value checked for change.
11974 * @param i2 Static value used for concatenation only.
11975 * @param v3 Value checked for change.
11976 * @param suffix Static value used for concatenation only.
11977 * @param sanitizer An optional sanitizer function
11978 * @returns itself, so that it may be chained.
11979 * @codeGenApi
11980 */
11981export 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;
11982
11983/**
11984 *
11985 * Update an interpolated attribute on an element with 5 bound values surrounded by text.
11986 *
11987 * Used when the value passed to a property has 5 interpolated values in it:
11988 *
11989 * ```html
11990 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
11991 * ```
11992 *
11993 * Its compiled representation is::
11994 *
11995 * ```ts
11996 * ɵɵattributeInterpolate5(
11997 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
11998 * ```
11999 *
12000 * @param attrName The name of the attribute to update
12001 * @param prefix Static value used for concatenation only.
12002 * @param v0 Value checked for change.
12003 * @param i0 Static value used for concatenation only.
12004 * @param v1 Value checked for change.
12005 * @param i1 Static value used for concatenation only.
12006 * @param v2 Value checked for change.
12007 * @param i2 Static value used for concatenation only.
12008 * @param v3 Value checked for change.
12009 * @param i3 Static value used for concatenation only.
12010 * @param v4 Value checked for change.
12011 * @param suffix Static value used for concatenation only.
12012 * @param sanitizer An optional sanitizer function
12013 * @returns itself, so that it may be chained.
12014 * @codeGenApi
12015 */
12016export 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;
12017
12018/**
12019 *
12020 * Update an interpolated attribute on an element with 6 bound values surrounded by text.
12021 *
12022 * Used when the value passed to a property has 6 interpolated values in it:
12023 *
12024 * ```html
12025 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
12026 * ```
12027 *
12028 * Its compiled representation is::
12029 *
12030 * ```ts
12031 * ɵɵattributeInterpolate6(
12032 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
12033 * ```
12034 *
12035 * @param attrName The name of the attribute to update
12036 * @param prefix Static value used for concatenation only.
12037 * @param v0 Value checked for change.
12038 * @param i0 Static value used for concatenation only.
12039 * @param v1 Value checked for change.
12040 * @param i1 Static value used for concatenation only.
12041 * @param v2 Value checked for change.
12042 * @param i2 Static value used for concatenation only.
12043 * @param v3 Value checked for change.
12044 * @param i3 Static value used for concatenation only.
12045 * @param v4 Value checked for change.
12046 * @param i4 Static value used for concatenation only.
12047 * @param v5 Value checked for change.
12048 * @param suffix Static value used for concatenation only.
12049 * @param sanitizer An optional sanitizer function
12050 * @returns itself, so that it may be chained.
12051 * @codeGenApi
12052 */
12053export 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;
12054
12055/**
12056 *
12057 * Update an interpolated attribute on an element with 7 bound values surrounded by text.
12058 *
12059 * Used when the value passed to a property has 7 interpolated values in it:
12060 *
12061 * ```html
12062 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
12063 * ```
12064 *
12065 * Its compiled representation is::
12066 *
12067 * ```ts
12068 * ɵɵattributeInterpolate7(
12069 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
12070 * ```
12071 *
12072 * @param attrName The name of the attribute to update
12073 * @param prefix Static value used for concatenation only.
12074 * @param v0 Value checked for change.
12075 * @param i0 Static value used for concatenation only.
12076 * @param v1 Value checked for change.
12077 * @param i1 Static value used for concatenation only.
12078 * @param v2 Value checked for change.
12079 * @param i2 Static value used for concatenation only.
12080 * @param v3 Value checked for change.
12081 * @param i3 Static value used for concatenation only.
12082 * @param v4 Value checked for change.
12083 * @param i4 Static value used for concatenation only.
12084 * @param v5 Value checked for change.
12085 * @param i5 Static value used for concatenation only.
12086 * @param v6 Value checked for change.
12087 * @param suffix Static value used for concatenation only.
12088 * @param sanitizer An optional sanitizer function
12089 * @returns itself, so that it may be chained.
12090 * @codeGenApi
12091 */
12092export 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;
12093
12094/**
12095 *
12096 * Update an interpolated attribute on an element with 8 bound values surrounded by text.
12097 *
12098 * Used when the value passed to a property has 8 interpolated values in it:
12099 *
12100 * ```html
12101 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
12102 * ```
12103 *
12104 * Its compiled representation is::
12105 *
12106 * ```ts
12107 * ɵɵattributeInterpolate8(
12108 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
12109 * ```
12110 *
12111 * @param attrName The name of the attribute to update
12112 * @param prefix Static value used for concatenation only.
12113 * @param v0 Value checked for change.
12114 * @param i0 Static value used for concatenation only.
12115 * @param v1 Value checked for change.
12116 * @param i1 Static value used for concatenation only.
12117 * @param v2 Value checked for change.
12118 * @param i2 Static value used for concatenation only.
12119 * @param v3 Value checked for change.
12120 * @param i3 Static value used for concatenation only.
12121 * @param v4 Value checked for change.
12122 * @param i4 Static value used for concatenation only.
12123 * @param v5 Value checked for change.
12124 * @param i5 Static value used for concatenation only.
12125 * @param v6 Value checked for change.
12126 * @param i6 Static value used for concatenation only.
12127 * @param v7 Value checked for change.
12128 * @param suffix Static value used for concatenation only.
12129 * @param sanitizer An optional sanitizer function
12130 * @returns itself, so that it may be chained.
12131 * @codeGenApi
12132 */
12133export 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;
12134
12135/**
12136 * Update an interpolated attribute on an element with 9 or more bound values surrounded by text.
12137 *
12138 * Used when the number of interpolated values exceeds 8.
12139 *
12140 * ```html
12141 * <div
12142 * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
12143 * ```
12144 *
12145 * Its compiled representation is::
12146 *
12147 * ```ts
12148 * ɵɵattributeInterpolateV(
12149 * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
12150 * 'suffix']);
12151 * ```
12152 *
12153 * @param attrName The name of the attribute to update.
12154 * @param values The collection of values and the strings in-between those values, beginning with
12155 * a string prefix and ending with a string suffix.
12156 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
12157 * @param sanitizer An optional sanitizer function
12158 * @returns itself, so that it may be chained.
12159 * @codeGenApi
12160 */
12161export declare function ɵɵattributeInterpolateV(attrName: string, values: any[], sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolateV;
12162
12163/**
12164 * Update class bindings using an object literal or class-string on an element.
12165 *
12166 * This instruction is meant to apply styling via the `[class]="exp"` template bindings.
12167 * When classes are applied to the element they will then be updated with
12168 * respect to any styles/classes set via `classProp`. If any
12169 * classes are set to falsy then they will be removed from the element.
12170 *
12171 * Note that the styling instruction will not be applied until `stylingApply` is called.
12172 * Note that this will the provided classMap value to the host element if this function is called
12173 * within a host binding.
12174 *
12175 * @param classes A key/value map or string of CSS classes that will be added to the
12176 * given element. Any missing classes (that have already been applied to the element
12177 * beforehand) will be removed (unset) from the element's list of CSS classes.
12178 *
12179 * @codeGenApi
12180 */
12181export declare function ɵɵclassMap(classes: {
12182 [className: string]: boolean | undefined | null;
12183} | string | undefined | null): void;
12184
12185
12186/**
12187 *
12188 * Update an interpolated class on an element with single bound value surrounded by text.
12189 *
12190 * Used when the value passed to a property has 1 interpolated value in it:
12191 *
12192 * ```html
12193 * <div class="prefix{{v0}}suffix"></div>
12194 * ```
12195 *
12196 * Its compiled representation is:
12197 *
12198 * ```ts
12199 * ɵɵclassMapInterpolate1('prefix', v0, 'suffix');
12200 * ```
12201 *
12202 * @param prefix Static value used for concatenation only.
12203 * @param v0 Value checked for change.
12204 * @param suffix Static value used for concatenation only.
12205 * @codeGenApi
12206 */
12207export declare function ɵɵclassMapInterpolate1(prefix: string, v0: any, suffix: string): void;
12208
12209/**
12210 *
12211 * Update an interpolated class on an element with 2 bound values surrounded by text.
12212 *
12213 * Used when the value passed to a property has 2 interpolated values in it:
12214 *
12215 * ```html
12216 * <div class="prefix{{v0}}-{{v1}}suffix"></div>
12217 * ```
12218 *
12219 * Its compiled representation is:
12220 *
12221 * ```ts
12222 * ɵɵclassMapInterpolate2('prefix', v0, '-', v1, 'suffix');
12223 * ```
12224 *
12225 * @param prefix Static value used for concatenation only.
12226 * @param v0 Value checked for change.
12227 * @param i0 Static value used for concatenation only.
12228 * @param v1 Value checked for change.
12229 * @param suffix Static value used for concatenation only.
12230 * @codeGenApi
12231 */
12232export declare function ɵɵclassMapInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): void;
12233
12234/**
12235 *
12236 * Update an interpolated class on an element with 3 bound values surrounded by text.
12237 *
12238 * Used when the value passed to a property has 3 interpolated values in it:
12239 *
12240 * ```html
12241 * <div class="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
12242 * ```
12243 *
12244 * Its compiled representation is:
12245 *
12246 * ```ts
12247 * ɵɵclassMapInterpolate3(
12248 * 'prefix', v0, '-', v1, '-', v2, 'suffix');
12249 * ```
12250 *
12251 * @param prefix Static value used for concatenation only.
12252 * @param v0 Value checked for change.
12253 * @param i0 Static value used for concatenation only.
12254 * @param v1 Value checked for change.
12255 * @param i1 Static value used for concatenation only.
12256 * @param v2 Value checked for change.
12257 * @param suffix Static value used for concatenation only.
12258 * @codeGenApi
12259 */
12260export declare function ɵɵclassMapInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): void;
12261
12262/**
12263 *
12264 * Update an interpolated class on an element with 4 bound values surrounded by text.
12265 *
12266 * Used when the value passed to a property has 4 interpolated values in it:
12267 *
12268 * ```html
12269 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
12270 * ```
12271 *
12272 * Its compiled representation is:
12273 *
12274 * ```ts
12275 * ɵɵclassMapInterpolate4(
12276 * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
12277 * ```
12278 *
12279 * @param prefix Static value used for concatenation only.
12280 * @param v0 Value checked for change.
12281 * @param i0 Static value used for concatenation only.
12282 * @param v1 Value checked for change.
12283 * @param i1 Static value used for concatenation only.
12284 * @param v2 Value checked for change.
12285 * @param i2 Static value used for concatenation only.
12286 * @param v3 Value checked for change.
12287 * @param suffix Static value used for concatenation only.
12288 * @codeGenApi
12289 */
12290export declare function ɵɵclassMapInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): void;
12291
12292/**
12293 *
12294 * Update an interpolated class on an element with 5 bound values surrounded by text.
12295 *
12296 * Used when the value passed to a property has 5 interpolated values in it:
12297 *
12298 * ```html
12299 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
12300 * ```
12301 *
12302 * Its compiled representation is:
12303 *
12304 * ```ts
12305 * ɵɵclassMapInterpolate5(
12306 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
12307 * ```
12308 *
12309 * @param prefix Static value used for concatenation only.
12310 * @param v0 Value checked for change.
12311 * @param i0 Static value used for concatenation only.
12312 * @param v1 Value checked for change.
12313 * @param i1 Static value used for concatenation only.
12314 * @param v2 Value checked for change.
12315 * @param i2 Static value used for concatenation only.
12316 * @param v3 Value checked for change.
12317 * @param i3 Static value used for concatenation only.
12318 * @param v4 Value checked for change.
12319 * @param suffix Static value used for concatenation only.
12320 * @codeGenApi
12321 */
12322export 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;
12323
12324/**
12325 *
12326 * Update an interpolated class on an element with 6 bound values surrounded by text.
12327 *
12328 * Used when the value passed to a property has 6 interpolated values in it:
12329 *
12330 * ```html
12331 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
12332 * ```
12333 *
12334 * Its compiled representation is:
12335 *
12336 * ```ts
12337 * ɵɵclassMapInterpolate6(
12338 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
12339 * ```
12340 *
12341 * @param prefix Static value used for concatenation only.
12342 * @param v0 Value checked for change.
12343 * @param i0 Static value used for concatenation only.
12344 * @param v1 Value checked for change.
12345 * @param i1 Static value used for concatenation only.
12346 * @param v2 Value checked for change.
12347 * @param i2 Static value used for concatenation only.
12348 * @param v3 Value checked for change.
12349 * @param i3 Static value used for concatenation only.
12350 * @param v4 Value checked for change.
12351 * @param i4 Static value used for concatenation only.
12352 * @param v5 Value checked for change.
12353 * @param suffix Static value used for concatenation only.
12354 * @codeGenApi
12355 */
12356export 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;
12357
12358/**
12359 *
12360 * Update an interpolated class on an element with 7 bound values surrounded by text.
12361 *
12362 * Used when the value passed to a property has 7 interpolated values in it:
12363 *
12364 * ```html
12365 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
12366 * ```
12367 *
12368 * Its compiled representation is:
12369 *
12370 * ```ts
12371 * ɵɵclassMapInterpolate7(
12372 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
12373 * ```
12374 *
12375 * @param prefix Static value used for concatenation only.
12376 * @param v0 Value checked for change.
12377 * @param i0 Static value used for concatenation only.
12378 * @param v1 Value checked for change.
12379 * @param i1 Static value used for concatenation only.
12380 * @param v2 Value checked for change.
12381 * @param i2 Static value used for concatenation only.
12382 * @param v3 Value checked for change.
12383 * @param i3 Static value used for concatenation only.
12384 * @param v4 Value checked for change.
12385 * @param i4 Static value used for concatenation only.
12386 * @param v5 Value checked for change.
12387 * @param i5 Static value used for concatenation only.
12388 * @param v6 Value checked for change.
12389 * @param suffix Static value used for concatenation only.
12390 * @codeGenApi
12391 */
12392export 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;
12393
12394/**
12395 *
12396 * Update an interpolated class on an element with 8 bound values surrounded by text.
12397 *
12398 * Used when the value passed to a property has 8 interpolated values in it:
12399 *
12400 * ```html
12401 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
12402 * ```
12403 *
12404 * Its compiled representation is:
12405 *
12406 * ```ts
12407 * ɵɵclassMapInterpolate8(
12408 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
12409 * ```
12410 *
12411 * @param prefix Static value used for concatenation only.
12412 * @param v0 Value checked for change.
12413 * @param i0 Static value used for concatenation only.
12414 * @param v1 Value checked for change.
12415 * @param i1 Static value used for concatenation only.
12416 * @param v2 Value checked for change.
12417 * @param i2 Static value used for concatenation only.
12418 * @param v3 Value checked for change.
12419 * @param i3 Static value used for concatenation only.
12420 * @param v4 Value checked for change.
12421 * @param i4 Static value used for concatenation only.
12422 * @param v5 Value checked for change.
12423 * @param i5 Static value used for concatenation only.
12424 * @param v6 Value checked for change.
12425 * @param i6 Static value used for concatenation only.
12426 * @param v7 Value checked for change.
12427 * @param suffix Static value used for concatenation only.
12428 * @codeGenApi
12429 */
12430export 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;
12431
12432/**
12433 * Update an interpolated class on an element with 9 or more bound values surrounded by text.
12434 *
12435 * Used when the number of interpolated values exceeds 8.
12436 *
12437 * ```html
12438 * <div
12439 * class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
12440 * ```
12441 *
12442 * Its compiled representation is:
12443 *
12444 * ```ts
12445 * ɵɵclassMapInterpolateV(
12446 * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
12447 * 'suffix']);
12448 * ```
12449 *.
12450 * @param values The collection of values and the strings in-between those values, beginning with
12451 * a string prefix and ending with a string suffix.
12452 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
12453 * @codeGenApi
12454 */
12455export declare function ɵɵclassMapInterpolateV(values: any[]): void;
12456
12457/**
12458 * Update a class binding on an element with the provided value.
12459 *
12460 * This instruction is meant to handle the `[class.foo]="exp"` case and,
12461 * therefore, the class binding itself must already be allocated using
12462 * `styling` within the creation block.
12463 *
12464 * @param prop A valid CSS class (only one).
12465 * @param value A true/false value which will turn the class on or off.
12466 *
12467 * Note that this will apply the provided class value to the host element if this function
12468 * is called within a host binding function.
12469 *
12470 * @codeGenApi
12471 */
12472export declare function ɵɵclassProp(className: string, value: boolean | undefined | null): typeof ɵɵclassProp;
12473
12474/**
12475 * @publicApi
12476 */
12477export declare type ɵɵComponentDeclaration<T, Selector extends String, ExportAs extends string[], InputMap extends {
12478 [key: string]: string | {
12479 alias: string | null;
12480 required: boolean;
12481 };
12482}, OutputMap extends {
12483 [key: string]: string;
12484}, QueryFields extends string[], NgContentSelectors extends string[], IsStandalone extends boolean = false, HostDirectives = never> = unknown;
12485
12486/**
12487 * Registers a QueryList, associated with a content query, for later refresh (part of a view
12488 * refresh).
12489 *
12490 * @param directiveIndex Current directive index
12491 * @param predicate The type for which the query will search
12492 * @param flags Flags associated with the query
12493 * @param read What to save in the query
12494 * @returns QueryList<T>
12495 *
12496 * @codeGenApi
12497 */
12498export declare function ɵɵcontentQuery<T>(directiveIndex: number, predicate: ProviderToken<unknown> | string[], flags: QueryFlags, read?: any): void;
12499
12500/**
12501 * Copies the fields not handled by the `ɵɵInheritDefinitionFeature` from the supertype of a
12502 * definition.
12503 *
12504 * This exists primarily to support ngcc migration of an existing View Engine pattern, where an
12505 * entire decorator is inherited from a parent to a child class. When ngcc detects this case, it
12506 * generates a skeleton definition on the child class, and applies this feature.
12507 *
12508 * The `ɵɵCopyDefinitionFeature` then copies any needed fields from the parent class' definition,
12509 * including things like the component template function.
12510 *
12511 * @param definition The definition of a child class which inherits from a parent class with its
12512 * own definition.
12513 *
12514 * @codeGenApi
12515 */
12516export declare function ɵɵCopyDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void;
12517
12518/**
12519 * Create a component definition object.
12520 *
12521 *
12522 * # Example
12523 * ```
12524 * class MyComponent {
12525 * // Generated by Angular Template Compiler
12526 * // [Symbol] syntax will not be supported by TypeScript until v2.7
12527 * static ɵcmp = defineComponent({
12528 * ...
12529 * });
12530 * }
12531 * ```
12532 * @codeGenApi
12533 */
12534export declare function ɵɵdefineComponent<T>(componentDefinition: ComponentDefinition<T>): Mutable<ɵComponentDef<any>, keyof ɵComponentDef<any>>;
12535
12536/**
12537 * Create a directive definition object.
12538 *
12539 * # Example
12540 * ```ts
12541 * class MyDirective {
12542 * // Generated by Angular Template Compiler
12543 * // [Symbol] syntax will not be supported by TypeScript until v2.7
12544 * static ɵdir = ɵɵdefineDirective({
12545 * ...
12546 * });
12547 * }
12548 * ```
12549 *
12550 * @codeGenApi
12551 */
12552export declare function ɵɵdefineDirective<T>(directiveDefinition: DirectiveDefinition<T>): Mutable<ɵDirectiveDef<any>, keyof ɵDirectiveDef<any>>;
12553
12554/**
12555 * Construct an injectable definition which defines how a token will be constructed by the DI
12556 * system, and in which injectors (if any) it will be available.
12557 *
12558 * This should be assigned to a static `ɵprov` field on a type, which will then be an
12559 * `InjectableType`.
12560 *
12561 * Options:
12562 * * `providedIn` determines which injectors will include the injectable, by either associating it
12563 * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be
12564 * provided in the `'root'` injector, which will be the application-level injector in most apps.
12565 * * `factory` gives the zero argument function which will create an instance of the injectable.
12566 * The factory can call `inject` to access the `Injector` and request injection of dependencies.
12567 *
12568 * @codeGenApi
12569 * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.
12570 */
12571export declare function ɵɵdefineInjectable<T>(opts: {
12572 token: unknown;
12573 providedIn?: Type<any> | 'root' | 'platform' | 'any' | 'environment' | null;
12574 factory: () => T;
12575}): unknown;
12576
12577/**
12578 * Construct an `InjectorDef` which configures an injector.
12579 *
12580 * This should be assigned to a static injector def (`ɵinj`) field on a type, which will then be an
12581 * `InjectorType`.
12582 *
12583 * Options:
12584 *
12585 * * `providers`: an optional array of providers to add to the injector. Each provider must
12586 * either have a factory or point to a type which has a `ɵprov` static property (the
12587 * type must be an `InjectableType`).
12588 * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s
12589 * whose providers will also be added to the injector. Locally provided types will override
12590 * providers from imports.
12591 *
12592 * @codeGenApi
12593 */
12594export declare function ɵɵdefineInjector(options: {
12595 providers?: any[];
12596 imports?: any[];
12597}): unknown;
12598
12599/**
12600 * @codeGenApi
12601 */
12602export declare function ɵɵdefineNgModule<T>(def: {
12603 /** Token representing the module. Used by DI. */
12604 type: T;
12605 /** List of components to bootstrap. */
12606 bootstrap?: Type<any>[] | (() => Type<any>[]);
12607 /** List of components, directives, and pipes declared by this module. */
12608 declarations?: Type<any>[] | (() => Type<any>[]);
12609 /** List of modules or `ModuleWithProviders` imported by this module. */
12610 imports?: Type<any>[] | (() => Type<any>[]);
12611 /**
12612 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
12613 * module.
12614 */
12615 exports?: Type<any>[] | (() => Type<any>[]);
12616 /** The set of schemas that declare elements to be allowed in the NgModule. */
12617 schemas?: SchemaMetadata[] | null;
12618 /** Unique ID for the module that is used with `getModuleFactory`. */
12619 id?: string | null;
12620}): unknown;
12621
12622/**
12623 * Create a pipe definition object.
12624 *
12625 * # Example
12626 * ```
12627 * class MyPipe implements PipeTransform {
12628 * // Generated by Angular Template Compiler
12629 * static ɵpipe = definePipe({
12630 * ...
12631 * });
12632 * }
12633 * ```
12634 * @param pipeDef Pipe definition generated by the compiler
12635 *
12636 * @codeGenApi
12637 */
12638export declare function ɵɵdefinePipe<T>(pipeDef: {
12639 /** Name of the pipe. Used for matching pipes in template to pipe defs. */
12640 name: string;
12641 /** Pipe class reference. Needed to extract pipe lifecycle hooks. */
12642 type: Type<T>;
12643 /** Whether the pipe is pure. */
12644 pure?: boolean;
12645 /**
12646 * Whether the pipe is standalone.
12647 */
12648 standalone?: boolean;
12649}): unknown;
12650
12651
12652/**
12653 * @publicApi
12654 */
12655export declare type ɵɵDirectiveDeclaration<T, Selector extends string, ExportAs extends string[], InputMap extends {
12656 [key: string]: string | {
12657 alias: string | null;
12658 required: boolean;
12659 };
12660}, OutputMap extends {
12661 [key: string]: string;
12662}, QueryFields extends string[], NgContentSelectors extends never = never, IsStandalone extends boolean = false, HostDirectives = never> = unknown;
12663
12664/**
12665 * Returns the value associated to the given token from the injectors.
12666 *
12667 * `directiveInject` is intended to be used for directive, component and pipe factories.
12668 * All other injection use `inject` which does not walk the node injector tree.
12669 *
12670 * Usage example (in factory function):
12671 *
12672 * ```ts
12673 * class SomeDirective {
12674 * constructor(directive: DirectiveA) {}
12675 *
12676 * static ɵdir = ɵɵdefineDirective({
12677 * type: SomeDirective,
12678 * factory: () => new SomeDirective(ɵɵdirectiveInject(DirectiveA))
12679 * });
12680 * }
12681 * ```
12682 * @param token the type or token to inject
12683 * @param flags Injection flags
12684 * @returns the value from the injector or `null` when not found
12685 *
12686 * @codeGenApi
12687 */
12688export declare function ɵɵdirectiveInject<T>(token: ProviderToken<T>): T;
12689
12690export declare function ɵɵdirectiveInject<T>(token: ProviderToken<T>, flags: InjectFlags): T;
12691
12692/**
12693 * Disables directive matching on element.
12694 *
12695 * * Example:
12696 * ```
12697 * <my-comp my-directive>
12698 * Should match component / directive.
12699 * </my-comp>
12700 * <div ngNonBindable>
12701 * <!-- ɵɵdisableBindings() -->
12702 * <my-comp my-directive>
12703 * Should not match component / directive because we are in ngNonBindable.
12704 * </my-comp>
12705 * <!-- ɵɵenableBindings() -->
12706 * </div>
12707 * ```
12708 *
12709 * @codeGenApi
12710 */
12711export declare function ɵɵdisableBindings(): void;
12712
12713/**
12714 * Creates an empty element using {@link elementStart} and {@link elementEnd}
12715 *
12716 * @param index Index of the element in the data array
12717 * @param name Name of the DOM Node
12718 * @param attrsIndex Index of the element's attributes in the `consts` array.
12719 * @param localRefsIndex Index of the element's local references in the `consts` array.
12720 * @returns This function returns itself so that it may be chained.
12721 *
12722 * @codeGenApi
12723 */
12724export declare function ɵɵelement(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): typeof ɵɵelement;
12725
12726/**
12727 * Creates an empty logical container using {@link elementContainerStart}
12728 * and {@link elementContainerEnd}
12729 *
12730 * @param index Index of the element in the LView array
12731 * @param attrsIndex Index of the container attributes in the `consts` array.
12732 * @param localRefsIndex Index of the container's local references in the `consts` array.
12733 * @returns This function returns itself so that it may be chained.
12734 *
12735 * @codeGenApi
12736 */
12737export declare function ɵɵelementContainer(index: number, attrsIndex?: number | null, localRefsIndex?: number): typeof ɵɵelementContainer;
12738
12739/**
12740 * Mark the end of the <ng-container>.
12741 * @returns This function returns itself so that it may be chained.
12742 *
12743 * @codeGenApi
12744 */
12745export declare function ɵɵelementContainerEnd(): typeof ɵɵelementContainerEnd;
12746
12747/**
12748 * Creates a logical container for other nodes (<ng-container>) backed by a comment node in the DOM.
12749 * The instruction must later be followed by `elementContainerEnd()` call.
12750 *
12751 * @param index Index of the element in the LView array
12752 * @param attrsIndex Index of the container attributes in the `consts` array.
12753 * @param localRefsIndex Index of the container's local references in the `consts` array.
12754 * @returns This function returns itself so that it may be chained.
12755 *
12756 * Even if this instruction accepts a set of attributes no actual attribute values are propagated to
12757 * the DOM (as a comment node can't have attributes). Attributes are here only for directive
12758 * matching purposes and setting initial inputs of directives.
12759 *
12760 * @codeGenApi
12761 */
12762export declare function ɵɵelementContainerStart(index: number, attrsIndex?: number | null, localRefsIndex?: number): typeof ɵɵelementContainerStart;
12763
12764/**
12765 * Mark the end of the element.
12766 * @returns This function returns itself so that it may be chained.
12767 *
12768 * @codeGenApi
12769 */
12770export declare function ɵɵelementEnd(): typeof ɵɵelementEnd;
12771
12772
12773/**
12774 * Create DOM element. The instruction must later be followed by `elementEnd()` call.
12775 *
12776 * @param index Index of the element in the LView array
12777 * @param name Name of the DOM Node
12778 * @param attrsIndex Index of the element's attributes in the `consts` array.
12779 * @param localRefsIndex Index of the element's local references in the `consts` array.
12780 * @returns This function returns itself so that it may be chained.
12781 *
12782 * Attributes and localRefs are passed as an array of strings where elements with an even index
12783 * hold an attribute name and elements with an odd index hold an attribute value, ex.:
12784 * ['id', 'warning5', 'class', 'alert']
12785 *
12786 * @codeGenApi
12787 */
12788export declare function ɵɵelementStart(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): typeof ɵɵelementStart;
12789
12790/**
12791 * Enables directive matching on elements.
12792 *
12793 * * Example:
12794 * ```
12795 * <my-comp my-directive>
12796 * Should match component / directive.
12797 * </my-comp>
12798 * <div ngNonBindable>
12799 * <!-- ɵɵdisableBindings() -->
12800 * <my-comp my-directive>
12801 * Should not match component / directive because we are in ngNonBindable.
12802 * </my-comp>
12803 * <!-- ɵɵenableBindings() -->
12804 * </div>
12805 * ```
12806 *
12807 * @codeGenApi
12808 */
12809export declare function ɵɵenableBindings(): void;
12810
12811/**
12812 * @publicApi
12813 */
12814export declare type ɵɵFactoryDeclaration<T, CtorDependencies extends CtorDependency[]> = unknown;
12815
12816export declare enum ɵɵFactoryTarget {
12817 Directive = 0,
12818 Component = 1,
12819 Injectable = 2,
12820 Pipe = 3,
12821 NgModule = 4
12822}
12823
12824/**
12825 * Returns the current OpaqueViewState instance.
12826 *
12827 * Used in conjunction with the restoreView() instruction to save a snapshot
12828 * of the current view and restore it when listeners are invoked. This allows
12829 * walking the declaration view tree in listeners to get vars from parent views.
12830 *
12831 * @codeGenApi
12832 */
12833export declare function ɵɵgetCurrentView(): OpaqueViewState;
12834
12835/**
12836 * @codeGenApi
12837 */
12838export declare function ɵɵgetInheritedFactory<T>(type: Type<any>): (type: Type<T>) => T;
12839
12840/**
12841 * This feature adds the host directives behavior to a directive definition by patching a
12842 * function onto it. The expectation is that the runtime will invoke the function during
12843 * directive matching.
12844 *
12845 * For example:
12846 * ```ts
12847 * class ComponentWithHostDirective {
12848 * static ɵcmp = defineComponent({
12849 * type: ComponentWithHostDirective,
12850 * features: [ɵɵHostDirectivesFeature([
12851 * SimpleHostDirective,
12852 * {directive: AdvancedHostDirective, inputs: ['foo: alias'], outputs: ['bar']},
12853 * ])]
12854 * });
12855 * }
12856 * ```
12857 *
12858 * @codeGenApi
12859 */
12860export declare function ɵɵHostDirectivesFeature(rawHostDirectives: HostDirectiveConfig[] | (() => HostDirectiveConfig[])): (definition: ɵDirectiveDef<unknown>) => void;
12861
12862/**
12863 * Update a property on a host element. Only applies to native node properties, not inputs.
12864 *
12865 * Operates on the element selected by index via the {@link select} instruction.
12866 *
12867 * @param propName Name of property. Because it is going to DOM, this is not subject to
12868 * renaming as part of minification.
12869 * @param value New value to write.
12870 * @param sanitizer An optional function used to sanitize the value.
12871 * @returns This function returns itself so that it may be chained
12872 * (e.g. `property('name', ctx.name)('title', ctx.title)`)
12873 *
12874 * @codeGenApi
12875 */
12876export declare function ɵɵhostProperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵhostProperty;
12877
12878/**
12879 *
12880 * Use this instruction to create a translation block that doesn't contain any placeholder.
12881 * It calls both {@link i18nStart} and {@link i18nEnd} in one instruction.
12882 *
12883 * The translation `message` is the value which is locale specific. The translation string may
12884 * contain placeholders which associate inner elements and sub-templates within the translation.
12885 *
12886 * The translation `message` placeholders are:
12887 * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be
12888 * interpolated into. The placeholder `index` points to the expression binding index. An optional
12889 * `block` that matches the sub-template in which it was declared.
12890 * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning
12891 * and end of DOM element that were embedded in the original translation block. The placeholder
12892 * `index` points to the element index in the template instructions set. An optional `block` that
12893 * matches the sub-template in which it was declared.
12894 * - `�*{index}:{block}�`/`/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be
12895 * split up and translated separately in each angular template function. The `index` points to the
12896 * `template` instruction index. A `block` that matches the sub-template in which it was declared.
12897 *
12898 * @param index A unique index of the translation in the static block.
12899 * @param messageIndex An index of the translation message from the `def.consts` array.
12900 * @param subTemplateIndex Optional sub-template index in the `message`.
12901 *
12902 * @codeGenApi
12903 */
12904export declare function ɵɵi18n(index: number, messageIndex: number, subTemplateIndex?: number): void;
12905
12906/**
12907 * Updates a translation block or an i18n attribute when the bindings have changed.
12908 *
12909 * @param index Index of either {@link i18nStart} (translation block) or {@link i18nAttributes}
12910 * (i18n attribute) on which it should update the content.
12911 *
12912 * @codeGenApi
12913 */
12914export declare function ɵɵi18nApply(index: number): void;
12915
12916/**
12917 * Marks a list of attributes as translatable.
12918 *
12919 * @param index A unique index in the static block
12920 * @param values
12921 *
12922 * @codeGenApi
12923 */
12924export declare function ɵɵi18nAttributes(index: number, attrsIndex: number): void;
12925
12926/**
12927 * Translates a translation block marked by `i18nStart` and `i18nEnd`. It inserts the text/ICU nodes
12928 * into the render tree, moves the placeholder nodes and removes the deleted nodes.
12929 *
12930 * @codeGenApi
12931 */
12932export declare function ɵɵi18nEnd(): void;
12933
12934/**
12935 * Stores the values of the bindings during each update cycle in order to determine if we need to
12936 * update the translated nodes.
12937 *
12938 * @param value The binding's value
12939 * @returns This function returns itself so that it may be chained
12940 * (e.g. `i18nExp(ctx.name)(ctx.title)`)
12941 *
12942 * @codeGenApi
12943 */
12944export declare function ɵɵi18nExp<T>(value: T): typeof ɵɵi18nExp;
12945
12946/**
12947 * Handles message string post-processing for internationalization.
12948 *
12949 * Handles message string post-processing by transforming it from intermediate
12950 * format (that might contain some markers that we need to replace) to the final
12951 * form, consumable by i18nStart instruction. Post processing steps include:
12952 *
12953 * 1. Resolve all multi-value cases (like [�*1:1��#2:1�|�#4:1�|�5�])
12954 * 2. Replace all ICU vars (like "VAR_PLURAL")
12955 * 3. Replace all placeholders used inside ICUs in a form of {PLACEHOLDER}
12956 * 4. Replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�)
12957 * in case multiple ICUs have the same placeholder name
12958 *
12959 * @param message Raw translation string for post processing
12960 * @param replacements Set of replacements that should be applied
12961 *
12962 * @returns Transformed string that can be consumed by i18nStart instruction
12963 *
12964 * @codeGenApi
12965 */
12966export declare function ɵɵi18nPostprocess(message: string, replacements?: {
12967 [key: string]: (string | string[]);
12968}): string;
12969
12970/**
12971 * Marks a block of text as translatable.
12972 *
12973 * The instructions `i18nStart` and `i18nEnd` mark the translation block in the template.
12974 * The translation `message` is the value which is locale specific. The translation string may
12975 * contain placeholders which associate inner elements and sub-templates within the translation.
12976 *
12977 * The translation `message` placeholders are:
12978 * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be
12979 * interpolated into. The placeholder `index` points to the expression binding index. An optional
12980 * `block` that matches the sub-template in which it was declared.
12981 * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning
12982 * and end of DOM element that were embedded in the original translation block. The placeholder
12983 * `index` points to the element index in the template instructions set. An optional `block` that
12984 * matches the sub-template in which it was declared.
12985 * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be
12986 * split up and translated separately in each angular template function. The `index` points to the
12987 * `template` instruction index. A `block` that matches the sub-template in which it was declared.
12988 *
12989 * @param index A unique index of the translation in the static block.
12990 * @param messageIndex An index of the translation message from the `def.consts` array.
12991 * @param subTemplateIndex Optional sub-template index in the `message`.
12992 *
12993 * @codeGenApi
12994 */
12995export declare function ɵɵi18nStart(index: number, messageIndex: number, subTemplateIndex?: number): void;
12996
12997/**
12998 * Merges the definition from a super class to a sub class.
12999 * @param definition The definition that is a SubClass of another directive of component
13000 *
13001 * @codeGenApi
13002 */
13003export declare function ɵɵInheritDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void;
13004
13005/**
13006 * Generated instruction: injects a token from the currently active injector.
13007 *
13008 * (Additional documentation moved to `inject`, as it is the public API, and an alias for this
13009 * instruction)
13010 *
13011 * @see inject
13012 * @codeGenApi
13013 * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.
13014 */
13015export declare function ɵɵinject<T>(token: ProviderToken<T>): T;
13016
13017export declare function ɵɵinject<T>(token: ProviderToken<T>, flags?: InjectFlags): T | null;
13018
13019/**
13020 * Information about how a type or `InjectionToken` interfaces with the DI system.
13021 *
13022 * At a minimum, this includes a `factory` which defines how to create the given type `T`, possibly
13023 * requesting injection of other types if necessary.
13024 *
13025 * Optionally, a `providedIn` parameter specifies that the given type belongs to a particular
13026 * `Injector`, `NgModule`, or a special scope (e.g. `'root'`). A value of `null` indicates
13027 * that the injectable does not belong to any scope.
13028 *
13029 * @codeGenApi
13030 * @publicApi The ViewEngine compiler emits code with this type for injectables. This code is
13031 * deployed to npm, and should be treated as public api.
13032
13033 */
13034export declare interface ɵɵInjectableDeclaration<T> {
13035 /**
13036 * Specifies that the given type belongs to a particular injector:
13037 * - `InjectorType` such as `NgModule`,
13038 * - `'root'` the root injector
13039 * - `'any'` all injectors.
13040 * - `null`, does not belong to any injector. Must be explicitly listed in the injector
13041 * `providers`.
13042 */
13043 providedIn: InjectorType<any> | 'root' | 'platform' | 'any' | 'environment' | null;
13044 /**
13045 * The token to which this definition belongs.
13046 *
13047 * Note that this may not be the same as the type that the `factory` will create.
13048 */
13049 token: unknown;
13050 /**
13051 * Factory method to execute to create an instance of the injectable.
13052 */
13053 factory: (t?: Type<any>) => T;
13054 /**
13055 * In a case of no explicit injector, a location where the instance of the injectable is stored.
13056 */
13057 value: T | undefined;
13058}
13059
13060/**
13061 * Facade for the attribute injection from DI.
13062 *
13063 * @codeGenApi
13064 */
13065export declare function ɵɵinjectAttribute(attrNameToInject: string): string | null;
13066
13067/**
13068 * @publicApi
13069 */
13070export declare type ɵɵInjectorDeclaration<T> = unknown;
13071
13072/**
13073 * Information about the providers to be included in an `Injector` as well as how the given type
13074 * which carries the information should be created by the DI system.
13075 *
13076 * An `InjectorDef` can import other types which have `InjectorDefs`, forming a deep nested
13077 * structure of providers with a defined priority (identically to how `NgModule`s also have
13078 * an import/dependency structure).
13079 *
13080 * NOTE: This is a private type and should not be exported
13081 *
13082 * @codeGenApi
13083 */
13084export declare interface ɵɵInjectorDef<T> {
13085 providers: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | EnvironmentProviders | any[])[];
13086 imports: (InjectorType<any> | InjectorTypeWithProviders<any>)[];
13087}
13088
13089/**
13090 * Throws an error indicating that a factory function could not be generated by the compiler for a
13091 * particular class.
13092 *
13093 * This instruction allows the actual error message to be optimized away when ngDevMode is turned
13094 * off, saving bytes of generated code while still providing a good experience in dev mode.
13095 *
13096 * The name of the class is not mentioned here, but will be in the generated factory function name
13097 * and thus in the stack trace.
13098 *
13099 * @codeGenApi
13100 */
13101export declare function ɵɵinvalidFactory(): never;
13102
13103/**
13104 * Throws an error indicating that a factory function could not be generated by the compiler for a
13105 * particular class.
13106 *
13107 * The name of the class is not mentioned here, but will be in the generated factory function name
13108 * and thus in the stack trace.
13109 *
13110 * @codeGenApi
13111 */
13112export declare function ɵɵinvalidFactoryDep(index: number): never;
13113
13114/**
13115 * Adds an event listener to the current node.
13116 *
13117 * If an output exists on one of the node's directives, it also subscribes to the output
13118 * and saves the subscription for later cleanup.
13119 *
13120 * @param eventName Name of the event
13121 * @param listenerFn The function to be called when event emits
13122 * @param useCapture Whether or not to use capture in event listener - this argument is a reminder
13123 * from the Renderer3 infrastructure and should be removed from the instruction arguments
13124 * @param eventTargetResolver Function that returns global target information in case this listener
13125 * should be attached to a global object like window, document or body
13126 *
13127 * @codeGenApi
13128 */
13129export declare function ɵɵlistener(eventName: string, listenerFn: (e?: any) => any, useCapture?: boolean, eventTargetResolver?: GlobalTargetResolver): typeof ɵɵlistener;
13130
13131/**
13132 * Loads a QueryList corresponding to the current view or content query.
13133 *
13134 * @codeGenApi
13135 */
13136export declare function ɵɵloadQuery<T>(): QueryList<T>;
13137
13138/**
13139 * Sets the namespace used to create elements to `null`, which forces element creation to use
13140 * `createElement` rather than `createElementNS`.
13141 *
13142 * @codeGenApi
13143 */
13144export declare function ɵɵnamespaceHTML(): void;
13145
13146/**
13147 * Sets the namespace used to create elements to `'http://www.w3.org/1998/MathML/'` in global state.
13148 *
13149 * @codeGenApi
13150 */
13151export declare function ɵɵnamespaceMathML(): void;
13152
13153/**
13154 * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state.
13155 *
13156 * @codeGenApi
13157 */
13158export declare function ɵɵnamespaceSVG(): void;
13159
13160/**
13161 * Retrieves a context at the level specified and saves it as the global, contextViewData.
13162 * Will get the next level up if level is not specified.
13163 *
13164 * This is used to save contexts of parent views so they can be bound in embedded views, or
13165 * in conjunction with reference() to bind a ref from a parent view.
13166 *
13167 * @param level The relative level of the view from which to grab context compared to contextVewData
13168 * @returns context
13169 *
13170 * @codeGenApi
13171 */
13172export declare function ɵɵnextContext<T = any>(level?: number): T;
13173
13174/**
13175 * Evaluates the class metadata declaration.
13176 *
13177 * @codeGenApi
13178 */
13179export declare function ɵɵngDeclareClassMetadata(decl: {
13180 type: Type<any>;
13181 decorators: any[];
13182 ctorParameters?: () => any[];
13183 propDecorators?: {
13184 [field: string]: any;
13185 };
13186}): void;
13187
13188/**
13189 * Compiles a partial component declaration object into a full component definition object.
13190 *
13191 * @codeGenApi
13192 */
13193export declare function ɵɵngDeclareComponent(decl: R3DeclareComponentFacade): unknown;
13194
13195/**
13196 * Compiles a partial directive declaration object into a full directive definition object.
13197 *
13198 * @codeGenApi
13199 */
13200export declare function ɵɵngDeclareDirective(decl: R3DeclareDirectiveFacade): unknown;
13201
13202/**
13203 * Compiles a partial pipe declaration object into a full pipe definition object.
13204 *
13205 * @codeGenApi
13206 */
13207export declare function ɵɵngDeclareFactory(decl: R3DeclareFactoryFacade): unknown;
13208
13209/**
13210 * Compiles a partial injectable declaration object into a full injectable definition object.
13211 *
13212 * @codeGenApi
13213 */
13214export declare function ɵɵngDeclareInjectable(decl: R3DeclareInjectableFacade): unknown;
13215
13216/**
13217 * Compiles a partial injector declaration object into a full injector definition object.
13218 *
13219 * @codeGenApi
13220 */
13221export declare function ɵɵngDeclareInjector(decl: R3DeclareInjectorFacade): unknown;
13222
13223/**
13224 * Compiles a partial NgModule declaration object into a full NgModule definition object.
13225 *
13226 * @codeGenApi
13227 */
13228export declare function ɵɵngDeclareNgModule(decl: R3DeclareNgModuleFacade): unknown;
13229
13230/**
13231 * Compiles a partial pipe declaration object into a full pipe definition object.
13232 *
13233 * @codeGenApi
13234 */
13235export declare function ɵɵngDeclarePipe(decl: R3DeclarePipeFacade): unknown;
13236
13237/**
13238 * @publicApi
13239 */
13240export declare type ɵɵNgModuleDeclaration<T, Declarations, Imports, Exports> = unknown;
13241
13242/**
13243 * The NgOnChangesFeature decorates a component with support for the ngOnChanges
13244 * lifecycle hook, so it should be included in any component that implements
13245 * that hook.
13246 *
13247 * If the component or directive uses inheritance, the NgOnChangesFeature MUST
13248 * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise
13249 * inherited properties will not be propagated to the ngOnChanges lifecycle
13250 * hook.
13251 *
13252 * Example usage:
13253 *
13254 * ```
13255 * static ɵcmp = defineComponent({
13256 * ...
13257 * inputs: {name: 'publicName'},
13258 * features: [NgOnChangesFeature]
13259 * });
13260 * ```
13261 *
13262 * @codeGenApi
13263 */
13264export declare function ɵɵNgOnChangesFeature<T>(): DirectiveDefFeature;
13265
13266
13267/**
13268 * Create a pipe.
13269 *
13270 * @param index Pipe index where the pipe will be stored.
13271 * @param pipeName The name of the pipe
13272 * @returns T the instance of the pipe.
13273 *
13274 * @codeGenApi
13275 */
13276export declare function ɵɵpipe(index: number, pipeName: string): any;
13277
13278/**
13279 * Invokes a pipe with 1 arguments.
13280 *
13281 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13282 * the pipe only when an input to the pipe changes.
13283 *
13284 * @param index Pipe index where the pipe was stored on creation.
13285 * @param slotOffset the offset in the reserved slot space
13286 * @param v1 1st argument to {@link PipeTransform#transform}.
13287 *
13288 * @codeGenApi
13289 */
13290export declare function ɵɵpipeBind1(index: number, slotOffset: number, v1: any): any;
13291
13292/**
13293 * Invokes a pipe with 2 arguments.
13294 *
13295 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13296 * the pipe only when an input to the pipe changes.
13297 *
13298 * @param index Pipe index where the pipe was stored on creation.
13299 * @param slotOffset the offset in the reserved slot space
13300 * @param v1 1st argument to {@link PipeTransform#transform}.
13301 * @param v2 2nd argument to {@link PipeTransform#transform}.
13302 *
13303 * @codeGenApi
13304 */
13305export declare function ɵɵpipeBind2(index: number, slotOffset: number, v1: any, v2: any): any;
13306
13307/**
13308 * Invokes a pipe with 3 arguments.
13309 *
13310 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13311 * the pipe only when an input to the pipe changes.
13312 *
13313 * @param index Pipe index where the pipe was stored on creation.
13314 * @param slotOffset the offset in the reserved slot space
13315 * @param v1 1st argument to {@link PipeTransform#transform}.
13316 * @param v2 2nd argument to {@link PipeTransform#transform}.
13317 * @param v3 4rd argument to {@link PipeTransform#transform}.
13318 *
13319 * @codeGenApi
13320 */
13321export declare function ɵɵpipeBind3(index: number, slotOffset: number, v1: any, v2: any, v3: any): any;
13322
13323/**
13324 * Invokes a pipe with 4 arguments.
13325 *
13326 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13327 * the pipe only when an input to the pipe changes.
13328 *
13329 * @param index Pipe index where the pipe was stored on creation.
13330 * @param slotOffset the offset in the reserved slot space
13331 * @param v1 1st argument to {@link PipeTransform#transform}.
13332 * @param v2 2nd argument to {@link PipeTransform#transform}.
13333 * @param v3 3rd argument to {@link PipeTransform#transform}.
13334 * @param v4 4th argument to {@link PipeTransform#transform}.
13335 *
13336 * @codeGenApi
13337 */
13338export declare function ɵɵpipeBind4(index: number, slotOffset: number, v1: any, v2: any, v3: any, v4: any): any;
13339
13340/**
13341 * Invokes a pipe with variable number of arguments.
13342 *
13343 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
13344 * the pipe only when an input to the pipe changes.
13345 *
13346 * @param index Pipe index where the pipe was stored on creation.
13347 * @param slotOffset the offset in the reserved slot space
13348 * @param values Array of arguments to pass to {@link PipeTransform#transform} method.
13349 *
13350 * @codeGenApi
13351 */
13352export declare function ɵɵpipeBindV(index: number, slotOffset: number, values: [any, ...any[]]): any;
13353
13354/**
13355 * @publicApi
13356 */
13357export declare type ɵɵPipeDeclaration<T, Name extends string, IsStandalone extends boolean = false> = unknown;
13358
13359/**
13360 * Inserts previously re-distributed projected nodes. This instruction must be preceded by a call
13361 * to the projectionDef instruction.
13362 *
13363 * @param nodeIndex
13364 * @param selectorIndex:
13365 * - 0 when the selector is `*` (or unspecified as this is the default value),
13366 * - 1 based index of the selector from the {@link projectionDef}
13367 *
13368 * @codeGenApi
13369 */
13370export declare function ɵɵprojection(nodeIndex: number, selectorIndex?: number, attrs?: TAttributes): void;
13371
13372/**
13373 * Instruction to distribute projectable nodes among <ng-content> occurrences in a given template.
13374 * It takes all the selectors from the entire component's template and decides where
13375 * each projected node belongs (it re-distributes nodes among "buckets" where each "bucket" is
13376 * backed by a selector).
13377 *
13378 * This function requires CSS selectors to be provided in 2 forms: parsed (by a compiler) and text,
13379 * un-parsed form.
13380 *
13381 * The parsed form is needed for efficient matching of a node against a given CSS selector.
13382 * The un-parsed, textual form is needed for support of the ngProjectAs attribute.
13383 *
13384 * Having a CSS selector in 2 different formats is not ideal, but alternatives have even more
13385 * drawbacks:
13386 * - having only a textual form would require runtime parsing of CSS selectors;
13387 * - we can't have only a parsed as we can't re-construct textual form from it (as entered by a
13388 * template author).
13389 *
13390 * @param projectionSlots? A collection of projection slots. A projection slot can be based
13391 * on a parsed CSS selectors or set to the wildcard selector ("*") in order to match
13392 * all nodes which do not match any selector. If not specified, a single wildcard
13393 * selector projection slot will be defined.
13394 *
13395 * @codeGenApi
13396 */
13397export declare function ɵɵprojectionDef(projectionSlots?: ProjectionSlots): void;
13398
13399/**
13400 * Update a property on a selected element.
13401 *
13402 * Operates on the element selected by index via the {@link select} instruction.
13403 *
13404 * If the property name also exists as an input property on one of the element's directives,
13405 * the component property will be set instead of the element property. This check must
13406 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled
13407 *
13408 * @param propName Name of property. Because it is going to DOM, this is not subject to
13409 * renaming as part of minification.
13410 * @param value New value to write.
13411 * @param sanitizer An optional function used to sanitize the value.
13412 * @returns This function returns itself so that it may be chained
13413 * (e.g. `property('name', ctx.name)('title', ctx.title)`)
13414 *
13415 * @codeGenApi
13416 */
13417export declare function ɵɵproperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵproperty;
13418
13419/**
13420 *
13421 * Update an interpolated property on an element with a lone bound value
13422 *
13423 * Used when the value passed to a property has 1 interpolated value in it, an no additional text
13424 * surrounds that interpolated value:
13425 *
13426 * ```html
13427 * <div title="{{v0}}"></div>
13428 * ```
13429 *
13430 * Its compiled representation is::
13431 *
13432 * ```ts
13433 * ɵɵpropertyInterpolate('title', v0);
13434 * ```
13435 *
13436 * If the property name also exists as an input property on one of the element's directives,
13437 * the component property will be set instead of the element property. This check must
13438 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13439 *
13440 * @param propName The name of the property to update
13441 * @param prefix Static value used for concatenation only.
13442 * @param v0 Value checked for change.
13443 * @param suffix Static value used for concatenation only.
13444 * @param sanitizer An optional sanitizer function
13445 * @returns itself, so that it may be chained.
13446 * @codeGenApi
13447 */
13448export declare function ɵɵpropertyInterpolate(propName: string, v0: any, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate;
13449
13450/**
13451 *
13452 * Update an interpolated property on an element with single bound value surrounded by text.
13453 *
13454 * Used when the value passed to a property has 1 interpolated value in it:
13455 *
13456 * ```html
13457 * <div title="prefix{{v0}}suffix"></div>
13458 * ```
13459 *
13460 * Its compiled representation is::
13461 *
13462 * ```ts
13463 * ɵɵpropertyInterpolate1('title', 'prefix', v0, 'suffix');
13464 * ```
13465 *
13466 * If the property name also exists as an input property on one of the element's directives,
13467 * the component property will be set instead of the element property. This check must
13468 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13469 *
13470 * @param propName The name of the property to update
13471 * @param prefix Static value used for concatenation only.
13472 * @param v0 Value checked for change.
13473 * @param suffix Static value used for concatenation only.
13474 * @param sanitizer An optional sanitizer function
13475 * @returns itself, so that it may be chained.
13476 * @codeGenApi
13477 */
13478export declare function ɵɵpropertyInterpolate1(propName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate1;
13479
13480/**
13481 *
13482 * Update an interpolated property on an element with 2 bound values surrounded by text.
13483 *
13484 * Used when the value passed to a property has 2 interpolated values in it:
13485 *
13486 * ```html
13487 * <div title="prefix{{v0}}-{{v1}}suffix"></div>
13488 * ```
13489 *
13490 * Its compiled representation is::
13491 *
13492 * ```ts
13493 * ɵɵpropertyInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
13494 * ```
13495 *
13496 * If the property name also exists as an input property on one of the element's directives,
13497 * the component property will be set instead of the element property. This check must
13498 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13499 *
13500 * @param propName The name of the property to update
13501 * @param prefix Static value used for concatenation only.
13502 * @param v0 Value checked for change.
13503 * @param i0 Static value used for concatenation only.
13504 * @param v1 Value checked for change.
13505 * @param suffix Static value used for concatenation only.
13506 * @param sanitizer An optional sanitizer function
13507 * @returns itself, so that it may be chained.
13508 * @codeGenApi
13509 */
13510export declare function ɵɵpropertyInterpolate2(propName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate2;
13511
13512/**
13513 *
13514 * Update an interpolated property on an element with 3 bound values surrounded by text.
13515 *
13516 * Used when the value passed to a property has 3 interpolated values in it:
13517 *
13518 * ```html
13519 * <div title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
13520 * ```
13521 *
13522 * Its compiled representation is::
13523 *
13524 * ```ts
13525 * ɵɵpropertyInterpolate3(
13526 * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
13527 * ```
13528 *
13529 * If the property name also exists as an input property on one of the element's directives,
13530 * the component property will be set instead of the element property. This check must
13531 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13532 *
13533 * @param propName The name of the property to update
13534 * @param prefix Static value used for concatenation only.
13535 * @param v0 Value checked for change.
13536 * @param i0 Static value used for concatenation only.
13537 * @param v1 Value checked for change.
13538 * @param i1 Static value used for concatenation only.
13539 * @param v2 Value checked for change.
13540 * @param suffix Static value used for concatenation only.
13541 * @param sanitizer An optional sanitizer function
13542 * @returns itself, so that it may be chained.
13543 * @codeGenApi
13544 */
13545export declare function ɵɵpropertyInterpolate3(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate3;
13546
13547/**
13548 *
13549 * Update an interpolated property on an element with 4 bound values surrounded by text.
13550 *
13551 * Used when the value passed to a property has 4 interpolated values in it:
13552 *
13553 * ```html
13554 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
13555 * ```
13556 *
13557 * Its compiled representation is::
13558 *
13559 * ```ts
13560 * ɵɵpropertyInterpolate4(
13561 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
13562 * ```
13563 *
13564 * If the property name also exists as an input property on one of the element's directives,
13565 * the component property will be set instead of the element property. This check must
13566 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13567 *
13568 * @param propName The name of the property to update
13569 * @param prefix Static value used for concatenation only.
13570 * @param v0 Value checked for change.
13571 * @param i0 Static value used for concatenation only.
13572 * @param v1 Value checked for change.
13573 * @param i1 Static value used for concatenation only.
13574 * @param v2 Value checked for change.
13575 * @param i2 Static value used for concatenation only.
13576 * @param v3 Value checked for change.
13577 * @param suffix Static value used for concatenation only.
13578 * @param sanitizer An optional sanitizer function
13579 * @returns itself, so that it may be chained.
13580 * @codeGenApi
13581 */
13582export 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;
13583
13584/**
13585 *
13586 * Update an interpolated property on an element with 5 bound values surrounded by text.
13587 *
13588 * Used when the value passed to a property has 5 interpolated values in it:
13589 *
13590 * ```html
13591 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
13592 * ```
13593 *
13594 * Its compiled representation is::
13595 *
13596 * ```ts
13597 * ɵɵpropertyInterpolate5(
13598 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
13599 * ```
13600 *
13601 * If the property name also exists as an input property on one of the element's directives,
13602 * the component property will be set instead of the element property. This check must
13603 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13604 *
13605 * @param propName The name of the property to update
13606 * @param prefix Static value used for concatenation only.
13607 * @param v0 Value checked for change.
13608 * @param i0 Static value used for concatenation only.
13609 * @param v1 Value checked for change.
13610 * @param i1 Static value used for concatenation only.
13611 * @param v2 Value checked for change.
13612 * @param i2 Static value used for concatenation only.
13613 * @param v3 Value checked for change.
13614 * @param i3 Static value used for concatenation only.
13615 * @param v4 Value checked for change.
13616 * @param suffix Static value used for concatenation only.
13617 * @param sanitizer An optional sanitizer function
13618 * @returns itself, so that it may be chained.
13619 * @codeGenApi
13620 */
13621export 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;
13622
13623/**
13624 *
13625 * Update an interpolated property on an element with 6 bound values surrounded by text.
13626 *
13627 * Used when the value passed to a property has 6 interpolated values in it:
13628 *
13629 * ```html
13630 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
13631 * ```
13632 *
13633 * Its compiled representation is::
13634 *
13635 * ```ts
13636 * ɵɵpropertyInterpolate6(
13637 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
13638 * ```
13639 *
13640 * If the property name also exists as an input property on one of the element's directives,
13641 * the component property will be set instead of the element property. This check must
13642 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13643 *
13644 * @param propName The name of the property to update
13645 * @param prefix Static value used for concatenation only.
13646 * @param v0 Value checked for change.
13647 * @param i0 Static value used for concatenation only.
13648 * @param v1 Value checked for change.
13649 * @param i1 Static value used for concatenation only.
13650 * @param v2 Value checked for change.
13651 * @param i2 Static value used for concatenation only.
13652 * @param v3 Value checked for change.
13653 * @param i3 Static value used for concatenation only.
13654 * @param v4 Value checked for change.
13655 * @param i4 Static value used for concatenation only.
13656 * @param v5 Value checked for change.
13657 * @param suffix Static value used for concatenation only.
13658 * @param sanitizer An optional sanitizer function
13659 * @returns itself, so that it may be chained.
13660 * @codeGenApi
13661 */
13662export 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;
13663
13664/**
13665 *
13666 * Update an interpolated property on an element with 7 bound values surrounded by text.
13667 *
13668 * Used when the value passed to a property has 7 interpolated values in it:
13669 *
13670 * ```html
13671 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
13672 * ```
13673 *
13674 * Its compiled representation is::
13675 *
13676 * ```ts
13677 * ɵɵpropertyInterpolate7(
13678 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
13679 * ```
13680 *
13681 * If the property name also exists as an input property on one of the element's directives,
13682 * the component property will be set instead of the element property. This check must
13683 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13684 *
13685 * @param propName The name of the property to update
13686 * @param prefix Static value used for concatenation only.
13687 * @param v0 Value checked for change.
13688 * @param i0 Static value used for concatenation only.
13689 * @param v1 Value checked for change.
13690 * @param i1 Static value used for concatenation only.
13691 * @param v2 Value checked for change.
13692 * @param i2 Static value used for concatenation only.
13693 * @param v3 Value checked for change.
13694 * @param i3 Static value used for concatenation only.
13695 * @param v4 Value checked for change.
13696 * @param i4 Static value used for concatenation only.
13697 * @param v5 Value checked for change.
13698 * @param i5 Static value used for concatenation only.
13699 * @param v6 Value checked for change.
13700 * @param suffix Static value used for concatenation only.
13701 * @param sanitizer An optional sanitizer function
13702 * @returns itself, so that it may be chained.
13703 * @codeGenApi
13704 */
13705export 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;
13706
13707/**
13708 *
13709 * Update an interpolated property on an element with 8 bound values surrounded by text.
13710 *
13711 * Used when the value passed to a property has 8 interpolated values in it:
13712 *
13713 * ```html
13714 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
13715 * ```
13716 *
13717 * Its compiled representation is::
13718 *
13719 * ```ts
13720 * ɵɵpropertyInterpolate8(
13721 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
13722 * ```
13723 *
13724 * If the property name also exists as an input property on one of the element's directives,
13725 * the component property will be set instead of the element property. This check must
13726 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13727 *
13728 * @param propName The name of the property to update
13729 * @param prefix Static value used for concatenation only.
13730 * @param v0 Value checked for change.
13731 * @param i0 Static value used for concatenation only.
13732 * @param v1 Value checked for change.
13733 * @param i1 Static value used for concatenation only.
13734 * @param v2 Value checked for change.
13735 * @param i2 Static value used for concatenation only.
13736 * @param v3 Value checked for change.
13737 * @param i3 Static value used for concatenation only.
13738 * @param v4 Value checked for change.
13739 * @param i4 Static value used for concatenation only.
13740 * @param v5 Value checked for change.
13741 * @param i5 Static value used for concatenation only.
13742 * @param v6 Value checked for change.
13743 * @param i6 Static value used for concatenation only.
13744 * @param v7 Value checked for change.
13745 * @param suffix Static value used for concatenation only.
13746 * @param sanitizer An optional sanitizer function
13747 * @returns itself, so that it may be chained.
13748 * @codeGenApi
13749 */
13750export 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;
13751
13752/**
13753 * Update an interpolated property on an element with 9 or more bound values surrounded by text.
13754 *
13755 * Used when the number of interpolated values exceeds 8.
13756 *
13757 * ```html
13758 * <div
13759 * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
13760 * ```
13761 *
13762 * Its compiled representation is::
13763 *
13764 * ```ts
13765 * ɵɵpropertyInterpolateV(
13766 * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
13767 * 'suffix']);
13768 * ```
13769 *
13770 * If the property name also exists as an input property on one of the element's directives,
13771 * the component property will be set instead of the element property. This check must
13772 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
13773 *
13774 * @param propName The name of the property to update.
13775 * @param values The collection of values and the strings in between those values, beginning with a
13776 * string prefix and ending with a string suffix.
13777 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
13778 * @param sanitizer An optional sanitizer function
13779 * @returns itself, so that it may be chained.
13780 * @codeGenApi
13781 */
13782export declare function ɵɵpropertyInterpolateV(propName: string, values: any[], sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolateV;
13783
13784/**
13785 * This feature resolves the providers of a directive (or component),
13786 * and publish them into the DI system, making it visible to others for injection.
13787 *
13788 * For example:
13789 * ```ts
13790 * class ComponentWithProviders {
13791 * constructor(private greeter: GreeterDE) {}
13792 *
13793 * static ɵcmp = defineComponent({
13794 * type: ComponentWithProviders,
13795 * selectors: [['component-with-providers']],
13796 * factory: () => new ComponentWithProviders(directiveInject(GreeterDE as any)),
13797 * decls: 1,
13798 * vars: 1,
13799 * template: function(fs: RenderFlags, ctx: ComponentWithProviders) {
13800 * if (fs & RenderFlags.Create) {
13801 * ɵɵtext(0);
13802 * }
13803 * if (fs & RenderFlags.Update) {
13804 * ɵɵtextInterpolate(ctx.greeter.greet());
13805 * }
13806 * },
13807 * features: [ɵɵProvidersFeature([GreeterDE])]
13808 * });
13809 * }
13810 * ```
13811 *
13812 * @param definition
13813 *
13814 * @codeGenApi
13815 */
13816export declare function ɵɵProvidersFeature<T>(providers: Provider[], viewProviders?: Provider[]): (definition: ɵDirectiveDef<T>) => void;
13817
13818/**
13819 * Bindings for pure functions are stored after regular bindings.
13820 *
13821 * |-------decls------|---------vars---------| |----- hostVars (dir1) ------|
13822 * ------------------------------------------------------------------------------------------
13823 * | nodes/refs/pipes | bindings | fn slots | injector | dir1 | host bindings | host slots |
13824 * ------------------------------------------------------------------------------------------
13825 * ^ ^
13826 * TView.bindingStartIndex TView.expandoStartIndex
13827 *
13828 * Pure function instructions are given an offset from the binding root. Adding the offset to the
13829 * binding root gives the first index where the bindings are stored. In component views, the binding
13830 * root is the bindingStartIndex. In host bindings, the binding root is the expandoStartIndex +
13831 * any directive instances + any hostVars in directives evaluated before it.
13832 *
13833 * See VIEW_DATA.md for more information about host binding resolution.
13834 */
13835/**
13836 * If the value hasn't been saved, calls the pure function to store and return the
13837 * value. If it has been saved, returns the saved value.
13838 *
13839 * @param slotOffset the offset from binding root to the reserved slot
13840 * @param pureFn Function that returns a value
13841 * @param thisArg Optional calling context of pureFn
13842 * @returns value
13843 *
13844 * @codeGenApi
13845 */
13846export declare function ɵɵpureFunction0<T>(slotOffset: number, pureFn: () => T, thisArg?: any): T;
13847
13848/**
13849 * If the value of the provided exp has changed, calls the pure function to return
13850 * an updated value. Or if the value has not changed, returns cached value.
13851 *
13852 * @param slotOffset the offset from binding root to the reserved slot
13853 * @param pureFn Function that returns an updated value
13854 * @param exp Updated expression value
13855 * @param thisArg Optional calling context of pureFn
13856 * @returns Updated or cached value
13857 *
13858 * @codeGenApi
13859 */
13860export declare function ɵɵpureFunction1(slotOffset: number, pureFn: (v: any) => any, exp: any, thisArg?: any): any;
13861
13862/**
13863 * If the value of any provided exp has changed, calls the pure function to return
13864 * an updated value. Or if no values have changed, returns cached value.
13865 *
13866 * @param slotOffset the offset from binding root to the reserved slot
13867 * @param pureFn
13868 * @param exp1
13869 * @param exp2
13870 * @param thisArg Optional calling context of pureFn
13871 * @returns Updated or cached value
13872 *
13873 * @codeGenApi
13874 */
13875export declare function ɵɵpureFunction2(slotOffset: number, pureFn: (v1: any, v2: any) => any, exp1: any, exp2: any, thisArg?: any): any;
13876
13877/**
13878 * If the value of any provided exp has changed, calls the pure function to return
13879 * an updated value. Or if no values have changed, returns cached value.
13880 *
13881 * @param slotOffset the offset from binding root to the reserved slot
13882 * @param pureFn
13883 * @param exp1
13884 * @param exp2
13885 * @param exp3
13886 * @param thisArg Optional calling context of pureFn
13887 * @returns Updated or cached value
13888 *
13889 * @codeGenApi
13890 */
13891export declare function ɵɵpureFunction3(slotOffset: number, pureFn: (v1: any, v2: any, v3: any) => any, exp1: any, exp2: any, exp3: any, thisArg?: any): any;
13892
13893/**
13894 * If the value of any provided exp has changed, calls the pure function to return
13895 * an updated value. Or if no values have changed, returns cached value.
13896 *
13897 * @param slotOffset the offset from binding root to the reserved slot
13898 * @param pureFn
13899 * @param exp1
13900 * @param exp2
13901 * @param exp3
13902 * @param exp4
13903 * @param thisArg Optional calling context of pureFn
13904 * @returns Updated or cached value
13905 *
13906 * @codeGenApi
13907 */
13908export 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;
13909
13910/**
13911 * If the value of any provided exp has changed, calls the pure function to return
13912 * an updated value. Or if no values have changed, returns cached value.
13913 *
13914 * @param slotOffset the offset from binding root to the reserved slot
13915 * @param pureFn
13916 * @param exp1
13917 * @param exp2
13918 * @param exp3
13919 * @param exp4
13920 * @param exp5
13921 * @param thisArg Optional calling context of pureFn
13922 * @returns Updated or cached value
13923 *
13924 * @codeGenApi
13925 */
13926export 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;
13927
13928/**
13929 * If the value of any provided exp has changed, calls the pure function to return
13930 * an updated value. Or if no values have changed, returns cached value.
13931 *
13932 * @param slotOffset the offset from binding root to the reserved slot
13933 * @param pureFn
13934 * @param exp1
13935 * @param exp2
13936 * @param exp3
13937 * @param exp4
13938 * @param exp5
13939 * @param exp6
13940 * @param thisArg Optional calling context of pureFn
13941 * @returns Updated or cached value
13942 *
13943 * @codeGenApi
13944 */
13945export 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;
13946
13947/**
13948 * If the value of any provided exp has changed, calls the pure function to return
13949 * an updated value. Or if no values have changed, returns cached value.
13950 *
13951 * @param slotOffset the offset from binding root to the reserved slot
13952 * @param pureFn
13953 * @param exp1
13954 * @param exp2
13955 * @param exp3
13956 * @param exp4
13957 * @param exp5
13958 * @param exp6
13959 * @param exp7
13960 * @param thisArg Optional calling context of pureFn
13961 * @returns Updated or cached value
13962 *
13963 * @codeGenApi
13964 */
13965export 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;
13966
13967/**
13968 * If the value of any provided exp has changed, calls the pure function to return
13969 * an updated value. Or if no values have changed, returns cached value.
13970 *
13971 * @param slotOffset the offset from binding root to the reserved slot
13972 * @param pureFn
13973 * @param exp1
13974 * @param exp2
13975 * @param exp3
13976 * @param exp4
13977 * @param exp5
13978 * @param exp6
13979 * @param exp7
13980 * @param exp8
13981 * @param thisArg Optional calling context of pureFn
13982 * @returns Updated or cached value
13983 *
13984 * @codeGenApi
13985 */
13986export 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;
13987
13988/**
13989 * pureFunction instruction that can support any number of bindings.
13990 *
13991 * If the value of any provided exp has changed, calls the pure function to return
13992 * an updated value. Or if no values have changed, returns cached value.
13993 *
13994 * @param slotOffset the offset from binding root to the reserved slot
13995 * @param pureFn A pure function that takes binding values and builds an object or array
13996 * containing those values.
13997 * @param exps An array of binding values
13998 * @param thisArg Optional calling context of pureFn
13999 * @returns Updated or cached value
14000 *
14001 * @codeGenApi
14002 */
14003export declare function ɵɵpureFunctionV(slotOffset: number, pureFn: (...v: any[]) => any, exps: any[], thisArg?: any): any;
14004
14005/**
14006 * Refreshes a query by combining matches from all active views and removing matches from deleted
14007 * views.
14008 *
14009 * @returns `true` if a query got dirty during change detection or if this is a static query
14010 * resolving in creation mode, `false` otherwise.
14011 *
14012 * @codeGenApi
14013 */
14014export declare function ɵɵqueryRefresh(queryList: QueryList<any>): boolean;
14015
14016/**
14017 * Retrieves a local reference from the current contextViewData.
14018 *
14019 * If the reference to retrieve is in a parent view, this instruction is used in conjunction
14020 * with a nextContext() call, which walks up the tree and updates the contextViewData instance.
14021 *
14022 * @param index The index of the local ref in contextViewData.
14023 *
14024 * @codeGenApi
14025 */
14026export declare function ɵɵreference<T>(index: number): T;
14027
14028/**
14029 * Adds the given NgModule type to Angular's NgModule registry.
14030 *
14031 * This is generated as a side-effect of NgModule compilation. Note that the `id` is passed in
14032 * explicitly and not read from the NgModule definition. This is for two reasons: it avoids a
14033 * megamorphic read, and in JIT there's a chicken-and-egg problem where the NgModule may not be
14034 * fully resolved when it's registered.
14035 *
14036 * @codeGenApi
14037 */
14038export declare function ɵɵregisterNgModuleType(ngModuleType: ɵNgModuleType, id: string): void;
14039
14040/**
14041 * Clears the view set in `ɵɵrestoreView` from memory. Returns the passed in
14042 * value so that it can be used as a return value of an instruction.
14043 *
14044 * @codeGenApi
14045 */
14046export declare function ɵɵresetView<T>(value?: T): T | undefined;
14047
14048/**
14049 *
14050 * @codeGenApi
14051 */
14052export declare function ɵɵresolveBody(element: RElement & {
14053 ownerDocument: Document;
14054}): HTMLElement;
14055
14056/**
14057 *
14058 * @codeGenApi
14059 */
14060export declare function ɵɵresolveDocument(element: RElement & {
14061 ownerDocument: Document;
14062}): Document;
14063
14064/**
14065 *
14066 * @codeGenApi
14067 */
14068export declare function ɵɵresolveWindow(element: RElement & {
14069 ownerDocument: Document;
14070}): (Window & typeof globalThis) | null;
14071
14072/**
14073 * Restores `contextViewData` to the given OpaqueViewState instance.
14074 *
14075 * Used in conjunction with the getCurrentView() instruction to save a snapshot
14076 * of the current view and restore it when listeners are invoked. This allows
14077 * walking the declaration view tree in listeners to get vars from parent views.
14078 *
14079 * @param viewToRestore The OpaqueViewState instance to restore.
14080 * @returns Context of the restored OpaqueViewState instance.
14081 *
14082 * @codeGenApi
14083 */
14084export declare function ɵɵrestoreView<T = any>(viewToRestore: OpaqueViewState): T;
14085
14086/**
14087 * An `html` sanitizer which converts untrusted `html` **string** into trusted string by removing
14088 * dangerous content.
14089 *
14090 * This method parses the `html` and locates potentially dangerous content (such as urls and
14091 * javascript) and removes it.
14092 *
14093 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustHtml}.
14094 *
14095 * @param unsafeHtml untrusted `html`, typically from the user.
14096 * @returns `html` string which is safe to display to user, because all of the dangerous javascript
14097 * and urls have been removed.
14098 *
14099 * @codeGenApi
14100 */
14101export declare function ɵɵsanitizeHtml(unsafeHtml: any): TrustedHTML | string;
14102
14103/**
14104 * A `url` sanitizer which only lets trusted `url`s through.
14105 *
14106 * This passes only `url`s marked trusted by calling {@link bypassSanitizationTrustResourceUrl}.
14107 *
14108 * @param unsafeResourceUrl untrusted `url`, typically from the user.
14109 * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because
14110 * only trusted `url`s have been allowed to pass.
14111 *
14112 * @codeGenApi
14113 */
14114export declare function ɵɵsanitizeResourceUrl(unsafeResourceUrl: any): TrustedScriptURL | string;
14115
14116/**
14117 * A `script` sanitizer which only lets trusted javascript through.
14118 *
14119 * This passes only `script`s marked trusted by calling {@link
14120 * bypassSanitizationTrustScript}.
14121 *
14122 * @param unsafeScript untrusted `script`, typically from the user.
14123 * @returns `url` string which is safe to bind to the `<script>` element such as `<img src>`,
14124 * because only trusted `scripts` have been allowed to pass.
14125 *
14126 * @codeGenApi
14127 */
14128export declare function ɵɵsanitizeScript(unsafeScript: any): TrustedScript | string;
14129
14130/**
14131 * A `style` sanitizer which converts untrusted `style` **string** into trusted string by removing
14132 * dangerous content.
14133 *
14134 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustStyle}.
14135 *
14136 * @param unsafeStyle untrusted `style`, typically from the user.
14137 * @returns `style` string which is safe to bind to the `style` properties.
14138 *
14139 * @codeGenApi
14140 */
14141export declare function ɵɵsanitizeStyle(unsafeStyle: any): string;
14142
14143/**
14144 * A `url` sanitizer which converts untrusted `url` **string** into trusted string by removing
14145 * dangerous
14146 * content.
14147 *
14148 * This method parses the `url` and locates potentially dangerous content (such as javascript) and
14149 * removes it.
14150 *
14151 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustUrl}.
14152 *
14153 * @param unsafeUrl untrusted `url`, typically from the user.
14154 * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because
14155 * all of the dangerous javascript has been removed.
14156 *
14157 * @codeGenApi
14158 */
14159export declare function ɵɵsanitizeUrl(unsafeUrl: any): string;
14160
14161/**
14162 * Sanitizes URL, selecting sanitizer function based on tag and property names.
14163 *
14164 * This function is used in case we can't define security context at compile time, when only prop
14165 * name is available. This happens when we generate host bindings for Directives/Components. The
14166 * host element is unknown at compile time, so we defer calculation of specific sanitizer to
14167 * runtime.
14168 *
14169 * @param unsafeUrl untrusted `url`, typically from the user.
14170 * @param tag target element tag name.
14171 * @param prop name of the property that contains the value.
14172 * @returns `url` string which is safe to bind.
14173 *
14174 * @codeGenApi
14175 */
14176export declare function ɵɵsanitizeUrlOrResourceUrl(unsafeUrl: any, tag: string, prop: string): any;
14177
14178/**
14179 * Generated next to NgModules to monkey-patch directive and pipe references onto a component's
14180 * definition, when generating a direct reference in the component file would otherwise create an
14181 * import cycle.
14182 *
14183 * See [this explanation](https://hackmd.io/Odw80D0pR6yfsOjg_7XCJg?view) for more details.
14184 *
14185 * @codeGenApi
14186 */
14187export declare function ɵɵsetComponentScope(type: ɵComponentType<any>, directives: Type<any>[] | (() => Type<any>[]), pipes: Type<any>[] | (() => Type<any>[])): void;
14188
14189/**
14190 * Adds the module metadata that is necessary to compute the module's transitive scope to an
14191 * existing module definition.
14192 *
14193 * Scope metadata of modules is not used in production builds, so calls to this function can be
14194 * marked pure to tree-shake it from the bundle, allowing for all referenced declarations
14195 * to become eligible for tree-shaking as well.
14196 *
14197 * @codeGenApi
14198 */
14199export declare function ɵɵsetNgModuleScope(type: any, scope: {
14200 /** List of components, directives, and pipes declared by this module. */
14201 declarations?: Type<any>[] | (() => Type<any>[]);
14202 /** List of modules or `ModuleWithProviders` imported by this module. */
14203 imports?: Type<any>[] | (() => Type<any>[]);
14204 /**
14205 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
14206 * module.
14207 */
14208 exports?: Type<any>[] | (() => Type<any>[]);
14209}): unknown;
14210
14211/**
14212 * A feature that acts as a setup code for the {@link StandaloneService}.
14213 *
14214 * The most important responsibility of this feature is to expose the "getStandaloneInjector"
14215 * function (an entry points to a standalone injector creation) on a component definition object. We
14216 * go through the features infrastructure to make sure that the standalone injector creation logic
14217 * is tree-shakable and not included in applications that don't use standalone components.
14218 *
14219 * @codeGenApi
14220 */
14221export declare function ɵɵStandaloneFeature(definition: ɵComponentDef<unknown>): void;
14222
14223/**
14224 * Update style bindings using an object literal on an element.
14225 *
14226 * This instruction is meant to apply styling via the `[style]="exp"` template bindings.
14227 * When styles are applied to the element they will then be updated with respect to
14228 * any styles/classes set via `styleProp`. If any styles are set to falsy
14229 * then they will be removed from the element.
14230 *
14231 * Note that the styling instruction will not be applied until `stylingApply` is called.
14232 *
14233 * @param styles A key/value style map of the styles that will be applied to the given element.
14234 * Any missing styles (that have already been applied to the element beforehand) will be
14235 * removed (unset) from the element's styling.
14236 *
14237 * Note that this will apply the provided styleMap value to the host element if this function
14238 * is called within a host binding.
14239 *
14240 * @codeGenApi
14241 */
14242export declare function ɵɵstyleMap(styles: {
14243 [styleName: string]: any;
14244} | string | undefined | null): void;
14245
14246
14247/**
14248 *
14249 * Update an interpolated style on an element with single bound value surrounded by text.
14250 *
14251 * Used when the value passed to a property has 1 interpolated value in it:
14252 *
14253 * ```html
14254 * <div style="key: {{v0}}suffix"></div>
14255 * ```
14256 *
14257 * Its compiled representation is:
14258 *
14259 * ```ts
14260 * ɵɵstyleMapInterpolate1('key: ', v0, 'suffix');
14261 * ```
14262 *
14263 * @param prefix Static value used for concatenation only.
14264 * @param v0 Value checked for change.
14265 * @param suffix Static value used for concatenation only.
14266 * @codeGenApi
14267 */
14268export declare function ɵɵstyleMapInterpolate1(prefix: string, v0: any, suffix: string): void;
14269
14270/**
14271 *
14272 * Update an interpolated style on an element with 2 bound values surrounded by text.
14273 *
14274 * Used when the value passed to a property has 2 interpolated values in it:
14275 *
14276 * ```html
14277 * <div style="key: {{v0}}; key1: {{v1}}suffix"></div>
14278 * ```
14279 *
14280 * Its compiled representation is:
14281 *
14282 * ```ts
14283 * ɵɵstyleMapInterpolate2('key: ', v0, '; key1: ', v1, 'suffix');
14284 * ```
14285 *
14286 * @param prefix Static value used for concatenation only.
14287 * @param v0 Value checked for change.
14288 * @param i0 Static value used for concatenation only.
14289 * @param v1 Value checked for change.
14290 * @param suffix Static value used for concatenation only.
14291 * @codeGenApi
14292 */
14293export declare function ɵɵstyleMapInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): void;
14294
14295/**
14296 *
14297 * Update an interpolated style on an element with 3 bound values surrounded by text.
14298 *
14299 * Used when the value passed to a property has 3 interpolated values in it:
14300 *
14301 * ```html
14302 * <div style="key: {{v0}}; key2: {{v1}}; key2: {{v2}}suffix"></div>
14303 * ```
14304 *
14305 * Its compiled representation is:
14306 *
14307 * ```ts
14308 * ɵɵstyleMapInterpolate3(
14309 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, 'suffix');
14310 * ```
14311 *
14312 * @param prefix Static value used for concatenation only.
14313 * @param v0 Value checked for change.
14314 * @param i0 Static value used for concatenation only.
14315 * @param v1 Value checked for change.
14316 * @param i1 Static value used for concatenation only.
14317 * @param v2 Value checked for change.
14318 * @param suffix Static value used for concatenation only.
14319 * @codeGenApi
14320 */
14321export declare function ɵɵstyleMapInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): void;
14322
14323/**
14324 *
14325 * Update an interpolated style on an element with 4 bound values surrounded by text.
14326 *
14327 * Used when the value passed to a property has 4 interpolated values in it:
14328 *
14329 * ```html
14330 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}suffix"></div>
14331 * ```
14332 *
14333 * Its compiled representation is:
14334 *
14335 * ```ts
14336 * ɵɵstyleMapInterpolate4(
14337 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, 'suffix');
14338 * ```
14339 *
14340 * @param prefix Static value used for concatenation only.
14341 * @param v0 Value checked for change.
14342 * @param i0 Static value used for concatenation only.
14343 * @param v1 Value checked for change.
14344 * @param i1 Static value used for concatenation only.
14345 * @param v2 Value checked for change.
14346 * @param i2 Static value used for concatenation only.
14347 * @param v3 Value checked for change.
14348 * @param suffix Static value used for concatenation only.
14349 * @codeGenApi
14350 */
14351export declare function ɵɵstyleMapInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): void;
14352
14353/**
14354 *
14355 * Update an interpolated style on an element with 5 bound values surrounded by text.
14356 *
14357 * Used when the value passed to a property has 5 interpolated values in it:
14358 *
14359 * ```html
14360 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}suffix"></div>
14361 * ```
14362 *
14363 * Its compiled representation is:
14364 *
14365 * ```ts
14366 * ɵɵstyleMapInterpolate5(
14367 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, 'suffix');
14368 * ```
14369 *
14370 * @param prefix Static value used for concatenation only.
14371 * @param v0 Value checked for change.
14372 * @param i0 Static value used for concatenation only.
14373 * @param v1 Value checked for change.
14374 * @param i1 Static value used for concatenation only.
14375 * @param v2 Value checked for change.
14376 * @param i2 Static value used for concatenation only.
14377 * @param v3 Value checked for change.
14378 * @param i3 Static value used for concatenation only.
14379 * @param v4 Value checked for change.
14380 * @param suffix Static value used for concatenation only.
14381 * @codeGenApi
14382 */
14383export 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;
14384
14385/**
14386 *
14387 * Update an interpolated style on an element with 6 bound values surrounded by text.
14388 *
14389 * Used when the value passed to a property has 6 interpolated values in it:
14390 *
14391 * ```html
14392 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}};
14393 * key5: {{v5}}suffix"></div>
14394 * ```
14395 *
14396 * Its compiled representation is:
14397 *
14398 * ```ts
14399 * ɵɵstyleMapInterpolate6(
14400 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
14401 * 'suffix');
14402 * ```
14403 *
14404 * @param prefix Static value used for concatenation only.
14405 * @param v0 Value checked for change.
14406 * @param i0 Static value used for concatenation only.
14407 * @param v1 Value checked for change.
14408 * @param i1 Static value used for concatenation only.
14409 * @param v2 Value checked for change.
14410 * @param i2 Static value used for concatenation only.
14411 * @param v3 Value checked for change.
14412 * @param i3 Static value used for concatenation only.
14413 * @param v4 Value checked for change.
14414 * @param i4 Static value used for concatenation only.
14415 * @param v5 Value checked for change.
14416 * @param suffix Static value used for concatenation only.
14417 * @codeGenApi
14418 */
14419export 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;
14420
14421/**
14422 *
14423 * Update an interpolated style on an element with 7 bound values surrounded by text.
14424 *
14425 * Used when the value passed to a property has 7 interpolated values in it:
14426 *
14427 * ```html
14428 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
14429 * key6: {{v6}}suffix"></div>
14430 * ```
14431 *
14432 * Its compiled representation is:
14433 *
14434 * ```ts
14435 * ɵɵstyleMapInterpolate7(
14436 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
14437 * '; key6: ', v6, 'suffix');
14438 * ```
14439 *
14440 * @param prefix Static value used for concatenation only.
14441 * @param v0 Value checked for change.
14442 * @param i0 Static value used for concatenation only.
14443 * @param v1 Value checked for change.
14444 * @param i1 Static value used for concatenation only.
14445 * @param v2 Value checked for change.
14446 * @param i2 Static value used for concatenation only.
14447 * @param v3 Value checked for change.
14448 * @param i3 Static value used for concatenation only.
14449 * @param v4 Value checked for change.
14450 * @param i4 Static value used for concatenation only.
14451 * @param v5 Value checked for change.
14452 * @param i5 Static value used for concatenation only.
14453 * @param v6 Value checked for change.
14454 * @param suffix Static value used for concatenation only.
14455 * @codeGenApi
14456 */
14457export 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;
14458
14459/**
14460 *
14461 * Update an interpolated style on an element with 8 bound values surrounded by text.
14462 *
14463 * Used when the value passed to a property has 8 interpolated values in it:
14464 *
14465 * ```html
14466 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
14467 * key6: {{v6}}; key7: {{v7}}suffix"></div>
14468 * ```
14469 *
14470 * Its compiled representation is:
14471 *
14472 * ```ts
14473 * ɵɵstyleMapInterpolate8(
14474 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
14475 * '; key6: ', v6, '; key7: ', v7, 'suffix');
14476 * ```
14477 *
14478 * @param prefix Static value used for concatenation only.
14479 * @param v0 Value checked for change.
14480 * @param i0 Static value used for concatenation only.
14481 * @param v1 Value checked for change.
14482 * @param i1 Static value used for concatenation only.
14483 * @param v2 Value checked for change.
14484 * @param i2 Static value used for concatenation only.
14485 * @param v3 Value checked for change.
14486 * @param i3 Static value used for concatenation only.
14487 * @param v4 Value checked for change.
14488 * @param i4 Static value used for concatenation only.
14489 * @param v5 Value checked for change.
14490 * @param i5 Static value used for concatenation only.
14491 * @param v6 Value checked for change.
14492 * @param i6 Static value used for concatenation only.
14493 * @param v7 Value checked for change.
14494 * @param suffix Static value used for concatenation only.
14495 * @codeGenApi
14496 */
14497export 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;
14498
14499/**
14500 * Update an interpolated style on an element with 9 or more bound values surrounded by text.
14501 *
14502 * Used when the number of interpolated values exceeds 8.
14503 *
14504 * ```html
14505 * <div
14506 * class="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
14507 * key6: {{v6}}; key7: {{v7}}; key8: {{v8}}; key9: {{v9}}suffix"></div>
14508 * ```
14509 *
14510 * Its compiled representation is:
14511 *
14512 * ```ts
14513 * ɵɵstyleMapInterpolateV(
14514 * ['key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
14515 * '; key6: ', v6, '; key7: ', v7, '; key8: ', v8, '; key9: ', v9, 'suffix']);
14516 * ```
14517 *.
14518 * @param values The collection of values and the strings in-between those values, beginning with
14519 * a string prefix and ending with a string suffix.
14520 * (e.g. `['prefix', value0, '; key2: ', value1, '; key2: ', value2, ..., value99, 'suffix']`)
14521 * @codeGenApi
14522 */
14523export declare function ɵɵstyleMapInterpolateV(values: any[]): void;
14524
14525/**
14526 * Update a style binding on an element with the provided value.
14527 *
14528 * If the style value is falsy then it will be removed from the element
14529 * (or assigned a different value depending if there are any styles placed
14530 * on the element with `styleMap` or any static styles that are
14531 * present from when the element was created with `styling`).
14532 *
14533 * Note that the styling element is updated as part of `stylingApply`.
14534 *
14535 * @param prop A valid CSS property.
14536 * @param value New value to write (`null` or an empty string to remove).
14537 * @param suffix Optional suffix. Used with scalar values to add unit such as `px`.
14538 *
14539 * Note that this will apply the provided style value to the host element if this function is called
14540 * within a host binding function.
14541 *
14542 * @codeGenApi
14543 */
14544export declare function ɵɵstyleProp(prop: string, value: string | number | ɵSafeValue | undefined | null, suffix?: string | null): typeof ɵɵstyleProp;
14545
14546
14547/**
14548 *
14549 * Update an interpolated style property on an element with single bound value surrounded by text.
14550 *
14551 * Used when the value passed to a property has 1 interpolated value in it:
14552 *
14553 * ```html
14554 * <div style.color="prefix{{v0}}suffix"></div>
14555 * ```
14556 *
14557 * Its compiled representation is:
14558 *
14559 * ```ts
14560 * ɵɵstylePropInterpolate1(0, 'prefix', v0, 'suffix');
14561 * ```
14562 *
14563 * @param styleIndex Index of style to update. This index value refers to the
14564 * index of the style in the style bindings array that was passed into
14565 * `styling`.
14566 * @param prefix Static value used for concatenation only.
14567 * @param v0 Value checked for change.
14568 * @param suffix Static value used for concatenation only.
14569 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14570 * @returns itself, so that it may be chained.
14571 * @codeGenApi
14572 */
14573export declare function ɵɵstylePropInterpolate1(prop: string, prefix: string, v0: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate1;
14574
14575/**
14576 *
14577 * Update an interpolated style property on an element with 2 bound values surrounded by text.
14578 *
14579 * Used when the value passed to a property has 2 interpolated values in it:
14580 *
14581 * ```html
14582 * <div style.color="prefix{{v0}}-{{v1}}suffix"></div>
14583 * ```
14584 *
14585 * Its compiled representation is:
14586 *
14587 * ```ts
14588 * ɵɵstylePropInterpolate2(0, 'prefix', v0, '-', v1, 'suffix');
14589 * ```
14590 *
14591 * @param styleIndex Index of style to update. This index value refers to the
14592 * index of the style in the style bindings array that was passed into
14593 * `styling`.
14594 * @param prefix Static value used for concatenation only.
14595 * @param v0 Value checked for change.
14596 * @param i0 Static value used for concatenation only.
14597 * @param v1 Value checked for change.
14598 * @param suffix Static value used for concatenation only.
14599 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14600 * @returns itself, so that it may be chained.
14601 * @codeGenApi
14602 */
14603export declare function ɵɵstylePropInterpolate2(prop: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate2;
14604
14605/**
14606 *
14607 * Update an interpolated style property on an element with 3 bound values surrounded by text.
14608 *
14609 * Used when the value passed to a property has 3 interpolated values in it:
14610 *
14611 * ```html
14612 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
14613 * ```
14614 *
14615 * Its compiled representation is:
14616 *
14617 * ```ts
14618 * ɵɵstylePropInterpolate3(0, 'prefix', v0, '-', v1, '-', v2, 'suffix');
14619 * ```
14620 *
14621 * @param styleIndex Index of style to update. This index value refers to the
14622 * index of the style in the style bindings array that was passed into
14623 * `styling`.
14624 * @param prefix Static value used for concatenation only.
14625 * @param v0 Value checked for change.
14626 * @param i0 Static value used for concatenation only.
14627 * @param v1 Value checked for change.
14628 * @param i1 Static value used for concatenation only.
14629 * @param v2 Value checked for change.
14630 * @param suffix Static value used for concatenation only.
14631 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14632 * @returns itself, so that it may be chained.
14633 * @codeGenApi
14634 */
14635export declare function ɵɵstylePropInterpolate3(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate3;
14636
14637/**
14638 *
14639 * Update an interpolated style property on an element with 4 bound values surrounded by text.
14640 *
14641 * Used when the value passed to a property has 4 interpolated values in it:
14642 *
14643 * ```html
14644 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
14645 * ```
14646 *
14647 * Its compiled representation is:
14648 *
14649 * ```ts
14650 * ɵɵstylePropInterpolate4(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
14651 * ```
14652 *
14653 * @param styleIndex Index of style to update. This index value refers to the
14654 * index of the style in the style bindings array that was passed into
14655 * `styling`.
14656 * @param prefix Static value used for concatenation only.
14657 * @param v0 Value checked for change.
14658 * @param i0 Static value used for concatenation only.
14659 * @param v1 Value checked for change.
14660 * @param i1 Static value used for concatenation only.
14661 * @param v2 Value checked for change.
14662 * @param i2 Static value used for concatenation only.
14663 * @param v3 Value checked for change.
14664 * @param suffix Static value used for concatenation only.
14665 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14666 * @returns itself, so that it may be chained.
14667 * @codeGenApi
14668 */
14669export 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;
14670
14671/**
14672 *
14673 * Update an interpolated style property on an element with 5 bound values surrounded by text.
14674 *
14675 * Used when the value passed to a property has 5 interpolated values in it:
14676 *
14677 * ```html
14678 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
14679 * ```
14680 *
14681 * Its compiled representation is:
14682 *
14683 * ```ts
14684 * ɵɵstylePropInterpolate5(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
14685 * ```
14686 *
14687 * @param styleIndex Index of style to update. This index value refers to the
14688 * index of the style in the style bindings array that was passed into
14689 * `styling`.
14690 * @param prefix Static value used for concatenation only.
14691 * @param v0 Value checked for change.
14692 * @param i0 Static value used for concatenation only.
14693 * @param v1 Value checked for change.
14694 * @param i1 Static value used for concatenation only.
14695 * @param v2 Value checked for change.
14696 * @param i2 Static value used for concatenation only.
14697 * @param v3 Value checked for change.
14698 * @param i3 Static value used for concatenation only.
14699 * @param v4 Value checked for change.
14700 * @param suffix Static value used for concatenation only.
14701 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14702 * @returns itself, so that it may be chained.
14703 * @codeGenApi
14704 */
14705export 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;
14706
14707/**
14708 *
14709 * Update an interpolated style property on an element with 6 bound values surrounded by text.
14710 *
14711 * Used when the value passed to a property has 6 interpolated values in it:
14712 *
14713 * ```html
14714 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
14715 * ```
14716 *
14717 * Its compiled representation is:
14718 *
14719 * ```ts
14720 * ɵɵstylePropInterpolate6(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
14721 * ```
14722 *
14723 * @param styleIndex Index of style to update. This index value refers to the
14724 * index of the style in the style bindings array that was passed into
14725 * `styling`.
14726 * @param prefix Static value used for concatenation only.
14727 * @param v0 Value checked for change.
14728 * @param i0 Static value used for concatenation only.
14729 * @param v1 Value checked for change.
14730 * @param i1 Static value used for concatenation only.
14731 * @param v2 Value checked for change.
14732 * @param i2 Static value used for concatenation only.
14733 * @param v3 Value checked for change.
14734 * @param i3 Static value used for concatenation only.
14735 * @param v4 Value checked for change.
14736 * @param i4 Static value used for concatenation only.
14737 * @param v5 Value checked for change.
14738 * @param suffix Static value used for concatenation only.
14739 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14740 * @returns itself, so that it may be chained.
14741 * @codeGenApi
14742 */
14743export 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;
14744
14745/**
14746 *
14747 * Update an interpolated style property on an element with 7 bound values surrounded by text.
14748 *
14749 * Used when the value passed to a property has 7 interpolated values in it:
14750 *
14751 * ```html
14752 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
14753 * ```
14754 *
14755 * Its compiled representation is:
14756 *
14757 * ```ts
14758 * ɵɵstylePropInterpolate7(
14759 * 0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
14760 * ```
14761 *
14762 * @param styleIndex Index of style to update. This index value refers to the
14763 * index of the style in the style bindings array that was passed into
14764 * `styling`.
14765 * @param prefix Static value used for concatenation only.
14766 * @param v0 Value checked for change.
14767 * @param i0 Static value used for concatenation only.
14768 * @param v1 Value checked for change.
14769 * @param i1 Static value used for concatenation only.
14770 * @param v2 Value checked for change.
14771 * @param i2 Static value used for concatenation only.
14772 * @param v3 Value checked for change.
14773 * @param i3 Static value used for concatenation only.
14774 * @param v4 Value checked for change.
14775 * @param i4 Static value used for concatenation only.
14776 * @param v5 Value checked for change.
14777 * @param i5 Static value used for concatenation only.
14778 * @param v6 Value checked for change.
14779 * @param suffix Static value used for concatenation only.
14780 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14781 * @returns itself, so that it may be chained.
14782 * @codeGenApi
14783 */
14784export 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;
14785
14786/**
14787 *
14788 * Update an interpolated style property on an element with 8 bound values surrounded by text.
14789 *
14790 * Used when the value passed to a property has 8 interpolated values in it:
14791 *
14792 * ```html
14793 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
14794 * ```
14795 *
14796 * Its compiled representation is:
14797 *
14798 * ```ts
14799 * ɵɵstylePropInterpolate8(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6,
14800 * '-', v7, 'suffix');
14801 * ```
14802 *
14803 * @param styleIndex Index of style to update. This index value refers to the
14804 * index of the style in the style bindings array that was passed into
14805 * `styling`.
14806 * @param prefix Static value used for concatenation only.
14807 * @param v0 Value checked for change.
14808 * @param i0 Static value used for concatenation only.
14809 * @param v1 Value checked for change.
14810 * @param i1 Static value used for concatenation only.
14811 * @param v2 Value checked for change.
14812 * @param i2 Static value used for concatenation only.
14813 * @param v3 Value checked for change.
14814 * @param i3 Static value used for concatenation only.
14815 * @param v4 Value checked for change.
14816 * @param i4 Static value used for concatenation only.
14817 * @param v5 Value checked for change.
14818 * @param i5 Static value used for concatenation only.
14819 * @param v6 Value checked for change.
14820 * @param i6 Static value used for concatenation only.
14821 * @param v7 Value checked for change.
14822 * @param suffix Static value used for concatenation only.
14823 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14824 * @returns itself, so that it may be chained.
14825 * @codeGenApi
14826 */
14827export 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;
14828
14829/**
14830 * Update an interpolated style property on an element with 9 or more bound values surrounded by
14831 * text.
14832 *
14833 * Used when the number of interpolated values exceeds 8.
14834 *
14835 * ```html
14836 * <div
14837 * style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix">
14838 * </div>
14839 * ```
14840 *
14841 * Its compiled representation is:
14842 *
14843 * ```ts
14844 * ɵɵstylePropInterpolateV(
14845 * 0, ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
14846 * 'suffix']);
14847 * ```
14848 *
14849 * @param styleIndex Index of style to update. This index value refers to the
14850 * index of the style in the style bindings array that was passed into
14851 * `styling`..
14852 * @param values The collection of values and the strings in-between those values, beginning with
14853 * a string prefix and ending with a string suffix.
14854 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
14855 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14856 * @returns itself, so that it may be chained.
14857 * @codeGenApi
14858 */
14859export declare function ɵɵstylePropInterpolateV(prop: string, values: any[], valueSuffix?: string | null): typeof ɵɵstylePropInterpolateV;
14860
14861/**
14862 * Registers a synthetic host listener (e.g. `(@foo.start)`) on a component or directive.
14863 *
14864 * This instruction is for compatibility purposes and is designed to ensure that a
14865 * synthetic host listener (e.g. `@HostListener('@foo.start')`) properly gets rendered
14866 * in the component's renderer. Normally all host listeners are evaluated with the
14867 * parent component's renderer, but, in the case of animation @triggers, they need
14868 * to be evaluated with the sub component's renderer (because that's where the
14869 * animation triggers are defined).
14870 *
14871 * Do not use this instruction as a replacement for `listener`. This instruction
14872 * only exists to ensure compatibility with the ViewEngine's host binding behavior.
14873 *
14874 * @param eventName Name of the event
14875 * @param listenerFn The function to be called when event emits
14876 * @param useCapture Whether or not to use capture in event listener
14877 * @param eventTargetResolver Function that returns global target information in case this listener
14878 * should be attached to a global object like window, document or body
14879 *
14880 * @codeGenApi
14881 */
14882export declare function ɵɵsyntheticHostListener(eventName: string, listenerFn: (e?: any) => any): typeof ɵɵsyntheticHostListener;
14883
14884/**
14885 * Updates a synthetic host binding (e.g. `[@foo]`) on a component or directive.
14886 *
14887 * This instruction is for compatibility purposes and is designed to ensure that a
14888 * synthetic host binding (e.g. `@HostBinding('@foo')`) properly gets rendered in
14889 * the component's renderer. Normally all host bindings are evaluated with the parent
14890 * component's renderer, but, in the case of animation @triggers, they need to be
14891 * evaluated with the sub component's renderer (because that's where the animation
14892 * triggers are defined).
14893 *
14894 * Do not use this instruction as a replacement for `elementProperty`. This instruction
14895 * only exists to ensure compatibility with the ViewEngine's host binding behavior.
14896 *
14897 * @param index The index of the element to update in the data array
14898 * @param propName Name of property. Because it is going to DOM, this is not subject to
14899 * renaming as part of minification.
14900 * @param value New value to write.
14901 * @param sanitizer An optional function used to sanitize the value.
14902 *
14903 * @codeGenApi
14904 */
14905export declare function ɵɵsyntheticHostProperty<T>(propName: string, value: T | ɵNO_CHANGE, sanitizer?: SanitizerFn | null): typeof ɵɵsyntheticHostProperty;
14906
14907/**
14908 * Creates an LContainer for an ng-template (dynamically-inserted view), e.g.
14909 *
14910 * <ng-template #foo>
14911 * <div></div>
14912 * </ng-template>
14913 *
14914 * @param index The index of the container in the data array
14915 * @param templateFn Inline template
14916 * @param decls The number of nodes, local refs, and pipes for this template
14917 * @param vars The number of bindings for this template
14918 * @param tagName The name of the container element, if applicable
14919 * @param attrsIndex Index of template attributes in the `consts` array.
14920 * @param localRefs Index of the local references in the `consts` array.
14921 * @param localRefExtractor A function which extracts local-refs values from the template.
14922 * Defaults to the current element associated with the local-ref.
14923 *
14924 * @codeGenApi
14925 */
14926export declare function ɵɵtemplate(index: number, templateFn: ComponentTemplate<any> | null, decls: number, vars: number, tagName?: string | null, attrsIndex?: number | null, localRefsIndex?: number | null, localRefExtractor?: LocalRefExtractor): void;
14927
14928/**
14929 * Retrieves `TemplateRef` instance from `Injector` when a local reference is placed on the
14930 * `<ng-template>` element.
14931 *
14932 * @codeGenApi
14933 */
14934export declare function ɵɵtemplateRefExtractor(tNode: TNode, lView: LView): TemplateRef<any> | null;
14935
14936/**
14937 * Create static text node
14938 *
14939 * @param index Index of the node in the data array
14940 * @param value Static string value to write.
14941 *
14942 * @codeGenApi
14943 */
14944export declare function ɵɵtext(index: number, value?: string): void;
14945
14946/**
14947 *
14948 * Update text content with a lone bound value
14949 *
14950 * Used when a text node has 1 interpolated value in it, an no additional text
14951 * surrounds that interpolated value:
14952 *
14953 * ```html
14954 * <div>{{v0}}</div>
14955 * ```
14956 *
14957 * Its compiled representation is:
14958 *
14959 * ```ts
14960 * ɵɵtextInterpolate(v0);
14961 * ```
14962 * @returns itself, so that it may be chained.
14963 * @see textInterpolateV
14964 * @codeGenApi
14965 */
14966export declare function ɵɵtextInterpolate(v0: any): typeof ɵɵtextInterpolate;
14967
14968/**
14969 *
14970 * Update text content with single bound value surrounded by other text.
14971 *
14972 * Used when a text node has 1 interpolated value in it:
14973 *
14974 * ```html
14975 * <div>prefix{{v0}}suffix</div>
14976 * ```
14977 *
14978 * Its compiled representation is:
14979 *
14980 * ```ts
14981 * ɵɵtextInterpolate1('prefix', v0, 'suffix');
14982 * ```
14983 * @returns itself, so that it may be chained.
14984 * @see textInterpolateV
14985 * @codeGenApi
14986 */
14987export declare function ɵɵtextInterpolate1(prefix: string, v0: any, suffix: string): typeof ɵɵtextInterpolate1;
14988
14989/**
14990 *
14991 * Update text content with 2 bound values surrounded by other text.
14992 *
14993 * Used when a text node has 2 interpolated values in it:
14994 *
14995 * ```html
14996 * <div>prefix{{v0}}-{{v1}}suffix</div>
14997 * ```
14998 *
14999 * Its compiled representation is:
15000 *
15001 * ```ts
15002 * ɵɵtextInterpolate2('prefix', v0, '-', v1, 'suffix');
15003 * ```
15004 * @returns itself, so that it may be chained.
15005 * @see textInterpolateV
15006 * @codeGenApi
15007 */
15008export declare function ɵɵtextInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): typeof ɵɵtextInterpolate2;
15009
15010/**
15011 *
15012 * Update text content with 3 bound values surrounded by other text.
15013 *
15014 * Used when a text node has 3 interpolated values in it:
15015 *
15016 * ```html
15017 * <div>prefix{{v0}}-{{v1}}-{{v2}}suffix</div>
15018 * ```
15019 *
15020 * Its compiled representation is:
15021 *
15022 * ```ts
15023 * ɵɵtextInterpolate3(
15024 * 'prefix', v0, '-', v1, '-', v2, 'suffix');
15025 * ```
15026 * @returns itself, so that it may be chained.
15027 * @see textInterpolateV
15028 * @codeGenApi
15029 */
15030export declare function ɵɵtextInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): typeof ɵɵtextInterpolate3;
15031
15032/**
15033 *
15034 * Update text content with 4 bound values surrounded by other text.
15035 *
15036 * Used when a text node has 4 interpolated values in it:
15037 *
15038 * ```html
15039 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix</div>
15040 * ```
15041 *
15042 * Its compiled representation is:
15043 *
15044 * ```ts
15045 * ɵɵtextInterpolate4(
15046 * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
15047 * ```
15048 * @returns itself, so that it may be chained.
15049 * @see ɵɵtextInterpolateV
15050 * @codeGenApi
15051 */
15052export declare function ɵɵtextInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): typeof ɵɵtextInterpolate4;
15053
15054/**
15055 *
15056 * Update text content with 5 bound values surrounded by other text.
15057 *
15058 * Used when a text node has 5 interpolated values in it:
15059 *
15060 * ```html
15061 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix</div>
15062 * ```
15063 *
15064 * Its compiled representation is:
15065 *
15066 * ```ts
15067 * ɵɵtextInterpolate5(
15068 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
15069 * ```
15070 * @returns itself, so that it may be chained.
15071 * @see textInterpolateV
15072 * @codeGenApi
15073 */
15074export 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;
15075
15076/**
15077 *
15078 * Update text content with 6 bound values surrounded by other text.
15079 *
15080 * Used when a text node has 6 interpolated values in it:
15081 *
15082 * ```html
15083 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix</div>
15084 * ```
15085 *
15086 * Its compiled representation is:
15087 *
15088 * ```ts
15089 * ɵɵtextInterpolate6(
15090 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
15091 * ```
15092 *
15093 * @param i4 Static value used for concatenation only.
15094 * @param v5 Value checked for change. @returns itself, so that it may be chained.
15095 * @see textInterpolateV
15096 * @codeGenApi
15097 */
15098export 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;
15099
15100/**
15101 *
15102 * Update text content with 7 bound values surrounded by other text.
15103 *
15104 * Used when a text node has 7 interpolated values in it:
15105 *
15106 * ```html
15107 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix</div>
15108 * ```
15109 *
15110 * Its compiled representation is:
15111 *
15112 * ```ts
15113 * ɵɵtextInterpolate7(
15114 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
15115 * ```
15116 * @returns itself, so that it may be chained.
15117 * @see textInterpolateV
15118 * @codeGenApi
15119 */
15120export 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;
15121
15122/**
15123 *
15124 * Update text content with 8 bound values surrounded by other text.
15125 *
15126 * Used when a text node has 8 interpolated values in it:
15127 *
15128 * ```html
15129 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix</div>
15130 * ```
15131 *
15132 * Its compiled representation is:
15133 *
15134 * ```ts
15135 * ɵɵtextInterpolate8(
15136 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
15137 * ```
15138 * @returns itself, so that it may be chained.
15139 * @see textInterpolateV
15140 * @codeGenApi
15141 */
15142export 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;
15143
15144/**
15145 * Update text content with 9 or more bound values other surrounded by text.
15146 *
15147 * Used when the number of interpolated values exceeds 8.
15148 *
15149 * ```html
15150 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix</div>
15151 * ```
15152 *
15153 * Its compiled representation is:
15154 *
15155 * ```ts
15156 * ɵɵtextInterpolateV(
15157 * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
15158 * 'suffix']);
15159 * ```
15160 *.
15161 * @param values The collection of values and the strings in between those values, beginning with
15162 * a string prefix and ending with a string suffix.
15163 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
15164 *
15165 * @returns itself, so that it may be chained.
15166 * @codeGenApi
15167 */
15168export declare function ɵɵtextInterpolateV(values: any[]): typeof ɵɵtextInterpolateV;
15169
15170/**
15171 * A template tag function for promoting the associated constant literal to a
15172 * TrustedHTML. Interpolation is explicitly not allowed.
15173 *
15174 * @param html constant template literal containing trusted HTML.
15175 * @returns TrustedHTML wrapping `html`.
15176 *
15177 * @security This is a security-sensitive function and should only be used to
15178 * convert constant values of attributes and properties found in
15179 * application-provided Angular templates to TrustedHTML.
15180 *
15181 * @codeGenApi
15182 */
15183export declare function ɵɵtrustConstantHtml(html: TemplateStringsArray): TrustedHTML | string;
15184
15185/**
15186 * A template tag function for promoting the associated constant literal to a
15187 * TrustedScriptURL. Interpolation is explicitly not allowed.
15188 *
15189 * @param url constant template literal containing a trusted script URL.
15190 * @returns TrustedScriptURL wrapping `url`.
15191 *
15192 * @security This is a security-sensitive function and should only be used to
15193 * convert constant values of attributes and properties found in
15194 * application-provided Angular templates to TrustedScriptURL.
15195 *
15196 * @codeGenApi
15197 */
15198export declare function ɵɵtrustConstantResourceUrl(url: TemplateStringsArray): TrustedScriptURL | string;
15199
15200
15201/**
15202 * Validation function invoked at runtime for each binding that might potentially
15203 * represent a security-sensitive attribute of an <iframe>.
15204 * See `IFRAME_SECURITY_SENSITIVE_ATTRS` in the
15205 * `packages/compiler/src/schema/dom_security_schema.ts` script for the full list
15206 * of such attributes.
15207 *
15208 * @codeGenApi
15209 */
15210export declare function ɵɵvalidateIframeAttribute(attrValue: any, tagName: string, attrName: string): any;
15211
15212/**
15213 * Creates new QueryList, stores the reference in LView and returns QueryList.
15214 *
15215 * @param predicate The type for which the query will search
15216 * @param flags Flags associated with the query
15217 * @param read What to save in the query
15218 *
15219 * @codeGenApi
15220 */
15221export declare function ɵɵviewQuery<T>(predicate: ProviderToken<unknown> | string[], flags: QueryFlags, read?: any): void;
15222
15223export { }