import { FactorNode, InterpolateNode, EscapeNode, EvaluateNode, TemplateNode, FactorsNode, LinkNode } from "./ast"; import { Token } from "./lexer"; interface ASTVisitor { visitFactorNode(node: FactorNode): any; visitInterpolateNode(node: InterpolateNode): any; visitEscapeNode(node: EscapeNode): any; visitEvaluateNode(node: EvaluateNode): any; visitFactorsNode(node: FactorsNode): any; visitTemplateNode(node: TemplateNode): any; } declare type BeforeCodegenAppend = (generated: string, original: Token, needMapping: boolean) => void; export declare class CodegenVisitor implements ASTVisitor { protected tmplGenerated: string; private context; private template; private astLoader; private beforeAppend; constructor(template: TemplateNode, options: { loader: ASTLoader; beforeAppend: BeforeCodegenAppend; }, context?: { enablePrint: boolean; isContact: boolean; }); apply(): string; private append; private contact; visitLinkNode(node: LinkNode): void; visitFactorNode(node: FactorNode): void; visitInterpolateNode(node: InterpolateNode): void; visitEscapeNode(node: EscapeNode): void; visitEvaluateNode(node: EvaluateNode): void; visitFactorsNode(node: FactorsNode): void; visitTemplateNode(node: TemplateNode): void; } export declare type ASTLoader = (sourceName: string) => TemplateNode; export declare type CodegenOptions = { variable: string; useWith: boolean; soureMap: boolean; astLoader: ASTLoader; sourceName: string; }; export declare function codegen(ast: TemplateNode, options: CodegenOptions): { source: string; mappings: SourceMapping[]; }; declare type SourceMapping = { source: string; original: { line: number; column: number; }; generated: { line: number; column: number; }; }; export {}; //# sourceMappingURL=interp.d.ts.map