import { CatchClause, ClassDeclaration, ClassExpression, FunctionDeclaration, FunctionExpression, Identifier, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, JSXIdentifier, Pattern, VariableDeclarator } from 'estree-jsx'; import { NodePath } from './nodepath'; import { Scope } from './scope'; declare class BaseBinding { readonly references: NodePath[]; readonly constantViolations: NodePath[]; addReference(path: NodePath): void; removeReference(path: NodePath): void; addConstantViolation(path: NodePath): void; removeConstantViolation(path: NodePath): void; } export type BindingKind = 'var' | 'let' | 'const' | 'param' | 'unknown' | 'hoisted' | 'local' | 'module'; export type BindingPathT = ({ hoisted: NodePath; local: NodePath; module: NodePath; let: NodePath | NodePath; param: NodePath; unknown: NodePath; } & { [_ in 'var' | 'const']: NodePath; })[T]; export declare class Binding extends BaseBinding { readonly kind: BindingKind; readonly name: string; readonly scope: Scope; readonly identifierPath: NodePath; readonly path: BindingPathT; constructor(data: { kind: Binding['kind']; name: string; scope: Scope; identifierPath: Binding['identifierPath']; path: BindingPathT; }); get constant(): boolean; } export declare class GlobalBinding extends BaseBinding { readonly kind = "global"; readonly constant = false; readonly name: string; constructor(data: { name: string; }); } export {};