import type { BaseNode } from 'estree'; declare module 'eslint' { namespace Rule { interface RuleContext { getSource(node: BaseNode): string; } } } declare module 'estree' { interface BaseNodeWithoutComments { parent?: Node; } interface NodeMap { OptionalCallExpression: OptionalCallExpression; OptionalMemberExpression: OptionalMemberExpression; TSAsExpression: TSAsExpression; TSTypeQuery: TSTypeQuery; TSTypeReference: TSTypeReference; TypeCastExpression: TypeCastExpression; } interface ExpressionMap { OptionalCallExpression: OptionalCallExpression; OptionalMemberExpression: OptionalMemberExpression; TSAsExpression: TSAsExpression; TypeCastExpression: TypeCastExpression; } interface AssignmentPattern { computed?: boolean; } interface ChainExpression { computed?: boolean; } interface TypeCastExpression extends BaseNode { type: 'TypeCastExpression'; expression: Expression; } interface TSAsExpression extends BaseNode { type: 'TSAsExpression'; expression: Expression; } interface TSTypeQuery extends BaseNode { type: 'TSTypeQuery'; } interface TSTypeReference extends BaseNode { type: 'TSTypeReference'; } /** @deprecated flow only */ interface TypeParameter extends BaseNode { type: 'TypeParameter'; } interface OptionalMemberExpression extends BaseNode { type: 'OptionalMemberExpression'; object: Expression | Super; property: Expression | PrivateIdentifier; computed: boolean; optional: boolean; } interface OptionalCallExpression extends BaseNode { type: 'OptionalCallExpression'; callee: Expression | Super; arguments: (Expression | SpreadElement)[]; } }