import { TSESTree } from "@typescript-eslint/typescript-estree" ; import { AST , Linter , Rule , Scope , SourceCode } from "eslint" ; interface TSRuleListener { [ key ] : ( node : TSESTree . Node ) => void ; } export interface TSRuleModule { meta ? : Rule . RuleMetaData ; create ( context ) : TSRuleListener ; } export interface TSRuleContext { id : string ; options : any [ ] ; settings : { [ name ] : any ; } ; parserPath : string ; parserOptions : Linter . ParserOptions ; parserServices : SourceCode . ParserServices ; getAncestors ( ) : TSESTree . Node [ ] ; getDeclaredVariables ( node ) : Scope . Variable [ ] ; getFilename ( ) : string ; getScope ( ) : Scope . Scope ; getSourceCode ( ) : SourceCode ; markVariableAsUsed ( name ) : boolean ; report ( descriptor ) : void ; } type TSReportDescriptor = ReportDescriptorMessage & ReportDescriptorLocation & ReportDescriptorOptions ; type ReportDescriptorMessage = { message : string ; } | { messageId : string ; } ; type ReportDescriptorLocation = { node : TSESTree . Node ; } | { loc : AST . SourceLocation | { line : number ; column : number ; } ; } ; interface ReportDescriptorOptions { data ? : { [ key ] : string ; } ; fix ? ( fixer ) : null | Rule . Fix | IterableIterator < Rule . Fix > ; }