import { Scope, SourceCode, Rule } from 'eslint'; import * as ESTree from 'estree'; type LegacyContext = { getCwd: () => string; getFilename: () => string; getPhysicalFilename: () => string; getSourceCode: () => SourceCode; getScope: never; getAncestors: never; getDeclaredVariables: never; }; type NewContext = { cwd: string; filename: string; sourceCode: SourceCode; getPhysicalFilename?: () => string; getScope: () => Scope.Scope; getAncestors: () => ESTree.Node[]; getDeclaredVariables: (node: ESTree.Node) => Scope.Variable[]; }; export type Context = LegacyContext | NewContext | Rule.RuleContext; declare function getAncestors(context: Context, node: ESTree.Node): ESTree.Node[]; declare function getDeclaredVariables(context: Context, node: ESTree.Node): Scope.Variable[]; declare function getFilename(context: Context): string; declare function getPhysicalFilename(context: Context): string; declare function getScope(context: Context, node?: ESTree.Node): Scope.Scope; declare function getSourceCode(context: Context): SourceCode; declare function getCWD(context: Context): string | undefined; export { getAncestors, getCWD, getDeclaredVariables, getFilename, getPhysicalFilename, getScope, getSourceCode, };