import * as ts from "typescript"; import { CompilerOptions, LuaTarget } from "../../CompilerOptions"; import * as lua from "../../LuaAST"; import { ExpressionLikeNode, StatementLikeNode, VisitorMap } from "./visitors"; export interface EmitResolver { isValueAliasDeclaration(node: ts.Node): boolean; isReferencedAliasDeclaration(node: ts.Node, checkChildren?: boolean): boolean; isTopLevelValueImportEqualsWithEntityName(node: ts.ImportEqualsDeclaration): boolean; moduleExportsSomeValue(moduleReferenceExpression: ts.Expression): boolean; } export interface DiagnosticsProducingTypeChecker extends ts.TypeChecker { getEmitResolver(sourceFile?: ts.SourceFile, cancellationToken?: ts.CancellationToken): EmitResolver; } export declare class TransformationContext { program: ts.Program; sourceFile: ts.SourceFile; private visitorMap; readonly checker: DiagnosticsProducingTypeChecker; readonly resolver: EmitResolver; readonly options: CompilerOptions; readonly luaTarget: LuaTarget; readonly isModule: boolean; readonly isStrict: boolean; constructor(program: ts.Program, sourceFile: ts.SourceFile, visitorMap: VisitorMap); private currentNodeVisitors; transformNode(node: ts.Node): lua.Node[]; superTransformNode(node: ts.Node): lua.Node[]; transformExpression(node: ExpressionLikeNode): lua.Expression; superTransformExpression(node: ExpressionLikeNode): lua.Expression; transformStatements(node: StatementLikeNode | readonly StatementLikeNode[]): lua.Statement[]; superTransformStatements(node: StatementLikeNode | readonly StatementLikeNode[]): lua.Statement[]; }