import { Range } from '../common/textRange'; import { Uri } from '../common/uri/uri'; import { ClassNode, ExpressionNode, FunctionNode, ImportAsNode, ImportFromAsNode, ImportFromNode, ModuleNode, NameNode, ParameterNode, ParseNode, RaiseNode, ReturnNode, StringListNode, TypeAliasNode, TypeAnnotationNode, TypeParameterNode, YieldFromNode, YieldNode } from '../parser/parseNodes'; export declare const UnresolvedModuleMarker: Uri; export declare const enum DeclarationType { Intrinsic = 0, Variable = 1, Param = 2, TypeParam = 3, TypeAlias = 4, Function = 5, Class = 6, SpecialBuiltInClass = 7, Alias = 8 } export type IntrinsicType = 'Any' | 'str' | 'str | None' | 'int' | 'MutableSequence[str]' | '__class__' | 'dict[str, Any]'; export interface DeclarationBase { type: DeclarationType; node: ParseNode; uri: Uri; range: Range; moduleName: string; isInExceptSuite: boolean; isInInlinedTypedDict?: boolean; } export interface IntrinsicDeclaration extends DeclarationBase { type: DeclarationType.Intrinsic; node: ModuleNode | FunctionNode | ClassNode; intrinsicType: IntrinsicType; } export interface ClassDeclaration extends DeclarationBase { type: DeclarationType.Class; node: ClassNode; } export interface SpecialBuiltInClassDeclaration extends DeclarationBase { type: DeclarationType.SpecialBuiltInClass; node: TypeAnnotationNode; } export interface FunctionDeclaration extends DeclarationBase { type: DeclarationType.Function; node: FunctionNode; isMethod: boolean; isGenerator: boolean; returnStatements?: ReturnNode[]; yieldStatements?: (YieldNode | YieldFromNode)[]; raiseStatements?: RaiseNode[]; } export interface ParamDeclaration extends DeclarationBase { type: DeclarationType.Param; node: ParameterNode; inferredName?: string; inferredTypeNodes?: ExpressionNode[]; } export interface TypeParamDeclaration extends DeclarationBase { type: DeclarationType.TypeParam; node: TypeParameterNode; } export interface TypeAliasDeclaration extends DeclarationBase { type: DeclarationType.TypeAlias; node: TypeAliasNode; docString?: string | undefined; } export interface VariableDeclaration extends DeclarationBase { type: DeclarationType.Variable; node: NameNode | StringListNode; typeAnnotationNode?: ExpressionNode | undefined; inferredTypeSource?: ParseNode | undefined; isConstant?: boolean | undefined; isFinal?: boolean; isDefinedBySlots?: boolean; isInferenceAllowedInPyTyped?: boolean; isRuntimeTypeExpression?: boolean; typeAliasName?: NameNode | undefined; isDefinedByMemberAccess?: boolean; docString?: string | undefined; alternativeTypeNode?: ExpressionNode; isExplicitBinding?: boolean; } export interface AliasDeclaration extends DeclarationBase { type: DeclarationType.Alias; node: ImportAsNode | ImportFromAsNode | ImportFromNode; usesLocalName: boolean; loadSymbolsFromPath: boolean; symbolName?: string | undefined; submoduleFallback?: AliasDeclaration | undefined; firstNamePart?: string | undefined; implicitImports?: Map; isUnresolved?: boolean; isNativeLib?: boolean; } export interface ModuleLoaderActions { uri: Uri; isUnresolved?: boolean; loadSymbolsFromPath: boolean; implicitImports?: Map; } export type Declaration = IntrinsicDeclaration | ClassDeclaration | SpecialBuiltInClassDeclaration | FunctionDeclaration | ParamDeclaration | TypeParamDeclaration | TypeAliasDeclaration | VariableDeclaration | AliasDeclaration; export declare function isFunctionDeclaration(decl: Declaration): decl is FunctionDeclaration; export declare function isClassDeclaration(decl: Declaration): decl is ClassDeclaration; export declare function isParamDeclaration(decl: Declaration): decl is ParamDeclaration; export declare function isTypeParamDeclaration(decl: Declaration): decl is TypeParamDeclaration; export declare function isTypeAliasDeclaration(decl: Declaration): decl is TypeAliasDeclaration; export declare function isVariableDeclaration(decl: Declaration): decl is VariableDeclaration; export declare function isAliasDeclaration(decl: Declaration): decl is AliasDeclaration; export declare function isSpecialBuiltInClassDeclaration(decl: Declaration): decl is SpecialBuiltInClassDeclaration; export declare function isIntrinsicDeclaration(decl: Declaration): decl is IntrinsicDeclaration; export declare function isUnresolvedAliasDeclaration(decl: Declaration): boolean;