import { CancellationToken } from 'vscode-languageserver'; import { ConfigOptions } from '../common/configOptions'; import { TextEditAction } from '../common/editAction'; import { ReadOnlyFileSystem } from '../common/fileSystem'; import { Position, TextRange } from '../common/textRange'; import { Uri } from '../common/uri/uri'; import { ImportAsNode, ImportFromAsNode, ImportFromNode, ImportNode, ModuleNode, ParseNode } from '../parser/parseNodes'; import { ParseFileResults } from '../parser/parser'; import { ImportLookupResult } from './analyzerFileInfo'; import { ModuleNameAndType } from './importResolver'; import { ImportResult } from './importResult'; export interface ImportStatement { node: ImportNode | ImportFromNode; subnode?: ImportAsNode; importResult: ImportResult | undefined; resolvedPath: Uri | undefined; moduleName: string; followsNonImportStatement: boolean; } export interface ImportStatements { orderedImports: ImportStatement[]; mapByFilePath: Map; implicitImports?: Map; } export declare const enum ImportGroup { BuiltIn = 0, ThirdParty = 1, Local = 2, LocalRelative = 3 } export interface ImportNameInfo { name?: string; alias?: string; } export interface ImportNameWithModuleInfo extends ImportNameInfo { module: ModuleNameAndType; nameForImportFrom?: string; } export interface ModuleNameInfo { name: string; nameForImportFrom?: string; } export declare function getImportGroup(statement: ImportStatement): ImportGroup; export declare function compareImportStatements(a: ImportStatement, b: ImportStatement): 1 | -1; export declare function getTopLevelImports(parseTree: ModuleNode, includeImplicitImports?: boolean): ImportStatements; export declare function getTextEditsForAutoImportSymbolAddition(importNameInfo: ImportNameInfo | ImportNameInfo[], importStatement: ImportStatement, parseFileResults: ParseFileResults): TextEditAction[]; export declare function getTextEditsForAutoImportInsertions(importNameInfo: ImportNameWithModuleInfo[] | ImportNameWithModuleInfo, importStatements: ImportStatements, parseFileResults: ParseFileResults, invocationPosition: Position): TextEditAction[]; export declare function getTextEditsForAutoImportInsertion(importNameInfo: ImportNameInfo[] | ImportNameInfo, moduleNameInfo: ModuleNameInfo, importStatements: ImportStatements, importGroup: ImportGroup, parseFileResults: ParseFileResults, invocationPosition: Position): TextEditAction[]; export declare function getContainingImportStatement(node: ParseNode | undefined, token: CancellationToken): ImportNode | ImportFromNode | undefined; export declare function getAllImportNames(node: ImportNode | ImportFromNode): ImportAsNode[] | ImportFromAsNode[]; export declare function getImportGroupFromModuleNameAndType(moduleNameAndType: ModuleNameAndType): ImportGroup; export declare function getTextRangeForImportNameDeletion(parseFileResults: ParseFileResults, nameNodes: ImportAsNode[] | ImportFromAsNode[], ...nameNodeIndexToDelete: number[]): TextRange[]; export declare function getRelativeModuleName(fs: ReadOnlyFileSystem, sourcePath: Uri, targetPath: Uri, configOptions: ConfigOptions, ignoreFolderStructure?: boolean, sourceIsFile?: boolean): string | undefined; export declare function getDirectoryLeadingDotsPointsTo(fromDirectory: Uri, leadingDots: number): Uri | undefined; export declare function getResolvedFilePath(importResult: ImportResult | undefined): Uri | undefined; export declare function haveSameParentModule(module1: string[], module2: string[]): boolean; export declare function getWildcardImportNames(lookupInfo: ImportLookupResult): string[];