import type { Rule , SourceCode } from 'eslint' ; import type { ParamNode , VDocumentFragment , VNodeListenerMap } from './ast' ; import type { HasLocation , Token } from './node' ; export type TemplateListenerBase = { [ T in keyof VNodeListenerMap ] ? : ( node : VNodeListenerMap [ T ] ) => void ; } ; export type TemplateListener = TemplateListenerBase & Rule . NodeListener & { [ key ] : ( ( node : ParamNode ) => void ) | undefined ; } ; export interface ParserServices { getTemplateBodyTokenStore : ( ) => ParserServices . TokenStore ; defineTemplateBodyVisitor ? : ( templateBodyVisitor : TemplateListener , scriptVisitor ? : Rule . RuleListener , options ? : { templateBodyTriggerSelector : 'Program' | 'Program:exit' ; } ) => Rule . RuleListener ; defineDocumentVisitor ? : ( documentVisitor : TemplateListener , options ? : { triggerSelector : 'Program' | 'Program:exit' ; } ) => Rule . RuleListener ; getDocumentFragment ? : ( ) => VDocumentFragment | null ; } export namespace ParserServices { export interface TokenStore { getTokenByRangeStart ( offset , options ? ) : Token | null ; getFirstToken ( node ) : Token ; getFirstToken ( node , options ) : Token ; getFirstToken ( node , options ) : Token | null ; getLastToken ( node ) : Token ; getLastToken ( node , options ) : Token ; getLastToken ( node , options ) : Token | null ; getTokenBefore ( node ) : Token ; getTokenBefore ( node , options ) : Token ; getTokenBefore ( node , options ) : Token ; getTokenBefore ( node , options ) : Token | null ; getTokenAfter ( node ) : Token ; getTokenAfter ( node , options ) : Token ; getTokenAfter ( node , options ) : Token ; getTokenAfter ( node , options ) : Token | null ; getFirstTokenBetween ( left , right , options ? ) : Token | null ; getLastTokenBetween ( left , right , options ? ) : Token | null ; getTokenOrCommentBefore ( node , skip ? ) : Token | null ; getTokenOrCommentAfter ( node , skip ? ) : Token | null ; getFirstTokens ( node , options ? ) : Token [ ] ; getLastTokens ( node , options ? ) : Token [ ] ; getTokensBefore ( node , options ? ) : Token [ ] ; getTokensAfter ( node , options ? ) : Token [ ] ; getFirstTokensBetween ( left , right , options ? ) : Token [ ] ; getLastTokensBetween ( left , right , options ? ) : Token [ ] ; getTokens ( node , beforeCount ? , afterCount ? ) : Token [ ] ; getTokensBetween ( left , right , padding ? ) : Token [ ] ; commentsExistBetween ( left , right ) : boolean ; getCommentsBefore ( nodeOrToken ) : Token [ ] ; getCommentsAfter ( nodeOrToken ) : Token [ ] ; getCommentsInside ( node ) : Token [ ] ; } }