UNPKG

518 kBTypeScriptView Raw
1/**
2 * @license Angular v10.0.8
3 * (c) 2010-2020 Google LLC. https://angular.io/
4 * License: MIT
5 */
6
7import { Observable } from 'rxjs';
8import { Subject } from 'rxjs';
9import { Subscription } from 'rxjs';
10
11/**
12 * @description
13 *
14 * Represents an abstract class `T`, if applied to a concrete class it would stop being
15 * instantiatable.
16 *
17 * @publicApi
18 */
19export declare interface AbstractType<T> extends Function {
20 prototype: T;
21}
22
23/**
24 * @description
25 * A lifecycle hook that is called after the default change detector has
26 * completed checking all content of a directive.
27 *
28 * @see `AfterViewChecked`
29 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
30 *
31 * @usageNotes
32 * The following snippet shows how a component can implement this interface to
33 * define its own after-check functionality.
34 *
35 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentChecked'}
36 *
37 * @publicApi
38 */
39export declare interface AfterContentChecked {
40 /**
41 * A callback method that is invoked immediately after the
42 * default change detector has completed checking all of the directive's
43 * content.
44 */
45 ngAfterContentChecked(): void;
46}
47
48/**
49 * @description
50 * A lifecycle hook that is called after Angular has fully initialized
51 * all content of a directive.
52 * Define an `ngAfterContentInit()` method to handle any additional initialization tasks.
53 *
54 * @see `OnInit`
55 * @see `AfterViewInit`
56 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
57 *
58 * @usageNotes
59 * The following snippet shows how a component can implement this interface to
60 * define its own content initialization method.
61 *
62 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterContentInit'}
63 *
64 * @publicApi
65 */
66export declare interface AfterContentInit {
67 /**
68 * A callback method that is invoked immediately after
69 * Angular has completed initialization of all of the directive's
70 * content.
71 * It is invoked only once when the directive is instantiated.
72 */
73 ngAfterContentInit(): void;
74}
75
76/**
77 * @description
78 * A lifecycle hook that is called after the default change detector has
79 * completed checking a component's view for changes.
80 *
81 * @see `AfterContentChecked`
82 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
83 *
84 * @usageNotes
85 * The following snippet shows how a component can implement this interface to
86 * define its own after-check functionality.
87 *
88 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewChecked'}
89 *
90 * @publicApi
91 */
92export declare interface AfterViewChecked {
93 /**
94 * A callback method that is invoked immediately after the
95 * default change detector has completed one change-check cycle
96 * for a component's view.
97 */
98 ngAfterViewChecked(): void;
99}
100
101/**
102 * @description
103 * A lifecycle hook that is called after Angular has fully initialized
104 * a component's view.
105 * Define an `ngAfterViewInit()` method to handle any additional initialization tasks.
106 *
107 * @see `OnInit`
108 * @see `AfterContentInit`
109 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
110 *
111 * @usageNotes
112 * The following snippet shows how a component can implement this interface to
113 * define its own view initialization method.
114 *
115 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='AfterViewInit'}
116 *
117 * @publicApi
118 */
119export declare interface AfterViewInit {
120 /**
121 * A callback method that is invoked immediately after
122 * Angular has completed initialization of a component's view.
123 * It is invoked only once when the view is instantiated.
124 *
125 */
126 ngAfterViewInit(): void;
127}
128
129/**
130 * A DI token that you can use to create a virtual [provider](guide/glossary#provider)
131 * that will populate the `entryComponents` field of components and NgModules
132 * based on its `useValue` property value.
133 * All components that are referenced in the `useValue` value (either directly
134 * or in a nested array or map) are added to the `entryComponents` property.
135 *
136 * @usageNotes
137 *
138 * The following example shows how the router can populate the `entryComponents`
139 * field of an NgModule based on a router configuration that refers
140 * to components.
141 *
142 * ```typescript
143 * // helper function inside the router
144 * function provideRoutes(routes) {
145 * return [
146 * {provide: ROUTES, useValue: routes},
147 * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true}
148 * ];
149 * }
150 *
151 * // user code
152 * let routes = [
153 * {path: '/root', component: RootComp},
154 * {path: '/teams', component: TeamsComp}
155 * ];
156 *
157 * @NgModule({
158 * providers: [provideRoutes(routes)]
159 * })
160 * class ModuleWithRoutes {}
161 * ```
162 *
163 * @publicApi
164 * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.
165 */
166export declare const ANALYZE_FOR_ENTRY_COMPONENTS: InjectionToken<any>;
167
168/**
169 * A [DI token](guide/glossary#di-token "DI token definition") that provides a set of callbacks to
170 * be called for every component that is bootstrapped.
171 *
172 * Each callback must take a `ComponentRef` instance and return nothing.
173 *
174 * `(componentRef: ComponentRef) => void`
175 *
176 * @publicApi
177 */
178export declare const APP_BOOTSTRAP_LISTENER: InjectionToken<((compRef: ComponentRef<any>) => void)[]>;
179
180/**
181 * A [DI token](guide/glossary#di-token "DI token definition") representing a unique string ID, used
182 * primarily for prefixing application attributes and CSS styles when
183 * {@link ViewEncapsulation#Emulated ViewEncapsulation.Emulated} is being used.
184 *
185 * BY default, the value is randomly generated and assigned to the application by Angular.
186 * To provide a custom ID value, use a DI provider <!-- TODO: provider --> to configure
187 * the root {@link Injector} that uses this token.
188 *
189 * @publicApi
190 */
191export declare const APP_ID: InjectionToken<string>;
192
193/**
194 * A [DI token](guide/glossary#di-token "DI token definition") that you can use to provide
195 * one or more initialization functions.
196 *
197 * The provided functions are injected at application startup and executed during
198 * app initialization. If any of these functions returns a Promise, initialization
199 * does not complete until the Promise is resolved.
200 *
201 * You can, for example, create a factory function that loads language data
202 * or an external configuration, and provide that function to the `APP_INITIALIZER` token.
203 * The function is executed during the application bootstrap process,
204 * and the needed data is available on startup.
205 *
206 * @see `ApplicationInitStatus`
207 *
208 * @publicApi
209 */
210export declare const APP_INITIALIZER: InjectionToken<(() => void)[]>;
211
212/**
213 * A class that reflects the state of running {@link APP_INITIALIZER} functions.
214 *
215 * @publicApi
216 */
217export declare class ApplicationInitStatus {
218 private appInits;
219 private resolve;
220 private reject;
221 private initialized;
222 readonly donePromise: Promise<any>;
223 readonly done = false;
224 constructor(appInits: (() => any)[]);
225}
226
227/**
228 * Configures the root injector for an app with
229 * providers of `@angular/core` dependencies that `ApplicationRef` needs
230 * to bootstrap components.
231 *
232 * Re-exported by `BrowserModule`, which is included automatically in the root
233 * `AppModule` when you create a new app with the CLI `new` command.
234 *
235 * @publicApi
236 */
237export declare class ApplicationModule {
238 constructor(appRef: ApplicationRef);
239}
240
241/**
242 * A reference to an Angular application running on a page.
243 *
244 * @usageNotes
245 *
246 * {@a is-stable-examples}
247 * ### isStable examples and caveats
248 *
249 * Note two important points about `isStable`, demonstrated in the examples below:
250 * - the application will never be stable if you start any kind
251 * of recurrent asynchronous task when the application starts
252 * (for example for a polling process, started with a `setInterval`, a `setTimeout`
253 * or using RxJS operators like `interval`);
254 * - the `isStable` Observable runs outside of the Angular zone.
255 *
256 * Let's imagine that you start a recurrent task
257 * (here incrementing a counter, using RxJS `interval`),
258 * and at the same time subscribe to `isStable`.
259 *
260 * ```
261 * constructor(appRef: ApplicationRef) {
262 * appRef.isStable.pipe(
263 * filter(stable => stable)
264 * ).subscribe(() => console.log('App is stable now');
265 * interval(1000).subscribe(counter => console.log(counter));
266 * }
267 * ```
268 * In this example, `isStable` will never emit `true`,
269 * and the trace "App is stable now" will never get logged.
270 *
271 * If you want to execute something when the app is stable,
272 * you have to wait for the application to be stable
273 * before starting your polling process.
274 *
275 * ```
276 * constructor(appRef: ApplicationRef) {
277 * appRef.isStable.pipe(
278 * first(stable => stable),
279 * tap(stable => console.log('App is stable now')),
280 * switchMap(() => interval(1000))
281 * ).subscribe(counter => console.log(counter));
282 * }
283 * ```
284 * In this example, the trace "App is stable now" will be logged
285 * and then the counter starts incrementing every second.
286 *
287 * Note also that this Observable runs outside of the Angular zone,
288 * which means that the code in the subscription
289 * to this Observable will not trigger the change detection.
290 *
291 * Let's imagine that instead of logging the counter value,
292 * you update a field of your component
293 * and display it in its template.
294 *
295 * ```
296 * constructor(appRef: ApplicationRef) {
297 * appRef.isStable.pipe(
298 * first(stable => stable),
299 * switchMap(() => interval(1000))
300 * ).subscribe(counter => this.value = counter);
301 * }
302 * ```
303 * As the `isStable` Observable runs outside the zone,
304 * the `value` field will be updated properly,
305 * but the template will not be refreshed!
306 *
307 * You'll have to manually trigger the change detection to update the template.
308 *
309 * ```
310 * constructor(appRef: ApplicationRef, cd: ChangeDetectorRef) {
311 * appRef.isStable.pipe(
312 * first(stable => stable),
313 * switchMap(() => interval(1000))
314 * ).subscribe(counter => {
315 * this.value = counter;
316 * cd.detectChanges();
317 * });
318 * }
319 * ```
320 *
321 * Or make the subscription callback run inside the zone.
322 *
323 * ```
324 * constructor(appRef: ApplicationRef, zone: NgZone) {
325 * appRef.isStable.pipe(
326 * first(stable => stable),
327 * switchMap(() => interval(1000))
328 * ).subscribe(counter => zone.run(() => this.value = counter));
329 * }
330 * ```
331 *
332 * @publicApi
333 */
334export declare class ApplicationRef {
335 private _zone;
336 private _console;
337 private _injector;
338 private _exceptionHandler;
339 private _componentFactoryResolver;
340 private _initStatus;
341 private _views;
342 private _runningTick;
343 private _enforceNoNewChanges;
344 private _stable;
345 /**
346 * Get a list of component types registered to this application.
347 * This list is populated even before the component is created.
348 */
349 readonly componentTypes: Type<any>[];
350 /**
351 * Get a list of components registered to this application.
352 */
353 readonly components: ComponentRef<any>[];
354 /**
355 * Returns an Observable that indicates when the application is stable or unstable.
356 *
357 * @see [Usage notes](#is-stable-examples) for examples and caveats when using this API.
358 */
359 readonly isStable: Observable<boolean>;
360 /**
361 * Bootstrap a new component at the root level of the application.
362 *
363 * @usageNotes
364 * ### Bootstrap process
365 *
366 * When bootstrapping a new root component into an application, Angular mounts the
367 * specified application component onto DOM elements identified by the componentType's
368 * selector and kicks off automatic change detection to finish initializing the component.
369 *
370 * Optionally, a component can be mounted onto a DOM element that does not match the
371 * componentType's selector.
372 *
373 * ### Example
374 * {@example core/ts/platform/platform.ts region='longform'}
375 */
376 bootstrap<C>(componentOrFactory: ComponentFactory<C> | Type<C>, rootSelectorOrNode?: string | any): ComponentRef<C>;
377 /**
378 * Invoke this method to explicitly process change detection and its side-effects.
379 *
380 * In development mode, `tick()` also performs a second change detection cycle to ensure that no
381 * further changes are detected. If additional changes are picked up during this second cycle,
382 * bindings in the app have side-effects that cannot be resolved in a single change detection
383 * pass.
384 * In this case, Angular throws an error, since an Angular application can only have one change
385 * detection pass during which all change detection must complete.
386 */
387 tick(): void;
388 /**
389 * Attaches a view so that it will be dirty checked.
390 * The view will be automatically detached when it is destroyed.
391 * This will throw if the view is already attached to a ViewContainer.
392 */
393 attachView(viewRef: ViewRef): void;
394 /**
395 * Detaches a view from dirty checking again.
396 */
397 detachView(viewRef: ViewRef): void;
398 private _loadComponent;
399 private _unloadComponent;
400 /**
401 * Returns the number of attached views.
402 */
403 get viewCount(): number;
404}
405
406/**
407 * @publicApi
408 */
409export declare function asNativeElements(debugEls: DebugElement[]): any;
410
411/**
412 * Checks that there is currently a platform that contains the given token as a provider.
413 *
414 * @publicApi
415 */
416export declare function assertPlatform(requiredToken: any): PlatformRef;
417
418/**
419 * Type of the Attribute metadata.
420 *
421 * @publicApi
422 */
423export declare interface Attribute {
424 /**
425 * The name of the attribute whose value can be injected.
426 */
427 attributeName: string;
428}
429
430/**
431 * Attribute decorator and metadata.
432 *
433 * @Annotation
434 * @publicApi
435 */
436export declare const Attribute: AttributeDecorator;
437
438/**
439 * Type of the Attribute decorator / constructor function.
440 *
441 * @publicApi
442 */
443export declare interface AttributeDecorator {
444 /**
445 * Parameter decorator for a directive constructor that designates
446 * a host-element attribute whose value is injected as a constant string literal.
447 *
448 * @usageNotes
449 *
450 * Suppose we have an `<input>` element and want to know its `type`.
451 *
452 * ```html
453 * <input type="text">
454 * ```
455 *
456 * The following example uses the decorator to inject the string literal `text` in a directive.
457 *
458 * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}
459 *
460 * The following example uses the decorator in a component constructor.
461 *
462 * {@example core/ts/metadata/metadata.ts region='attributeFactory'}
463 *
464 */
465 (name: string): any;
466 new (name: string): Attribute;
467}
468
469declare interface BindingDef {
470 flags: ɵBindingFlags;
471 ns: string | null;
472 name: string | null;
473 nonMinifiedName: string | null;
474 securityContext: SecurityContext | null;
475 suffix: string | null;
476}
477
478/**
479 * Provides additional options to the bootstraping process.
480 *
481 *
482 */
483declare interface BootstrapOptions {
484 /**
485 * Optionally specify which `NgZone` should be used.
486 *
487 * - Provide your own `NgZone` instance.
488 * - `zone.js` - Use default `NgZone` which requires `Zone.js`.
489 * - `noop` - Use `NoopNgZone` which does nothing.
490 */
491 ngZone?: NgZone | 'zone.js' | 'noop';
492 /**
493 * Optionally specify coalescing event change detections or not.
494 * Consider the following case.
495 *
496 * <div (click)="doSomething()">
497 * <button (click)="doSomethingElse()"></button>
498 * </div>
499 *
500 * When button is clicked, because of the event bubbling, both
501 * event handlers will be called and 2 change detections will be
502 * triggered. We can colesce such kind of events to only trigger
503 * change detection only once.
504 *
505 * By default, this option will be false. So the events will not be
506 * coalesced and the change detection will be triggered multiple times.
507 * And if this option be set to true, the change detection will be
508 * triggered async by scheduling a animation frame. So in the case above,
509 * the change detection will only be trigged once.
510 */
511 ngZoneEventCoalescing?: boolean;
512}
513
514
515/**
516 * The strategy that the default change detector uses to detect changes.
517 * When set, takes effect the next time change detection is triggered.
518 *
519 * @see {@link ChangeDetectorRef#usage-notes Change detection usage}
520 *
521 * @publicApi
522 */
523export declare enum ChangeDetectionStrategy {
524 /**
525 * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated
526 * until reactivated by setting the strategy to `Default` (`CheckAlways`).
527 * Change detection can still be explicitly invoked.
528 * This strategy applies to all child directives and cannot be overridden.
529 */
530 OnPush = 0,
531 /**
532 * Use the default `CheckAlways` strategy, in which change detection is automatic until
533 * explicitly deactivated.
534 */
535 Default = 1
536}
537
538/**
539 * Base class that provides change detection functionality.
540 * A change-detection tree collects all views that are to be checked for changes.
541 * Use the methods to add and remove views from the tree, initiate change-detection,
542 * and explicitly mark views as _dirty_, meaning that they have changed and need to be re-rendered.
543 *
544 * @see [Using change detection hooks](guide/lifecycle-hooks#using-change-detection-hooks)
545 * @see [Defining custom change detection](guide/lifecycle-hooks#defining-custom-change-detection)
546 *
547 * @usageNotes
548 *
549 * The following examples demonstrate how to modify default change-detection behavior
550 * to perform explicit detection when needed.
551 *
552 * ### Use `markForCheck()` with `CheckOnce` strategy
553 *
554 * The following example sets the `OnPush` change-detection strategy for a component
555 * (`CheckOnce`, rather than the default `CheckAlways`), then forces a second check
556 * after an interval. See [live demo](http://plnkr.co/edit/GC512b?p=preview).
557 *
558 * <code-example path="core/ts/change_detect/change-detection.ts"
559 * region="mark-for-check"></code-example>
560 *
561 * ### Detach change detector to limit how often check occurs
562 *
563 * The following example defines a component with a large list of read-only data
564 * that is expected to change constantly, many times per second.
565 * To improve performance, we want to check and update the list
566 * less often than the changes actually occur. To do that, we detach
567 * the component's change detector and perform an explicit local check every five seconds.
568 *
569 * <code-example path="core/ts/change_detect/change-detection.ts" region="detach"></code-example>
570 *
571 *
572 * ### Reattaching a detached component
573 *
574 * The following example creates a component displaying live data.
575 * The component detaches its change detector from the main change detector tree
576 * when the `live` property is set to false, and reattaches it when the property
577 * becomes true.
578 *
579 * <code-example path="core/ts/change_detect/change-detection.ts" region="reattach"></code-example>
580 *
581 * @publicApi
582 */
583export declare abstract class ChangeDetectorRef {
584 /**
585 * When a view uses the {@link ChangeDetectionStrategy#OnPush OnPush} (checkOnce)
586 * change detection strategy, explicitly marks the view as changed so that
587 * it can be checked again.
588 *
589 * Components are normally marked as dirty (in need of rerendering) when inputs
590 * have changed or events have fired in the view. Call this method to ensure that
591 * a component is checked even if these triggers have not occured.
592 *
593 * <!-- TODO: Add a link to a chapter on OnPush components -->
594 *
595 */
596 abstract markForCheck(): void;
597 /**
598 * Detaches this view from the change-detection tree.
599 * A detached view is not checked until it is reattached.
600 * Use in combination with `detectChanges()` to implement local change detection checks.
601 *
602 * Detached views are not checked during change detection runs until they are
603 * re-attached, even if they are marked as dirty.
604 *
605 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
606 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
607 *
608 */
609 abstract detach(): void;
610 /**
611 * Checks this view and its children. Use in combination with {@link ChangeDetectorRef#detach
612 * detach}
613 * to implement local change detection checks.
614 *
615 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
616 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
617 *
618 */
619 abstract detectChanges(): void;
620 /**
621 * Checks the change detector and its children, and throws if any changes are detected.
622 *
623 * Use in development mode to verify that running change detection doesn't introduce
624 * other changes.
625 */
626 abstract checkNoChanges(): void;
627 /**
628 * Re-attaches the previously detached view to the change detection tree.
629 * Views are attached to the tree by default.
630 *
631 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
632 *
633 */
634 abstract reattach(): void;
635}
636
637declare const CHILD_HEAD = 13;
638
639declare const CHILD_TAIL = 14;
640
641/**
642 * Configures the `Injector` to return an instance of `useClass` for a token.
643 * @see ["Dependency Injection Guide"](guide/dependency-injection).
644 *
645 * @usageNotes
646 *
647 * {@example core/di/ts/provider_spec.ts region='ClassProvider'}
648 *
649 * Note that following two providers are not equal:
650 *
651 * {@example core/di/ts/provider_spec.ts region='ClassProviderDifference'}
652 *
653 * ### Multi-value example
654 *
655 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
656 *
657 * @publicApi
658 */
659export declare interface ClassProvider extends ClassSansProvider {
660 /**
661 * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
662 */
663 provide: any;
664 /**
665 * When true, injector returns an array of instances. This is useful to allow multiple
666 * providers spread across many files to provide configuration information to a common token.
667 */
668 multi?: boolean;
669}
670
671/**
672 * Configures the `Injector` to return a value by invoking a `useClass` function.
673 * Base for `ClassProvider` decorator.
674 *
675 * @see ["Dependency Injection Guide"](guide/dependency-injection).
676 *
677 * @publicApi
678 */
679export declare interface ClassSansProvider {
680 /**
681 * Class to instantiate for the `token`.
682 */
683 useClass: Type<any>;
684}
685
686declare const CLEANUP = 7;
687
688/**
689 * @deprecated v4.0.0 - Use IterableChangeRecord instead.
690 * @publicApi
691 */
692export declare interface CollectionChangeRecord<V> extends IterableChangeRecord<V> {
693}
694
695/**
696 * Marks that the next string is for comment.
697 *
698 * See `I18nMutateOpCodes` documentation.
699 */
700declare const COMMENT_MARKER: COMMENT_MARKER;
701
702declare interface COMMENT_MARKER {
703 marker: 'comment';
704}
705
706/**
707 * Compile an Angular injectable according to its `Injectable` metadata, and patch the resulting
708 * injectable def (`ɵprov`) onto the injectable type.
709 */
710declare function compileInjectable(type: Type<any>, srcMeta?: Injectable): void;
711
712/**
713 * Low-level service for running the angular compiler during runtime
714 * to create {@link ComponentFactory}s, which
715 * can later be used to create and render a Component instance.
716 *
717 * Each `@NgModule` provides an own `Compiler` to its injector,
718 * that will use the directives/pipes of the ng module for compilation
719 * of components.
720 *
721 * @publicApi
722 */
723export declare class Compiler {
724 /**
725 * Compiles the given NgModule and all of its components. All templates of the components listed
726 * in `entryComponents` have to be inlined.
727 */
728 compileModuleSync: <T>(moduleType: Type<T>) => NgModuleFactory<T>;
729 /**
730 * Compiles the given NgModule and all of its components
731 */
732 compileModuleAsync: <T>(moduleType: Type<T>) => Promise<NgModuleFactory<T>>;
733 /**
734 * Same as {@link #compileModuleSync} but also creates ComponentFactories for all components.
735 */
736 compileModuleAndAllComponentsSync: <T>(moduleType: Type<T>) => ModuleWithComponentFactories<T>;
737 /**
738 * Same as {@link #compileModuleAsync} but also creates ComponentFactories for all components.
739 */
740 compileModuleAndAllComponentsAsync: <T>(moduleType: Type<T>) => Promise<ModuleWithComponentFactories<T>>;
741 /**
742 * Clears all caches.
743 */
744 clearCache(): void;
745 /**
746 * Clears the cache for the given component/ngModule.
747 */
748 clearCacheFor(type: Type<any>): void;
749 /**
750 * Returns the id for a given NgModule, if one is defined and known to the compiler.
751 */
752 getModuleId(moduleType: Type<any>): string | undefined;
753}
754
755/**
756 * Token to provide CompilerOptions in the platform injector.
757 *
758 * @publicApi
759 */
760export declare const COMPILER_OPTIONS: InjectionToken<CompilerOptions[]>;
761
762/**
763 * A factory for creating a Compiler
764 *
765 * @publicApi
766 */
767export declare abstract class CompilerFactory {
768 abstract createCompiler(options?: CompilerOptions[]): Compiler;
769}
770
771/**
772 * Options for creating a compiler
773 *
774 * @publicApi
775 */
776export declare type CompilerOptions = {
777 useJit?: boolean;
778 defaultEncapsulation?: ViewEncapsulation;
779 providers?: StaticProvider[];
780 missingTranslation?: MissingTranslationStrategy;
781 preserveWhitespaces?: boolean;
782};
783
784/**
785 * Supplies configuration metadata for an Angular component.
786 *
787 * @publicApi
788 */
789export declare interface Component extends Directive {
790 /**
791 * The change-detection strategy to use for this component.
792 *
793 * When a component is instantiated, Angular creates a change detector,
794 * which is responsible for propagating the component's bindings.
795 * The strategy is one of:
796 * - `ChangeDetectionStrategy#OnPush` sets the strategy to `CheckOnce` (on demand).
797 * - `ChangeDetectionStrategy#Default` sets the strategy to `CheckAlways`.
798 */
799 changeDetection?: ChangeDetectionStrategy;
800 /**
801 * Defines the set of injectable objects that are visible to its view DOM children.
802 * See [example](#injecting-a-class-with-a-view-provider).
803 *
804 */
805 viewProviders?: Provider[];
806 /**
807 * The module ID of the module that contains the component.
808 * The component must be able to resolve relative URLs for templates and styles.
809 * SystemJS exposes the `__moduleName` variable within each module.
810 * In CommonJS, this can be set to `module.id`.
811 *
812 */
813 moduleId?: string;
814 /**
815 * The relative path or absolute URL of a template file for an Angular component.
816 * If provided, do not supply an inline template using `template`.
817 *
818 */
819 templateUrl?: string;
820 /**
821 * An inline template for an Angular component. If provided,
822 * do not supply a template file using `templateUrl`.
823 *
824 */
825 template?: string;
826 /**
827 * One or more relative paths or absolute URLs for files containing CSS stylesheets to use
828 * in this component.
829 */
830 styleUrls?: string[];
831 /**
832 * One or more inline CSS stylesheets to use
833 * in this component.
834 */
835 styles?: string[];
836 /**
837 * One or more animation `trigger()` calls, containing
838 * `state()` and `transition()` definitions.
839 * See the [Animations guide](/guide/animations) and animations API documentation.
840 *
841 */
842 animations?: any[];
843 /**
844 * An encapsulation policy for the template and CSS styles. One of:
845 * - `ViewEncapsulation.Native`: Deprecated. Use `ViewEncapsulation.ShadowDom` instead.
846 * - `ViewEncapsulation.Emulated`: Use shimmed CSS that
847 * emulates the native behavior.
848 * - `ViewEncapsulation.None`: Use global CSS without any
849 * encapsulation.
850 * - `ViewEncapsulation.ShadowDom`: Use Shadow DOM v1 to encapsulate styles.
851 *
852 * If not supplied, the value is taken from `CompilerOptions`. The default compiler option is
853 * `ViewEncapsulation.Emulated`.
854 *
855 * If the policy is set to `ViewEncapsulation.Emulated` and the component has no `styles`
856 * or `styleUrls` specified, the policy is automatically switched to `ViewEncapsulation.None`.
857 */
858 encapsulation?: ViewEncapsulation;
859 /**
860 * Overrides the default encapsulation start and end delimiters (`{{` and `}}`)
861 */
862 interpolation?: [string, string];
863 /**
864 * A set of components that should be compiled along with
865 * this component. For each component listed here,
866 * Angular creates a {@link ComponentFactory} and stores it in the
867 * {@link ComponentFactoryResolver}.
868 * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.
869 */
870 entryComponents?: Array<Type<any> | any[]>;
871 /**
872 * True to preserve or false to remove potentially superfluous whitespace characters
873 * from the compiled template. Whitespace characters are those matching the `\s`
874 * character class in JavaScript regular expressions. Default is false, unless
875 * overridden in compiler options.
876 */
877 preserveWhitespaces?: boolean;
878}
879
880/**
881 * Component decorator and metadata.
882 *
883 * @Annotation
884 * @publicApi
885 */
886export declare const Component: ComponentDecorator;
887
888/**
889 * Component decorator interface
890 *
891 * @publicApi
892 */
893export declare interface ComponentDecorator {
894 /**
895 * Decorator that marks a class as an Angular component and provides configuration
896 * metadata that determines how the component should be processed,
897 * instantiated, and used at runtime.
898 *
899 * Components are the most basic UI building block of an Angular app.
900 * An Angular app contains a tree of Angular components.
901 *
902 * Angular components are a subset of directives, always associated with a template.
903 * Unlike other directives, only one component can be instantiated for a given element in a
904 * template.
905 *
906 * A component must belong to an NgModule in order for it to be available
907 * to another component or application. To make it a member of an NgModule,
908 * list it in the `declarations` field of the `NgModule` metadata.
909 *
910 * Note that, in addition to these options for configuring a directive,
911 * you can control a component's runtime behavior by implementing
912 * life-cycle hooks. For more information, see the
913 * [Lifecycle Hooks](guide/lifecycle-hooks) guide.
914 *
915 * @usageNotes
916 *
917 * ### Setting component inputs
918 *
919 * The following example creates a component with two data-bound properties,
920 * specified by the `inputs` value.
921 *
922 * <code-example path="core/ts/metadata/directives.ts" region="component-input"></code-example>
923 *
924 *
925 * ### Setting component outputs
926 *
927 * The following example shows two event emitters that emit on an interval. One
928 * emits an output every second, while the other emits every five seconds.
929 *
930 * {@example core/ts/metadata/directives.ts region='component-output-interval'}
931 *
932 * ### Injecting a class with a view provider
933 *
934 * The following simple example injects a class into a component
935 * using the view provider specified in component metadata:
936 *
937 * ```ts
938 * class Greeter {
939 * greet(name:string) {
940 * return 'Hello ' + name + '!';
941 * }
942 * }
943 *
944 * @Directive({
945 * selector: 'needs-greeter'
946 * })
947 * class NeedsGreeter {
948 * greeter:Greeter;
949 *
950 * constructor(greeter:Greeter) {
951 * this.greeter = greeter;
952 * }
953 * }
954 *
955 * @Component({
956 * selector: 'greet',
957 * viewProviders: [
958 * Greeter
959 * ],
960 * template: `<needs-greeter></needs-greeter>`
961 * })
962 * class HelloWorld {
963 * }
964 *
965 * ```
966 *
967 * ### Preserving whitespace
968 *
969 * Removing whitespace can greatly reduce AOT-generated code size and speed up view creation.
970 * As of Angular 6, the default for `preserveWhitespaces` is false (whitespace is removed).
971 * To change the default setting for all components in your application, set
972 * the `preserveWhitespaces` option of the AOT compiler.
973 *
974 * By default, the AOT compiler removes whitespace characters as follows:
975 * * Trims all whitespaces at the beginning and the end of a template.
976 * * Removes whitespace-only text nodes. For example,
977 *
978 * ```html
979 * <button>Action 1</button> <button>Action 2</button>
980 * ```
981 *
982 * becomes:
983 *
984 * ```html
985 * <button>Action 1</button><button>Action 2</button>
986 * ```
987 *
988 * * Replaces a series of whitespace characters in text nodes with a single space.
989 * For example, `<span>\n some text\n</span>` becomes `<span> some text </span>`.
990 * * Does NOT alter text nodes inside HTML tags such as `<pre>` or `<textarea>`,
991 * where whitespace characters are significant.
992 *
993 * Note that these transformations can influence DOM nodes layout, although impact
994 * should be minimal.
995 *
996 * You can override the default behavior to preserve whitespace characters
997 * in certain fragments of a template. For example, you can exclude an entire
998 * DOM sub-tree by using the `ngPreserveWhitespaces` attribute:
999 *
1000 * ```html
1001 * <div ngPreserveWhitespaces>
1002 * whitespaces are preserved here
1003 * <span> and here </span>
1004 * </div>
1005 * ```
1006 *
1007 * You can force a single space to be preserved in a text node by using `&ngsp;`,
1008 * which is replaced with a space character by Angular's template
1009 * compiler:
1010 *
1011 * ```html
1012 * <a>Spaces</a>&ngsp;<a>between</a>&ngsp;<a>links.</a>
1013 * <!-->compiled to be equivalent to:</>
1014 * <a>Spaces</a> <a>between</a> <a>links.</a>
1015 * ```
1016 *
1017 * Note that sequences of `&ngsp;` are still collapsed to just one space character when
1018 * the `preserveWhitespaces` option is set to `false`.
1019 *
1020 * ```html
1021 * <a>before</a>&ngsp;&ngsp;&ngsp;<a>after</a>
1022 * <!-->compiled to be equivalent to:</>
1023 * <a>Spaces</a> <a>between</a> <a>links.</a>
1024 * ```
1025 *
1026 * To preserve sequences of whitespace characters, use the
1027 * `ngPreserveWhitespaces` attribute.
1028 *
1029 * @Annotation
1030 */
1031 (obj: Component): TypeDecorator;
1032 /**
1033 * See the `Component` decorator.
1034 */
1035 new (obj: Component): Component;
1036}
1037
1038declare interface ComponentDefFeature {
1039 <T>(componentDef: ɵComponentDef<T>): void;
1040 /**
1041 * Marks a feature as something that {@link InheritDefinitionFeature} will execute
1042 * during inheritance.
1043 *
1044 * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers
1045 * identifying the change as a side effect, and the feature will be included in
1046 * every bundle.
1047 */
1048 ngInherit?: true;
1049}
1050
1051/**
1052 * Base class for a factory that can create a component dynamically.
1053 * Instantiate a factory for a given type of component with `resolveComponentFactory()`.
1054 * Use the resulting `ComponentFactory.create()` method to create a component of that type.
1055 *
1056 * @see [Dynamic Components](guide/dynamic-component-loader)
1057 *
1058 * @publicApi
1059 */
1060declare abstract class ComponentFactory<C> {
1061 /**
1062 * The component's HTML selector.
1063 */
1064 abstract get selector(): string;
1065 /**
1066 * The type of component the factory will create.
1067 */
1068 abstract get componentType(): Type<any>;
1069 /**
1070 * Selector for all <ng-content> elements in the component.
1071 */
1072 abstract get ngContentSelectors(): string[];
1073 /**
1074 * The inputs of the component.
1075 */
1076 abstract get inputs(): {
1077 propName: string;
1078 templateName: string;
1079 }[];
1080 /**
1081 * The outputs of the component.
1082 */
1083 abstract get outputs(): {
1084 propName: string;
1085 templateName: string;
1086 }[];
1087 /**
1088 * Creates a new component.
1089 */
1090 abstract create(injector: Injector, projectableNodes?: any[][], rootSelectorOrNode?: string | any, ngModule?: NgModuleRef<any>): ComponentRef<C>;
1091}
1092export { ComponentFactory }
1093export { ComponentFactory as ɵComponentFactory }
1094
1095/**
1096 * A simple registry that maps `Components` to generated `ComponentFactory` classes
1097 * that can be used to create instances of components.
1098 * Use to obtain the factory for a given component type,
1099 * then use the factory's `create()` method to create a component of that type.
1100 *
1101 * @see [Dynamic Components](guide/dynamic-component-loader)
1102 * @publicApi
1103 */
1104export declare abstract class ComponentFactoryResolver {
1105 static NULL: ComponentFactoryResolver;
1106 /**
1107 * Retrieves the factory object that creates a component of the given type.
1108 * @param component The component type.
1109 */
1110 abstract resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1111}
1112
1113declare class ComponentFactoryResolver_2 extends ComponentFactoryResolver {
1114 private ngModule?;
1115 /**
1116 * @param ngModule The NgModuleRef to which all resolved factories are bound.
1117 */
1118 constructor(ngModule?: NgModuleRef<any> | undefined);
1119 resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1120}
1121
1122declare type ComponentInstance = {};
1123
1124/**
1125 * Represents a component created by a `ComponentFactory`.
1126 * Provides access to the component instance and related objects,
1127 * and provides the means of destroying the instance.
1128 *
1129 * @publicApi
1130 */
1131export declare abstract class ComponentRef<C> {
1132 /**
1133 * The host or anchor [element](guide/glossary#element) for this component instance.
1134 */
1135 abstract get location(): ElementRef;
1136 /**
1137 * The [dependency injector](guide/glossary#injector) for this component instance.
1138 */
1139 abstract get injector(): Injector;
1140 /**
1141 * This component instance.
1142 */
1143 abstract get instance(): C;
1144 /**
1145 * The [host view](guide/glossary#view-tree) defined by the template
1146 * for this component instance.
1147 */
1148 abstract get hostView(): ViewRef;
1149 /**
1150 * The change detector for this component instance.
1151 */
1152 abstract get changeDetectorRef(): ChangeDetectorRef;
1153 /**
1154 * The type of this component (as created by a `ComponentFactory` class).
1155 */
1156 abstract get componentType(): Type<any>;
1157 /**
1158 * Destroys the component instance and all of the data structures associated with it.
1159 */
1160 abstract destroy(): void;
1161 /**
1162 * A lifecycle hook that provides additional developer-defined cleanup
1163 * functionality for the component.
1164 * @param callback A handler function that cleans up developer-defined data
1165 * associated with this component. Called when the `destroy()` method is invoked.
1166 */
1167 abstract onDestroy(callback: Function): void;
1168}
1169
1170/**
1171 * Definition of what a template rendering function should look like for a component.
1172 */
1173declare type ComponentTemplate<T> = {
1174 <U extends T>(rf: ɵRenderFlags, ctx: T | U): void;
1175};
1176
1177/**
1178 * Configures the `Injector` to return an instance of a token.
1179 *
1180 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1181 *
1182 * @usageNotes
1183 *
1184 * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
1185 *
1186 * ### Multi-value example
1187 *
1188 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
1189 *
1190 * @publicApi
1191 */
1192export declare interface ConstructorProvider extends ConstructorSansProvider {
1193 /**
1194 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
1195 */
1196 provide: Type<any>;
1197 /**
1198 * When true, injector returns an array of instances. This is useful to allow multiple
1199 * providers spread across many files to provide configuration information to a common token.
1200 */
1201 multi?: boolean;
1202}
1203
1204/**
1205 * Configures the `Injector` to return an instance of a token.
1206 *
1207 * @see ["Dependency Injection Guide"](guide/dependency-injection).
1208 *
1209 * @usageNotes
1210 *
1211 * ```ts
1212 * @Injectable(SomeModule, {deps: []})
1213 * class MyService {}
1214 * ```
1215 *
1216 * @publicApi
1217 */
1218export declare interface ConstructorSansProvider {
1219 /**
1220 * A list of `token`s to be resolved by the injector.
1221 */
1222 deps?: any[];
1223}
1224
1225/**
1226 * Type of the ContentChild metadata.
1227 *
1228 * @publicApi
1229 */
1230export declare type ContentChild = Query;
1231
1232/**
1233 * ContentChild decorator and metadata.
1234 *
1235 *
1236 * @Annotation
1237 *
1238 * @publicApi
1239 */
1240export declare const ContentChild: ContentChildDecorator;
1241
1242/**
1243 * Type of the ContentChild decorator / constructor function.
1244 *
1245 * @publicApi
1246 */
1247export declare interface ContentChildDecorator {
1248 /**
1249 * Parameter decorator that configures a content query.
1250 *
1251 * Use to get the first element or the directive matching the selector from the content DOM.
1252 * If the content DOM changes, and a new child matches the selector,
1253 * the property will be updated.
1254 *
1255 * Content queries are set before the `ngAfterContentInit` callback is called.
1256 *
1257 * Does not retrieve elements or directives that are in other components' templates,
1258 * since a component's template is always a black box to its ancestors.
1259 *
1260 * **Metadata Properties**:
1261 *
1262 * * **selector** - The directive type or the name used for querying.
1263 * * **read** - Used to read a different token from the queried element.
1264 * * **static** - True to resolve query results before change detection runs,
1265 * false to resolve after change detection. Defaults to false.
1266 *
1267 * @usageNotes
1268 *
1269 * {@example core/di/ts/contentChild/content_child_howto.ts region='HowTo'}
1270 *
1271 * ### Example
1272 *
1273 * {@example core/di/ts/contentChild/content_child_example.ts region='Component'}
1274 *
1275 * @Annotation
1276 */
1277 (selector: Type<any> | Function | string, opts?: {
1278 read?: any;
1279 static?: boolean;
1280 }): any;
1281 new (selector: Type<any> | Function | string, opts?: {
1282 read?: any;
1283 static?: boolean;
1284 }): ContentChild;
1285}
1286
1287/**
1288 * Type of the ContentChildren metadata.
1289 *
1290 *
1291 * @Annotation
1292 * @publicApi
1293 */
1294export declare type ContentChildren = Query;
1295
1296/**
1297 * ContentChildren decorator and metadata.
1298 *
1299 *
1300 * @Annotation
1301 * @publicApi
1302 */
1303export declare const ContentChildren: ContentChildrenDecorator;
1304
1305/**
1306 * Type of the ContentChildren decorator / constructor function.
1307 *
1308 * @see `ContentChildren`.
1309 * @publicApi
1310 */
1311export declare interface ContentChildrenDecorator {
1312 /**
1313 * Parameter decorator that configures a content query.
1314 *
1315 * Use to get the `QueryList` of elements or directives from the content DOM.
1316 * Any time a child element is added, removed, or moved, the query list will be
1317 * updated, and the changes observable of the query list will emit a new value.
1318 *
1319 * Content queries are set before the `ngAfterContentInit` callback is called.
1320 *
1321 * Does not retrieve elements or directives that are in other components' templates,
1322 * since a component's template is always a black box to its ancestors.
1323 *
1324 * **Metadata Properties**:
1325 *
1326 * * **selector** - The directive type or the name used for querying.
1327 * * **descendants** - True to include all descendants, otherwise include only direct children.
1328 * * **read** - Used to read a different token from the queried elements.
1329 *
1330 * @usageNotes
1331 *
1332 * Here is a simple demonstration of how the `ContentChildren` decorator can be used.
1333 *
1334 * {@example core/di/ts/contentChildren/content_children_howto.ts region='HowTo'}
1335 *
1336 * ### Tab-pane example
1337 *
1338 * Here is a slightly more realistic example that shows how `ContentChildren` decorators
1339 * can be used to implement a tab pane component.
1340 *
1341 * {@example core/di/ts/contentChildren/content_children_example.ts region='Component'}
1342 *
1343 * @Annotation
1344 */
1345 (selector: Type<any> | Function | string, opts?: {
1346 descendants?: boolean;
1347 read?: any;
1348 }): any;
1349 new (selector: Type<any> | Function | string, opts?: {
1350 descendants?: boolean;
1351 read?: any;
1352 }): Query;
1353}
1354
1355/**
1356 * Definition of what a content queries function should look like.
1357 */
1358declare type ContentQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U, directiveIndex: number) => void;
1359
1360declare const CONTEXT = 8;
1361
1362/** Options that control how the component should be bootstrapped. */
1363declare interface CreateComponentOptions {
1364 /** Which renderer factory to use. */
1365 rendererFactory?: RendererFactory3;
1366 /** A custom sanitizer instance */
1367 sanitizer?: Sanitizer;
1368 /** A custom animation player handler */
1369 playerHandler?: ɵPlayerHandler;
1370 /**
1371 * Host element on which the component will be bootstrapped. If not specified,
1372 * the component definition's `tag` is used to query the existing DOM for the
1373 * element to bootstrap.
1374 */
1375 host?: RElement | string;
1376 /** Module injector for the component. If unspecified, the injector will be NULL_INJECTOR. */
1377 injector?: Injector;
1378 /**
1379 * List of features to be applied to the created component. Features are simply
1380 * functions that decorate a component with a certain behavior.
1381 *
1382 * Typically, the features in this list are features that cannot be added to the
1383 * other features list in the component definition because they rely on other factors.
1384 *
1385 * Example: `LifecycleHooksFeature` is a function that adds lifecycle hook capabilities
1386 * to root components in a tree-shakable way. It cannot be added to the component
1387 * features list because there's no way of knowing when the component will be used as
1388 * a root component.
1389 */
1390 hostFeatures?: HostFeature[];
1391 /**
1392 * A function which is used to schedule change detection work in the future.
1393 *
1394 * When marking components as dirty, it is necessary to schedule the work of
1395 * change detection in the future. This is done to coalesce multiple
1396 * {@link markDirty} calls into a single changed detection processing.
1397 *
1398 * The default value of the scheduler is the `requestAnimationFrame` function.
1399 *
1400 * It is also useful to override this function for testing purposes.
1401 */
1402 scheduler?: (work: () => void) => void;
1403}
1404
1405/**
1406 * Creates a platform.
1407 * Platforms must be created on launch using this function.
1408 *
1409 * @publicApi
1410 */
1411export declare function createPlatform(injector: Injector): PlatformRef;
1412
1413/**
1414 * Creates a factory for a platform. Can be used to provide or override `Providers` specific to
1415 * your applciation's runtime needs, such as `PLATFORM_INITIALIZER` and `PLATFORM_ID`.
1416 * @param parentPlatformFactory Another platform factory to modify. Allows you to compose factories
1417 * to build up configurations that might be required by different libraries or parts of the
1418 * application.
1419 * @param name Identifies the new platform factory.
1420 * @param providers A set of dependency providers for platforms created with the new factory.
1421 *
1422 * @publicApi
1423 */
1424export declare function createPlatformFactory(parentPlatformFactory: ((extraProviders?: StaticProvider[]) => PlatformRef) | null, name: string, providers?: StaticProvider[]): (extraProviders?: StaticProvider[]) => PlatformRef;
1425
1426
1427/**
1428 * Expresses a single CSS Selector.
1429 *
1430 * Beginning of array
1431 * - First index: element name
1432 * - Subsequent odd indices: attr keys
1433 * - Subsequent even indices: attr values
1434 *
1435 * After SelectorFlags.CLASS flag
1436 * - Class name values
1437 *
1438 * SelectorFlags.NOT flag
1439 * - Changes the mode to NOT
1440 * - Can be combined with other flags to set the element / attr / class mode
1441 *
1442 * e.g. SelectorFlags.NOT | SelectorFlags.ELEMENT
1443 *
1444 * Example:
1445 * Original: `div.foo.bar[attr1=val1][attr2]`
1446 * Parsed: ['div', 'attr1', 'val1', 'attr2', '', SelectorFlags.CLASS, 'foo', 'bar']
1447 *
1448 * Original: 'div[attr1]:not(.foo[attr2])
1449 * Parsed: [
1450 * 'div', 'attr1', '',
1451 * SelectorFlags.NOT | SelectorFlags.ATTRIBUTE 'attr2', '', SelectorFlags.CLASS, 'foo'
1452 * ]
1453 *
1454 * See more examples in node_selector_matcher_spec.ts
1455 */
1456declare type CssSelector = (string | SelectorFlags)[];
1457
1458/**
1459 * An object literal of this type is used to represent the metadata of a constructor dependency.
1460 * The type itself is never referred to from generated code.
1461 */
1462declare type CtorDependency = {
1463 /**
1464 * If an `@Attribute` decorator is used, this represents the injected attribute's name. If the
1465 * attribute name is a dynamic expression instead of a string literal, this will be the unknown
1466 * type.
1467 */
1468 attribute?: string | unknown;
1469 /**
1470 * If `@Optional()` is used, this key is set to true.
1471 */
1472 optional?: true;
1473 /**
1474 * If `@Host` is used, this key is set to true.
1475 */
1476 host?: true;
1477 /**
1478 * If `@Self` is used, this key is set to true.
1479 */
1480 self?: true;
1481 /**
1482 * If `@SkipSelf` is used, this key is set to true.
1483 */
1484 skipSelf?: true;
1485} | null;
1486
1487/**
1488 * Defines a schema that allows an NgModule to contain the following:
1489 * - Non-Angular elements named with dash case (`-`).
1490 * - Element properties named with dash case (`-`).
1491 * Dash case is the naming convention for custom elements.
1492 *
1493 * @publicApi
1494 */
1495export declare const CUSTOM_ELEMENTS_SCHEMA: SchemaMetadata;
1496
1497/**
1498 * @publicApi
1499 */
1500export declare interface DebugElement extends DebugNode {
1501 readonly name: string;
1502 readonly properties: {
1503 [key: string]: any;
1504 };
1505 readonly attributes: {
1506 [key: string]: string | null;
1507 };
1508 readonly classes: {
1509 [key: string]: boolean;
1510 };
1511 readonly styles: {
1512 [key: string]: string | null;
1513 };
1514 readonly childNodes: DebugNode[];
1515 readonly nativeElement: any;
1516 readonly children: DebugElement[];
1517 query(predicate: Predicate<DebugElement>): DebugElement;
1518 queryAll(predicate: Predicate<DebugElement>): DebugElement[];
1519 queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
1520 triggerEventHandler(eventName: string, eventObj: any): void;
1521}
1522
1523/**
1524 * @publicApi
1525 */
1526export declare const DebugElement: {
1527 new (...args: any[]): DebugElement;
1528};
1529
1530declare class DebugElement__POST_R3__ extends DebugNode__POST_R3__ implements DebugElement {
1531 constructor(nativeNode: Element);
1532 get nativeElement(): Element | null;
1533 get name(): string;
1534 /**
1535 * Gets a map of property names to property values for an element.
1536 *
1537 * This map includes:
1538 * - Regular property bindings (e.g. `[id]="id"`)
1539 * - Host property bindings (e.g. `host: { '[id]': "id" }`)
1540 * - Interpolated property bindings (e.g. `id="{{ value }}")
1541 *
1542 * It does not include:
1543 * - input property bindings (e.g. `[myCustomInput]="value"`)
1544 * - attribute bindings (e.g. `[attr.role]="menu"`)
1545 */
1546 get properties(): {
1547 [key: string]: any;
1548 };
1549 get attributes(): {
1550 [key: string]: string | null;
1551 };
1552 get styles(): {
1553 [key: string]: string | null;
1554 };
1555 get classes(): {
1556 [key: string]: boolean;
1557 };
1558 get childNodes(): DebugNode[];
1559 get children(): DebugElement[];
1560 query(predicate: Predicate<DebugElement>): DebugElement;
1561 queryAll(predicate: Predicate<DebugElement>): DebugElement[];
1562 queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
1563 triggerEventHandler(eventName: string, eventObj: any): void;
1564}
1565
1566/**
1567 * @publicApi
1568 */
1569export declare class DebugEventListener {
1570 name: string;
1571 callback: Function;
1572 constructor(name: string, callback: Function);
1573}
1574
1575/**
1576 * @publicApi
1577 */
1578export declare interface DebugNode {
1579 readonly listeners: DebugEventListener[];
1580 readonly parent: DebugElement | null;
1581 readonly nativeNode: any;
1582 readonly injector: Injector;
1583 readonly componentInstance: any;
1584 readonly context: any;
1585 readonly references: {
1586 [key: string]: any;
1587 };
1588 readonly providerTokens: any[];
1589}
1590
1591/**
1592 * @publicApi
1593 */
1594export declare const DebugNode: {
1595 new (...args: any[]): DebugNode;
1596};
1597
1598declare class DebugNode__POST_R3__ implements DebugNode {
1599 readonly nativeNode: Node;
1600 constructor(nativeNode: Node);
1601 get parent(): DebugElement | null;
1602 get injector(): Injector;
1603 get componentInstance(): any;
1604 get context(): any;
1605 get listeners(): DebugEventListener[];
1606 get references(): {
1607 [key: string]: any;
1608 };
1609 get providerTokens(): any[];
1610}
1611
1612declare const DECLARATION_COMPONENT_VIEW = 16;
1613
1614declare const DECLARATION_LCONTAINER = 17;
1615
1616declare const DECLARATION_VIEW = 15;
1617
1618/**
1619 * Provide this token to set the default currency code your application uses for
1620 * CurrencyPipe when there is no currency code passed into it. This is only used by
1621 * CurrencyPipe and has no relation to locale currency. Defaults to USD if not configured.
1622 *
1623 * See the [i18n guide](guide/i18n#setting-up-locale) for more information.
1624 *
1625 * <div class="alert is-helpful">
1626 *
1627 * **Deprecation notice:**
1628 *
1629 * The default currency code is currently always `USD` but this is deprecated from v9.
1630 *
1631 * **In v10 the default currency code will be taken from the current locale.**
1632 *
1633 * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in
1634 * your application `NgModule`:
1635 *
1636 * ```ts
1637 * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}
1638 * ```
1639 *
1640 * </div>
1641 *
1642 * @usageNotes
1643 * ### Example
1644 *
1645 * ```typescript
1646 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
1647 * import { AppModule } from './app/app.module';
1648 *
1649 * platformBrowserDynamic().bootstrapModule(AppModule, {
1650 * providers: [{provide: DEFAULT_CURRENCY_CODE, useValue: 'EUR' }]
1651 * });
1652 * ```
1653 *
1654 * @publicApi
1655 */
1656export declare const DEFAULT_CURRENCY_CODE: InjectionToken<string>;
1657
1658/**
1659 * @deprecated v4.0.0 - Should not be part of public API.
1660 * @publicApi
1661 */
1662export declare class DefaultIterableDiffer<V> implements IterableDiffer<V>, IterableChanges<V> {
1663 readonly length: number;
1664 readonly collection: V[] | Iterable<V> | null;
1665 private _linkedRecords;
1666 private _unlinkedRecords;
1667 private _previousItHead;
1668 private _itHead;
1669 private _itTail;
1670 private _additionsHead;
1671 private _additionsTail;
1672 private _movesHead;
1673 private _movesTail;
1674 private _removalsHead;
1675 private _removalsTail;
1676 private _identityChangesHead;
1677 private _identityChangesTail;
1678 private _trackByFn;
1679 constructor(trackByFn?: TrackByFunction<V>);
1680 forEachItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1681 forEachOperation(fn: (item: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void;
1682 forEachPreviousItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1683 forEachAddedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1684 forEachMovedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1685 forEachRemovedItem(fn: (record: IterableChangeRecord_<V>) => void): void;
1686 forEachIdentityChange(fn: (record: IterableChangeRecord_<V>) => void): void;
1687 diff(collection: NgIterable<V> | null | undefined): DefaultIterableDiffer<V> | null;
1688 onDestroy(): void;
1689 check(collection: NgIterable<V>): boolean;
1690 get isDirty(): boolean;
1691 private _addToRemovals;
1692}
1693
1694/**
1695 * @deprecated in v8, delete after v10. This API should be used only be generated code, and that
1696 * code should now use ɵɵdefineInjectable instead.
1697 * @publicApi
1698 */
1699export declare const defineInjectable: typeof ɵɵdefineInjectable;
1700
1701declare interface Definition<DF extends DefinitionFactory<any>> {
1702 factory: DF | null;
1703}
1704
1705/**
1706 * Factory for ViewDefinitions/NgModuleDefinitions.
1707 * We use a function so we can reexeute it in case an error happens and use the given logger
1708 * function to log the error from the definition of the node, which is shown in all browser
1709 * logs.
1710 */
1711declare interface DefinitionFactory<D extends Definition<any>> {
1712 (logger: NodeLogger): D;
1713}
1714
1715declare interface DepDef {
1716 flags: ɵDepFlags;
1717 token: any;
1718 tokenKey: string;
1719}
1720
1721/**
1722 * Array of destroy hooks that should be executed for a view and their directive indices.
1723 *
1724 * The array is set up as a series of number/function or number/(number|function)[]:
1725 * - Even indices represent the context with which hooks should be called.
1726 * - Odd indices are the hook functions themselves. If a value at an odd index is an array,
1727 * it represents the destroy hooks of a `multi` provider where:
1728 * - Even indices represent the index of the provider for which we've registered a destroy hook,
1729 * inside of the `multi` provider array.
1730 * - Odd indices are the destroy hook functions.
1731 * For example:
1732 * LView: `[0, 1, 2, AService, 4, [BService, CService, DService]]`
1733 * destroyHooks: `[3, AService.ngOnDestroy, 5, [0, BService.ngOnDestroy, 2, DService.ngOnDestroy]]`
1734 *
1735 * In the example above `AService` is a type provider with an `ngOnDestroy`, whereas `BService`,
1736 * `CService` and `DService` are part of a `multi` provider where only `BService` and `DService`
1737 * have an `ngOnDestroy` hook.
1738 */
1739declare type DestroyHookData = (HookEntry | HookData)[];
1740
1741/**
1742 * Destroys the current Angular platform and all Angular applications on the page.
1743 * Destroys all modules and listeners registered with the platform.
1744 *
1745 * @publicApi
1746 */
1747export declare function destroyPlatform(): void;
1748
1749/**
1750 * Directive decorator and metadata.
1751 *
1752 * @Annotation
1753 * @publicApi
1754 */
1755export declare interface Directive {
1756 /**
1757 * The CSS selector that identifies this directive in a template
1758 * and triggers instantiation of the directive.
1759 *
1760 * Declare as one of the following:
1761 *
1762 * - `element-name`: Select by element name.
1763 * - `.class`: Select by class name.
1764 * - `[attribute]`: Select by attribute name.
1765 * - `[attribute=value]`: Select by attribute name and value.
1766 * - `:not(sub_selector)`: Select only if the element does not match the `sub_selector`.
1767 * - `selector1, selector2`: Select if either `selector1` or `selector2` matches.
1768 *
1769 * Angular only allows directives to apply on CSS selectors that do not cross
1770 * element boundaries.
1771 *
1772 * For the following template HTML, a directive with an `input[type=text]` selector,
1773 * would be instantiated only on the `<input type="text">` element.
1774 *
1775 * ```html
1776 * <form>
1777 * <input type="text">
1778 * <input type="radio">
1779 * <form>
1780 * ```
1781 *
1782 */
1783 selector?: string;
1784 /**
1785 * Enumerates the set of data-bound input properties for a directive
1786 *
1787 * Angular automatically updates input properties during change detection.
1788 * The `inputs` property defines a set of `directiveProperty` to `bindingProperty`
1789 * configuration:
1790 *
1791 * - `directiveProperty` specifies the component property where the value is written.
1792 * - `bindingProperty` specifies the DOM property where the value is read from.
1793 *
1794 * When `bindingProperty` is not provided, it is assumed to be equal to `directiveProperty`.
1795 *
1796 * @usageNotes
1797 *
1798 * The following example creates a component with two data-bound properties.
1799 *
1800 * ```typescript
1801 * @Component({
1802 * selector: 'bank-account',
1803 * inputs: ['bankName', 'id: account-id'],
1804 * template: `
1805 * Bank Name: {{bankName}}
1806 * Account Id: {{id}}
1807 * `
1808 * })
1809 * class BankAccount {
1810 * bankName: string;
1811 * id: string;
1812 * }
1813 * ```
1814 *
1815 */
1816 inputs?: string[];
1817 /**
1818 * Enumerates the set of event-bound output properties.
1819 *
1820 * When an output property emits an event, an event handler attached to that event
1821 * in the template is invoked.
1822 *
1823 * The `outputs` property defines a set of `directiveProperty` to `bindingProperty`
1824 * configuration:
1825 *
1826 * - `directiveProperty` specifies the component property that emits events.
1827 * - `bindingProperty` specifies the DOM property the event handler is attached to.
1828 *
1829 * @usageNotes
1830 *
1831 * ```typescript
1832 * @Component({
1833 * selector: 'child-dir',
1834 * outputs: [ 'bankNameChange' ]
1835 * template: `<input (input)="bankNameChange.emit($event.target.value)" />`
1836 * })
1837 * class ChildDir {
1838 * bankNameChange: EventEmitter<string> = new EventEmitter<string>();
1839 * }
1840 *
1841 * @Component({
1842 * selector: 'main',
1843 * template: `
1844 * {{ bankName }} <child-dir (bankNameChange)="onBankNameChange($event)"></child-dir>
1845 * `
1846 * })
1847 * class MainComponent {
1848 * bankName: string;
1849 *
1850 * onBankNameChange(bankName: string) {
1851 * this.bankName = bankName;
1852 * }
1853 * }
1854 * ```
1855 *
1856 */
1857 outputs?: string[];
1858 /**
1859 * Configures the [injector](guide/glossary#injector) of this
1860 * directive or component with a [token](guide/glossary#di-token)
1861 * that maps to a [provider](guide/glossary#provider) of a dependency.
1862 */
1863 providers?: Provider[];
1864 /**
1865 * Defines the name that can be used in the template to assign this directive to a variable.
1866 *
1867 * @usageNotes
1868 *
1869 * ```ts
1870 * @Directive({
1871 * selector: 'child-dir',
1872 * exportAs: 'child'
1873 * })
1874 * class ChildDir {
1875 * }
1876 *
1877 * @Component({
1878 * selector: 'main',
1879 * template: `<child-dir #c="child"></child-dir>`
1880 * })
1881 * class MainComponent {
1882 * }
1883 * ```
1884 *
1885 */
1886 exportAs?: string;
1887 /**
1888 * Configures the queries that will be injected into the directive.
1889 *
1890 * Content queries are set before the `ngAfterContentInit` callback is called.
1891 * View queries are set before the `ngAfterViewInit` callback is called.
1892 *
1893 * @usageNotes
1894 *
1895 * The following example shows how queries are defined
1896 * and when their results are available in lifecycle hooks:
1897 *
1898 * ```ts
1899 * @Component({
1900 * selector: 'someDir',
1901 * queries: {
1902 * contentChildren: new ContentChildren(ChildDirective),
1903 * viewChildren: new ViewChildren(ChildDirective)
1904 * },
1905 * template: '<child-directive></child-directive>'
1906 * })
1907 * class SomeDir {
1908 * contentChildren: QueryList<ChildDirective>,
1909 * viewChildren: QueryList<ChildDirective>
1910 *
1911 * ngAfterContentInit() {
1912 * // contentChildren is set
1913 * }
1914 *
1915 * ngAfterViewInit() {
1916 * // viewChildren is set
1917 * }
1918 * }
1919 * ```
1920 *
1921 * @Annotation
1922 */
1923 queries?: {
1924 [key: string]: any;
1925 };
1926 /**
1927 * Maps class properties to host element bindings for properties,
1928 * attributes, and events, using a set of key-value pairs.
1929 *
1930 * Angular automatically checks host property bindings during change detection.
1931 * If a binding changes, Angular updates the directive's host element.
1932 *
1933 * When the key is a property of the host element, the property value is
1934 * the propagated to the specified DOM property.
1935 *
1936 * When the key is a static attribute in the DOM, the attribute value
1937 * is propagated to the specified property in the host element.
1938 *
1939 * For event handling:
1940 * - The key is the DOM event that the directive listens to.
1941 * To listen to global events, add the target to the event name.
1942 * The target can be `window`, `document` or `body`.
1943 * - The value is the statement to execute when the event occurs. If the
1944 * statement evaluates to `false`, then `preventDefault` is applied on the DOM
1945 * event. A handler method can refer to the `$event` local variable.
1946 *
1947 */
1948 host?: {
1949 [key: string]: string;
1950 };
1951 /**
1952 * When present, this directive/component is ignored by the AOT compiler.
1953 * It remains in distributed code, and the JIT compiler attempts to compile it
1954 * at run time, in the browser.
1955 * To ensure the correct behavior, the app must import `@angular/compiler`.
1956 */
1957 jit?: true;
1958}
1959
1960/**
1961 * Type of the Directive metadata.
1962 *
1963 * @publicApi
1964 */
1965export declare const Directive: DirectiveDecorator;
1966
1967/**
1968 * Type of the Directive decorator / constructor function.
1969 * @publicApi
1970 */
1971export declare interface DirectiveDecorator {
1972 /**
1973 * Decorator that marks a class as an Angular directive.
1974 * You can define your own directives to attach custom behavior to elements in the DOM.
1975 *
1976 * The options provide configuration metadata that determines
1977 * how the directive should be processed, instantiated and used at
1978 * runtime.
1979 *
1980 * Directive classes, like component classes, can implement
1981 * [life-cycle hooks](guide/lifecycle-hooks) to influence their configuration and behavior.
1982 *
1983 *
1984 * @usageNotes
1985 * To define a directive, mark the class with the decorator and provide metadata.
1986 *
1987 * ```ts
1988 * import {Directive} from '@angular/core';
1989 *
1990 * @Directive({
1991 * selector: 'my-directive',
1992 * })
1993 * export class MyDirective {
1994 * ...
1995 * }
1996 * ```
1997 *
1998 * ### Declaring directives
1999 *
2000 * Directives are [declarables](guide/glossary#declarable).
2001 * They must be declared by an NgModule
2002 * in order to be usable in an app.
2003 *
2004 * A directive must belong to exactly one NgModule. Do not re-declare
2005 * a directive imported from another module.
2006 * List the directive class in the `declarations` field of an NgModule.
2007 *
2008 * ```ts
2009 * declarations: [
2010 * AppComponent,
2011 * MyDirective
2012 * ],
2013 * ```
2014 *
2015 * @Annotation
2016 */
2017 (obj?: Directive): TypeDecorator;
2018 /**
2019 * See the `Directive` decorator.
2020 */
2021 new (obj?: Directive): Directive;
2022}
2023
2024declare interface DirectiveDefFeature {
2025 <T>(directiveDef: ɵDirectiveDef<T>): void;
2026 /**
2027 * Marks a feature as something that {@link InheritDefinitionFeature} will execute
2028 * during inheritance.
2029 *
2030 * NOTE: DO NOT SET IN ROOT OF MODULE! Doing so will result in tree-shakers/bundlers
2031 * identifying the change as a side effect, and the feature will be included in
2032 * every bundle.
2033 */
2034 ngInherit?: true;
2035}
2036
2037declare type DirectiveDefList = (ɵDirectiveDef<any> | ɵComponentDef<any>)[];
2038
2039/**
2040 * Type used for directiveDefs on component definition.
2041 *
2042 * The function is necessary to be able to support forward declarations.
2043 */
2044declare type DirectiveDefListOrFactory = (() => DirectiveDefList) | DirectiveDefList;
2045
2046declare type DirectiveInstance = {};
2047
2048declare type DirectiveTypeList = (ɵDirectiveType<any> | ɵComponentType<any> | Type<any>)[];
2049
2050declare type DirectiveTypesOrFactory = (() => DirectiveTypeList) | DirectiveTypeList;
2051
2052declare interface DisposableFn {
2053 (): void;
2054}
2055
2056/**
2057 * @description
2058 * Hook for manual bootstrapping of the application instead of using bootstrap array in @NgModule
2059 * annotation.
2060 *
2061 * Reference to the current application is provided as a parameter.
2062 *
2063 * See ["Bootstrapping"](guide/bootstrapping) and ["Entry components"](guide/entry-components).
2064 *
2065 * @usageNotes
2066 * ```typescript
2067 * class AppModule implements DoBootstrap {
2068 * ngDoBootstrap(appRef: ApplicationRef) {
2069 * appRef.bootstrap(AppComponent); // Or some other component
2070 * }
2071 * }
2072 * ```
2073 *
2074 * @publicApi
2075 */
2076export declare interface DoBootstrap {
2077 ngDoBootstrap(appRef: ApplicationRef): void;
2078}
2079
2080/**
2081 * A lifecycle hook that invokes a custom change-detection function for a directive,
2082 * in addition to the check performed by the default change-detector.
2083 *
2084 * The default change-detection algorithm looks for differences by comparing
2085 * bound-property values by reference across change detection runs. You can use this
2086 * hook to check for and respond to changes by some other means.
2087 *
2088 * When the default change detector detects changes, it invokes `ngOnChanges()` if supplied,
2089 * regardless of whether you perform additional change detection.
2090 * Typically, you should not use both `DoCheck` and `OnChanges` to respond to
2091 * changes on the same input.
2092 *
2093 * @see `OnChanges`
2094 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
2095 *
2096 * @usageNotes
2097 * The following snippet shows how a component can implement this interface
2098 * to invoke it own change-detection cycle.
2099 *
2100 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='DoCheck'}
2101 *
2102 * For a more complete example and discussion, see
2103 * [Defining custom change detection](guide/lifecycle-hooks#defining-custom-change-detection).
2104 *
2105 * @publicApi
2106 */
2107export declare interface DoCheck {
2108 /**
2109 * A callback method that performs change-detection, invoked
2110 * after the default change-detector runs.
2111 * See `KeyValueDiffers` and `IterableDiffers` for implementing
2112 * custom change checking for collections.
2113 *
2114 */
2115 ngDoCheck(): void;
2116}
2117
2118/**
2119 * Marks that the next string is for element.
2120 *
2121 * See `I18nMutateOpCodes` documentation.
2122 */
2123declare const ELEMENT_MARKER: ELEMENT_MARKER;
2124
2125declare interface ELEMENT_MARKER {
2126 marker: 'element';
2127}
2128
2129declare interface ElementDef {
2130 name: string | null;
2131 ns: string | null;
2132 /** ns, name, value */
2133 attrs: [string, string, string][] | null;
2134 template: ɵViewDefinition | null;
2135 componentProvider: NodeDef | null;
2136 componentRendererType: RendererType2 | null;
2137 componentView: ViewDefinitionFactory | null;
2138 /**
2139 * visible public providers for DI in the view,
2140 * as see from this element. This does not include private providers.
2141 */
2142 publicProviders: {
2143 [tokenKey: string]: NodeDef;
2144 } | null;
2145 /**
2146 * same as visiblePublicProviders, but also includes private providers
2147 * that are located on this element.
2148 */
2149 allProviders: {
2150 [tokenKey: string]: NodeDef;
2151 } | null;
2152 handleEvent: ElementHandleEventFn | null;
2153}
2154
2155declare interface ElementHandleEventFn {
2156 (view: ViewData, eventName: string, event: any): boolean;
2157}
2158
2159/**
2160 * A wrapper around a native element inside of a View.
2161 *
2162 * An `ElementRef` is backed by a render-specific element. In the browser, this is usually a DOM
2163 * element.
2164 *
2165 * @security Permitting direct access to the DOM can make your application more vulnerable to
2166 * XSS attacks. Carefully review any use of `ElementRef` in your code. For more detail, see the
2167 * [Security Guide](http://g.co/ng/security).
2168 *
2169 * @publicApi
2170 */
2171export declare class ElementRef<T = any> {
2172 /**
2173 * The underlying native element or `null` if direct access to native elements is not supported
2174 * (e.g. when the application runs in a web worker).
2175 *
2176 * <div class="callout is-critical">
2177 * <header>Use with caution</header>
2178 * <p>
2179 * Use this API as the last resort when direct access to DOM is needed. Use templating and
2180 * data-binding provided by Angular instead. Alternatively you can take a look at {@link
2181 * Renderer2}
2182 * which provides API that can safely be used even when direct access to native elements is not
2183 * supported.
2184 * </p>
2185 * <p>
2186 * Relying on direct DOM access creates tight coupling between your application and rendering
2187 * layers which will make it impossible to separate the two and deploy your application into a
2188 * web worker.
2189 * </p>
2190 * </div>
2191 *
2192 */
2193 nativeElement: T;
2194 constructor(nativeElement: T);
2195}
2196
2197/**
2198 * Represents an Angular [view](guide/glossary#view) in a view container.
2199 * An [embedded view](guide/glossary#view-tree) can be referenced from a component
2200 * other than the hosting component whose template defines it, or it can be defined
2201 * independently by a `TemplateRef`.
2202 *
2203 * Properties of elements in a view can change, but the structure (number and order) of elements in
2204 * a view cannot. Change the structure of elements by inserting, moving, or
2205 * removing nested views in a view container.
2206 *
2207 * @see `ViewContainerRef`
2208 *
2209 * @usageNotes
2210 *
2211 * The following template breaks down into two separate `TemplateRef` instances,
2212 * an outer one and an inner one.
2213 *
2214 * ```
2215 * Count: {{items.length}}
2216 * <ul>
2217 * <li *ngFor="let item of items">{{item}}</li>
2218 * </ul>
2219 * ```
2220 *
2221 * This is the outer `TemplateRef`:
2222 *
2223 * ```
2224 * Count: {{items.length}}
2225 * <ul>
2226 * <ng-template ngFor let-item [ngForOf]="items"></ng-template>
2227 * </ul>
2228 * ```
2229 *
2230 * This is the inner `TemplateRef`:
2231 *
2232 * ```
2233 * <li>{{item}}</li>
2234 * ```
2235 *
2236 * The outer and inner `TemplateRef` instances are assembled into views as follows:
2237 *
2238 * ```
2239 * <!-- ViewRef: outer-0 -->
2240 * Count: 2
2241 * <ul>
2242 * <ng-template view-container-ref></ng-template>
2243 * <!-- ViewRef: inner-1 --><li>first</li><!-- /ViewRef: inner-1 -->
2244 * <!-- ViewRef: inner-2 --><li>second</li><!-- /ViewRef: inner-2 -->
2245 * </ul>
2246 * <!-- /ViewRef: outer-0 -->
2247 * ```
2248 * @publicApi
2249 */
2250export declare abstract class EmbeddedViewRef<C> extends ViewRef {
2251 /**
2252 * The context for this view, inherited from the anchor element.
2253 */
2254 abstract get context(): C;
2255 /**
2256 * The root nodes for this embedded view.
2257 */
2258 abstract get rootNodes(): any[];
2259}
2260
2261/**
2262 * Disable Angular's development mode, which turns off assertions and other
2263 * checks within the framework.
2264 *
2265 * One important assertion this disables verifies that a change detection pass
2266 * does not result in additional changes to any bindings (also known as
2267 * unidirectional data flow).
2268 *
2269 * @publicApi
2270 */
2271export declare function enableProdMode(): void;
2272
2273
2274/**
2275 * Provides a hook for centralized exception handling.
2276 *
2277 * The default implementation of `ErrorHandler` prints error messages to the `console`. To
2278 * intercept error handling, write a custom exception handler that replaces this default as
2279 * appropriate for your app.
2280 *
2281 * @usageNotes
2282 * ### Example
2283 *
2284 * ```
2285 * class MyErrorHandler implements ErrorHandler {
2286 * handleError(error) {
2287 * // do something with the exception
2288 * }
2289 * }
2290 *
2291 * @NgModule({
2292 * providers: [{provide: ErrorHandler, useClass: MyErrorHandler}]
2293 * })
2294 * class MyModule {}
2295 * ```
2296 *
2297 * @publicApi
2298 */
2299export declare class ErrorHandler {
2300 handleError(error: any): void;
2301}
2302
2303/**
2304 * Use in components with the `@Output` directive to emit custom events
2305 * synchronously or asynchronously, and register handlers for those events
2306 * by subscribing to an instance.
2307 *
2308 * @usageNotes
2309 *
2310 * Extends
2311 * [RxJS `Subject`](https://rxjs.dev/api/index/class/Subject)
2312 * for Angular by adding the `emit()` method.
2313 *
2314 * In the following example, a component defines two output properties
2315 * that create event emitters. When the title is clicked, the emitter
2316 * emits an open or close event to toggle the current visibility state.
2317 *
2318 * ```html
2319 * @Component({
2320 * selector: 'zippy',
2321 * template: `
2322 * <div class="zippy">
2323 * <div (click)="toggle()">Toggle</div>
2324 * <div [hidden]="!visible">
2325 * <ng-content></ng-content>
2326 * </div>
2327 * </div>`})
2328 * export class Zippy {
2329 * visible: boolean = true;
2330 * @Output() open: EventEmitter<any> = new EventEmitter();
2331 * @Output() close: EventEmitter<any> = new EventEmitter();
2332 *
2333 * toggle() {
2334 * this.visible = !this.visible;
2335 * if (this.visible) {
2336 * this.open.emit(null);
2337 * } else {
2338 * this.close.emit(null);
2339 * }
2340 * }
2341 * }
2342 * ```
2343 *
2344 * Access the event object with the `$event` argument passed to the output event
2345 * handler:
2346 *
2347 * ```html
2348 * <zippy (open)="onOpen($event)" (close)="onClose($event)"></zippy>
2349 * ```
2350 *
2351 * @see [Observables in Angular](guide/observables-in-angular)
2352 * @publicApi
2353 */
2354export declare interface EventEmitter<T> extends Subject<T> {
2355 /**
2356 * Creates an instance of this class that can
2357 * deliver events synchronously or asynchronously.
2358 *
2359 * @param [isAsync=false] When true, deliver events asynchronously.
2360 *
2361 */
2362 new (isAsync?: boolean): EventEmitter<T>;
2363 /**
2364 * Emits an event containing a given value.
2365 * @param value The value to emit.
2366 */
2367 emit(value?: T): void;
2368 /**
2369 * Registers handlers for events emitted by this instance.
2370 * @param generatorOrNext When supplied, a custom handler for emitted events.
2371 * @param error When supplied, a custom handler for an error notification
2372 * from this emitter.
2373 * @param complete When supplied, a custom handler for a completion
2374 * notification from this emitter.
2375 */
2376 subscribe(generatorOrNext?: any, error?: any, complete?: any): Subscription;
2377}
2378
2379/**
2380 * @publicApi
2381 */
2382export declare const EventEmitter: {
2383 new (isAsync?: boolean): EventEmitter<any>;
2384 new <T>(isAsync?: boolean): EventEmitter<T>;
2385 readonly prototype: EventEmitter<any>;
2386};
2387
2388/**
2389 * Configures the `Injector` to return a value of another `useExisting` token.
2390 *
2391 * @see ["Dependency Injection Guide"](guide/dependency-injection).
2392 *
2393 * @usageNotes
2394 *
2395 * {@example core/di/ts/provider_spec.ts region='ExistingProvider'}
2396 *
2397 * ### Multi-value example
2398 *
2399 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
2400 *
2401 * @publicApi
2402 */
2403export declare interface ExistingProvider extends ExistingSansProvider {
2404 /**
2405 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
2406 */
2407 provide: any;
2408 /**
2409 * When true, injector returns an array of instances. This is useful to allow multiple
2410 * providers spread across many files to provide configuration information to a common token.
2411 */
2412 multi?: boolean;
2413}
2414
2415/**
2416 * Configures the `Injector` to return a value of another `useExisting` token.
2417 *
2418 * @see `ExistingProvider`
2419 * @see ["Dependency Injection Guide"](guide/dependency-injection).
2420 *
2421 * @publicApi
2422 */
2423export declare interface ExistingSansProvider {
2424 /**
2425 * Existing `token` to return. (Equivalent to `injector.get(useExisting)`)
2426 */
2427 useExisting: any;
2428}
2429
2430/**
2431 * Set of instructions used to process host bindings efficiently.
2432 *
2433 * See VIEW_DATA.md for more information.
2434 */
2435declare interface ExpandoInstructions extends Array<number | HostBindingsFunction<any> | null> {
2436}
2437
2438/**
2439 * Definition of what a factory function should look like.
2440 */
2441declare type FactoryFn<T> = {
2442 /**
2443 * Subclasses without an explicit constructor call through to the factory of their base
2444 * definition, providing it with their own constructor to instantiate.
2445 */
2446 <U extends T>(t: Type<U>): U;
2447 /**
2448 * If no constructor to instantiate is provided, an instance of type T itself is created.
2449 */
2450 (t?: undefined): T;
2451};
2452
2453/**
2454 * Configures the `Injector` to return a value by invoking a `useFactory` function.
2455 * @see ["Dependency Injection Guide"](guide/dependency-injection).
2456 *
2457 * @usageNotes
2458 *
2459 * {@example core/di/ts/provider_spec.ts region='FactoryProvider'}
2460 *
2461 * Dependencies can also be marked as optional:
2462 *
2463 * {@example core/di/ts/provider_spec.ts region='FactoryProviderOptionalDeps'}
2464 *
2465 * ### Multi-value example
2466 *
2467 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
2468 *
2469 * @publicApi
2470 */
2471export declare interface FactoryProvider extends FactorySansProvider {
2472 /**
2473 * An injection token. (Typically an instance of `Type` or `InjectionToken`, but can be `any`).
2474 */
2475 provide: any;
2476 /**
2477 * When true, injector returns an array of instances. This is useful to allow multiple
2478 * providers spread across many files to provide configuration information to a common token.
2479 */
2480 multi?: boolean;
2481}
2482
2483/**
2484 * Configures the `Injector` to return a value by invoking a `useFactory` function.
2485 *
2486 * @see `FactoryProvider`
2487 * @see ["Dependency Injection Guide"](guide/dependency-injection).
2488 *
2489 * @publicApi
2490 */
2491export declare interface FactorySansProvider {
2492 /**
2493 * A function to invoke to create a value for this `token`. The function is invoked with
2494 * resolved values of `token`s in the `deps` field.
2495 */
2496 useFactory: Function;
2497 /**
2498 * A list of `token`s to be resolved by the injector. The list of values is then
2499 * used as arguments to the `useFactory` function.
2500 */
2501 deps?: any[];
2502}
2503
2504declare const FLAGS = 2;
2505
2506/**
2507 * Allows to refer to references which are not yet defined.
2508 *
2509 * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of
2510 * DI is declared, but not yet defined. It is also used when the `token` which we use when creating
2511 * a query is not yet defined.
2512 *
2513 * @usageNotes
2514 * ### Example
2515 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}
2516 * @publicApi
2517 */
2518export declare function forwardRef(forwardRefFn: ForwardRefFn): Type<any>;
2519
2520/**
2521 * An interface that a function passed into {@link forwardRef} has to implement.
2522 *
2523 * @usageNotes
2524 * ### Example
2525 *
2526 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref_fn'}
2527 * @publicApi
2528 */
2529export declare interface ForwardRefFn {
2530 (): any;
2531}
2532
2533/**
2534 * @publicApi
2535 */
2536export declare const getDebugNode: (nativeNode: any) => DebugNode | null;
2537
2538/**
2539 * Returns the NgModuleFactory with the given id, if it exists and has been loaded.
2540 * Factories for modules that do not specify an `id` cannot be retrieved. Throws if the module
2541 * cannot be found.
2542 * @publicApi
2543 */
2544export declare const getModuleFactory: (id: string) => NgModuleFactory<any>;
2545
2546/**
2547 * Returns the current platform.
2548 *
2549 * @publicApi
2550 */
2551export declare function getPlatform(): PlatformRef | null;
2552
2553/**
2554 * Adapter interface for retrieving the `Testability` service associated for a
2555 * particular context.
2556 *
2557 * @publicApi
2558 */
2559export declare interface GetTestability {
2560 addToWindow(registry: TestabilityRegistry): void;
2561 findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean): Testability | null;
2562}
2563
2564declare type GlobalTargetName = 'document' | 'window' | 'body';
2565
2566declare type GlobalTargetResolver = (element: any) => {
2567 name: GlobalTargetName;
2568 target: EventTarget;
2569};
2570
2571/**
2572 * Flag to signify that this `LContainer` may have transplanted views which need to be change
2573 * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
2574 *
2575 * This flag, once set, is never unset for the `LContainer`. This means that when unset we can skip
2576 * a lot of work in `refreshEmbeddedViews`. But when set we still need to verify
2577 * that the `MOVED_VIEWS` are transplanted and on-push.
2578 */
2579declare const HAS_TRANSPLANTED_VIEWS = 2;
2580
2581/**
2582 * Array of hooks that should be executed for a view and their directive indices.
2583 *
2584 * For each node of the view, the following data is stored:
2585 * 1) Node index (optional)
2586 * 2) A series of number/function pairs where:
2587 * - even indices are directive indices
2588 * - odd indices are hook functions
2589 *
2590 * Special cases:
2591 * - a negative directive index flags an init hook (ngOnInit, ngAfterContentInit, ngAfterViewInit)
2592 */
2593declare type HookData = HookEntry[];
2594
2595/**
2596 * Information necessary to call a hook. E.g. the callback that
2597 * needs to invoked and the index at which to find its context.
2598 */
2599declare type HookEntry = number | HookFn;
2600
2601/** Single hook callback function. */
2602declare type HookFn = () => void;
2603
2604declare const HOST = 0;
2605
2606/**
2607 * Type of the Host metadata.
2608 *
2609 * @publicApi
2610 */
2611export declare interface Host {
2612}
2613
2614/**
2615 * Host decorator and metadata.
2616 *
2617 * @Annotation
2618 * @publicApi
2619 */
2620export declare const Host: HostDecorator;
2621
2622/**
2623 * Type of the HostBinding metadata.
2624 *
2625 * @publicApi
2626 */
2627export declare interface HostBinding {
2628 /**
2629 * The DOM property that is bound to a data property.
2630 */
2631 hostPropertyName?: string;
2632}
2633
2634/**
2635 * @Annotation
2636 * @publicApi
2637 */
2638export declare const HostBinding: HostBindingDecorator;
2639
2640/**
2641 * Type of the HostBinding decorator / constructor function.
2642 *
2643 * @publicApi
2644 */
2645export declare interface HostBindingDecorator {
2646 /**
2647 * Decorator that marks a DOM property as a host-binding property and supplies configuration
2648 * metadata.
2649 * Angular automatically checks host property bindings during change detection, and
2650 * if a binding changes it updates the host element of the directive.
2651 *
2652 * @usageNotes
2653 *
2654 * The following example creates a directive that sets the `valid` and `invalid`
2655 * properties on the DOM element that has an `ngModel` directive on it.
2656 *
2657 * ```typescript
2658 * @Directive({selector: '[ngModel]'})
2659 * class NgModelStatus {
2660 * constructor(public control: NgModel) {}
2661 * @HostBinding('class.valid') get valid() { return this.control.valid; }
2662 * @HostBinding('class.invalid') get invalid() { return this.control.invalid; }
2663 * }
2664 *
2665 * @Component({
2666 * selector: 'app',
2667 * template: `<input [(ngModel)]="prop">`,
2668 * })
2669 * class App {
2670 * prop;
2671 * }
2672 * ```
2673 *
2674 */
2675 (hostPropertyName?: string): any;
2676 new (hostPropertyName?: string): any;
2677}
2678
2679declare type HostBindingsFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void;
2680
2681/**
2682 * Type of the `Host` decorator / constructor function.
2683 *
2684 * @publicApi
2685 */
2686export declare interface HostDecorator {
2687 /**
2688 * Parameter decorator on a view-provider parameter of a class constructor
2689 * that tells the DI framework to resolve the view by checking injectors of child
2690 * elements, and stop when reaching the host element of the current component.
2691 *
2692 * @usageNotes
2693 *
2694 * The following shows use with the `@Optional` decorator, and allows for a null result.
2695 *
2696 * <code-example path="core/di/ts/metadata_spec.ts" region="Host">
2697 * </code-example>
2698 *
2699 * For an extended example, see ["Dependency Injection
2700 * Guide"](guide/dependency-injection-in-action#optional).
2701 */
2702 (): any;
2703 new (): Host;
2704}
2705
2706/** See CreateComponentOptions.hostFeatures */
2707declare type HostFeature = (<T>(component: T, componentDef: ɵComponentDef<T>) => void);
2708
2709/**
2710 * Type of the HostListener metadata.
2711 *
2712 * @publicApi
2713 */
2714export declare interface HostListener {
2715 /**
2716 * The DOM event to listen for.
2717 */
2718 eventName?: string;
2719 /**
2720 * A set of arguments to pass to the handler method when the event occurs.
2721 */
2722 args?: string[];
2723}
2724
2725/**
2726 * Decorator that binds a DOM event to a host listener and supplies configuration metadata.
2727 * Angular invokes the supplied handler method when the host element emits the specified event,
2728 * and updates the bound element with the result.
2729 *
2730 * If the handler method returns false, applies `preventDefault` on the bound element.
2731 *
2732 * @usageNotes
2733 *
2734 * The following example declares a directive
2735 * that attaches a click listener to a button and counts clicks.
2736 *
2737 * ```ts
2738 * @Directive({selector: 'button[counting]'})
2739 * class CountClicks {
2740 * numberOfClicks = 0;
2741 *
2742 * @HostListener('click', ['$event.target'])
2743 * onClick(btn) {
2744 * console.log('button', btn, 'number of clicks:', this.numberOfClicks++);
2745 * }
2746 * }
2747 *
2748 * @Component({
2749 * selector: 'app',
2750 * template: '<button counting>Increment</button>',
2751 * })
2752 * class App {}
2753 *
2754 * ```
2755 *
2756 * The following example registers another DOM event handler that listens for key-press events.
2757 * ``` ts
2758 * import { HostListener, Component } from "@angular/core";
2759 *
2760 * @Component({
2761 * selector: 'app',
2762 * template: `<h1>Hello, you have pressed keys {{counter}} number of times!</h1> Press any key to
2763 * increment the counter.
2764 * <button (click)="resetCounter()">Reset Counter</button>`
2765 * })
2766 * class AppComponent {
2767 * counter = 0;
2768 * @HostListener('window:keydown', ['$event'])
2769 * handleKeyDown(event: KeyboardEvent) {
2770 * this.counter++;
2771 * }
2772 * resetCounter() {
2773 * this.counter = 0;
2774 * }
2775 * }
2776 * ```
2777 *
2778 * @Annotation
2779 * @publicApi
2780 */
2781export declare const HostListener: HostListenerDecorator;
2782
2783/**
2784 * Type of the HostListener decorator / constructor function.
2785 *
2786 * @publicApi
2787 */
2788export declare interface HostListenerDecorator {
2789 /**
2790 * Decorator that declares a DOM event to listen for,
2791 * and provides a handler method to run when that event occurs.
2792 */
2793 (eventName: string, args?: string[]): any;
2794 new (eventName: string, args?: string[]): any;
2795}
2796
2797/**
2798 * Array storing OpCode for dynamically creating `i18n` blocks.
2799 *
2800 * Example:
2801 * ```ts
2802 * <I18nCreateOpCode>[
2803 * // For adding text nodes
2804 * // ---------------------
2805 * // Equivalent to:
2806 * // const node = lView[index++] = document.createTextNode('abc');
2807 * // lView[1].insertBefore(node, lView[2]);
2808 * 'abc', 1 << SHIFT_PARENT | 2 << SHIFT_REF | InsertBefore,
2809 *
2810 * // Equivalent to:
2811 * // const node = lView[index++] = document.createTextNode('xyz');
2812 * // lView[1].appendChild(node);
2813 * 'xyz', 1 << SHIFT_PARENT | AppendChild,
2814 *
2815 * // For adding element nodes
2816 * // ---------------------
2817 * // Equivalent to:
2818 * // const node = lView[index++] = document.createElement('div');
2819 * // lView[1].insertBefore(node, lView[2]);
2820 * ELEMENT_MARKER, 'div', 1 << SHIFT_PARENT | 2 << SHIFT_REF | InsertBefore,
2821 *
2822 * // Equivalent to:
2823 * // const node = lView[index++] = document.createElement('div');
2824 * // lView[1].appendChild(node);
2825 * ELEMENT_MARKER, 'div', 1 << SHIFT_PARENT | AppendChild,
2826 *
2827 * // For adding comment nodes
2828 * // ---------------------
2829 * // Equivalent to:
2830 * // const node = lView[index++] = document.createComment('');
2831 * // lView[1].insertBefore(node, lView[2]);
2832 * COMMENT_MARKER, '', 1 << SHIFT_PARENT | 2 << SHIFT_REF | InsertBefore,
2833 *
2834 * // Equivalent to:
2835 * // const node = lView[index++] = document.createComment('');
2836 * // lView[1].appendChild(node);
2837 * COMMENT_MARKER, '', 1 << SHIFT_PARENT | AppendChild,
2838 *
2839 * // For moving existing nodes to a different location
2840 * // --------------------------------------------------
2841 * // Equivalent to:
2842 * // const node = lView[1];
2843 * // lView[2].insertBefore(node, lView[3]);
2844 * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | 3 << SHIFT_REF | InsertBefore,
2845 *
2846 * // Equivalent to:
2847 * // const node = lView[1];
2848 * // lView[2].appendChild(node);
2849 * 1 << SHIFT_REF | Select, 2 << SHIFT_PARENT | AppendChild,
2850 *
2851 * // For removing existing nodes
2852 * // --------------------------------------------------
2853 * // const node = lView[1];
2854 * // removeChild(tView.data(1), node, lView);
2855 * 1 << SHIFT_REF | Remove,
2856 *
2857 * // For writing attributes
2858 * // --------------------------------------------------
2859 * // const node = lView[1];
2860 * // node.setAttribute('attr', 'value');
2861 * 1 << SHIFT_REF | Select, 'attr', 'value'
2862 * // NOTE: Select followed by two string (vs select followed by OpCode)
2863 * ];
2864 * ```
2865 * NOTE:
2866 * - `index` is initial location where the extra nodes should be stored in the EXPANDO section of
2867 * `LVIewData`.
2868 *
2869 * See: `applyI18nCreateOpCodes`;
2870 */
2871declare interface I18nMutateOpCodes extends Array<number | string | ELEMENT_MARKER | COMMENT_MARKER | null> {
2872}
2873
2874/**
2875 * Stores DOM operations which need to be applied to update DOM render tree due to changes in
2876 * expressions.
2877 *
2878 * The basic idea is that `i18nExp` OpCodes capture expression changes and update a change
2879 * mask bit. (Bit 1 for expression 1, bit 2 for expression 2 etc..., bit 32 for expression 32 and
2880 * higher.) The OpCodes then compare its own change mask against the expression change mask to
2881 * determine if the OpCodes should execute.
2882 *
2883 * These OpCodes can be used by both the i18n block as well as ICU sub-block.
2884 *
2885 * ## Example
2886 *
2887 * Assume
2888 * ```ts
2889 * if (rf & RenderFlags.Update) {
2890 * i18nExp(ctx.exp1); // If changed set mask bit 1
2891 * i18nExp(ctx.exp2); // If changed set mask bit 2
2892 * i18nExp(ctx.exp3); // If changed set mask bit 3
2893 * i18nExp(ctx.exp4); // If changed set mask bit 4
2894 * i18nApply(0); // Apply all changes by executing the OpCodes.
2895 * }
2896 * ```
2897 * We can assume that each call to `i18nExp` sets an internal `changeMask` bit depending on the
2898 * index of `i18nExp`.
2899 *
2900 * ### OpCodes
2901 * ```ts
2902 * <I18nUpdateOpCodes>[
2903 * // The following OpCodes represent: `<div i18n-title="pre{{exp1}}in{{exp2}}post">`
2904 * // If `changeMask & 0b11`
2905 * // has changed then execute update OpCodes.
2906 * // has NOT changed then skip `7` values and start processing next OpCodes.
2907 * 0b11, 7,
2908 * // Concatenate `newValue = 'pre'+lView[bindIndex-4]+'in'+lView[bindIndex-3]+'post';`.
2909 * 'pre', -4, 'in', -3, 'post',
2910 * // Update attribute: `elementAttribute(1, 'title', sanitizerFn(newValue));`
2911 * 1 << SHIFT_REF | Attr, 'title', sanitizerFn,
2912 *
2913 * // The following OpCodes represent: `<div i18n>Hello {{exp3}}!">`
2914 * // If `changeMask & 0b100`
2915 * // has changed then execute update OpCodes.
2916 * // has NOT changed then skip `4` values and start processing next OpCodes.
2917 * 0b100, 4,
2918 * // Concatenate `newValue = 'Hello ' + lView[bindIndex -2] + '!';`.
2919 * 'Hello ', -2, '!',
2920 * // Update text: `lView[1].textContent = newValue;`
2921 * 1 << SHIFT_REF | Text,
2922 *
2923 * // The following OpCodes represent: `<div i18n>{exp4, plural, ... }">`
2924 * // If `changeMask & 0b1000`
2925 * // has changed then execute update OpCodes.
2926 * // has NOT changed then skip `4` values and start processing next OpCodes.
2927 * 0b1000, 4,
2928 * // Concatenate `newValue = lView[bindIndex -1];`.
2929 * -1,
2930 * // Switch ICU: `icuSwitchCase(lView[1], 0, newValue);`
2931 * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuSwitch,
2932 *
2933 * // Note `changeMask & -1` is always true, so the IcuUpdate will always execute.
2934 * -1, 1,
2935 * // Update ICU: `icuUpdateCase(lView[1], 0);`
2936 * 0 << SHIFT_ICU | 1 << SHIFT_REF | IcuUpdate,
2937 *
2938 * ];
2939 * ```
2940 *
2941 */
2942declare interface I18nUpdateOpCodes extends Array<string | number | SanitizerFn | null> {
2943}
2944
2945/**
2946 * Defines the ICU type of `select` or `plural`
2947 */
2948declare const enum IcuType {
2949 select = 0,
2950 plural = 1
2951}
2952
2953/**
2954 * This array contains information about input properties that
2955 * need to be set once from attribute data. It's ordered by
2956 * directive index (relative to element) so it's simple to
2957 * look up a specific directive's initial input data.
2958 *
2959 * Within each sub-array:
2960 *
2961 * i+0: attribute name
2962 * i+1: minified/internal input name
2963 * i+2: initial value
2964 *
2965 * If a directive on a node does not have any input properties
2966 * that should be set from attributes, its index is set to null
2967 * to avoid a sparse array.
2968 *
2969 * e.g. [null, ['role-min', 'minified-input', 'button']]
2970 */
2971declare type InitialInputData = (InitialInputs | null)[];
2972
2973/**
2974 * Used by InitialInputData to store input properties
2975 * that should be set once from attributes.
2976 *
2977 * i+0: attribute name
2978 * i+1: minified/internal input name
2979 * i+2: initial value
2980 *
2981 * e.g. ['role-min', 'minified-input', 'button']
2982 */
2983declare type InitialInputs = string[];
2984
2985/**
2986 * Type of the Inject metadata.
2987 *
2988 * @publicApi
2989 */
2990export declare interface Inject {
2991 /**
2992 * A [DI token](guide/glossary#di-token) that maps to the dependency to be injected.
2993 */
2994 token: any;
2995}
2996
2997/**
2998 * Inject decorator and metadata.
2999 *
3000 * @Annotation
3001 * @publicApi
3002 */
3003export declare const Inject: InjectDecorator;
3004
3005/**
3006 * Injects a token from the currently active injector.
3007 *
3008 * Must be used in the context of a factory function such as one defined for an
3009 * `InjectionToken`. Throws an error if not called from such a context.
3010 *
3011 * Within such a factory function, using this function to request injection of a dependency
3012 * is faster and more type-safe than providing an additional array of dependencies
3013 * (as has been common with `useFactory` providers).
3014 *
3015 * @param token The injection token for the dependency to be injected.
3016 * @param flags Optional flags that control how injection is executed.
3017 * The flags correspond to injection strategies that can be specified with
3018 * parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.
3019 * @returns True if injection is successful, null otherwise.
3020 *
3021 * @usageNotes
3022 *
3023 * ### Example
3024 *
3025 * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
3026 *
3027 * @publicApi
3028 */
3029export declare const inject: typeof ɵɵinject;
3030
3031/**
3032 * Type of the Injectable metadata.
3033 *
3034 * @publicApi
3035 */
3036export declare interface Injectable {
3037 /**
3038 * Determines which injectors will provide the injectable,
3039 * by either associating it with an `@NgModule` or other `InjectorType`,
3040 * or by specifying that this injectable should be provided in one of the following injectors:
3041 * - 'root' : The application-level injector in most apps.
3042 * - 'platform' : A special singleton platform injector shared by all
3043 * applications on the page.
3044 * - 'any' : Provides a unique instance in each lazy loaded module while all eagerly loaded
3045 * modules share one instance.
3046 *
3047 */
3048 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
3049}
3050
3051/**
3052 * Injectable decorator and metadata.
3053 *
3054 * @Annotation
3055 * @publicApi
3056 */
3057export declare const Injectable: InjectableDecorator;
3058
3059/**
3060 * Type of the Injectable decorator / constructor function.
3061 *
3062 * @publicApi
3063 */
3064export declare interface InjectableDecorator {
3065 /**
3066 * Decorator that marks a class as available to be
3067 * provided and injected as a dependency.
3068 *
3069 * @see [Introduction to Services and DI](guide/architecture-services)
3070 * @see [Dependency Injection Guide](guide/dependency-injection)
3071 *
3072 * @usageNotes
3073 *
3074 * Marking a class with `@Injectable` ensures that the compiler
3075 * will generate the necessary metadata to create the class's
3076 * dependencies when the class is injected.
3077 *
3078 * The following example shows how a service class is properly
3079 * marked so that a supporting service can be injected upon creation.
3080 *
3081 * <code-example path="core/di/ts/metadata_spec.ts" region="Injectable"></code-example>
3082 *
3083 */
3084 (): TypeDecorator;
3085 (options?: {
3086 providedIn: Type<any> | 'root' | 'platform' | 'any' | null;
3087 } & InjectableProvider): TypeDecorator;
3088 new (): Injectable;
3089 new (options?: {
3090 providedIn: Type<any> | 'root' | 'platform' | 'any' | null;
3091 } & InjectableProvider): Injectable;
3092}
3093
3094/**
3095 * Injectable providers used in `@Injectable` decorator.
3096 *
3097 * @publicApi
3098 */
3099export declare type InjectableProvider = ValueSansProvider | ExistingSansProvider | StaticClassSansProvider | ConstructorSansProvider | FactorySansProvider | ClassSansProvider;
3100
3101/**
3102 * A `Type` which has an `InjectableDef` static field.
3103 *
3104 * `InjectableDefType`s contain their own Dependency Injection metadata and are usable in an
3105 * `InjectorDef`-based `StaticInjector.
3106 *
3107 * @publicApi
3108 */
3109export declare interface InjectableType<T> extends Type<T> {
3110 /**
3111 * Opaque type whose structure is highly version dependent. Do not rely on any properties.
3112 */
3113 ɵprov: never;
3114}
3115
3116/** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */
3117declare function injectChangeDetectorRef(isPipe?: boolean): ChangeDetectorRef;
3118
3119
3120/**
3121 * Type of the Inject decorator / constructor function.
3122 *
3123 * @publicApi
3124 */
3125export declare interface InjectDecorator {
3126 /**
3127 * Parameter decorator on a dependency parameter of a class constructor
3128 * that specifies a custom provider of the dependency.
3129 *
3130 * @usageNotes
3131 * The following example shows a class constructor that specifies a
3132 * custom provider of a dependency using the parameter decorator.
3133 *
3134 * When `@Inject()` is not present, the injector uses the type annotation of the
3135 * parameter as the provider.
3136 *
3137 * <code-example path="core/di/ts/metadata_spec.ts" region="InjectWithoutDecorator">
3138 * </code-example>
3139 *
3140 * @see ["Dependency Injection Guide"](guide/dependency-injection)
3141 *
3142 */
3143 (token: any): any;
3144 new (token: any): Inject;
3145}
3146
3147/**
3148 * Creates an ElementRef from the most recent node.
3149 *
3150 * @returns The ElementRef instance to use
3151 */
3152declare function injectElementRef(ElementRefToken: typeof ElementRef): ElementRef;
3153
3154
3155/**
3156 * Injection flags for DI.
3157 *
3158 * @publicApi
3159 */
3160export declare enum InjectFlags {
3161 /** Check self and check parent injector if needed */
3162 Default = 0,
3163 /**
3164 * Specifies that an injector should retrieve a dependency from any injector until reaching the
3165 * host element of the current component. (Only used with Element Injector)
3166 */
3167 Host = 1,
3168 /** Don't ascend to ancestors of the node requesting injection. */
3169 Self = 2,
3170 /** Skip the node that is requesting injection. */
3171 SkipSelf = 4,
3172 /** Inject `defaultValue` instead if token not found. */
3173 Optional = 8
3174}
3175
3176/**
3177 * Creates a token that can be used in a DI Provider.
3178 *
3179 * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a
3180 * runtime representation) such as when injecting an interface, callable type, array or
3181 * parameterized type.
3182 *
3183 * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by
3184 * the `Injector`. This provides additional level of type safety.
3185 *
3186 * ```
3187 * interface MyInterface {...}
3188 * var myInterface = injector.get(new InjectionToken<MyInterface>('SomeToken'));
3189 * // myInterface is inferred to be MyInterface.
3190 * ```
3191 *
3192 * When creating an `InjectionToken`, you can optionally specify a factory function which returns
3193 * (possibly by creating) a default value of the parameterized type `T`. This sets up the
3194 * `InjectionToken` using this factory as a provider as if it was defined explicitly in the
3195 * application's root injector. If the factory function, which takes zero arguments, needs to inject
3196 * dependencies, it can do so using the `inject` function. See below for an example.
3197 *
3198 * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which
3199 * overrides the above behavior and marks the token as belonging to a particular `@NgModule`. As
3200 * mentioned above, `'root'` is the default value for `providedIn`.
3201 *
3202 * @usageNotes
3203 * ### Basic Example
3204 *
3205 * ### Plain InjectionToken
3206 *
3207 * {@example core/di/ts/injector_spec.ts region='InjectionToken'}
3208 *
3209 * ### Tree-shakable InjectionToken
3210 *
3211 * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
3212 *
3213 *
3214 * @publicApi
3215 */
3216export declare class InjectionToken<T> {
3217 protected _desc: string;
3218 readonly ɵprov: never | undefined;
3219 constructor(_desc: string, options?: {
3220 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
3221 factory: () => T;
3222 });
3223 toString(): string;
3224}
3225
3226/**
3227 * An InjectionToken that gets the current `Injector` for `createInjector()`-style injectors.
3228 *
3229 * Requesting this token instead of `Injector` allows `StaticInjector` to be tree-shaken from a
3230 * project.
3231 *
3232 * @publicApi
3233 */
3234export declare const INJECTOR: InjectionToken<Injector>;
3235
3236/**
3237 * Concrete injectors implement this interface. Injectors are configured
3238 * with [providers](guide/glossary#provider) that associate
3239 * dependencies of various types with [injection tokens](guide/glossary#di-token).
3240 *
3241 * @see ["DI Providers"](guide/dependency-injection-providers).
3242 * @see `StaticProvider`
3243 *
3244 * @usageNotes
3245 *
3246 * The following example creates a service injector instance.
3247 *
3248 * {@example core/di/ts/provider_spec.ts region='ConstructorProvider'}
3249 *
3250 * ### Usage example
3251 *
3252 * {@example core/di/ts/injector_spec.ts region='Injector'}
3253 *
3254 * `Injector` returns itself when given `Injector` as a token:
3255 *
3256 * {@example core/di/ts/injector_spec.ts region='injectInjector'}
3257 *
3258 * @publicApi
3259 */
3260export declare abstract class Injector {
3261 static THROW_IF_NOT_FOUND: {};
3262 static NULL: Injector;
3263 /**
3264 * Retrieves an instance from the injector based on the provided token.
3265 * @returns The instance from the injector if defined, otherwise the `notFoundValue`.
3266 * @throws When the `notFoundValue` is `undefined` or `Injector.THROW_IF_NOT_FOUND`.
3267 */
3268 abstract get<T>(token: Type<T> | InjectionToken<T> | AbstractType<T>, notFoundValue?: T, flags?: InjectFlags): T;
3269 /**
3270 * @deprecated from v4.0.0 use Type<T> or InjectionToken<T>
3271 * @suppress {duplicate}
3272 */
3273 abstract get(token: any, notFoundValue?: any): any;
3274 /**
3275 * @deprecated from v5 use the new signature Injector.create(options)
3276 */
3277 static create(providers: StaticProvider[], parent?: Injector): Injector;
3278 /**
3279 * Creates a new injector instance that provides one or more dependencies,
3280 * according to a given type or types of `StaticProvider`.
3281 *
3282 * @param options An object with the following properties:
3283 * * `providers`: An array of providers of the [StaticProvider type](api/core/StaticProvider).
3284 * * `parent`: (optional) A parent injector.
3285 * * `name`: (optional) A developer-defined identifying name for the new injector.
3286 *
3287 * @returns The new injector instance.
3288 *
3289 */
3290 static create(options: {
3291 providers: StaticProvider[];
3292 parent?: Injector;
3293 name?: string;
3294 }): Injector;
3295 /** @nocollapse */
3296 static ɵprov: never;
3297}
3298
3299declare const INJECTOR_2 = 9;
3300
3301/**
3302 * A type which has an `InjectorDef` static field.
3303 *
3304 * `InjectorDefTypes` can be used to configure a `StaticInjector`.
3305 *
3306 * @publicApi
3307 */
3308export declare interface InjectorType<T> extends Type<T> {
3309 /**
3310 * Opaque type whose structure is highly version dependent. Do not rely on any properties.
3311 */
3312 ɵinj: never;
3313}
3314
3315/**
3316 * Describes the `InjectorDef` equivalent of a `ModuleWithProviders`, an `InjectorDefType` with an
3317 * associated array of providers.
3318 *
3319 * Objects of this type can be listed in the imports section of an `InjectorDef`.
3320 *
3321 * NOTE: This is a private type and should not be exported
3322 */
3323declare interface InjectorTypeWithProviders<T> {
3324 ngModule: InjectorType<T>;
3325 providers?: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | any[])[];
3326}
3327
3328/** Injects a Renderer2 for the current component. */
3329declare function injectRenderer2(): Renderer2;
3330
3331/**
3332 * Creates a TemplateRef given a node.
3333 *
3334 * @returns The TemplateRef instance to use
3335 */
3336declare function injectTemplateRef<T>(TemplateRefToken: typeof TemplateRef, ElementRefToken: typeof ElementRef): TemplateRef<T> | null;
3337
3338/**
3339 * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef
3340 * already exists, retrieves the existing ViewContainerRef.
3341 *
3342 * @returns The ViewContainerRef instance to use
3343 */
3344declare function injectViewContainerRef(ViewContainerRefToken: typeof ViewContainerRef, ElementRefToken: typeof ElementRef): ViewContainerRef;
3345
3346/**
3347 * Type of metadata for an `Input` property.
3348 *
3349 * @publicApi
3350 */
3351export declare interface Input {
3352 /**
3353 * The name of the DOM property to which the input property is bound.
3354 */
3355 bindingPropertyName?: string;
3356}
3357
3358/**
3359 * @Annotation
3360 * @publicApi
3361 */
3362export declare const Input: InputDecorator;
3363
3364/**
3365 * @publicApi
3366 */
3367export declare interface InputDecorator {
3368 /**
3369 * Decorator that marks a class field as an input property and supplies configuration metadata.
3370 * The input property is bound to a DOM property in the template. During change detection,
3371 * Angular automatically updates the data property with the DOM property's value.
3372 *
3373 * @usageNotes
3374 *
3375 * You can supply an optional name to use in templates when the
3376 * component is instantiated, that maps to the
3377 * name of the bound property. By default, the original
3378 * name of the bound property is used for input binding.
3379 *
3380 * The following example creates a component with two input properties,
3381 * one of which is given a special binding name.
3382 *
3383 * ```typescript
3384 * @Component({
3385 * selector: 'bank-account',
3386 * template: `
3387 * Bank Name: {{bankName}}
3388 * Account Id: {{id}}
3389 * `
3390 * })
3391 * class BankAccount {
3392 * // This property is bound using its original name.
3393 * @Input() bankName: string;
3394 * // this property value is bound to a different property name
3395 * // when this component is instantiated in a template.
3396 * @Input('account-id') id: string;
3397 *
3398 * // this property is not bound, and is not automatically updated by Angular
3399 * normalizedBankName: string;
3400 * }
3401 *
3402 * @Component({
3403 * selector: 'app',
3404 * template: `
3405 * <bank-account bankName="RBC" account-id="4747"></bank-account>
3406 * `
3407 * })
3408 * class App {}
3409 * ```
3410 *
3411 * @see [Input and Output properties](guide/inputs-outputs)
3412 */
3413 (bindingPropertyName?: string): any;
3414 new (bindingPropertyName?: string): any;
3415}
3416
3417/**
3418 * All implicit instruction state is stored here.
3419 *
3420 * It is useful to have a single object where all of the state is stored as a mental model
3421 * (rather it being spread across many different variables.)
3422 *
3423 * PERF NOTE: Turns out that writing to a true global variable is slower than
3424 * having an intermediate object with properties.
3425 */
3426declare interface InstructionState {
3427 /**
3428 * Current `LFrame`
3429 *
3430 * `null` if we have not called `enterView`
3431 */
3432 lFrame: LFrame;
3433 /**
3434 * Stores whether directives should be matched to elements.
3435 *
3436 * When template contains `ngNonBindable` then we need to prevent the runtime from matching
3437 * directives on children of that element.
3438 *
3439 * Example:
3440 * ```
3441 * <my-comp my-directive>
3442 * Should match component / directive.
3443 * </my-comp>
3444 * <div ngNonBindable>
3445 * <my-comp my-directive>
3446 * Should not match component / directive because we are in ngNonBindable.
3447 * </my-comp>
3448 * </div>
3449 * ```
3450 */
3451 bindingsEnabled: boolean;
3452 /**
3453 * In this mode, any changes in bindings will throw an ExpressionChangedAfterChecked error.
3454 *
3455 * Necessary to support ChangeDetectorRef.checkNoChanges().
3456 */
3457 checkNoChangesMode: boolean;
3458}
3459
3460declare interface InternalNgModuleRef<T> extends NgModuleRef<T> {
3461 _bootstrapComponents: Type<any>[];
3462}
3463
3464declare interface InternalViewRef extends ViewRef {
3465 detachFromAppRef(): void;
3466 attachToAppRef(appRef: ApplicationRef): void;
3467}
3468
3469
3470/**
3471 * Returns whether Angular is in development mode. After called once,
3472 * the value is locked and won't change any more.
3473 *
3474 * By default, this is true, unless a user calls `enableProdMode` before calling this.
3475 *
3476 * @publicApi
3477 */
3478export declare function isDevMode(): boolean;
3479
3480/**
3481 * Record representing the item change information.
3482 *
3483 * @publicApi
3484 */
3485export declare interface IterableChangeRecord<V> {
3486 /** Current index of the item in `Iterable` or null if removed. */
3487 readonly currentIndex: number | null;
3488 /** Previous index of the item in `Iterable` or null if added. */
3489 readonly previousIndex: number | null;
3490 /** The item. */
3491 readonly item: V;
3492 /** Track by identity as computed by the `TrackByFunction`. */
3493 readonly trackById: any;
3494}
3495
3496declare class IterableChangeRecord_<V> implements IterableChangeRecord<V> {
3497 item: V;
3498 trackById: any;
3499 currentIndex: number | null;
3500 previousIndex: number | null;
3501 constructor(item: V, trackById: any);
3502}
3503
3504/**
3505 * An object describing the changes in the `Iterable` collection since last time
3506 * `IterableDiffer#diff()` was invoked.
3507 *
3508 * @publicApi
3509 */
3510export declare interface IterableChanges<V> {
3511 /**
3512 * Iterate over all changes. `IterableChangeRecord` will contain information about changes
3513 * to each item.
3514 */
3515 forEachItem(fn: (record: IterableChangeRecord<V>) => void): void;
3516 /**
3517 * Iterate over a set of operations which when applied to the original `Iterable` will produce the
3518 * new `Iterable`.
3519 *
3520 * NOTE: These are not necessarily the actual operations which were applied to the original
3521 * `Iterable`, rather these are a set of computed operations which may not be the same as the
3522 * ones applied.
3523 *
3524 * @param record A change which needs to be applied
3525 * @param previousIndex The `IterableChangeRecord#previousIndex` of the `record` refers to the
3526 * original `Iterable` location, where as `previousIndex` refers to the transient location
3527 * of the item, after applying the operations up to this point.
3528 * @param currentIndex The `IterableChangeRecord#currentIndex` of the `record` refers to the
3529 * original `Iterable` location, where as `currentIndex` refers to the transient location
3530 * of the item, after applying the operations up to this point.
3531 */
3532 forEachOperation(fn: (record: IterableChangeRecord<V>, previousIndex: number | null, currentIndex: number | null) => void): void;
3533 /**
3534 * Iterate over changes in the order of original `Iterable` showing where the original items
3535 * have moved.
3536 */
3537 forEachPreviousItem(fn: (record: IterableChangeRecord<V>) => void): void;
3538 /** Iterate over all added items. */
3539 forEachAddedItem(fn: (record: IterableChangeRecord<V>) => void): void;
3540 /** Iterate over all moved items. */
3541 forEachMovedItem(fn: (record: IterableChangeRecord<V>) => void): void;
3542 /** Iterate over all removed items. */
3543 forEachRemovedItem(fn: (record: IterableChangeRecord<V>) => void): void;
3544 /**
3545 * Iterate over all items which had their identity (as computed by the `TrackByFunction`)
3546 * changed.
3547 */
3548 forEachIdentityChange(fn: (record: IterableChangeRecord<V>) => void): void;
3549}
3550
3551/**
3552 * A strategy for tracking changes over time to an iterable. Used by {@link NgForOf} to
3553 * respond to changes in an iterable by effecting equivalent changes in the DOM.
3554 *
3555 * @publicApi
3556 */
3557export declare interface IterableDiffer<V> {
3558 /**
3559 * Compute a difference between the previous state and the new `object` state.
3560 *
3561 * @param object containing the new value.
3562 * @returns an object describing the difference. The return value is only valid until the next
3563 * `diff()` invocation.
3564 */
3565 diff(object: NgIterable<V> | undefined | null): IterableChanges<V> | null;
3566}
3567
3568/**
3569 * Provides a factory for {@link IterableDiffer}.
3570 *
3571 * @publicApi
3572 */
3573export declare interface IterableDifferFactory {
3574 supports(objects: any): boolean;
3575 create<V>(trackByFn?: TrackByFunction<V>): IterableDiffer<V>;
3576}
3577
3578/**
3579 * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.
3580 *
3581 * @publicApi
3582 */
3583export declare class IterableDiffers {
3584 /** @nocollapse */
3585 static ɵprov: never;
3586 /**
3587 * @deprecated v4.0.0 - Should be private
3588 */
3589 factories: IterableDifferFactory[];
3590 constructor(factories: IterableDifferFactory[]);
3591 static create(factories: IterableDifferFactory[], parent?: IterableDiffers): IterableDiffers;
3592 /**
3593 * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the
3594 * inherited {@link IterableDiffers} instance with the provided factories and return a new
3595 * {@link IterableDiffers} instance.
3596 *
3597 * @usageNotes
3598 * ### Example
3599 *
3600 * The following example shows how to extend an existing list of factories,
3601 * which will only be applied to the injector for this component and its children.
3602 * This step is all that's required to make a new {@link IterableDiffer} available.
3603 *
3604 * ```
3605 * @Component({
3606 * viewProviders: [
3607 * IterableDiffers.extend([new ImmutableListDiffer()])
3608 * ]
3609 * })
3610 * ```
3611 */
3612 static extend(factories: IterableDifferFactory[]): StaticProvider;
3613 find(iterable: any): IterableDifferFactory;
3614}
3615
3616/**
3617 * `KeyValueArray` is an array where even positions contain keys and odd positions contain values.
3618 *
3619 * `KeyValueArray` provides a very efficient way of iterating over its contents. For small
3620 * sets (~10) the cost of binary searching an `KeyValueArray` has about the same performance
3621 * characteristics that of a `Map` with significantly better memory footprint.
3622 *
3623 * If used as a `Map` the keys are stored in alphabetical order so that they can be binary searched
3624 * for retrieval.
3625 *
3626 * See: `keyValueArraySet`, `keyValueArrayGet`, `keyValueArrayIndexOf`, `keyValueArrayDelete`.
3627 */
3628declare interface KeyValueArray<VALUE> extends Array<VALUE | string> {
3629 __brand__: 'array-map';
3630}
3631
3632/**
3633 * Record representing the item change information.
3634 *
3635 * @publicApi
3636 */
3637export declare interface KeyValueChangeRecord<K, V> {
3638 /**
3639 * Current key in the Map.
3640 */
3641 readonly key: K;
3642 /**
3643 * Current value for the key or `null` if removed.
3644 */
3645 readonly currentValue: V | null;
3646 /**
3647 * Previous value for the key or `null` if added.
3648 */
3649 readonly previousValue: V | null;
3650}
3651
3652/**
3653 * An object describing the changes in the `Map` or `{[k:string]: string}` since last time
3654 * `KeyValueDiffer#diff()` was invoked.
3655 *
3656 * @publicApi
3657 */
3658export declare interface KeyValueChanges<K, V> {
3659 /**
3660 * Iterate over all changes. `KeyValueChangeRecord` will contain information about changes
3661 * to each item.
3662 */
3663 forEachItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
3664 /**
3665 * Iterate over changes in the order of original Map showing where the original items
3666 * have moved.
3667 */
3668 forEachPreviousItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
3669 /**
3670 * Iterate over all keys for which values have changed.
3671 */
3672 forEachChangedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
3673 /**
3674 * Iterate over all added items.
3675 */
3676 forEachAddedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
3677 /**
3678 * Iterate over all removed items.
3679 */
3680 forEachRemovedItem(fn: (r: KeyValueChangeRecord<K, V>) => void): void;
3681}
3682
3683/**
3684 * A differ that tracks changes made to an object over time.
3685 *
3686 * @publicApi
3687 */
3688export declare interface KeyValueDiffer<K, V> {
3689 /**
3690 * Compute a difference between the previous state and the new `object` state.
3691 *
3692 * @param object containing the new value.
3693 * @returns an object describing the difference. The return value is only valid until the next
3694 * `diff()` invocation.
3695 */
3696 diff(object: Map<K, V>): KeyValueChanges<K, V> | null;
3697 /**
3698 * Compute a difference between the previous state and the new `object` state.
3699 *
3700 * @param object containing the new value.
3701 * @returns an object describing the difference. The return value is only valid until the next
3702 * `diff()` invocation.
3703 */
3704 diff(object: {
3705 [key: string]: V;
3706 }): KeyValueChanges<string, V> | null;
3707}
3708
3709/**
3710 * Provides a factory for {@link KeyValueDiffer}.
3711 *
3712 * @publicApi
3713 */
3714export declare interface KeyValueDifferFactory {
3715 /**
3716 * Test to see if the differ knows how to diff this kind of object.
3717 */
3718 supports(objects: any): boolean;
3719 /**
3720 * Create a `KeyValueDiffer`.
3721 */
3722 create<K, V>(): KeyValueDiffer<K, V>;
3723}
3724
3725/**
3726 * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.
3727 *
3728 * @publicApi
3729 */
3730export declare class KeyValueDiffers {
3731 /** @nocollapse */
3732 static ɵprov: never;
3733 /**
3734 * @deprecated v4.0.0 - Should be private.
3735 */
3736 factories: KeyValueDifferFactory[];
3737 constructor(factories: KeyValueDifferFactory[]);
3738 static create<S>(factories: KeyValueDifferFactory[], parent?: KeyValueDiffers): KeyValueDiffers;
3739 /**
3740 * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the
3741 * inherited {@link KeyValueDiffers} instance with the provided factories and return a new
3742 * {@link KeyValueDiffers} instance.
3743 *
3744 * @usageNotes
3745 * ### Example
3746 *
3747 * The following example shows how to extend an existing list of factories,
3748 * which will only be applied to the injector for this component and its children.
3749 * This step is all that's required to make a new {@link KeyValueDiffer} available.
3750 *
3751 * ```
3752 * @Component({
3753 * viewProviders: [
3754 * KeyValueDiffers.extend([new ImmutableMapDiffer()])
3755 * ]
3756 * })
3757 * ```
3758 */
3759 static extend<S>(factories: KeyValueDifferFactory[]): StaticProvider;
3760 find(kv: any): KeyValueDifferFactory;
3761}
3762
3763/**
3764 * The state associated with a container.
3765 *
3766 * This is an array so that its structure is closer to LView. This helps
3767 * when traversing the view tree (which is a mix of containers and component
3768 * views), so we can jump to viewOrContainer[NEXT] in the same way regardless
3769 * of type.
3770 */
3771declare interface LContainer extends Array<any> {
3772 /**
3773 * The host element of this LContainer.
3774 *
3775 * The host could be an LView if this container is on a component node.
3776 * In that case, the component LView is its HOST.
3777 */
3778 readonly [HOST]: RElement | RComment | ɵangular_packages_core_core_bp;
3779 /**
3780 * This is a type field which allows us to differentiate `LContainer` from `StylingContext` in an
3781 * efficient way. The value is always set to `true`
3782 */
3783 [TYPE]: true;
3784 /**
3785 * Flag to signify that this `LContainer` may have transplanted views which need to be change
3786 * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
3787 *
3788 * This flag, once set, is never unset for the `LContainer`.
3789 */
3790 [HAS_TRANSPLANTED_VIEWS]: boolean;
3791 /**
3792 * Access to the parent view is necessary so we can propagate back
3793 * up from inside a container to parent[NEXT].
3794 */
3795 [PARENT]: ɵangular_packages_core_core_bp;
3796 /**
3797 * This allows us to jump from a container to a sibling container or component
3798 * view with the same parent, so we can remove listeners efficiently.
3799 */
3800 [NEXT]: ɵangular_packages_core_core_bp | LContainer | null;
3801 /**
3802 * The number of direct transplanted views which need a refresh or have descendants themselves
3803 * that need a refresh but have not marked their ancestors as Dirty. This tells us that during
3804 * change detection we should still descend to find those children to refresh, even if the parents
3805 * are not `Dirty`/`CheckAlways`.
3806 */
3807 [TRANSPLANTED_VIEWS_TO_REFRESH]: number;
3808 /**
3809 * A collection of views created based on the underlying `<ng-template>` element but inserted into
3810 * a different `LContainer`. We need to track views created from a given declaration point since
3811 * queries collect matches from the embedded view declaration point and _not_ the insertion point.
3812 */
3813 [MOVED_VIEWS]: ɵangular_packages_core_core_bp[] | null;
3814 /**
3815 * Pointer to the `TNode` which represents the host of the container.
3816 */
3817 [T_HOST]: TNode;
3818 /** The comment element that serves as an anchor for this LContainer. */
3819 readonly [NATIVE]: RComment;
3820 /**
3821 * Array of `ViewRef`s used by any `ViewContainerRef`s that point to this container.
3822 *
3823 * This is lazily initialized by `ViewContainerRef` when the first view is inserted.
3824 */
3825 [VIEW_REFS]: ViewRef[] | null;
3826}
3827
3828/**
3829 *
3830 */
3831declare interface LFrame {
3832 /**
3833 * Parent LFrame.
3834 *
3835 * This is needed when `leaveView` is called to restore the previous state.
3836 */
3837 parent: LFrame;
3838 /**
3839 * Child LFrame.
3840 *
3841 * This is used to cache existing LFrames to relieve the memory pressure.
3842 */
3843 child: LFrame | null;
3844 /**
3845 * State of the current view being processed.
3846 *
3847 * An array of nodes (text, element, container, etc), pipes, their bindings, and
3848 * any local variables that need to be stored between invocations.
3849 */
3850 lView: ɵangular_packages_core_core_bp;
3851 /**
3852 * Current `TView` associated with the `LFrame.lView`.
3853 *
3854 * One can get `TView` from `lFrame[TVIEW]` however because it is so common it makes sense to
3855 * store it in `LFrame` for perf reasons.
3856 */
3857 tView: TView;
3858 /**
3859 * Used to set the parent property when nodes are created and track query results.
3860 *
3861 * This is used in conjunction with `isParent`.
3862 */
3863 previousOrParentTNode: TNode;
3864 /**
3865 * If `isParent` is:
3866 * - `true`: then `previousOrParentTNode` points to a parent node.
3867 * - `false`: then `previousOrParentTNode` points to previous node (sibling).
3868 */
3869 isParent: boolean;
3870 /**
3871 * Index of currently selected element in LView.
3872 *
3873 * Used by binding instructions. Updated as part of advance instruction.
3874 */
3875 selectedIndex: number;
3876 /**
3877 * Current pointer to the binding index.
3878 */
3879 bindingIndex: number;
3880 /**
3881 * The last viewData retrieved by nextContext().
3882 * Allows building nextContext() and reference() calls.
3883 *
3884 * e.g. const inner = x().$implicit; const outer = x().$implicit;
3885 */
3886 contextLView: ɵangular_packages_core_core_bp;
3887 /**
3888 * Store the element depth count. This is used to identify the root elements of the template
3889 * so that we can then attach patch data `LView` to only those elements. We know that those
3890 * are the only places where the patch data could change, this way we will save on number
3891 * of places where tha patching occurs.
3892 */
3893 elementDepthCount: number;
3894 /**
3895 * Current namespace to be used when creating elements
3896 */
3897 currentNamespace: string | null;
3898 /**
3899 * The root index from which pure function instructions should calculate their binding
3900 * indices. In component views, this is TView.bindingStartIndex. In a host binding
3901 * context, this is the TView.expandoStartIndex + any dirs/hostVars before the given dir.
3902 */
3903 bindingRootIndex: number;
3904 /**
3905 * Current index of a View or Content Query which needs to be processed next.
3906 * We iterate over the list of Queries and increment current query index at every step.
3907 */
3908 currentQueryIndex: number;
3909 /**
3910 * When host binding is executing this points to the directive index.
3911 * `TView.data[currentDirectiveIndex]` is `DirectiveDef`
3912 * `LView[currentDirectiveIndex]` is directive instance.
3913 */
3914 currentDirectiveIndex: number;
3915}
3916
3917/**
3918 * Provide this token to set the locale of your application.
3919 * It is used for i18n extraction, by i18n pipes (DatePipe, I18nPluralPipe, CurrencyPipe,
3920 * DecimalPipe and PercentPipe) and by ICU expressions.
3921 *
3922 * See the [i18n guide](guide/i18n#setting-up-locale) for more information.
3923 *
3924 * @usageNotes
3925 * ### Example
3926 *
3927 * ```typescript
3928 * import { LOCALE_ID } from '@angular/core';
3929 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3930 * import { AppModule } from './app/app.module';
3931 *
3932 * platformBrowserDynamic().bootstrapModule(AppModule, {
3933 * providers: [{provide: LOCALE_ID, useValue: 'en-US' }]
3934 * });
3935 * ```
3936 *
3937 * @publicApi
3938 */
3939export declare const LOCALE_ID: InjectionToken<string>;
3940
3941/**
3942 * Type for a function that extracts a value for a local refs.
3943 * Example:
3944 * - `<div #nativeDivEl>` - `nativeDivEl` should point to the native `<div>` element;
3945 * - `<ng-template #tplRef>` - `tplRef` should point to the `TemplateRef` instance;
3946 */
3947declare type LocalRefExtractor = (tNode: TNodeWithLocalRefs, currentView: ɵangular_packages_core_core_bp) => any;
3948
3949/**
3950 * lQueries represent a collection of individual LQuery objects tracked in a given view.
3951 */
3952declare interface LQueries {
3953 /**
3954 * A collection of queries tracked in a given view.
3955 */
3956 queries: LQuery<any>[];
3957 /**
3958 * A method called when a new embedded view is created. As a result a set of LQueries applicable
3959 * for a new embedded view is instantiated (cloned) from the declaration view.
3960 * @param tView
3961 */
3962 createEmbeddedView(tView: TView): LQueries | null;
3963 /**
3964 * A method called when an embedded view is inserted into a container. As a result all impacted
3965 * `LQuery` objects (and associated `QueryList`) are marked as dirty.
3966 * @param tView
3967 */
3968 insertView(tView: TView): void;
3969 /**
3970 * A method called when an embedded view is detached from a container. As a result all impacted
3971 * `LQuery` objects (and associated `QueryList`) are marked as dirty.
3972 * @param tView
3973 */
3974 detachView(tView: TView): void;
3975}
3976
3977/**
3978 * An interface that represents query-related information specific to a view instance. Most notably
3979 * it contains:
3980 * - materialized query matches;
3981 * - a pointer to a QueryList where materialized query results should be reported.
3982 */
3983declare interface LQuery<T> {
3984 /**
3985 * Materialized query matches for a given view only (!). Results are initialized lazily so the
3986 * array of matches is set to `null` initially.
3987 */
3988 matches: (T | null)[] | null;
3989 /**
3990 * A QueryList where materialized query results should be reported.
3991 */
3992 queryList: QueryList<T>;
3993 /**
3994 * Clones an LQuery for an embedded view. A cloned query shares the same `QueryList` but has a
3995 * separate collection of materialized matches.
3996 */
3997 clone(): LQuery<T>;
3998 /**
3999 * Called when an embedded view, impacting results of this query, is inserted or removed.
4000 */
4001 setDirty(): void;
4002}
4003
4004/** Flags associated with an LView (saved in LView[FLAGS]) */
4005declare const enum LViewFlags {
4006 /** The state of the init phase on the first 2 bits */
4007 InitPhaseStateIncrementer = 1,
4008 InitPhaseStateMask = 3,
4009 /**
4010 * Whether or not the view is in creationMode.
4011 *
4012 * This must be stored in the view rather than using `data` as a marker so that
4013 * we can properly support embedded views. Otherwise, when exiting a child view
4014 * back into the parent view, `data` will be defined and `creationMode` will be
4015 * improperly reported as false.
4016 */
4017 CreationMode = 4,
4018 /**
4019 * Whether or not this LView instance is on its first processing pass.
4020 *
4021 * An LView instance is considered to be on its "first pass" until it
4022 * has completed one creation mode run and one update mode run. At this
4023 * time, the flag is turned off.
4024 */
4025 FirstLViewPass = 8,
4026 /** Whether this view has default change detection strategy (checks always) or onPush */
4027 CheckAlways = 16,
4028 /**
4029 * Whether or not manual change detection is turned on for onPush components.
4030 *
4031 * This is a special mode that only marks components dirty in two cases:
4032 * 1) There has been a change to an @Input property
4033 * 2) `markDirty()` has been called manually by the user
4034 *
4035 * Note that in this mode, the firing of events does NOT mark components
4036 * dirty automatically.
4037 *
4038 * Manual mode is turned off by default for backwards compatibility, as events
4039 * automatically mark OnPush components dirty in View Engine.
4040 *
4041 * TODO: Add a public API to ChangeDetectionStrategy to turn this mode on
4042 */
4043 ManualOnPush = 32,
4044 /** Whether or not this view is currently dirty (needing check) */
4045 Dirty = 64,
4046 /** Whether or not this view is currently attached to change detection tree. */
4047 Attached = 128,
4048 /** Whether or not this view is destroyed. */
4049 Destroyed = 256,
4050 /** Whether or not this view is the root view */
4051 IsRoot = 512,
4052 /**
4053 * Whether this moved LView was needs to be refreshed at the insertion location because the
4054 * declaration was dirty.
4055 */
4056 RefreshTransplantedView = 1024,
4057 /**
4058 * Index of the current init phase on last 21 bits
4059 */
4060 IndexWithinInitPhaseIncrementer = 2048,
4061 IndexWithinInitPhaseShift = 11,
4062 IndexWithinInitPhaseReset = 2047
4063}
4064
4065/**
4066 * Use this enum at bootstrap as an option of `bootstrapModule` to define the strategy
4067 * that the compiler should use in case of missing translations:
4068 * - Error: throw if you have missing translations.
4069 * - Warning (default): show a warning in the console and/or shell.
4070 * - Ignore: do nothing.
4071 *
4072 * See the [i18n guide](guide/i18n#missing-translation) for more information.
4073 *
4074 * @usageNotes
4075 * ### Example
4076 * ```typescript
4077 * import { MissingTranslationStrategy } from '@angular/core';
4078 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4079 * import { AppModule } from './app/app.module';
4080 *
4081 * platformBrowserDynamic().bootstrapModule(AppModule, {
4082 * missingTranslation: MissingTranslationStrategy.Error
4083 * });
4084 * ```
4085 *
4086 * @publicApi
4087 */
4088export declare enum MissingTranslationStrategy {
4089 Error = 0,
4090 Warning = 1,
4091 Ignore = 2
4092}
4093
4094/**
4095 * Combination of NgModuleFactory and ComponentFactorys.
4096 *
4097 * @publicApi
4098 */
4099export declare class ModuleWithComponentFactories<T> {
4100 ngModuleFactory: NgModuleFactory<T>;
4101 componentFactories: ComponentFactory<any>[];
4102 constructor(ngModuleFactory: NgModuleFactory<T>, componentFactories: ComponentFactory<any>[]);
4103}
4104
4105/**
4106 * A wrapper around an NgModule that associates it with [providers](guide/glossary#provider
4107 * "Definition"). Usage without a generic type is deprecated.
4108 *
4109 * @see [Deprecations](guide/deprecations#modulewithproviders-type-without-a-generic)
4110 *
4111 * @publicApi
4112 */
4113export declare interface ModuleWithProviders<T> {
4114 ngModule: Type<T>;
4115 providers?: Provider[];
4116}
4117
4118declare const MOVED_VIEWS = 9;
4119
4120declare const NATIVE = 7;
4121
4122declare const NEXT = 4;
4123
4124declare interface NgContentDef {
4125 /**
4126 * this index is checked against NodeDef.ngContentIndex to find the nodes
4127 * that are matched by this ng-content.
4128 * Note that a NodeDef with an ng-content can be reprojected, i.e.
4129 * have a ngContentIndex on its own.
4130 */
4131 index: number;
4132}
4133
4134/**
4135 * A type describing supported iterable types.
4136 *
4137 * @publicApi
4138 */
4139export declare type NgIterable<T> = Array<T> | Iterable<T>;
4140
4141/**
4142 * Type of the NgModule metadata.
4143 *
4144 * @publicApi
4145 */
4146export declare interface NgModule {
4147 /**
4148 * The set of injectable objects that are available in the injector
4149 * of this module.
4150 *
4151 * @see [Dependency Injection guide](guide/dependency-injection)
4152 * @see [NgModule guide](guide/providers)
4153 *
4154 * @usageNotes
4155 *
4156 * Dependencies whose providers are listed here become available for injection
4157 * into any component, directive, pipe or service that is a child of this injector.
4158 * The NgModule used for bootstrapping uses the root injector, and can provide dependencies
4159 * to any part of the app.
4160 *
4161 * A lazy-loaded module has its own injector, typically a child of the app root injector.
4162 * Lazy-loaded services are scoped to the lazy-loaded module's injector.
4163 * If a lazy-loaded module also provides the `UserService`, any component created
4164 * within that module's context (such as by router navigation) gets the local instance
4165 * of the service, not the instance in the root injector.
4166 * Components in external modules continue to receive the instance provided by their injectors.
4167 *
4168 * ### Example
4169 *
4170 * The following example defines a class that is injected in
4171 * the HelloWorld NgModule:
4172 *
4173 * ```
4174 * class Greeter {
4175 * greet(name:string) {
4176 * return 'Hello ' + name + '!';
4177 * }
4178 * }
4179 *
4180 * @NgModule({
4181 * providers: [
4182 * Greeter
4183 * ]
4184 * })
4185 * class HelloWorld {
4186 * greeter:Greeter;
4187 *
4188 * constructor(greeter:Greeter) {
4189 * this.greeter = greeter;
4190 * }
4191 * }
4192 * ```
4193 */
4194 providers?: Provider[];
4195 /**
4196 * The set of components, directives, and pipes ([declarables](guide/glossary#declarable))
4197 * that belong to this module.
4198 *
4199 * @usageNotes
4200 *
4201 * The set of selectors that are available to a template include those declared here, and
4202 * those that are exported from imported NgModules.
4203 *
4204 * Declarables must belong to exactly one module.
4205 * The compiler emits an error if you try to declare the same class in more than one module.
4206 * Be careful not to declare a class that is imported from another module.
4207 *
4208 * ### Example
4209 *
4210 * The following example allows the CommonModule to use the `NgFor`
4211 * directive.
4212 *
4213 * ```javascript
4214 * @NgModule({
4215 * declarations: [NgFor]
4216 * })
4217 * class CommonModule {
4218 * }
4219 * ```
4220 */
4221 declarations?: Array<Type<any> | any[]>;
4222 /**
4223 * The set of NgModules whose exported [declarables](guide/glossary#declarable)
4224 * are available to templates in this module.
4225 *
4226 * @usageNotes
4227 *
4228 * A template can use exported declarables from any
4229 * imported module, including those from modules that are imported indirectly
4230 * and re-exported.
4231 * For example, `ModuleA` imports `ModuleB`, and also exports
4232 * it, which makes the declarables from `ModuleB` available
4233 * wherever `ModuleA` is imported.
4234 *
4235 * ### Example
4236 *
4237 * The following example allows MainModule to use anything exported by
4238 * `CommonModule`:
4239 *
4240 * ```javascript
4241 * @NgModule({
4242 * imports: [CommonModule]
4243 * })
4244 * class MainModule {
4245 * }
4246 * ```
4247 *
4248 */
4249 imports?: Array<Type<any> | ModuleWithProviders<{}> | any[]>;
4250 /**
4251 * The set of components, directives, and pipes declared in this
4252 * NgModule that can be used in the template of any component that is part of an
4253 * NgModule that imports this NgModule. Exported declarations are the module's public API.
4254 *
4255 * A declarable belongs to one and only one NgModule.
4256 * A module can list another module among its exports, in which case all of that module's
4257 * public declaration are exported.
4258 *
4259 * @usageNotes
4260 *
4261 * Declarations are private by default.
4262 * If this ModuleA does not export UserComponent, then only the components within this
4263 * ModuleA can use UserComponent.
4264 *
4265 * ModuleA can import ModuleB and also export it, making exports from ModuleB
4266 * available to an NgModule that imports ModuleA.
4267 *
4268 * ### Example
4269 *
4270 * The following example exports the `NgFor` directive from CommonModule.
4271 *
4272 * ```javascript
4273 * @NgModule({
4274 * exports: [NgFor]
4275 * })
4276 * class CommonModule {
4277 * }
4278 * ```
4279 */
4280 exports?: Array<Type<any> | any[]>;
4281 /**
4282 * The set of components to compile when this NgModule is defined,
4283 * so that they can be dynamically loaded into the view.
4284 *
4285 * For each component listed here, Angular creates a `ComponentFactory`
4286 * and stores it in the `ComponentFactoryResolver`.
4287 *
4288 * Angular automatically adds components in the module's bootstrap
4289 * and route definitions into the `entryComponents` list. Use this
4290 * option to add components that are bootstrapped
4291 * using one of the imperative techniques, such as `ViewContainerRef.createComponent()`.
4292 *
4293 * @see [Entry Components](guide/entry-components)
4294 * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.
4295 */
4296 entryComponents?: Array<Type<any> | any[]>;
4297 /**
4298 * The set of components that are bootstrapped when
4299 * this module is bootstrapped. The components listed here
4300 * are automatically added to `entryComponents`.
4301 */
4302 bootstrap?: Array<Type<any> | any[]>;
4303 /**
4304 * The set of schemas that declare elements to be allowed in the NgModule.
4305 * Elements and properties that are neither Angular components nor directives
4306 * must be declared in a schema.
4307 *
4308 * Allowed value are `NO_ERRORS_SCHEMA` and `CUSTOM_ELEMENTS_SCHEMA`.
4309 *
4310 * @security When using one of `NO_ERRORS_SCHEMA` or `CUSTOM_ELEMENTS_SCHEMA`
4311 * you must ensure that allowed elements and properties securely escape inputs.
4312 */
4313 schemas?: Array<SchemaMetadata | any[]>;
4314 /**
4315 * A name or path that uniquely identifies this NgModule in `getModuleFactory`.
4316 * If left `undefined`, the NgModule is not registered with
4317 * `getModuleFactory`.
4318 */
4319 id?: string;
4320 /**
4321 * When present, this module is ignored by the AOT compiler.
4322 * It remains in distributed code, and the JIT compiler attempts to compile it
4323 * at run time, in the browser.
4324 * To ensure the correct behavior, the app must import `@angular/compiler`.
4325 */
4326 jit?: true;
4327}
4328
4329/**
4330 * @Annotation
4331 * @publicApi
4332 */
4333export declare const NgModule: NgModuleDecorator;
4334
4335/**
4336 * Type of the NgModule decorator / constructor function.
4337 *
4338 * @publicApi
4339 */
4340export declare interface NgModuleDecorator {
4341 /**
4342 * Decorator that marks a class as an NgModule and supplies configuration metadata.
4343 */
4344 (obj?: NgModule): TypeDecorator;
4345 new (obj?: NgModule): NgModule;
4346}
4347
4348declare interface NgModuleDefinition extends Definition<NgModuleDefinitionFactory> {
4349 providers: NgModuleProviderDef[];
4350 providersByKey: {
4351 [tokenKey: string]: NgModuleProviderDef;
4352 };
4353 modules: any[];
4354 scope: 'root' | 'platform' | null;
4355}
4356
4357declare interface NgModuleDefinitionFactory extends DefinitionFactory<NgModuleDefinition> {
4358}
4359
4360/**
4361 * @publicApi
4362 */
4363export declare abstract class NgModuleFactory<T> {
4364 abstract get moduleType(): Type<T>;
4365 abstract create(parentInjector: Injector | null): NgModuleRef<T>;
4366}
4367
4368/**
4369 * Used to load ng module factories.
4370 *
4371 * @publicApi
4372 * @deprecated the `string` form of `loadChildren` is deprecated, and `NgModuleFactoryLoader` is
4373 * part of its implementation. See `LoadChildren` for more details.
4374 */
4375export declare abstract class NgModuleFactoryLoader {
4376 abstract load(path: string): Promise<NgModuleFactory<any>>;
4377}
4378
4379declare interface NgModuleProviderDef {
4380 flags: ɵNodeFlags;
4381 index: number;
4382 token: any;
4383 value: any;
4384 deps: DepDef[];
4385}
4386
4387/**
4388 * Represents an instance of an `NgModule` created by an `NgModuleFactory`.
4389 * Provides access to the `NgModule` instance and related objects.
4390 *
4391 * @publicApi
4392 */
4393export declare abstract class NgModuleRef<T> {
4394 /**
4395 * The injector that contains all of the providers of the `NgModule`.
4396 */
4397 abstract get injector(): Injector;
4398 /**
4399 * The resolver that can retrieve the component factories
4400 * declared in the `entryComponents` property of the module.
4401 */
4402 abstract get componentFactoryResolver(): ComponentFactoryResolver;
4403 /**
4404 * The `NgModule` instance.
4405 */
4406 abstract get instance(): T;
4407 /**
4408 * Destroys the module instance and all of the data structures associated with it.
4409 */
4410 abstract destroy(): void;
4411 /**
4412 * Registers a callback to be executed when the module is destroyed.
4413 */
4414 abstract onDestroy(callback: () => void): void;
4415}
4416
4417/**
4418 * A token for third-party components that can register themselves with NgProbe.
4419 *
4420 * @publicApi
4421 */
4422export declare class NgProbeToken {
4423 name: string;
4424 token: any;
4425 constructor(name: string, token: any);
4426}
4427
4428/**
4429 * An injectable service for executing work inside or outside of the Angular zone.
4430 *
4431 * The most common use of this service is to optimize performance when starting a work consisting of
4432 * one or more asynchronous tasks that don't require UI updates or error handling to be handled by
4433 * Angular. Such tasks can be kicked off via {@link #runOutsideAngular} and if needed, these tasks
4434 * can reenter the Angular zone via {@link #run}.
4435 *
4436 * <!-- TODO: add/fix links to:
4437 * - docs explaining zones and the use of zones in Angular and change-detection
4438 * - link to runOutsideAngular/run (throughout this file!)
4439 * -->
4440 *
4441 * @usageNotes
4442 * ### Example
4443 *
4444 * ```
4445 * import {Component, NgZone} from '@angular/core';
4446 * import {NgIf} from '@angular/common';
4447 *
4448 * @Component({
4449 * selector: 'ng-zone-demo',
4450 * template: `
4451 * <h2>Demo: NgZone</h2>
4452 *
4453 * <p>Progress: {{progress}}%</p>
4454 * <p *ngIf="progress >= 100">Done processing {{label}} of Angular zone!</p>
4455 *
4456 * <button (click)="processWithinAngularZone()">Process within Angular zone</button>
4457 * <button (click)="processOutsideOfAngularZone()">Process outside of Angular zone</button>
4458 * `,
4459 * })
4460 * export class NgZoneDemo {
4461 * progress: number = 0;
4462 * label: string;
4463 *
4464 * constructor(private _ngZone: NgZone) {}
4465 *
4466 * // Loop inside the Angular zone
4467 * // so the UI DOES refresh after each setTimeout cycle
4468 * processWithinAngularZone() {
4469 * this.label = 'inside';
4470 * this.progress = 0;
4471 * this._increaseProgress(() => console.log('Inside Done!'));
4472 * }
4473 *
4474 * // Loop outside of the Angular zone
4475 * // so the UI DOES NOT refresh after each setTimeout cycle
4476 * processOutsideOfAngularZone() {
4477 * this.label = 'outside';
4478 * this.progress = 0;
4479 * this._ngZone.runOutsideAngular(() => {
4480 * this._increaseProgress(() => {
4481 * // reenter the Angular zone and display done
4482 * this._ngZone.run(() => { console.log('Outside Done!'); });
4483 * });
4484 * });
4485 * }
4486 *
4487 * _increaseProgress(doneCallback: () => void) {
4488 * this.progress += 1;
4489 * console.log(`Current progress: ${this.progress}%`);
4490 *
4491 * if (this.progress < 100) {
4492 * window.setTimeout(() => this._increaseProgress(doneCallback), 10);
4493 * } else {
4494 * doneCallback();
4495 * }
4496 * }
4497 * }
4498 * ```
4499 *
4500 * @publicApi
4501 */
4502export declare class NgZone {
4503 readonly hasPendingMacrotasks: boolean;
4504 readonly hasPendingMicrotasks: boolean;
4505 /**
4506 * Whether there are no outstanding microtasks or macrotasks.
4507 */
4508 readonly isStable: boolean;
4509 /**
4510 * Notifies when code enters Angular Zone. This gets fired first on VM Turn.
4511 */
4512 readonly onUnstable: EventEmitter<any>;
4513 /**
4514 * Notifies when there is no more microtasks enqueued in the current VM Turn.
4515 * This is a hint for Angular to do change detection, which may enqueue more microtasks.
4516 * For this reason this event can fire multiple times per VM Turn.
4517 */
4518 readonly onMicrotaskEmpty: EventEmitter<any>;
4519 /**
4520 * Notifies when the last `onMicrotaskEmpty` has run and there are no more microtasks, which
4521 * implies we are about to relinquish VM turn.
4522 * This event gets called just once.
4523 */
4524 readonly onStable: EventEmitter<any>;
4525 /**
4526 * Notifies that an error has been delivered.
4527 */
4528 readonly onError: EventEmitter<any>;
4529 constructor({ enableLongStackTrace, shouldCoalesceEventChangeDetection }: {
4530 enableLongStackTrace?: boolean | undefined;
4531 shouldCoalesceEventChangeDetection?: boolean | undefined;
4532 });
4533 static isInAngularZone(): boolean;
4534 static assertInAngularZone(): void;
4535 static assertNotInAngularZone(): void;
4536 /**
4537 * Executes the `fn` function synchronously within the Angular zone and returns value returned by
4538 * the function.
4539 *
4540 * Running functions via `run` allows you to reenter Angular zone from a task that was executed
4541 * outside of the Angular zone (typically started via {@link #runOutsideAngular}).
4542 *
4543 * Any future tasks or microtasks scheduled from within this function will continue executing from
4544 * within the Angular zone.
4545 *
4546 * If a synchronous error happens it will be rethrown and not reported via `onError`.
4547 */
4548 run<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T;
4549 /**
4550 * Executes the `fn` function synchronously within the Angular zone as a task and returns value
4551 * returned by the function.
4552 *
4553 * Running functions via `run` allows you to reenter Angular zone from a task that was executed
4554 * outside of the Angular zone (typically started via {@link #runOutsideAngular}).
4555 *
4556 * Any future tasks or microtasks scheduled from within this function will continue executing from
4557 * within the Angular zone.
4558 *
4559 * If a synchronous error happens it will be rethrown and not reported via `onError`.
4560 */
4561 runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[], name?: string): T;
4562 /**
4563 * Same as `run`, except that synchronous errors are caught and forwarded via `onError` and not
4564 * rethrown.
4565 */
4566 runGuarded<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any[]): T;
4567 /**
4568 * Executes the `fn` function synchronously in Angular's parent zone and returns value returned by
4569 * the function.
4570 *
4571 * Running functions via {@link #runOutsideAngular} allows you to escape Angular's zone and do
4572 * work that
4573 * doesn't trigger Angular change-detection or is subject to Angular's error handling.
4574 *
4575 * Any future tasks or microtasks scheduled from within this function will continue executing from
4576 * outside of the Angular zone.
4577 *
4578 * Use {@link #run} to reenter the Angular zone and do work that updates the application model.
4579 */
4580 runOutsideAngular<T>(fn: (...args: any[]) => T): T;
4581}
4582
4583/**
4584 * Defines a schema that allows any property on any element.
4585 *
4586 * @publicApi
4587 */
4588export declare const NO_ERRORS_SCHEMA: SchemaMetadata;
4589
4590declare interface NodeCheckFn {
4591 (view: ViewData, nodeIndex: number, argStyle: ɵArgumentType.Dynamic, values: any[]): any;
4592 (view: ViewData, nodeIndex: number, argStyle: ɵArgumentType.Inline, v0?: any, v1?: any, v2?: any, v3?: any, v4?: any, v5?: any, v6?: any, v7?: any, v8?: any, v9?: any): any;
4593}
4594
4595/**
4596 * Node instance data.
4597 *
4598 * We have a separate type per NodeType to save memory
4599 * (TextData | ElementData | ProviderData | PureExpressionData | QueryList<any>)
4600 *
4601 * To keep our code monomorphic,
4602 * we prohibit using `NodeData` directly but enforce the use of accessors (`asElementData`, ...).
4603 * This way, no usage site can get a `NodeData` from view.nodes and then use it for different
4604 * purposes.
4605 */
4606declare class NodeData {
4607 private __brand;
4608}
4609
4610/**
4611 * A node definition in the view.
4612 *
4613 * Note: We use one type for all nodes so that loops that loop over all nodes
4614 * of a ViewDefinition stay monomorphic!
4615 */
4616declare interface NodeDef {
4617 flags: ɵNodeFlags;
4618 nodeIndex: number;
4619 checkIndex: number;
4620 parent: NodeDef | null;
4621 renderParent: NodeDef | null;
4622 /** this is checked against NgContentDef.index to find matched nodes */
4623 ngContentIndex: number | null;
4624 /** number of transitive children */
4625 childCount: number;
4626 /** aggregated NodeFlags for all transitive children (does not include self) **/
4627 childFlags: ɵNodeFlags;
4628 /** aggregated NodeFlags for all direct children (does not include self) **/
4629 directChildFlags: ɵNodeFlags;
4630 bindingIndex: number;
4631 bindings: BindingDef[];
4632 bindingFlags: ɵBindingFlags;
4633 outputIndex: number;
4634 outputs: OutputDef[];
4635 /**
4636 * references that the user placed on the element
4637 */
4638 references: {
4639 [refId: string]: ɵQueryValueType;
4640 };
4641 /**
4642 * ids and value types of all queries that are matched by this node.
4643 */
4644 matchedQueries: {
4645 [queryId: number]: ɵQueryValueType;
4646 };
4647 /** Binary or of all matched query ids of this node. */
4648 matchedQueryIds: number;
4649 /**
4650 * Binary or of all query ids that are matched by one of the children.
4651 * This includes query ids from templates as well.
4652 * Used as a bloom filter.
4653 */
4654 childMatchedQueries: number;
4655 element: ElementDef | null;
4656 provider: ProviderDef | null;
4657 text: TextDef | null;
4658 query: QueryDef | null;
4659 ngContent: NgContentDef | null;
4660}
4661
4662/**
4663 * Function to call console.error at the right source location. This is an indirection
4664 * via another function as browser will log the location that actually called
4665 * `console.error`.
4666 */
4667declare interface NodeLogger {
4668 (): () => void;
4669}
4670
4671/**
4672 * Object Oriented style of API needed to create elements and text nodes.
4673 *
4674 * This is the native browser API style, e.g. operations are methods on individual objects
4675 * like HTMLElement. With this style, no additional code is needed as a facade
4676 * (reducing payload size).
4677 * */
4678declare interface ObjectOrientedRenderer3 {
4679 createComment(data: string): RComment;
4680 createElement(tagName: string): RElement;
4681 createElementNS(namespace: string, tagName: string): RElement;
4682 createTextNode(data: string): RText;
4683 querySelector(selectors: string): RElement | null;
4684}
4685
4686/**
4687 * @description
4688 * A lifecycle hook that is called when any data-bound property of a directive changes.
4689 * Define an `ngOnChanges()` method to handle the changes.
4690 *
4691 * @see `DoCheck`
4692 * @see `OnInit`
4693 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
4694 *
4695 * @usageNotes
4696 * The following snippet shows how a component can implement this interface to
4697 * define an on-changes handler for an input property.
4698 *
4699 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnChanges'}
4700 *
4701 * @publicApi
4702 */
4703export declare interface OnChanges {
4704 /**
4705 * A callback method that is invoked immediately after the
4706 * default change detector has checked data-bound properties
4707 * if at least one has changed, and before the view and content
4708 * children are checked.
4709 * @param changes The changed properties.
4710 */
4711 ngOnChanges(changes: SimpleChanges): void;
4712}
4713
4714/**
4715 * A lifecycle hook that is called when a directive, pipe, or service is destroyed.
4716 * Use for any custom cleanup that needs to occur when the
4717 * instance is destroyed.
4718 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
4719 *
4720 * @usageNotes
4721 * The following snippet shows how a component can implement this interface
4722 * to define its own custom clean-up method.
4723 *
4724 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnDestroy'}
4725 *
4726 * @publicApi
4727 */
4728export declare interface OnDestroy {
4729 /**
4730 * A callback method that performs custom clean-up, invoked immediately
4731 * before a directive, pipe, or service instance is destroyed.
4732 */
4733 ngOnDestroy(): void;
4734}
4735
4736/**
4737 * @description
4738 * A lifecycle hook that is called after Angular has initialized
4739 * all data-bound properties of a directive.
4740 * Define an `ngOnInit()` method to handle any additional initialization tasks.
4741 *
4742 * @see `AfterContentInit`
4743 * @see [Lifecycle hooks guide](guide/lifecycle-hooks)
4744 *
4745 * @usageNotes
4746 * The following snippet shows how a component can implement this interface to
4747 * define its own initialization method.
4748 *
4749 * {@example core/ts/metadata/lifecycle_hooks_spec.ts region='OnInit'}
4750 *
4751 * @publicApi
4752 */
4753export declare interface OnInit {
4754 /**
4755 * A callback method that is invoked immediately after the
4756 * default change detector has checked the directive's
4757 * data-bound properties for the first time,
4758 * and before any of the view or content children have been checked.
4759 * It is invoked only once when the directive is instantiated.
4760 */
4761 ngOnInit(): void;
4762}
4763
4764declare interface OpaqueViewState {
4765 '__brand__': 'Brand for OpaqueViewState that nothing will match';
4766}
4767
4768/**
4769 * Type of the Optional metadata.
4770 *
4771 * @publicApi
4772 */
4773export declare interface Optional {
4774}
4775
4776/**
4777 * Optional decorator and metadata.
4778 *
4779 * @Annotation
4780 * @publicApi
4781 */
4782export declare const Optional: OptionalDecorator;
4783
4784/**
4785 * Type of the Optional decorator / constructor function.
4786 *
4787 * @publicApi
4788 */
4789export declare interface OptionalDecorator {
4790 /**
4791 * Parameter decorator to be used on constructor parameters,
4792 * which marks the parameter as being an optional dependency.
4793 * The DI framework provides null if the dependency is not found.
4794 *
4795 * Can be used together with other parameter decorators
4796 * that modify how dependency injection operates.
4797 *
4798 * @usageNotes
4799 *
4800 * The following code allows the possibility of a null result:
4801 *
4802 * <code-example path="core/di/ts/metadata_spec.ts" region="Optional">
4803 * </code-example>
4804 *
4805 * @see ["Dependency Injection Guide"](guide/dependency-injection).
4806 */
4807 (): any;
4808 new (): Optional;
4809}
4810
4811/**
4812 * Type of the Output metadata.
4813 *
4814 * @publicApi
4815 */
4816export declare interface Output {
4817 /**
4818 * The name of the DOM property to which the output property is bound.
4819 */
4820 bindingPropertyName?: string;
4821}
4822
4823/**
4824 * @Annotation
4825 * @publicApi
4826 */
4827export declare const Output: OutputDecorator;
4828
4829/**
4830 * Type of the Output decorator / constructor function.
4831 *
4832 * @publicApi
4833 */
4834export declare interface OutputDecorator {
4835 /**
4836 * Decorator that marks a class field as an output property and supplies configuration metadata.
4837 * The DOM property bound to the output property is automatically updated during change detection.
4838 *
4839 * @usageNotes
4840 *
4841 * You can supply an optional name to use in templates when the
4842 * component is instantiated, that maps to the
4843 * name of the bound property. By default, the original
4844 * name of the bound property is used for output binding.
4845 *
4846 * See `Input` decorator for an example of providing a binding name.
4847 *
4848 * @see [Input and Output properties](guide/inputs-outputs)
4849 *
4850 */
4851 (bindingPropertyName?: string): any;
4852 new (bindingPropertyName?: string): any;
4853}
4854
4855declare interface OutputDef {
4856 type: OutputType;
4857 target: 'window' | 'document' | 'body' | 'component' | null;
4858 eventName: string;
4859 propName: string | null;
4860}
4861
4862declare const enum OutputType {
4863 ElementOutput = 0,
4864 DirectiveOutput = 1
4865}
4866
4867/**
4868 * A [DI token](guide/glossary#di-token "DI token definition") that indicates the root directory of
4869 * the application
4870 * @publicApi
4871 */
4872export declare const PACKAGE_ROOT_URL: InjectionToken<string>;
4873
4874declare const PARENT = 3;
4875
4876/**
4877 * Type of the Pipe metadata.
4878 *
4879 * @publicApi
4880 */
4881export declare interface Pipe {
4882 /**
4883 * The pipe name to use in template bindings.
4884 * Typically uses [lowerCamelCase](guide/glossary#case-types)
4885 * because the name cannot contain hyphens.
4886 */
4887 name: string;
4888 /**
4889 * When true, the pipe is pure, meaning that the
4890 * `transform()` method is invoked only when its input arguments
4891 * change. Pipes are pure by default.
4892 *
4893 * If the pipe has internal state (that is, the result
4894 * depends on state other than its arguments), set `pure` to false.
4895 * In this case, the pipe is invoked on each change-detection cycle,
4896 * even if the arguments have not changed.
4897 */
4898 pure?: boolean;
4899}
4900
4901/**
4902 * @Annotation
4903 * @publicApi
4904 */
4905export declare const Pipe: PipeDecorator;
4906
4907/**
4908 * Type of the Pipe decorator / constructor function.
4909 *
4910 * @publicApi
4911 */
4912export declare interface PipeDecorator {
4913 /**
4914 *
4915 * Decorator that marks a class as pipe and supplies configuration metadata.
4916 *
4917 * A pipe class must implement the `PipeTransform` interface.
4918 * For example, if the name is "myPipe", use a template binding expression
4919 * such as the following:
4920 *
4921 * ```
4922 * {{ exp | myPipe }}
4923 * ```
4924 *
4925 * The result of the expression is passed to the pipe's `transform()` method.
4926 *
4927 * A pipe must belong to an NgModule in order for it to be available
4928 * to a template. To make it a member of an NgModule,
4929 * list it in the `declarations` field of the `NgModule` metadata.
4930 *
4931 * @see [Style Guide: Pipe Names](guide/styleguide#02-09)
4932 *
4933 */
4934 (obj: Pipe): TypeDecorator;
4935 /**
4936 * See the `Pipe` decorator.
4937 */
4938 new (obj: Pipe): Pipe;
4939}
4940
4941declare type PipeDefList = ɵPipeDef<any>[];
4942
4943/**
4944 * Type used for PipeDefs on component definition.
4945 *
4946 * The function is necessary to be able to support forward declarations.
4947 */
4948declare type PipeDefListOrFactory = (() => PipeDefList) | PipeDefList;
4949
4950
4951/**
4952 * An interface that is implemented by pipes in order to perform a transformation.
4953 * Angular invokes the `transform` method with the value of a binding
4954 * as the first argument, and any parameters as the second argument in list form.
4955 *
4956 * @usageNotes
4957 *
4958 * In the following example, `RepeatPipe` repeats a given value a given number of times.
4959 *
4960 * ```ts
4961 * import {Pipe, PipeTransform} from '@angular/core';
4962 *
4963 * @Pipe({name: 'repeat'})
4964 * export class RepeatPipe implements PipeTransform {
4965 * transform(value: any, times: number) {
4966 * return value.repeat(times);
4967 * }
4968 * }
4969 * ```
4970 *
4971 * Invoking `{{ 'ok' | repeat:3 }}` in a template produces `okokok`.
4972 *
4973 * @publicApi
4974 */
4975export declare interface PipeTransform {
4976 transform(value: any, ...args: any[]): any;
4977}
4978
4979/**
4980 * A subclass of `Type` which has a static `ɵpipe`:`PipeDef` field making it
4981 * consumable for rendering.
4982 */
4983declare interface PipeType<T> extends Type<T> {
4984 ɵpipe: never;
4985}
4986
4987declare type PipeTypeList = (PipeType<any> | Type<any>)[];
4988
4989declare type PipeTypesOrFactory = (() => PipeTypeList) | PipeTypeList;
4990
4991/**
4992 * A token that indicates an opaque platform ID.
4993 * @publicApi
4994 */
4995export declare const PLATFORM_ID: InjectionToken<Object>;
4996
4997/**
4998 * A function that is executed when a platform is initialized.
4999 * @publicApi
5000 */
5001export declare const PLATFORM_INITIALIZER: InjectionToken<(() => void)[]>;
5002
5003/**
5004 * This platform has to be included in any other platform
5005 *
5006 * @publicApi
5007 */
5008export declare const platformCore: (extraProviders?: StaticProvider[] | undefined) => PlatformRef;
5009
5010/**
5011 * The Angular platform is the entry point for Angular on a web page.
5012 * Each page has exactly one platform. Services (such as reflection) which are common
5013 * to every Angular application running on the page are bound in its scope.
5014 * A page's platform is initialized implicitly when a platform is created using a platform
5015 * factory such as `PlatformBrowser`, or explicitly by calling the `createPlatform()` function.
5016 *
5017 * @publicApi
5018 */
5019export declare class PlatformRef {
5020 private _injector;
5021 private _modules;
5022 private _destroyListeners;
5023 private _destroyed;
5024 /**
5025 * Creates an instance of an `@NgModule` for the given platform for offline compilation.
5026 *
5027 * @usageNotes
5028 *
5029 * The following example creates the NgModule for a browser platform.
5030 *
5031 * ```typescript
5032 * my_module.ts:
5033 *
5034 * @NgModule({
5035 * imports: [BrowserModule]
5036 * })
5037 * class MyModule {}
5038 *
5039 * main.ts:
5040 * import {MyModuleNgFactory} from './my_module.ngfactory';
5041 * import {platformBrowser} from '@angular/platform-browser';
5042 *
5043 * let moduleRef = platformBrowser().bootstrapModuleFactory(MyModuleNgFactory);
5044 * ```
5045 */
5046 bootstrapModuleFactory<M>(moduleFactory: NgModuleFactory<M>, options?: BootstrapOptions): Promise<NgModuleRef<M>>;
5047 /**
5048 * Creates an instance of an `@NgModule` for a given platform using the given runtime compiler.
5049 *
5050 * @usageNotes
5051 * ### Simple Example
5052 *
5053 * ```typescript
5054 * @NgModule({
5055 * imports: [BrowserModule]
5056 * })
5057 * class MyModule {}
5058 *
5059 * let moduleRef = platformBrowser().bootstrapModule(MyModule);
5060 * ```
5061 *
5062 */
5063 bootstrapModule<M>(moduleType: Type<M>, compilerOptions?: (CompilerOptions & BootstrapOptions) | Array<CompilerOptions & BootstrapOptions>): Promise<NgModuleRef<M>>;
5064 private _moduleDoBootstrap;
5065 /**
5066 * Registers a listener to be called when the platform is destroyed.
5067 */
5068 onDestroy(callback: () => void): void;
5069 /**
5070 * Retrieves the platform {@link Injector}, which is the parent injector for
5071 * every Angular application on the page and provides singleton providers.
5072 */
5073 get injector(): Injector;
5074 /**
5075 * Destroys the current Angular platform and all Angular applications on the page.
5076 * Destroys all modules and listeners registered with the platform.
5077 */
5078 destroy(): void;
5079 get destroyed(): boolean;
5080}
5081
5082declare interface PlatformReflectionCapabilities {
5083 isReflectionEnabled(): boolean;
5084 factory(type: Type<any>): Function;
5085 hasLifecycleHook(type: any, lcProperty: string): boolean;
5086 guards(type: any): {
5087 [key: string]: any;
5088 };
5089 /**
5090 * Return a list of annotations/types for constructor parameters
5091 */
5092 parameters(type: Type<any>): any[][];
5093 /**
5094 * Return a list of annotations declared on the class
5095 */
5096 annotations(type: Type<any>): any[];
5097 /**
5098 * Return a object literal which describes the annotations on Class fields/properties.
5099 */
5100 propMetadata(typeOrFunc: Type<any>): {
5101 [key: string]: any[];
5102 };
5103 getter(name: string): ɵGetterFn;
5104 setter(name: string): ɵSetterFn;
5105 method(name: string): ɵMethodFn;
5106 importUri(type: Type<any>): string;
5107 resourceUri(type: Type<any>): string;
5108 resolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any): any;
5109 resolveEnum(enumIdentifier: any, name: string): any;
5110}
5111
5112/**
5113 * A boolean-valued function over a value, possibly including context information
5114 * regarding that value's position in an array.
5115 *
5116 * @publicApi
5117 */
5118export declare interface Predicate<T> {
5119 (value: T): boolean;
5120}
5121
5122declare const PREORDER_HOOK_FLAGS = 18;
5123
5124/** More flags associated with an LView (saved in LView[PREORDER_HOOK_FLAGS]) */
5125declare const enum PreOrderHookFlags {
5126 /**
5127 The index of the next pre-order hook to be called in the hooks array, on the first 16
5128 bits
5129 */
5130 IndexOfTheNextPreOrderHookMaskMask = 65535,
5131 /**
5132 * The number of init hooks that have already been called, on the last 16 bits
5133 */
5134 NumberOfInitHooksCalledIncrementer = 65536,
5135 NumberOfInitHooksCalledShift = 16,
5136 NumberOfInitHooksCalledMask = 4294901760
5137}
5138
5139/**
5140 * Procedural style of API needed to create elements and text nodes.
5141 *
5142 * In non-native browser environments (e.g. platforms such as web-workers), this is the
5143 * facade that enables element manipulation. This also facilitates backwards compatibility
5144 * with Renderer2.
5145 */
5146declare interface ProceduralRenderer3 {
5147 destroy(): void;
5148 createComment(value: string): RComment;
5149 createElement(name: string, namespace?: string | null): RElement;
5150 createText(value: string): RText;
5151 /**
5152 * This property is allowed to be null / undefined,
5153 * in which case the view engine won't call it.
5154 * This is used as a performance optimization for production mode.
5155 */
5156 destroyNode?: ((node: RNode) => void) | null;
5157 appendChild(parent: RElement, newChild: RNode): void;
5158 insertBefore(parent: RNode, newChild: RNode, refChild: RNode | null): void;
5159 removeChild(parent: RElement, oldChild: RNode, isHostElement?: boolean): void;
5160 selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): RElement;
5161 parentNode(node: RNode): RElement | null;
5162 nextSibling(node: RNode): RNode | null;
5163 setAttribute(el: RElement, name: string, value: string, namespace?: string | null): void;
5164 removeAttribute(el: RElement, name: string, namespace?: string | null): void;
5165 addClass(el: RElement, name: string): void;
5166 removeClass(el: RElement, name: string): void;
5167 setStyle(el: RElement, style: string, value: any, flags?: RendererStyleFlags2 | RendererStyleFlags3): void;
5168 removeStyle(el: RElement, style: string, flags?: RendererStyleFlags2 | RendererStyleFlags3): void;
5169 setProperty(el: RElement, name: string, value: any): void;
5170 setValue(node: RText | RComment, value: string): void;
5171 listen(target: GlobalTargetName | RNode, eventName: string, callback: (event: any) => boolean | void): () => void;
5172}
5173
5174/**
5175 * Describes a function that is used to process provider lists (such as provider
5176 * overrides).
5177 */
5178declare type ProcessProvidersFunction = (providers: Provider[]) => Provider[];
5179
5180/**
5181 * List of slots for a projection. A slot can be either based on a parsed CSS selector
5182 * which will be used to determine nodes which are projected into that slot.
5183 *
5184 * When set to "*", the slot is reserved and can be used for multi-slot projection
5185 * using {@link ViewContainerRef#createComponent}. The last slot that specifies the
5186 * wildcard selector will retrieve all projectable nodes which do not match any selector.
5187 */
5188declare type ProjectionSlots = (ɵCssSelectorList | '*')[];
5189
5190/**
5191 * This mapping is necessary so we can set input properties and output listeners
5192 * properly at runtime when property names are minified or aliased.
5193 *
5194 * Key: unminified / public input or output name
5195 * Value: array containing minified / internal name and related directive index
5196 *
5197 * The value must be an array to support inputs and outputs with the same name
5198 * on the same node.
5199 */
5200declare type PropertyAliases = {
5201 [key: string]: PropertyAliasValue;
5202};
5203
5204/**
5205 * Store the runtime input or output names for all the directives.
5206 *
5207 * i+0: directive instance index
5208 * i+1: privateName
5209 *
5210 * e.g. [0, 'change-minified']
5211 */
5212declare type PropertyAliasValue = (number | string)[];
5213
5214/**
5215 * Describes how the `Injector` should be configured.
5216 * @see ["Dependency Injection Guide"](guide/dependency-injection).
5217 *
5218 * @see `StaticProvider`
5219 *
5220 * @publicApi
5221 */
5222export declare type Provider = TypeProvider | ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider | any[];
5223
5224declare interface ProviderDef {
5225 token: any;
5226 value: any;
5227 deps: DepDef[];
5228}
5229
5230declare interface ProviderOverride {
5231 token: any;
5232 flags: ɵNodeFlags;
5233 value: any;
5234 deps: ([ɵDepFlags, any] | any)[];
5235 deprecatedBehavior: boolean;
5236}
5237
5238/**
5239 * Testability API.
5240 * `declare` keyword causes tsickle to generate externs, so these methods are
5241 * not renamed by Closure Compiler.
5242 * @publicApi
5243 */
5244declare interface PublicTestability {
5245 isStable(): boolean;
5246 whenStable(callback: Function, timeout?: number, updateCallback?: Function): void;
5247 findProviders(using: any, provider: string, exactMatch: boolean): any[];
5248}
5249
5250declare const QUERIES = 19;
5251
5252/**
5253 * Type of the Query metadata.
5254 *
5255 * @publicApi
5256 */
5257export declare interface Query {
5258 descendants: boolean;
5259 first: boolean;
5260 read: any;
5261 isViewQuery: boolean;
5262 selector: any;
5263 static?: boolean;
5264}
5265
5266/**
5267 * Base class for query metadata.
5268 *
5269 * @see `ContentChildren`.
5270 * @see `ContentChild`.
5271 * @see `ViewChildren`.
5272 * @see `ViewChild`.
5273 *
5274 * @publicApi
5275 */
5276export declare abstract class Query {
5277}
5278
5279declare interface QueryBindingDef {
5280 propName: string;
5281 bindingType: ɵQueryBindingType;
5282}
5283
5284declare interface QueryDef {
5285 id: number;
5286 filterId: number;
5287 bindings: QueryBindingDef[];
5288}
5289
5290/**
5291 * An unmodifiable list of items that Angular keeps up to date when the state
5292 * of the application changes.
5293 *
5294 * The type of object that {@link ViewChildren}, {@link ContentChildren}, and {@link QueryList}
5295 * provide.
5296 *
5297 * Implements an iterable interface, therefore it can be used in both ES6
5298 * javascript `for (var i of items)` loops as well as in Angular templates with
5299 * `*ngFor="let i of myList"`.
5300 *
5301 * Changes can be observed by subscribing to the changes `Observable`.
5302 *
5303 * NOTE: In the future this class will implement an `Observable` interface.
5304 *
5305 * @usageNotes
5306 * ### Example
5307 * ```typescript
5308 * @Component({...})
5309 * class Container {
5310 * @ViewChildren(Item) items:QueryList<Item>;
5311 * }
5312 * ```
5313 *
5314 * @publicApi
5315 */
5316export declare class QueryList<T> implements Iterable<T> {
5317 readonly dirty = true;
5318 private _results;
5319 readonly changes: Observable<any>;
5320 readonly length: number;
5321 readonly first: T;
5322 readonly last: T;
5323 constructor();
5324 /**
5325 * See
5326 * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
5327 */
5328 map<U>(fn: (item: T, index: number, array: T[]) => U): U[];
5329 /**
5330 * See
5331 * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
5332 */
5333 filter(fn: (item: T, index: number, array: T[]) => boolean): T[];
5334 /**
5335 * See
5336 * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)
5337 */
5338 find(fn: (item: T, index: number, array: T[]) => boolean): T | undefined;
5339 /**
5340 * See
5341 * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
5342 */
5343 reduce<U>(fn: (prevValue: U, curValue: T, curIndex: number, array: T[]) => U, init: U): U;
5344 /**
5345 * See
5346 * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)
5347 */
5348 forEach(fn: (item: T, index: number, array: T[]) => void): void;
5349 /**
5350 * See
5351 * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
5352 */
5353 some(fn: (value: T, index: number, array: T[]) => boolean): boolean;
5354 /**
5355 * Returns a copy of the internal results list as an Array.
5356 */
5357 toArray(): T[];
5358 toString(): string;
5359 /**
5360 * Updates the stored data of the query list, and resets the `dirty` flag to `false`, so that
5361 * on change detection, it will not notify of changes to the queries, unless a new change
5362 * occurs.
5363 *
5364 * @param resultsTree The query results to store
5365 */
5366 reset(resultsTree: Array<T | any[]>): void;
5367 /**
5368 * Triggers a change event by emitting on the `changes` {@link EventEmitter}.
5369 */
5370 notifyOnChanges(): void;
5371 /** internal */
5372 setDirty(): void;
5373 /** internal */
5374 destroy(): void;
5375 [Symbol.iterator]: () => Iterator<T>;
5376}
5377
5378declare class R3Injector {
5379 readonly parent: Injector;
5380 /**
5381 * Map of tokens to records which contain the instances of those tokens.
5382 * - `null` value implies that we don't have the record. Used by tree-shakable injectors
5383 * to prevent further searches.
5384 */
5385 private records;
5386 /**
5387 * The transitive set of `InjectorType`s which define this injector.
5388 */
5389 private injectorDefTypes;
5390 /**
5391 * Set of values instantiated by this injector which contain `ngOnDestroy` lifecycle hooks.
5392 */
5393 private onDestroy;
5394 /**
5395 * Flag indicating this injector provides the APP_ROOT_SCOPE token, and thus counts as the
5396 * root scope.
5397 */
5398 private readonly scope;
5399 readonly source: string | null;
5400 /**
5401 * Flag indicating that this injector was previously destroyed.
5402 */
5403 get destroyed(): boolean;
5404 private _destroyed;
5405 constructor(def: InjectorType<any>, additionalProviders: StaticProvider[] | null, parent: Injector, source?: string | null);
5406 /**
5407 * Destroy the injector and release references to every instance or provider associated with it.
5408 *
5409 * Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a
5410 * hook was found.
5411 */
5412 destroy(): void;
5413 get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: any, flags?: InjectFlags): T;
5414 toString(): string;
5415 private assertNotDestroyed;
5416 /**
5417 * Add an `InjectorType` or `InjectorTypeWithProviders` and all of its transitive providers
5418 * to this injector.
5419 *
5420 * If an `InjectorTypeWithProviders` that declares providers besides the type is specified,
5421 * the function will return "true" to indicate that the providers of the type definition need
5422 * to be processed. This allows us to process providers of injector types after all imports of
5423 * an injector definition are processed. (following View Engine semantics: see FW-1349)
5424 */
5425 private processInjectorType;
5426 /**
5427 * Process a `SingleProvider` and add it.
5428 */
5429 private processProvider;
5430 private hydrate;
5431 private injectableDefInScope;
5432}
5433
5434declare interface RComment extends RNode {
5435 textContent: string | null;
5436}
5437
5438declare interface RCssStyleDeclaration {
5439 removeProperty(propertyName: string): string;
5440 setProperty(propertyName: string, value: string | null, priority?: string): void;
5441}
5442
5443declare interface RDomTokenList {
5444 add(token: string): void;
5445 remove(token: string): void;
5446}
5447
5448/**
5449 * A ReflectiveDependency injection container used for instantiating objects and resolving
5450 * dependencies.
5451 *
5452 * An `Injector` is a replacement for a `new` operator, which can automatically resolve the
5453 * constructor dependencies.
5454 *
5455 * In typical use, application code asks for the dependencies in the constructor and they are
5456 * resolved by the `Injector`.
5457 *
5458 * @usageNotes
5459 * ### Example
5460 *
5461 * The following example creates an `Injector` configured to create `Engine` and `Car`.
5462 *
5463 * ```typescript
5464 * @Injectable()
5465 * class Engine {
5466 * }
5467 *
5468 * @Injectable()
5469 * class Car {
5470 * constructor(public engine:Engine) {}
5471 * }
5472 *
5473 * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);
5474 * var car = injector.get(Car);
5475 * expect(car instanceof Car).toBe(true);
5476 * expect(car.engine instanceof Engine).toBe(true);
5477 * ```
5478 *
5479 * Notice, we don't use the `new` operator because we explicitly want to have the `Injector`
5480 * resolve all of the object's dependencies automatically.
5481 *
5482 * @deprecated from v5 - slow and brings in a lot of code, Use `Injector.create` instead.
5483 * @publicApi
5484 */
5485export declare abstract class ReflectiveInjector implements Injector {
5486 /**
5487 * Turns an array of provider definitions into an array of resolved providers.
5488 *
5489 * A resolution is a process of flattening multiple nested arrays and converting individual
5490 * providers into an array of `ResolvedReflectiveProvider`s.
5491 *
5492 * @usageNotes
5493 * ### Example
5494 *
5495 * ```typescript
5496 * @Injectable()
5497 * class Engine {
5498 * }
5499 *
5500 * @Injectable()
5501 * class Car {
5502 * constructor(public engine:Engine) {}
5503 * }
5504 *
5505 * var providers = ReflectiveInjector.resolve([Car, [[Engine]]]);
5506 *
5507 * expect(providers.length).toEqual(2);
5508 *
5509 * expect(providers[0] instanceof ResolvedReflectiveProvider).toBe(true);
5510 * expect(providers[0].key.displayName).toBe("Car");
5511 * expect(providers[0].dependencies.length).toEqual(1);
5512 * expect(providers[0].factory).toBeDefined();
5513 *
5514 * expect(providers[1].key.displayName).toBe("Engine");
5515 * });
5516 * ```
5517 *
5518 */
5519 static resolve(providers: Provider[]): ResolvedReflectiveProvider[];
5520 /**
5521 * Resolves an array of providers and creates an injector from those providers.
5522 *
5523 * The passed-in providers can be an array of `Type`, `Provider`,
5524 * or a recursive array of more providers.
5525 *
5526 * @usageNotes
5527 * ### Example
5528 *
5529 * ```typescript
5530 * @Injectable()
5531 * class Engine {
5532 * }
5533 *
5534 * @Injectable()
5535 * class Car {
5536 * constructor(public engine:Engine) {}
5537 * }
5538 *
5539 * var injector = ReflectiveInjector.resolveAndCreate([Car, Engine]);
5540 * expect(injector.get(Car) instanceof Car).toBe(true);
5541 * ```
5542 */
5543 static resolveAndCreate(providers: Provider[], parent?: Injector): ReflectiveInjector;
5544 /**
5545 * Creates an injector from previously resolved providers.
5546 *
5547 * This API is the recommended way to construct injectors in performance-sensitive parts.
5548 *
5549 * @usageNotes
5550 * ### Example
5551 *
5552 * ```typescript
5553 * @Injectable()
5554 * class Engine {
5555 * }
5556 *
5557 * @Injectable()
5558 * class Car {
5559 * constructor(public engine:Engine) {}
5560 * }
5561 *
5562 * var providers = ReflectiveInjector.resolve([Car, Engine]);
5563 * var injector = ReflectiveInjector.fromResolvedProviders(providers);
5564 * expect(injector.get(Car) instanceof Car).toBe(true);
5565 * ```
5566 */
5567 static fromResolvedProviders(providers: ResolvedReflectiveProvider[], parent?: Injector): ReflectiveInjector;
5568 /**
5569 * Parent of this injector.
5570 *
5571 * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.
5572 * -->
5573 */
5574 abstract get parent(): Injector | null;
5575 /**
5576 * Resolves an array of providers and creates a child injector from those providers.
5577 *
5578 * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.
5579 * -->
5580 *
5581 * The passed-in providers can be an array of `Type`, `Provider`,
5582 * or a recursive array of more providers.
5583 *
5584 * @usageNotes
5585 * ### Example
5586 *
5587 * ```typescript
5588 * class ParentProvider {}
5589 * class ChildProvider {}
5590 *
5591 * var parent = ReflectiveInjector.resolveAndCreate([ParentProvider]);
5592 * var child = parent.resolveAndCreateChild([ChildProvider]);
5593 *
5594 * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);
5595 * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);
5596 * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));
5597 * ```
5598 */
5599 abstract resolveAndCreateChild(providers: Provider[]): ReflectiveInjector;
5600 /**
5601 * Creates a child injector from previously resolved providers.
5602 *
5603 * <!-- TODO: Add a link to the section of the user guide talking about hierarchical injection.
5604 * -->
5605 *
5606 * This API is the recommended way to construct injectors in performance-sensitive parts.
5607 *
5608 * @usageNotes
5609 * ### Example
5610 *
5611 * ```typescript
5612 * class ParentProvider {}
5613 * class ChildProvider {}
5614 *
5615 * var parentProviders = ReflectiveInjector.resolve([ParentProvider]);
5616 * var childProviders = ReflectiveInjector.resolve([ChildProvider]);
5617 *
5618 * var parent = ReflectiveInjector.fromResolvedProviders(parentProviders);
5619 * var child = parent.createChildFromResolved(childProviders);
5620 *
5621 * expect(child.get(ParentProvider) instanceof ParentProvider).toBe(true);
5622 * expect(child.get(ChildProvider) instanceof ChildProvider).toBe(true);
5623 * expect(child.get(ParentProvider)).toBe(parent.get(ParentProvider));
5624 * ```
5625 */
5626 abstract createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector;
5627 /**
5628 * Resolves a provider and instantiates an object in the context of the injector.
5629 *
5630 * The created object does not get cached by the injector.
5631 *
5632 * @usageNotes
5633 * ### Example
5634 *
5635 * ```typescript
5636 * @Injectable()
5637 * class Engine {
5638 * }
5639 *
5640 * @Injectable()
5641 * class Car {
5642 * constructor(public engine:Engine) {}
5643 * }
5644 *
5645 * var injector = ReflectiveInjector.resolveAndCreate([Engine]);
5646 *
5647 * var car = injector.resolveAndInstantiate(Car);
5648 * expect(car.engine).toBe(injector.get(Engine));
5649 * expect(car).not.toBe(injector.resolveAndInstantiate(Car));
5650 * ```
5651 */
5652 abstract resolveAndInstantiate(provider: Provider): any;
5653 /**
5654 * Instantiates an object using a resolved provider in the context of the injector.
5655 *
5656 * The created object does not get cached by the injector.
5657 *
5658 * @usageNotes
5659 * ### Example
5660 *
5661 * ```typescript
5662 * @Injectable()
5663 * class Engine {
5664 * }
5665 *
5666 * @Injectable()
5667 * class Car {
5668 * constructor(public engine:Engine) {}
5669 * }
5670 *
5671 * var injector = ReflectiveInjector.resolveAndCreate([Engine]);
5672 * var carProvider = ReflectiveInjector.resolve([Car])[0];
5673 * var car = injector.instantiateResolved(carProvider);
5674 * expect(car.engine).toBe(injector.get(Engine));
5675 * expect(car).not.toBe(injector.instantiateResolved(carProvider));
5676 * ```
5677 */
5678 abstract instantiateResolved(provider: ResolvedReflectiveProvider): any;
5679 abstract get(token: any, notFoundValue?: any): any;
5680}
5681
5682
5683/**
5684 * A unique object used for retrieving items from the {@link ReflectiveInjector}.
5685 *
5686 * Keys have:
5687 * - a system-wide unique `id`.
5688 * - a `token`.
5689 *
5690 * `Key` is used internally by {@link ReflectiveInjector} because its system-wide unique `id` allows
5691 * the
5692 * injector to store created objects in a more efficient way.
5693 *
5694 * `Key` should not be created directly. {@link ReflectiveInjector} creates keys automatically when
5695 * resolving
5696 * providers.
5697 *
5698 * @deprecated No replacement
5699 * @publicApi
5700 */
5701export declare class ReflectiveKey {
5702 token: Object;
5703 id: number;
5704 readonly displayName: string;
5705 /**
5706 * Private
5707 */
5708 constructor(token: Object, id: number);
5709 /**
5710 * Retrieves a `Key` for a token.
5711 */
5712 static get(token: Object): ReflectiveKey;
5713 /**
5714 * @returns the number of keys registered in the system.
5715 */
5716 static get numberOfKeys(): number;
5717}
5718
5719/**
5720 * Subset of API needed for writing attributes, properties, and setting up
5721 * listeners on Element.
5722 */
5723declare interface RElement extends RNode {
5724 style: RCssStyleDeclaration;
5725 classList: RDomTokenList;
5726 className: string;
5727 textContent: string | null;
5728 setAttribute(name: string, value: string): void;
5729 removeAttribute(name: string): void;
5730 setAttributeNS(namespaceURI: string, qualifiedName: string, value: string): void;
5731 addEventListener(type: string, listener: EventListener, useCapture?: boolean): void;
5732 removeEventListener(type: string, listener?: EventListener, options?: boolean): void;
5733 setProperty?(name: string, value: any): void;
5734}
5735
5736/**
5737 * This is a synthetic lifecycle hook which gets inserted into `TView.preOrderHooks` to simulate
5738 * `ngOnChanges`.
5739 *
5740 * The hook reads the `NgSimpleChangesStore` data from the component instance and if changes are
5741 * found it invokes `ngOnChanges` on the component instance.
5742 *
5743 * @param this Component instance. Because this function gets inserted into `TView.preOrderHooks`,
5744 * it is guaranteed to be called with component instance.
5745 */
5746declare function rememberChangeHistoryAndInvokeOnChangesHook(this: OnChanges): void;
5747
5748declare const RENDERER = 11;
5749
5750/**
5751 * Extend this base class to implement custom rendering. By default, Angular
5752 * renders a template into DOM. You can use custom rendering to intercept
5753 * rendering calls, or to render to something other than DOM.
5754 *
5755 * Create your custom renderer using `RendererFactory2`.
5756 *
5757 * Use a custom renderer to bypass Angular's templating and
5758 * make custom UI changes that can't be expressed declaratively.
5759 * For example if you need to set a property or an attribute whose name is
5760 * not statically known, use the `setProperty()` or
5761 * `setAttribute()` method.
5762 *
5763 * @publicApi
5764 */
5765export declare abstract class Renderer2 {
5766 /**
5767 * Use to store arbitrary developer-defined data on a renderer instance,
5768 * as an object containing key-value pairs.
5769 * This is useful for renderers that delegate to other renderers.
5770 */
5771 abstract get data(): {
5772 [key: string]: any;
5773 };
5774 /**
5775 * Implement this callback to destroy the renderer or the host element.
5776 */
5777 abstract destroy(): void;
5778 /**
5779 * Implement this callback to create an instance of the host element.
5780 * @param name An identifying name for the new element, unique within the namespace.
5781 * @param namespace The namespace for the new element.
5782 * @returns The new element.
5783 */
5784 abstract createElement(name: string, namespace?: string | null): any;
5785 /**
5786 * Implement this callback to add a comment to the DOM of the host element.
5787 * @param value The comment text.
5788 * @returns The modified element.
5789 */
5790 abstract createComment(value: string): any;
5791 /**
5792 * Implement this callback to add text to the DOM of the host element.
5793 * @param value The text string.
5794 * @returns The modified element.
5795 */
5796 abstract createText(value: string): any;
5797 /**
5798 * If null or undefined, the view engine won't call it.
5799 * This is used as a performance optimization for production mode.
5800 */
5801 destroyNode: ((node: any) => void) | null;
5802 /**
5803 * Appends a child to a given parent node in the host element DOM.
5804 * @param parent The parent node.
5805 * @param newChild The new child node.
5806 */
5807 abstract appendChild(parent: any, newChild: any): void;
5808 /**
5809 * Implement this callback to insert a child node at a given position in a parent node
5810 * in the host element DOM.
5811 * @param parent The parent node.
5812 * @param newChild The new child nodes.
5813 * @param refChild The existing child node before which `newChild` is inserted.
5814 */
5815 abstract insertBefore(parent: any, newChild: any, refChild: any): void;
5816 /**
5817 * Implement this callback to remove a child node from the host element's DOM.
5818 * @param parent The parent node.
5819 * @param oldChild The child node to remove.
5820 * @param isHostElement Optionally signal to the renderer whether this element is a host element
5821 * or not
5822 */
5823 abstract removeChild(parent: any, oldChild: any, isHostElement?: boolean): void;
5824 /**
5825 * Implement this callback to prepare an element to be bootstrapped
5826 * as a root element, and return the element instance.
5827 * @param selectorOrNode The DOM element.
5828 * @param preserveContent Whether the contents of the root element
5829 * should be preserved, or cleared upon bootstrap (default behavior).
5830 * Use with `ViewEncapsulation.ShadowDom` to allow simple native
5831 * content projection via `<slot>` elements.
5832 * @returns The root element.
5833 */
5834 abstract selectRootElement(selectorOrNode: string | any, preserveContent?: boolean): any;
5835 /**
5836 * Implement this callback to get the parent of a given node
5837 * in the host element's DOM.
5838 * @param node The child node to query.
5839 * @returns The parent node, or null if there is no parent.
5840 * For WebWorkers, always returns true.
5841 * This is because the check is synchronous,
5842 * and the caller can't rely on checking for null.
5843 */
5844 abstract parentNode(node: any): any;
5845 /**
5846 * Implement this callback to get the next sibling node of a given node
5847 * in the host element's DOM.
5848 * @returns The sibling node, or null if there is no sibling.
5849 * For WebWorkers, always returns a value.
5850 * This is because the check is synchronous,
5851 * and the caller can't rely on checking for null.
5852 */
5853 abstract nextSibling(node: any): any;
5854 /**
5855 * Implement this callback to set an attribute value for an element in the DOM.
5856 * @param el The element.
5857 * @param name The attribute name.
5858 * @param value The new value.
5859 * @param namespace The namespace.
5860 */
5861 abstract setAttribute(el: any, name: string, value: string, namespace?: string | null): void;
5862 /**
5863 * Implement this callback to remove an attribute from an element in the DOM.
5864 * @param el The element.
5865 * @param name The attribute name.
5866 * @param namespace The namespace.
5867 */
5868 abstract removeAttribute(el: any, name: string, namespace?: string | null): void;
5869 /**
5870 * Implement this callback to add a class to an element in the DOM.
5871 * @param el The element.
5872 * @param name The class name.
5873 */
5874 abstract addClass(el: any, name: string): void;
5875 /**
5876 * Implement this callback to remove a class from an element in the DOM.
5877 * @param el The element.
5878 * @param name The class name.
5879 */
5880 abstract removeClass(el: any, name: string): void;
5881 /**
5882 * Implement this callback to set a CSS style for an element in the DOM.
5883 * @param el The element.
5884 * @param style The name of the style.
5885 * @param value The new value.
5886 * @param flags Flags for style variations. No flags are set by default.
5887 */
5888 abstract setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2): void;
5889 /**
5890 * Implement this callback to remove the value from a CSS style for an element in the DOM.
5891 * @param el The element.
5892 * @param style The name of the style.
5893 * @param flags Flags for style variations to remove, if set. ???
5894 */
5895 abstract removeStyle(el: any, style: string, flags?: RendererStyleFlags2): void;
5896 /**
5897 * Implement this callback to set the value of a property of an element in the DOM.
5898 * @param el The element.
5899 * @param name The property name.
5900 * @param value The new value.
5901 */
5902 abstract setProperty(el: any, name: string, value: any): void;
5903 /**
5904 * Implement this callback to set the value of a node in the host element.
5905 * @param node The node.
5906 * @param value The new value.
5907 */
5908 abstract setValue(node: any, value: string): void;
5909 /**
5910 * Implement this callback to start an event listener.
5911 * @param target The context in which to listen for events. Can be
5912 * the entire window or document, the body of the document, or a specific
5913 * DOM element.
5914 * @param eventName The event to listen for.
5915 * @param callback A handler function to invoke when the event occurs.
5916 * @returns An "unlisten" function for disposing of this handler.
5917 */
5918 abstract listen(target: 'window' | 'document' | 'body' | any, eventName: string, callback: (event: any) => boolean | void): () => void;
5919}
5920
5921declare type Renderer3 = ObjectOrientedRenderer3 | ProceduralRenderer3;
5922
5923declare const RENDERER_FACTORY = 10;
5924
5925/**
5926 * Creates and initializes a custom renderer that implements the `Renderer2` base class.
5927 *
5928 * @publicApi
5929 */
5930export declare abstract class RendererFactory2 {
5931 /**
5932 * Creates and initializes a custom renderer for a host DOM element.
5933 * @param hostElement The element to render.
5934 * @param type The base class to implement.
5935 * @returns The new custom renderer instance.
5936 */
5937 abstract createRenderer(hostElement: any, type: RendererType2 | null): Renderer2;
5938 /**
5939 * A callback invoked when rendering has begun.
5940 */
5941 abstract begin?(): void;
5942 /**
5943 * A callback invoked when rendering has completed.
5944 */
5945 abstract end?(): void;
5946 /**
5947 * Use with animations test-only mode. Notifies the test when rendering has completed.
5948 * @returns The asynchronous result of the developer-defined function.
5949 */
5950 abstract whenRenderingDone?(): Promise<any>;
5951}
5952
5953declare interface RendererFactory3 {
5954 createRenderer(hostElement: RElement | null, rendererType: RendererType2 | null): Renderer3;
5955 begin?(): void;
5956 end?(): void;
5957}
5958
5959/**
5960 * Flags for renderer-specific style modifiers.
5961 * @publicApi
5962 */
5963export declare enum RendererStyleFlags2 {
5964 /**
5965 * Marks a style as important.
5966 */
5967 Important = 1,
5968 /**
5969 * Marks a style as using dash case naming (this-is-dash-case).
5970 */
5971 DashCase = 2
5972}
5973
5974declare enum RendererStyleFlags3 {
5975 Important = 1,
5976 DashCase = 2
5977}
5978
5979/**
5980 * Used by `RendererFactory2` to associate custom rendering data and styles
5981 * with a rendering implementation.
5982 * @publicApi
5983 */
5984export declare interface RendererType2 {
5985 /**
5986 * A unique identifying string for the new renderer, used when creating
5987 * unique styles for encapsulation.
5988 */
5989 id: string;
5990 /**
5991 * The view encapsulation type, which determines how styles are applied to
5992 * DOM elements. One of
5993 * - `Emulated` (default): Emulate native scoping of styles.
5994 * - `Native`: Use the native encapsulation mechanism of the renderer.
5995 * - `ShadowDom`: Use modern [Shadow
5996 * DOM](https://w3c.github.io/webcomponents/spec/shadow/) and
5997 * create a ShadowRoot for component's host element.
5998 * - `None`: Do not provide any template or style encapsulation.
5999 */
6000 encapsulation: ViewEncapsulation;
6001 /**
6002 * Defines CSS styles to be stored on a renderer instance.
6003 */
6004 styles: (string | any[])[];
6005 /**
6006 * Defines arbitrary developer-defined data to be stored on a renderer instance.
6007 * This is useful for renderers that delegate to other renderers.
6008 */
6009 data: {
6010 [kind: string]: any;
6011 };
6012}
6013
6014/**
6015 * An internal resolved representation of a factory function created by resolving `Provider`.
6016 * @publicApi
6017 */
6018export declare class ResolvedReflectiveFactory {
6019 /**
6020 * Factory function which can return an instance of an object represented by a key.
6021 */
6022 factory: Function;
6023 /**
6024 * Arguments (dependencies) to the `factory` function.
6025 */
6026 dependencies: ɵangular_packages_core_core_e[];
6027 constructor(
6028 /**
6029 * Factory function which can return an instance of an object represented by a key.
6030 */
6031 factory: Function,
6032 /**
6033 * Arguments (dependencies) to the `factory` function.
6034 */
6035 dependencies: ɵangular_packages_core_core_e[]);
6036}
6037
6038/**
6039 * An internal resolved representation of a `Provider` used by the `Injector`.
6040 *
6041 * @usageNotes
6042 * This is usually created automatically by `Injector.resolveAndCreate`.
6043 *
6044 * It can be created manually, as follows:
6045 *
6046 * ### Example
6047 *
6048 * ```typescript
6049 * var resolvedProviders = Injector.resolve([{ provide: 'message', useValue: 'Hello' }]);
6050 * var injector = Injector.fromResolvedProviders(resolvedProviders);
6051 *
6052 * expect(injector.get('message')).toEqual('Hello');
6053 * ```
6054 *
6055 * @publicApi
6056 */
6057export declare interface ResolvedReflectiveProvider {
6058 /**
6059 * A key, usually a `Type<any>`.
6060 */
6061 key: ReflectiveKey;
6062 /**
6063 * Factory function which can return an instance of an object represented by a key.
6064 */
6065 resolvedFactories: ResolvedReflectiveFactory[];
6066 /**
6067 * Indicates if the provider is a multi-provider or a regular provider.
6068 */
6069 multiProvider: boolean;
6070}
6071
6072/**
6073 * Lazily retrieves the reference value from a forwardRef.
6074 *
6075 * Acts as the identity function when given a non-forward-ref value.
6076 *
6077 * @usageNotes
6078 * ### Example
6079 *
6080 * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}
6081 *
6082 * @see `forwardRef`
6083 * @publicApi
6084 */
6085export declare function resolveForwardRef<T>(type: T): T;
6086
6087/** Subset of API needed for appending elements and text nodes. */
6088declare interface RNode {
6089 /**
6090 * Returns the parent Element, Document, or DocumentFragment
6091 */
6092 parentNode: RNode | null;
6093 /**
6094 * Returns the parent Element if there is one
6095 */
6096 parentElement: RElement | null;
6097 /**
6098 * Gets the Node immediately following this one in the parent's childNodes
6099 */
6100 nextSibling: RNode | null;
6101 /**
6102 * Removes a child from the current node and returns the removed node
6103 * @param oldChild the child node to remove
6104 */
6105 removeChild(oldChild: RNode): RNode;
6106 /**
6107 * Insert a child node.
6108 *
6109 * Used exclusively for adding View root nodes into ViewAnchor location.
6110 */
6111 insertBefore(newChild: RNode, refChild: RNode | null, isViewRoot: boolean): void;
6112 /**
6113 * Append a child node.
6114 *
6115 * Used exclusively for building up DOM which are static (ie not View roots)
6116 */
6117 appendChild(newChild: RNode): RNode;
6118}
6119
6120/**
6121 * RootContext contains information which is shared for all components which
6122 * were bootstrapped with {@link renderComponent}.
6123 */
6124declare interface RootContext {
6125 /**
6126 * A function used for scheduling change detection in the future. Usually
6127 * this is `requestAnimationFrame`.
6128 */
6129 scheduler: (workFn: () => void) => void;
6130 /**
6131 * A promise which is resolved when all components are considered clean (not dirty).
6132 *
6133 * This promise is overwritten every time a first call to {@link markDirty} is invoked.
6134 */
6135 clean: Promise<null>;
6136 /**
6137 * RootComponents - The components that were instantiated by the call to
6138 * {@link renderComponent}.
6139 */
6140 components: {}[];
6141 /**
6142 * The player flushing handler to kick off all animations
6143 */
6144 playerHandler: ɵPlayerHandler | null;
6145 /**
6146 * What render-related operations to run once a scheduler has been set
6147 */
6148 flags: RootContextFlags;
6149}
6150
6151declare const enum RootContextFlags {
6152 Empty = 0,
6153 DetectChanges = 1,
6154 FlushPlayers = 2
6155}
6156
6157declare interface RootData {
6158 injector: Injector;
6159 ngModule: NgModuleRef<any>;
6160 projectableNodes: any[][];
6161 selectorOrNode: any;
6162 renderer: Renderer2;
6163 rendererFactory: RendererFactory2;
6164 errorHandler: ErrorHandler;
6165 sanitizer: Sanitizer;
6166}
6167
6168declare interface RText extends RNode {
6169 textContent: string | null;
6170}
6171
6172declare const SANITIZER = 12;
6173
6174/**
6175 * Sanitizer is used by the views to sanitize potentially dangerous values.
6176 *
6177 * @publicApi
6178 */
6179export declare abstract class Sanitizer {
6180 abstract sanitize(context: SecurityContext, value: {} | string | null): string | null;
6181 /** @nocollapse */
6182 static ɵprov: never;
6183}
6184
6185
6186/**
6187 * Function used to sanitize the value before writing it into the renderer.
6188 */
6189declare type SanitizerFn = (value: any, tagName?: string, propName?: string) => string;
6190
6191
6192/**
6193 * A schema definition associated with an NgModule.
6194 *
6195 * @see `@NgModule`, `CUSTOM_ELEMENTS_SCHEMA`, `NO_ERRORS_SCHEMA`
6196 *
6197 * @param name The name of a defined schema.
6198 *
6199 * @publicApi
6200 */
6201export declare interface SchemaMetadata {
6202 name: string;
6203}
6204
6205
6206/**
6207 * A SecurityContext marks a location that has dangerous security implications, e.g. a DOM property
6208 * like `innerHTML` that could cause Cross Site Scripting (XSS) security bugs when improperly
6209 * handled.
6210 *
6211 * See DomSanitizer for more details on security in Angular applications.
6212 *
6213 * @publicApi
6214 */
6215export declare enum SecurityContext {
6216 NONE = 0,
6217 HTML = 1,
6218 STYLE = 2,
6219 SCRIPT = 3,
6220 URL = 4,
6221 RESOURCE_URL = 5
6222}
6223
6224/** Flags used to build up CssSelectors */
6225declare const enum SelectorFlags {
6226 /** Indicates this is the beginning of a new negative selector */
6227 NOT = 1,
6228 /** Mode for matching attributes */
6229 ATTRIBUTE = 2,
6230 /** Mode for matching tag names */
6231 ELEMENT = 4,
6232 /** Mode for matching class names */
6233 CLASS = 8
6234}
6235
6236/**
6237 * Type of the Self metadata.
6238 *
6239 * @publicApi
6240 */
6241export declare interface Self {
6242}
6243
6244/**
6245 * Self decorator and metadata.
6246 *
6247 * @Annotation
6248 * @publicApi
6249 */
6250export declare const Self: SelfDecorator;
6251
6252/**
6253 * Type of the Self decorator / constructor function.
6254 *
6255 * @publicApi
6256 */
6257export declare interface SelfDecorator {
6258 /**
6259 * Parameter decorator to be used on constructor parameters,
6260 * which tells the DI framework to start dependency resolution from the local injector.
6261 *
6262 * Resolution works upward through the injector hierarchy, so the children
6263 * of this class must configure their own providers or be prepared for a null result.
6264 *
6265 * @usageNotes
6266 *
6267 * In the following example, the dependency can be resolved
6268 * by the local injector when instantiating the class itself, but not
6269 * when instantiating a child.
6270 *
6271 * <code-example path="core/di/ts/metadata_spec.ts" region="Self">
6272 * </code-example>
6273 *
6274 * @see `SkipSelf`
6275 * @see `Optional`
6276 *
6277 */
6278 (): any;
6279 new (): Self;
6280}
6281
6282/**
6283 * Set the {@link GetTestability} implementation used by the Angular testing framework.
6284 * @publicApi
6285 */
6286export declare function setTestabilityGetter(getter: GetTestability): void;
6287
6288
6289/**
6290 * Represents a basic change from a previous to a new value for a single
6291 * property on a directive instance. Passed as a value in a
6292 * {@link SimpleChanges} object to the `ngOnChanges` hook.
6293 *
6294 * @see `OnChanges`
6295 *
6296 * @publicApi
6297 */
6298export declare class SimpleChange {
6299 previousValue: any;
6300 currentValue: any;
6301 firstChange: boolean;
6302 constructor(previousValue: any, currentValue: any, firstChange: boolean);
6303 /**
6304 * Check whether the new value is the first value assigned.
6305 */
6306 isFirstChange(): boolean;
6307}
6308
6309/**
6310 * A hashtable of changes represented by {@link SimpleChange} objects stored
6311 * at the declared property name they belong to on a Directive or Component. This is
6312 * the type passed to the `ngOnChanges` hook.
6313 *
6314 * @see `OnChanges`
6315 *
6316 * @publicApi
6317 */
6318export declare interface SimpleChanges {
6319 [propName: string]: SimpleChange;
6320}
6321
6322/**
6323 * Type of the `SkipSelf` metadata.
6324 *
6325 * @publicApi
6326 */
6327export declare interface SkipSelf {
6328}
6329
6330/**
6331 * `SkipSelf` decorator and metadata.
6332 *
6333 * @Annotation
6334 * @publicApi
6335 */
6336export declare const SkipSelf: SkipSelfDecorator;
6337
6338/**
6339 * Type of the `SkipSelf` decorator / constructor function.
6340 *
6341 * @publicApi
6342 */
6343export declare interface SkipSelfDecorator {
6344 /**
6345 * Parameter decorator to be used on constructor parameters,
6346 * which tells the DI framework to start dependency resolution from the parent injector.
6347 * Resolution works upward through the injector hierarchy, so the local injector
6348 * is not checked for a provider.
6349 *
6350 * @usageNotes
6351 *
6352 * In the following example, the dependency can be resolved when
6353 * instantiating a child, but not when instantiating the class itself.
6354 *
6355 * <code-example path="core/di/ts/metadata_spec.ts" region="SkipSelf">
6356 * </code-example>
6357 *
6358 * @see [Dependency Injection guide](guide/dependency-injection-in-action#skip).
6359 * @see `Self`
6360 * @see `Optional`
6361 *
6362 */
6363 (): any;
6364 new (): SkipSelf;
6365}
6366
6367/**
6368 * Configures the `Injector` to return an instance of `useClass` for a token.
6369 * @see ["Dependency Injection Guide"](guide/dependency-injection).
6370 *
6371 * @usageNotes
6372 *
6373 * {@example core/di/ts/provider_spec.ts region='StaticClassProvider'}
6374 *
6375 * Note that following two providers are not equal:
6376 *
6377 * {@example core/di/ts/provider_spec.ts region='StaticClassProviderDifference'}
6378 *
6379 * ### Multi-value example
6380 *
6381 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
6382 *
6383 * @publicApi
6384 */
6385export declare interface StaticClassProvider extends StaticClassSansProvider {
6386 /**
6387 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
6388 */
6389 provide: any;
6390 /**
6391 * When true, injector returns an array of instances. This is useful to allow multiple
6392 * providers spread across many files to provide configuration information to a common token.
6393 */
6394 multi?: boolean;
6395}
6396
6397/**
6398 * Configures the `Injector` to return an instance of `useClass` for a token.
6399 * Base for `StaticClassProvider` decorator.
6400 *
6401 * @publicApi
6402 */
6403export declare interface StaticClassSansProvider {
6404 /**
6405 * An optional class to instantiate for the `token`. By default, the `provide`
6406 * class is instantiated.
6407 */
6408 useClass: Type<any>;
6409 /**
6410 * A list of `token`s to be resolved by the injector. The list of values is then
6411 * used as arguments to the `useClass` constructor.
6412 */
6413 deps: any[];
6414}
6415
6416/**
6417 * Describes how an `Injector` should be configured as static (that is, without reflection).
6418 * A static provider provides tokens to an injector for various types of dependencies.
6419 *
6420 * @see [Injector.create()](/api/core/Injector#create).
6421 * @see ["Dependency Injection Guide"](guide/dependency-injection-providers).
6422 *
6423 * @publicApi
6424 */
6425export declare type StaticProvider = ValueProvider | ExistingProvider | StaticClassProvider | ConstructorProvider | FactoryProvider | any[];
6426
6427/**
6428 * NgModuleFactoryLoader that uses SystemJS to load NgModuleFactory
6429 * @publicApi
6430 * @deprecated the `string` form of `loadChildren` is deprecated, and `SystemJsNgModuleLoader` is
6431 * part of its implementation. See `LoadChildren` for more details.
6432 */
6433export declare class SystemJsNgModuleLoader implements NgModuleFactoryLoader {
6434 private _compiler;
6435 private _config;
6436 constructor(_compiler: Compiler, config?: SystemJsNgModuleLoaderConfig);
6437 load(path: string): Promise<NgModuleFactory<any>>;
6438 private loadAndCompile;
6439 private loadFactory;
6440}
6441
6442/**
6443 * Configuration for SystemJsNgModuleLoader.
6444 * token.
6445 *
6446 * @publicApi
6447 * @deprecated the `string` form of `loadChildren` is deprecated, and `SystemJsNgModuleLoaderConfig`
6448 * is part of its implementation. See `LoadChildren` for more details.
6449 */
6450export declare abstract class SystemJsNgModuleLoaderConfig {
6451 /**
6452 * Prefix to add when computing the name of the factory module for a given module name.
6453 */
6454 factoryPathPrefix: string;
6455 /**
6456 * Suffix to add when computing the name of the factory module for a given module name.
6457 */
6458 factoryPathSuffix: string;
6459}
6460
6461declare const T_HOST = 6;
6462
6463/**
6464 * A combination of:
6465 * - Attribute names and values.
6466 * - Special markers acting as flags to alter attributes processing.
6467 * - Parsed ngProjectAs selectors.
6468 */
6469declare type TAttributes = (string | ɵAttributeMarker | CssSelector)[];
6470
6471/**
6472 * Constants that are associated with a view. Includes:
6473 * - Attribute arrays.
6474 * - Local definition arrays.
6475 */
6476declare type TConstants = (TAttributes | string)[];
6477
6478/** Static data for an LContainer */
6479declare interface TContainerNode extends TNode {
6480 /**
6481 * Index in the data[] array.
6482 *
6483 * If it's -1, this is a dynamically created container node that isn't stored in
6484 * data[] (e.g. when you inject ViewContainerRef) .
6485 */
6486 index: number;
6487 child: null;
6488 /**
6489 * Container nodes will have parents unless:
6490 *
6491 * - They are the first node of a component or embedded view
6492 * - They are dynamically created
6493 */
6494 parent: ɵangular_packages_core_core_bf | TElementContainerNode | null;
6495 tViews: TView | TView[] | null;
6496 projection: null;
6497}
6498
6499/**
6500 * Static data that corresponds to the instance-specific data array on an LView.
6501 *
6502 * Each node's static data is stored in tData at the same index that it's stored
6503 * in the data array. Any nodes that do not have static data store a null value in
6504 * tData to avoid a sparse array.
6505 *
6506 * Each pipe's definition is stored here at the same index as its pipe instance in
6507 * the data array.
6508 *
6509 * Each host property's name is stored here at the same index as its value in the
6510 * data array.
6511 *
6512 * Each property binding name is stored here at the same index as its value in
6513 * the data array. If the binding is an interpolation, the static string values
6514 * are stored parallel to the dynamic values. Example:
6515 *
6516 * id="prefix {{ v0 }} a {{ v1 }} b {{ v2 }} suffix"
6517 *
6518 * LView | TView.data
6519 *------------------------
6520 * v0 value | 'a'
6521 * v1 value | 'b'
6522 * v2 value | id � prefix � suffix
6523 *
6524 * Injector bloom filters are also stored here.
6525 */
6526declare type TData = (TNode | ɵPipeDef<any> | ɵDirectiveDef<any> | ɵComponentDef<any> | number | TStylingRange | TStylingKey | Type<any> | InjectionToken<any> | TI18n | I18nUpdateOpCodes | null | string)[];
6527
6528/** Static data for an <ng-container> */
6529declare interface TElementContainerNode extends TNode {
6530 /** Index in the LView[] array. */
6531 index: number;
6532 child: ɵangular_packages_core_core_bf | TTextNode | TContainerNode | TElementContainerNode | TProjectionNode | null;
6533 parent: ɵangular_packages_core_core_bf | TElementContainerNode | null;
6534 tViews: null;
6535 projection: null;
6536}
6537
6538/**
6539 * Represents an embedded template that can be used to instantiate embedded views.
6540 * To instantiate embedded views based on a template, use the `ViewContainerRef`
6541 * method `createEmbeddedView()`.
6542 *
6543 * Access a `TemplateRef` instance by placing a directive on an `<ng-template>`
6544 * element (or directive prefixed with `*`). The `TemplateRef` for the embedded view
6545 * is injected into the constructor of the directive,
6546 * using the `TemplateRef` token.
6547 *
6548 * You can also use a `Query` to find a `TemplateRef` associated with
6549 * a component or a directive.
6550 *
6551 * @see `ViewContainerRef`
6552 * @see [Navigate the Component Tree with DI](guide/dependency-injection-navtree)
6553 *
6554 * @publicApi
6555 */
6556export declare abstract class TemplateRef<C> {
6557 /**
6558 * The anchor element in the parent view for this embedded view.
6559 *
6560 * The data-binding and injection contexts of embedded views created from this `TemplateRef`
6561 * inherit from the contexts of this location.
6562 *
6563 * Typically new embedded views are attached to the view container of this location, but in
6564 * advanced use-cases, the view can be attached to a different container while keeping the
6565 * data-binding and injection context from the original location.
6566 *
6567 */
6568 abstract get elementRef(): ElementRef;
6569 /**
6570 * Instantiates an embedded view based on this template,
6571 * and attaches it to the view container.
6572 * @param context The data-binding context of the embedded view, as declared
6573 * in the `<ng-template>` usage.
6574 * @returns The new embedded view object.
6575 */
6576 abstract createEmbeddedView(context: C): EmbeddedViewRef<C>;
6577}
6578
6579/**
6580 * The Testability service provides testing hooks that can be accessed from
6581 * the browser and by services such as Protractor. Each bootstrapped Angular
6582 * application on the page will have an instance of Testability.
6583 * @publicApi
6584 */
6585export declare class Testability implements PublicTestability {
6586 private _ngZone;
6587 private _pendingCount;
6588 private _isZoneStable;
6589 private _callbacks;
6590 private taskTrackingZone;
6591 constructor(_ngZone: NgZone);
6592 private _watchAngularEvents;
6593 /**
6594 * Increases the number of pending request
6595 * @deprecated pending requests are now tracked with zones.
6596 */
6597 increasePendingRequestCount(): number;
6598 /**
6599 * Decreases the number of pending request
6600 * @deprecated pending requests are now tracked with zones
6601 */
6602 decreasePendingRequestCount(): number;
6603 /**
6604 * Whether an associated application is stable
6605 */
6606 isStable(): boolean;
6607 private _runCallbacksIfReady;
6608 private getPendingTasks;
6609 private addCallback;
6610 /**
6611 * Wait for the application to be stable with a timeout. If the timeout is reached before that
6612 * happens, the callback receives a list of the macro tasks that were pending, otherwise null.
6613 *
6614 * @param doneCb The callback to invoke when Angular is stable or the timeout expires
6615 * whichever comes first.
6616 * @param timeout Optional. The maximum time to wait for Angular to become stable. If not
6617 * specified, whenStable() will wait forever.
6618 * @param updateCb Optional. If specified, this callback will be invoked whenever the set of
6619 * pending macrotasks changes. If this callback returns true doneCb will not be invoked
6620 * and no further updates will be issued.
6621 */
6622 whenStable(doneCb: Function, timeout?: number, updateCb?: Function): void;
6623 /**
6624 * Get the number of pending requests
6625 * @deprecated pending requests are now tracked with zones
6626 */
6627 getPendingRequestCount(): number;
6628 /**
6629 * Find providers by name
6630 * @param using The root element to search from
6631 * @param provider The name of binding variable
6632 * @param exactMatch Whether using exactMatch
6633 */
6634 findProviders(using: any, provider: string, exactMatch: boolean): any[];
6635}
6636
6637/**
6638 * A global registry of {@link Testability} instances for specific elements.
6639 * @publicApi
6640 */
6641export declare class TestabilityRegistry {
6642 constructor();
6643 /**
6644 * Registers an application with a testability hook so that it can be tracked
6645 * @param token token of application, root element
6646 * @param testability Testability hook
6647 */
6648 registerApplication(token: any, testability: Testability): void;
6649 /**
6650 * Unregisters an application.
6651 * @param token token of application, root element
6652 */
6653 unregisterApplication(token: any): void;
6654 /**
6655 * Unregisters all applications
6656 */
6657 unregisterAllApplications(): void;
6658 /**
6659 * Get a testability hook associated with the application
6660 * @param elem root element
6661 */
6662 getTestability(elem: any): Testability | null;
6663 /**
6664 * Get all registered testabilities
6665 */
6666 getAllTestabilities(): Testability[];
6667 /**
6668 * Get all registered applications(root elements)
6669 */
6670 getAllRootElements(): any[];
6671 /**
6672 * Find testability of a node in the Tree
6673 * @param elem node
6674 * @param findInAncestors whether finding testability in ancestors if testability was not found in
6675 * current node
6676 */
6677 findTestabilityInTree(elem: Node, findInAncestors?: boolean): Testability | null;
6678}
6679
6680declare interface TextDef {
6681 prefix: string;
6682}
6683
6684/**
6685 * Store information for the i18n translation block.
6686 */
6687declare interface TI18n {
6688 /**
6689 * Number of slots to allocate in expando.
6690 *
6691 * This is the max number of DOM elements which will be created by this i18n + ICU blocks. When
6692 * the DOM elements are being created they are stored in the EXPANDO, so that update OpCodes can
6693 * write into them.
6694 */
6695 vars: number;
6696 /**
6697 * A set of OpCodes which will create the Text Nodes and ICU anchors for the translation blocks.
6698 *
6699 * NOTE: The ICU anchors are filled in with ICU Update OpCode.
6700 */
6701 create: I18nMutateOpCodes;
6702 /**
6703 * A set of OpCodes which will be executed on each change detection to determine if any changes to
6704 * DOM are required.
6705 */
6706 update: I18nUpdateOpCodes;
6707 /**
6708 * A list of ICUs in a translation block (or `null` if block has no ICUs).
6709 *
6710 * Example:
6711 * Given: `<div i18n>You have {count, plural, ...} and {state, switch, ...}</div>`
6712 * There would be 2 ICUs in this array.
6713 * 1. `{count, plural, ...}`
6714 * 2. `{state, switch, ...}`
6715 */
6716 icus: TIcu[] | null;
6717}
6718
6719declare interface TIcu {
6720 /**
6721 * Defines the ICU type of `select` or `plural`
6722 */
6723 type: IcuType;
6724 /**
6725 * Number of slots to allocate in expando for each case.
6726 *
6727 * This is the max number of DOM elements which will be created by this i18n + ICU blocks. When
6728 * the DOM elements are being created they are stored in the EXPANDO, so that update OpCodes can
6729 * write into them.
6730 */
6731 vars: number[];
6732 /**
6733 * An optional array of child/sub ICUs.
6734 *
6735 * In case of nested ICUs such as:
6736 * ```
6737 * {�0�, plural,
6738 * =0 {zero}
6739 * other {�0� {�1�, select,
6740 * cat {cats}
6741 * dog {dogs}
6742 * other {animals}
6743 * }!
6744 * }
6745 * }
6746 * ```
6747 * When the parent ICU is changing it must clean up child ICUs as well. For this reason it needs
6748 * to know which child ICUs to run clean up for as well.
6749 *
6750 * In the above example this would be:
6751 * ```ts
6752 * [
6753 * [], // `=0` has no sub ICUs
6754 * [1], // `other` has one subICU at `1`st index.
6755 * ]
6756 * ```
6757 *
6758 * The reason why it is Array of Arrays is because first array represents the case, and second
6759 * represents the child ICUs to clean up. There may be more than one child ICUs per case.
6760 */
6761 childIcus: number[][];
6762 /**
6763 * A list of case values which the current ICU will try to match.
6764 *
6765 * The last value is `other`
6766 */
6767 cases: any[];
6768 /**
6769 * A set of OpCodes to apply in order to build up the DOM render tree for the ICU
6770 */
6771 create: I18nMutateOpCodes[];
6772 /**
6773 * A set of OpCodes to apply in order to destroy the DOM render tree for the ICU.
6774 */
6775 remove: I18nMutateOpCodes[];
6776 /**
6777 * A set of OpCodes to apply in order to update the DOM render tree for the ICU bindings.
6778 */
6779 update: I18nUpdateOpCodes[];
6780}
6781
6782/**
6783 * Binding data (flyweight) for a particular node that is shared between all templates
6784 * of a specific type.
6785 *
6786 * If a property is:
6787 * - PropertyAliases: that property's data was generated and this is it
6788 * - Null: that property's data was already generated and nothing was found.
6789 * - Undefined: that property's data has not yet been generated
6790 *
6791 * see: https://en.wikipedia.org/wiki/Flyweight_pattern for more on the Flyweight pattern
6792 */
6793declare interface TNode {
6794 /** The type of the TNode. See TNodeType. */
6795 type: TNodeType;
6796 /**
6797 * Index of the TNode in TView.data and corresponding native element in LView.
6798 *
6799 * This is necessary to get from any TNode to its corresponding native element when
6800 * traversing the node tree.
6801 *
6802 * If index is -1, this is a dynamically created container node or embedded view node.
6803 */
6804 index: number;
6805 /**
6806 * The index of the closest injector in this node's LView.
6807 *
6808 * If the index === -1, there is no injector on this node or any ancestor node in this view.
6809 *
6810 * If the index !== -1, it is the index of this node's injector OR the index of a parent injector
6811 * in the same view. We pass the parent injector index down the node tree of a view so it's
6812 * possible to find the parent injector without walking a potentially deep node tree. Injector
6813 * indices are not set across view boundaries because there could be multiple component hosts.
6814 *
6815 * If tNode.injectorIndex === tNode.parent.injectorIndex, then the index belongs to a parent
6816 * injector.
6817 */
6818 injectorIndex: number;
6819 /**
6820 * Stores starting index of the directives.
6821 */
6822 directiveStart: number;
6823 /**
6824 * Stores final exclusive index of the directives.
6825 */
6826 directiveEnd: number;
6827 /**
6828 * Stores the last directive which had a styling instruction.
6829 *
6830 * Initial value of this is `-1` which means that no `hostBindings` styling instruction has
6831 * executed. As `hostBindings` instructions execute they set the value to the index of the
6832 * `DirectiveDef` which contained the last `hostBindings` styling instruction.
6833 *
6834 * Valid values are:
6835 * - `-1` No `hostBindings` instruction has executed.
6836 * - `directiveStart <= directiveStylingLast < directiveEnd`: Points to the `DirectiveDef` of the
6837 * last styling instruction which executed in the `hostBindings`.
6838 *
6839 * This data is needed so that styling instructions know which static styling data needs to be
6840 * collected from the `DirectiveDef.hostAttrs`. A styling instruction needs to collect all data
6841 * since last styling instruction.
6842 */
6843 directiveStylingLast: number;
6844 /**
6845 * Stores indexes of property bindings. This field is only set in the ngDevMode and holds indexes
6846 * of property bindings so TestBed can get bound property metadata for a given node.
6847 */
6848 propertyBindings: number[] | null;
6849 /**
6850 * Stores if Node isComponent, isProjected, hasContentQuery, hasClassInput and hasStyleInput etc.
6851 */
6852 flags: TNodeFlags;
6853 /**
6854 * This number stores two values using its bits:
6855 *
6856 * - the index of the first provider on that node (first 16 bits)
6857 * - the count of view providers from the component on this node (last 16 bits)
6858 */
6859 providerIndexes: TNodeProviderIndexes;
6860 /** The tag name associated with this node. */
6861 tagName: string | null;
6862 /**
6863 * Attributes associated with an element. We need to store attributes to support various use-cases
6864 * (attribute injection, content projection with selectors, directives matching).
6865 * Attributes are stored statically because reading them from the DOM would be way too slow for
6866 * content projection and queries.
6867 *
6868 * Since attrs will always be calculated first, they will never need to be marked undefined by
6869 * other instructions.
6870 *
6871 * For regular attributes a name of an attribute and its value alternate in the array.
6872 * e.g. ['role', 'checkbox']
6873 * This array can contain flags that will indicate "special attributes" (attributes with
6874 * namespaces, attributes extracted from bindings and outputs).
6875 */
6876 attrs: TAttributes | null;
6877 /**
6878 * Same as `TNode.attrs` but contains merged data across all directive host bindings.
6879 *
6880 * We need to keep `attrs` as unmerged so that it can be used for attribute selectors.
6881 * We merge attrs here so that it can be used in a performant way for initial rendering.
6882 *
6883 * The `attrs` are merged in first pass in following order:
6884 * - Component's `hostAttrs`
6885 * - Directives' `hostAttrs`
6886 * - Template `TNode.attrs` associated with the current `TNode`.
6887 */
6888 mergedAttrs: TAttributes | null;
6889 /**
6890 * A set of local names under which a given element is exported in a template and
6891 * visible to queries. An entry in this array can be created for different reasons:
6892 * - an element itself is referenced, ex.: `<div #foo>`
6893 * - a component is referenced, ex.: `<my-cmpt #foo>`
6894 * - a directive is referenced, ex.: `<my-cmpt #foo="directiveExportAs">`.
6895 *
6896 * A given element might have different local names and those names can be associated
6897 * with a directive. We store local names at even indexes while odd indexes are reserved
6898 * for directive index in a view (or `-1` if there is no associated directive).
6899 *
6900 * Some examples:
6901 * - `<div #foo>` => `["foo", -1]`
6902 * - `<my-cmpt #foo>` => `["foo", myCmptIdx]`
6903 * - `<my-cmpt #foo #bar="directiveExportAs">` => `["foo", myCmptIdx, "bar", directiveIdx]`
6904 * - `<div #foo #bar="directiveExportAs">` => `["foo", -1, "bar", directiveIdx]`
6905 */
6906 localNames: (string | number)[] | null;
6907 /** Information about input properties that need to be set once from attribute data. */
6908 initialInputs: InitialInputData | null | undefined;
6909 /**
6910 * Input data for all directives on this node. `null` means that there are no directives with
6911 * inputs on this node.
6912 */
6913 inputs: PropertyAliases | null;
6914 /**
6915 * Output data for all directives on this node. `null` means that there are no directives with
6916 * outputs on this node.
6917 */
6918 outputs: PropertyAliases | null;
6919 /**
6920 * The TView or TViews attached to this node.
6921 *
6922 * If this TNode corresponds to an LContainer with inline views, the container will
6923 * need to store separate static data for each of its view blocks (TView[]). Otherwise,
6924 * nodes in inline views with the same index as nodes in their parent views will overwrite
6925 * each other, as they are in the same template.
6926 *
6927 * Each index in this array corresponds to the static data for a certain
6928 * view. So if you had V(0) and V(1) in a container, you might have:
6929 *
6930 * [
6931 * [{tagName: 'div', attrs: ...}, null], // V(0) TView
6932 * [{tagName: 'button', attrs ...}, null] // V(1) TView
6933 *
6934 * If this TNode corresponds to an LContainer with a template (e.g. structural
6935 * directive), the template's TView will be stored here.
6936 *
6937 * If this TNode corresponds to an element, tViews will be null .
6938 */
6939 tViews: TView | TView[] | null;
6940 /**
6941 * The next sibling node. Necessary so we can propagate through the root nodes of a view
6942 * to insert them or remove them from the DOM.
6943 */
6944 next: TNode | null;
6945 /**
6946 * The next projected sibling. Since in Angular content projection works on the node-by-node basis
6947 * the act of projecting nodes might change nodes relationship at the insertion point (target
6948 * view). At the same time we need to keep initial relationship between nodes as expressed in
6949 * content view.
6950 */
6951 projectionNext: TNode | null;
6952 /**
6953 * First child of the current node.
6954 *
6955 * For component nodes, the child will always be a ContentChild (in same view).
6956 * For embedded view nodes, the child will be in their child view.
6957 */
6958 child: TNode | null;
6959 /**
6960 * Parent node (in the same view only).
6961 *
6962 * We need a reference to a node's parent so we can append the node to its parent's native
6963 * element at the appropriate time.
6964 *
6965 * If the parent would be in a different view (e.g. component host), this property will be null.
6966 * It's important that we don't try to cross component boundaries when retrieving the parent
6967 * because the parent will change (e.g. index, attrs) depending on where the component was
6968 * used (and thus shouldn't be stored on TNode). In these cases, we retrieve the parent through
6969 * LView.node instead (which will be instance-specific).
6970 *
6971 * If this is an inline view node (V), the parent will be its container.
6972 */
6973 parent: ɵangular_packages_core_core_bf | TContainerNode | null;
6974 /**
6975 * List of projected TNodes for a given component host element OR index into the said nodes.
6976 *
6977 * For easier discussion assume this example:
6978 * `<parent>`'s view definition:
6979 * ```
6980 * <child id="c1">content1</child>
6981 * <child id="c2"><span>content2</span></child>
6982 * ```
6983 * `<child>`'s view definition:
6984 * ```
6985 * <ng-content id="cont1"></ng-content>
6986 * ```
6987 *
6988 * If `Array.isArray(projection)` then `TNode` is a host element:
6989 * - `projection` stores the content nodes which are to be projected.
6990 * - The nodes represent categories defined by the selector: For example:
6991 * `<ng-content/><ng-content select="abc"/>` would represent the heads for `<ng-content/>`
6992 * and `<ng-content select="abc"/>` respectively.
6993 * - The nodes we store in `projection` are heads only, we used `.next` to get their
6994 * siblings.
6995 * - The nodes `.next` is sorted/rewritten as part of the projection setup.
6996 * - `projection` size is equal to the number of projections `<ng-content>`. The size of
6997 * `c1` will be `1` because `<child>` has only one `<ng-content>`.
6998 * - we store `projection` with the host (`c1`, `c2`) rather than the `<ng-content>` (`cont1`)
6999 * because the same component (`<child>`) can be used in multiple locations (`c1`, `c2`) and as
7000 * a result have different set of nodes to project.
7001 * - without `projection` it would be difficult to efficiently traverse nodes to be projected.
7002 *
7003 * If `typeof projection == 'number'` then `TNode` is a `<ng-content>` element:
7004 * - `projection` is an index of the host's `projection`Nodes.
7005 * - This would return the first head node to project:
7006 * `getHost(currentTNode).projection[currentTNode.projection]`.
7007 * - When projecting nodes the parent node retrieved may be a `<ng-content>` node, in which case
7008 * the process is recursive in nature.
7009 *
7010 * If `projection` is of type `RNode[][]` than we have a collection of native nodes passed as
7011 * projectable nodes during dynamic component creation.
7012 */
7013 projection: (TNode | RNode[])[] | number | null;
7014 /**
7015 * A collection of all `style` static values for an element (including from host).
7016 *
7017 * This field will be populated if and when:
7018 *
7019 * - There are one or more initial `style`s on an element (e.g. `<div style="width:200px;">`)
7020 * - There are one or more initial `style`s on a directive/component host
7021 * (e.g. `@Directive({host: {style: "width:200px;" } }`)
7022 */
7023 styles: string | null;
7024 /**
7025 * A collection of all `style` static values for an element excluding host sources.
7026 *
7027 * Populated when there are one or more initial `style`s on an element
7028 * (e.g. `<div style="width:200px;">`)
7029 * Must be stored separately from `tNode.styles` to facilitate setting directive
7030 * inputs that shadow the `style` property. If we used `tNode.styles` as is for shadowed inputs,
7031 * we would feed host styles back into directives as "inputs". If we used `tNode.attrs`, we would
7032 * have to concatenate the attributes on every template pass. Instead, we process once on first
7033 * create pass and store here.
7034 */
7035 stylesWithoutHost: string | null;
7036 /**
7037 * A `KeyValueArray` version of residual `styles`.
7038 *
7039 * When there are styling instructions than each instruction stores the static styling
7040 * which is of lower priority than itself. This means that there may be a higher priority styling
7041 * than the instruction.
7042 *
7043 * Imagine:
7044 * ```
7045 * <div style="color: highest;" my-dir>
7046 *
7047 * @Directive({
7048 * host: {
7049 * style: 'color: lowest; ',
7050 * '[styles.color]': 'exp' // ɵɵstyleProp('color', ctx.exp);
7051 * }
7052 * })
7053 * ```
7054 *
7055 * In the above case:
7056 * - `color: lowest` is stored with `ɵɵstyleProp('color', ctx.exp);` instruction
7057 * - `color: highest` is the residual and is stored here.
7058 *
7059 * - `undefined': not initialized.
7060 * - `null`: initialized but `styles` is `null`
7061 * - `KeyValueArray`: parsed version of `styles`.
7062 */
7063 residualStyles: KeyValueArray<any> | undefined | null;
7064 /**
7065 * A collection of all class static values for an element (including from host).
7066 *
7067 * This field will be populated if and when:
7068 *
7069 * - There are one or more initial classes on an element (e.g. `<div class="one two three">`)
7070 * - There are one or more initial classes on an directive/component host
7071 * (e.g. `@Directive({host: {class: "SOME_CLASS" } }`)
7072 */
7073 classes: string | null;
7074 /**
7075 * A collection of all class static values for an element excluding host sources.
7076 *
7077 * Populated when there are one or more initial classes on an element
7078 * (e.g. `<div class="SOME_CLASS">`)
7079 * Must be stored separately from `tNode.classes` to facilitate setting directive
7080 * inputs that shadow the `class` property. If we used `tNode.classes` as is for shadowed inputs,
7081 * we would feed host classes back into directives as "inputs". If we used `tNode.attrs`, we would
7082 * have to concatenate the attributes on every template pass. Instead, we process once on first
7083 * create pass and store here.
7084 */
7085 classesWithoutHost: string | null;
7086 /**
7087 * A `KeyValueArray` version of residual `classes`.
7088 *
7089 * Same as `TNode.residualStyles` but for classes.
7090 *
7091 * - `undefined': not initialized.
7092 * - `null`: initialized but `classes` is `null`
7093 * - `KeyValueArray`: parsed version of `classes`.
7094 */
7095 residualClasses: KeyValueArray<any> | undefined | null;
7096 /**
7097 * Stores the head/tail index of the class bindings.
7098 *
7099 * - If no bindings, the head and tail will both be 0.
7100 * - If there are template bindings, stores the head/tail of the class bindings in the template.
7101 * - If no template bindings but there are host bindings, the head value will point to the last
7102 * host binding for "class" (not the head of the linked list), tail will be 0.
7103 *
7104 * See: `style_binding_list.ts` for details.
7105 *
7106 * This is used by `insertTStylingBinding` to know where the next styling binding should be
7107 * inserted so that they can be sorted in priority order.
7108 */
7109 classBindings: TStylingRange;
7110 /**
7111 * Stores the head/tail index of the class bindings.
7112 *
7113 * - If no bindings, the head and tail will both be 0.
7114 * - If there are template bindings, stores the head/tail of the style bindings in the template.
7115 * - If no template bindings but there are host bindings, the head value will point to the last
7116 * host binding for "style" (not the head of the linked list), tail will be 0.
7117 *
7118 * See: `style_binding_list.ts` for details.
7119 *
7120 * This is used by `insertTStylingBinding` to know where the next styling binding should be
7121 * inserted so that they can be sorted in priority order.
7122 */
7123 styleBindings: TStylingRange;
7124}
7125
7126/**
7127 * Corresponds to the TNode.flags property.
7128 */
7129declare const enum TNodeFlags {
7130 /** Bit #1 - This bit is set if the node is a host for any directive (including a component) */
7131 isDirectiveHost = 1,
7132 /**
7133 * Bit #2 - This bit is set if the node is a host for a component.
7134 *
7135 * Setting this bit implies that the `isDirectiveHost` bit is set as well.
7136 * */
7137 isComponentHost = 2,
7138 /** Bit #3 - This bit is set if the node has been projected */
7139 isProjected = 4,
7140 /** Bit #4 - This bit is set if any directive on this node has content queries */
7141 hasContentQuery = 8,
7142 /** Bit #5 - This bit is set if the node has any "class" inputs */
7143 hasClassInput = 16,
7144 /** Bit #6 - This bit is set if the node has any "style" inputs */
7145 hasStyleInput = 32,
7146 /** Bit #7 This bit is set if the node has been detached by i18n */
7147 isDetached = 64,
7148 /**
7149 * Bit #8 - This bit is set if the node has directives with host bindings.
7150 *
7151 * This flags allows us to guard host-binding logic and invoke it only on nodes
7152 * that actually have directives with host bindings.
7153 */
7154 hasHostBindings = 128
7155}
7156
7157/**
7158 * Corresponds to the TNode.providerIndexes property.
7159 */
7160declare const enum TNodeProviderIndexes {
7161 /** The index of the first provider on this node is encoded on the least significant bits. */
7162 ProvidersStartIndexMask = 1048575,
7163 /**
7164 * The count of view providers from the component on this node is
7165 * encoded on the 20 most significant bits.
7166 */
7167 CptViewProvidersCountShift = 20,
7168 CptViewProvidersCountShifter = 1048576
7169}
7170
7171/**
7172 * TNodeType corresponds to the {@link TNode} `type` property.
7173 */
7174declare const enum TNodeType {
7175 /**
7176 * The TNode contains information about an {@link LContainer} for embedded views.
7177 */
7178 Container = 0,
7179 /**
7180 * The TNode contains information about an `<ng-content>` projection
7181 */
7182 Projection = 1,
7183 /**
7184 * The TNode contains information about an {@link LView}
7185 */
7186 View = 2,
7187 /**
7188 * The TNode contains information about a DOM element aka {@link RNode}.
7189 */
7190 Element = 3,
7191 /**
7192 * The TNode contains information about an `<ng-container>` element {@link RNode}.
7193 */
7194 ElementContainer = 4,
7195 /**
7196 * The TNode contains information about an ICU comment used in `i18n`.
7197 */
7198 IcuContainer = 5
7199}
7200
7201/**
7202 * Type representing a set of TNodes that can have local refs (`#foo`) placed on them.
7203 */
7204declare type TNodeWithLocalRefs = TContainerNode | ɵangular_packages_core_core_bf | TElementContainerNode;
7205
7206/** Static data for an LProjectionNode */
7207declare interface TProjectionNode extends TNode {
7208 /** Index in the data[] array */
7209 child: null;
7210 /**
7211 * Projection nodes will have parents unless they are the first node of a component
7212 * or embedded view (which means their parent is in a different view and must be
7213 * retrieved using LView.node).
7214 */
7215 parent: ɵangular_packages_core_core_bf | TElementContainerNode | null;
7216 tViews: null;
7217 /** Index of the projection node. (See TNode.projection for more info.) */
7218 projection: number;
7219}
7220
7221/**
7222 * TQueries represent a collection of individual TQuery objects tracked in a given view. Most of the
7223 * methods on this interface are simple proxy methods to the corresponding functionality on TQuery.
7224 */
7225declare interface TQueries {
7226 /**
7227 * Adds a new TQuery to a collection of queries tracked in a given view.
7228 * @param tQuery
7229 */
7230 track(tQuery: TQuery): void;
7231 /**
7232 * Returns a TQuery instance for at the given index in the queries array.
7233 * @param index
7234 */
7235 getByIndex(index: number): TQuery;
7236 /**
7237 * Returns the number of queries tracked in a given view.
7238 */
7239 length: number;
7240 /**
7241 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
7242 * `elementStart` on each and every TQuery.
7243 * @param tView
7244 * @param tNode
7245 */
7246 elementStart(tView: TView, tNode: TNode): void;
7247 /**
7248 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
7249 * `elementEnd` on each and every TQuery.
7250 * @param tNode
7251 */
7252 elementEnd(tNode: TNode): void;
7253 /**
7254 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
7255 * `template` on each and every TQuery.
7256 * @param tView
7257 * @param tNode
7258 */
7259 template(tView: TView, tNode: TNode): void;
7260 /**
7261 * A proxy method that iterates over all the TQueries in a given TView and calls the corresponding
7262 * `embeddedTView` on each and every TQuery.
7263 * @param tNode
7264 */
7265 embeddedTView(tNode: TNode): TQueries | null;
7266}
7267
7268/**
7269 * TQuery objects represent all the query-related data that remain the same from one view instance
7270 * to another and can be determined on the very first template pass. Most notably TQuery holds all
7271 * the matches for a given view.
7272 */
7273declare interface TQuery {
7274 /**
7275 * Query metadata extracted from query annotations.
7276 */
7277 metadata: TQueryMetadata;
7278 /**
7279 * Index of a query in a declaration view in case of queries propagated to en embedded view, -1
7280 * for queries declared in a given view. We are storing this index so we can find a parent query
7281 * to clone for an embedded view (when an embedded view is created).
7282 */
7283 indexInDeclarationView: number;
7284 /**
7285 * Matches collected on the first template pass. Each match is a pair of:
7286 * - TNode index;
7287 * - match index;
7288 *
7289 * A TNode index can be either:
7290 * - a positive number (the most common case) to indicate a matching TNode;
7291 * - a negative number to indicate that a given query is crossing a <ng-template> element and
7292 * results from views created based on TemplateRef should be inserted at this place.
7293 *
7294 * A match index is a number used to find an actual value (for a given node) when query results
7295 * are materialized. This index can have one of the following values:
7296 * - -2 - indicates that we need to read a special token (TemplateRef, ViewContainerRef etc.);
7297 * - -1 - indicates that we need to read a default value based on the node type (TemplateRef for
7298 * ng-template and ElementRef for other elements);
7299 * - a positive number - index of an injectable to be read from the element injector.
7300 */
7301 matches: number[] | null;
7302 /**
7303 * A flag indicating if a given query crosses an <ng-template> element. This flag exists for
7304 * performance reasons: we can notice that queries not crossing any <ng-template> elements will
7305 * have matches from a given view only (and adapt processing accordingly).
7306 */
7307 crossesNgTemplate: boolean;
7308 /**
7309 * A method call when a given query is crossing an element (or element container). This is where a
7310 * given TNode is matched against a query predicate.
7311 * @param tView
7312 * @param tNode
7313 */
7314 elementStart(tView: TView, tNode: TNode): void;
7315 /**
7316 * A method called when processing the elementEnd instruction - this is mostly useful to determine
7317 * if a given content query should match any nodes past this point.
7318 * @param tNode
7319 */
7320 elementEnd(tNode: TNode): void;
7321 /**
7322 * A method called when processing the template instruction. This is where a
7323 * given TContainerNode is matched against a query predicate.
7324 * @param tView
7325 * @param tNode
7326 */
7327 template(tView: TView, tNode: TNode): void;
7328 /**
7329 * A query-related method called when an embedded TView is created based on the content of a
7330 * <ng-template> element. We call this method to determine if a given query should be propagated
7331 * to the embedded view and if so - return a cloned TQuery for this embedded view.
7332 * @param tNode
7333 * @param childQueryIndex
7334 */
7335 embeddedTView(tNode: TNode, childQueryIndex: number): TQuery | null;
7336}
7337
7338/**
7339 * An object representing query metadata extracted from query annotations.
7340 */
7341declare interface TQueryMetadata {
7342 predicate: Type<any> | string[];
7343 descendants: boolean;
7344 read: any;
7345 isStatic: boolean;
7346}
7347
7348/**
7349 * An optional function passed into the `NgForOf` directive that defines how to track
7350 * changes for items in an iterable.
7351 * The function takes the iteration index and item ID.
7352 * When supplied, Angular tracks changes by the return value of the function.
7353 *
7354 * @publicApi
7355 */
7356export declare interface TrackByFunction<T> {
7357 (index: number, item: T): any;
7358}
7359
7360/**
7361 * Use this token at bootstrap to provide the content of your translation file (`xtb`,
7362 * `xlf` or `xlf2`) when you want to translate your application in another language.
7363 *
7364 * See the [i18n guide](guide/i18n#merge) for more information.
7365 *
7366 * @usageNotes
7367 * ### Example
7368 *
7369 * ```typescript
7370 * import { TRANSLATIONS } from '@angular/core';
7371 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
7372 * import { AppModule } from './app/app.module';
7373 *
7374 * // content of your translation file
7375 * const translations = '....';
7376 *
7377 * platformBrowserDynamic().bootstrapModule(AppModule, {
7378 * providers: [{provide: TRANSLATIONS, useValue: translations }]
7379 * });
7380 * ```
7381 *
7382 * @publicApi
7383 */
7384export declare const TRANSLATIONS: InjectionToken<string>;
7385
7386/**
7387 * Provide this token at bootstrap to set the format of your {@link TRANSLATIONS}: `xtb`,
7388 * `xlf` or `xlf2`.
7389 *
7390 * See the [i18n guide](guide/i18n#merge) for more information.
7391 *
7392 * @usageNotes
7393 * ### Example
7394 *
7395 * ```typescript
7396 * import { TRANSLATIONS_FORMAT } from '@angular/core';
7397 * import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
7398 * import { AppModule } from './app/app.module';
7399 *
7400 * platformBrowserDynamic().bootstrapModule(AppModule, {
7401 * providers: [{provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }]
7402 * });
7403 * ```
7404 *
7405 * @publicApi
7406 */
7407export declare const TRANSLATIONS_FORMAT: InjectionToken<string>;
7408
7409declare const TRANSPLANTED_VIEWS_TO_REFRESH = 5;
7410
7411/**
7412 * Value stored in the `TData` which is needed to re-concatenate the styling.
7413 *
7414 * See: `TStylingKeyPrimitive` and `TStylingStatic`
7415 */
7416declare type TStylingKey = TStylingKeyPrimitive | TStylingStatic;
7417
7418/**
7419 * The primitive portion (`TStylingStatic` removed) of the value stored in the `TData` which is
7420 * needed to re-concatenate the styling.
7421 *
7422 * - `string`: Stores the property name. Used with `ɵɵstyleProp`/`ɵɵclassProp` instruction.
7423 * - `null`: Represents map, so there is no name. Used with `ɵɵstyleMap`/`ɵɵclassMap`.
7424 * - `false`: Represents an ignore case. This happens when `ɵɵstyleProp`/`ɵɵclassProp` instruction
7425 * is combined with directive which shadows its input `@Input('class')`. That way the binding
7426 * should not participate in the styling resolution.
7427 */
7428declare type TStylingKeyPrimitive = string | null | false;
7429
7430/**
7431 * This is a branded number which contains previous and next index.
7432 *
7433 * When we come across styling instructions we need to store the `TStylingKey` in the correct
7434 * order so that we can re-concatenate the styling value in the desired priority.
7435 *
7436 * The insertion can happen either at the:
7437 * - end of template as in the case of coming across additional styling instruction in the template
7438 * - in front of the template in the case of coming across additional instruction in the
7439 * `hostBindings`.
7440 *
7441 * We use `TStylingRange` to store the previous and next index into the `TData` where the template
7442 * bindings can be found.
7443 *
7444 * - bit 0 is used to mark that the previous index has a duplicate for current value.
7445 * - bit 1 is used to mark that the next index has a duplicate for the current value.
7446 * - bits 2-16 are used to encode the next/tail of the template.
7447 * - bits 17-32 are used to encode the previous/head of template.
7448 *
7449 * NODE: *duplicate* false implies that it is statically known that this binding will not collide
7450 * with other bindings and therefore there is no need to check other bindings. For example the
7451 * bindings in `<div [style.color]="exp" [style.width]="exp">` will never collide and will have
7452 * their bits set accordingly. Previous duplicate means that we may need to check previous if the
7453 * current binding is `null`. Next duplicate means that we may need to check next bindings if the
7454 * current binding is not `null`.
7455 *
7456 * NOTE: `0` has special significance and represents `null` as in no additional pointer.
7457 */
7458declare interface TStylingRange {
7459 __brand__: 'TStylingRange';
7460}
7461
7462/**
7463 * Store the static values for the styling binding.
7464 *
7465 * The `TStylingStatic` is just `KeyValueArray` where key `""` (stored at location 0) contains the
7466 * `TStylingKey` (stored at location 1). In other words this wraps the `TStylingKey` such that the
7467 * `""` contains the wrapped value.
7468 *
7469 * When instructions are resolving styling they may need to look forward or backwards in the linked
7470 * list to resolve the value. For this reason we have to make sure that he linked list also contains
7471 * the static values. However the list only has space for one item per styling instruction. For this
7472 * reason we store the static values here as part of the `TStylingKey`. This means that the
7473 * resolution function when looking for a value needs to first look at the binding value, and than
7474 * at `TStylingKey` (if it exists).
7475 *
7476 * Imagine we have:
7477 *
7478 * ```
7479 * <div class="TEMPLATE" my-dir>
7480 *
7481 * @Directive({
7482 * host: {
7483 * class: 'DIR',
7484 * '[class.dynamic]': 'exp' // ɵɵclassProp('dynamic', ctx.exp);
7485 * }
7486 * })
7487 * ```
7488 *
7489 * In the above case the linked list will contain one item:
7490 *
7491 * ```
7492 * // assume binding location: 10 for `ɵɵclassProp('dynamic', ctx.exp);`
7493 * tData[10] = <TStylingStatic>[
7494 * '': 'dynamic', // This is the wrapped value of `TStylingKey`
7495 * 'DIR': true, // This is the default static value of directive binding.
7496 * ];
7497 * tData[10 + 1] = 0; // We don't have prev/next.
7498 *
7499 * lView[10] = undefined; // assume `ctx.exp` is `undefined`
7500 * lView[10 + 1] = undefined; // Just normalized `lView[10]`
7501 * ```
7502 *
7503 * So when the function is resolving styling value, it first needs to look into the linked list
7504 * (there is none) and than into the static `TStylingStatic` too see if there is a default value for
7505 * `dynamic` (there is not). Therefore it is safe to remove it.
7506 *
7507 * If setting `true` case:
7508 * ```
7509 * lView[10] = true; // assume `ctx.exp` is `true`
7510 * lView[10 + 1] = true; // Just normalized `lView[10]`
7511 * ```
7512 * So when the function is resolving styling value, it first needs to look into the linked list
7513 * (there is none) and than into `TNode.residualClass` (TNode.residualStyle) which contains
7514 * ```
7515 * tNode.residualClass = [
7516 * 'TEMPLATE': true,
7517 * ];
7518 * ```
7519 *
7520 * This means that it is safe to add class.
7521 */
7522declare interface TStylingStatic extends KeyValueArray<any> {
7523}
7524
7525/** Static data for a text node */
7526declare interface TTextNode extends TNode {
7527 /** Index in the data[] array */
7528 index: number;
7529 child: null;
7530 /**
7531 * Text nodes will have parents unless they are the first node of a component or
7532 * embedded view (which means their parent is in a different view and must be
7533 * retrieved using LView.node).
7534 */
7535 parent: ɵangular_packages_core_core_bf | TElementContainerNode | null;
7536 tViews: null;
7537 projection: null;
7538}
7539
7540declare const TVIEW = 1;
7541
7542/**
7543 * The static data for an LView (shared between all templates of a
7544 * given type).
7545 *
7546 * Stored on the `ComponentDef.tView`.
7547 */
7548declare interface TView {
7549 /**
7550 * Type of `TView` (`Root`|`Component`|`Embedded`).
7551 */
7552 type: TViewType;
7553 /**
7554 * ID for inline views to determine whether a view is the same as the previous view
7555 * in a certain position. If it's not, we know the new view needs to be inserted
7556 * and the one that exists needs to be removed (e.g. if/else statements)
7557 *
7558 * If this is -1, then this is a component view or a dynamically created view.
7559 */
7560 readonly id: number;
7561 /**
7562 * This is a blueprint used to generate LView instances for this TView. Copying this
7563 * blueprint is faster than creating a new LView from scratch.
7564 */
7565 blueprint: ɵangular_packages_core_core_bp;
7566 /**
7567 * The template function used to refresh the view of dynamically created views
7568 * and components. Will be null for inline views.
7569 */
7570 template: ComponentTemplate<{}> | null;
7571 /**
7572 * A function containing query-related instructions.
7573 */
7574 viewQuery: ViewQueriesFunction<{}> | null;
7575 /**
7576 * Pointer to the host `TNode` (not part of this TView).
7577 *
7578 * If this is a `TViewNode` for an `LViewNode`, this is an embedded view of a container.
7579 * We need this pointer to be able to efficiently find this node when inserting the view
7580 * into an anchor.
7581 *
7582 * If this is a `TElementNode`, this is the view of a root component. It has exactly one
7583 * root TNode.
7584 *
7585 * If this is null, this is the view of a component that is not at root. We do not store
7586 * the host TNodes for child component views because they can potentially have several
7587 * different host TNodes, depending on where the component is being used. These host
7588 * TNodes cannot be shared (due to different indices, etc).
7589 */
7590 node: TViewNode | ɵangular_packages_core_core_bf | null;
7591 /** Whether or not this template has been processed in creation mode. */
7592 firstCreatePass: boolean;
7593 /**
7594 * Whether or not this template has been processed in update mode (e.g. change detected)
7595 *
7596 * `firstUpdatePass` is used by styling to set up `TData` to contain metadata about the styling
7597 * instructions. (Mainly to build up a linked list of styling priority order.)
7598 *
7599 * Typically this function gets cleared after first execution. If exception is thrown then this
7600 * flag can remain turned un until there is first successful (no exception) pass. This means that
7601 * individual styling instructions keep track of if they have already been added to the linked
7602 * list to prevent double adding.
7603 */
7604 firstUpdatePass: boolean;
7605 /** Static data equivalent of LView.data[]. Contains TNodes, PipeDefInternal or TI18n. */
7606 data: TData;
7607 /**
7608 * The binding start index is the index at which the data array
7609 * starts to store bindings only. Saving this value ensures that we
7610 * will begin reading bindings at the correct point in the array when
7611 * we are in update mode.
7612 *
7613 * -1 means that it has not been initialized.
7614 */
7615 bindingStartIndex: number;
7616 /**
7617 * The index where the "expando" section of `LView` begins. The expando
7618 * section contains injectors, directive instances, and host binding values.
7619 * Unlike the "decls" and "vars" sections of `LView`, the length of this
7620 * section cannot be calculated at compile-time because directives are matched
7621 * at runtime to preserve locality.
7622 *
7623 * We store this start index so we know where to start checking host bindings
7624 * in `setHostBindings`.
7625 */
7626 expandoStartIndex: number;
7627 /**
7628 * Whether or not there are any static view queries tracked on this view.
7629 *
7630 * We store this so we know whether or not we should do a view query
7631 * refresh after creation mode to collect static query results.
7632 */
7633 staticViewQueries: boolean;
7634 /**
7635 * Whether or not there are any static content queries tracked on this view.
7636 *
7637 * We store this so we know whether or not we should do a content query
7638 * refresh after creation mode to collect static query results.
7639 */
7640 staticContentQueries: boolean;
7641 /**
7642 * A reference to the first child node located in the view.
7643 */
7644 firstChild: TNode | null;
7645 /**
7646 * Set of instructions used to process host bindings efficiently.
7647 *
7648 * See VIEW_DATA.md for more information.
7649 */
7650 expandoInstructions: ExpandoInstructions | null;
7651 /**
7652 * Full registry of directives and components that may be found in this view.
7653 *
7654 * It's necessary to keep a copy of the full def list on the TView so it's possible
7655 * to render template functions without a host component.
7656 */
7657 directiveRegistry: DirectiveDefList | null;
7658 /**
7659 * Full registry of pipes that may be found in this view.
7660 *
7661 * The property is either an array of `PipeDefs`s or a function which returns the array of
7662 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
7663 *
7664 * It's necessary to keep a copy of the full def list on the TView so it's possible
7665 * to render template functions without a host component.
7666 */
7667 pipeRegistry: PipeDefList | null;
7668 /**
7669 * Array of ngOnInit, ngOnChanges and ngDoCheck hooks that should be executed for this view in
7670 * creation mode.
7671 *
7672 * Even indices: Directive index
7673 * Odd indices: Hook function
7674 */
7675 preOrderHooks: HookData | null;
7676 /**
7677 * Array of ngOnChanges and ngDoCheck hooks that should be executed for this view in update mode.
7678 *
7679 * Even indices: Directive index
7680 * Odd indices: Hook function
7681 */
7682 preOrderCheckHooks: HookData | null;
7683 /**
7684 * Array of ngAfterContentInit and ngAfterContentChecked hooks that should be executed
7685 * for this view in creation mode.
7686 *
7687 * Even indices: Directive index
7688 * Odd indices: Hook function
7689 */
7690 contentHooks: HookData | null;
7691 /**
7692 * Array of ngAfterContentChecked hooks that should be executed for this view in update
7693 * mode.
7694 *
7695 * Even indices: Directive index
7696 * Odd indices: Hook function
7697 */
7698 contentCheckHooks: HookData | null;
7699 /**
7700 * Array of ngAfterViewInit and ngAfterViewChecked hooks that should be executed for
7701 * this view in creation mode.
7702 *
7703 * Even indices: Directive index
7704 * Odd indices: Hook function
7705 */
7706 viewHooks: HookData | null;
7707 /**
7708 * Array of ngAfterViewChecked hooks that should be executed for this view in
7709 * update mode.
7710 *
7711 * Even indices: Directive index
7712 * Odd indices: Hook function
7713 */
7714 viewCheckHooks: HookData | null;
7715 /**
7716 * Array of ngOnDestroy hooks that should be executed when this view is destroyed.
7717 *
7718 * Even indices: Directive index
7719 * Odd indices: Hook function
7720 */
7721 destroyHooks: DestroyHookData | null;
7722 /**
7723 * When a view is destroyed, listeners need to be released and outputs need to be
7724 * unsubscribed. This cleanup array stores both listener data (in chunks of 4)
7725 * and output data (in chunks of 2) for a particular view. Combining the arrays
7726 * saves on memory (70 bytes per array) and on a few bytes of code size (for two
7727 * separate for loops).
7728 *
7729 * If it's a native DOM listener or output subscription being stored:
7730 * 1st index is: event name `name = tView.cleanup[i+0]`
7731 * 2nd index is: index of native element or a function that retrieves global target (window,
7732 * document or body) reference based on the native element:
7733 * `typeof idxOrTargetGetter === 'function'`: global target getter function
7734 * `typeof idxOrTargetGetter === 'number'`: index of native element
7735 *
7736 * 3rd index is: index of listener function `listener = lView[CLEANUP][tView.cleanup[i+2]]`
7737 * 4th index is: `useCaptureOrIndx = tView.cleanup[i+3]`
7738 * `typeof useCaptureOrIndx == 'boolean' : useCapture boolean
7739 * `typeof useCaptureOrIndx == 'number':
7740 * `useCaptureOrIndx >= 0` `removeListener = LView[CLEANUP][useCaptureOrIndx]`
7741 * `useCaptureOrIndx < 0` `subscription = LView[CLEANUP][-useCaptureOrIndx]`
7742 *
7743 * If it's an output subscription or query list destroy hook:
7744 * 1st index is: output unsubscribe function / query list destroy function
7745 * 2nd index is: index of function context in LView.cleanupInstances[]
7746 * `tView.cleanup[i+0].call(lView[CLEANUP][tView.cleanup[i+1]])`
7747 */
7748 cleanup: any[] | null;
7749 /**
7750 * A list of element indices for child components that will need to be
7751 * refreshed when the current view has finished its check. These indices have
7752 * already been adjusted for the HEADER_OFFSET.
7753 *
7754 */
7755 components: number[] | null;
7756 /**
7757 * A collection of queries tracked in a given view.
7758 */
7759 queries: TQueries | null;
7760 /**
7761 * An array of indices pointing to directives with content queries alongside with the
7762 * corresponding
7763 * query index. Each entry in this array is a tuple of:
7764 * - index of the first content query index declared by a given directive;
7765 * - index of a directive.
7766 *
7767 * We are storing those indexes so we can refresh content queries as part of a view refresh
7768 * process.
7769 */
7770 contentQueries: number[] | null;
7771 /**
7772 * Set of schemas that declare elements to be allowed inside the view.
7773 */
7774 schemas: SchemaMetadata[] | null;
7775 /**
7776 * Array of constants for the view. Includes attribute arrays, local definition arrays etc.
7777 * Used for directive matching, attribute bindings, local definitions and more.
7778 */
7779 consts: TConstants | null;
7780 /**
7781 * Indicates that there was an error before we managed to complete the first create pass of the
7782 * view. This means that the view is likely corrupted and we should try to recover it.
7783 */
7784 incompleteFirstPass: boolean;
7785}
7786
7787/** Static data for a view */
7788declare interface TViewNode extends TNode {
7789 /** If -1, it's a dynamically created view. Otherwise, it is the view block ID. */
7790 index: number;
7791 child: ɵangular_packages_core_core_bf | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null;
7792 parent: TContainerNode | null;
7793 tViews: null;
7794 projection: null;
7795}
7796
7797/**
7798 * Explicitly marks `TView` as a specific type in `ngDevMode`
7799 *
7800 * It is useful to know conceptually what time of `TView` we are dealing with when
7801 * debugging an application (even if the runtime does not need it.) For this reason
7802 * we store this information in the `ngDevMode` `TView` and than use it for
7803 * better debugging experience.
7804 */
7805declare const enum TViewType {
7806 /**
7807 * Root `TView` is the used to bootstrap components into. It is used in conjunction with
7808 * `LView` which takes an existing DOM node not owned by Angular and wraps it in `TView`/`LView`
7809 * so that other components can be loaded into it.
7810 */
7811 Root = 0,
7812 /**
7813 * `TView` associated with a Component. This would be the `TView` directly associated with the
7814 * component view (as opposed an `Embedded` `TView` which would be a child of `Component` `TView`)
7815 */
7816 Component = 1,
7817 /**
7818 * `TView` associated with a template. Such as `*ngIf`, `<ng-template>` etc... A `Component`
7819 * can have zero or more `Embedede` `TView`s.
7820 */
7821 Embedded = 2
7822}
7823
7824/**
7825 * Special location which allows easy identification of type. If we have an array which was
7826 * retrieved from the `LView` and that array has `true` at `TYPE` location, we know it is
7827 * `LContainer`.
7828 */
7829declare const TYPE = 1;
7830
7831/**
7832 * @description
7833 *
7834 * Represents a type that a Component or other object is instances of.
7835 *
7836 * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is represented by
7837 * the `MyCustomComponent` constructor function.
7838 *
7839 * @publicApi
7840 */
7841export declare const Type: FunctionConstructor;
7842
7843export declare interface Type<T> extends Function {
7844 new (...args: any[]): T;
7845}
7846
7847/**
7848 * An interface implemented by all Angular type decorators, which allows them to be used as
7849 * decorators as well as Angular syntax.
7850 *
7851 * ```
7852 * @ng.Component({...})
7853 * class MyClass {...}
7854 * ```
7855 *
7856 * @publicApi
7857 */
7858export declare interface TypeDecorator {
7859 /**
7860 * Invoke as decorator.
7861 */
7862 <T extends Type<any>>(type: T): T;
7863 (target: Object, propertyKey?: string | symbol, parameterIndex?: number): void;
7864}
7865
7866/**
7867 * Configures the `Injector` to return an instance of `Type` when `Type' is used as the token.
7868 *
7869 * Create an instance by invoking the `new` operator and supplying additional arguments.
7870 * This form is a short form of `TypeProvider`;
7871 *
7872 * For more details, see the ["Dependency Injection Guide"](guide/dependency-injection).
7873 *
7874 * @usageNotes
7875 *
7876 * {@example core/di/ts/provider_spec.ts region='TypeProvider'}
7877 *
7878 * @publicApi
7879 */
7880export declare interface TypeProvider extends Type<any> {
7881}
7882
7883/**
7884 * Configures the `Injector` to return a value for a token.
7885 * @see ["Dependency Injection Guide"](guide/dependency-injection).
7886 *
7887 * @usageNotes
7888 *
7889 * ### Example
7890 *
7891 * {@example core/di/ts/provider_spec.ts region='ValueProvider'}
7892 *
7893 * ### Multi-value example
7894 *
7895 * {@example core/di/ts/provider_spec.ts region='MultiProviderAspect'}
7896 *
7897 * @publicApi
7898 */
7899export declare interface ValueProvider extends ValueSansProvider {
7900 /**
7901 * An injection token. Typically an instance of `Type` or `InjectionToken`, but can be `any`.
7902 */
7903 provide: any;
7904 /**
7905 * When true, injector returns an array of instances. This is useful to allow multiple
7906 * providers spread across many files to provide configuration information to a common token.
7907 */
7908 multi?: boolean;
7909}
7910
7911/**
7912 * Configures the `Injector` to return a value for a token.
7913 * Base for `ValueProvider` decorator.
7914 *
7915 * @publicApi
7916 */
7917export declare interface ValueSansProvider {
7918 /**
7919 * The value to inject.
7920 */
7921 useValue: any;
7922}
7923
7924/**
7925 * @publicApi
7926 */
7927export declare const VERSION: Version;
7928
7929
7930/**
7931 * @description Represents the version of Angular
7932 *
7933 * @publicApi
7934 */
7935export declare class Version {
7936 full: string;
7937 readonly major: string;
7938 readonly minor: string;
7939 readonly patch: string;
7940 constructor(full: string);
7941}
7942
7943declare const VIEW_REFS = 8;
7944
7945/**
7946 * Type of the ViewChild metadata.
7947 *
7948 * @publicApi
7949 */
7950export declare type ViewChild = Query;
7951
7952/**
7953 * ViewChild decorator and metadata.
7954 *
7955 * @Annotation
7956 * @publicApi
7957 */
7958export declare const ViewChild: ViewChildDecorator;
7959
7960/**
7961 * Type of the ViewChild decorator / constructor function.
7962 *
7963 * @see `ViewChild`.
7964 * @publicApi
7965 */
7966export declare interface ViewChildDecorator {
7967 /**
7968 * @description
7969 * Property decorator that configures a view query.
7970 * The change detector looks for the first element or the directive matching the selector
7971 * in the view DOM. If the view DOM changes, and a new child matches the selector,
7972 * the property is updated.
7973 *
7974 * View queries are set before the `ngAfterViewInit` callback is called.
7975 *
7976 * **Metadata Properties**:
7977 *
7978 * * **selector** - The directive type or the name used for querying.
7979 * * **read** - Used to read a different token from the queried elements.
7980 * * **static** - True to resolve query results before change detection runs,
7981 * false to resolve after change detection. Defaults to false.
7982 *
7983 *
7984 * The following selectors are supported.
7985 * * Any class with the `@Component` or `@Directive` decorator
7986 * * A template reference variable as a string (e.g. query `<my-component #cmp></my-component>`
7987 * with `@ViewChild('cmp')`)
7988 * * Any provider defined in the child component tree of the current component (e.g.
7989 * `@ViewChild(SomeService) someService: SomeService`)
7990 * * Any provider defined through a string token (e.g. `@ViewChild('someToken') someTokenVal:
7991 * any`)
7992 * * A `TemplateRef` (e.g. query `<ng-template></ng-template>` with `@ViewChild(TemplateRef)
7993 * template;`)
7994 *
7995 * @usageNotes
7996 *
7997 * {@example core/di/ts/viewChild/view_child_example.ts region='Component'}
7998 *
7999 * ### Example 2
8000 *
8001 * {@example core/di/ts/viewChild/view_child_howto.ts region='HowTo'}
8002 *
8003 * @Annotation
8004 */
8005 (selector: Type<any> | Function | string, opts?: {
8006 read?: any;
8007 static?: boolean;
8008 }): any;
8009 new (selector: Type<any> | Function | string, opts?: {
8010 read?: any;
8011 static?: boolean;
8012 }): ViewChild;
8013}
8014
8015/**
8016 * Type of the ViewChildren metadata.
8017 *
8018 * @publicApi
8019 */
8020export declare type ViewChildren = Query;
8021
8022/**
8023 * ViewChildren decorator and metadata.
8024 *
8025 * @Annotation
8026 * @publicApi
8027 */
8028export declare const ViewChildren: ViewChildrenDecorator;
8029
8030/**
8031 * Type of the ViewChildren decorator / constructor function.
8032 *
8033 * @see `ViewChildren`.
8034 *
8035 * @publicApi
8036 */
8037export declare interface ViewChildrenDecorator {
8038 /**
8039 * Parameter decorator that configures a view query.
8040 *
8041 * Use to get the `QueryList` of elements or directives from the view DOM.
8042 * Any time a child element is added, removed, or moved, the query list will be updated,
8043 * and the changes observable of the query list will emit a new value.
8044 *
8045 * View queries are set before the `ngAfterViewInit` callback is called.
8046 *
8047 * **Metadata Properties**:
8048 *
8049 * * **selector** - The directive type or the name used for querying.
8050 * * **read** - Used to read a different token from the queried elements.
8051 *
8052 * @usageNotes
8053 *
8054 * {@example core/di/ts/viewChildren/view_children_howto.ts region='HowTo'}
8055 *
8056 * ### Another example
8057 *
8058 * {@example core/di/ts/viewChildren/view_children_example.ts region='Component'}
8059 *
8060 * @Annotation
8061 */
8062 (selector: Type<any> | Function | string, opts?: {
8063 read?: any;
8064 }): any;
8065 new (selector: Type<any> | Function | string, opts?: {
8066 read?: any;
8067 }): ViewChildren;
8068}
8069
8070/**
8071 * Represents a container where one or more views can be attached to a component.
8072 *
8073 * Can contain *host views* (created by instantiating a
8074 * component with the `createComponent()` method), and *embedded views*
8075 * (created by instantiating a `TemplateRef` with the `createEmbeddedView()` method).
8076 *
8077 * A view container instance can contain other view containers,
8078 * creating a [view hierarchy](guide/glossary#view-tree).
8079 *
8080 * @see `ComponentRef`
8081 * @see `EmbeddedViewRef`
8082 *
8083 * @publicApi
8084 */
8085export declare abstract class ViewContainerRef {
8086 /**
8087 * Anchor element that specifies the location of this container in the containing view.
8088 * Each view container can have only one anchor element, and each anchor element
8089 * can have only a single view container.
8090 *
8091 * Root elements of views attached to this container become siblings of the anchor element in
8092 * the rendered view.
8093 *
8094 * Access the `ViewContainerRef` of an element by placing a `Directive` injected
8095 * with `ViewContainerRef` on the element, or use a `ViewChild` query.
8096 *
8097 * <!-- TODO: rename to anchorElement -->
8098 */
8099 abstract get element(): ElementRef;
8100 /**
8101 * The [dependency injector](guide/glossary#injector) for this view container.
8102 */
8103 abstract get injector(): Injector;
8104 /** @deprecated No replacement */
8105 abstract get parentInjector(): Injector;
8106 /**
8107 * Destroys all views in this container.
8108 */
8109 abstract clear(): void;
8110 /**
8111 * Retrieves a view from this container.
8112 * @param index The 0-based index of the view to retrieve.
8113 * @returns The `ViewRef` instance, or null if the index is out of range.
8114 */
8115 abstract get(index: number): ViewRef | null;
8116 /**
8117 * Reports how many views are currently attached to this container.
8118 * @returns The number of views.
8119 */
8120 abstract get length(): number;
8121 /**
8122 * Instantiates an embedded view and inserts it
8123 * into this container.
8124 * @param templateRef The HTML template that defines the view.
8125 * @param index The 0-based index at which to insert the new view into this container.
8126 * If not specified, appends the new view as the last entry.
8127 *
8128 * @returns The `ViewRef` instance for the newly created view.
8129 */
8130 abstract createEmbeddedView<C>(templateRef: TemplateRef<C>, context?: C, index?: number): EmbeddedViewRef<C>;
8131 /**
8132 * Instantiates a single component and inserts its host view into this container.
8133 *
8134 * @param componentFactory The factory to use.
8135 * @param index The index at which to insert the new component's host view into this container.
8136 * If not specified, appends the new view as the last entry.
8137 * @param injector The injector to use as the parent for the new component.
8138 * @param projectableNodes
8139 * @param ngModule
8140 *
8141 * @returns The new component instance, containing the host view.
8142 *
8143 */
8144 abstract createComponent<C>(componentFactory: ComponentFactory<C>, index?: number, injector?: Injector, projectableNodes?: any[][], ngModule?: NgModuleRef<any>): ComponentRef<C>;
8145 /**
8146 * Inserts a view into this container.
8147 * @param viewRef The view to insert.
8148 * @param index The 0-based index at which to insert the view.
8149 * If not specified, appends the new view as the last entry.
8150 * @returns The inserted `ViewRef` instance.
8151 *
8152 */
8153 abstract insert(viewRef: ViewRef, index?: number): ViewRef;
8154 /**
8155 * Moves a view to a new location in this container.
8156 * @param viewRef The view to move.
8157 * @param index The 0-based index of the new location.
8158 * @returns The moved `ViewRef` instance.
8159 */
8160 abstract move(viewRef: ViewRef, currentIndex: number): ViewRef;
8161 /**
8162 * Returns the index of a view within the current container.
8163 * @param viewRef The view to query.
8164 * @returns The 0-based index of the view's position in this container,
8165 * or `-1` if this container doesn't contain the view.
8166 */
8167 abstract indexOf(viewRef: ViewRef): number;
8168 /**
8169 * Destroys a view attached to this container
8170 * @param index The 0-based index of the view to destroy.
8171 * If not specified, the last view in the container is removed.
8172 */
8173 abstract remove(index?: number): void;
8174 /**
8175 * Detaches a view from this container without destroying it.
8176 * Use along with `insert()` to move a view within the current container.
8177 * @param index The 0-based index of the view to detach.
8178 * If not specified, the last view in the container is detached.
8179 */
8180 abstract detach(index?: number): ViewRef | null;
8181}
8182
8183/**
8184 * View instance data.
8185 * Attention: Adding fields to this is performance sensitive!
8186 */
8187declare interface ViewData {
8188 def: ɵViewDefinition;
8189 root: RootData;
8190 renderer: Renderer2;
8191 parentNodeDef: NodeDef | null;
8192 parent: ViewData | null;
8193 viewContainerParent: ViewData | null;
8194 component: any;
8195 context: any;
8196 nodes: {
8197 [key: number]: NodeData;
8198 };
8199 state: ViewState;
8200 oldValues: any[];
8201 disposables: DisposableFn[] | null;
8202 initIndex: number;
8203}
8204
8205declare interface ViewDefinitionFactory extends DefinitionFactory<ɵViewDefinition> {
8206}
8207
8208
8209/**
8210 * Defines template and style encapsulation options available for Component's {@link Component}.
8211 *
8212 * See {@link Component#encapsulation encapsulation}.
8213 *
8214 * @usageNotes
8215 * ### Example
8216 *
8217 * {@example core/ts/metadata/encapsulation.ts region='longform'}
8218 *
8219 * @publicApi
8220 */
8221export declare enum ViewEncapsulation {
8222 /**
8223 * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host
8224 * Element and pre-processing the style rules provided via {@link Component#styles styles} or
8225 * {@link Component#styleUrls styleUrls}, and adding the new Host Element attribute to all
8226 * selectors.
8227 *
8228 * This is the default option.
8229 */
8230 Emulated = 0,
8231 /**
8232 * @deprecated v6.1.0 - use {ViewEncapsulation.ShadowDom} instead.
8233 * Use the native encapsulation mechanism of the renderer.
8234 *
8235 * For the DOM this means using the deprecated [Shadow DOM
8236 * v0](https://w3c.github.io/webcomponents/spec/shadow/) and
8237 * creating a ShadowRoot for Component's Host Element.
8238 */
8239 Native = 1,
8240 /**
8241 * Don't provide any template or style encapsulation.
8242 */
8243 None = 2,
8244 /**
8245 * Use Shadow DOM to encapsulate styles.
8246 *
8247 * For the DOM this means using modern [Shadow
8248 * DOM](https://w3c.github.io/webcomponents/spec/shadow/) and
8249 * creating a ShadowRoot for Component's Host Element.
8250 */
8251 ShadowDom = 3
8252}
8253
8254declare interface viewEngine_ChangeDetectorRef_interface extends ChangeDetectorRef {
8255}
8256
8257declare interface ViewHandleEventFn {
8258 (view: ViewData, nodeIndex: number, eventName: string, event: any): boolean;
8259}
8260
8261/**
8262 * Definition of what a view queries function should look like.
8263 */
8264declare type ViewQueriesFunction<T> = <U extends T>(rf: ɵRenderFlags, ctx: U) => void;
8265
8266/**
8267 * Represents an Angular [view](guide/glossary#view "Definition").
8268 *
8269 * @see {@link ChangeDetectorRef#usage-notes Change detection usage}
8270 *
8271 * @publicApi
8272 */
8273export declare abstract class ViewRef extends ChangeDetectorRef {
8274 /**
8275 * Destroys this view and all of the data structures associated with it.
8276 */
8277 abstract destroy(): void;
8278 /**
8279 * Reports whether this view has been destroyed.
8280 * @returns True after the `destroy()` method has been called, false otherwise.
8281 */
8282 abstract get destroyed(): boolean;
8283 /**
8284 * A lifecycle hook that provides additional developer-defined cleanup
8285 * functionality for views.
8286 * @param callback A handler function that cleans up developer-defined data
8287 * associated with a view. Called when the `destroy()` method is invoked.
8288 */
8289 abstract onDestroy(callback: Function): any /** TODO #9100 */;
8290}
8291
8292declare class ViewRef_2<T> implements EmbeddedViewRef<T>, InternalViewRef, viewEngine_ChangeDetectorRef_interface {
8293 /**
8294 * This represents the `LView` associated with the point where `ChangeDetectorRef` was
8295 * requested.
8296 *
8297 * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
8298 */
8299 private _cdRefInjectingView?;
8300 private _appRef;
8301 private _viewContainerRef;
8302 get rootNodes(): any[];
8303 constructor(
8304 /**
8305 * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.
8306 *
8307 * When ViewRef is created for a dynamic component, this also represents the `LView` for the
8308 * component.
8309 *
8310 * For a "regular" ViewRef created for an embedded view, this is the `LView` for the embedded
8311 * view.
8312 *
8313 * @internal
8314 */
8315 _lView: ɵangular_packages_core_core_bp,
8316 /**
8317 * This represents the `LView` associated with the point where `ChangeDetectorRef` was
8318 * requested.
8319 *
8320 * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
8321 */
8322 _cdRefInjectingView?: ɵangular_packages_core_core_bp | undefined);
8323 get context(): T;
8324 get destroyed(): boolean;
8325 destroy(): void;
8326 onDestroy(callback: Function): void;
8327 /**
8328 * Marks a view and all of its ancestors dirty.
8329 *
8330 * It also triggers change detection by calling `scheduleTick` internally, which coalesces
8331 * multiple `markForCheck` calls to into one change detection run.
8332 *
8333 * This can be used to ensure an {@link ChangeDetectionStrategy#OnPush OnPush} component is
8334 * checked when it needs to be re-rendered but the two normal triggers haven't marked it
8335 * dirty (i.e. inputs haven't changed and events haven't fired in the view).
8336 *
8337 * <!-- TODO: Add a link to a chapter on OnPush components -->
8338 *
8339 * @usageNotes
8340 * ### Example
8341 *
8342 * ```typescript
8343 * @Component({
8344 * selector: 'my-app',
8345 * template: `Number of ticks: {{numberOfTicks}}`
8346 * changeDetection: ChangeDetectionStrategy.OnPush,
8347 * })
8348 * class AppComponent {
8349 * numberOfTicks = 0;
8350 *
8351 * constructor(private ref: ChangeDetectorRef) {
8352 * setInterval(() => {
8353 * this.numberOfTicks++;
8354 * // the following is required, otherwise the view will not be updated
8355 * this.ref.markForCheck();
8356 * }, 1000);
8357 * }
8358 * }
8359 * ```
8360 */
8361 markForCheck(): void;
8362 /**
8363 * Detaches the view from the change detection tree.
8364 *
8365 * Detached views will not be checked during change detection runs until they are
8366 * re-attached, even if they are dirty. `detach` can be used in combination with
8367 * {@link ChangeDetectorRef#detectChanges detectChanges} to implement local change
8368 * detection checks.
8369 *
8370 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
8371 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
8372 *
8373 * @usageNotes
8374 * ### Example
8375 *
8376 * The following example defines a component with a large list of readonly data.
8377 * Imagine the data changes constantly, many times per second. For performance reasons,
8378 * we want to check and update the list every five seconds. We can do that by detaching
8379 * the component's change detector and doing a local check every five seconds.
8380 *
8381 * ```typescript
8382 * class DataProvider {
8383 * // in a real application the returned data will be different every time
8384 * get data() {
8385 * return [1,2,3,4,5];
8386 * }
8387 * }
8388 *
8389 * @Component({
8390 * selector: 'giant-list',
8391 * template: `
8392 * <li *ngFor="let d of dataProvider.data">Data {{d}}</li>
8393 * `,
8394 * })
8395 * class GiantList {
8396 * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {
8397 * ref.detach();
8398 * setInterval(() => {
8399 * this.ref.detectChanges();
8400 * }, 5000);
8401 * }
8402 * }
8403 *
8404 * @Component({
8405 * selector: 'app',
8406 * providers: [DataProvider],
8407 * template: `
8408 * <giant-list><giant-list>
8409 * `,
8410 * })
8411 * class App {
8412 * }
8413 * ```
8414 */
8415 detach(): void;
8416 /**
8417 * Re-attaches a view to the change detection tree.
8418 *
8419 * This can be used to re-attach views that were previously detached from the tree
8420 * using {@link ChangeDetectorRef#detach detach}. Views are attached to the tree by default.
8421 *
8422 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
8423 *
8424 * @usageNotes
8425 * ### Example
8426 *
8427 * The following example creates a component displaying `live` data. The component will detach
8428 * its change detector from the main change detector tree when the component's live property
8429 * is set to false.
8430 *
8431 * ```typescript
8432 * class DataProvider {
8433 * data = 1;
8434 *
8435 * constructor() {
8436 * setInterval(() => {
8437 * this.data = this.data * 2;
8438 * }, 500);
8439 * }
8440 * }
8441 *
8442 * @Component({
8443 * selector: 'live-data',
8444 * inputs: ['live'],
8445 * template: 'Data: {{dataProvider.data}}'
8446 * })
8447 * class LiveData {
8448 * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {}
8449 *
8450 * set live(value) {
8451 * if (value) {
8452 * this.ref.reattach();
8453 * } else {
8454 * this.ref.detach();
8455 * }
8456 * }
8457 * }
8458 *
8459 * @Component({
8460 * selector: 'my-app',
8461 * providers: [DataProvider],
8462 * template: `
8463 * Live Update: <input type="checkbox" [(ngModel)]="live">
8464 * <live-data [live]="live"><live-data>
8465 * `,
8466 * })
8467 * class AppComponent {
8468 * live = true;
8469 * }
8470 * ```
8471 */
8472 reattach(): void;
8473 /**
8474 * Checks the view and its children.
8475 *
8476 * This can also be used in combination with {@link ChangeDetectorRef#detach detach} to implement
8477 * local change detection checks.
8478 *
8479 * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
8480 * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
8481 *
8482 * @usageNotes
8483 * ### Example
8484 *
8485 * The following example defines a component with a large list of readonly data.
8486 * Imagine, the data changes constantly, many times per second. For performance reasons,
8487 * we want to check and update the list every five seconds.
8488 *
8489 * We can do that by detaching the component's change detector and doing a local change detection
8490 * check every five seconds.
8491 *
8492 * See {@link ChangeDetectorRef#detach detach} for more information.
8493 */
8494 detectChanges(): void;
8495 /**
8496 * Checks the change detector and its children, and throws if any changes are detected.
8497 *
8498 * This is used in development mode to verify that running change detection doesn't
8499 * introduce other changes.
8500 */
8501 checkNoChanges(): void;
8502 attachToViewContainerRef(vcRef: ViewContainerRef): void;
8503 detachFromAppRef(): void;
8504 attachToAppRef(appRef: ApplicationRef): void;
8505}
8506
8507/**
8508 * Bitmask of states
8509 */
8510declare const enum ViewState {
8511 BeforeFirstCheck = 1,
8512 FirstCheck = 2,
8513 Attached = 4,
8514 ChecksEnabled = 8,
8515 IsProjectedView = 16,
8516 CheckProjectedView = 32,
8517 CheckProjectedViews = 64,
8518 Destroyed = 128,
8519 InitState_Mask = 1792,
8520 InitState_BeforeInit = 0,
8521 InitState_CallingOnInit = 256,
8522 InitState_CallingAfterContentInit = 512,
8523 InitState_CallingAfterViewInit = 768,
8524 InitState_AfterInit = 1024,
8525 CatDetectChanges = 12,
8526 CatInit = 13
8527}
8528
8529declare interface ViewUpdateFn {
8530 (check: NodeCheckFn, view: ViewData): void;
8531}
8532
8533/**
8534 * Indicates that the result of a {@link Pipe} transformation has changed even though the
8535 * reference has not changed.
8536 *
8537 * Wrapped values are unwrapped automatically during the change detection, and the unwrapped value
8538 * is stored.
8539 *
8540 * Example:
8541 *
8542 * ```
8543 * if (this._latestValue === this._latestReturnedValue) {
8544 * return this._latestReturnedValue;
8545 * } else {
8546 * this._latestReturnedValue = this._latestValue;
8547 * return WrappedValue.wrap(this._latestValue); // this will force update
8548 * }
8549 * ```
8550 *
8551 * @publicApi
8552 * @deprecated from v10 stop using. (No replacement, deemed unnecessary.)
8553 */
8554export declare class WrappedValue {
8555 /** @deprecated from 5.3, use `unwrap()` instead - will switch to protected */
8556 wrapped: any;
8557 constructor(value: any);
8558 /** Creates a wrapped value. */
8559 static wrap(value: any): WrappedValue;
8560 /**
8561 * Returns the underlying value of a wrapped value.
8562 * Returns the given `value` when it is not wrapped.
8563 **/
8564 static unwrap(value: any): any;
8565 /** Returns true if `value` is a wrapped value. */
8566 static isWrapped(value: any): value is WrappedValue;
8567}
8568
8569/**
8570 * Sanitizes the given unsafe, untrusted HTML fragment, and returns HTML text that is safe to add to
8571 * the DOM in a browser environment.
8572 */
8573export declare function ɵ_sanitizeHtml(defaultDoc: any, unsafeHtmlInput: string): string;
8574
8575
8576export declare function ɵ_sanitizeUrl(url: string): string;
8577
8578export declare const ɵALLOW_MULTIPLE_PLATFORMS: InjectionToken<boolean>;
8579
8580export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Html): value is ɵSafeHtml;
8581
8582export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.ResourceUrl): value is ɵSafeResourceUrl;
8583
8584export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Script): value is ɵSafeScript;
8585
8586export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Style): value is ɵSafeStyle;
8587
8588export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType.Url): value is ɵSafeUrl;
8589
8590export declare function ɵallowSanitizationBypassAndThrow(value: any, type: ɵBypassType): boolean;
8591
8592export declare function ɵand(flags: ɵNodeFlags, matchedQueriesDsl: null | [string | number, ɵQueryValueType][], ngContentIndex: null | number, childCount: number, handleEvent?: null | ElementHandleEventFn, templateFactory?: ViewDefinitionFactory): NodeDef;
8593
8594/** Checks whether a function is wrapped by a `forwardRef`. */
8595export declare function ɵangular_packages_core_core_a(fn: any): fn is () => any;
8596
8597export declare function ɵangular_packages_core_core_b<T>(token: Type<T> | InjectionToken<T>): T;
8598
8599export declare function ɵangular_packages_core_core_b<T>(token: Type<T> | InjectionToken<T>, flags?: InjectFlags): T | null;
8600
8601export declare const ɵangular_packages_core_core_ba: InstructionState;
8602
8603/**
8604 * Return the current `LView`.
8605 */
8606export declare function ɵangular_packages_core_core_bb(): ɵangular_packages_core_core_bp;
8607
8608export declare function ɵangular_packages_core_core_bc(): TNode;
8609
8610export declare function ɵangular_packages_core_core_bd(): number;
8611
8612export declare function ɵangular_packages_core_core_be<T = any>(level: number): T;
8613
8614/** Static data for an element */
8615export declare interface ɵangular_packages_core_core_bf extends TNode {
8616 /** Index in the data[] array */
8617 index: number;
8618 child: ɵangular_packages_core_core_bf | TTextNode | TElementContainerNode | TContainerNode | TProjectionNode | null;
8619 /**
8620 * Element nodes will have parents unless they are the first node of a component or
8621 * embedded view (which means their parent is in a different view and must be
8622 * retrieved using viewData[HOST_NODE]).
8623 */
8624 parent: ɵangular_packages_core_core_bf | TElementContainerNode | null;
8625 tViews: null;
8626 /**
8627 * If this is a component TNode with projection, this will be an array of projected
8628 * TNodes or native nodes (see TNode.projection for more info). If it's a regular element node or
8629 * a component without projection, it will be null.
8630 */
8631 projection: (TNode | RNode[])[] | null;
8632}
8633
8634/**
8635 * If the value of the provided exp has changed, calls the pure function to return
8636 * an updated value. Or if the value has not changed, returns cached value.
8637 *
8638 * @param lView LView in which the function is being executed.
8639 * @param bindingRoot Binding root index.
8640 * @param slotOffset the offset from binding root to the reserved slot
8641 * @param pureFn Function that returns an updated value
8642 * @param exp Updated expression value
8643 * @param thisArg Optional calling context of pureFn
8644 * @returns Updated or cached value
8645 */
8646export declare function ɵangular_packages_core_core_bg(lView: ɵangular_packages_core_core_bp, bindingRoot: number, slotOffset: number, pureFn: (v: any) => any, exp: any, thisArg?: any): any;
8647
8648/**
8649 * If the value of any provided exp has changed, calls the pure function to return
8650 * an updated value. Or if no values have changed, returns cached value.
8651 *
8652 * @param lView LView in which the function is being executed.
8653 * @param bindingRoot Binding root index.
8654 * @param slotOffset the offset from binding root to the reserved slot
8655 * @param pureFn
8656 * @param exp1
8657 * @param exp2
8658 * @param thisArg Optional calling context of pureFn
8659 * @returns Updated or cached value
8660 */
8661export declare function ɵangular_packages_core_core_bh(lView: ɵangular_packages_core_core_bp, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any) => any, exp1: any, exp2: any, thisArg?: any): any;
8662
8663/**
8664 * If the value of any provided exp has changed, calls the pure function to return
8665 * an updated value. Or if no values have changed, returns cached value.
8666 *
8667 * @param lView LView in which the function is being executed.
8668 * @param bindingRoot Binding root index.
8669 * @param slotOffset the offset from binding root to the reserved slot
8670 * @param pureFn
8671 * @param exp1
8672 * @param exp2
8673 * @param exp3
8674 * @param thisArg Optional calling context of pureFn
8675 * @returns Updated or cached value
8676 */
8677export declare function ɵangular_packages_core_core_bi(lView: ɵangular_packages_core_core_bp, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any, v3: any) => any, exp1: any, exp2: any, exp3: any, thisArg?: any): any;
8678
8679/**
8680 * If the value of any provided exp has changed, calls the pure function to return
8681 * an updated value. Or if no values have changed, returns cached value.
8682 *
8683 * @param lView LView in which the function is being executed.
8684 * @param bindingRoot Binding root index.
8685 * @param slotOffset the offset from binding root to the reserved slot
8686 * @param pureFn
8687 * @param exp1
8688 * @param exp2
8689 * @param exp3
8690 * @param exp4
8691 * @param thisArg Optional calling context of pureFn
8692 * @returns Updated or cached value
8693 *
8694 */
8695export declare function ɵangular_packages_core_core_bj(lView: ɵangular_packages_core_core_bp, bindingRoot: number, slotOffset: number, pureFn: (v1: any, v2: any, v3: any, v4: any) => any, exp1: any, exp2: any, exp3: any, exp4: any, thisArg?: any): any;
8696
8697/**
8698 * pureFunction instruction that can support any number of bindings.
8699 *
8700 * If the value of any provided exp has changed, calls the pure function to return
8701 * an updated value. Or if no values have changed, returns cached value.
8702 *
8703 * @param lView LView in which the function is being executed.
8704 * @param bindingRoot Binding root index.
8705 * @param slotOffset the offset from binding root to the reserved slot
8706 * @param pureFn A pure function that takes binding values and builds an object or array
8707 * containing those values.
8708 * @param exps An array of binding values
8709 * @param thisArg Optional calling context of pureFn
8710 * @returns Updated or cached value
8711 */
8712export declare function ɵangular_packages_core_core_bk(lView: ɵangular_packages_core_core_bp, bindingRoot: number, slotOffset: number, pureFn: (...v: any[]) => any, exps: any[], thisArg?: any): any;
8713
8714/**
8715 * Detects which sanitizer to use for URL property, based on tag name and prop name.
8716 *
8717 * The rules are based on the RESOURCE_URL context config from
8718 * `packages/compiler/src/schema/dom_security_schema.ts`.
8719 * If tag and prop names don't match Resource URL schema, use URL sanitizer.
8720 */
8721export declare function ɵangular_packages_core_core_bl(tag: string, prop: string): typeof ɵɵsanitizeResourceUrl;
8722
8723export declare function ɵangular_packages_core_core_bm(name: string, props?: (...args: any[]) => any, parentClass?: any): any;
8724
8725export declare function ɵangular_packages_core_core_bn(name: string, props?: (...args: any[]) => any, parentClass?: any, additionalProcessing?: (target: any, name: string, ...args: any[]) => void): any;
8726
8727
8728export declare function ɵangular_packages_core_core_bo<T>(objWithPropertyToExtract: T): string;
8729
8730/**
8731 * `LView` stores all of the information needed to process the instructions as
8732 * they are invoked from the template. Each embedded view and component view has its
8733 * own `LView`. When processing a particular view, we set the `viewData` to that
8734 * `LView`. When that view is done processing, the `viewData` is set back to
8735 * whatever the original `viewData` was before (the parent `LView`).
8736 *
8737 * Keeping separate state for each view facilities view insertion / deletion, so we
8738 * don't have to edit the data array based on which views are present.
8739 */
8740export declare interface ɵangular_packages_core_core_bp extends Array<any> {
8741 /**
8742 * The host node for this LView instance, if this is a component view.
8743 * If this is an embedded view, HOST will be null.
8744 */
8745 [HOST]: RElement | null;
8746 /**
8747 * The static data for this view. We need a reference to this so we can easily walk up the
8748 * node tree in DI and get the TView.data array associated with a node (where the
8749 * directive defs are stored).
8750 */
8751 readonly [TVIEW]: TView;
8752 /** Flags for this view. See LViewFlags for more info. */
8753 [FLAGS]: LViewFlags;
8754 /**
8755 * This may store an {@link LView} or {@link LContainer}.
8756 *
8757 * `LView` - The parent view. This is needed when we exit the view and must restore the previous
8758 * LView. Without this, the render method would have to keep a stack of
8759 * views as it is recursively rendering templates.
8760 *
8761 * `LContainer` - The current view is part of a container, and is an embedded view.
8762 */
8763 [PARENT]: ɵangular_packages_core_core_bp | LContainer | null;
8764 /**
8765 *
8766 * The next sibling LView or LContainer.
8767 *
8768 * Allows us to propagate between sibling view states that aren't in the same
8769 * container. Embedded views already have a node.next, but it is only set for
8770 * views in the same container. We need a way to link component views and views
8771 * across containers as well.
8772 */
8773 [NEXT]: ɵangular_packages_core_core_bp | LContainer | null;
8774 /** Queries active for this view - nodes from a view are reported to those queries. */
8775 [QUERIES]: LQueries | null;
8776 /**
8777 * Pointer to the `TViewNode` or `TElementNode` which represents the root of the view.
8778 *
8779 * If `TViewNode`, this is an embedded view of a container. We need this to be able to
8780 * efficiently find the `LViewNode` when inserting the view into an anchor.
8781 *
8782 * If `TElementNode`, this is the LView of a component.
8783 *
8784 * If null, this is the root view of an application (root component is in this view).
8785 */
8786 [T_HOST]: TViewNode | ɵangular_packages_core_core_bf | null;
8787 /**
8788 * When a view is destroyed, listeners need to be released and outputs need to be
8789 * unsubscribed. This context array stores both listener functions wrapped with
8790 * their context and output subscription instances for a particular view.
8791 *
8792 * These change per LView instance, so they cannot be stored on TView. Instead,
8793 * TView.cleanup saves an index to the necessary context in this array.
8794 */
8795 [CLEANUP]: any[] | null;
8796 /**
8797 * - For dynamic views, this is the context with which to render the template (e.g.
8798 * `NgForContext`), or `{}` if not defined explicitly.
8799 * - For root view of the root component the context contains change detection data.
8800 * - For non-root components, the context is the component instance,
8801 * - For inline views, the context is null.
8802 */
8803 [CONTEXT]: {} | RootContext | null;
8804 /** An optional Module Injector to be used as fall back after Element Injectors are consulted. */
8805 readonly [INJECTOR_2]: Injector | null;
8806 /** Factory to be used for creating Renderer. */
8807 [RENDERER_FACTORY]: RendererFactory3;
8808 /** Renderer to be used for this view. */
8809 [RENDERER]: Renderer3;
8810 /** An optional custom sanitizer. */
8811 [SANITIZER]: Sanitizer | null;
8812 /**
8813 * Reference to the first LView or LContainer beneath this LView in
8814 * the hierarchy.
8815 *
8816 * Necessary to store this so views can traverse through their nested views
8817 * to remove listeners and call onDestroy callbacks.
8818 */
8819 [CHILD_HEAD]: ɵangular_packages_core_core_bp | LContainer | null;
8820 /**
8821 * The last LView or LContainer beneath this LView in the hierarchy.
8822 *
8823 * The tail allows us to quickly add a new state to the end of the view list
8824 * without having to propagate starting from the first child.
8825 */
8826 [CHILD_TAIL]: ɵangular_packages_core_core_bp | LContainer | null;
8827 /**
8828 * View where this view's template was declared.
8829 *
8830 * Only applicable for dynamically created views. Will be null for inline/component views.
8831 *
8832 * The template for a dynamically created view may be declared in a different view than
8833 * it is inserted. We already track the "insertion view" (view where the template was
8834 * inserted) in LView[PARENT], but we also need access to the "declaration view"
8835 * (view where the template was declared). Otherwise, we wouldn't be able to call the
8836 * view's template function with the proper contexts. Context should be inherited from
8837 * the declaration view tree, not the insertion view tree.
8838 *
8839 * Example (AppComponent template):
8840 *
8841 * <ng-template #foo></ng-template> <-- declared here -->
8842 * <some-comp [tpl]="foo"></some-comp> <-- inserted inside this component -->
8843 *
8844 * The <ng-template> above is declared in the AppComponent template, but it will be passed into
8845 * SomeComp and inserted there. In this case, the declaration view would be the AppComponent,
8846 * but the insertion view would be SomeComp. When we are removing views, we would want to
8847 * traverse through the insertion view to clean up listeners. When we are calling the
8848 * template function during change detection, we need the declaration view to get inherited
8849 * context.
8850 */
8851 [DECLARATION_VIEW]: ɵangular_packages_core_core_bp | null;
8852 /**
8853 * Points to the declaration component view, used to track transplanted `LView`s.
8854 *
8855 * See: `DECLARATION_VIEW` which points to the actual `LView` where it was declared, whereas
8856 * `DECLARATION_COMPONENT_VIEW` points to the component which may not be same as
8857 * `DECLARATION_VIEW`.
8858 *
8859 * Example:
8860 * ```
8861 * <#VIEW #myComp>
8862 * <div *ngIf="true">
8863 * <ng-template #myTmpl>...</ng-template>
8864 * </div>
8865 * </#VIEW>
8866 * ```
8867 * In the above case `DECLARATION_VIEW` for `myTmpl` points to the `LView` of `ngIf` whereas
8868 * `DECLARATION_COMPONENT_VIEW` points to `LView` of the `myComp` which owns the template.
8869 *
8870 * The reason for this is that all embedded views are always check-always whereas the component
8871 * view can be check-always or on-push. When we have a transplanted view it is important to
8872 * determine if we have transplanted a view from check-always declaration to on-push insertion
8873 * point. In such a case the transplanted view needs to be added to the `LContainer` in the
8874 * declared `LView` and CD during the declared view CD (in addition to the CD at the insertion
8875 * point.) (Any transplanted views which are intra Component are of no interest because the CD
8876 * strategy of declaration and insertion will always be the same, because it is the same
8877 * component.)
8878 *
8879 * Queries already track moved views in `LView[DECLARATION_LCONTAINER]` and
8880 * `LContainer[MOVED_VIEWS]`. However the queries also track `LView`s which moved within the same
8881 * component `LView`. Transplanted views are a subset of moved views, and we use
8882 * `DECLARATION_COMPONENT_VIEW` to differentiate them. As in this example.
8883 *
8884 * Example showing intra component `LView` movement.
8885 * ```
8886 * <#VIEW #myComp>
8887 * <div *ngIf="condition; then thenBlock else elseBlock"></div>
8888 * <ng-template #thenBlock>Content to render when condition is true.</ng-template>
8889 * <ng-template #elseBlock>Content to render when condition is false.</ng-template>
8890 * </#VIEW>
8891 * ```
8892 * The `thenBlock` and `elseBlock` is moved but not transplanted.
8893 *
8894 * Example showing inter component `LView` movement (transplanted view).
8895 * ```
8896 * <#VIEW #myComp>
8897 * <ng-template #myTmpl>...</ng-template>
8898 * <insertion-component [template]="myTmpl"></insertion-component>
8899 * </#VIEW>
8900 * ```
8901 * In the above example `myTmpl` is passed into a different component. If `insertion-component`
8902 * instantiates `myTmpl` and `insertion-component` is on-push then the `LContainer` needs to be
8903 * marked as containing transplanted views and those views need to be CD as part of the
8904 * declaration CD.
8905 *
8906 *
8907 * When change detection runs, it iterates over `[MOVED_VIEWS]` and CDs any child `LView`s where
8908 * the `DECLARATION_COMPONENT_VIEW` of the current component and the child `LView` does not match
8909 * (it has been transplanted across components.)
8910 *
8911 * Note: `[DECLARATION_COMPONENT_VIEW]` points to itself if the LView is a component view (the
8912 * simplest / most common case).
8913 *
8914 * see also:
8915 * - https://hackmd.io/@mhevery/rJUJsvv9H write up of the problem
8916 * - `LContainer[HAS_TRANSPLANTED_VIEWS]` which marks which `LContainer` has transplanted views.
8917 * - `LContainer[TRANSPLANT_HEAD]` and `LContainer[TRANSPLANT_TAIL]` storage for transplanted
8918 * - `LView[DECLARATION_LCONTAINER]` similar problem for queries
8919 * - `LContainer[MOVED_VIEWS]` similar problem for queries
8920 */
8921 [DECLARATION_COMPONENT_VIEW]: ɵangular_packages_core_core_bp;
8922 /**
8923 * A declaration point of embedded views (ones instantiated based on the content of a
8924 * <ng-template>), null for other types of views.
8925 *
8926 * We need to track all embedded views created from a given declaration point so we can prepare
8927 * query matches in a proper order (query matches are ordered based on their declaration point and
8928 * _not_ the insertion point).
8929 */
8930 [DECLARATION_LCONTAINER]: LContainer | null;
8931 /**
8932 * More flags for this view. See PreOrderHookFlags for more info.
8933 */
8934 [PREORDER_HOOK_FLAGS]: PreOrderHookFlags;
8935 /**
8936 * The number of direct transplanted views which need a refresh or have descendants themselves
8937 * that need a refresh but have not marked their ancestors as Dirty. This tells us that during
8938 * change detection we should still descend to find those children to refresh, even if the parents
8939 * are not `Dirty`/`CheckAlways`.
8940 */
8941 [TRANSPLANTED_VIEWS_TO_REFRESH]: number;
8942}
8943
8944
8945/**
8946 * Convince closure compiler that the wrapped function has no side-effects.
8947 *
8948 * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to
8949 * allow us to execute a function but have closure compiler mark the call as no-side-effects.
8950 * It is important that the return value for the `noSideEffects` function be assigned
8951 * to something which is retained otherwise the call to `noSideEffects` will be removed by closure
8952 * compiler.
8953 */
8954export declare function ɵangular_packages_core_core_bq<T>(fn: () => T): T;
8955
8956/**
8957 * Returns the `RootContext` instance that is associated with
8958 * the application where the target is situated. It does this by walking the parent views until it
8959 * gets to the root view, then getting the context off of that.
8960 *
8961 * @param viewOrComponent the `LView` or component to get the root context for.
8962 */
8963export declare function ɵangular_packages_core_core_br(viewOrComponent: ɵangular_packages_core_core_bp | {}): RootContext;
8964
8965export declare class ɵangular_packages_core_core_c implements Injector {
8966 get(token: any, notFoundValue?: any): any;
8967}
8968
8969export declare class ɵangular_packages_core_core_d implements ReflectiveInjector {
8970 private static INJECTOR_KEY;
8971 readonly parent: Injector | null;
8972 keyIds: number[];
8973 objs: any[];
8974 /**
8975 * Private
8976 */
8977 constructor(_providers: ResolvedReflectiveProvider[], _parent?: Injector);
8978 get(token: any, notFoundValue?: any): any;
8979 resolveAndCreateChild(providers: Provider[]): ReflectiveInjector;
8980 createChildFromResolved(providers: ResolvedReflectiveProvider[]): ReflectiveInjector;
8981 resolveAndInstantiate(provider: Provider): any;
8982 instantiateResolved(provider: ResolvedReflectiveProvider): any;
8983 getProviderAtIndex(index: number): ResolvedReflectiveProvider;
8984 private _getMaxNumberOfObjects;
8985 private _instantiateProvider;
8986 private _instantiate;
8987 private _getByReflectiveDependency;
8988 private _getByKey;
8989 private _getObjByKeyId;
8990 get displayName(): string;
8991 toString(): string;
8992}
8993
8994/**
8995 * `Dependency` is used by the framework to extend DI.
8996 * This is internal to Angular and should not be used directly.
8997 */
8998export declare class ɵangular_packages_core_core_e {
8999 key: ReflectiveKey;
9000 optional: boolean;
9001 visibility: Self | SkipSelf | null;
9002 constructor(key: ReflectiveKey, optional: boolean, visibility: Self | SkipSelf | null);
9003 static fromKey(key: ReflectiveKey): ɵangular_packages_core_core_e;
9004}
9005
9006/**
9007 * Resolve a list of Providers.
9008 */
9009export declare function ɵangular_packages_core_core_f(providers: Provider[]): ResolvedReflectiveProvider[];
9010
9011export declare function ɵangular_packages_core_core_g(): string;
9012
9013/**
9014 * Creates an ElementRef given a node.
9015 *
9016 * @param ElementRefToken The ElementRef type
9017 * @param tNode The node for which you'd like an ElementRef
9018 * @param view The view to which the node belongs
9019 * @returns The ElementRef instance to use
9020 */
9021export declare function ɵangular_packages_core_core_h(ElementRefToken: typeof ElementRef, tNode: TNode, view: ɵangular_packages_core_core_bp): ElementRef;
9022
9023/**
9024 * Creates a TemplateRef and stores it on the injector.
9025 *
9026 * @param TemplateRefToken The TemplateRef type
9027 * @param ElementRefToken The ElementRef type
9028 * @param hostTNode The node on which a TemplateRef is requested
9029 * @param hostView The view to which the node belongs
9030 * @returns The TemplateRef instance or null if we can't create a TemplateRef on a given node type
9031 */
9032export declare function ɵangular_packages_core_core_i<T>(TemplateRefToken: typeof TemplateRef, ElementRefToken: typeof ElementRef, hostTNode: TNode, hostView: ɵangular_packages_core_core_bp): TemplateRef<T> | null;
9033
9034export declare function ɵangular_packages_core_core_j(id: string): NgModuleFactory<any>;
9035
9036export declare class ɵangular_packages_core_core_k {
9037 readonly listeners: DebugEventListener[];
9038 readonly parent: DebugElement | null;
9039 readonly nativeNode: any;
9040 private readonly _debugContext;
9041 constructor(nativeNode: any, parent: DebugNode | null, _debugContext: ɵangular_packages_core_core_w);
9042 get injector(): Injector;
9043 get componentInstance(): any;
9044 get context(): any;
9045 get references(): {
9046 [key: string]: any;
9047 };
9048 get providerTokens(): any[];
9049}
9050
9051export declare class ɵangular_packages_core_core_l extends ɵangular_packages_core_core_k implements DebugElement {
9052 readonly name: string;
9053 readonly properties: {
9054 [key: string]: any;
9055 };
9056 readonly attributes: {
9057 [key: string]: string | null;
9058 };
9059 readonly classes: {
9060 [key: string]: boolean;
9061 };
9062 readonly styles: {
9063 [key: string]: string | null;
9064 };
9065 readonly childNodes: DebugNode[];
9066 readonly nativeElement: any;
9067 constructor(nativeNode: any, parent: any, _debugContext: ɵangular_packages_core_core_w);
9068 addChild(child: DebugNode): void;
9069 removeChild(child: DebugNode): void;
9070 insertChildrenAfter(child: DebugNode, newChildren: DebugNode[]): void;
9071 insertBefore(refChild: DebugNode, newChild: DebugNode): void;
9072 query(predicate: Predicate<DebugElement>): DebugElement;
9073 queryAll(predicate: Predicate<DebugElement>): DebugElement[];
9074 queryAllNodes(predicate: Predicate<DebugNode>): DebugNode[];
9075 get children(): DebugElement[];
9076 triggerEventHandler(eventName: string, eventObj: any): void;
9077}
9078
9079export declare function ɵangular_packages_core_core_m(nativeNode: any): DebugNode | null;
9080
9081export declare class ɵangular_packages_core_core_n implements IterableDifferFactory {
9082 constructor();
9083 supports(obj: Object | null | undefined): boolean;
9084 create<V>(trackByFn?: TrackByFunction<V>): DefaultIterableDiffer<V>;
9085}
9086
9087export declare class ɵangular_packages_core_core_o<K, V> implements KeyValueDifferFactory {
9088 constructor();
9089 supports(obj: any): boolean;
9090 create<K, V>(): KeyValueDiffer<K, V>;
9091}
9092
9093export declare function ɵangular_packages_core_core_p(): IterableDiffers;
9094
9095export declare function ɵangular_packages_core_core_q(): KeyValueDiffers;
9096
9097export declare function ɵangular_packages_core_core_r(locale?: string): string;
9098
9099/**
9100 * A built-in [dependency injection token](guide/glossary#di-token)
9101 * that is used to configure the root injector for bootstrapping.
9102 */
9103export declare const ɵangular_packages_core_core_s: StaticProvider[];
9104
9105/**
9106 * Schedule work at next available slot.
9107 *
9108 * In Ivy this is just `requestAnimationFrame`. For compatibility reasons when bootstrapped
9109 * using `platformRef.bootstrap` we need to use `NgZone.onStable` as the scheduling mechanism.
9110 * This overrides the scheduling mechanism in Ivy to `NgZone.onStable`.
9111 *
9112 * @param ngZone NgZone to use for scheduling.
9113 */
9114export declare function ɵangular_packages_core_core_t(ngZone: NgZone): (fn: () => void) => void;
9115
9116/**
9117 * USD currency code that the application uses by default for CurrencyPipe when no
9118 * DEFAULT_CURRENCY_CODE is provided.
9119 */
9120export declare const ɵangular_packages_core_core_u = "USD";
9121
9122export declare function ɵangular_packages_core_core_v(checkIndex: number, flags: ɵNodeFlags, matchedQueriesDsl: [string | number, ɵQueryValueType][] | null, childCount: number, token: any, value: any, deps: ([ɵDepFlags, any] | any)[], bindings?: BindingDef[], outputs?: OutputDef[]): NodeDef;
9123
9124export declare abstract class ɵangular_packages_core_core_w {
9125 abstract get view(): ViewData;
9126 abstract get nodeIndex(): number | null;
9127 abstract get injector(): Injector;
9128 abstract get component(): any;
9129 abstract get providerTokens(): any[];
9130 abstract get references(): {
9131 [key: string]: any;
9132 };
9133 abstract get context(): any;
9134 abstract get componentRenderElement(): any;
9135 abstract get renderNode(): any;
9136 abstract logError(console: Console, ...values: any[]): void;
9137}
9138
9139export declare function ɵangular_packages_core_core_x<T>(definition: ɵDirectiveDef<T>): typeof rememberChangeHistoryAndInvokeOnChangesHook;
9140
9141/**
9142 * A change detection scheduler token for {@link RootContext}. This token is the default value used
9143 * for the default `RootContext` found in the {@link ROOT_CONTEXT} token.
9144 */
9145export declare const ɵangular_packages_core_core_y: InjectionToken<(fn: () => void) => void>;
9146
9147/**
9148 * Inject static attribute value into directive constructor.
9149 *
9150 * This method is used with `factory` functions which are generated as part of
9151 * `defineDirective` or `defineComponent`. The method retrieves the static value
9152 * of an attribute. (Dynamic attributes are not supported since they are not resolved
9153 * at the time of injection and can change over time.)
9154 *
9155 * # Example
9156 * Given:
9157 * ```
9158 * @Component(...)
9159 * class MyComponent {
9160 * constructor(@Attribute('title') title: string) { ... }
9161 * }
9162 * ```
9163 * When instantiated with
9164 * ```
9165 * <my-component title="Hello"></my-component>
9166 * ```
9167 *
9168 * Then factory method generated is:
9169 * ```
9170 * MyComponent.ɵcmp = defineComponent({
9171 * factory: () => new MyComponent(injectAttribute('title'))
9172 * ...
9173 * })
9174 * ```
9175 *
9176 * @publicApi
9177 */
9178export declare function ɵangular_packages_core_core_z(tNode: TNode, attrNameToInject: string): string | null;
9179
9180/**
9181 * Providers that generate a random `APP_ID_TOKEN`.
9182 * @publicApi
9183 */
9184export declare const ɵAPP_ID_RANDOM_PROVIDER: {
9185 provide: InjectionToken<string>;
9186 useFactory: typeof ɵangular_packages_core_core_g;
9187 deps: any[];
9188};
9189
9190export declare const enum ɵArgumentType {
9191 Inline = 0,
9192 Dynamic = 1
9193}
9194
9195/**
9196 * A set of marker values to be used in the attributes arrays. These markers indicate that some
9197 * items are not regular attributes and the processing should be adapted accordingly.
9198 */
9199export declare const enum ɵAttributeMarker {
9200 /**
9201 * An implicit marker which indicates that the value in the array are of `attributeKey`,
9202 * `attributeValue` format.
9203 *
9204 * NOTE: This is implicit as it is the type when no marker is present in array. We indicate that
9205 * it should not be present at runtime by the negative number.
9206 */
9207 ImplicitAttributes = -1,
9208 /**
9209 * Marker indicates that the following 3 values in the attributes array are:
9210 * namespaceUri, attributeName, attributeValue
9211 * in that order.
9212 */
9213 NamespaceURI = 0,
9214 /**
9215 * Signals class declaration.
9216 *
9217 * Each value following `Classes` designates a class name to include on the element.
9218 * ## Example:
9219 *
9220 * Given:
9221 * ```
9222 * <div class="foo bar baz">...<d/vi>
9223 * ```
9224 *
9225 * the generated code is:
9226 * ```
9227 * var _c1 = [AttributeMarker.Classes, 'foo', 'bar', 'baz'];
9228 * ```
9229 */
9230 Classes = 1,
9231 /**
9232 * Signals style declaration.
9233 *
9234 * Each pair of values following `Styles` designates a style name and value to include on the
9235 * element.
9236 * ## Example:
9237 *
9238 * Given:
9239 * ```
9240 * <div style="width:100px; height:200px; color:red">...</div>
9241 * ```
9242 *
9243 * the generated code is:
9244 * ```
9245 * var _c1 = [AttributeMarker.Styles, 'width', '100px', 'height'. '200px', 'color', 'red'];
9246 * ```
9247 */
9248 Styles = 2,
9249 /**
9250 * Signals that the following attribute names were extracted from input or output bindings.
9251 *
9252 * For example, given the following HTML:
9253 *
9254 * ```
9255 * <div moo="car" [foo]="exp" (bar)="doSth()">
9256 * ```
9257 *
9258 * the generated code is:
9259 *
9260 * ```
9261 * var _c1 = ['moo', 'car', AttributeMarker.Bindings, 'foo', 'bar'];
9262 * ```
9263 */
9264 Bindings = 3,
9265 /**
9266 * Signals that the following attribute names were hoisted from an inline-template declaration.
9267 *
9268 * For example, given the following HTML:
9269 *
9270 * ```
9271 * <div *ngFor="let value of values; trackBy:trackBy" dirA [dirB]="value">
9272 * ```
9273 *
9274 * the generated code for the `template()` instruction would include:
9275 *
9276 * ```
9277 * ['dirA', '', AttributeMarker.Bindings, 'dirB', AttributeMarker.Template, 'ngFor', 'ngForOf',
9278 * 'ngForTrackBy', 'let-value']
9279 * ```
9280 *
9281 * while the generated code for the `element()` instruction inside the template function would
9282 * include:
9283 *
9284 * ```
9285 * ['dirA', '', AttributeMarker.Bindings, 'dirB']
9286 * ```
9287 */
9288 Template = 4,
9289 /**
9290 * Signals that the following attribute is `ngProjectAs` and its value is a parsed `CssSelector`.
9291 *
9292 * For example, given the following HTML:
9293 *
9294 * ```
9295 * <h1 attr="value" ngProjectAs="[title]">
9296 * ```
9297 *
9298 * the generated code for the `element()` instruction would include:
9299 *
9300 * ```
9301 * ['attr', 'value', AttributeMarker.ProjectAs, ['', 'title', '']]
9302 * ```
9303 */
9304 ProjectAs = 5,
9305 /**
9306 * Signals that the following attribute will be translated by runtime i18n
9307 *
9308 * For example, given the following HTML:
9309 *
9310 * ```
9311 * <div moo="car" foo="value" i18n-foo [bar]="binding" i18n-bar>
9312 * ```
9313 *
9314 * the generated code is:
9315 *
9316 * ```
9317 * var _c1 = ['moo', 'car', AttributeMarker.I18n, 'foo', 'bar'];
9318 */
9319 I18n = 6
9320}
9321
9322export declare const enum ɵBindingFlags {
9323 TypeElementAttribute = 1,
9324 TypeElementClass = 2,
9325 TypeElementStyle = 4,
9326 TypeProperty = 8,
9327 SyntheticProperty = 16,
9328 SyntheticHostProperty = 32,
9329 CatSyntheticProperty = 48,
9330 Types = 15
9331}
9332
9333/**
9334 * Mark `html` string as trusted.
9335 *
9336 * This function wraps the trusted string in `String` and brands it in a way which makes it
9337 * recognizable to {@link htmlSanitizer} to be trusted implicitly.
9338 *
9339 * @param trustedHtml `html` string which needs to be implicitly trusted.
9340 * @returns a `html` which has been branded to be implicitly trusted.
9341 */
9342export declare function ɵbypassSanitizationTrustHtml(trustedHtml: string): ɵSafeHtml;
9343
9344/**
9345 * Mark `url` string as trusted.
9346 *
9347 * This function wraps the trusted string in `String` and brands it in a way which makes it
9348 * recognizable to {@link resourceUrlSanitizer} to be trusted implicitly.
9349 *
9350 * @param trustedResourceUrl `url` string which needs to be implicitly trusted.
9351 * @returns a `url` which has been branded to be implicitly trusted.
9352 */
9353export declare function ɵbypassSanitizationTrustResourceUrl(trustedResourceUrl: string): ɵSafeResourceUrl;
9354
9355/**
9356 * Mark `script` string as trusted.
9357 *
9358 * This function wraps the trusted string in `String` and brands it in a way which makes it
9359 * recognizable to {@link scriptSanitizer} to be trusted implicitly.
9360 *
9361 * @param trustedScript `script` string which needs to be implicitly trusted.
9362 * @returns a `script` which has been branded to be implicitly trusted.
9363 */
9364export declare function ɵbypassSanitizationTrustScript(trustedScript: string): ɵSafeScript;
9365
9366/**
9367 * Mark `style` string as trusted.
9368 *
9369 * This function wraps the trusted string in `String` and brands it in a way which makes it
9370 * recognizable to {@link styleSanitizer} to be trusted implicitly.
9371 *
9372 * @param trustedStyle `style` string which needs to be implicitly trusted.
9373 * @returns a `style` hich has been branded to be implicitly trusted.
9374 */
9375export declare function ɵbypassSanitizationTrustStyle(trustedStyle: string): ɵSafeStyle;
9376
9377/**
9378 * Mark `url` string as trusted.
9379 *
9380 * This function wraps the trusted string in `String` and brands it in a way which makes it
9381 * recognizable to {@link urlSanitizer} to be trusted implicitly.
9382 *
9383 * @param trustedUrl `url` string which needs to be implicitly trusted.
9384 * @returns a `url` which has been branded to be implicitly trusted.
9385 */
9386export declare function ɵbypassSanitizationTrustUrl(trustedUrl: string): ɵSafeUrl;
9387
9388
9389export declare const enum ɵBypassType {
9390 Url = "URL",
9391 Html = "HTML",
9392 ResourceUrl = "ResourceURL",
9393 Script = "Script",
9394 Style = "Style"
9395}
9396
9397export declare function ɵccf(selector: string, componentType: Type<any>, viewDefFactory: ViewDefinitionFactory, inputs: {
9398 [propName: string]: string;
9399} | null, outputs: {
9400 [propName: string]: string;
9401}, ngContentSelectors: string[]): ComponentFactory<any>;
9402
9403/**
9404 * Defines the possible states of the default change detector.
9405 * @see `ChangeDetectorRef`
9406 */
9407export declare enum ɵChangeDetectorStatus {
9408 /**
9409 * A state in which, after calling `detectChanges()`, the change detector
9410 * state becomes `Checked`, and must be explicitly invoked or reactivated.
9411 */
9412 CheckOnce = 0,
9413 /**
9414 * A state in which change detection is skipped until the change detector mode
9415 * becomes `CheckOnce`.
9416 */
9417 Checked = 1,
9418 /**
9419 * A state in which change detection continues automatically until explicitly
9420 * deactivated.
9421 */
9422 CheckAlways = 2,
9423 /**
9424 * A state in which a change detector sub tree is not a part of the main tree and
9425 * should be skipped.
9426 */
9427 Detached = 3,
9428 /**
9429 * Indicates that the change detector encountered an error checking a binding
9430 * or calling a directive lifecycle method and is now in an inconsistent state. Change
9431 * detectors in this state do not detect changes.
9432 */
9433 Errored = 4,
9434 /**
9435 * Indicates that the change detector has been destroyed.
9436 */
9437 Destroyed = 5
9438}
9439
9440export declare function ɵclearOverrides(): void;
9441
9442export declare function ɵclearResolutionOfComponentResourcesQueue(): Map<Type<any>, Component>;
9443
9444export declare function ɵcmf(ngModuleType: Type<any>, bootstrapComponents: Type<any>[], defFactory: NgModuleDefinitionFactory): NgModuleFactory<any>;
9445
9446export declare class ɵCodegenComponentFactoryResolver implements ComponentFactoryResolver {
9447 private _parent;
9448 private _ngModule;
9449 private _factories;
9450 constructor(factories: ComponentFactory<any>[], _parent: ComponentFactoryResolver, _ngModule: NgModuleRef<any>);
9451 resolveComponentFactory<T>(component: {
9452 new (...args: any[]): T;
9453 }): ComponentFactory<T>;
9454}
9455
9456/**
9457 * Compile an Angular component according to its decorator metadata, and patch the resulting
9458 * component def (ɵcmp) onto the component type.
9459 *
9460 * Compilation may be asynchronous (due to the need to resolve URLs for the component template or
9461 * other resources, for example). In the event that compilation is not immediate, `compileComponent`
9462 * will enqueue resource resolution into a global queue and will fail to return the `ɵcmp`
9463 * until the global queue has been resolved with a call to `resolveComponentResources`.
9464 */
9465export declare function ɵcompileComponent(type: Type<any>, metadata: Component): void;
9466
9467/**
9468 * Compile an Angular directive according to its decorator metadata, and patch the resulting
9469 * directive def onto the component type.
9470 *
9471 * In the event that compilation is not immediate, `compileDirective` will return a `Promise` which
9472 * will resolve when compilation completes and the directive becomes usable.
9473 */
9474export declare function ɵcompileDirective(type: Type<any>, directive: Directive | null): void;
9475
9476/**
9477 * Compiles a module in JIT mode.
9478 *
9479 * This function automatically gets called when a class has a `@NgModule` decorator.
9480 */
9481export declare function ɵcompileNgModule(moduleType: Type<any>, ngModule?: NgModule): void;
9482
9483/**
9484 * Compiles and adds the `ɵmod` and `ɵinj` properties to the module class.
9485 *
9486 * It's possible to compile a module via this API which will allow duplicate declarations in its
9487 * root.
9488 */
9489export declare function ɵcompileNgModuleDefs(moduleType: ɵNgModuleType, ngModule: NgModule, allowDuplicateDeclarationsInRoot?: boolean): void;
9490
9491export declare function ɵcompileNgModuleFactory__POST_R3__<M>(injector: Injector, options: CompilerOptions, moduleType: Type<M>): Promise<NgModuleFactory<M>>;
9492
9493export declare function ɵcompilePipe(type: Type<any>, meta: Pipe): void;
9494
9495export declare const ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__: <T>(moduleType: Type<T>) => Promise<ModuleWithComponentFactories<T>>;
9496
9497export declare const ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__: <T>(moduleType: Type<T>) => ModuleWithComponentFactories<T>;
9498
9499export declare const ɵCompiler_compileModuleAsync__POST_R3__: <T>(moduleType: Type<T>) => Promise<NgModuleFactory<T>>;
9500
9501export declare const ɵCompiler_compileModuleSync__POST_R3__: <T>(moduleType: Type<T>) => NgModuleFactory<T>;
9502
9503/**
9504 * Runtime link information for Components.
9505 *
9506 * This is an internal data structure used by the render to link
9507 * components into templates.
9508 *
9509 * NOTE: Always use `defineComponent` function to create this object,
9510 * never create the object directly since the shape of this object
9511 * can change between versions.
9512 *
9513 * See: {@link defineComponent}
9514 */
9515export declare interface ɵComponentDef<T> extends ɵDirectiveDef<T> {
9516 /**
9517 * Runtime unique component ID.
9518 */
9519 readonly id: string;
9520 /**
9521 * The View template of the component.
9522 */
9523 readonly template: ComponentTemplate<T>;
9524 /** Constants associated with the component's view. */
9525 readonly consts: TConstants | null;
9526 /**
9527 * An array of `ngContent[selector]` values that were found in the template.
9528 */
9529 readonly ngContentSelectors?: string[];
9530 /**
9531 * A set of styles that the component needs to be present for component to render correctly.
9532 */
9533 readonly styles: string[];
9534 /**
9535 * The number of nodes, local refs, and pipes in this component template.
9536 *
9537 * Used to calculate the length of the component's LView array, so we
9538 * can pre-fill the array and set the binding start index.
9539 */
9540 readonly decls: number;
9541 /**
9542 * The number of bindings in this component template (including pure fn bindings).
9543 *
9544 * Used to calculate the length of the component's LView array, so we
9545 * can pre-fill the array and set the host binding start index.
9546 */
9547 readonly vars: number;
9548 /**
9549 * Query-related instructions for a component.
9550 */
9551 viewQuery: ViewQueriesFunction<T> | null;
9552 /**
9553 * The view encapsulation type, which determines how styles are applied to
9554 * DOM elements. One of
9555 * - `Emulated` (default): Emulate native scoping of styles.
9556 * - `Native`: Use the native encapsulation mechanism of the renderer.
9557 * - `ShadowDom`: Use modern [ShadowDOM](https://w3c.github.io/webcomponents/spec/shadow/) and
9558 * create a ShadowRoot for component's host element.
9559 * - `None`: Do not provide any template or style encapsulation.
9560 */
9561 readonly encapsulation: ViewEncapsulation;
9562 /**
9563 * Defines arbitrary developer-defined data to be stored on a renderer instance.
9564 * This is useful for renderers that delegate to other renderers.
9565 */
9566 readonly data: {
9567 [kind: string]: any;
9568 };
9569 /** Whether or not this component's ChangeDetectionStrategy is OnPush */
9570 readonly onPush: boolean;
9571 /**
9572 * Registry of directives and components that may be found in this view.
9573 *
9574 * The property is either an array of `DirectiveDef`s or a function which returns the array of
9575 * `DirectiveDef`s. The function is necessary to be able to support forward declarations.
9576 */
9577 directiveDefs: DirectiveDefListOrFactory | null;
9578 /**
9579 * Registry of pipes that may be found in this view.
9580 *
9581 * The property is either an array of `PipeDefs`s or a function which returns the array of
9582 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
9583 */
9584 pipeDefs: PipeDefListOrFactory | null;
9585 /**
9586 * The set of schemas that declare elements to be allowed in the component's template.
9587 */
9588 schemas: SchemaMetadata[] | null;
9589 /**
9590 * Ivy runtime uses this place to store the computed tView for the component. This gets filled on
9591 * the first run of component.
9592 */
9593 tView: TView | null;
9594 /**
9595 * Used to store the result of `noSideEffects` function so that it is not removed by closure
9596 * compiler. The property should never be read.
9597 */
9598 readonly _?: never;
9599}
9600
9601/**
9602 * A subclass of `Type` which has a static `ɵcmp`:`ComponentDef` field making it
9603 * consumable for rendering.
9604 */
9605export declare interface ɵComponentType<T> extends Type<T> {
9606 ɵcmp: never;
9607}
9608
9609
9610export declare class ɵConsole {
9611 log(message: string): void;
9612 warn(message: string): void;
9613}
9614
9615/**
9616 * Create a new `Injector` which is configured using a `defType` of `InjectorType<any>`s.
9617 *
9618 * @publicApi
9619 */
9620export declare function ɵcreateInjector(defType: any, parent?: Injector | null, additionalProviders?: StaticProvider[] | null, name?: string): Injector;
9621
9622export declare function ɵcrt(values: {
9623 styles: (string | any[])[];
9624 encapsulation: ViewEncapsulation;
9625 data: {
9626 [kind: string]: any[];
9627 };
9628}): RendererType2;
9629
9630/**
9631 * A list of CssSelectors.
9632 *
9633 * A directive or component can have multiple selectors. This type is used for
9634 * directive defs so any of the selectors in the list will match that directive.
9635 *
9636 * Original: 'form, [ngForm]'
9637 * Parsed: [['form'], ['', 'ngForm', '']]
9638 */
9639export declare type ɵCssSelectorList = CssSelector[];
9640
9641/**
9642 * Index of each value in currency data (used to describe CURRENCIES_EN in currencies.ts)
9643 */
9644export declare const enum ɵCurrencyIndex {
9645 Symbol = 0,
9646 SymbolNarrow = 1,
9647 NbOfDigits = 2
9648}
9649
9650/**
9651 * The locale id that the application is using by default (for translations and ICU expressions).
9652 */
9653export declare const ɵDEFAULT_LOCALE_ID = "en-US";
9654
9655export declare const ɵdefaultIterableDiffers: IterableDiffers;
9656
9657export declare const ɵdefaultKeyValueDiffers: KeyValueDiffers;
9658
9659/**
9660 * Bitmask for DI flags
9661 */
9662export declare const enum ɵDepFlags {
9663 None = 0,
9664 SkipSelf = 1,
9665 Optional = 2,
9666 Self = 4,
9667 Value = 8
9668}
9669
9670
9671/**
9672 * Synchronously perform change detection on a component (and possibly its sub-components).
9673 *
9674 * This function triggers change detection in a synchronous way on a component.
9675 *
9676 * @param component The component which the change detection should be performed on.
9677 */
9678export declare function ɵdetectChanges(component: {}): void;
9679
9680
9681export declare function ɵdevModeEqual(a: any, b: any): boolean;
9682
9683export declare function ɵdid(checkIndex: number, flags: ɵNodeFlags, matchedQueries: null | [string | number, ɵQueryValueType][], childCount: number, ctor: any, deps: ([ɵDepFlags, any] | any)[], props?: null | {
9684 [name: string]: [number, string];
9685}, outputs?: null | {
9686 [name: string]: string;
9687}): NodeDef;
9688
9689/**
9690 * Runtime link information for Directives.
9691 *
9692 * This is an internal data structure used by the render to link
9693 * directives into templates.
9694 *
9695 * NOTE: Always use `defineDirective` function to create this object,
9696 * never create the object directly since the shape of this object
9697 * can change between versions.
9698 *
9699 * @param Selector type metadata specifying the selector of the directive or component
9700 *
9701 * See: {@link defineDirective}
9702 */
9703export declare interface ɵDirectiveDef<T> {
9704 /**
9705 * A dictionary mapping the inputs' minified property names to their public API names, which
9706 * are their aliases if any, or their original unminified property names
9707 * (as in `@Input('alias') propertyName: any;`).
9708 */
9709 readonly inputs: {
9710 [P in keyof T]: string;
9711 };
9712 /**
9713 * @deprecated This is only here because `NgOnChanges` incorrectly uses declared name instead of
9714 * public or minified name.
9715 */
9716 readonly declaredInputs: {
9717 [P in keyof T]: string;
9718 };
9719 /**
9720 * A dictionary mapping the outputs' minified property names to their public API names, which
9721 * are their aliases if any, or their original unminified property names
9722 * (as in `@Output('alias') propertyName: any;`).
9723 */
9724 readonly outputs: {
9725 [P in keyof T]: string;
9726 };
9727 /**
9728 * Function to create and refresh content queries associated with a given directive.
9729 */
9730 contentQueries: ContentQueriesFunction<T> | null;
9731 /**
9732 * Query-related instructions for a directive. Note that while directives don't have a
9733 * view and as such view queries won't necessarily do anything, there might be
9734 * components that extend the directive.
9735 */
9736 viewQuery: ViewQueriesFunction<T> | null;
9737 /**
9738 * Refreshes host bindings on the associated directive.
9739 */
9740 readonly hostBindings: HostBindingsFunction<T> | null;
9741 /**
9742 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
9743 *
9744 * Used to calculate the length of the component's LView array, so we
9745 * can pre-fill the array and set the host binding start index.
9746 */
9747 readonly hostVars: number;
9748 /**
9749 * Assign static attribute values to a host element.
9750 *
9751 * This property will assign static attribute values as well as class and style
9752 * values to a host element. Since attribute values can consist of different types of values, the
9753 * `hostAttrs` array must include the values in the following format:
9754 *
9755 * attrs = [
9756 * // static attributes (like `title`, `name`, `id`...)
9757 * attr1, value1, attr2, value,
9758 *
9759 * // a single namespace value (like `x:id`)
9760 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
9761 *
9762 * // another single namespace value (like `x:name`)
9763 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
9764 *
9765 * // a series of CSS classes that will be applied to the element (no spaces)
9766 * CLASSES_MARKER, class1, class2, class3,
9767 *
9768 * // a series of CSS styles (property + value) that will be applied to the element
9769 * STYLES_MARKER, prop1, value1, prop2, value2
9770 * ]
9771 *
9772 * All non-class and non-style attributes must be defined at the start of the list
9773 * first before all class and style values are set. When there is a change in value
9774 * type (like when classes and styles are introduced) a marker must be used to separate
9775 * the entries. The marker values themselves are set via entries found in the
9776 * [AttributeMarker] enum.
9777 */
9778 readonly hostAttrs: TAttributes | null;
9779 /** Token representing the directive. Used by DI. */
9780 readonly type: Type<T>;
9781 /** Function that resolves providers and publishes them into the DI system. */
9782 providersResolver: (<U extends T>(def: ɵDirectiveDef<U>, processProvidersFn?: ProcessProvidersFunction) => void) | null;
9783 /** The selectors that will be used to match nodes to this directive. */
9784 readonly selectors: ɵCssSelectorList;
9785 /**
9786 * Name under which the directive is exported (for use with local references in template)
9787 */
9788 readonly exportAs: string[] | null;
9789 /**
9790 * Factory function used to create a new directive instance. Will be null initially.
9791 * Populated when the factory is first requested by directive instantiation logic.
9792 */
9793 readonly factory: FactoryFn<T> | null;
9794 /**
9795 * The features applied to this directive
9796 */
9797 readonly features: DirectiveDefFeature[] | null;
9798 setInput: (<U extends T>(this: ɵDirectiveDef<U>, instance: U, value: any, publicName: string, privateName: string) => void) | null;
9799}
9800
9801/**
9802 * A subclass of `Type` which has a static `ɵdir`:`DirectiveDef` field making it
9803 * consumable for rendering.
9804 */
9805export declare interface ɵDirectiveType<T> extends Type<T> {
9806 ɵdir: never;
9807 ɵfac: () => T;
9808}
9809
9810export declare function ɵeld(checkIndex: number, flags: ɵNodeFlags, matchedQueriesDsl: null | [string | number, ɵQueryValueType][], ngContentIndex: null | number, childCount: number, namespaceAndName: string | null, fixedAttrs?: null | [string, string][], bindings?: null | [ɵBindingFlags, string, string | SecurityContext | null][], outputs?: null | ([string, string])[], handleEvent?: null | ElementHandleEventFn, componentView?: null | ViewDefinitionFactory, componentRendererType?: RendererType2 | null): NodeDef;
9811
9812export declare const ɵEMPTY_ARRAY: any[];
9813
9814export declare const ɵEMPTY_MAP: {
9815 [key: string]: any;
9816};
9817
9818/**
9819 * Index of each type of locale data from the extra locale data array
9820 */
9821export declare const enum ɵExtraLocaleDataIndex {
9822 ExtraDayPeriodFormats = 0,
9823 ExtraDayPeriodStandalone = 1,
9824 ExtraDayPeriodsRules = 2
9825}
9826
9827/**
9828 * Finds the locale data for a given locale.
9829 *
9830 * @param locale The locale code.
9831 * @returns The locale data.
9832 * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)
9833 */
9834export declare function ɵfindLocaleData(locale: string): any;
9835
9836/**
9837 * Loops over queued module definitions, if a given module definition has all of its
9838 * declarations resolved, it dequeues that module definition and sets the scope on
9839 * its declarations.
9840 */
9841export declare function ɵflushModuleScopingQueueAsMuchAsPossible(): void;
9842
9843export declare function ɵgetComponentViewDefinitionFactory(componentFactory: ComponentFactory<any>): ViewDefinitionFactory;
9844
9845export declare function ɵgetDebugNode__POST_R3__(nativeNode: Element): DebugElement__POST_R3__;
9846
9847export declare function ɵgetDebugNode__POST_R3__(nativeNode: Node): DebugNode__POST_R3__;
9848
9849export declare function ɵgetDebugNode__POST_R3__(nativeNode: null): null;
9850
9851export declare const ɵgetDebugNodeR2: (nativeNode: any) => DebugNode | null;
9852
9853/**
9854 * Retrieves directive instances associated with a given DOM element. Does not include
9855 * component instances.
9856 *
9857 * @usageNotes
9858 * Given the following DOM structure:
9859 * ```
9860 * <my-app>
9861 * <button my-button></button>
9862 * <my-comp></my-comp>
9863 * </my-app>
9864 * ```
9865 * Calling `getDirectives` on `<button>` will return an array with an instance of the `MyButton`
9866 * directive that is associated with the DOM element.
9867 *
9868 * Calling `getDirectives` on `<my-comp>` will return an empty array.
9869 *
9870 * @param element DOM element for which to get the directives.
9871 * @returns Array of directives associated with the element.
9872 *
9873 * @publicApi
9874 * @globalApi ng
9875 */
9876export declare function ɵgetDirectives(element: Element): {}[];
9877
9878/**
9879 * Retrieves the host element of a component or directive instance.
9880 * The host element is the DOM element that matched the selector of the directive.
9881 *
9882 * @param componentOrDirective Component or directive instance for which the host
9883 * element should be retrieved.
9884 * @returns Host element of the target.
9885 *
9886 * @publicApi
9887 * @globalApi ng
9888 */
9889export declare function ɵgetHostElement(componentOrDirective: {}): Element;
9890
9891/**
9892 * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading
9893 * inherited value.
9894 *
9895 * @param type A type which may have its own (non-inherited) `ɵprov`.
9896 */
9897export declare function ɵgetInjectableDef<T>(type: any): ɵɵInjectableDef<T> | null;
9898
9899/**
9900 * Returns the matching `LContext` data for a given DOM node, directive or component instance.
9901 *
9902 * This function will examine the provided DOM element, component, or directive instance\'s
9903 * monkey-patched property to derive the `LContext` data. Once called then the monkey-patched
9904 * value will be that of the newly created `LContext`.
9905 *
9906 * If the monkey-patched value is the `LView` instance then the context value for that
9907 * target will be created and the monkey-patch reference will be updated. Therefore when this
9908 * function is called it may mutate the provided element\'s, component\'s or any of the associated
9909 * directive\'s monkey-patch values.
9910 *
9911 * If the monkey-patch value is not detected then the code will walk up the DOM until an element
9912 * is found which contains a monkey-patch reference. When that occurs then the provided element
9913 * will be updated with a new context (which is then returned). If the monkey-patch value is not
9914 * detected for a component/directive instance then it will throw an error (all components and
9915 * directives should be automatically monkey-patched by ivy).
9916 *
9917 * @param target Component, Directive or DOM Node.
9918 */
9919export declare function ɵgetLContext(target: any): ɵLContext | null;
9920
9921/**
9922 * Retrieves the default currency code for the given locale.
9923 *
9924 * The default is defined as the first currency which is still in use.
9925 *
9926 * @param locale The code of the locale whose currency code we want.
9927 * @returns The code of the default currency for the given locale.
9928 *
9929 */
9930export declare function ɵgetLocaleCurrencyCode(locale: string): string | null;
9931
9932/**
9933 * Retrieves the plural function used by ICU expressions to determine the plural case to use
9934 * for a given locale.
9935 * @param locale A locale code for the locale format rules to use.
9936 * @returns The plural function for the locale.
9937 * @see `NgPlural`
9938 * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n)
9939 */
9940export declare function ɵgetLocalePluralCase(locale: string): (value: number) => number;
9941
9942export declare function ɵgetModuleFactory__POST_R3__(id: string): NgModuleFactory<any>;
9943
9944export declare function ɵgetSanitizationBypassType(value: any): ɵBypassType | null;
9945
9946export declare type ɵGetterFn = (obj: any) => any;
9947
9948
9949export declare const ɵglobal: any;
9950
9951export declare function ɵinitServicesIfNeeded(): void;
9952
9953export declare function ɵINJECTOR_IMPL__POST_R3__(providers: StaticProvider[], parent: Injector | undefined, name: string): Injector;
9954
9955/**
9956 * An internal token whose presence in an injector indicates that the injector should treat itself
9957 * as a root scoped injector when processing requests for unknown tokens which may indicate
9958 * they are provided in the root scope.
9959 */
9960export declare const ɵINJECTOR_SCOPE: InjectionToken<"root" | "platform" | null>;
9961
9962export declare function ɵinlineInterpolate(valueCount: number, c0: string, a1: any, c1: string, a2?: any, c2?: string, a3?: any, c3?: string, a4?: any, c4?: string, a5?: any, c5?: string, a6?: any, c6?: string, a7?: any, c7?: string, a8?: any, c8?: string, a9?: any, c9?: string): string;
9963
9964export declare function ɵinterpolate(valueCount: number, constAndInterp: string[]): string;
9965
9966export declare function ɵisBoundToModule__POST_R3__<C>(cf: ComponentFactory<C>): boolean;
9967
9968/**
9969 * Reports whether a given strategy is currently the default for change detection.
9970 * @param changeDetectionStrategy The strategy to check.
9971 * @returns True if the given strategy is the current default, false otherwise.
9972 * @see `ChangeDetectorStatus`
9973 * @see `ChangeDetectorRef`
9974 */
9975export declare function ɵisDefaultChangeDetectionStrategy(changeDetectionStrategy: ChangeDetectionStrategy): boolean;
9976
9977export declare function ɵisListLikeIterable(obj: any): boolean;
9978
9979/**
9980 * Determine if the argument is an Observable
9981 */
9982export declare function ɵisObservable(obj: any | Observable<any>): obj is Observable<any>;
9983
9984/**
9985 * Determine if the argument is shaped like a Promise
9986 */
9987export declare function ɵisPromise<T = any>(obj: any): obj is Promise<T>;
9988
9989export declare const ɵivyEnabled = false;
9990
9991/**
9992 * The internal view context which is specific to a given DOM element, directive or
9993 * component instance. Each value in here (besides the LView and element node details)
9994 * can be present, null or undefined. If undefined then it implies the value has not been
9995 * looked up yet, otherwise, if null, then a lookup was executed and nothing was found.
9996 *
9997 * Each value will get filled when the respective value is examined within the getContext
9998 * function. The component, element and each directive instance will share the same instance
9999 * of the context.
10000 */
10001export declare interface ɵLContext {
10002 /**
10003 * The component's parent view data.
10004 */
10005 lView: ɵangular_packages_core_core_bp;
10006 /**
10007 * The index instance of the node.
10008 */
10009 nodeIndex: number;
10010 /**
10011 * The instance of the DOM node that is attached to the lNode.
10012 */
10013 native: RNode;
10014 /**
10015 * The instance of the Component node.
10016 */
10017 component: {} | null | undefined;
10018 /**
10019 * The list of active directives that exist on this element.
10020 */
10021 directives: any[] | null | undefined;
10022 /**
10023 * The map of local references (local reference name => element or directive instance) that exist
10024 * on this element.
10025 */
10026 localRefs: {
10027 [key: string]: any;
10028 } | null | undefined;
10029}
10030
10031/**
10032 * Used to enable lifecycle hooks on the root component.
10033 *
10034 * Include this feature when calling `renderComponent` if the root component
10035 * you are rendering has lifecycle hooks defined. Otherwise, the hooks won't
10036 * be called properly.
10037 *
10038 * Example:
10039 *
10040 * ```
10041 * renderComponent(AppComponent, {hostFeatures: [LifecycleHooksFeature]});
10042 * ```
10043 */
10044export declare function ɵLifecycleHooksFeature(component: any, def: ɵComponentDef<any>): void;
10045
10046/**
10047 * Index of each type of locale data from the locale data array
10048 */
10049export declare enum ɵLocaleDataIndex {
10050 LocaleId = 0,
10051 DayPeriodsFormat = 1,
10052 DayPeriodsStandalone = 2,
10053 DaysFormat = 3,
10054 DaysStandalone = 4,
10055 MonthsFormat = 5,
10056 MonthsStandalone = 6,
10057 Eras = 7,
10058 FirstDayOfWeek = 8,
10059 WeekendRange = 9,
10060 DateFormat = 10,
10061 TimeFormat = 11,
10062 DateTimeFormat = 12,
10063 NumberSymbols = 13,
10064 NumberFormats = 14,
10065 CurrencyCode = 15,
10066 CurrencySymbol = 16,
10067 CurrencyName = 17,
10068 Currencies = 18,
10069 Directionality = 19,
10070 PluralCase = 20,
10071 ExtraData = 21
10072}
10073
10074/**
10075 * @suppress {globalThis}
10076 */
10077export declare function ɵmakeDecorator<T>(name: string, props?: (...args: any[]) => any, parentClass?: any, additionalProcessing?: (type: Type<T>) => void, typeFn?: (type: Type<T>, ...args: any[]) => void): {
10078 new (...args: any[]): any;
10079 (...args: any[]): any;
10080 (...args: any[]): (cls: any) => any;
10081};
10082
10083/**
10084 * Marks the component as dirty (needing change detection). Marking a component dirty will
10085 * schedule a change detection on it at some point in the future.
10086 *
10087 * Marking an already dirty component as dirty won't do anything. Only one outstanding change
10088 * detection can be scheduled per component tree.
10089 *
10090 * @param component Component to mark as dirty.
10091 */
10092export declare function ɵmarkDirty(component: {}): void;
10093
10094export declare type ɵMethodFn = (obj: any, args: any[]) => any;
10095
10096export declare function ɵmod(providers: NgModuleProviderDef[]): NgModuleDefinition;
10097
10098export declare function ɵmpd(flags: ɵNodeFlags, token: any, value: any, deps: ([ɵDepFlags, any] | any)[]): NgModuleProviderDef;
10099
10100export declare function ɵncd(ngContentIndex: null | number, index: number): NodeDef;
10101
10102
10103export declare const ɵNG_COMP_DEF: string;
10104
10105export declare const ɵNG_DIR_DEF: string;
10106
10107/**
10108 * If a directive is diPublic, bloomAdd sets a property on the type with this constant as
10109 * the key and the directive's unique ID as the value. This allows us to map directives to their
10110 * bloom filter bit for DI.
10111 */
10112export declare const ɵNG_ELEMENT_ID: string;
10113
10114export declare const ɵNG_INJ_DEF: string;
10115
10116export declare const ɵNG_MOD_DEF: string;
10117
10118export declare const ɵNG_PIPE_DEF: string;
10119
10120export declare const ɵNG_PROV_DEF: string;
10121
10122/**
10123 * Runtime link information for NgModules.
10124 *
10125 * This is the internal data structure used by the runtime to assemble components, directives,
10126 * pipes, and injectors.
10127 *
10128 * NOTE: Always use `ɵɵdefineNgModule` function to create this object,
10129 * never create the object directly since the shape of this object
10130 * can change between versions.
10131 */
10132export declare interface ɵNgModuleDef<T> {
10133 /** Token representing the module. Used by DI. */
10134 type: T;
10135 /** List of components to bootstrap. */
10136 bootstrap: Type<any>[] | (() => Type<any>[]);
10137 /** List of components, directives, and pipes declared by this module. */
10138 declarations: Type<any>[] | (() => Type<any>[]);
10139 /** List of modules or `ModuleWithProviders` imported by this module. */
10140 imports: Type<any>[] | (() => Type<any>[]);
10141 /**
10142 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
10143 * module.
10144 */
10145 exports: Type<any>[] | (() => Type<any>[]);
10146 /**
10147 * Cached value of computed `transitiveCompileScopes` for this module.
10148 *
10149 * This should never be read directly, but accessed via `transitiveScopesFor`.
10150 */
10151 transitiveCompileScopes: ɵNgModuleTransitiveScopes | null;
10152 /** The set of schemas that declare elements to be allowed in the NgModule. */
10153 schemas: SchemaMetadata[] | null;
10154 /** Unique ID for the module with which it should be registered. */
10155 id: string | null;
10156}
10157
10158export declare class ɵNgModuleFactory<T> extends NgModuleFactory<T> {
10159 moduleType: Type<T>;
10160 constructor(moduleType: Type<T>);
10161 create(parentInjector: Injector | null): NgModuleRef<T>;
10162}
10163
10164/**
10165 * Represents the expansion of an `NgModule` into its scopes.
10166 *
10167 * A scope is a set of directives and pipes that are visible in a particular context. Each
10168 * `NgModule` has two scopes. The `compilation` scope is the set of directives and pipes that will
10169 * be recognized in the templates of components declared by the module. The `exported` scope is the
10170 * set of directives and pipes exported by a module (that is, module B's exported scope gets added
10171 * to module A's compilation scope when module A imports B).
10172 */
10173export declare interface ɵNgModuleTransitiveScopes {
10174 compilation: {
10175 directives: Set<any>;
10176 pipes: Set<any>;
10177 };
10178 exported: {
10179 directives: Set<any>;
10180 pipes: Set<any>;
10181 };
10182 schemas: SchemaMetadata[] | null;
10183}
10184
10185export declare interface ɵNgModuleType<T = any> extends Type<T> {
10186 ɵmod: ɵNgModuleDef<T>;
10187}
10188
10189
10190export declare interface ɵNO_CHANGE {
10191 __brand__: 'NO_CHANGE';
10192}
10193
10194/** A special value which designates that a value has not changed. */
10195export declare const ɵNO_CHANGE: ɵNO_CHANGE;
10196
10197/**
10198 * Bitmask for NodeDef.flags.
10199 * Naming convention:
10200 * - `Type...`: flags that are mutually exclusive
10201 * - `Cat...`: union of multiple `Type...` (short for category).
10202 */
10203export declare const enum ɵNodeFlags {
10204 None = 0,
10205 TypeElement = 1,
10206 TypeText = 2,
10207 ProjectedTemplate = 4,
10208 CatRenderNode = 3,
10209 TypeNgContent = 8,
10210 TypePipe = 16,
10211 TypePureArray = 32,
10212 TypePureObject = 64,
10213 TypePurePipe = 128,
10214 CatPureExpression = 224,
10215 TypeValueProvider = 256,
10216 TypeClassProvider = 512,
10217 TypeFactoryProvider = 1024,
10218 TypeUseExistingProvider = 2048,
10219 LazyProvider = 4096,
10220 PrivateProvider = 8192,
10221 TypeDirective = 16384,
10222 Component = 32768,
10223 CatProviderNoDirective = 3840,
10224 CatProvider = 20224,
10225 OnInit = 65536,
10226 OnDestroy = 131072,
10227 DoCheck = 262144,
10228 OnChanges = 524288,
10229 AfterContentInit = 1048576,
10230 AfterContentChecked = 2097152,
10231 AfterViewInit = 4194304,
10232 AfterViewChecked = 8388608,
10233 EmbeddedViews = 16777216,
10234 ComponentView = 33554432,
10235 TypeContentQuery = 67108864,
10236 TypeViewQuery = 134217728,
10237 StaticQuery = 268435456,
10238 DynamicQuery = 536870912,
10239 TypeNgModule = 1073741824,
10240 CatQuery = 201326592,
10241 Types = 201347067
10242}
10243
10244/**
10245 * Provides a noop implementation of `NgZone` which does nothing. This zone requires explicit calls
10246 * to framework to perform rendering.
10247 */
10248export declare class ɵNoopNgZone implements NgZone {
10249 readonly hasPendingMicrotasks: boolean;
10250 readonly hasPendingMacrotasks: boolean;
10251 readonly isStable: boolean;
10252 readonly onUnstable: EventEmitter<any>;
10253 readonly onMicrotaskEmpty: EventEmitter<any>;
10254 readonly onStable: EventEmitter<any>;
10255 readonly onError: EventEmitter<any>;
10256 run<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any): T;
10257 runGuarded<T>(fn: (...args: any[]) => any, applyThis?: any, applyArgs?: any): T;
10258 runOutsideAngular<T>(fn: (...args: any[]) => T): T;
10259 runTask<T>(fn: (...args: any[]) => T, applyThis?: any, applyArgs?: any, name?: string): T;
10260}
10261
10262export declare const ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR: {};
10263
10264export declare function ɵnov(view: ViewData, index: number): any;
10265
10266export declare function ɵoverrideComponentView(comp: Type<any>, componentFactory: ComponentFactory<any>): void;
10267
10268export declare function ɵoverrideProvider(override: ProviderOverride): void;
10269
10270export declare function ɵpad(checkIndex: number, argCount: number): NodeDef;
10271
10272/**
10273 * Patch the definition of a component with directives and pipes from the compilation scope of
10274 * a given module.
10275 */
10276export declare function ɵpatchComponentDefWithScope<C>(componentDef: ɵComponentDef<C>, transitiveScopes: ɵNgModuleTransitiveScopes): void;
10277
10278export declare function ɵpid(flags: ɵNodeFlags, ctor: any, deps: ([ɵDepFlags, any] | any)[]): NodeDef;
10279
10280/**
10281 * Runtime link information for Pipes.
10282 *
10283 * This is an internal data structure used by the renderer to link
10284 * pipes into templates.
10285 *
10286 * NOTE: Always use `definePipe` function to create this object,
10287 * never create the object directly since the shape of this object
10288 * can change between versions.
10289 *
10290 * See: {@link definePipe}
10291 */
10292export declare interface ɵPipeDef<T> {
10293 /** Token representing the pipe. */
10294 type: Type<T>;
10295 /**
10296 * Pipe name.
10297 *
10298 * Used to resolve pipe in templates.
10299 */
10300 readonly name: string;
10301 /**
10302 * Factory function used to create a new pipe instance. Will be null initially.
10303 * Populated when the factory is first requested by pipe instantiation logic.
10304 */
10305 factory: FactoryFn<T> | null;
10306 /**
10307 * Whether or not the pipe is pure.
10308 *
10309 * Pure pipes result only depends on the pipe input and not on internal
10310 * state of the pipe.
10311 */
10312 readonly pure: boolean;
10313 onDestroy: (() => void) | null;
10314}
10315
10316
10317/**
10318 * A shared interface which contains an animation player
10319 */
10320export declare interface ɵPlayer {
10321 parent?: ɵPlayer | null;
10322 state: ɵPlayState;
10323 play(): void;
10324 pause(): void;
10325 finish(): void;
10326 destroy(): void;
10327 addEventListener(state: ɵPlayState | string, cb: (data?: any) => any): void;
10328}
10329
10330/**
10331 * Used as a reference to build a player from a styling template binding
10332 * (`[style]` and `[class]`).
10333 *
10334 * The `fn` function will be called once any styling-related changes are
10335 * evaluated on an element and is expected to return a player that will
10336 * be then run on the element.
10337 *
10338 * `[style]`, `[style.prop]`, `[class]` and `[class.name]` template bindings
10339 * all accept a `PlayerFactory` as input and this player factories.
10340 */
10341export declare interface ɵPlayerFactory {
10342 '__brand__': 'Brand for PlayerFactory that nothing will match';
10343}
10344
10345/**
10346 * Designed to be used as an injection service to capture all animation players.
10347 *
10348 * When present all animation players will be passed into the flush method below.
10349 * This feature is designed to service application-wide animation testing, live
10350 * debugging as well as custom animation choreographing tools.
10351 */
10352export declare interface ɵPlayerHandler {
10353 /**
10354 * Designed to kick off the player at the end of change detection
10355 */
10356 flushPlayers(): void;
10357 /**
10358 * @param player The player that has been scheduled to run within the application.
10359 * @param context The context as to where the player was bound to
10360 */
10361 queuePlayer(player: ɵPlayer, context: ComponentInstance | DirectiveInstance | HTMLElement): void;
10362}
10363
10364/**
10365 * The state of a given player
10366 *
10367 * Do not change the increasing nature of the numbers since the player
10368 * code may compare state by checking if a number is higher or lower than
10369 * a certain numeric value.
10370 */
10371export declare const enum ɵPlayState {
10372 Pending = 0,
10373 Running = 1,
10374 Paused = 2,
10375 Finished = 100,
10376 Destroyed = 200
10377}
10378
10379export declare function ɵpod(checkIndex: number, propToIndex: {
10380 [p: string]: number;
10381}): NodeDef;
10382
10383export declare function ɵppd(checkIndex: number, argCount: number): NodeDef;
10384
10385export declare function ɵprd(flags: ɵNodeFlags, matchedQueries: null | [string | number, ɵQueryValueType][], token: any, value: any, deps: ([ɵDepFlags, any] | any)[]): NodeDef;
10386
10387/**
10388 * Publishes a collection of default debug tools onto`window.ng`.
10389 *
10390 * These functions are available globally when Angular is in development
10391 * mode and are automatically stripped away from prod mode is on.
10392 */
10393export declare function ɵpublishDefaultGlobalUtils(): void;
10394
10395/**
10396 * Publishes the given function to `window.ng` so that it can be
10397 * used from the browser console when an application is not in production.
10398 */
10399export declare function ɵpublishGlobalUtil(name: string, fn: Function): void;
10400
10401export declare function ɵqud(flags: ɵNodeFlags, id: number, bindings: {
10402 [propName: string]: ɵQueryBindingType;
10403}): NodeDef;
10404
10405export declare const enum ɵQueryBindingType {
10406 First = 0,
10407 All = 1
10408}
10409
10410export declare const enum ɵQueryValueType {
10411 ElementRef = 0,
10412 RenderElement = 1,
10413 TemplateRef = 2,
10414 ViewContainerRef = 3,
10415 Provider = 4
10416}
10417
10418export declare class ɵReflectionCapabilities implements PlatformReflectionCapabilities {
10419 private _reflect;
10420 constructor(reflect?: any);
10421 isReflectionEnabled(): boolean;
10422 factory<T>(t: Type<T>): (args: any[]) => T;
10423 private _ownParameters;
10424 parameters(type: Type<any>): any[][];
10425 private _ownAnnotations;
10426 annotations(typeOrFunc: Type<any>): any[];
10427 private _ownPropMetadata;
10428 propMetadata(typeOrFunc: any): {
10429 [key: string]: any[];
10430 };
10431 ownPropMetadata(typeOrFunc: any): {
10432 [key: string]: any[];
10433 };
10434 hasLifecycleHook(type: any, lcProperty: string): boolean;
10435 guards(type: any): {
10436 [key: string]: any;
10437 };
10438 getter(name: string): ɵGetterFn;
10439 setter(name: string): ɵSetterFn;
10440 method(name: string): ɵMethodFn;
10441 importUri(type: any): string;
10442 resourceUri(type: any): string;
10443 resolveIdentifier(name: string, moduleUrl: string, members: string[], runtime: any): any;
10444 resolveEnum(enumIdentifier: any, name: string): any;
10445}
10446
10447/**
10448 * Register locale data to be used internally by Angular. See the
10449 * ["I18n guide"](guide/i18n#i18n-pipes) to know how to import additional locale data.
10450 *
10451 * The signature `registerLocaleData(data: any, extraData?: any)` is deprecated since v5.1
10452 */
10453export declare function ɵregisterLocaleData(data: any, localeId?: string | any, extraData?: any): void;
10454
10455/**
10456 * Registers a loaded module. Should only be called from generated NgModuleFactory code.
10457 * @publicApi
10458 */
10459export declare function ɵregisterModuleFactory(id: string, factory: NgModuleFactory<any>): void;
10460
10461export declare function ɵregisterNgModuleType(ngModuleType: ɵNgModuleType): void;
10462
10463/**
10464 * Render3 implementation of {@link viewEngine_ComponentFactory}.
10465 */
10466export declare class ɵRender3ComponentFactory<T> extends ComponentFactory<T> {
10467 private componentDef;
10468 private ngModule?;
10469 selector: string;
10470 componentType: Type<any>;
10471 ngContentSelectors: string[];
10472 isBoundToModule: boolean;
10473 get inputs(): {
10474 propName: string;
10475 templateName: string;
10476 }[];
10477 get outputs(): {
10478 propName: string;
10479 templateName: string;
10480 }[];
10481 /**
10482 * @param componentDef The component definition.
10483 * @param ngModule The NgModuleRef to which the factory is bound.
10484 */
10485 constructor(componentDef: ɵComponentDef<any>, ngModule?: NgModuleRef<any> | undefined);
10486 create(injector: Injector, projectableNodes?: any[][] | undefined, rootSelectorOrNode?: any, ngModule?: NgModuleRef<any> | undefined): ComponentRef<T>;
10487}
10488
10489/**
10490 * Represents an instance of a Component created via a {@link ComponentFactory}.
10491 *
10492 * `ComponentRef` provides access to the Component Instance as well other objects related to this
10493 * Component Instance and allows you to destroy the Component Instance via the {@link #destroy}
10494 * method.
10495 *
10496 */
10497export declare class ɵRender3ComponentRef<T> extends ComponentRef<T> {
10498 location: ElementRef;
10499 private _rootLView;
10500 private _tNode;
10501 destroyCbs: (() => void)[] | null;
10502 instance: T;
10503 hostView: ViewRef_2<T>;
10504 changeDetectorRef: ChangeDetectorRef;
10505 componentType: Type<T>;
10506 constructor(componentType: Type<T>, instance: T, location: ElementRef, _rootLView: ɵangular_packages_core_core_bp, _tNode: ɵangular_packages_core_core_bf | TContainerNode | TElementContainerNode);
10507 get injector(): Injector;
10508 destroy(): void;
10509 onDestroy(callback: () => void): void;
10510}
10511
10512export declare class ɵRender3NgModuleRef<T> extends NgModuleRef<T> implements InternalNgModuleRef<T> {
10513 _parent: Injector | null;
10514 _bootstrapComponents: Type<any>[];
10515 _r3Injector: R3Injector;
10516 injector: Injector;
10517 instance: T;
10518 destroyCbs: (() => void)[] | null;
10519 readonly componentFactoryResolver: ComponentFactoryResolver_2;
10520 constructor(ngModuleType: Type<T>, _parent: Injector | null);
10521 get(token: any, notFoundValue?: any, injectFlags?: InjectFlags): any;
10522 destroy(): void;
10523 onDestroy(callback: () => void): void;
10524}
10525
10526/**
10527 * Bootstraps a Component into an existing host element and returns an instance
10528 * of the component.
10529 *
10530 * Use this function to bootstrap a component into the DOM tree. Each invocation
10531 * of this function will create a separate tree of components, injectors and
10532 * change detection cycles and lifetimes. To dynamically insert a new component
10533 * into an existing tree such that it shares the same injection, change detection
10534 * and object lifetime, use {@link ViewContainer#createComponent}.
10535 *
10536 * @param componentType Component to bootstrap
10537 * @param options Optional parameters which control bootstrapping
10538 */
10539export declare function ɵrenderComponent<T>(componentType: ɵComponentType<T> | Type<T>, opts?: CreateComponentOptions): T;
10540
10541/**
10542 * Flags passed into template functions to determine which blocks (i.e. creation, update)
10543 * should be executed.
10544 *
10545 * Typically, a template runs both the creation block and the update block on initialization and
10546 * subsequent runs only execute the update block. However, dynamically created views require that
10547 * the creation block be executed separately from the update block (for backwards compat).
10548 */
10549export declare const enum ɵRenderFlags {
10550 Create = 1,
10551 Update = 2
10552}
10553
10554export declare function ɵresetCompiledComponents(): void;
10555
10556export declare function ɵresetJitOptions(): void;
10557
10558/**
10559 * Used to resolve resource URLs on `@Component` when used with JIT compilation.
10560 *
10561 * Example:
10562 * ```
10563 * @Component({
10564 * selector: 'my-comp',
10565 * templateUrl: 'my-comp.html', // This requires asynchronous resolution
10566 * })
10567 * class MyComponent{
10568 * }
10569 *
10570 * // Calling `renderComponent` will fail because `renderComponent` is a synchronous process
10571 * // and `MyComponent`'s `@Component.templateUrl` needs to be resolved asynchronously.
10572 *
10573 * // Calling `resolveComponentResources()` will resolve `@Component.templateUrl` into
10574 * // `@Component.template`, which allows `renderComponent` to proceed in a synchronous manner.
10575 *
10576 * // Use browser's `fetch()` function as the default resource resolution strategy.
10577 * resolveComponentResources(fetch).then(() => {
10578 * // After resolution all URLs have been converted into `template` strings.
10579 * renderComponent(MyComponent);
10580 * });
10581 *
10582 * ```
10583 *
10584 * NOTE: In AOT the resolution happens during compilation, and so there should be no need
10585 * to call this method outside JIT mode.
10586 *
10587 * @param resourceResolver a function which is responsible for returning a `Promise` to the
10588 * contents of the resolved URL. Browser's `fetch()` method is a good default implementation.
10589 */
10590export declare function ɵresolveComponentResources(resourceResolver: (url: string) => (Promise<string | {
10591 text(): Promise<string>;
10592}>)): Promise<void>;
10593
10594/**
10595 * Marker interface for a value that's safe to use as HTML.
10596 *
10597 * @publicApi
10598 */
10599export declare interface ɵSafeHtml extends ɵSafeValue {
10600}
10601
10602/**
10603 * Marker interface for a value that's safe to use as a URL to load executable code from.
10604 *
10605 * @publicApi
10606 */
10607export declare interface ɵSafeResourceUrl extends ɵSafeValue {
10608}
10609
10610/**
10611 * Marker interface for a value that's safe to use as JavaScript.
10612 *
10613 * @publicApi
10614 */
10615export declare interface ɵSafeScript extends ɵSafeValue {
10616}
10617
10618/**
10619 * Marker interface for a value that's safe to use as style (CSS).
10620 *
10621 * @publicApi
10622 */
10623export declare interface ɵSafeStyle extends ɵSafeValue {
10624}
10625
10626/**
10627 * Marker interface for a value that's safe to use as a URL linking to a document.
10628 *
10629 * @publicApi
10630 */
10631export declare interface ɵSafeUrl extends ɵSafeValue {
10632}
10633
10634/**
10635 * Marker interface for a value that's safe to use in a particular context.
10636 *
10637 * @publicApi
10638 */
10639export declare interface ɵSafeValue {
10640}
10641
10642/**
10643 * Adds decorator, constructor, and property metadata to a given type via static metadata fields
10644 * on the type.
10645 *
10646 * These metadata fields can later be read with Angular's `ReflectionCapabilities` API.
10647 *
10648 * Calls to `setClassMetadata` can be marked as pure, resulting in the metadata assignments being
10649 * tree-shaken away during production builds.
10650 */
10651export declare function ɵsetClassMetadata(type: Type<any>, decorators: any[] | null, ctorParameters: (() => any[]) | null, propDecorators: {
10652 [field: string]: any;
10653} | null): void;
10654
10655export declare function ɵsetCurrentInjector(injector: Injector | null | undefined): Injector | undefined | null;
10656
10657
10658/**
10659 * Tell ivy what the `document` is for this platform.
10660 *
10661 * It is only necessary to call this if the current platform is not a browser.
10662 *
10663 * @param document The object representing the global `document` in this environment.
10664 */
10665export declare function ɵsetDocument(document: Document | undefined): void;
10666
10667/**
10668 * Sets the locale id that will be used for translations and ICU expressions.
10669 * This is the ivy version of `LOCALE_ID` that was defined as an injection token for the view engine
10670 * but is now defined as a global value.
10671 *
10672 * @param localeId
10673 */
10674export declare function ɵsetLocaleId(localeId: string): void;
10675
10676
10677export declare type ɵSetterFn = (obj: any, value: any) => void;
10678
10679/** Store a value in the `data` at a given `index`. */
10680export declare function ɵstore<T>(tView: TView, lView: ɵangular_packages_core_core_bp, index: number, value: T): void;
10681
10682
10683export declare function ɵstringify(token: any): string;
10684
10685export declare const ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__: typeof injectChangeDetectorRef;
10686
10687export declare const ɵSWITCH_COMPILE_COMPONENT__POST_R3__: typeof ɵcompileComponent;
10688
10689export declare const ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__: typeof ɵcompileDirective;
10690
10691export declare const ɵSWITCH_COMPILE_INJECTABLE__POST_R3__: typeof compileInjectable;
10692
10693export declare const ɵSWITCH_COMPILE_NGMODULE__POST_R3__: typeof ɵcompileNgModule;
10694
10695export declare const ɵSWITCH_COMPILE_PIPE__POST_R3__: typeof ɵcompilePipe;
10696
10697export declare const ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__: typeof injectElementRef;
10698
10699
10700export declare const ɵSWITCH_IVY_ENABLED__POST_R3__ = true;
10701
10702export declare const ɵSWITCH_RENDERER2_FACTORY__POST_R3__: typeof injectRenderer2;
10703
10704export declare const ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__: typeof injectTemplateRef;
10705
10706export declare const ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__: typeof injectViewContainerRef;
10707
10708export declare function ɵted(checkIndex: number, ngContentIndex: number | null, staticText: string[]): NodeDef;
10709
10710/**
10711 * Compute the pair of transitive scopes (compilation scope and exported scope) for a given module.
10712 *
10713 * This operation is memoized and the result is cached on the module's definition. This function can
10714 * be called on modules with components that have not fully compiled yet, but the result should not
10715 * be used until they have.
10716 *
10717 * @param moduleType module that transitive scope should be calculated for.
10718 */
10719export declare function ɵtransitiveScopesFor<T>(moduleType: Type<T>): ɵNgModuleTransitiveScopes;
10720
10721/**
10722 * Helper function to remove all the locale data from `LOCALE_DATA`.
10723 */
10724export declare function ɵunregisterLocaleData(): void;
10725
10726export declare function ɵunv(view: ViewData, nodeIdx: number, bindingIdx: number, value: any): any;
10727
10728export declare function ɵunwrapSafeValue(value: ɵSafeValue): string;
10729
10730export declare function ɵunwrapSafeValue<T>(value: T): T;
10731
10732export declare function ɵvid(flags: ɵViewFlags, nodes: NodeDef[], updateDirectives?: null | ViewUpdateFn, updateRenderer?: null | ViewUpdateFn): ɵViewDefinition;
10733
10734export declare interface ɵViewDefinition extends Definition<ViewDefinitionFactory> {
10735 flags: ɵViewFlags;
10736 updateDirectives: ViewUpdateFn;
10737 updateRenderer: ViewUpdateFn;
10738 handleEvent: ViewHandleEventFn;
10739 /**
10740 * Order: Depth first.
10741 * Especially providers are before elements / anchors.
10742 */
10743 nodes: NodeDef[];
10744 /** aggregated NodeFlags for all nodes **/
10745 nodeFlags: ɵNodeFlags;
10746 rootNodeFlags: ɵNodeFlags;
10747 lastRenderRootNode: NodeDef | null;
10748 bindingCount: number;
10749 outputCount: number;
10750 /**
10751 * Binary or of all query ids that are matched by one of the nodes.
10752 * This includes query ids from templates as well.
10753 * Used as a bloom filter.
10754 */
10755 nodeMatchedQueries: number;
10756}
10757
10758/**
10759 * Bitmask for ViewDefinition.flags.
10760 */
10761export declare const enum ɵViewFlags {
10762 None = 0,
10763 OnPush = 2
10764}
10765
10766/**
10767 * Wait on component until it is rendered.
10768 *
10769 * This function returns a `Promise` which is resolved when the component's
10770 * change detection is executed. This is determined by finding the scheduler
10771 * associated with the `component`'s render tree and waiting until the scheduler
10772 * flushes. If nothing is scheduled, the function returns a resolved promise.
10773 *
10774 * Example:
10775 * ```
10776 * await whenRendered(myComponent);
10777 * ```
10778 *
10779 * @param component Component to wait upon
10780 * @returns Promise which resolves when the component is rendered.
10781 */
10782export declare function ɵwhenRendered(component: any): Promise<null>;
10783
10784/**
10785 * Advances to an element for later binding instructions.
10786 *
10787 * Used in conjunction with instructions like {@link property} to act on elements with specified
10788 * indices, for example those created with {@link element} or {@link elementStart}.
10789 *
10790 * ```ts
10791 * (rf: RenderFlags, ctx: any) => {
10792 * if (rf & 1) {
10793 * text(0, 'Hello');
10794 * text(1, 'Goodbye')
10795 * element(2, 'div');
10796 * }
10797 * if (rf & 2) {
10798 * advance(2); // Advance twice to the <div>.
10799 * property('title', 'test');
10800 * }
10801 * }
10802 * ```
10803 * @param delta Number of elements to advance forwards by.
10804 *
10805 * @codeGenApi
10806 */
10807export declare function ɵɵadvance(delta: number): void;
10808
10809/**
10810 * Updates the value of or removes a bound attribute on an Element.
10811 *
10812 * Used in the case of `[attr.title]="value"`
10813 *
10814 * @param name name The name of the attribute.
10815 * @param value value The attribute is removed when value is `null` or `undefined`.
10816 * Otherwise the attribute value is set to the stringified value.
10817 * @param sanitizer An optional function used to sanitize the value.
10818 * @param namespace Optional namespace to use when setting the attribute.
10819 *
10820 * @codeGenApi
10821 */
10822export declare function ɵɵattribute(name: string, value: any, sanitizer?: SanitizerFn | null, namespace?: string): typeof ɵɵattribute;
10823
10824/**
10825 *
10826 * Update an interpolated attribute on an element with single bound value surrounded by text.
10827 *
10828 * Used when the value passed to a property has 1 interpolated value in it:
10829 *
10830 * ```html
10831 * <div attr.title="prefix{{v0}}suffix"></div>
10832 * ```
10833 *
10834 * Its compiled representation is::
10835 *
10836 * ```ts
10837 * ɵɵattributeInterpolate1('title', 'prefix', v0, 'suffix');
10838 * ```
10839 *
10840 * @param attrName The name of the attribute to update
10841 * @param prefix Static value used for concatenation only.
10842 * @param v0 Value checked for change.
10843 * @param suffix Static value used for concatenation only.
10844 * @param sanitizer An optional sanitizer function
10845 * @returns itself, so that it may be chained.
10846 * @codeGenApi
10847 */
10848export declare function ɵɵattributeInterpolate1(attrName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate1;
10849
10850/**
10851 *
10852 * Update an interpolated attribute on an element with 2 bound values surrounded by text.
10853 *
10854 * Used when the value passed to a property has 2 interpolated values in it:
10855 *
10856 * ```html
10857 * <div attr.title="prefix{{v0}}-{{v1}}suffix"></div>
10858 * ```
10859 *
10860 * Its compiled representation is::
10861 *
10862 * ```ts
10863 * ɵɵattributeInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
10864 * ```
10865 *
10866 * @param attrName The name of the attribute to update
10867 * @param prefix Static value used for concatenation only.
10868 * @param v0 Value checked for change.
10869 * @param i0 Static value used for concatenation only.
10870 * @param v1 Value checked for change.
10871 * @param suffix Static value used for concatenation only.
10872 * @param sanitizer An optional sanitizer function
10873 * @returns itself, so that it may be chained.
10874 * @codeGenApi
10875 */
10876export declare function ɵɵattributeInterpolate2(attrName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolate2;
10877
10878/**
10879 *
10880 * Update an interpolated attribute on an element with 3 bound values surrounded by text.
10881 *
10882 * Used when the value passed to a property has 3 interpolated values in it:
10883 *
10884 * ```html
10885 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
10886 * ```
10887 *
10888 * Its compiled representation is::
10889 *
10890 * ```ts
10891 * ɵɵattributeInterpolate3(
10892 * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
10893 * ```
10894 *
10895 * @param attrName The name of the attribute to update
10896 * @param prefix Static value used for concatenation only.
10897 * @param v0 Value checked for change.
10898 * @param i0 Static value used for concatenation only.
10899 * @param v1 Value checked for change.
10900 * @param i1 Static value used for concatenation only.
10901 * @param v2 Value checked for change.
10902 * @param suffix Static value used for concatenation only.
10903 * @param sanitizer An optional sanitizer function
10904 * @returns itself, so that it may be chained.
10905 * @codeGenApi
10906 */
10907export 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;
10908
10909/**
10910 *
10911 * Update an interpolated attribute on an element with 4 bound values surrounded by text.
10912 *
10913 * Used when the value passed to a property has 4 interpolated values in it:
10914 *
10915 * ```html
10916 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
10917 * ```
10918 *
10919 * Its compiled representation is::
10920 *
10921 * ```ts
10922 * ɵɵattributeInterpolate4(
10923 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
10924 * ```
10925 *
10926 * @param attrName The name of the attribute to update
10927 * @param prefix Static value used for concatenation only.
10928 * @param v0 Value checked for change.
10929 * @param i0 Static value used for concatenation only.
10930 * @param v1 Value checked for change.
10931 * @param i1 Static value used for concatenation only.
10932 * @param v2 Value checked for change.
10933 * @param i2 Static value used for concatenation only.
10934 * @param v3 Value checked for change.
10935 * @param suffix Static value used for concatenation only.
10936 * @param sanitizer An optional sanitizer function
10937 * @returns itself, so that it may be chained.
10938 * @codeGenApi
10939 */
10940export 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;
10941
10942/**
10943 *
10944 * Update an interpolated attribute on an element with 5 bound values surrounded by text.
10945 *
10946 * Used when the value passed to a property has 5 interpolated values in it:
10947 *
10948 * ```html
10949 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
10950 * ```
10951 *
10952 * Its compiled representation is::
10953 *
10954 * ```ts
10955 * ɵɵattributeInterpolate5(
10956 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
10957 * ```
10958 *
10959 * @param attrName The name of the attribute to update
10960 * @param prefix Static value used for concatenation only.
10961 * @param v0 Value checked for change.
10962 * @param i0 Static value used for concatenation only.
10963 * @param v1 Value checked for change.
10964 * @param i1 Static value used for concatenation only.
10965 * @param v2 Value checked for change.
10966 * @param i2 Static value used for concatenation only.
10967 * @param v3 Value checked for change.
10968 * @param i3 Static value used for concatenation only.
10969 * @param v4 Value checked for change.
10970 * @param suffix Static value used for concatenation only.
10971 * @param sanitizer An optional sanitizer function
10972 * @returns itself, so that it may be chained.
10973 * @codeGenApi
10974 */
10975export 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;
10976
10977/**
10978 *
10979 * Update an interpolated attribute on an element with 6 bound values surrounded by text.
10980 *
10981 * Used when the value passed to a property has 6 interpolated values in it:
10982 *
10983 * ```html
10984 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
10985 * ```
10986 *
10987 * Its compiled representation is::
10988 *
10989 * ```ts
10990 * ɵɵattributeInterpolate6(
10991 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
10992 * ```
10993 *
10994 * @param attrName The name of the attribute to update
10995 * @param prefix Static value used for concatenation only.
10996 * @param v0 Value checked for change.
10997 * @param i0 Static value used for concatenation only.
10998 * @param v1 Value checked for change.
10999 * @param i1 Static value used for concatenation only.
11000 * @param v2 Value checked for change.
11001 * @param i2 Static value used for concatenation only.
11002 * @param v3 Value checked for change.
11003 * @param i3 Static value used for concatenation only.
11004 * @param v4 Value checked for change.
11005 * @param i4 Static value used for concatenation only.
11006 * @param v5 Value checked for change.
11007 * @param suffix Static value used for concatenation only.
11008 * @param sanitizer An optional sanitizer function
11009 * @returns itself, so that it may be chained.
11010 * @codeGenApi
11011 */
11012export 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;
11013
11014/**
11015 *
11016 * Update an interpolated attribute on an element with 7 bound values surrounded by text.
11017 *
11018 * Used when the value passed to a property has 7 interpolated values in it:
11019 *
11020 * ```html
11021 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
11022 * ```
11023 *
11024 * Its compiled representation is::
11025 *
11026 * ```ts
11027 * ɵɵattributeInterpolate7(
11028 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
11029 * ```
11030 *
11031 * @param attrName The name of the attribute to update
11032 * @param prefix Static value used for concatenation only.
11033 * @param v0 Value checked for change.
11034 * @param i0 Static value used for concatenation only.
11035 * @param v1 Value checked for change.
11036 * @param i1 Static value used for concatenation only.
11037 * @param v2 Value checked for change.
11038 * @param i2 Static value used for concatenation only.
11039 * @param v3 Value checked for change.
11040 * @param i3 Static value used for concatenation only.
11041 * @param v4 Value checked for change.
11042 * @param i4 Static value used for concatenation only.
11043 * @param v5 Value checked for change.
11044 * @param i5 Static value used for concatenation only.
11045 * @param v6 Value checked for change.
11046 * @param suffix Static value used for concatenation only.
11047 * @param sanitizer An optional sanitizer function
11048 * @returns itself, so that it may be chained.
11049 * @codeGenApi
11050 */
11051export 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;
11052
11053/**
11054 *
11055 * Update an interpolated attribute on an element with 8 bound values surrounded by text.
11056 *
11057 * Used when the value passed to a property has 8 interpolated values in it:
11058 *
11059 * ```html
11060 * <div attr.title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
11061 * ```
11062 *
11063 * Its compiled representation is::
11064 *
11065 * ```ts
11066 * ɵɵattributeInterpolate8(
11067 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
11068 * ```
11069 *
11070 * @param attrName The name of the attribute to update
11071 * @param prefix Static value used for concatenation only.
11072 * @param v0 Value checked for change.
11073 * @param i0 Static value used for concatenation only.
11074 * @param v1 Value checked for change.
11075 * @param i1 Static value used for concatenation only.
11076 * @param v2 Value checked for change.
11077 * @param i2 Static value used for concatenation only.
11078 * @param v3 Value checked for change.
11079 * @param i3 Static value used for concatenation only.
11080 * @param v4 Value checked for change.
11081 * @param i4 Static value used for concatenation only.
11082 * @param v5 Value checked for change.
11083 * @param i5 Static value used for concatenation only.
11084 * @param v6 Value checked for change.
11085 * @param i6 Static value used for concatenation only.
11086 * @param v7 Value checked for change.
11087 * @param suffix Static value used for concatenation only.
11088 * @param sanitizer An optional sanitizer function
11089 * @returns itself, so that it may be chained.
11090 * @codeGenApi
11091 */
11092export 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;
11093
11094/**
11095 * Update an interpolated attribute on an element with 9 or more bound values surrounded by text.
11096 *
11097 * Used when the number of interpolated values exceeds 8.
11098 *
11099 * ```html
11100 * <div
11101 * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
11102 * ```
11103 *
11104 * Its compiled representation is::
11105 *
11106 * ```ts
11107 * ɵɵattributeInterpolateV(
11108 * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
11109 * 'suffix']);
11110 * ```
11111 *
11112 * @param attrName The name of the attribute to update.
11113 * @param values The collection of values and the strings in-between those values, beginning with
11114 * a string prefix and ending with a string suffix.
11115 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
11116 * @param sanitizer An optional sanitizer function
11117 * @returns itself, so that it may be chained.
11118 * @codeGenApi
11119 */
11120export declare function ɵɵattributeInterpolateV(attrName: string, values: any[], sanitizer?: SanitizerFn, namespace?: string): typeof ɵɵattributeInterpolateV;
11121
11122/**
11123 * Update class bindings using an object literal or class-string on an element.
11124 *
11125 * This instruction is meant to apply styling via the `[class]="exp"` template bindings.
11126 * When classes are applied to the element they will then be updated with
11127 * respect to any styles/classes set via `classProp`. If any
11128 * classes are set to falsy then they will be removed from the element.
11129 *
11130 * Note that the styling instruction will not be applied until `stylingApply` is called.
11131 * Note that this will the provided classMap value to the host element if this function is called
11132 * within a host binding.
11133 *
11134 * @param classes A key/value map or string of CSS classes that will be added to the
11135 * given element. Any missing classes (that have already been applied to the element
11136 * beforehand) will be removed (unset) from the element's list of CSS classes.
11137 *
11138 * @codeGenApi
11139 */
11140export declare function ɵɵclassMap(classes: {
11141 [className: string]: boolean | undefined | null;
11142} | string | undefined | null): void;
11143
11144
11145/**
11146 *
11147 * Update an interpolated class on an element with single bound value surrounded by text.
11148 *
11149 * Used when the value passed to a property has 1 interpolated value in it:
11150 *
11151 * ```html
11152 * <div class="prefix{{v0}}suffix"></div>
11153 * ```
11154 *
11155 * Its compiled representation is:
11156 *
11157 * ```ts
11158 * ɵɵclassMapInterpolate1('prefix', v0, 'suffix');
11159 * ```
11160 *
11161 * @param prefix Static value used for concatenation only.
11162 * @param v0 Value checked for change.
11163 * @param suffix Static value used for concatenation only.
11164 * @codeGenApi
11165 */
11166export declare function ɵɵclassMapInterpolate1(prefix: string, v0: any, suffix: string): void;
11167
11168/**
11169 *
11170 * Update an interpolated class on an element with 2 bound values surrounded by text.
11171 *
11172 * Used when the value passed to a property has 2 interpolated values in it:
11173 *
11174 * ```html
11175 * <div class="prefix{{v0}}-{{v1}}suffix"></div>
11176 * ```
11177 *
11178 * Its compiled representation is:
11179 *
11180 * ```ts
11181 * ɵɵclassMapInterpolate2('prefix', v0, '-', v1, 'suffix');
11182 * ```
11183 *
11184 * @param prefix Static value used for concatenation only.
11185 * @param v0 Value checked for change.
11186 * @param i0 Static value used for concatenation only.
11187 * @param v1 Value checked for change.
11188 * @param suffix Static value used for concatenation only.
11189 * @codeGenApi
11190 */
11191export declare function ɵɵclassMapInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): void;
11192
11193/**
11194 *
11195 * Update an interpolated class on an element with 3 bound values surrounded by text.
11196 *
11197 * Used when the value passed to a property has 3 interpolated values in it:
11198 *
11199 * ```html
11200 * <div class="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
11201 * ```
11202 *
11203 * Its compiled representation is:
11204 *
11205 * ```ts
11206 * ɵɵclassMapInterpolate3(
11207 * 'prefix', v0, '-', v1, '-', v2, 'suffix');
11208 * ```
11209 *
11210 * @param prefix Static value used for concatenation only.
11211 * @param v0 Value checked for change.
11212 * @param i0 Static value used for concatenation only.
11213 * @param v1 Value checked for change.
11214 * @param i1 Static value used for concatenation only.
11215 * @param v2 Value checked for change.
11216 * @param suffix Static value used for concatenation only.
11217 * @codeGenApi
11218 */
11219export declare function ɵɵclassMapInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): void;
11220
11221/**
11222 *
11223 * Update an interpolated class on an element with 4 bound values surrounded by text.
11224 *
11225 * Used when the value passed to a property has 4 interpolated values in it:
11226 *
11227 * ```html
11228 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
11229 * ```
11230 *
11231 * Its compiled representation is:
11232 *
11233 * ```ts
11234 * ɵɵclassMapInterpolate4(
11235 * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
11236 * ```
11237 *
11238 * @param prefix Static value used for concatenation only.
11239 * @param v0 Value checked for change.
11240 * @param i0 Static value used for concatenation only.
11241 * @param v1 Value checked for change.
11242 * @param i1 Static value used for concatenation only.
11243 * @param v2 Value checked for change.
11244 * @param i2 Static value used for concatenation only.
11245 * @param v3 Value checked for change.
11246 * @param suffix Static value used for concatenation only.
11247 * @codeGenApi
11248 */
11249export declare function ɵɵclassMapInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): void;
11250
11251/**
11252 *
11253 * Update an interpolated class on an element with 5 bound values surrounded by text.
11254 *
11255 * Used when the value passed to a property has 5 interpolated values in it:
11256 *
11257 * ```html
11258 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
11259 * ```
11260 *
11261 * Its compiled representation is:
11262 *
11263 * ```ts
11264 * ɵɵclassMapInterpolate5(
11265 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
11266 * ```
11267 *
11268 * @param prefix Static value used for concatenation only.
11269 * @param v0 Value checked for change.
11270 * @param i0 Static value used for concatenation only.
11271 * @param v1 Value checked for change.
11272 * @param i1 Static value used for concatenation only.
11273 * @param v2 Value checked for change.
11274 * @param i2 Static value used for concatenation only.
11275 * @param v3 Value checked for change.
11276 * @param i3 Static value used for concatenation only.
11277 * @param v4 Value checked for change.
11278 * @param suffix Static value used for concatenation only.
11279 * @codeGenApi
11280 */
11281export 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;
11282
11283/**
11284 *
11285 * Update an interpolated class on an element with 6 bound values surrounded by text.
11286 *
11287 * Used when the value passed to a property has 6 interpolated values in it:
11288 *
11289 * ```html
11290 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
11291 * ```
11292 *
11293 * Its compiled representation is:
11294 *
11295 * ```ts
11296 * ɵɵclassMapInterpolate6(
11297 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
11298 * ```
11299 *
11300 * @param prefix Static value used for concatenation only.
11301 * @param v0 Value checked for change.
11302 * @param i0 Static value used for concatenation only.
11303 * @param v1 Value checked for change.
11304 * @param i1 Static value used for concatenation only.
11305 * @param v2 Value checked for change.
11306 * @param i2 Static value used for concatenation only.
11307 * @param v3 Value checked for change.
11308 * @param i3 Static value used for concatenation only.
11309 * @param v4 Value checked for change.
11310 * @param i4 Static value used for concatenation only.
11311 * @param v5 Value checked for change.
11312 * @param suffix Static value used for concatenation only.
11313 * @codeGenApi
11314 */
11315export 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;
11316
11317/**
11318 *
11319 * Update an interpolated class on an element with 7 bound values surrounded by text.
11320 *
11321 * Used when the value passed to a property has 7 interpolated values in it:
11322 *
11323 * ```html
11324 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
11325 * ```
11326 *
11327 * Its compiled representation is:
11328 *
11329 * ```ts
11330 * ɵɵclassMapInterpolate7(
11331 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
11332 * ```
11333 *
11334 * @param prefix Static value used for concatenation only.
11335 * @param v0 Value checked for change.
11336 * @param i0 Static value used for concatenation only.
11337 * @param v1 Value checked for change.
11338 * @param i1 Static value used for concatenation only.
11339 * @param v2 Value checked for change.
11340 * @param i2 Static value used for concatenation only.
11341 * @param v3 Value checked for change.
11342 * @param i3 Static value used for concatenation only.
11343 * @param v4 Value checked for change.
11344 * @param i4 Static value used for concatenation only.
11345 * @param v5 Value checked for change.
11346 * @param i5 Static value used for concatenation only.
11347 * @param v6 Value checked for change.
11348 * @param suffix Static value used for concatenation only.
11349 * @codeGenApi
11350 */
11351export 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;
11352
11353/**
11354 *
11355 * Update an interpolated class on an element with 8 bound values surrounded by text.
11356 *
11357 * Used when the value passed to a property has 8 interpolated values in it:
11358 *
11359 * ```html
11360 * <div class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
11361 * ```
11362 *
11363 * Its compiled representation is:
11364 *
11365 * ```ts
11366 * ɵɵclassMapInterpolate8(
11367 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
11368 * ```
11369 *
11370 * @param prefix Static value used for concatenation only.
11371 * @param v0 Value checked for change.
11372 * @param i0 Static value used for concatenation only.
11373 * @param v1 Value checked for change.
11374 * @param i1 Static value used for concatenation only.
11375 * @param v2 Value checked for change.
11376 * @param i2 Static value used for concatenation only.
11377 * @param v3 Value checked for change.
11378 * @param i3 Static value used for concatenation only.
11379 * @param v4 Value checked for change.
11380 * @param i4 Static value used for concatenation only.
11381 * @param v5 Value checked for change.
11382 * @param i5 Static value used for concatenation only.
11383 * @param v6 Value checked for change.
11384 * @param i6 Static value used for concatenation only.
11385 * @param v7 Value checked for change.
11386 * @param suffix Static value used for concatenation only.
11387 * @codeGenApi
11388 */
11389export 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;
11390
11391/**
11392 * Update an interpolated class on an element with 9 or more bound values surrounded by text.
11393 *
11394 * Used when the number of interpolated values exceeds 8.
11395 *
11396 * ```html
11397 * <div
11398 * class="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
11399 * ```
11400 *
11401 * Its compiled representation is:
11402 *
11403 * ```ts
11404 * ɵɵclassMapInterpolateV(
11405 * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
11406 * 'suffix']);
11407 * ```
11408 *.
11409 * @param values The collection of values and the strings in-between those values, beginning with
11410 * a string prefix and ending with a string suffix.
11411 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
11412 * @codeGenApi
11413 */
11414export declare function ɵɵclassMapInterpolateV(values: any[]): void;
11415
11416/**
11417 * Update a class binding on an element with the provided value.
11418 *
11419 * This instruction is meant to handle the `[class.foo]="exp"` case and,
11420 * therefore, the class binding itself must already be allocated using
11421 * `styling` within the creation block.
11422 *
11423 * @param prop A valid CSS class (only one).
11424 * @param value A true/false value which will turn the class on or off.
11425 *
11426 * Note that this will apply the provided class value to the host element if this function
11427 * is called within a host binding function.
11428 *
11429 * @codeGenApi
11430 */
11431export declare function ɵɵclassProp(className: string, value: boolean | undefined | null): typeof ɵɵclassProp;
11432
11433/**
11434 * @codeGenApi
11435 */
11436export declare type ɵɵComponentDefWithMeta<T, Selector extends String, ExportAs extends string[], InputMap extends {
11437 [key: string]: string;
11438}, OutputMap extends {
11439 [key: string]: string;
11440}, QueryFields extends string[], NgContentSelectors extends string[]> = ɵComponentDef<T>;
11441
11442/**
11443 * Registers a QueryList, associated with a content query, for later refresh (part of a view
11444 * refresh).
11445 *
11446 * @param directiveIndex Current directive index
11447 * @param predicate The type for which the query will search
11448 * @param descend Whether or not to descend into children
11449 * @param read What to save in the query
11450 * @returns QueryList<T>
11451 *
11452 * @codeGenApi
11453 */
11454export declare function ɵɵcontentQuery<T>(directiveIndex: number, predicate: Type<any> | string[], descend: boolean, read?: any): void;
11455
11456/**
11457 * Copies the fields not handled by the `ɵɵInheritDefinitionFeature` from the supertype of a
11458 * definition.
11459 *
11460 * This exists primarily to support ngcc migration of an existing View Engine pattern, where an
11461 * entire decorator is inherited from a parent to a child class. When ngcc detects this case, it
11462 * generates a skeleton definition on the child class, and applies this feature.
11463 *
11464 * The `ɵɵCopyDefinitionFeature` then copies any needed fields from the parent class' definition,
11465 * including things like the component template function.
11466 *
11467 * @param definition The definition of a child class which inherits from a parent class with its
11468 * own definition.
11469 *
11470 * @codeGenApi
11471 */
11472export declare function ɵɵCopyDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void;
11473
11474/**
11475 * Create a component definition object.
11476 *
11477 *
11478 * # Example
11479 * ```
11480 * class MyDirective {
11481 * // Generated by Angular Template Compiler
11482 * // [Symbol] syntax will not be supported by TypeScript until v2.7
11483 * static ɵcmp = defineComponent({
11484 * ...
11485 * });
11486 * }
11487 * ```
11488 * @codeGenApi
11489 */
11490export declare function ɵɵdefineComponent<T>(componentDefinition: {
11491 /**
11492 * Directive type, needed to configure the injector.
11493 */
11494 type: Type<T>;
11495 /** The selectors that will be used to match nodes to this component. */
11496 selectors?: ɵCssSelectorList;
11497 /**
11498 * The number of nodes, local refs, and pipes in this component template.
11499 *
11500 * Used to calculate the length of this component's LView array, so we
11501 * can pre-fill the array and set the binding start index.
11502 */
11503 decls: number;
11504 /**
11505 * The number of bindings in this component template (including pure fn bindings).
11506 *
11507 * Used to calculate the length of this component's LView array, so we
11508 * can pre-fill the array and set the host binding start index.
11509 */
11510 vars: number;
11511 /**
11512 * A map of input names.
11513 *
11514 * The format is in: `{[actualPropertyName: string]:(string|[string, string])}`.
11515 *
11516 * Given:
11517 * ```
11518 * class MyComponent {
11519 * @Input()
11520 * publicInput1: string;
11521 *
11522 * @Input('publicInput2')
11523 * declaredInput2: string;
11524 * }
11525 * ```
11526 *
11527 * is described as:
11528 * ```
11529 * {
11530 * publicInput1: 'publicInput1',
11531 * declaredInput2: ['publicInput2', 'declaredInput2'],
11532 * }
11533 * ```
11534 *
11535 * Which the minifier may translate to:
11536 * ```
11537 * {
11538 * minifiedPublicInput1: 'publicInput1',
11539 * minifiedDeclaredInput2: ['publicInput2', 'declaredInput2'],
11540 * }
11541 * ```
11542 *
11543 * This allows the render to re-construct the minified, public, and declared names
11544 * of properties.
11545 *
11546 * NOTE:
11547 * - Because declared and public name are usually same we only generate the array
11548 * `['public', 'declared']` format when they differ.
11549 * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has
11550 * inconsistent behavior in that it uses declared names rather than minified or public. For
11551 * this reason `NgOnChanges` will be deprecated and removed in future version and this
11552 * API will be simplified to be consistent with `output`.
11553 */
11554 inputs?: {
11555 [P in keyof T]?: string | [string, string];
11556 };
11557 /**
11558 * A map of output names.
11559 *
11560 * The format is in: `{[actualPropertyName: string]:string}`.
11561 *
11562 * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`.
11563 *
11564 * This allows the render to re-construct the minified and non-minified names
11565 * of properties.
11566 */
11567 outputs?: {
11568 [P in keyof T]?: string;
11569 };
11570 /**
11571 * Function executed by the parent template to allow child directive to apply host bindings.
11572 */
11573 hostBindings?: HostBindingsFunction<T>;
11574 /**
11575 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
11576 *
11577 * Used to calculate the length of the component's LView array, so we
11578 * can pre-fill the array and set the host binding start index.
11579 */
11580 hostVars?: number;
11581 /**
11582 * Assign static attribute values to a host element.
11583 *
11584 * This property will assign static attribute values as well as class and style
11585 * values to a host element. Since attribute values can consist of different types of values, the
11586 * `hostAttrs` array must include the values in the following format:
11587 *
11588 * attrs = [
11589 * // static attributes (like `title`, `name`, `id`...)
11590 * attr1, value1, attr2, value,
11591 *
11592 * // a single namespace value (like `x:id`)
11593 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
11594 *
11595 * // another single namespace value (like `x:name`)
11596 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
11597 *
11598 * // a series of CSS classes that will be applied to the element (no spaces)
11599 * CLASSES_MARKER, class1, class2, class3,
11600 *
11601 * // a series of CSS styles (property + value) that will be applied to the element
11602 * STYLES_MARKER, prop1, value1, prop2, value2
11603 * ]
11604 *
11605 * All non-class and non-style attributes must be defined at the start of the list
11606 * first before all class and style values are set. When there is a change in value
11607 * type (like when classes and styles are introduced) a marker must be used to separate
11608 * the entries. The marker values themselves are set via entries found in the
11609 * [AttributeMarker] enum.
11610 */
11611 hostAttrs?: TAttributes;
11612 /**
11613 * Function to create instances of content queries associated with a given directive.
11614 */
11615 contentQueries?: ContentQueriesFunction<T>;
11616 /**
11617 * Defines the name that can be used in the template to assign this directive to a variable.
11618 *
11619 * See: {@link Directive.exportAs}
11620 */
11621 exportAs?: string[];
11622 /**
11623 * Template function use for rendering DOM.
11624 *
11625 * This function has following structure.
11626 *
11627 * ```
11628 * function Template<T>(ctx:T, creationMode: boolean) {
11629 * if (creationMode) {
11630 * // Contains creation mode instructions.
11631 * }
11632 * // Contains binding update instructions
11633 * }
11634 * ```
11635 *
11636 * Common instructions are:
11637 * Creation mode instructions:
11638 * - `elementStart`, `elementEnd`
11639 * - `text`
11640 * - `container`
11641 * - `listener`
11642 *
11643 * Binding update instructions:
11644 * - `bind`
11645 * - `elementAttribute`
11646 * - `elementProperty`
11647 * - `elementClass`
11648 * - `elementStyle`
11649 *
11650 */
11651 template: ComponentTemplate<T>;
11652 /**
11653 * Constants for the nodes in the component's view.
11654 * Includes attribute arrays, local definition arrays etc.
11655 */
11656 consts?: TConstants;
11657 /**
11658 * An array of `ngContent[selector]` values that were found in the template.
11659 */
11660 ngContentSelectors?: string[];
11661 /**
11662 * Additional set of instructions specific to view query processing. This could be seen as a
11663 * set of instruction to be inserted into the template function.
11664 *
11665 * Query-related instructions need to be pulled out to a specific function as a timing of
11666 * execution is different as compared to all other instructions (after change detection hooks but
11667 * before view hooks).
11668 */
11669 viewQuery?: ViewQueriesFunction<T> | null;
11670 /**
11671 * A list of optional features to apply.
11672 *
11673 * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}
11674 */
11675 features?: ComponentDefFeature[];
11676 /**
11677 * Defines template and style encapsulation options available for Component's {@link Component}.
11678 */
11679 encapsulation?: ViewEncapsulation;
11680 /**
11681 * Defines arbitrary developer-defined data to be stored on a renderer instance.
11682 * This is useful for renderers that delegate to other renderers.
11683 *
11684 * see: animation
11685 */
11686 data?: {
11687 [kind: string]: any;
11688 };
11689 /**
11690 * A set of styles that the component needs to be present for component to render correctly.
11691 */
11692 styles?: string[];
11693 /**
11694 * The strategy that the default change detector uses to detect changes.
11695 * When set, takes effect the next time change detection is triggered.
11696 */
11697 changeDetection?: ChangeDetectionStrategy;
11698 /**
11699 * Registry of directives and components that may be found in this component's view.
11700 *
11701 * The property is either an array of `DirectiveDef`s or a function which returns the array of
11702 * `DirectiveDef`s. The function is necessary to be able to support forward declarations.
11703 */
11704 directives?: DirectiveTypesOrFactory | null;
11705 /**
11706 * Registry of pipes that may be found in this component's view.
11707 *
11708 * The property is either an array of `PipeDefs`s or a function which returns the array of
11709 * `PipeDefs`s. The function is necessary to be able to support forward declarations.
11710 */
11711 pipes?: PipeTypesOrFactory | null;
11712 /**
11713 * The set of schemas that declare elements to be allowed in the component's template.
11714 */
11715 schemas?: SchemaMetadata[] | null;
11716}): never;
11717
11718/**
11719 * Create a directive definition object.
11720 *
11721 * # Example
11722 * ```ts
11723 * class MyDirective {
11724 * // Generated by Angular Template Compiler
11725 * // [Symbol] syntax will not be supported by TypeScript until v2.7
11726 * static ɵdir = ɵɵdefineDirective({
11727 * ...
11728 * });
11729 * }
11730 * ```
11731 *
11732 * @codeGenApi
11733 */
11734export declare const ɵɵdefineDirective: <T>(directiveDefinition: {
11735 /**
11736 * Directive type, needed to configure the injector.
11737 */
11738 type: Type<T>;
11739 /** The selectors that will be used to match nodes to this directive. */
11740 selectors?: ɵCssSelectorList | undefined;
11741 /**
11742 * A map of input names.
11743 *
11744 * The format is in: `{[actualPropertyName: string]:(string|[string, string])}`.
11745 *
11746 * Given:
11747 * ```
11748 * class MyComponent {
11749 * @Input()
11750 * publicInput1: string;
11751 *
11752 * @Input('publicInput2')
11753 * declaredInput2: string;
11754 * }
11755 * ```
11756 *
11757 * is described as:
11758 * ```
11759 * {
11760 * publicInput1: 'publicInput1',
11761 * declaredInput2: ['declaredInput2', 'publicInput2'],
11762 * }
11763 * ```
11764 *
11765 * Which the minifier may translate to:
11766 * ```
11767 * {
11768 * minifiedPublicInput1: 'publicInput1',
11769 * minifiedDeclaredInput2: [ 'publicInput2', 'declaredInput2'],
11770 * }
11771 * ```
11772 *
11773 * This allows the render to re-construct the minified, public, and declared names
11774 * of properties.
11775 *
11776 * NOTE:
11777 * - Because declared and public name are usually same we only generate the array
11778 * `['declared', 'public']` format when they differ.
11779 * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has
11780 * inconsistent behavior in that it uses declared names rather than minified or public. For
11781 * this reason `NgOnChanges` will be deprecated and removed in future version and this
11782 * API will be simplified to be consistent with `output`.
11783 */
11784 inputs?: { [P in keyof T]?: string | [string, string] | undefined; } | undefined;
11785 /**
11786 * A map of output names.
11787 *
11788 * The format is in: `{[actualPropertyName: string]:string}`.
11789 *
11790 * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`.
11791 *
11792 * This allows the render to re-construct the minified and non-minified names
11793 * of properties.
11794 */
11795 outputs?: { [P_1 in keyof T]?: string | undefined; } | undefined;
11796 /**
11797 * A list of optional features to apply.
11798 *
11799 * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}, {@link InheritDefinitionFeature}
11800 */
11801 features?: DirectiveDefFeature[] | undefined;
11802 /**
11803 * Function executed by the parent template to allow child directive to apply host bindings.
11804 */
11805 hostBindings?: HostBindingsFunction<T> | undefined;
11806 /**
11807 * The number of bindings in this directive `hostBindings` (including pure fn bindings).
11808 *
11809 * Used to calculate the length of the component's LView array, so we
11810 * can pre-fill the array and set the host binding start index.
11811 */
11812 hostVars?: number | undefined;
11813 /**
11814 * Assign static attribute values to a host element.
11815 *
11816 * This property will assign static attribute values as well as class and style
11817 * values to a host element. Since attribute values can consist of different types of values,
11818 * the `hostAttrs` array must include the values in the following format:
11819 *
11820 * attrs = [
11821 * // static attributes (like `title`, `name`, `id`...)
11822 * attr1, value1, attr2, value,
11823 *
11824 * // a single namespace value (like `x:id`)
11825 * NAMESPACE_MARKER, namespaceUri1, name1, value1,
11826 *
11827 * // another single namespace value (like `x:name`)
11828 * NAMESPACE_MARKER, namespaceUri2, name2, value2,
11829 *
11830 * // a series of CSS classes that will be applied to the element (no spaces)
11831 * CLASSES_MARKER, class1, class2, class3,
11832 *
11833 * // a series of CSS styles (property + value) that will be applied to the element
11834 * STYLES_MARKER, prop1, value1, prop2, value2
11835 * ]
11836 *
11837 * All non-class and non-style attributes must be defined at the start of the list
11838 * first before all class and style values are set. When there is a change in value
11839 * type (like when classes and styles are introduced) a marker must be used to separate
11840 * the entries. The marker values themselves are set via entries found in the
11841 * [AttributeMarker] enum.
11842 */
11843 hostAttrs?: TAttributes | undefined;
11844 /**
11845 * Function to create instances of content queries associated with a given directive.
11846 */
11847 contentQueries?: ContentQueriesFunction<T> | undefined;
11848 /**
11849 * Additional set of instructions specific to view query processing. This could be seen as a
11850 * set of instructions to be inserted into the template function.
11851 */
11852 viewQuery?: ViewQueriesFunction<T> | null | undefined;
11853 /**
11854 * Defines the name that can be used in the template to assign this directive to a variable.
11855 *
11856 * See: {@link Directive.exportAs}
11857 */
11858 exportAs?: string[] | undefined;
11859}) => never;
11860
11861/**
11862 * Construct an `InjectableDef` which defines how a token will be constructed by the DI system, and
11863 * in which injectors (if any) it will be available.
11864 *
11865 * This should be assigned to a static `ɵprov` field on a type, which will then be an
11866 * `InjectableType`.
11867 *
11868 * Options:
11869 * * `providedIn` determines which injectors will include the injectable, by either associating it
11870 * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be
11871 * provided in the `'root'` injector, which will be the application-level injector in most apps.
11872 * * `factory` gives the zero argument function which will create an instance of the injectable.
11873 * The factory can call `inject` to access the `Injector` and request injection of dependencies.
11874 *
11875 * @codeGenApi
11876 * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.
11877 */
11878export declare function ɵɵdefineInjectable<T>(opts: {
11879 token: unknown;
11880 providedIn?: Type<any> | 'root' | 'platform' | 'any' | null;
11881 factory: () => T;
11882}): never;
11883
11884/**
11885 * Construct an `InjectorDef` which configures an injector.
11886 *
11887 * This should be assigned to a static injector def (`ɵinj`) field on a type, which will then be an
11888 * `InjectorType`.
11889 *
11890 * Options:
11891 *
11892 * * `factory`: an `InjectorType` is an instantiable type, so a zero argument `factory` function to
11893 * create the type must be provided. If that factory function needs to inject arguments, it can
11894 * use the `inject` function.
11895 * * `providers`: an optional array of providers to add to the injector. Each provider must
11896 * either have a factory or point to a type which has a `ɵprov` static property (the
11897 * type must be an `InjectableType`).
11898 * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s
11899 * whose providers will also be added to the injector. Locally provided types will override
11900 * providers from imports.
11901 *
11902 * @codeGenApi
11903 */
11904export declare function ɵɵdefineInjector(options: {
11905 factory: () => any;
11906 providers?: any[];
11907 imports?: any[];
11908}): never;
11909
11910/**
11911 * @codeGenApi
11912 */
11913export declare function ɵɵdefineNgModule<T>(def: {
11914 /** Token representing the module. Used by DI. */
11915 type: T;
11916 /** List of components to bootstrap. */
11917 bootstrap?: Type<any>[] | (() => Type<any>[]);
11918 /** List of components, directives, and pipes declared by this module. */
11919 declarations?: Type<any>[] | (() => Type<any>[]);
11920 /** List of modules or `ModuleWithProviders` imported by this module. */
11921 imports?: Type<any>[] | (() => Type<any>[]);
11922 /**
11923 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
11924 * module.
11925 */
11926 exports?: Type<any>[] | (() => Type<any>[]);
11927 /** The set of schemas that declare elements to be allowed in the NgModule. */
11928 schemas?: SchemaMetadata[] | null;
11929 /** Unique ID for the module that is used with `getModuleFactory`. */
11930 id?: string | null;
11931}): never;
11932
11933/**
11934 * Create a pipe definition object.
11935 *
11936 * # Example
11937 * ```
11938 * class MyPipe implements PipeTransform {
11939 * // Generated by Angular Template Compiler
11940 * static ɵpipe = definePipe({
11941 * ...
11942 * });
11943 * }
11944 * ```
11945 * @param pipeDef Pipe definition generated by the compiler
11946 *
11947 * @codeGenApi
11948 */
11949export declare function ɵɵdefinePipe<T>(pipeDef: {
11950 /** Name of the pipe. Used for matching pipes in template to pipe defs. */
11951 name: string;
11952 /** Pipe class reference. Needed to extract pipe lifecycle hooks. */
11953 type: Type<T>;
11954 /** Whether the pipe is pure. */
11955 pure?: boolean;
11956}): never;
11957
11958/**
11959 * @codeGenApi
11960 */
11961export declare type ɵɵDirectiveDefWithMeta<T, Selector extends string, ExportAs extends string[], InputMap extends {
11962 [key: string]: string;
11963}, OutputMap extends {
11964 [key: string]: string;
11965}, QueryFields extends string[]> = ɵDirectiveDef<T>;
11966
11967/**
11968 * Returns the value associated to the given token from the injectors.
11969 *
11970 * `directiveInject` is intended to be used for directive, component and pipe factories.
11971 * All other injection use `inject` which does not walk the node injector tree.
11972 *
11973 * Usage example (in factory function):
11974 *
11975 * ```ts
11976 * class SomeDirective {
11977 * constructor(directive: DirectiveA) {}
11978 *
11979 * static ɵdir = ɵɵdefineDirective({
11980 * type: SomeDirective,
11981 * factory: () => new SomeDirective(ɵɵdirectiveInject(DirectiveA))
11982 * });
11983 * }
11984 * ```
11985 * @param token the type or token to inject
11986 * @param flags Injection flags
11987 * @returns the value from the injector or `null` when not found
11988 *
11989 * @codeGenApi
11990 */
11991export declare function ɵɵdirectiveInject<T>(token: Type<T> | InjectionToken<T>): T;
11992
11993export declare function ɵɵdirectiveInject<T>(token: Type<T> | InjectionToken<T>, flags: InjectFlags): T;
11994
11995/**
11996 * Disables directive matching on element.
11997 *
11998 * * Example:
11999 * ```
12000 * <my-comp my-directive>
12001 * Should match component / directive.
12002 * </my-comp>
12003 * <div ngNonBindable>
12004 * <!-- ɵɵdisableBindings() -->
12005 * <my-comp my-directive>
12006 * Should not match component / directive because we are in ngNonBindable.
12007 * </my-comp>
12008 * <!-- ɵɵenableBindings() -->
12009 * </div>
12010 * ```
12011 *
12012 * @codeGenApi
12013 */
12014export declare function ɵɵdisableBindings(): void;
12015
12016/**
12017 * Creates an empty element using {@link elementStart} and {@link elementEnd}
12018 *
12019 * @param index Index of the element in the data array
12020 * @param name Name of the DOM Node
12021 * @param attrsIndex Index of the element's attributes in the `consts` array.
12022 * @param localRefsIndex Index of the element's local references in the `consts` array.
12023 *
12024 * @codeGenApi
12025 */
12026export declare function ɵɵelement(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): void;
12027
12028/**
12029 * Creates an empty logical container using {@link elementContainerStart}
12030 * and {@link elementContainerEnd}
12031 *
12032 * @param index Index of the element in the LView array
12033 * @param attrsIndex Index of the container attributes in the `consts` array.
12034 * @param localRefsIndex Index of the container's local references in the `consts` array.
12035 *
12036 * @codeGenApi
12037 */
12038export declare function ɵɵelementContainer(index: number, attrsIndex?: number | null, localRefsIndex?: number): void;
12039
12040/**
12041 * Mark the end of the <ng-container>.
12042 *
12043 * @codeGenApi
12044 */
12045export declare function ɵɵelementContainerEnd(): void;
12046
12047/**
12048 * Creates a logical container for other nodes (<ng-container>) backed by a comment node in the DOM.
12049 * The instruction must later be followed by `elementContainerEnd()` call.
12050 *
12051 * @param index Index of the element in the LView array
12052 * @param attrsIndex Index of the container attributes in the `consts` array.
12053 * @param localRefsIndex Index of the container's local references in the `consts` array.
12054 *
12055 * Even if this instruction accepts a set of attributes no actual attribute values are propagated to
12056 * the DOM (as a comment node can't have attributes). Attributes are here only for directive
12057 * matching purposes and setting initial inputs of directives.
12058 *
12059 * @codeGenApi
12060 */
12061export declare function ɵɵelementContainerStart(index: number, attrsIndex?: number | null, localRefsIndex?: number): void;
12062
12063/**
12064 * Mark the end of the element.
12065 *
12066 * @codeGenApi
12067 */
12068export declare function ɵɵelementEnd(): void;
12069
12070
12071/**
12072 * Create DOM element. The instruction must later be followed by `elementEnd()` call.
12073 *
12074 * @param index Index of the element in the LView array
12075 * @param name Name of the DOM Node
12076 * @param attrsIndex Index of the element's attributes in the `consts` array.
12077 * @param localRefsIndex Index of the element's local references in the `consts` array.
12078 *
12079 * Attributes and localRefs are passed as an array of strings where elements with an even index
12080 * hold an attribute name and elements with an odd index hold an attribute value, ex.:
12081 * ['id', 'warning5', 'class', 'alert']
12082 *
12083 * @codeGenApi
12084 */
12085export declare function ɵɵelementStart(index: number, name: string, attrsIndex?: number | null, localRefsIndex?: number): void;
12086
12087/**
12088 * Enables directive matching on elements.
12089 *
12090 * * Example:
12091 * ```
12092 * <my-comp my-directive>
12093 * Should match component / directive.
12094 * </my-comp>
12095 * <div ngNonBindable>
12096 * <!-- ɵɵdisableBindings() -->
12097 * <my-comp my-directive>
12098 * Should not match component / directive because we are in ngNonBindable.
12099 * </my-comp>
12100 * <!-- ɵɵenableBindings() -->
12101 * </div>
12102 * ```
12103 *
12104 * @codeGenApi
12105 */
12106export declare function ɵɵenableBindings(): void;
12107
12108/**
12109 * @codeGenApi
12110 */
12111export declare type ɵɵFactoryDef<T, CtorDependencies extends CtorDependency[]> = () => T;
12112
12113/**
12114 * Returns the current OpaqueViewState instance.
12115 *
12116 * Used in conjunction with the restoreView() instruction to save a snapshot
12117 * of the current view and restore it when listeners are invoked. This allows
12118 * walking the declaration view tree in listeners to get vars from parent views.
12119 *
12120 * @codeGenApi
12121 */
12122export declare function ɵɵgetCurrentView(): OpaqueViewState;
12123
12124/**
12125 * @codeGenApi
12126 */
12127export declare function ɵɵgetFactoryOf<T>(type: Type<any>): FactoryFn<T> | null;
12128
12129/**
12130 * @codeGenApi
12131 */
12132export declare function ɵɵgetInheritedFactory<T>(type: Type<any>): (type: Type<T>) => T;
12133
12134/**
12135 * Update a property on a host element. Only applies to native node properties, not inputs.
12136 *
12137 * Operates on the element selected by index via the {@link select} instruction.
12138 *
12139 * @param propName Name of property. Because it is going to DOM, this is not subject to
12140 * renaming as part of minification.
12141 * @param value New value to write.
12142 * @param sanitizer An optional function used to sanitize the value.
12143 * @returns This function returns itself so that it may be chained
12144 * (e.g. `property('name', ctx.name)('title', ctx.title)`)
12145 *
12146 * @codeGenApi
12147 */
12148export declare function ɵɵhostProperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵhostProperty;
12149
12150/**
12151 *
12152 * Use this instruction to create a translation block that doesn't contain any placeholder.
12153 * It calls both {@link i18nStart} and {@link i18nEnd} in one instruction.
12154 *
12155 * The translation `message` is the value which is locale specific. The translation string may
12156 * contain placeholders which associate inner elements and sub-templates within the translation.
12157 *
12158 * The translation `message` placeholders are:
12159 * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be
12160 * interpolated into. The placeholder `index` points to the expression binding index. An optional
12161 * `block` that matches the sub-template in which it was declared.
12162 * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning
12163 * and end of DOM element that were embedded in the original translation block. The placeholder
12164 * `index` points to the element index in the template instructions set. An optional `block` that
12165 * matches the sub-template in which it was declared.
12166 * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be
12167 * split up and translated separately in each angular template function. The `index` points to the
12168 * `template` instruction index. A `block` that matches the sub-template in which it was declared.
12169 *
12170 * @param index A unique index of the translation in the static block.
12171 * @param message The translation message.
12172 * @param subTemplateIndex Optional sub-template index in the `message`.
12173 *
12174 * @codeGenApi
12175 */
12176export declare function ɵɵi18n(index: number, message: string, subTemplateIndex?: number): void;
12177
12178/**
12179 * Updates a translation block or an i18n attribute when the bindings have changed.
12180 *
12181 * @param index Index of either {@link i18nStart} (translation block) or {@link i18nAttributes}
12182 * (i18n attribute) on which it should update the content.
12183 *
12184 * @codeGenApi
12185 */
12186export declare function ɵɵi18nApply(index: number): void;
12187
12188/**
12189 * Marks a list of attributes as translatable.
12190 *
12191 * @param index A unique index in the static block
12192 * @param values
12193 *
12194 * @codeGenApi
12195 */
12196export declare function ɵɵi18nAttributes(index: number, values: string[]): void;
12197
12198/**
12199 * Translates a translation block marked by `i18nStart` and `i18nEnd`. It inserts the text/ICU nodes
12200 * into the render tree, moves the placeholder nodes and removes the deleted nodes.
12201 *
12202 * @codeGenApi
12203 */
12204export declare function ɵɵi18nEnd(): void;
12205
12206/**
12207 * Stores the values of the bindings during each update cycle in order to determine if we need to
12208 * update the translated nodes.
12209 *
12210 * @param value The binding's value
12211 * @returns This function returns itself so that it may be chained
12212 * (e.g. `i18nExp(ctx.name)(ctx.title)`)
12213 *
12214 * @codeGenApi
12215 */
12216export declare function ɵɵi18nExp<T>(value: T): typeof ɵɵi18nExp;
12217
12218/**
12219 * Handles message string post-processing for internationalization.
12220 *
12221 * Handles message string post-processing by transforming it from intermediate
12222 * format (that might contain some markers that we need to replace) to the final
12223 * form, consumable by i18nStart instruction. Post processing steps include:
12224 *
12225 * 1. Resolve all multi-value cases (like [�*1:1��#2:1�|�#4:1�|�5�])
12226 * 2. Replace all ICU vars (like "VAR_PLURAL")
12227 * 3. Replace all placeholders used inside ICUs in a form of {PLACEHOLDER}
12228 * 4. Replace all ICU references with corresponding values (like �ICU_EXP_ICU_1�)
12229 * in case multiple ICUs have the same placeholder name
12230 *
12231 * @param message Raw translation string for post processing
12232 * @param replacements Set of replacements that should be applied
12233 *
12234 * @returns Transformed string that can be consumed by i18nStart instruction
12235 *
12236 * @codeGenApi
12237 */
12238export declare function ɵɵi18nPostprocess(message: string, replacements?: {
12239 [key: string]: (string | string[]);
12240}): string;
12241
12242/**
12243 * Marks a block of text as translatable.
12244 *
12245 * The instructions `i18nStart` and `i18nEnd` mark the translation block in the template.
12246 * The translation `message` is the value which is locale specific. The translation string may
12247 * contain placeholders which associate inner elements and sub-templates within the translation.
12248 *
12249 * The translation `message` placeholders are:
12250 * - `�{index}(:{block})�`: *Binding Placeholder*: Marks a location where an expression will be
12251 * interpolated into. The placeholder `index` points to the expression binding index. An optional
12252 * `block` that matches the sub-template in which it was declared.
12253 * - `�#{index}(:{block})�`/`�/#{index}(:{block})�`: *Element Placeholder*: Marks the beginning
12254 * and end of DOM element that were embedded in the original translation block. The placeholder
12255 * `index` points to the element index in the template instructions set. An optional `block` that
12256 * matches the sub-template in which it was declared.
12257 * - `�!{index}(:{block})�`/`�/!{index}(:{block})�`: *Projection Placeholder*: Marks the
12258 * beginning and end of <ng-content> that was embedded in the original translation block.
12259 * The placeholder `index` points to the element index in the template instructions set.
12260 * An optional `block` that matches the sub-template in which it was declared.
12261 * - `�*{index}:{block}�`/`�/*{index}:{block}�`: *Sub-template Placeholder*: Sub-templates must be
12262 * split up and translated separately in each angular template function. The `index` points to the
12263 * `template` instruction index. A `block` that matches the sub-template in which it was declared.
12264 *
12265 * @param index A unique index of the translation in the static block.
12266 * @param message The translation message.
12267 * @param subTemplateIndex Optional sub-template index in the `message`.
12268 *
12269 * @codeGenApi
12270 */
12271export declare function ɵɵi18nStart(index: number, message: string, subTemplateIndex?: number): void;
12272
12273/**
12274 * Merges the definition from a super class to a sub class.
12275 * @param definition The definition that is a SubClass of another directive of component
12276 *
12277 * @codeGenApi
12278 */
12279export declare function ɵɵInheritDefinitionFeature(definition: ɵDirectiveDef<any> | ɵComponentDef<any>): void;
12280
12281/**
12282 * Generated instruction: Injects a token from the currently active injector.
12283 *
12284 * Must be used in the context of a factory function such as one defined for an
12285 * `InjectionToken`. Throws an error if not called from such a context.
12286 *
12287 * (Additional documentation moved to `inject`, as it is the public API, and an alias for this
12288 * instruction)
12289 *
12290 * @see inject
12291 * @codeGenApi
12292 * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.
12293 */
12294export declare function ɵɵinject<T>(token: Type<T> | InjectionToken<T>): T;
12295
12296export declare function ɵɵinject<T>(token: Type<T> | InjectionToken<T>, flags?: InjectFlags): T | null;
12297
12298/**
12299 * Information about how a type or `InjectionToken` interfaces with the DI system.
12300 *
12301 * At a minimum, this includes a `factory` which defines how to create the given type `T`, possibly
12302 * requesting injection of other types if necessary.
12303 *
12304 * Optionally, a `providedIn` parameter specifies that the given type belongs to a particular
12305 * `InjectorDef`, `NgModule`, or a special scope (e.g. `'root'`). A value of `null` indicates
12306 * that the injectable does not belong to any scope.
12307 *
12308 * @codeGenApi
12309 * @publicApi The ViewEngine compiler emits code with this type for injectables. This code is
12310 * deployed to npm, and should be treated as public api.
12311
12312 */
12313export declare interface ɵɵInjectableDef<T> {
12314 /**
12315 * Specifies that the given type belongs to a particular injector:
12316 * - `InjectorType` such as `NgModule`,
12317 * - `'root'` the root injector
12318 * - `'any'` all injectors.
12319 * - `null`, does not belong to any injector. Must be explicitly listed in the injector
12320 * `providers`.
12321 */
12322 providedIn: InjectorType<any> | 'root' | 'platform' | 'any' | null;
12323 /**
12324 * The token to which this definition belongs.
12325 *
12326 * Note that this may not be the same as the type that the `factory` will create.
12327 */
12328 token: unknown;
12329 /**
12330 * Factory method to execute to create an instance of the injectable.
12331 */
12332 factory: (t?: Type<any>) => T;
12333 /**
12334 * In a case of no explicit injector, a location where the instance of the injectable is stored.
12335 */
12336 value: T | undefined;
12337}
12338
12339/**
12340 * Facade for the attribute injection from DI.
12341 *
12342 * @codeGenApi
12343 */
12344export declare function ɵɵinjectAttribute(attrNameToInject: string): string | null;
12345
12346/**
12347 * Information about the providers to be included in an `Injector` as well as how the given type
12348 * which carries the information should be created by the DI system.
12349 *
12350 * An `InjectorDef` can import other types which have `InjectorDefs`, forming a deep nested
12351 * structure of providers with a defined priority (identically to how `NgModule`s also have
12352 * an import/dependency structure).
12353 *
12354 * NOTE: This is a private type and should not be exported
12355 *
12356 * @codeGenApi
12357 */
12358export declare interface ɵɵInjectorDef<T> {
12359 factory: () => T;
12360 providers: (Type<any> | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | any[])[];
12361 imports: (InjectorType<any> | InjectorTypeWithProviders<any>)[];
12362}
12363
12364/**
12365 * Returns the appropriate `ChangeDetectorRef` for a pipe.
12366 *
12367 * @codeGenApi
12368 */
12369export declare function ɵɵinjectPipeChangeDetectorRef(flags?: InjectFlags): ChangeDetectorRef | null;
12370
12371/**
12372 * Throws an error indicating that a factory function could not be generated by the compiler for a
12373 * particular class.
12374 *
12375 * This instruction allows the actual error message to be optimized away when ngDevMode is turned
12376 * off, saving bytes of generated code while still providing a good experience in dev mode.
12377 *
12378 * The name of the class is not mentioned here, but will be in the generated factory function name
12379 * and thus in the stack trace.
12380 *
12381 * @codeGenApi
12382 */
12383export declare function ɵɵinvalidFactory(): never;
12384
12385/**
12386 * Throws an error indicating that a factory function could not be generated by the compiler for a
12387 * particular class.
12388 *
12389 * This instruction allows the actual error message to be optimized away when ngDevMode is turned
12390 * off, saving bytes of generated code while still providing a good experience in dev mode.
12391 *
12392 * The name of the class is not mentioned here, but will be in the generated factory function name
12393 * and thus in the stack trace.
12394 *
12395 * @codeGenApi
12396 */
12397export declare function ɵɵinvalidFactoryDep(index: number): never;
12398
12399/**
12400 * Adds an event listener to the current node.
12401 *
12402 * If an output exists on one of the node's directives, it also subscribes to the output
12403 * and saves the subscription for later cleanup.
12404 *
12405 * @param eventName Name of the event
12406 * @param listenerFn The function to be called when event emits
12407 * @param useCapture Whether or not to use capture in event listener
12408 * @param eventTargetResolver Function that returns global target information in case this listener
12409 * should be attached to a global object like window, document or body
12410 *
12411 * @codeGenApi
12412 */
12413export declare function ɵɵlistener(eventName: string, listenerFn: (e?: any) => any, useCapture?: boolean, eventTargetResolver?: GlobalTargetResolver): typeof ɵɵlistener;
12414
12415/**
12416 * Loads a QueryList corresponding to the current view or content query.
12417 *
12418 * @codeGenApi
12419 */
12420export declare function ɵɵloadQuery<T>(): QueryList<T>;
12421
12422/**
12423 * Sets the namespace used to create elements to `null`, which forces element creation to use
12424 * `createElement` rather than `createElementNS`.
12425 *
12426 * @codeGenApi
12427 */
12428export declare function ɵɵnamespaceHTML(): void;
12429
12430/**
12431 * Sets the namespace used to create elements to `'http://www.w3.org/1998/MathML/'` in global state.
12432 *
12433 * @codeGenApi
12434 */
12435export declare function ɵɵnamespaceMathML(): void;
12436
12437/**
12438 * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state.
12439 *
12440 * @codeGenApi
12441 */
12442export declare function ɵɵnamespaceSVG(): void;
12443
12444/**
12445 * Retrieves a context at the level specified and saves it as the global, contextViewData.
12446 * Will get the next level up if level is not specified.
12447 *
12448 * This is used to save contexts of parent views so they can be bound in embedded views, or
12449 * in conjunction with reference() to bind a ref from a parent view.
12450 *
12451 * @param level The relative level of the view from which to grab context compared to contextVewData
12452 * @returns context
12453 *
12454 * @codeGenApi
12455 */
12456export declare function ɵɵnextContext<T = any>(level?: number): T;
12457
12458/**
12459 * @publicApi
12460 */
12461export declare type ɵɵNgModuleDefWithMeta<T, Declarations, Imports, Exports> = ɵNgModuleDef<T>;
12462
12463/**
12464 * The NgOnChangesFeature decorates a component with support for the ngOnChanges
12465 * lifecycle hook, so it should be included in any component that implements
12466 * that hook.
12467 *
12468 * If the component or directive uses inheritance, the NgOnChangesFeature MUST
12469 * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise
12470 * inherited properties will not be propagated to the ngOnChanges lifecycle
12471 * hook.
12472 *
12473 * Example usage:
12474 *
12475 * ```
12476 * static ɵcmp = defineComponent({
12477 * ...
12478 * inputs: {name: 'publicName'},
12479 * features: [NgOnChangesFeature]
12480 * });
12481 * ```
12482 *
12483 * @codeGenApi
12484 */
12485export declare function ɵɵNgOnChangesFeature<T>(): DirectiveDefFeature;
12486
12487
12488/**
12489 * Create a pipe.
12490 *
12491 * @param index Pipe index where the pipe will be stored.
12492 * @param pipeName The name of the pipe
12493 * @returns T the instance of the pipe.
12494 *
12495 * @codeGenApi
12496 */
12497export declare function ɵɵpipe(index: number, pipeName: string): any;
12498
12499/**
12500 * Invokes a pipe with 1 arguments.
12501 *
12502 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
12503 * the pipe only when an input to the pipe changes.
12504 *
12505 * @param index Pipe index where the pipe was stored on creation.
12506 * @param slotOffset the offset in the reserved slot space
12507 * @param v1 1st argument to {@link PipeTransform#transform}.
12508 *
12509 * @codeGenApi
12510 */
12511export declare function ɵɵpipeBind1(index: number, slotOffset: number, v1: any): any;
12512
12513/**
12514 * Invokes a pipe with 2 arguments.
12515 *
12516 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
12517 * the pipe only when an input to the pipe changes.
12518 *
12519 * @param index Pipe index where the pipe was stored on creation.
12520 * @param slotOffset the offset in the reserved slot space
12521 * @param v1 1st argument to {@link PipeTransform#transform}.
12522 * @param v2 2nd argument to {@link PipeTransform#transform}.
12523 *
12524 * @codeGenApi
12525 */
12526export declare function ɵɵpipeBind2(index: number, slotOffset: number, v1: any, v2: any): any;
12527
12528/**
12529 * Invokes a pipe with 3 arguments.
12530 *
12531 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
12532 * the pipe only when an input to the pipe changes.
12533 *
12534 * @param index Pipe index where the pipe was stored on creation.
12535 * @param slotOffset the offset in the reserved slot space
12536 * @param v1 1st argument to {@link PipeTransform#transform}.
12537 * @param v2 2nd argument to {@link PipeTransform#transform}.
12538 * @param v3 4rd argument to {@link PipeTransform#transform}.
12539 *
12540 * @codeGenApi
12541 */
12542export declare function ɵɵpipeBind3(index: number, slotOffset: number, v1: any, v2: any, v3: any): any;
12543
12544/**
12545 * Invokes a pipe with 4 arguments.
12546 *
12547 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
12548 * the pipe only when an input to the pipe changes.
12549 *
12550 * @param index Pipe index where the pipe was stored on creation.
12551 * @param slotOffset the offset in the reserved slot space
12552 * @param v1 1st argument to {@link PipeTransform#transform}.
12553 * @param v2 2nd argument to {@link PipeTransform#transform}.
12554 * @param v3 3rd argument to {@link PipeTransform#transform}.
12555 * @param v4 4th argument to {@link PipeTransform#transform}.
12556 *
12557 * @codeGenApi
12558 */
12559export declare function ɵɵpipeBind4(index: number, slotOffset: number, v1: any, v2: any, v3: any, v4: any): any;
12560
12561/**
12562 * Invokes a pipe with variable number of arguments.
12563 *
12564 * This instruction acts as a guard to {@link PipeTransform#transform} invoking
12565 * the pipe only when an input to the pipe changes.
12566 *
12567 * @param index Pipe index where the pipe was stored on creation.
12568 * @param slotOffset the offset in the reserved slot space
12569 * @param values Array of arguments to pass to {@link PipeTransform#transform} method.
12570 *
12571 * @codeGenApi
12572 */
12573export declare function ɵɵpipeBindV(index: number, slotOffset: number, values: [any, ...any[]]): any;
12574
12575/**
12576 * @codeGenApi
12577 */
12578export declare type ɵɵPipeDefWithMeta<T, Name extends string> = ɵPipeDef<T>;
12579
12580/**
12581 * Inserts previously re-distributed projected nodes. This instruction must be preceded by a call
12582 * to the projectionDef instruction.
12583 *
12584 * @param nodeIndex
12585 * @param selectorIndex:
12586 * - 0 when the selector is `*` (or unspecified as this is the default value),
12587 * - 1 based index of the selector from the {@link projectionDef}
12588 *
12589 * @codeGenApi
12590 */
12591export declare function ɵɵprojection(nodeIndex: number, selectorIndex?: number, attrs?: TAttributes): void;
12592
12593/**
12594 * Instruction to distribute projectable nodes among <ng-content> occurrences in a given template.
12595 * It takes all the selectors from the entire component's template and decides where
12596 * each projected node belongs (it re-distributes nodes among "buckets" where each "bucket" is
12597 * backed by a selector).
12598 *
12599 * This function requires CSS selectors to be provided in 2 forms: parsed (by a compiler) and text,
12600 * un-parsed form.
12601 *
12602 * The parsed form is needed for efficient matching of a node against a given CSS selector.
12603 * The un-parsed, textual form is needed for support of the ngProjectAs attribute.
12604 *
12605 * Having a CSS selector in 2 different formats is not ideal, but alternatives have even more
12606 * drawbacks:
12607 * - having only a textual form would require runtime parsing of CSS selectors;
12608 * - we can't have only a parsed as we can't re-construct textual form from it (as entered by a
12609 * template author).
12610 *
12611 * @param projectionSlots? A collection of projection slots. A projection slot can be based
12612 * on a parsed CSS selectors or set to the wildcard selector ("*") in order to match
12613 * all nodes which do not match any selector. If not specified, a single wildcard
12614 * selector projection slot will be defined.
12615 *
12616 * @codeGenApi
12617 */
12618export declare function ɵɵprojectionDef(projectionSlots?: ProjectionSlots): void;
12619
12620/**
12621 * Update a property on a selected element.
12622 *
12623 * Operates on the element selected by index via the {@link select} instruction.
12624 *
12625 * If the property name also exists as an input property on one of the element's directives,
12626 * the component property will be set instead of the element property. This check must
12627 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled
12628 *
12629 * @param propName Name of property. Because it is going to DOM, this is not subject to
12630 * renaming as part of minification.
12631 * @param value New value to write.
12632 * @param sanitizer An optional function used to sanitize the value.
12633 * @returns This function returns itself so that it may be chained
12634 * (e.g. `property('name', ctx.name)('title', ctx.title)`)
12635 *
12636 * @codeGenApi
12637 */
12638export declare function ɵɵproperty<T>(propName: string, value: T, sanitizer?: SanitizerFn | null): typeof ɵɵproperty;
12639
12640/**
12641 *
12642 * Update an interpolated property on an element with a lone bound value
12643 *
12644 * Used when the value passed to a property has 1 interpolated value in it, an no additional text
12645 * surrounds that interpolated value:
12646 *
12647 * ```html
12648 * <div title="{{v0}}"></div>
12649 * ```
12650 *
12651 * Its compiled representation is::
12652 *
12653 * ```ts
12654 * ɵɵpropertyInterpolate('title', v0);
12655 * ```
12656 *
12657 * If the property name also exists as an input property on one of the element's directives,
12658 * the component property will be set instead of the element property. This check must
12659 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12660 *
12661 * @param propName The name of the property to update
12662 * @param prefix Static value used for concatenation only.
12663 * @param v0 Value checked for change.
12664 * @param suffix Static value used for concatenation only.
12665 * @param sanitizer An optional sanitizer function
12666 * @returns itself, so that it may be chained.
12667 * @codeGenApi
12668 */
12669export declare function ɵɵpropertyInterpolate(propName: string, v0: any, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate;
12670
12671/**
12672 *
12673 * Update an interpolated property on an element with single bound value surrounded by text.
12674 *
12675 * Used when the value passed to a property has 1 interpolated value in it:
12676 *
12677 * ```html
12678 * <div title="prefix{{v0}}suffix"></div>
12679 * ```
12680 *
12681 * Its compiled representation is::
12682 *
12683 * ```ts
12684 * ɵɵpropertyInterpolate1('title', 'prefix', v0, 'suffix');
12685 * ```
12686 *
12687 * If the property name also exists as an input property on one of the element's directives,
12688 * the component property will be set instead of the element property. This check must
12689 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12690 *
12691 * @param propName The name of the property to update
12692 * @param prefix Static value used for concatenation only.
12693 * @param v0 Value checked for change.
12694 * @param suffix Static value used for concatenation only.
12695 * @param sanitizer An optional sanitizer function
12696 * @returns itself, so that it may be chained.
12697 * @codeGenApi
12698 */
12699export declare function ɵɵpropertyInterpolate1(propName: string, prefix: string, v0: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate1;
12700
12701/**
12702 *
12703 * Update an interpolated property on an element with 2 bound values surrounded by text.
12704 *
12705 * Used when the value passed to a property has 2 interpolated values in it:
12706 *
12707 * ```html
12708 * <div title="prefix{{v0}}-{{v1}}suffix"></div>
12709 * ```
12710 *
12711 * Its compiled representation is::
12712 *
12713 * ```ts
12714 * ɵɵpropertyInterpolate2('title', 'prefix', v0, '-', v1, 'suffix');
12715 * ```
12716 *
12717 * If the property name also exists as an input property on one of the element's directives,
12718 * the component property will be set instead of the element property. This check must
12719 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12720 *
12721 * @param propName The name of the property to update
12722 * @param prefix Static value used for concatenation only.
12723 * @param v0 Value checked for change.
12724 * @param i0 Static value used for concatenation only.
12725 * @param v1 Value checked for change.
12726 * @param suffix Static value used for concatenation only.
12727 * @param sanitizer An optional sanitizer function
12728 * @returns itself, so that it may be chained.
12729 * @codeGenApi
12730 */
12731export declare function ɵɵpropertyInterpolate2(propName: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate2;
12732
12733/**
12734 *
12735 * Update an interpolated property on an element with 3 bound values surrounded by text.
12736 *
12737 * Used when the value passed to a property has 3 interpolated values in it:
12738 *
12739 * ```html
12740 * <div title="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
12741 * ```
12742 *
12743 * Its compiled representation is::
12744 *
12745 * ```ts
12746 * ɵɵpropertyInterpolate3(
12747 * 'title', 'prefix', v0, '-', v1, '-', v2, 'suffix');
12748 * ```
12749 *
12750 * If the property name also exists as an input property on one of the element's directives,
12751 * the component property will be set instead of the element property. This check must
12752 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12753 *
12754 * @param propName The name of the property to update
12755 * @param prefix Static value used for concatenation only.
12756 * @param v0 Value checked for change.
12757 * @param i0 Static value used for concatenation only.
12758 * @param v1 Value checked for change.
12759 * @param i1 Static value used for concatenation only.
12760 * @param v2 Value checked for change.
12761 * @param suffix Static value used for concatenation only.
12762 * @param sanitizer An optional sanitizer function
12763 * @returns itself, so that it may be chained.
12764 * @codeGenApi
12765 */
12766export declare function ɵɵpropertyInterpolate3(propName: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolate3;
12767
12768/**
12769 *
12770 * Update an interpolated property on an element with 4 bound values surrounded by text.
12771 *
12772 * Used when the value passed to a property has 4 interpolated values in it:
12773 *
12774 * ```html
12775 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
12776 * ```
12777 *
12778 * Its compiled representation is::
12779 *
12780 * ```ts
12781 * ɵɵpropertyInterpolate4(
12782 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
12783 * ```
12784 *
12785 * If the property name also exists as an input property on one of the element's directives,
12786 * the component property will be set instead of the element property. This check must
12787 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12788 *
12789 * @param propName The name of the property to update
12790 * @param prefix Static value used for concatenation only.
12791 * @param v0 Value checked for change.
12792 * @param i0 Static value used for concatenation only.
12793 * @param v1 Value checked for change.
12794 * @param i1 Static value used for concatenation only.
12795 * @param v2 Value checked for change.
12796 * @param i2 Static value used for concatenation only.
12797 * @param v3 Value checked for change.
12798 * @param suffix Static value used for concatenation only.
12799 * @param sanitizer An optional sanitizer function
12800 * @returns itself, so that it may be chained.
12801 * @codeGenApi
12802 */
12803export 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;
12804
12805/**
12806 *
12807 * Update an interpolated property on an element with 5 bound values surrounded by text.
12808 *
12809 * Used when the value passed to a property has 5 interpolated values in it:
12810 *
12811 * ```html
12812 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
12813 * ```
12814 *
12815 * Its compiled representation is::
12816 *
12817 * ```ts
12818 * ɵɵpropertyInterpolate5(
12819 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
12820 * ```
12821 *
12822 * If the property name also exists as an input property on one of the element's directives,
12823 * the component property will be set instead of the element property. This check must
12824 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12825 *
12826 * @param propName The name of the property to update
12827 * @param prefix Static value used for concatenation only.
12828 * @param v0 Value checked for change.
12829 * @param i0 Static value used for concatenation only.
12830 * @param v1 Value checked for change.
12831 * @param i1 Static value used for concatenation only.
12832 * @param v2 Value checked for change.
12833 * @param i2 Static value used for concatenation only.
12834 * @param v3 Value checked for change.
12835 * @param i3 Static value used for concatenation only.
12836 * @param v4 Value checked for change.
12837 * @param suffix Static value used for concatenation only.
12838 * @param sanitizer An optional sanitizer function
12839 * @returns itself, so that it may be chained.
12840 * @codeGenApi
12841 */
12842export 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;
12843
12844/**
12845 *
12846 * Update an interpolated property on an element with 6 bound values surrounded by text.
12847 *
12848 * Used when the value passed to a property has 6 interpolated values in it:
12849 *
12850 * ```html
12851 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
12852 * ```
12853 *
12854 * Its compiled representation is::
12855 *
12856 * ```ts
12857 * ɵɵpropertyInterpolate6(
12858 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
12859 * ```
12860 *
12861 * If the property name also exists as an input property on one of the element's directives,
12862 * the component property will be set instead of the element property. This check must
12863 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12864 *
12865 * @param propName The name of the property to update
12866 * @param prefix Static value used for concatenation only.
12867 * @param v0 Value checked for change.
12868 * @param i0 Static value used for concatenation only.
12869 * @param v1 Value checked for change.
12870 * @param i1 Static value used for concatenation only.
12871 * @param v2 Value checked for change.
12872 * @param i2 Static value used for concatenation only.
12873 * @param v3 Value checked for change.
12874 * @param i3 Static value used for concatenation only.
12875 * @param v4 Value checked for change.
12876 * @param i4 Static value used for concatenation only.
12877 * @param v5 Value checked for change.
12878 * @param suffix Static value used for concatenation only.
12879 * @param sanitizer An optional sanitizer function
12880 * @returns itself, so that it may be chained.
12881 * @codeGenApi
12882 */
12883export 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;
12884
12885/**
12886 *
12887 * Update an interpolated property on an element with 7 bound values surrounded by text.
12888 *
12889 * Used when the value passed to a property has 7 interpolated values in it:
12890 *
12891 * ```html
12892 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
12893 * ```
12894 *
12895 * Its compiled representation is::
12896 *
12897 * ```ts
12898 * ɵɵpropertyInterpolate7(
12899 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
12900 * ```
12901 *
12902 * If the property name also exists as an input property on one of the element's directives,
12903 * the component property will be set instead of the element property. This check must
12904 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12905 *
12906 * @param propName The name of the property to update
12907 * @param prefix Static value used for concatenation only.
12908 * @param v0 Value checked for change.
12909 * @param i0 Static value used for concatenation only.
12910 * @param v1 Value checked for change.
12911 * @param i1 Static value used for concatenation only.
12912 * @param v2 Value checked for change.
12913 * @param i2 Static value used for concatenation only.
12914 * @param v3 Value checked for change.
12915 * @param i3 Static value used for concatenation only.
12916 * @param v4 Value checked for change.
12917 * @param i4 Static value used for concatenation only.
12918 * @param v5 Value checked for change.
12919 * @param i5 Static value used for concatenation only.
12920 * @param v6 Value checked for change.
12921 * @param suffix Static value used for concatenation only.
12922 * @param sanitizer An optional sanitizer function
12923 * @returns itself, so that it may be chained.
12924 * @codeGenApi
12925 */
12926export 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;
12927
12928/**
12929 *
12930 * Update an interpolated property on an element with 8 bound values surrounded by text.
12931 *
12932 * Used when the value passed to a property has 8 interpolated values in it:
12933 *
12934 * ```html
12935 * <div title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
12936 * ```
12937 *
12938 * Its compiled representation is::
12939 *
12940 * ```ts
12941 * ɵɵpropertyInterpolate8(
12942 * 'title', 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
12943 * ```
12944 *
12945 * If the property name also exists as an input property on one of the element's directives,
12946 * the component property will be set instead of the element property. This check must
12947 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12948 *
12949 * @param propName The name of the property to update
12950 * @param prefix Static value used for concatenation only.
12951 * @param v0 Value checked for change.
12952 * @param i0 Static value used for concatenation only.
12953 * @param v1 Value checked for change.
12954 * @param i1 Static value used for concatenation only.
12955 * @param v2 Value checked for change.
12956 * @param i2 Static value used for concatenation only.
12957 * @param v3 Value checked for change.
12958 * @param i3 Static value used for concatenation only.
12959 * @param v4 Value checked for change.
12960 * @param i4 Static value used for concatenation only.
12961 * @param v5 Value checked for change.
12962 * @param i5 Static value used for concatenation only.
12963 * @param v6 Value checked for change.
12964 * @param i6 Static value used for concatenation only.
12965 * @param v7 Value checked for change.
12966 * @param suffix Static value used for concatenation only.
12967 * @param sanitizer An optional sanitizer function
12968 * @returns itself, so that it may be chained.
12969 * @codeGenApi
12970 */
12971export 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;
12972
12973/**
12974 * Update an interpolated property on an element with 9 or more bound values surrounded by text.
12975 *
12976 * Used when the number of interpolated values exceeds 8.
12977 *
12978 * ```html
12979 * <div
12980 * title="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix"></div>
12981 * ```
12982 *
12983 * Its compiled representation is::
12984 *
12985 * ```ts
12986 * ɵɵpropertyInterpolateV(
12987 * 'title', ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
12988 * 'suffix']);
12989 * ```
12990 *
12991 * If the property name also exists as an input property on one of the element's directives,
12992 * the component property will be set instead of the element property. This check must
12993 * be conducted at runtime so child components that add new `@Inputs` don't have to be re-compiled.
12994 *
12995 * @param propName The name of the property to update.
12996 * @param values The collection of values and the strings inbetween those values, beginning with a
12997 * string prefix and ending with a string suffix.
12998 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
12999 * @param sanitizer An optional sanitizer function
13000 * @returns itself, so that it may be chained.
13001 * @codeGenApi
13002 */
13003export declare function ɵɵpropertyInterpolateV(propName: string, values: any[], sanitizer?: SanitizerFn): typeof ɵɵpropertyInterpolateV;
13004
13005/**
13006 * This feature resolves the providers of a directive (or component),
13007 * and publish them into the DI system, making it visible to others for injection.
13008 *
13009 * For example:
13010 * ```ts
13011 * class ComponentWithProviders {
13012 * constructor(private greeter: GreeterDE) {}
13013 *
13014 * static ɵcmp = defineComponent({
13015 * type: ComponentWithProviders,
13016 * selectors: [['component-with-providers']],
13017 * factory: () => new ComponentWithProviders(directiveInject(GreeterDE as any)),
13018 * decls: 1,
13019 * vars: 1,
13020 * template: function(fs: RenderFlags, ctx: ComponentWithProviders) {
13021 * if (fs & RenderFlags.Create) {
13022 * ɵɵtext(0);
13023 * }
13024 * if (fs & RenderFlags.Update) {
13025 * ɵɵtextInterpolate(ctx.greeter.greet());
13026 * }
13027 * },
13028 * features: [ProvidersFeature([GreeterDE])]
13029 * });
13030 * }
13031 * ```
13032 *
13033 * @param definition
13034 *
13035 * @codeGenApi
13036 */
13037export declare function ɵɵProvidersFeature<T>(providers: Provider[], viewProviders?: Provider[]): (definition: ɵDirectiveDef<T>) => void;
13038
13039/**
13040 * Bindings for pure functions are stored after regular bindings.
13041 *
13042 * |-------decls------|---------vars---------| |----- hostVars (dir1) ------|
13043 * ------------------------------------------------------------------------------------------
13044 * | nodes/refs/pipes | bindings | fn slots | injector | dir1 | host bindings | host slots |
13045 * ------------------------------------------------------------------------------------------
13046 * ^ ^
13047 * TView.bindingStartIndex TView.expandoStartIndex
13048 *
13049 * Pure function instructions are given an offset from the binding root. Adding the offset to the
13050 * binding root gives the first index where the bindings are stored. In component views, the binding
13051 * root is the bindingStartIndex. In host bindings, the binding root is the expandoStartIndex +
13052 * any directive instances + any hostVars in directives evaluated before it.
13053 *
13054 * See VIEW_DATA.md for more information about host binding resolution.
13055 */
13056/**
13057 * If the value hasn't been saved, calls the pure function to store and return the
13058 * value. If it has been saved, returns the saved value.
13059 *
13060 * @param slotOffset the offset from binding root to the reserved slot
13061 * @param pureFn Function that returns a value
13062 * @param thisArg Optional calling context of pureFn
13063 * @returns value
13064 *
13065 * @codeGenApi
13066 */
13067export declare function ɵɵpureFunction0<T>(slotOffset: number, pureFn: () => T, thisArg?: any): T;
13068
13069/**
13070 * If the value of the provided exp has changed, calls the pure function to return
13071 * an updated value. Or if the value has not changed, returns cached value.
13072 *
13073 * @param slotOffset the offset from binding root to the reserved slot
13074 * @param pureFn Function that returns an updated value
13075 * @param exp Updated expression value
13076 * @param thisArg Optional calling context of pureFn
13077 * @returns Updated or cached value
13078 *
13079 * @codeGenApi
13080 */
13081export declare function ɵɵpureFunction1(slotOffset: number, pureFn: (v: any) => any, exp: any, thisArg?: any): any;
13082
13083/**
13084 * If the value of any provided exp has changed, calls the pure function to return
13085 * an updated value. Or if no values have changed, returns cached value.
13086 *
13087 * @param slotOffset the offset from binding root to the reserved slot
13088 * @param pureFn
13089 * @param exp1
13090 * @param exp2
13091 * @param thisArg Optional calling context of pureFn
13092 * @returns Updated or cached value
13093 *
13094 * @codeGenApi
13095 */
13096export declare function ɵɵpureFunction2(slotOffset: number, pureFn: (v1: any, v2: any) => any, exp1: any, exp2: any, thisArg?: any): any;
13097
13098/**
13099 * If the value of any provided exp has changed, calls the pure function to return
13100 * an updated value. Or if no values have changed, returns cached value.
13101 *
13102 * @param slotOffset the offset from binding root to the reserved slot
13103 * @param pureFn
13104 * @param exp1
13105 * @param exp2
13106 * @param exp3
13107 * @param thisArg Optional calling context of pureFn
13108 * @returns Updated or cached value
13109 *
13110 * @codeGenApi
13111 */
13112export declare function ɵɵpureFunction3(slotOffset: number, pureFn: (v1: any, v2: any, v3: any) => any, exp1: any, exp2: any, exp3: any, thisArg?: any): any;
13113
13114/**
13115 * If the value of any provided exp has changed, calls the pure function to return
13116 * an updated value. Or if no values have changed, returns cached value.
13117 *
13118 * @param slotOffset the offset from binding root to the reserved slot
13119 * @param pureFn
13120 * @param exp1
13121 * @param exp2
13122 * @param exp3
13123 * @param exp4
13124 * @param thisArg Optional calling context of pureFn
13125 * @returns Updated or cached value
13126 *
13127 * @codeGenApi
13128 */
13129export 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;
13130
13131/**
13132 * If the value of any provided exp has changed, calls the pure function to return
13133 * an updated value. Or if no values have changed, returns cached value.
13134 *
13135 * @param slotOffset the offset from binding root to the reserved slot
13136 * @param pureFn
13137 * @param exp1
13138 * @param exp2
13139 * @param exp3
13140 * @param exp4
13141 * @param exp5
13142 * @param thisArg Optional calling context of pureFn
13143 * @returns Updated or cached value
13144 *
13145 * @codeGenApi
13146 */
13147export 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;
13148
13149/**
13150 * If the value of any provided exp has changed, calls the pure function to return
13151 * an updated value. Or if no values have changed, returns cached value.
13152 *
13153 * @param slotOffset the offset from binding root to the reserved slot
13154 * @param pureFn
13155 * @param exp1
13156 * @param exp2
13157 * @param exp3
13158 * @param exp4
13159 * @param exp5
13160 * @param exp6
13161 * @param thisArg Optional calling context of pureFn
13162 * @returns Updated or cached value
13163 *
13164 * @codeGenApi
13165 */
13166export 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;
13167
13168/**
13169 * If the value of any provided exp has changed, calls the pure function to return
13170 * an updated value. Or if no values have changed, returns cached value.
13171 *
13172 * @param slotOffset the offset from binding root to the reserved slot
13173 * @param pureFn
13174 * @param exp1
13175 * @param exp2
13176 * @param exp3
13177 * @param exp4
13178 * @param exp5
13179 * @param exp6
13180 * @param exp7
13181 * @param thisArg Optional calling context of pureFn
13182 * @returns Updated or cached value
13183 *
13184 * @codeGenApi
13185 */
13186export 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;
13187
13188/**
13189 * If the value of any provided exp has changed, calls the pure function to return
13190 * an updated value. Or if no values have changed, returns cached value.
13191 *
13192 * @param slotOffset the offset from binding root to the reserved slot
13193 * @param pureFn
13194 * @param exp1
13195 * @param exp2
13196 * @param exp3
13197 * @param exp4
13198 * @param exp5
13199 * @param exp6
13200 * @param exp7
13201 * @param exp8
13202 * @param thisArg Optional calling context of pureFn
13203 * @returns Updated or cached value
13204 *
13205 * @codeGenApi
13206 */
13207export 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;
13208
13209/**
13210 * pureFunction instruction that can support any number of bindings.
13211 *
13212 * If the value of any provided exp has changed, calls the pure function to return
13213 * an updated value. Or if no values have changed, returns cached value.
13214 *
13215 * @param slotOffset the offset from binding root to the reserved slot
13216 * @param pureFn A pure function that takes binding values and builds an object or array
13217 * containing those values.
13218 * @param exps An array of binding values
13219 * @param thisArg Optional calling context of pureFn
13220 * @returns Updated or cached value
13221 *
13222 * @codeGenApi
13223 */
13224export declare function ɵɵpureFunctionV(slotOffset: number, pureFn: (...v: any[]) => any, exps: any[], thisArg?: any): any;
13225
13226/**
13227 * Refreshes a query by combining matches from all active views and removing matches from deleted
13228 * views.
13229 *
13230 * @returns `true` if a query got dirty during change detection or if this is a static query
13231 * resolving in creation mode, `false` otherwise.
13232 *
13233 * @codeGenApi
13234 */
13235export declare function ɵɵqueryRefresh(queryList: QueryList<any>): boolean;
13236
13237/**
13238 * Retrieves a local reference from the current contextViewData.
13239 *
13240 * If the reference to retrieve is in a parent view, this instruction is used in conjunction
13241 * with a nextContext() call, which walks up the tree and updates the contextViewData instance.
13242 *
13243 * @param index The index of the local ref in contextViewData.
13244 *
13245 * @codeGenApi
13246 */
13247export declare function ɵɵreference<T>(index: number): T;
13248
13249/**
13250 *
13251 * @codeGenApi
13252 */
13253export declare function ɵɵresolveBody(element: RElement & {
13254 ownerDocument: Document;
13255}): {
13256 name: string;
13257 target: HTMLElement;
13258};
13259
13260/**
13261 *
13262 * @codeGenApi
13263 */
13264export declare function ɵɵresolveDocument(element: RElement & {
13265 ownerDocument: Document;
13266}): {
13267 name: string;
13268 target: Document;
13269};
13270
13271/**
13272 *
13273 * @codeGenApi
13274 */
13275export declare function ɵɵresolveWindow(element: RElement & {
13276 ownerDocument: Document;
13277}): {
13278 name: string;
13279 target: (Window & typeof globalThis) | null;
13280};
13281
13282/**
13283 * Restores `contextViewData` to the given OpaqueViewState instance.
13284 *
13285 * Used in conjunction with the getCurrentView() instruction to save a snapshot
13286 * of the current view and restore it when listeners are invoked. This allows
13287 * walking the declaration view tree in listeners to get vars from parent views.
13288 *
13289 * @param viewToRestore The OpaqueViewState instance to restore.
13290 *
13291 * @codeGenApi
13292 */
13293export declare function ɵɵrestoreView(viewToRestore: OpaqueViewState): void;
13294
13295
13296/**
13297 * An `html` sanitizer which converts untrusted `html` **string** into trusted string by removing
13298 * dangerous content.
13299 *
13300 * This method parses the `html` and locates potentially dangerous content (such as urls and
13301 * javascript) and removes it.
13302 *
13303 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustHtml}.
13304 *
13305 * @param unsafeHtml untrusted `html`, typically from the user.
13306 * @returns `html` string which is safe to display to user, because all of the dangerous javascript
13307 * and urls have been removed.
13308 *
13309 * @codeGenApi
13310 */
13311export declare function ɵɵsanitizeHtml(unsafeHtml: any): string;
13312
13313/**
13314 * A `url` sanitizer which only lets trusted `url`s through.
13315 *
13316 * This passes only `url`s marked trusted by calling {@link bypassSanitizationTrustResourceUrl}.
13317 *
13318 * @param unsafeResourceUrl untrusted `url`, typically from the user.
13319 * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because
13320 * only trusted `url`s have been allowed to pass.
13321 *
13322 * @codeGenApi
13323 */
13324export declare function ɵɵsanitizeResourceUrl(unsafeResourceUrl: any): string;
13325
13326/**
13327 * A `script` sanitizer which only lets trusted javascript through.
13328 *
13329 * This passes only `script`s marked trusted by calling {@link
13330 * bypassSanitizationTrustScript}.
13331 *
13332 * @param unsafeScript untrusted `script`, typically from the user.
13333 * @returns `url` string which is safe to bind to the `<script>` element such as `<img src>`,
13334 * because only trusted `scripts` have been allowed to pass.
13335 *
13336 * @codeGenApi
13337 */
13338export declare function ɵɵsanitizeScript(unsafeScript: any): string;
13339
13340/**
13341 * A `style` sanitizer which converts untrusted `style` **string** into trusted string by removing
13342 * dangerous content.
13343 *
13344 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustStyle}.
13345 *
13346 * @param unsafeStyle untrusted `style`, typically from the user.
13347 * @returns `style` string which is safe to bind to the `style` properties.
13348 *
13349 * @codeGenApi
13350 */
13351export declare function ɵɵsanitizeStyle(unsafeStyle: any): string;
13352
13353/**
13354 * A `url` sanitizer which converts untrusted `url` **string** into trusted string by removing
13355 * dangerous
13356 * content.
13357 *
13358 * This method parses the `url` and locates potentially dangerous content (such as javascript) and
13359 * removes it.
13360 *
13361 * It is possible to mark a string as trusted by calling {@link bypassSanitizationTrustUrl}.
13362 *
13363 * @param unsafeUrl untrusted `url`, typically from the user.
13364 * @returns `url` string which is safe to bind to the `src` properties such as `<img src>`, because
13365 * all of the dangerous javascript has been removed.
13366 *
13367 * @codeGenApi
13368 */
13369export declare function ɵɵsanitizeUrl(unsafeUrl: any): string;
13370
13371/**
13372 * Sanitizes URL, selecting sanitizer function based on tag and property names.
13373 *
13374 * This function is used in case we can't define security context at compile time, when only prop
13375 * name is available. This happens when we generate host bindings for Directives/Components. The
13376 * host element is unknown at compile time, so we defer calculation of specific sanitizer to
13377 * runtime.
13378 *
13379 * @param unsafeUrl untrusted `url`, typically from the user.
13380 * @param tag target element tag name.
13381 * @param prop name of the property that contains the value.
13382 * @returns `url` string which is safe to bind.
13383 *
13384 * @codeGenApi
13385 */
13386export declare function ɵɵsanitizeUrlOrResourceUrl(unsafeUrl: any, tag: string, prop: string): any;
13387
13388/**
13389 * Selects an element for later binding instructions.
13390 * @deprecated No longer being generated, but still used in unit tests.
13391 * @codeGenApi
13392 */
13393export declare function ɵɵselect(index: number): void;
13394
13395/**
13396 * @codeGenApi
13397 */
13398export declare function ɵɵsetComponentScope(type: ɵComponentType<any>, directives: Type<any>[], pipes: Type<any>[]): void;
13399
13400/**
13401 * Adds the module metadata that is necessary to compute the module's transitive scope to an
13402 * existing module definition.
13403 *
13404 * Scope metadata of modules is not used in production builds, so calls to this function can be
13405 * marked pure to tree-shake it from the bundle, allowing for all referenced declarations
13406 * to become eligible for tree-shaking as well.
13407 *
13408 * @codeGenApi
13409 */
13410export declare function ɵɵsetNgModuleScope(type: any, scope: {
13411 /** List of components, directives, and pipes declared by this module. */
13412 declarations?: Type<any>[] | (() => Type<any>[]);
13413 /** List of modules or `ModuleWithProviders` imported by this module. */
13414 imports?: Type<any>[] | (() => Type<any>[]);
13415 /**
13416 * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this
13417 * module.
13418 */
13419 exports?: Type<any>[] | (() => Type<any>[]);
13420}): void;
13421
13422/**
13423 * Registers a QueryList, associated with a static content query, for later refresh
13424 * (part of a view refresh).
13425 *
13426 * @param directiveIndex Current directive index
13427 * @param predicate The type for which the query will search
13428 * @param descend Whether or not to descend into children
13429 * @param read What to save in the query
13430 * @returns QueryList<T>
13431 *
13432 * @codeGenApi
13433 */
13434export declare function ɵɵstaticContentQuery<T>(directiveIndex: number, predicate: Type<any> | string[], descend: boolean, read?: any): void;
13435
13436/**
13437 * Creates new QueryList for a static view query.
13438 *
13439 * @param predicate The type for which the query will search
13440 * @param descend Whether or not to descend into children
13441 * @param read What to save in the query
13442 *
13443 * @codeGenApi
13444 */
13445export declare function ɵɵstaticViewQuery<T>(predicate: Type<any> | string[], descend: boolean, read?: any): void;
13446
13447/**
13448 * Update style bindings using an object literal on an element.
13449 *
13450 * This instruction is meant to apply styling via the `[style]="exp"` template bindings.
13451 * When styles are applied to the element they will then be updated with respect to
13452 * any styles/classes set via `styleProp`. If any styles are set to falsy
13453 * then they will be removed from the element.
13454 *
13455 * Note that the styling instruction will not be applied until `stylingApply` is called.
13456 *
13457 * @param styles A key/value style map of the styles that will be applied to the given element.
13458 * Any missing styles (that have already been applied to the element beforehand) will be
13459 * removed (unset) from the element's styling.
13460 *
13461 * Note that this will apply the provided styleMap value to the host element if this function
13462 * is called within a host binding.
13463 *
13464 * @codeGenApi
13465 */
13466export declare function ɵɵstyleMap(styles: {
13467 [styleName: string]: any;
13468} | string | undefined | null): void;
13469
13470
13471/**
13472 *
13473 * Update an interpolated style on an element with single bound value surrounded by text.
13474 *
13475 * Used when the value passed to a property has 1 interpolated value in it:
13476 *
13477 * ```html
13478 * <div style="key: {{v0}}suffix"></div>
13479 * ```
13480 *
13481 * Its compiled representation is:
13482 *
13483 * ```ts
13484 * ɵɵstyleMapInterpolate1('key: ', v0, 'suffix');
13485 * ```
13486 *
13487 * @param prefix Static value used for concatenation only.
13488 * @param v0 Value checked for change.
13489 * @param suffix Static value used for concatenation only.
13490 * @codeGenApi
13491 */
13492export declare function ɵɵstyleMapInterpolate1(prefix: string, v0: any, suffix: string): void;
13493
13494/**
13495 *
13496 * Update an interpolated style on an element with 2 bound values surrounded by text.
13497 *
13498 * Used when the value passed to a property has 2 interpolated values in it:
13499 *
13500 * ```html
13501 * <div style="key: {{v0}}; key1: {{v1}}suffix"></div>
13502 * ```
13503 *
13504 * Its compiled representation is:
13505 *
13506 * ```ts
13507 * ɵɵstyleMapInterpolate2('key: ', v0, '; key1: ', v1, 'suffix');
13508 * ```
13509 *
13510 * @param prefix Static value used for concatenation only.
13511 * @param v0 Value checked for change.
13512 * @param i0 Static value used for concatenation only.
13513 * @param v1 Value checked for change.
13514 * @param suffix Static value used for concatenation only.
13515 * @codeGenApi
13516 */
13517export declare function ɵɵstyleMapInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): void;
13518
13519/**
13520 *
13521 * Update an interpolated style on an element with 3 bound values surrounded by text.
13522 *
13523 * Used when the value passed to a property has 3 interpolated values in it:
13524 *
13525 * ```html
13526 * <div style="key: {{v0}}; key2: {{v1}}; key2: {{v2}}suffix"></div>
13527 * ```
13528 *
13529 * Its compiled representation is:
13530 *
13531 * ```ts
13532 * ɵɵstyleMapInterpolate3(
13533 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, 'suffix');
13534 * ```
13535 *
13536 * @param prefix Static value used for concatenation only.
13537 * @param v0 Value checked for change.
13538 * @param i0 Static value used for concatenation only.
13539 * @param v1 Value checked for change.
13540 * @param i1 Static value used for concatenation only.
13541 * @param v2 Value checked for change.
13542 * @param suffix Static value used for concatenation only.
13543 * @codeGenApi
13544 */
13545export declare function ɵɵstyleMapInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): void;
13546
13547/**
13548 *
13549 * Update an interpolated style 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 style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}suffix"></div>
13555 * ```
13556 *
13557 * Its compiled representation is:
13558 *
13559 * ```ts
13560 * ɵɵstyleMapInterpolate4(
13561 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, 'suffix');
13562 * ```
13563 *
13564 * @param prefix Static value used for concatenation only.
13565 * @param v0 Value checked for change.
13566 * @param i0 Static value used for concatenation only.
13567 * @param v1 Value checked for change.
13568 * @param i1 Static value used for concatenation only.
13569 * @param v2 Value checked for change.
13570 * @param i2 Static value used for concatenation only.
13571 * @param v3 Value checked for change.
13572 * @param suffix Static value used for concatenation only.
13573 * @codeGenApi
13574 */
13575export declare function ɵɵstyleMapInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): void;
13576
13577/**
13578 *
13579 * Update an interpolated style on an element with 5 bound values surrounded by text.
13580 *
13581 * Used when the value passed to a property has 5 interpolated values in it:
13582 *
13583 * ```html
13584 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}suffix"></div>
13585 * ```
13586 *
13587 * Its compiled representation is:
13588 *
13589 * ```ts
13590 * ɵɵstyleMapInterpolate5(
13591 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, 'suffix');
13592 * ```
13593 *
13594 * @param prefix Static value used for concatenation only.
13595 * @param v0 Value checked for change.
13596 * @param i0 Static value used for concatenation only.
13597 * @param v1 Value checked for change.
13598 * @param i1 Static value used for concatenation only.
13599 * @param v2 Value checked for change.
13600 * @param i2 Static value used for concatenation only.
13601 * @param v3 Value checked for change.
13602 * @param i3 Static value used for concatenation only.
13603 * @param v4 Value checked for change.
13604 * @param suffix Static value used for concatenation only.
13605 * @codeGenApi
13606 */
13607export 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;
13608
13609/**
13610 *
13611 * Update an interpolated style on an element with 6 bound values surrounded by text.
13612 *
13613 * Used when the value passed to a property has 6 interpolated values in it:
13614 *
13615 * ```html
13616 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}};
13617 * key5: {{v5}}suffix"></div>
13618 * ```
13619 *
13620 * Its compiled representation is:
13621 *
13622 * ```ts
13623 * ɵɵstyleMapInterpolate6(
13624 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
13625 * 'suffix');
13626 * ```
13627 *
13628 * @param prefix Static value used for concatenation only.
13629 * @param v0 Value checked for change.
13630 * @param i0 Static value used for concatenation only.
13631 * @param v1 Value checked for change.
13632 * @param i1 Static value used for concatenation only.
13633 * @param v2 Value checked for change.
13634 * @param i2 Static value used for concatenation only.
13635 * @param v3 Value checked for change.
13636 * @param i3 Static value used for concatenation only.
13637 * @param v4 Value checked for change.
13638 * @param i4 Static value used for concatenation only.
13639 * @param v5 Value checked for change.
13640 * @param suffix Static value used for concatenation only.
13641 * @codeGenApi
13642 */
13643export 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;
13644
13645/**
13646 *
13647 * Update an interpolated style on an element with 7 bound values surrounded by text.
13648 *
13649 * Used when the value passed to a property has 7 interpolated values in it:
13650 *
13651 * ```html
13652 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
13653 * key6: {{v6}}suffix"></div>
13654 * ```
13655 *
13656 * Its compiled representation is:
13657 *
13658 * ```ts
13659 * ɵɵstyleMapInterpolate7(
13660 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
13661 * '; key6: ', v6, 'suffix');
13662 * ```
13663 *
13664 * @param prefix Static value used for concatenation only.
13665 * @param v0 Value checked for change.
13666 * @param i0 Static value used for concatenation only.
13667 * @param v1 Value checked for change.
13668 * @param i1 Static value used for concatenation only.
13669 * @param v2 Value checked for change.
13670 * @param i2 Static value used for concatenation only.
13671 * @param v3 Value checked for change.
13672 * @param i3 Static value used for concatenation only.
13673 * @param v4 Value checked for change.
13674 * @param i4 Static value used for concatenation only.
13675 * @param v5 Value checked for change.
13676 * @param i5 Static value used for concatenation only.
13677 * @param v6 Value checked for change.
13678 * @param suffix Static value used for concatenation only.
13679 * @codeGenApi
13680 */
13681export 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;
13682
13683/**
13684 *
13685 * Update an interpolated style on an element with 8 bound values surrounded by text.
13686 *
13687 * Used when the value passed to a property has 8 interpolated values in it:
13688 *
13689 * ```html
13690 * <div style="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
13691 * key6: {{v6}}; key7: {{v7}}suffix"></div>
13692 * ```
13693 *
13694 * Its compiled representation is:
13695 *
13696 * ```ts
13697 * ɵɵstyleMapInterpolate8(
13698 * 'key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
13699 * '; key6: ', v6, '; key7: ', v7, 'suffix');
13700 * ```
13701 *
13702 * @param prefix Static value used for concatenation only.
13703 * @param v0 Value checked for change.
13704 * @param i0 Static value used for concatenation only.
13705 * @param v1 Value checked for change.
13706 * @param i1 Static value used for concatenation only.
13707 * @param v2 Value checked for change.
13708 * @param i2 Static value used for concatenation only.
13709 * @param v3 Value checked for change.
13710 * @param i3 Static value used for concatenation only.
13711 * @param v4 Value checked for change.
13712 * @param i4 Static value used for concatenation only.
13713 * @param v5 Value checked for change.
13714 * @param i5 Static value used for concatenation only.
13715 * @param v6 Value checked for change.
13716 * @param i6 Static value used for concatenation only.
13717 * @param v7 Value checked for change.
13718 * @param suffix Static value used for concatenation only.
13719 * @codeGenApi
13720 */
13721export 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;
13722
13723/**
13724 * Update an interpolated style on an element with 9 or more bound values surrounded by text.
13725 *
13726 * Used when the number of interpolated values exceeds 8.
13727 *
13728 * ```html
13729 * <div
13730 * class="key: {{v0}}; key1: {{v1}}; key2: {{v2}}; key3: {{v3}}; key4: {{v4}}; key5: {{v5}};
13731 * key6: {{v6}}; key7: {{v7}}; key8: {{v8}}; key9: {{v9}}suffix"></div>
13732 * ```
13733 *
13734 * Its compiled representation is:
13735 *
13736 * ```ts
13737 * ɵɵstyleMapInterpolateV(
13738 * ['key: ', v0, '; key1: ', v1, '; key2: ', v2, '; key3: ', v3, '; key4: ', v4, '; key5: ', v5,
13739 * '; key6: ', v6, '; key7: ', v7, '; key8: ', v8, '; key9: ', v9, 'suffix']);
13740 * ```
13741 *.
13742 * @param values The collection of values and the strings in-between those values, beginning with
13743 * a string prefix and ending with a string suffix.
13744 * (e.g. `['prefix', value0, '; key2: ', value1, '; key2: ', value2, ..., value99, 'suffix']`)
13745 * @codeGenApi
13746 */
13747export declare function ɵɵstyleMapInterpolateV(values: any[]): void;
13748
13749/**
13750 * Update a style binding on an element with the provided value.
13751 *
13752 * If the style value is falsy then it will be removed from the element
13753 * (or assigned a different value depending if there are any styles placed
13754 * on the element with `styleMap` or any static styles that are
13755 * present from when the element was created with `styling`).
13756 *
13757 * Note that the styling element is updated as part of `stylingApply`.
13758 *
13759 * @param prop A valid CSS property.
13760 * @param value New value to write (`null` or an empty string to remove).
13761 * @param suffix Optional suffix. Used with scalar values to add unit such as `px`.
13762 *
13763 * Note that this will apply the provided style value to the host element if this function is called
13764 * within a host binding function.
13765 *
13766 * @codeGenApi
13767 */
13768export declare function ɵɵstyleProp(prop: string, value: string | number | ɵSafeValue | undefined | null, suffix?: string | null): typeof ɵɵstyleProp;
13769
13770
13771/**
13772 *
13773 * Update an interpolated style property on an element with single bound value surrounded by text.
13774 *
13775 * Used when the value passed to a property has 1 interpolated value in it:
13776 *
13777 * ```html
13778 * <div style.color="prefix{{v0}}suffix"></div>
13779 * ```
13780 *
13781 * Its compiled representation is:
13782 *
13783 * ```ts
13784 * ɵɵstylePropInterpolate1(0, 'prefix', v0, 'suffix');
13785 * ```
13786 *
13787 * @param styleIndex Index of style to update. This index value refers to the
13788 * index of the style in the style bindings array that was passed into
13789 * `styling`.
13790 * @param prefix Static value used for concatenation only.
13791 * @param v0 Value checked for change.
13792 * @param suffix Static value used for concatenation only.
13793 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
13794 * @returns itself, so that it may be chained.
13795 * @codeGenApi
13796 */
13797export declare function ɵɵstylePropInterpolate1(prop: string, prefix: string, v0: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate1;
13798
13799/**
13800 *
13801 * Update an interpolated style property on an element with 2 bound values surrounded by text.
13802 *
13803 * Used when the value passed to a property has 2 interpolated values in it:
13804 *
13805 * ```html
13806 * <div style.color="prefix{{v0}}-{{v1}}suffix"></div>
13807 * ```
13808 *
13809 * Its compiled representation is:
13810 *
13811 * ```ts
13812 * ɵɵstylePropInterpolate2(0, 'prefix', v0, '-', v1, 'suffix');
13813 * ```
13814 *
13815 * @param styleIndex Index of style to update. This index value refers to the
13816 * index of the style in the style bindings array that was passed into
13817 * `styling`.
13818 * @param prefix Static value used for concatenation only.
13819 * @param v0 Value checked for change.
13820 * @param i0 Static value used for concatenation only.
13821 * @param v1 Value checked for change.
13822 * @param suffix Static value used for concatenation only.
13823 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
13824 * @returns itself, so that it may be chained.
13825 * @codeGenApi
13826 */
13827export declare function ɵɵstylePropInterpolate2(prop: string, prefix: string, v0: any, i0: string, v1: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate2;
13828
13829/**
13830 *
13831 * Update an interpolated style property on an element with 3 bound values surrounded by text.
13832 *
13833 * Used when the value passed to a property has 3 interpolated values in it:
13834 *
13835 * ```html
13836 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}suffix"></div>
13837 * ```
13838 *
13839 * Its compiled representation is:
13840 *
13841 * ```ts
13842 * ɵɵstylePropInterpolate3(0, 'prefix', v0, '-', v1, '-', v2, 'suffix');
13843 * ```
13844 *
13845 * @param styleIndex Index of style to update. This index value refers to the
13846 * index of the style in the style bindings array that was passed into
13847 * `styling`.
13848 * @param prefix Static value used for concatenation only.
13849 * @param v0 Value checked for change.
13850 * @param i0 Static value used for concatenation only.
13851 * @param v1 Value checked for change.
13852 * @param i1 Static value used for concatenation only.
13853 * @param v2 Value checked for change.
13854 * @param suffix Static value used for concatenation only.
13855 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
13856 * @returns itself, so that it may be chained.
13857 * @codeGenApi
13858 */
13859export declare function ɵɵstylePropInterpolate3(prop: string, prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string, valueSuffix?: string | null): typeof ɵɵstylePropInterpolate3;
13860
13861/**
13862 *
13863 * Update an interpolated style property on an element with 4 bound values surrounded by text.
13864 *
13865 * Used when the value passed to a property has 4 interpolated values in it:
13866 *
13867 * ```html
13868 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix"></div>
13869 * ```
13870 *
13871 * Its compiled representation is:
13872 *
13873 * ```ts
13874 * ɵɵstylePropInterpolate4(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
13875 * ```
13876 *
13877 * @param styleIndex Index of style to update. This index value refers to the
13878 * index of the style in the style bindings array that was passed into
13879 * `styling`.
13880 * @param prefix Static value used for concatenation only.
13881 * @param v0 Value checked for change.
13882 * @param i0 Static value used for concatenation only.
13883 * @param v1 Value checked for change.
13884 * @param i1 Static value used for concatenation only.
13885 * @param v2 Value checked for change.
13886 * @param i2 Static value used for concatenation only.
13887 * @param v3 Value checked for change.
13888 * @param suffix Static value used for concatenation only.
13889 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
13890 * @returns itself, so that it may be chained.
13891 * @codeGenApi
13892 */
13893export 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;
13894
13895/**
13896 *
13897 * Update an interpolated style property on an element with 5 bound values surrounded by text.
13898 *
13899 * Used when the value passed to a property has 5 interpolated values in it:
13900 *
13901 * ```html
13902 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix"></div>
13903 * ```
13904 *
13905 * Its compiled representation is:
13906 *
13907 * ```ts
13908 * ɵɵstylePropInterpolate5(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
13909 * ```
13910 *
13911 * @param styleIndex Index of style to update. This index value refers to the
13912 * index of the style in the style bindings array that was passed into
13913 * `styling`.
13914 * @param prefix Static value used for concatenation only.
13915 * @param v0 Value checked for change.
13916 * @param i0 Static value used for concatenation only.
13917 * @param v1 Value checked for change.
13918 * @param i1 Static value used for concatenation only.
13919 * @param v2 Value checked for change.
13920 * @param i2 Static value used for concatenation only.
13921 * @param v3 Value checked for change.
13922 * @param i3 Static value used for concatenation only.
13923 * @param v4 Value checked for change.
13924 * @param suffix Static value used for concatenation only.
13925 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
13926 * @returns itself, so that it may be chained.
13927 * @codeGenApi
13928 */
13929export 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;
13930
13931/**
13932 *
13933 * Update an interpolated style property on an element with 6 bound values surrounded by text.
13934 *
13935 * Used when the value passed to a property has 6 interpolated values in it:
13936 *
13937 * ```html
13938 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix"></div>
13939 * ```
13940 *
13941 * Its compiled representation is:
13942 *
13943 * ```ts
13944 * ɵɵstylePropInterpolate6(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
13945 * ```
13946 *
13947 * @param styleIndex Index of style to update. This index value refers to the
13948 * index of the style in the style bindings array that was passed into
13949 * `styling`.
13950 * @param prefix Static value used for concatenation only.
13951 * @param v0 Value checked for change.
13952 * @param i0 Static value used for concatenation only.
13953 * @param v1 Value checked for change.
13954 * @param i1 Static value used for concatenation only.
13955 * @param v2 Value checked for change.
13956 * @param i2 Static value used for concatenation only.
13957 * @param v3 Value checked for change.
13958 * @param i3 Static value used for concatenation only.
13959 * @param v4 Value checked for change.
13960 * @param i4 Static value used for concatenation only.
13961 * @param v5 Value checked for change.
13962 * @param suffix Static value used for concatenation only.
13963 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
13964 * @returns itself, so that it may be chained.
13965 * @codeGenApi
13966 */
13967export 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;
13968
13969/**
13970 *
13971 * Update an interpolated style property on an element with 7 bound values surrounded by text.
13972 *
13973 * Used when the value passed to a property has 7 interpolated values in it:
13974 *
13975 * ```html
13976 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix"></div>
13977 * ```
13978 *
13979 * Its compiled representation is:
13980 *
13981 * ```ts
13982 * ɵɵstylePropInterpolate7(
13983 * 0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
13984 * ```
13985 *
13986 * @param styleIndex Index of style to update. This index value refers to the
13987 * index of the style in the style bindings array that was passed into
13988 * `styling`.
13989 * @param prefix Static value used for concatenation only.
13990 * @param v0 Value checked for change.
13991 * @param i0 Static value used for concatenation only.
13992 * @param v1 Value checked for change.
13993 * @param i1 Static value used for concatenation only.
13994 * @param v2 Value checked for change.
13995 * @param i2 Static value used for concatenation only.
13996 * @param v3 Value checked for change.
13997 * @param i3 Static value used for concatenation only.
13998 * @param v4 Value checked for change.
13999 * @param i4 Static value used for concatenation only.
14000 * @param v5 Value checked for change.
14001 * @param i5 Static value used for concatenation only.
14002 * @param v6 Value checked for change.
14003 * @param suffix Static value used for concatenation only.
14004 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14005 * @returns itself, so that it may be chained.
14006 * @codeGenApi
14007 */
14008export 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;
14009
14010/**
14011 *
14012 * Update an interpolated style property on an element with 8 bound values surrounded by text.
14013 *
14014 * Used when the value passed to a property has 8 interpolated values in it:
14015 *
14016 * ```html
14017 * <div style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix"></div>
14018 * ```
14019 *
14020 * Its compiled representation is:
14021 *
14022 * ```ts
14023 * ɵɵstylePropInterpolate8(0, 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6,
14024 * '-', v7, 'suffix');
14025 * ```
14026 *
14027 * @param styleIndex Index of style to update. This index value refers to the
14028 * index of the style in the style bindings array that was passed into
14029 * `styling`.
14030 * @param prefix Static value used for concatenation only.
14031 * @param v0 Value checked for change.
14032 * @param i0 Static value used for concatenation only.
14033 * @param v1 Value checked for change.
14034 * @param i1 Static value used for concatenation only.
14035 * @param v2 Value checked for change.
14036 * @param i2 Static value used for concatenation only.
14037 * @param v3 Value checked for change.
14038 * @param i3 Static value used for concatenation only.
14039 * @param v4 Value checked for change.
14040 * @param i4 Static value used for concatenation only.
14041 * @param v5 Value checked for change.
14042 * @param i5 Static value used for concatenation only.
14043 * @param v6 Value checked for change.
14044 * @param i6 Static value used for concatenation only.
14045 * @param v7 Value checked for change.
14046 * @param suffix Static value used for concatenation only.
14047 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14048 * @returns itself, so that it may be chained.
14049 * @codeGenApi
14050 */
14051export 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;
14052
14053/**
14054 * Update an interpolated style property on an element with 9 or more bound values surrounded by
14055 * text.
14056 *
14057 * Used when the number of interpolated values exceeds 8.
14058 *
14059 * ```html
14060 * <div
14061 * style.color="prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix">
14062 * </div>
14063 * ```
14064 *
14065 * Its compiled representation is:
14066 *
14067 * ```ts
14068 * ɵɵstylePropInterpolateV(
14069 * 0, ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
14070 * 'suffix']);
14071 * ```
14072 *
14073 * @param styleIndex Index of style to update. This index value refers to the
14074 * index of the style in the style bindings array that was passed into
14075 * `styling`..
14076 * @param values The collection of values and the strings in-between those values, beginning with
14077 * a string prefix and ending with a string suffix.
14078 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
14079 * @param valueSuffix Optional suffix. Used with scalar values to add unit such as `px`.
14080 * @returns itself, so that it may be chained.
14081 * @codeGenApi
14082 */
14083export declare function ɵɵstylePropInterpolateV(prop: string, values: any[], valueSuffix?: string | null): typeof ɵɵstylePropInterpolateV;
14084
14085/**
14086 * Registers a synthetic host listener (e.g. `(@foo.start)`) on a component or directive.
14087 *
14088 * This instruction is for compatibility purposes and is designed to ensure that a
14089 * synthetic host listener (e.g. `@HostListener('@foo.start')`) properly gets rendered
14090 * in the component's renderer. Normally all host listeners are evaluated with the
14091 * parent component's renderer, but, in the case of animation @triggers, they need
14092 * to be evaluated with the sub component's renderer (because that's where the
14093 * animation triggers are defined).
14094 *
14095 * Do not use this instruction as a replacement for `listener`. This instruction
14096 * only exists to ensure compatibility with the ViewEngine's host binding behavior.
14097 *
14098 * @param eventName Name of the event
14099 * @param listenerFn The function to be called when event emits
14100 * @param useCapture Whether or not to use capture in event listener
14101 * @param eventTargetResolver Function that returns global target information in case this listener
14102 * should be attached to a global object like window, document or body
14103 *
14104 * @codeGenApi
14105 */
14106export declare function ɵɵsyntheticHostListener(eventName: string, listenerFn: (e?: any) => any, useCapture?: boolean, eventTargetResolver?: GlobalTargetResolver): typeof ɵɵsyntheticHostListener;
14107
14108/**
14109 * Updates a synthetic host binding (e.g. `[@foo]`) on a component or directive.
14110 *
14111 * This instruction is for compatibility purposes and is designed to ensure that a
14112 * synthetic host binding (e.g. `@HostBinding('@foo')`) properly gets rendered in
14113 * the component's renderer. Normally all host bindings are evaluated with the parent
14114 * component's renderer, but, in the case of animation @triggers, they need to be
14115 * evaluated with the sub component's renderer (because that's where the animation
14116 * triggers are defined).
14117 *
14118 * Do not use this instruction as a replacement for `elementProperty`. This instruction
14119 * only exists to ensure compatibility with the ViewEngine's host binding behavior.
14120 *
14121 * @param index The index of the element to update in the data array
14122 * @param propName Name of property. Because it is going to DOM, this is not subject to
14123 * renaming as part of minification.
14124 * @param value New value to write.
14125 * @param sanitizer An optional function used to sanitize the value.
14126 *
14127 * @codeGenApi
14128 */
14129export declare function ɵɵsyntheticHostProperty<T>(propName: string, value: T | ɵNO_CHANGE, sanitizer?: SanitizerFn | null): typeof ɵɵsyntheticHostProperty;
14130
14131/**
14132 * Creates an LContainer for an ng-template (dynamically-inserted view), e.g.
14133 *
14134 * <ng-template #foo>
14135 * <div></div>
14136 * </ng-template>
14137 *
14138 * @param index The index of the container in the data array
14139 * @param templateFn Inline template
14140 * @param decls The number of nodes, local refs, and pipes for this template
14141 * @param vars The number of bindings for this template
14142 * @param tagName The name of the container element, if applicable
14143 * @param attrsIndex Index of template attributes in the `consts` array.
14144 * @param localRefs Index of the local references in the `consts` array.
14145 * @param localRefExtractor A function which extracts local-refs values from the template.
14146 * Defaults to the current element associated with the local-ref.
14147 *
14148 * @codeGenApi
14149 */
14150export 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;
14151
14152/**
14153 * Retrieves `TemplateRef` instance from `Injector` when a local reference is placed on the
14154 * `<ng-template>` element.
14155 *
14156 * @codeGenApi
14157 */
14158export declare function ɵɵtemplateRefExtractor(tNode: TNode, currentView: ɵangular_packages_core_core_bp): TemplateRef<unknown> | null;
14159
14160/**
14161 * Create static text node
14162 *
14163 * @param index Index of the node in the data array
14164 * @param value Static string value to write.
14165 *
14166 * @codeGenApi
14167 */
14168export declare function ɵɵtext(index: number, value?: string): void;
14169
14170/**
14171 *
14172 * Update text content with a lone bound value
14173 *
14174 * Used when a text node has 1 interpolated value in it, an no additional text
14175 * surrounds that interpolated value:
14176 *
14177 * ```html
14178 * <div>{{v0}}</div>
14179 * ```
14180 *
14181 * Its compiled representation is:
14182 *
14183 * ```ts
14184 * ɵɵtextInterpolate(v0);
14185 * ```
14186 * @returns itself, so that it may be chained.
14187 * @see textInterpolateV
14188 * @codeGenApi
14189 */
14190export declare function ɵɵtextInterpolate(v0: any): typeof ɵɵtextInterpolate;
14191
14192/**
14193 *
14194 * Update text content with single bound value surrounded by other text.
14195 *
14196 * Used when a text node has 1 interpolated value in it:
14197 *
14198 * ```html
14199 * <div>prefix{{v0}}suffix</div>
14200 * ```
14201 *
14202 * Its compiled representation is:
14203 *
14204 * ```ts
14205 * ɵɵtextInterpolate1('prefix', v0, 'suffix');
14206 * ```
14207 * @returns itself, so that it may be chained.
14208 * @see textInterpolateV
14209 * @codeGenApi
14210 */
14211export declare function ɵɵtextInterpolate1(prefix: string, v0: any, suffix: string): typeof ɵɵtextInterpolate1;
14212
14213/**
14214 *
14215 * Update text content with 2 bound values surrounded by other text.
14216 *
14217 * Used when a text node has 2 interpolated values in it:
14218 *
14219 * ```html
14220 * <div>prefix{{v0}}-{{v1}}suffix</div>
14221 * ```
14222 *
14223 * Its compiled representation is:
14224 *
14225 * ```ts
14226 * ɵɵtextInterpolate2('prefix', v0, '-', v1, 'suffix');
14227 * ```
14228 * @returns itself, so that it may be chained.
14229 * @see textInterpolateV
14230 * @codeGenApi
14231 */
14232export declare function ɵɵtextInterpolate2(prefix: string, v0: any, i0: string, v1: any, suffix: string): typeof ɵɵtextInterpolate2;
14233
14234/**
14235 *
14236 * Update text content with 3 bound values surrounded by other text.
14237 *
14238 * Used when a text node has 3 interpolated values in it:
14239 *
14240 * ```html
14241 * <div>prefix{{v0}}-{{v1}}-{{v2}}suffix</div>
14242 * ```
14243 *
14244 * Its compiled representation is:
14245 *
14246 * ```ts
14247 * ɵɵtextInterpolate3(
14248 * 'prefix', v0, '-', v1, '-', v2, 'suffix');
14249 * ```
14250 * @returns itself, so that it may be chained.
14251 * @see textInterpolateV
14252 * @codeGenApi
14253 */
14254export declare function ɵɵtextInterpolate3(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, suffix: string): typeof ɵɵtextInterpolate3;
14255
14256/**
14257 *
14258 * Update text content with 4 bound values surrounded by other text.
14259 *
14260 * Used when a text node has 4 interpolated values in it:
14261 *
14262 * ```html
14263 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}suffix</div>
14264 * ```
14265 *
14266 * Its compiled representation is:
14267 *
14268 * ```ts
14269 * ɵɵtextInterpolate4(
14270 * 'prefix', v0, '-', v1, '-', v2, '-', v3, 'suffix');
14271 * ```
14272 * @returns itself, so that it may be chained.
14273 * @see ɵɵtextInterpolateV
14274 * @codeGenApi
14275 */
14276export declare function ɵɵtextInterpolate4(prefix: string, v0: any, i0: string, v1: any, i1: string, v2: any, i2: string, v3: any, suffix: string): typeof ɵɵtextInterpolate4;
14277
14278/**
14279 *
14280 * Update text content with 5 bound values surrounded by other text.
14281 *
14282 * Used when a text node has 5 interpolated values in it:
14283 *
14284 * ```html
14285 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}suffix</div>
14286 * ```
14287 *
14288 * Its compiled representation is:
14289 *
14290 * ```ts
14291 * ɵɵtextInterpolate5(
14292 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, 'suffix');
14293 * ```
14294 * @returns itself, so that it may be chained.
14295 * @see textInterpolateV
14296 * @codeGenApi
14297 */
14298export 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;
14299
14300/**
14301 *
14302 * Update text content with 6 bound values surrounded by other text.
14303 *
14304 * Used when a text node has 6 interpolated values in it:
14305 *
14306 * ```html
14307 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}suffix</div>
14308 * ```
14309 *
14310 * Its compiled representation is:
14311 *
14312 * ```ts
14313 * ɵɵtextInterpolate6(
14314 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, 'suffix');
14315 * ```
14316 *
14317 * @param i4 Static value used for concatenation only.
14318 * @param v5 Value checked for change. @returns itself, so that it may be chained.
14319 * @see textInterpolateV
14320 * @codeGenApi
14321 */
14322export 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;
14323
14324/**
14325 *
14326 * Update text content with 7 bound values surrounded by other text.
14327 *
14328 * Used when a text node has 7 interpolated values in it:
14329 *
14330 * ```html
14331 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}suffix</div>
14332 * ```
14333 *
14334 * Its compiled representation is:
14335 *
14336 * ```ts
14337 * ɵɵtextInterpolate7(
14338 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, 'suffix');
14339 * ```
14340 * @returns itself, so that it may be chained.
14341 * @see textInterpolateV
14342 * @codeGenApi
14343 */
14344export 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;
14345
14346/**
14347 *
14348 * Update text content with 8 bound values surrounded by other text.
14349 *
14350 * Used when a text node has 8 interpolated values in it:
14351 *
14352 * ```html
14353 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}suffix</div>
14354 * ```
14355 *
14356 * Its compiled representation is:
14357 *
14358 * ```ts
14359 * ɵɵtextInterpolate8(
14360 * 'prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, 'suffix');
14361 * ```
14362 * @returns itself, so that it may be chained.
14363 * @see textInterpolateV
14364 * @codeGenApi
14365 */
14366export 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;
14367
14368/**
14369 * Update text content with 9 or more bound values other surrounded by text.
14370 *
14371 * Used when the number of interpolated values exceeds 8.
14372 *
14373 * ```html
14374 * <div>prefix{{v0}}-{{v1}}-{{v2}}-{{v3}}-{{v4}}-{{v5}}-{{v6}}-{{v7}}-{{v8}}-{{v9}}suffix</div>
14375 * ```
14376 *
14377 * Its compiled representation is:
14378 *
14379 * ```ts
14380 * ɵɵtextInterpolateV(
14381 * ['prefix', v0, '-', v1, '-', v2, '-', v3, '-', v4, '-', v5, '-', v6, '-', v7, '-', v9,
14382 * 'suffix']);
14383 * ```
14384 *.
14385 * @param values The collection of values and the strings in between those values, beginning with
14386 * a string prefix and ending with a string suffix.
14387 * (e.g. `['prefix', value0, '-', value1, '-', value2, ..., value99, 'suffix']`)
14388 *
14389 * @returns itself, so that it may be chained.
14390 * @codeGenApi
14391 */
14392export declare function ɵɵtextInterpolateV(values: any[]): typeof ɵɵtextInterpolateV;
14393
14394/**
14395 * Creates new QueryList, stores the reference in LView and returns QueryList.
14396 *
14397 * @param predicate The type for which the query will search
14398 * @param descend Whether or not to descend into children
14399 * @param read What to save in the query
14400 *
14401 * @codeGenApi
14402 */
14403export declare function ɵɵviewQuery<T>(predicate: Type<any> | string[], descend: boolean, read?: any): void;
14404
14405export { }
14406
\No newline at end of file