import ts, { __String, ArrowFunction, BinaryExpression, EntityName, Expression, Identifier, ImportDeclaration, JSDoc, JSDocImportTag, ModifierLike, Node, NodeArray, NodeFactory, PrivateIdentifier, PropertyAccessExpression, PropertyName, QualifiedName, StringLiteral, SymbolTable } from 'typescript'; import { SourceFile } from './ts-types.js'; export type PackExpression = Expression | string | number | boolean | bigint; export declare function getIdentifierName(node: Identifier | PrivateIdentifier | StringLiteral | __String): string; export declare function getEscapedText(node: Identifier | PrivateIdentifier | StringLiteral | __String): string; export declare function findSourceFile(node: Node): SourceFile | undefined; export declare function joinQualifiedName(name: EntityName): string; export declare function getCommentOfNode(sourceFile: SourceFile, node: Node): string | undefined; export declare function parseJSDocAttributeFromText(comment: string, attribute: string): string | undefined; export declare function extractJSDocAttribute(sourceFile: SourceFile, node: Node | undefined, attribute: string): string | undefined; export declare function getPropertyName(f: NodeFactory, node?: PropertyName): string | symbol | number | ArrowFunction; export declare function getNameAsString(node?: PropertyName | QualifiedName): string; export declare function hasModifier(node: Node & { modifiers?: NodeArray; }, modifier: ts.SyntaxKind): boolean; export declare class NodeConverter { protected f: NodeFactory; constructor(f: NodeFactory); toExpression(node?: T): Expression; } export declare function isNodeWithLocals(node: Node): node is (Node & { locals: SymbolTable | undefined; }); export declare function getGlobalsOfSourceFile(file: SourceFile): SymbolTable | void; /** * For imports that can removed (like a class import only used as type only, like `p: Model[]`) we have * to modify the import so TS does not remove it. */ export declare function ensureImportIsEmitted(importDeclaration: ImportDeclaration | JSDocImportTag, specifierName?: Identifier): void; /** * Serializes an entity name as an expression for decorator type metadata. * * @param node The entity name to serialize. */ export declare function serializeEntityNameAsExpression(f: NodeFactory, node: EntityName): SerializedEntityNameAsExpression; type SerializedEntityNameAsExpression = Identifier | BinaryExpression | PropertyAccessExpression; export type MetaNode = Node & { jsDoc?: JSDoc[]; _original?: MetaNode; original?: MetaNode; _symbol?: Symbol; symbol?: Symbol; _parent?: MetaNode; localSymbol?: Symbol; }; export {};