import { SourceNode } from "source-map"; import * as ts from "typescript"; import { CompilerOptions } from "./CompilerOptions"; import * as lua from "./LuaAST"; import { LuaLibFeature } from "./LuaLib"; import { EmitHost } from "./transpilation"; export declare const escapeString: (value: string) => string; declare type SourceChunk = string | SourceNode; export declare type Printer = (program: ts.Program, emitHost: EmitHost, fileName: string, block: lua.Block, luaLibFeatures: Set) => PrintResult; export interface PrintResult { code: string; sourceMap: string; sourceMapNode: SourceNode; } export declare function createPrinter(printers: Printer[]): Printer; export declare class LuaPrinter { private options; private emitHost; private static operatorMap; private currentIndent; private sourceFile; constructor(options: CompilerOptions, emitHost: EmitHost, fileName: string); print(block: lua.Block, luaLibFeatures: Set): PrintResult; private printInlineSourceMap; private printStackTraceOverride; private printImplementation; protected pushIndent(): void; protected popIndent(): void; protected indent(input?: SourceChunk): SourceChunk; protected createSourceNode(node: lua.Node, chunks: SourceChunk | SourceChunk[], name?: string): SourceNode; protected concatNodes(...chunks: SourceChunk[]): SourceNode; protected printBlock(block: lua.Block): SourceNode; private statementMayRequireSemiColon; private nodeStartsWithParenthesis; protected printStatementArray(statements: lua.Statement[]): SourceChunk[]; printStatement(statement: lua.Statement): SourceNode; printDoStatement(statement: lua.DoStatement): SourceNode; printVariableDeclarationStatement(statement: lua.VariableDeclarationStatement): SourceNode; printVariableAssignmentStatement(statement: lua.AssignmentStatement): SourceNode; printIfStatement(statement: lua.IfStatement, isElseIf?: boolean): SourceNode; printWhileStatement(statement: lua.WhileStatement): SourceNode; printRepeatStatement(statement: lua.RepeatStatement): SourceNode; printForStatement(statement: lua.ForStatement): SourceNode; printForInStatement(statement: lua.ForInStatement): SourceNode; printGotoStatement(statement: lua.GotoStatement): SourceNode; printLabelStatement(statement: lua.LabelStatement): SourceNode; printReturnStatement(statement: lua.ReturnStatement): SourceNode; printBreakStatement(statement: lua.BreakStatement): SourceNode; printExpressionStatement(statement: lua.ExpressionStatement): SourceNode; printExpression(expression: lua.Expression): SourceNode; printStringLiteral(expression: lua.StringLiteral): SourceNode; printNumericLiteral(expression: lua.NumericLiteral): SourceNode; printNilLiteral(expression: lua.NilLiteral): SourceNode; printDotsLiteral(expression: lua.DotsLiteral): SourceNode; printBooleanLiteral(expression: lua.BooleanLiteral): SourceNode; private printFunctionParameters; printFunctionExpression(expression: lua.FunctionExpression): SourceNode; printFunctionDefinition(statement: lua.FunctionDefinition): SourceNode; printTableFieldExpression(expression: lua.TableFieldExpression): SourceNode; printTableExpression(expression: lua.TableExpression): SourceNode; printUnaryExpression(expression: lua.UnaryExpression): SourceNode; printBinaryExpression(expression: lua.BinaryExpression): SourceNode; private printExpressionInParenthesesIfNeeded; private needsParenthesis; printCallExpression(expression: lua.CallExpression): SourceNode; printMethodCallExpression(expression: lua.MethodCallExpression): SourceNode; printIdentifier(expression: lua.Identifier): SourceNode; printTableIndexExpression(expression: lua.TableIndexExpression): SourceNode; printOperator(kind: lua.Operator): SourceNode; protected isStatementEmpty(statement: lua.Statement): boolean; protected joinChunks(separator: string, chunks: SourceChunk[]): SourceChunk[]; protected printExpressionList(expressions: lua.Expression[]): SourceChunk[]; private buildSourceMap; } export {};