import { AssignmentExpression, CallExpression, MemberExpression, Node, Identifier, SpreadElement, Literal, Expression, ObjectExpression, FunctionExpression, TemplateElement, ExpressionStatement, MethodDefinition, PropertyDefinition, ThisExpression, Property, VariableDeclarator, BlockStatement, Program } from 'acorn'; export declare function isMemberExpression(node: Node): node is MemberExpression; export declare function isIdentifier(node: Node): node is Identifier; export declare function isProperty(node: Node): node is Property; export declare function isThisExpression(node: Node): node is ThisExpression; export declare function isLiteral(node: Node): node is Literal; export declare function isCallExpression(node: Node): node is CallExpression; export declare function isAssignmentExpression(node: Node): node is AssignmentExpression; export declare function isExpressionStatement(node: Node): node is ExpressionStatement; export declare function isObjectExpression(node: Node): node is ObjectExpression; export declare function isFunctionExpression(node: Node): node is FunctionExpression; export declare function isSpreadElement(node: Node): node is SpreadElement; export declare function isMethodDefinition(node: Node): node is MethodDefinition; export declare function isPropertyDefinition(node: Node): node is PropertyDefinition; export declare function isVariableDeclarator(node: Node): node is VariableDeclarator; export declare function isBlockStatement(node: Node): node is BlockStatement; export declare function isProgram(node: Node): node is Program; /** * 判断节点是否为无表达式的模板字符串 * @param node * @returns */ export declare function isTemplateLiteralString(node: Node): boolean; /** * 用 newNode 替换 oldNode 的内容, 用于修改 AST 节点 * @param oldNode * @param newNode */ export declare function replaceNode(oldNode: Node, newNode: Node): void; /** * 查找函数体内的 this.methodName() 调用,并检测是否有动态 this 使用 * @param root * @returns */ export declare function findThisMethodCalls(root: FunctionExpression): { methodNames: Set; hasDymamicThis: boolean; }; /** * 创建模板字符串元素节点 * @param raw 原始字符串 * @param cooked 转义后的字符串 * @returns */ export declare function createTemplateElement(raw: string, cooked?: string): TemplateElement; /** * 创建 this.data.get/set(...args) 调用节点 * @param fnName * @param args * @returns */ export declare function createThisDataNode(fnName: string, args: Expression[]): CallExpression; /** * 创建 this.data.raw 节点 * @returns */ export declare function createThisDataRawNode(): MemberExpression; /** * 创建一条属性访问链, 如 a?.b?.c?.d * @param object root object * @param paths * @returns */ export declare function createPropertyChain(object: MemberExpression | ThisExpression, paths: string[]): MemberExpression; /** * 创建字面量节点 * @param value * @returns */ export declare function createLiteral(value: string | boolean | number | null): Literal; /** * 创建字面量属性定义节点 * @param key * @param value * @returns */ export declare function createPropertyDiffinition(key: string, value: Expression): PropertyDefinition; /** * 创建对象属性节点 * @param key * @param value * @returns */ export declare function createProperty(key: string, value: Expression): Property; /** * 创建赋值表达式节点 * @param left * @param right * @returns */ export declare function createAssignment(left: Expression, right: Expression): AssignmentExpression; /** * 判断 memberExpr 是否为 this.methodName(...) 调用 * @param memberExpr * @param methodNames * @returns */ export declare function isThisMethodCall(memberExpr: MemberExpression): boolean; /** * 获取 defineComponent 组件的名称 * @param parent * @returns */ export declare function getDefinedComponentName(parent: Node): string | undefined; /** * 将 defineComponent 节点替换为 {} * @param nodes * @returns */ export declare function removeDefineComponent(nodes: CallExpression[]): number;