import { Decorator, Identifier, ImportDeclaration, ImportSpecifier, Node, NodeArray, ObjectLiteralElementLike, PropertyAssignment, PropertyDeclaration, QualifiedName, SourceFile, StringLiteral, SyntaxKind, TypeNode } from 'typescript'; export { NodeArray }; export declare function findNodes(node: Node, kind: SyntaxKind, sourceFile?: SourceFile, recursive?: boolean): T[]; export declare function filterDuplicates(arr: T[]): T[]; export declare function flatten(arr: any[]): T[]; export declare function getDecorator(node: Decorator): string; export declare function getLeft(name: QualifiedName): string; export declare function getInitializer(node: PropertyAssignment): string; export declare function getModule(dec: ImportDeclaration): string; export declare function getName(node: ImportSpecifier): string; export declare function getNamespace(dec: ImportDeclaration): string; export declare function getPropertyAssignments(sourceFile: SourceFile): PropertyAssignment[]; export declare function getRight(name: QualifiedName): string; export declare function getTypeName(type: TypeNode): QualifiedName | Identifier; export declare function getQualifiedType(type: TypeNode): QualifiedName; export declare function getTypeArguments(property: PropertyDeclaration): NodeArray; export declare function getTypeText(property: PropertyDeclaration): string; export declare function normalizePath({text}: StringLiteral): string; export declare function removeUnnamedImports({importClause: c}: ImportDeclaration): boolean; export declare function byModule(name: string): (dec: ImportDeclaration) => boolean; export declare function byPropertyName(name: string): (node: ObjectLiteralElementLike) => boolean; export declare function byNamespace(name: string): (dec: ImportDeclaration) => boolean; export declare function byRightTypeArgument(name: string): (type: TypeNode) => boolean; export declare function byTypeName(name: string): (property: PropertyDeclaration) => boolean; export declare function objToMap(obj: { [key: string]: T; }): Map;