import * as ts from 'typescript'; import { AstChange } from './ast-utils'; /** `false` para identificadores que não são uma referência ao símbolo (import, nome de propriedade, etc.). */ export declare function isReferenceIdentifier(node: ts.Identifier): boolean; export declare function findReferences(sourceFile: ts.SourceFile, name: string): ts.Identifier[]; export declare function isArrayElement(node: ts.Identifier): boolean; /** Import nomeado (sem alias) de `name` vindo exatamente de `moduleSpecifier`. */ export declare function findNamedImport(sourceFile: ts.SourceFile, name: string, moduleSpecifier: string): { declaration: ts.ImportDeclaration; element: ts.ImportSpecifier; } | undefined; /** * Remove o identificador de todo array literal que o contém, preservando a formatação dos demais elementos. */ export declare function buildRemoveFromArraysChanges(sourceFile: ts.SourceFile, name: string): AstChange[]; /** * Troca `oldName` por `newName` dentro dos arrays literais, no lugar, sem reformatar o array. * Se `newName` já está no array, o antigo é removido. Com `keepOld`, o novo é acrescentado logo depois do antigo. */ export declare function buildReplaceInArraysChanges(sourceFile: ts.SourceFile, oldName: string, newName: string, keepOld: boolean): AstChange[]; /** * Quando uma mudança remove uma linha inteira (ex.: um `import` que ficou vazio), consome também a quebra de linha * para não deixar uma linha em branco no lugar. */ export declare function consumeRemovedLineBreaks(content: string, changes: AstChange[]): AstChange[]; /** * Standalone em `exports` de um `@NgModule` também precisa estar em `imports` do mesmo módulo (o compilador rejeita * standalone só exportado: NG6004). Quando `oldName` está em `exports` e o `imports` não o tem (nem tem `newName`), * acrescenta `newName` ao `imports` (cria a propriedade se ela não existir). Não mexe se `imports` não é um array literal. */ export declare function buildEnsureInModuleImportsChanges(sourceFile: ts.SourceFile, oldName: string, newName: string): AstChange[];