/**
* @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 { DependencyTracker } from '../../incremental/api';
import { ReflectionHost } from '../../reflection';
import { ForeignFunctionResolver } from './interface';
import { ResolvedValue } from './result';
/**
* Tracks the scope of a function body, which includes `ResolvedValue`s for the parameters of that
* body.
*/
declare type Scope = Map;
interface Context {
originatingFile: ts.SourceFile;
/**
* The module name (if any) which was used to reach the currently resolving symbols.
*/
absoluteModuleName: string | null;
/**
* A file name representing the context in which the current `absoluteModuleName`, if any, was
* resolved.
*/
resolutionContext: string;
scope: Scope;
foreignFunctionResolver?: ForeignFunctionResolver;
}
export declare class StaticInterpreter {
private host;
private checker;
private dependencyTracker;
constructor(host: ReflectionHost, checker: ts.TypeChecker, dependencyTracker: DependencyTracker | null);
visit(node: ts.Expression, context: Context): ResolvedValue;
private visitExpression;
private visitArrayLiteralExpression;
protected visitObjectLiteralExpression(node: ts.ObjectLiteralExpression, context: Context): ResolvedValue;
private visitTemplateExpression;
private visitIdentifier;
private visitDeclaration;
private visitVariableDeclaration;
private visitEnumDeclaration;
private visitElementAccessExpression;
private visitPropertyAccessExpression;
private visitSourceFile;
private visitAmbiguousDeclaration;
private accessHelper;
private visitCallExpression;
/**
* Visit an expression which was extracted from a foreign-function resolver.
*
* This will process the result and ensure it's correct for FFR-resolved values, including marking
* `Reference`s as synthetic.
*/
private visitFfrExpression;
private visitFunctionBody;
private visitConditionalExpression;
private visitPrefixUnaryExpression;
private visitBinaryExpression;
private visitParenthesizedExpression;
private evaluateFunctionArguments;
private visitSpreadElement;
private visitBindingElement;
private stringNameFromPropertyName;
private getResolvedEnum;
private getReference;
private visitType;
private visitTupleType;
}
export {};