export interface Node {
							 | 
						|
								  start: number
							 | 
						|
								  end: number
							 | 
						|
								  type: string
							 | 
						|
								  range?: [number, number]
							 | 
						|
								  loc?: SourceLocation | null
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface SourceLocation {
							 | 
						|
								  source?: string | null
							 | 
						|
								  start: Position
							 | 
						|
								  end: Position
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface Position {
							 | 
						|
								  /** 1-based */
							 | 
						|
								  line: number
							 | 
						|
								  /** 0-based */
							 | 
						|
								  column: number
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface Identifier extends Node {
							 | 
						|
								  type: "Identifier"
							 | 
						|
								  name: string
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface Literal extends Node {
							 | 
						|
								  type: "Literal"
							 | 
						|
								  value?: string | boolean | null | number | RegExp | bigint
							 | 
						|
								  raw?: string
							 | 
						|
								  regex?: {
							 | 
						|
								    pattern: string
							 | 
						|
								    flags: string
							 | 
						|
								  }
							 | 
						|
								  bigint?: string
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface Program extends Node {
							 | 
						|
								  type: "Program"
							 | 
						|
								  body: Array<Statement | ModuleDeclaration>
							 | 
						|
								  sourceType: "script" | "module"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface Function extends Node {
							 | 
						|
								  id?: Identifier | null
							 | 
						|
								  params: Array<Pattern>
							 | 
						|
								  body: BlockStatement | Expression
							 | 
						|
								  generator: boolean
							 | 
						|
								  expression: boolean
							 | 
						|
								  async: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ExpressionStatement extends Node {
							 | 
						|
								  type: "ExpressionStatement"
							 | 
						|
								  expression: Expression | Literal
							 | 
						|
								  directive?: string
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface BlockStatement extends Node {
							 | 
						|
								  type: "BlockStatement"
							 | 
						|
								  body: Array<Statement>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface EmptyStatement extends Node {
							 | 
						|
								  type: "EmptyStatement"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface DebuggerStatement extends Node {
							 | 
						|
								  type: "DebuggerStatement"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface WithStatement extends Node {
							 | 
						|
								  type: "WithStatement"
							 | 
						|
								  object: Expression
							 | 
						|
								  body: Statement
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ReturnStatement extends Node {
							 | 
						|
								  type: "ReturnStatement"
							 | 
						|
								  argument?: Expression | null
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface LabeledStatement extends Node {
							 | 
						|
								  type: "LabeledStatement"
							 | 
						|
								  label: Identifier
							 | 
						|
								  body: Statement
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface BreakStatement extends Node {
							 | 
						|
								  type: "BreakStatement"
							 | 
						|
								  label?: Identifier | null
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ContinueStatement extends Node {
							 | 
						|
								  type: "ContinueStatement"
							 | 
						|
								  label?: Identifier | null
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface IfStatement extends Node {
							 | 
						|
								  type: "IfStatement"
							 | 
						|
								  test: Expression
							 | 
						|
								  consequent: Statement
							 | 
						|
								  alternate?: Statement | null
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface SwitchStatement extends Node {
							 | 
						|
								  type: "SwitchStatement"
							 | 
						|
								  discriminant: Expression
							 | 
						|
								  cases: Array<SwitchCase>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface SwitchCase extends Node {
							 | 
						|
								  type: "SwitchCase"
							 | 
						|
								  test?: Expression | null
							 | 
						|
								  consequent: Array<Statement>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ThrowStatement extends Node {
							 | 
						|
								  type: "ThrowStatement"
							 | 
						|
								  argument: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface TryStatement extends Node {
							 | 
						|
								  type: "TryStatement"
							 | 
						|
								  block: BlockStatement
							 | 
						|
								  handler?: CatchClause | null
							 | 
						|
								  finalizer?: BlockStatement | null
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface CatchClause extends Node {
							 | 
						|
								  type: "CatchClause"
							 | 
						|
								  param?: Pattern | null
							 | 
						|
								  body: BlockStatement
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface WhileStatement extends Node {
							 | 
						|
								  type: "WhileStatement"
							 | 
						|
								  test: Expression
							 | 
						|
								  body: Statement
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface DoWhileStatement extends Node {
							 | 
						|
								  type: "DoWhileStatement"
							 | 
						|
								  body: Statement
							 | 
						|
								  test: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ForStatement extends Node {
							 | 
						|
								  type: "ForStatement"
							 | 
						|
								  init?: VariableDeclaration | Expression | null
							 | 
						|
								  test?: Expression | null
							 | 
						|
								  update?: Expression | null
							 | 
						|
								  body: Statement
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ForInStatement extends Node {
							 | 
						|
								  type: "ForInStatement"
							 | 
						|
								  left: VariableDeclaration | Pattern
							 | 
						|
								  right: Expression
							 | 
						|
								  body: Statement
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface FunctionDeclaration extends Function {
							 | 
						|
								  type: "FunctionDeclaration"
							 | 
						|
								  id: Identifier
							 | 
						|
								  body: BlockStatement
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface VariableDeclaration extends Node {
							 | 
						|
								  type: "VariableDeclaration"
							 | 
						|
								  declarations: Array<VariableDeclarator>
							 | 
						|
								  kind: "var" | "let" | "const"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface VariableDeclarator extends Node {
							 | 
						|
								  type: "VariableDeclarator"
							 | 
						|
								  id: Pattern
							 | 
						|
								  init?: Expression | null
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ThisExpression extends Node {
							 | 
						|
								  type: "ThisExpression"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ArrayExpression extends Node {
							 | 
						|
								  type: "ArrayExpression"
							 | 
						|
								  elements: Array<Expression | SpreadElement | null>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ObjectExpression extends Node {
							 | 
						|
								  type: "ObjectExpression"
							 | 
						|
								  properties: Array<Property | SpreadElement>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface Property extends Node {
							 | 
						|
								  type: "Property"
							 | 
						|
								  key: Expression
							 | 
						|
								  value: Expression
							 | 
						|
								  kind: "init" | "get" | "set"
							 | 
						|
								  method: boolean
							 | 
						|
								  shorthand: boolean
							 | 
						|
								  computed: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface FunctionExpression extends Function {
							 | 
						|
								  type: "FunctionExpression"
							 | 
						|
								  body: BlockStatement
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface UnaryExpression extends Node {
							 | 
						|
								  type: "UnaryExpression"
							 | 
						|
								  operator: UnaryOperator
							 | 
						|
								  prefix: boolean
							 | 
						|
								  argument: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export type UnaryOperator = "-" | "+" | "!" | "~" | "typeof" | "void" | "delete"
							 | 
						|
								
							 | 
						|
								export interface UpdateExpression extends Node {
							 | 
						|
								  type: "UpdateExpression"
							 | 
						|
								  operator: UpdateOperator
							 | 
						|
								  argument: Expression
							 | 
						|
								  prefix: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export type UpdateOperator = "++" | "--"
							 | 
						|
								
							 | 
						|
								export interface BinaryExpression extends Node {
							 | 
						|
								  type: "BinaryExpression"
							 | 
						|
								  operator: BinaryOperator
							 | 
						|
								  left: Expression | PrivateIdentifier
							 | 
						|
								  right: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export type BinaryOperator = "==" | "!=" | "===" | "!==" | "<" | "<=" | ">" | ">=" | "<<" | ">>" | ">>>" | "+" | "-" | "*" | "/" | "%" | "|" | "^" | "&" | "in" | "instanceof" | "**"
							 | 
						|
								
							 | 
						|
								export interface AssignmentExpression extends Node {
							 | 
						|
								  type: "AssignmentExpression"
							 | 
						|
								  operator: AssignmentOperator
							 | 
						|
								  left: Pattern
							 | 
						|
								  right: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export type AssignmentOperator = "=" | "+=" | "-=" | "*=" | "/=" | "%=" | "<<=" | ">>=" | ">>>=" | "|=" | "^=" | "&=" | "**=" | "||=" | "&&=" | "??="
							 | 
						|
								
							 | 
						|
								export interface LogicalExpression extends Node {
							 | 
						|
								  type: "LogicalExpression"
							 | 
						|
								  operator: LogicalOperator
							 | 
						|
								  left: Expression
							 | 
						|
								  right: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export type LogicalOperator = "||" | "&&" | "??"
							 | 
						|
								
							 | 
						|
								export interface MemberExpression extends Node {
							 | 
						|
								  type: "MemberExpression"
							 | 
						|
								  object: Expression | Super
							 | 
						|
								  property: Expression | PrivateIdentifier
							 | 
						|
								  computed: boolean
							 | 
						|
								  optional: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ConditionalExpression extends Node {
							 | 
						|
								  type: "ConditionalExpression"
							 | 
						|
								  test: Expression
							 | 
						|
								  alternate: Expression
							 | 
						|
								  consequent: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface CallExpression extends Node {
							 | 
						|
								  type: "CallExpression"
							 | 
						|
								  callee: Expression | Super
							 | 
						|
								  arguments: Array<Expression | SpreadElement>
							 | 
						|
								  optional: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface NewExpression extends Node {
							 | 
						|
								  type: "NewExpression"
							 | 
						|
								  callee: Expression
							 | 
						|
								  arguments: Array<Expression | SpreadElement>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface SequenceExpression extends Node {
							 | 
						|
								  type: "SequenceExpression"
							 | 
						|
								  expressions: Array<Expression>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ForOfStatement extends Node {
							 | 
						|
								  type: "ForOfStatement"
							 | 
						|
								  left: VariableDeclaration | Pattern
							 | 
						|
								  right: Expression
							 | 
						|
								  body: Statement
							 | 
						|
								  await: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface Super extends Node {
							 | 
						|
								  type: "Super"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface SpreadElement extends Node {
							 | 
						|
								  type: "SpreadElement"
							 | 
						|
								  argument: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ArrowFunctionExpression extends Function {
							 | 
						|
								  type: "ArrowFunctionExpression"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface YieldExpression extends Node {
							 | 
						|
								  type: "YieldExpression"
							 | 
						|
								  argument?: Expression | null
							 | 
						|
								  delegate: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface TemplateLiteral extends Node {
							 | 
						|
								  type: "TemplateLiteral"
							 | 
						|
								  quasis: Array<TemplateElement>
							 | 
						|
								  expressions: Array<Expression>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface TaggedTemplateExpression extends Node {
							 | 
						|
								  type: "TaggedTemplateExpression"
							 | 
						|
								  tag: Expression
							 | 
						|
								  quasi: TemplateLiteral
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface TemplateElement extends Node {
							 | 
						|
								  type: "TemplateElement"
							 | 
						|
								  tail: boolean
							 | 
						|
								  value: {
							 | 
						|
								    cooked?: string | null
							 | 
						|
								    raw: string
							 | 
						|
								  }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface AssignmentProperty extends Node {
							 | 
						|
								  type: "Property"
							 | 
						|
								  key: Expression
							 | 
						|
								  value: Pattern
							 | 
						|
								  kind: "init"
							 | 
						|
								  method: false
							 | 
						|
								  shorthand: boolean
							 | 
						|
								  computed: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ObjectPattern extends Node {
							 | 
						|
								  type: "ObjectPattern"
							 | 
						|
								  properties: Array<AssignmentProperty | RestElement>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ArrayPattern extends Node {
							 | 
						|
								  type: "ArrayPattern"
							 | 
						|
								  elements: Array<Pattern | null>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface RestElement extends Node {
							 | 
						|
								  type: "RestElement"
							 | 
						|
								  argument: Pattern
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface AssignmentPattern extends Node {
							 | 
						|
								  type: "AssignmentPattern"
							 | 
						|
								  left: Pattern
							 | 
						|
								  right: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface Class extends Node {
							 | 
						|
								  id?: Identifier | null
							 | 
						|
								  superClass?: Expression | null
							 | 
						|
								  body: ClassBody
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ClassBody extends Node {
							 | 
						|
								  type: "ClassBody"
							 | 
						|
								  body: Array<MethodDefinition | PropertyDefinition | StaticBlock>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface MethodDefinition extends Node {
							 | 
						|
								  type: "MethodDefinition"
							 | 
						|
								  key: Expression | PrivateIdentifier
							 | 
						|
								  value: FunctionExpression
							 | 
						|
								  kind: "constructor" | "method" | "get" | "set"
							 | 
						|
								  computed: boolean
							 | 
						|
								  static: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ClassDeclaration extends Class {
							 | 
						|
								  type: "ClassDeclaration"
							 | 
						|
								  id: Identifier
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ClassExpression extends Class {
							 | 
						|
								  type: "ClassExpression"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface MetaProperty extends Node {
							 | 
						|
								  type: "MetaProperty"
							 | 
						|
								  meta: Identifier
							 | 
						|
								  property: Identifier
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ImportDeclaration extends Node {
							 | 
						|
								  type: "ImportDeclaration"
							 | 
						|
								  specifiers: Array<ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier>
							 | 
						|
								  source: Literal
							 | 
						|
								  attributes: Array<ImportAttribute>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ImportSpecifier extends Node {
							 | 
						|
								  type: "ImportSpecifier"
							 | 
						|
								  imported: Identifier | Literal
							 | 
						|
								  local: Identifier
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ImportDefaultSpecifier extends Node {
							 | 
						|
								  type: "ImportDefaultSpecifier"
							 | 
						|
								  local: Identifier
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ImportNamespaceSpecifier extends Node {
							 | 
						|
								  type: "ImportNamespaceSpecifier"
							 | 
						|
								  local: Identifier
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ImportAttribute extends Node {
							 | 
						|
								  type: "ImportAttribute"
							 | 
						|
								  key: Identifier | Literal
							 | 
						|
								  value: Literal
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ExportNamedDeclaration extends Node {
							 | 
						|
								  type: "ExportNamedDeclaration"
							 | 
						|
								  declaration?: Declaration | null
							 | 
						|
								  specifiers: Array<ExportSpecifier>
							 | 
						|
								  source?: Literal | null
							 | 
						|
								  attributes: Array<ImportAttribute>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ExportSpecifier extends Node {
							 | 
						|
								  type: "ExportSpecifier"
							 | 
						|
								  exported: Identifier | Literal
							 | 
						|
								  local: Identifier | Literal
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface AnonymousFunctionDeclaration extends Function {
							 | 
						|
								  type: "FunctionDeclaration"
							 | 
						|
								  id: null
							 | 
						|
								  body: BlockStatement
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface AnonymousClassDeclaration extends Class {
							 | 
						|
								  type: "ClassDeclaration"
							 | 
						|
								  id: null
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ExportDefaultDeclaration extends Node {
							 | 
						|
								  type: "ExportDefaultDeclaration"
							 | 
						|
								  declaration: AnonymousFunctionDeclaration | FunctionDeclaration | AnonymousClassDeclaration | ClassDeclaration | Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ExportAllDeclaration extends Node {
							 | 
						|
								  type: "ExportAllDeclaration"
							 | 
						|
								  source: Literal
							 | 
						|
								  exported?: Identifier | Literal | null
							 | 
						|
								  attributes: Array<ImportAttribute>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface AwaitExpression extends Node {
							 | 
						|
								  type: "AwaitExpression"
							 | 
						|
								  argument: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ChainExpression extends Node {
							 | 
						|
								  type: "ChainExpression"
							 | 
						|
								  expression: MemberExpression | CallExpression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ImportExpression extends Node {
							 | 
						|
								  type: "ImportExpression"
							 | 
						|
								  source: Expression
							 | 
						|
								  options: Expression | null
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface ParenthesizedExpression extends Node {
							 | 
						|
								  type: "ParenthesizedExpression"
							 | 
						|
								  expression: Expression
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface PropertyDefinition extends Node {
							 | 
						|
								  type: "PropertyDefinition"
							 | 
						|
								  key: Expression | PrivateIdentifier
							 | 
						|
								  value?: Expression | null
							 | 
						|
								  computed: boolean
							 | 
						|
								  static: boolean
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface PrivateIdentifier extends Node {
							 | 
						|
								  type: "PrivateIdentifier"
							 | 
						|
								  name: string
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface StaticBlock extends Node {
							 | 
						|
								  type: "StaticBlock"
							 | 
						|
								  body: Array<Statement>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export type Statement = 
							 | 
						|
								| ExpressionStatement
							 | 
						|
								| BlockStatement
							 | 
						|
								| EmptyStatement
							 | 
						|
								| DebuggerStatement
							 | 
						|
								| WithStatement
							 | 
						|
								| ReturnStatement
							 | 
						|
								| LabeledStatement
							 | 
						|
								| BreakStatement
							 | 
						|
								| ContinueStatement
							 | 
						|
								| IfStatement
							 | 
						|
								| SwitchStatement
							 | 
						|
								| ThrowStatement
							 | 
						|
								| TryStatement
							 | 
						|
								| WhileStatement
							 | 
						|
								| DoWhileStatement
							 | 
						|
								| ForStatement
							 | 
						|
								| ForInStatement
							 | 
						|
								| ForOfStatement
							 | 
						|
								| Declaration
							 | 
						|
								
							 | 
						|
								export type Declaration = 
							 | 
						|
								| FunctionDeclaration
							 | 
						|
								| VariableDeclaration
							 | 
						|
								| ClassDeclaration
							 | 
						|
								
							 | 
						|
								export type Expression = 
							 | 
						|
								| Identifier
							 | 
						|
								| Literal
							 | 
						|
								| ThisExpression
							 | 
						|
								| ArrayExpression
							 | 
						|
								| ObjectExpression
							 | 
						|
								| FunctionExpression
							 | 
						|
								| UnaryExpression
							 | 
						|
								| UpdateExpression
							 | 
						|
								| BinaryExpression
							 | 
						|
								| AssignmentExpression
							 | 
						|
								| LogicalExpression
							 | 
						|
								| MemberExpression
							 | 
						|
								| ConditionalExpression
							 | 
						|
								| CallExpression
							 | 
						|
								| NewExpression
							 | 
						|
								| SequenceExpression
							 | 
						|
								| ArrowFunctionExpression
							 | 
						|
								| YieldExpression
							 | 
						|
								| TemplateLiteral
							 | 
						|
								| TaggedTemplateExpression
							 | 
						|
								| ClassExpression
							 | 
						|
								| MetaProperty
							 | 
						|
								| AwaitExpression
							 | 
						|
								| ChainExpression
							 | 
						|
								| ImportExpression
							 | 
						|
								| ParenthesizedExpression
							 | 
						|
								
							 | 
						|
								export type Pattern = 
							 | 
						|
								| Identifier
							 | 
						|
								| MemberExpression
							 | 
						|
								| ObjectPattern
							 | 
						|
								| ArrayPattern
							 | 
						|
								| RestElement
							 | 
						|
								| AssignmentPattern
							 | 
						|
								
							 | 
						|
								export type ModuleDeclaration = 
							 | 
						|
								| ImportDeclaration
							 | 
						|
								| ExportNamedDeclaration
							 | 
						|
								| ExportDefaultDeclaration
							 | 
						|
								| ExportAllDeclaration
							 | 
						|
								
							 | 
						|
								export type AnyNode = Statement | Expression | Declaration | ModuleDeclaration | Literal | Program | SwitchCase | CatchClause | Property | Super | SpreadElement | TemplateElement | AssignmentProperty | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | ClassBody | MethodDefinition | MetaProperty | ImportAttribute | ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier | AnonymousFunctionDeclaration | AnonymousClassDeclaration | PropertyDefinition | PrivateIdentifier | StaticBlock | VariableDeclarator
							 | 
						|
								
							 | 
						|
								export function parse(input: string, options: Options): Program
							 | 
						|
								
							 | 
						|
								export function parseExpressionAt(input: string, pos: number, options: Options): Expression
							 | 
						|
								
							 | 
						|
								export function tokenizer(input: string, options: Options): {
							 | 
						|
								  getToken(): Token
							 | 
						|
								  [Symbol.iterator](): Iterator<Token>
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export type ecmaVersion = 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | "latest"
							 | 
						|
								
							 | 
						|
								export interface Options {
							 | 
						|
								  /**
							 | 
						|
								   * `ecmaVersion` indicates the ECMAScript version to parse. Can be a
							 | 
						|
								   * number, either in year (`2022`) or plain version number (`6`) form,
							 | 
						|
								   * or `"latest"` (the latest the library supports). This influences
							 | 
						|
								   * support for strict mode, the set of reserved words, and support for
							 | 
						|
								   * new syntax features.
							 | 
						|
								   */
							 | 
						|
								  ecmaVersion: ecmaVersion
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * `sourceType` indicates the mode the code should be parsed in.
							 | 
						|
								   * Can be either `"script"` or `"module"`. This influences global
							 | 
						|
								   * strict mode and parsing of `import` and `export` declarations.
							 | 
						|
								   */
							 | 
						|
								  sourceType?: "script" | "module"
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * a callback that will be called when a semicolon is automatically inserted.
							 | 
						|
								   * @param lastTokEnd the position of the comma as an offset
							 | 
						|
								   * @param lastTokEndLoc location if {@link locations} is enabled
							 | 
						|
								   */
							 | 
						|
								  onInsertedSemicolon?: (lastTokEnd: number, lastTokEndLoc?: Position) => void
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * similar to `onInsertedSemicolon`, but for trailing commas
							 | 
						|
								   * @param lastTokEnd the position of the comma as an offset
							 | 
						|
								   * @param lastTokEndLoc location if `locations` is enabled
							 | 
						|
								   */
							 | 
						|
								  onTrailingComma?: (lastTokEnd: number, lastTokEndLoc?: Position) => void
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * By default, reserved words are only enforced if ecmaVersion >= 5.
							 | 
						|
								   * Set `allowReserved` to a boolean value to explicitly turn this on
							 | 
						|
								   * an off. When this option has the value "never", reserved words
							 | 
						|
								   * and keywords can also not be used as property names.
							 | 
						|
								   */
							 | 
						|
								  allowReserved?: boolean | "never"
							 | 
						|
								
							 | 
						|
								  /** 
							 | 
						|
								   * When enabled, a return at the top level is not considered an error.
							 | 
						|
								   */
							 | 
						|
								  allowReturnOutsideFunction?: boolean
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * When enabled, import/export statements are not constrained to
							 | 
						|
								   * appearing at the top of the program, and an import.meta expression
							 | 
						|
								   * in a script isn't considered an error.
							 | 
						|
								   */
							 | 
						|
								  allowImportExportEverywhere?: boolean
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * By default, `await` identifiers are allowed to appear at the top-level scope only if {@link ecmaVersion} >= 2022.
							 | 
						|
								   * When enabled, await identifiers are allowed to appear at the top-level scope,
							 | 
						|
								   * but they are still not allowed in non-async functions.
							 | 
						|
								   */
							 | 
						|
								  allowAwaitOutsideFunction?: boolean
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * When enabled, super identifiers are not constrained to
							 | 
						|
								   * appearing in methods and do not raise an error when they appear elsewhere.
							 | 
						|
								   */
							 | 
						|
								  allowSuperOutsideMethod?: boolean
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * When enabled, hashbang directive in the beginning of file is
							 | 
						|
								   * allowed and treated as a line comment. Enabled by default when
							 | 
						|
								   * {@link ecmaVersion} >= 2023.
							 | 
						|
								   */
							 | 
						|
								  allowHashBang?: boolean
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * By default, the parser will verify that private properties are
							 | 
						|
								   * only used in places where they are valid and have been declared.
							 | 
						|
								   * Set this to false to turn such checks off.
							 | 
						|
								   */
							 | 
						|
								  checkPrivateFields?: boolean
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * When `locations` is on, `loc` properties holding objects with
							 | 
						|
								   * `start` and `end` properties as {@link Position} objects will be attached to the
							 | 
						|
								   * nodes.
							 | 
						|
								   */
							 | 
						|
								  locations?: boolean
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * a callback that will cause Acorn to call that export function with object in the same
							 | 
						|
								   * format as tokens returned from `tokenizer().getToken()`. Note
							 | 
						|
								   * that you are not allowed to call the parser from the
							 | 
						|
								   * callback—that will corrupt its internal state.
							 | 
						|
								   */
							 | 
						|
								  onToken?: ((token: Token) => void) | Token[]
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * This takes a export function or an array.
							 | 
						|
								   * 
							 | 
						|
								   * When a export function is passed, Acorn will call that export function with `(block, text, start,
							 | 
						|
								   * end)` parameters whenever a comment is skipped. `block` is a
							 | 
						|
								   * boolean indicating whether this is a block (`/* *\/`) comment,
							 | 
						|
								   * `text` is the content of the comment, and `start` and `end` are
							 | 
						|
								   * character offsets that denote the start and end of the comment.
							 | 
						|
								   * When the {@link locations} option is on, two more parameters are
							 | 
						|
								   * passed, the full locations of {@link Position} export type of the start and
							 | 
						|
								   * end of the comments.
							 | 
						|
								   * 
							 | 
						|
								   * When a array is passed, each found comment of {@link Comment} export type is pushed to the array.
							 | 
						|
								   * 
							 | 
						|
								   * Note that you are not allowed to call the
							 | 
						|
								   * parser from the callback—that will corrupt its internal state.
							 | 
						|
								   */
							 | 
						|
								  onComment?: ((
							 | 
						|
								    isBlock: boolean, text: string, start: number, end: number, startLoc?: Position,
							 | 
						|
								    endLoc?: Position
							 | 
						|
								  ) => void) | Comment[]
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * Nodes have their start and end characters offsets recorded in
							 | 
						|
								   * `start` and `end` properties (directly on the node, rather than
							 | 
						|
								   * the `loc` object, which holds line/column data. To also add a
							 | 
						|
								   * [semi-standardized][range] `range` property holding a `[start,
							 | 
						|
								   * end]` array with the same numbers, set the `ranges` option to
							 | 
						|
								   * `true`.
							 | 
						|
								   */
							 | 
						|
								  ranges?: boolean
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * It is possible to parse multiple files into a single AST by
							 | 
						|
								   * passing the tree produced by parsing the first file as
							 | 
						|
								   * `program` option in subsequent parses. This will add the
							 | 
						|
								   * toplevel forms of the parsed file to the `Program` (top) node
							 | 
						|
								   * of an existing parse tree.
							 | 
						|
								   */
							 | 
						|
								  program?: Node
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * When {@link locations} is on, you can pass this to record the source
							 | 
						|
								   * file in every node's `loc` object.
							 | 
						|
								   */
							 | 
						|
								  sourceFile?: string
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * This value, if given, is stored in every node, whether {@link locations} is on or off.
							 | 
						|
								   */
							 | 
						|
								  directSourceFile?: string
							 | 
						|
								
							 | 
						|
								  /**
							 | 
						|
								   * When enabled, parenthesized expressions are represented by
							 | 
						|
								   * (non-standard) ParenthesizedExpression nodes
							 | 
						|
								   */
							 | 
						|
								  preserveParens?: boolean
							 | 
						|
								}
							 | 
						|
								  
							 | 
						|
								export class Parser {
							 | 
						|
								  options: Options
							 | 
						|
								  input: string
							 | 
						|
								  
							 | 
						|
								  protected constructor(options: Options, input: string, startPos?: number)
							 | 
						|
								  parse(): Program
							 | 
						|
								  
							 | 
						|
								  static parse(input: string, options: Options): Program
							 | 
						|
								  static parseExpressionAt(input: string, pos: number, options: Options): Expression
							 | 
						|
								  static tokenizer(input: string, options: Options): {
							 | 
						|
								    getToken(): Token
							 | 
						|
								    [Symbol.iterator](): Iterator<Token>
							 | 
						|
								  }
							 | 
						|
								  static extend(...plugins: ((BaseParser: typeof Parser) => typeof Parser)[]): typeof Parser
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export const defaultOptions: Options
							 | 
						|
								
							 | 
						|
								export function getLineInfo(input: string, offset: number): Position
							 | 
						|
								
							 | 
						|
								export class TokenType {
							 | 
						|
								  label: string
							 | 
						|
								  keyword: string | undefined
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export const tokTypes: {
							 | 
						|
								  num: TokenType
							 | 
						|
								  regexp: TokenType
							 | 
						|
								  string: TokenType
							 | 
						|
								  name: TokenType
							 | 
						|
								  privateId: TokenType
							 | 
						|
								  eof: TokenType
							 | 
						|
								
							 | 
						|
								  bracketL: TokenType
							 | 
						|
								  bracketR: TokenType
							 | 
						|
								  braceL: TokenType
							 | 
						|
								  braceR: TokenType
							 | 
						|
								  parenL: TokenType
							 | 
						|
								  parenR: TokenType
							 | 
						|
								  comma: TokenType
							 | 
						|
								  semi: TokenType
							 | 
						|
								  colon: TokenType
							 | 
						|
								  dot: TokenType
							 | 
						|
								  question: TokenType
							 | 
						|
								  questionDot: TokenType
							 | 
						|
								  arrow: TokenType
							 | 
						|
								  template: TokenType
							 | 
						|
								  invalidTemplate: TokenType
							 | 
						|
								  ellipsis: TokenType
							 | 
						|
								  backQuote: TokenType
							 | 
						|
								  dollarBraceL: TokenType
							 | 
						|
								
							 | 
						|
								  eq: TokenType
							 | 
						|
								  assign: TokenType
							 | 
						|
								  incDec: TokenType
							 | 
						|
								  prefix: TokenType
							 | 
						|
								  logicalOR: TokenType
							 | 
						|
								  logicalAND: TokenType
							 | 
						|
								  bitwiseOR: TokenType
							 | 
						|
								  bitwiseXOR: TokenType
							 | 
						|
								  bitwiseAND: TokenType
							 | 
						|
								  equality: TokenType
							 | 
						|
								  relational: TokenType
							 | 
						|
								  bitShift: TokenType
							 | 
						|
								  plusMin: TokenType
							 | 
						|
								  modulo: TokenType
							 | 
						|
								  star: TokenType
							 | 
						|
								  slash: TokenType
							 | 
						|
								  starstar: TokenType
							 | 
						|
								  coalesce: TokenType
							 | 
						|
								
							 | 
						|
								  _break: TokenType
							 | 
						|
								  _case: TokenType
							 | 
						|
								  _catch: TokenType
							 | 
						|
								  _continue: TokenType
							 | 
						|
								  _debugger: TokenType
							 | 
						|
								  _default: TokenType
							 | 
						|
								  _do: TokenType
							 | 
						|
								  _else: TokenType
							 | 
						|
								  _finally: TokenType
							 | 
						|
								  _for: TokenType
							 | 
						|
								  _function: TokenType
							 | 
						|
								  _if: TokenType
							 | 
						|
								  _return: TokenType
							 | 
						|
								  _switch: TokenType
							 | 
						|
								  _throw: TokenType
							 | 
						|
								  _try: TokenType
							 | 
						|
								  _var: TokenType
							 | 
						|
								  _const: TokenType
							 | 
						|
								  _while: TokenType
							 | 
						|
								  _with: TokenType
							 | 
						|
								  _new: TokenType
							 | 
						|
								  _this: TokenType
							 | 
						|
								  _super: TokenType
							 | 
						|
								  _class: TokenType
							 | 
						|
								  _extends: TokenType
							 | 
						|
								  _export: TokenType
							 | 
						|
								  _import: TokenType
							 | 
						|
								  _null: TokenType
							 | 
						|
								  _true: TokenType
							 | 
						|
								  _false: TokenType
							 | 
						|
								  _in: TokenType
							 | 
						|
								  _instanceof: TokenType
							 | 
						|
								  _typeof: TokenType
							 | 
						|
								  _void: TokenType
							 | 
						|
								  _delete: TokenType
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export interface Comment {
							 | 
						|
								  type: "Line" | "Block"
							 | 
						|
								  value: string
							 | 
						|
								  start: number
							 | 
						|
								  end: number
							 | 
						|
								  loc?: SourceLocation
							 | 
						|
								  range?: [number, number]
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export class Token {
							 | 
						|
								  type: TokenType
							 | 
						|
								  start: number
							 | 
						|
								  end: number
							 | 
						|
								  loc?: SourceLocation
							 | 
						|
								  range?: [number, number]
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								export const version: string
							 |