/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /// import ts from 'typescript'; import { Reference } from '../../imports'; import { Declaration } from '../../reflection'; import { DynamicValue } from './dynamic'; /** * A value resulting from static resolution. * * This could be a primitive, collection type, reference to a `ts.Node` that declares a * non-primitive value, or a special `DynamicValue` type which indicates the value was not * available statically. */ export declare type ResolvedValue = number | boolean | string | null | undefined | Reference | EnumValue | ResolvedValueArray | ResolvedValueMap | ResolvedModule | KnownFn | DynamicValue; /** * An array of `ResolvedValue`s. * * This is a reified type to allow the circular reference of `ResolvedValue` -> `ResolvedValueArray` * -> `ResolvedValue`. */ export interface ResolvedValueArray extends Array { } /** * A map of strings to `ResolvedValue`s. * * This is a reified type to allow the circular reference of `ResolvedValue` -> `ResolvedValueMap` * -> `ResolvedValue`. */ export interface ResolvedValueMap extends Map { } /** * A collection of publicly exported declarations from a module. Each declaration is evaluated * lazily upon request. */ export declare class ResolvedModule { private exports; private evaluate; constructor(exports: Map, evaluate: (decl: Declaration) => ResolvedValue); getExport(name: string): ResolvedValue; getExports(): ResolvedValueMap; } /** * A value member of an enumeration. * * Contains a `Reference` to the enumeration itself, and the name of the referenced member. */ export declare class EnumValue { readonly enumRef: Reference; readonly name: string; readonly resolved: ResolvedValue; constructor(enumRef: Reference, name: string, resolved: ResolvedValue); } /** * An implementation of a known function that can be statically evaluated. * It could be a built-in function or method (such as `Array.prototype.slice`) or a TypeScript * helper (such as `__spread`). */ export declare abstract class KnownFn { abstract evaluate(node: ts.CallExpression, args: ResolvedValueArray): ResolvedValue; }