interface BaseComment { value: string; start?: number; end?: number; loc?: SourceLocation; ignore?: boolean; type: "CommentBlock" | "CommentLine"; } interface Position { line: number; column: number; index: number; } interface CommentBlock extends BaseComment { type: "CommentBlock"; } interface CommentLine extends BaseComment { type: "CommentLine"; } type Comment = CommentBlock | CommentLine; interface SourceLocation { start: Position; end: Position; filename: string; identifierName: string | undefined | null; } interface BaseNode { type: Node["type"]; leadingComments?: Comment[] | null; innerComments?: Comment[] | null; trailingComments?: Comment[] | null; start?: number | null; end?: number | null; loc?: SourceLocation | null; range?: [number, number]; extra?: Record; } type CommentTypeShorthand = "leading" | "inner" | "trailing"; type Node = AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | BinaryExpression | BindExpression | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | ClassAccessorProperty | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | ContinueStatement | DebuggerStatement | DecimalLiteral | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | ExpressionStatement | File | ForInStatement | ForOfStatement | ForStatement | FunctionDeclaration | FunctionExpression | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Import | ImportAttribute | ImportDeclaration | ImportDefaultSpecifier | ImportExpression | ImportNamespaceSpecifier | ImportSpecifier | IndexedAccessType | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LabeledStatement | LogicalExpression | MemberExpression | MetaProperty | MixedTypeAnnotation | ModuleExpression | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral$1 | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalIndexedAccessType | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | PrivateName | Program | QualifiedTypeIdentifier | RecordExpression | RegExpLiteral | RegexLiteral$1 | RestElement | RestProperty$1 | ReturnStatement | SequenceExpression | SpreadElement | SpreadProperty$1 | StaticBlock | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | SymbolTypeAnnotation | TSAnyKeyword | TSArrayType | TSAsExpression | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInstantiationExpression | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSIntrinsicKeyword | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSSatisfiesExpression | TSStringKeyword | TSSymbolKeyword | TSTemplateLiteralType | TSThisType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | ThisExpression | ThisTypeAnnotation | ThrowStatement | TopicReference | TryStatement | TupleExpression | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeofTypeAnnotation | UnaryExpression | UnionTypeAnnotation | UpdateExpression | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidPattern | VoidTypeAnnotation | WhileStatement | WithStatement | YieldExpression; interface ArrayExpression extends BaseNode { type: "ArrayExpression"; elements: Array; } interface AssignmentExpression extends BaseNode { type: "AssignmentExpression"; operator: string; left: LVal | OptionalMemberExpression; right: Expression; } interface BinaryExpression extends BaseNode { type: "BinaryExpression"; operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=" | "|>"; left: Expression | PrivateName; right: Expression; } interface InterpreterDirective extends BaseNode { type: "InterpreterDirective"; value: string; } interface Directive extends BaseNode { type: "Directive"; value: DirectiveLiteral; } interface DirectiveLiteral extends BaseNode { type: "DirectiveLiteral"; value: string; } interface BlockStatement extends BaseNode { type: "BlockStatement"; body: Array; directives: Array; } interface BreakStatement extends BaseNode { type: "BreakStatement"; label?: Identifier | null; } interface CallExpression extends BaseNode { type: "CallExpression"; callee: Expression | Super | V8IntrinsicIdentifier; arguments: Array; optional?: boolean | null; typeArguments?: TypeParameterInstantiation | null; typeParameters?: TSTypeParameterInstantiation | null; } interface CatchClause extends BaseNode { type: "CatchClause"; param?: Identifier | ArrayPattern | ObjectPattern | null; body: BlockStatement; } interface ConditionalExpression extends BaseNode { type: "ConditionalExpression"; test: Expression; consequent: Expression; alternate: Expression; } interface ContinueStatement extends BaseNode { type: "ContinueStatement"; label?: Identifier | null; } interface DebuggerStatement extends BaseNode { type: "DebuggerStatement"; } interface DoWhileStatement extends BaseNode { type: "DoWhileStatement"; test: Expression; body: Statement; } interface EmptyStatement extends BaseNode { type: "EmptyStatement"; } interface ExpressionStatement extends BaseNode { type: "ExpressionStatement"; expression: Expression; } interface File extends BaseNode { type: "File"; program: Program; comments?: Array | null; tokens?: Array | null; } interface ForInStatement extends BaseNode { type: "ForInStatement"; left: VariableDeclaration | LVal; right: Expression; body: Statement; } interface ForStatement extends BaseNode { type: "ForStatement"; init?: VariableDeclaration | Expression | null; test?: Expression | null; update?: Expression | null; body: Statement; } interface FunctionDeclaration extends BaseNode { type: "FunctionDeclaration"; id?: Identifier | null; params: Array; body: BlockStatement; generator: boolean; async: boolean; declare?: boolean | null; predicate?: DeclaredPredicate | InferredPredicate | null; returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null; typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null; } interface FunctionExpression extends BaseNode { type: "FunctionExpression"; id?: Identifier | null; params: Array; body: BlockStatement; generator: boolean; async: boolean; predicate?: DeclaredPredicate | InferredPredicate | null; returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null; typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null; } interface Identifier extends BaseNode { type: "Identifier"; name: string; decorators?: Array | null; optional?: boolean | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; } interface IfStatement extends BaseNode { type: "IfStatement"; test: Expression; consequent: Statement; alternate?: Statement | null; } interface LabeledStatement extends BaseNode { type: "LabeledStatement"; label: Identifier; body: Statement; } interface StringLiteral extends BaseNode { type: "StringLiteral"; value: string; } interface NumericLiteral extends BaseNode { type: "NumericLiteral"; value: number; } /** * @deprecated Use `NumericLiteral` */ interface NumberLiteral$1 extends BaseNode { type: "NumberLiteral"; value: number; } interface NullLiteral extends BaseNode { type: "NullLiteral"; } interface BooleanLiteral extends BaseNode { type: "BooleanLiteral"; value: boolean; } interface RegExpLiteral extends BaseNode { type: "RegExpLiteral"; pattern: string; flags: string; } /** * @deprecated Use `RegExpLiteral` */ interface RegexLiteral$1 extends BaseNode { type: "RegexLiteral"; pattern: string; flags: string; } interface LogicalExpression extends BaseNode { type: "LogicalExpression"; operator: "||" | "&&" | "??"; left: Expression; right: Expression; } interface MemberExpression extends BaseNode { type: "MemberExpression"; object: Expression | Super; property: Expression | Identifier | PrivateName; computed: boolean; optional?: boolean | null; } interface NewExpression extends BaseNode { type: "NewExpression"; callee: Expression | Super | V8IntrinsicIdentifier; arguments: Array; optional?: boolean | null; typeArguments?: TypeParameterInstantiation | null; typeParameters?: TSTypeParameterInstantiation | null; } interface Program extends BaseNode { type: "Program"; body: Array; directives: Array; sourceType: "script" | "module"; interpreter?: InterpreterDirective | null; } interface ObjectExpression extends BaseNode { type: "ObjectExpression"; properties: Array; } interface ObjectMethod extends BaseNode { type: "ObjectMethod"; kind: "method" | "get" | "set"; key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral; params: Array; body: BlockStatement; computed: boolean; generator: boolean; async: boolean; decorators?: Array | null; returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null; typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null; } interface ObjectProperty extends BaseNode { type: "ObjectProperty"; key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral | DecimalLiteral | PrivateName; value: Expression | PatternLike; computed: boolean; shorthand: boolean; decorators?: Array | null; } interface RestElement extends BaseNode { type: "RestElement"; argument: Identifier | ArrayPattern | ObjectPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression | RestElement | AssignmentPattern; decorators?: Array | null; optional?: boolean | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; } /** * @deprecated Use `RestElement` */ interface RestProperty$1 extends BaseNode { type: "RestProperty"; argument: Identifier | ArrayPattern | ObjectPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression | RestElement | AssignmentPattern; decorators?: Array | null; optional?: boolean | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; } interface ReturnStatement extends BaseNode { type: "ReturnStatement"; argument?: Expression | null; } interface SequenceExpression extends BaseNode { type: "SequenceExpression"; expressions: Array; } interface ParenthesizedExpression extends BaseNode { type: "ParenthesizedExpression"; expression: Expression; } interface SwitchCase extends BaseNode { type: "SwitchCase"; test?: Expression | null; consequent: Array; } interface SwitchStatement extends BaseNode { type: "SwitchStatement"; discriminant: Expression; cases: Array; } interface ThisExpression extends BaseNode { type: "ThisExpression"; } interface ThrowStatement extends BaseNode { type: "ThrowStatement"; argument: Expression; } interface TryStatement extends BaseNode { type: "TryStatement"; block: BlockStatement; handler?: CatchClause | null; finalizer?: BlockStatement | null; } interface UnaryExpression extends BaseNode { type: "UnaryExpression"; operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof"; argument: Expression; prefix: boolean; } interface UpdateExpression extends BaseNode { type: "UpdateExpression"; operator: "++" | "--"; argument: Expression; prefix: boolean; } interface VariableDeclaration extends BaseNode { type: "VariableDeclaration"; kind: "var" | "let" | "const" | "using" | "await using"; declarations: Array; declare?: boolean | null; } interface VariableDeclarator extends BaseNode { type: "VariableDeclarator"; id: LVal | VoidPattern; init?: Expression | null; definite?: boolean | null; } interface WhileStatement extends BaseNode { type: "WhileStatement"; test: Expression; body: Statement; } interface WithStatement extends BaseNode { type: "WithStatement"; object: Expression; body: Statement; } interface AssignmentPattern extends BaseNode { type: "AssignmentPattern"; left: Identifier | ObjectPattern | ArrayPattern | MemberExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression; right: Expression; decorators?: Array | null; optional?: boolean | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; } interface ArrayPattern extends BaseNode { type: "ArrayPattern"; elements: Array; decorators?: Array | null; optional?: boolean | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; } interface ArrowFunctionExpression extends BaseNode { type: "ArrowFunctionExpression"; params: Array; body: BlockStatement | Expression; async: boolean; expression: boolean; generator?: boolean; predicate?: DeclaredPredicate | InferredPredicate | null; returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null; typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null; } interface ClassBody extends BaseNode { type: "ClassBody"; body: Array; } interface ClassExpression extends BaseNode { type: "ClassExpression"; id?: Identifier | null; superClass?: Expression | null; body: ClassBody; decorators?: Array | null; implements?: Array | null; mixins?: InterfaceExtends | null; superTypeParameters?: TypeParameterInstantiation | TSTypeParameterInstantiation | null; typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null; } interface ClassDeclaration extends BaseNode { type: "ClassDeclaration"; id?: Identifier | null; superClass?: Expression | null; body: ClassBody; decorators?: Array | null; abstract?: boolean | null; declare?: boolean | null; implements?: Array | null; mixins?: InterfaceExtends | null; superTypeParameters?: TypeParameterInstantiation | TSTypeParameterInstantiation | null; typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null; } interface ExportAllDeclaration extends BaseNode { type: "ExportAllDeclaration"; source: StringLiteral; /** @deprecated */ assertions?: Array | null; attributes?: Array | null; exportKind?: "type" | "value" | null; } interface ExportDefaultDeclaration extends BaseNode { type: "ExportDefaultDeclaration"; declaration: TSDeclareFunction | FunctionDeclaration | ClassDeclaration | Expression; exportKind?: "value" | null; } interface ExportNamedDeclaration extends BaseNode { type: "ExportNamedDeclaration"; declaration?: Declaration | null; specifiers: Array; source?: StringLiteral | null; /** @deprecated */ assertions?: Array | null; attributes?: Array | null; exportKind?: "type" | "value" | null; } interface ExportSpecifier extends BaseNode { type: "ExportSpecifier"; local: Identifier; exported: Identifier | StringLiteral; exportKind?: "type" | "value" | null; } interface ForOfStatement extends BaseNode { type: "ForOfStatement"; left: VariableDeclaration | LVal; right: Expression; body: Statement; await: boolean; } interface ImportDeclaration extends BaseNode { type: "ImportDeclaration"; specifiers: Array; source: StringLiteral; /** @deprecated */ assertions?: Array | null; attributes?: Array | null; importKind?: "type" | "typeof" | "value" | null; module?: boolean | null; phase?: "source" | "defer" | null; } interface ImportDefaultSpecifier extends BaseNode { type: "ImportDefaultSpecifier"; local: Identifier; } interface ImportNamespaceSpecifier extends BaseNode { type: "ImportNamespaceSpecifier"; local: Identifier; } interface ImportSpecifier extends BaseNode { type: "ImportSpecifier"; local: Identifier; imported: Identifier | StringLiteral; importKind?: "type" | "typeof" | "value" | null; } interface ImportExpression extends BaseNode { type: "ImportExpression"; source: Expression; options?: Expression | null; phase?: "source" | "defer" | null; } interface MetaProperty extends BaseNode { type: "MetaProperty"; meta: Identifier; property: Identifier; } interface ClassMethod extends BaseNode { type: "ClassMethod"; kind: "get" | "set" | "method" | "constructor"; key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression; params: Array; body: BlockStatement; computed: boolean; static: boolean; generator: boolean; async: boolean; abstract?: boolean | null; access?: "public" | "private" | "protected" | null; accessibility?: "public" | "private" | "protected" | null; decorators?: Array | null; optional?: boolean | null; override?: boolean; returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null; typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null; } interface ObjectPattern extends BaseNode { type: "ObjectPattern"; properties: Array; decorators?: Array | null; optional?: boolean | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; } interface SpreadElement extends BaseNode { type: "SpreadElement"; argument: Expression; } /** * @deprecated Use `SpreadElement` */ interface SpreadProperty$1 extends BaseNode { type: "SpreadProperty"; argument: Expression; } interface Super extends BaseNode { type: "Super"; } interface TaggedTemplateExpression extends BaseNode { type: "TaggedTemplateExpression"; tag: Expression; quasi: TemplateLiteral; typeParameters?: TypeParameterInstantiation | TSTypeParameterInstantiation | null; } interface TemplateElement extends BaseNode { type: "TemplateElement"; value: { raw: string; cooked?: string; }; tail: boolean; } interface TemplateLiteral extends BaseNode { type: "TemplateLiteral"; quasis: Array; expressions: Array; } interface YieldExpression extends BaseNode { type: "YieldExpression"; argument?: Expression | null; delegate: boolean; } interface AwaitExpression extends BaseNode { type: "AwaitExpression"; argument: Expression; } interface Import extends BaseNode { type: "Import"; } interface BigIntLiteral extends BaseNode { type: "BigIntLiteral"; value: string; } interface ExportNamespaceSpecifier extends BaseNode { type: "ExportNamespaceSpecifier"; exported: Identifier; } interface OptionalMemberExpression extends BaseNode { type: "OptionalMemberExpression"; object: Expression; property: Expression | Identifier; computed: boolean; optional: boolean; } interface OptionalCallExpression extends BaseNode { type: "OptionalCallExpression"; callee: Expression; arguments: Array; optional: boolean; typeArguments?: TypeParameterInstantiation | null; typeParameters?: TSTypeParameterInstantiation | null; } interface ClassProperty extends BaseNode { type: "ClassProperty"; key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression; value?: Expression | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; decorators?: Array | null; computed: boolean; static: boolean; abstract?: boolean | null; accessibility?: "public" | "private" | "protected" | null; declare?: boolean | null; definite?: boolean | null; optional?: boolean | null; override?: boolean; readonly?: boolean | null; variance?: Variance | null; } interface ClassAccessorProperty extends BaseNode { type: "ClassAccessorProperty"; key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression | PrivateName; value?: Expression | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; decorators?: Array | null; computed: boolean; static: boolean; abstract?: boolean | null; accessibility?: "public" | "private" | "protected" | null; declare?: boolean | null; definite?: boolean | null; optional?: boolean | null; override?: boolean; readonly?: boolean | null; variance?: Variance | null; } interface ClassPrivateProperty extends BaseNode { type: "ClassPrivateProperty"; key: PrivateName; value?: Expression | null; decorators?: Array | null; static: boolean; definite?: boolean | null; optional?: boolean | null; readonly?: boolean | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; variance?: Variance | null; } interface ClassPrivateMethod extends BaseNode { type: "ClassPrivateMethod"; kind: "get" | "set" | "method"; key: PrivateName; params: Array; body: BlockStatement; static: boolean; abstract?: boolean | null; access?: "public" | "private" | "protected" | null; accessibility?: "public" | "private" | "protected" | null; async?: boolean; computed?: boolean; decorators?: Array | null; generator?: boolean; optional?: boolean | null; override?: boolean; returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null; typeParameters?: TypeParameterDeclaration | TSTypeParameterDeclaration | Noop | null; } interface PrivateName extends BaseNode { type: "PrivateName"; id: Identifier; } interface StaticBlock extends BaseNode { type: "StaticBlock"; body: Array; } interface ImportAttribute extends BaseNode { type: "ImportAttribute"; key: Identifier | StringLiteral; value: StringLiteral; } interface AnyTypeAnnotation extends BaseNode { type: "AnyTypeAnnotation"; } interface ArrayTypeAnnotation extends BaseNode { type: "ArrayTypeAnnotation"; elementType: FlowType; } interface BooleanTypeAnnotation extends BaseNode { type: "BooleanTypeAnnotation"; } interface BooleanLiteralTypeAnnotation extends BaseNode { type: "BooleanLiteralTypeAnnotation"; value: boolean; } interface NullLiteralTypeAnnotation extends BaseNode { type: "NullLiteralTypeAnnotation"; } interface ClassImplements extends BaseNode { type: "ClassImplements"; id: Identifier; typeParameters?: TypeParameterInstantiation | null; } interface DeclareClass extends BaseNode { type: "DeclareClass"; id: Identifier; typeParameters?: TypeParameterDeclaration | null; extends?: Array | null; body: ObjectTypeAnnotation; implements?: Array | null; mixins?: Array | null; } interface DeclareFunction extends BaseNode { type: "DeclareFunction"; id: Identifier; predicate?: DeclaredPredicate | null; } interface DeclareInterface extends BaseNode { type: "DeclareInterface"; id: Identifier; typeParameters?: TypeParameterDeclaration | null; extends?: Array | null; body: ObjectTypeAnnotation; } interface DeclareModule extends BaseNode { type: "DeclareModule"; id: Identifier | StringLiteral; body: BlockStatement; kind?: "CommonJS" | "ES" | null; } interface DeclareModuleExports extends BaseNode { type: "DeclareModuleExports"; typeAnnotation: TypeAnnotation; } interface DeclareTypeAlias extends BaseNode { type: "DeclareTypeAlias"; id: Identifier; typeParameters?: TypeParameterDeclaration | null; right: FlowType; } interface DeclareOpaqueType extends BaseNode { type: "DeclareOpaqueType"; id: Identifier; typeParameters?: TypeParameterDeclaration | null; supertype?: FlowType | null; impltype?: FlowType | null; } interface DeclareVariable extends BaseNode { type: "DeclareVariable"; id: Identifier; } interface DeclareExportDeclaration extends BaseNode { type: "DeclareExportDeclaration"; declaration?: Flow | null; specifiers?: Array | null; source?: StringLiteral | null; attributes?: Array | null; /** @deprecated */ assertions?: Array | null; default?: boolean | null; } interface DeclareExportAllDeclaration extends BaseNode { type: "DeclareExportAllDeclaration"; source: StringLiteral; attributes?: Array | null; /** @deprecated */ assertions?: Array | null; exportKind?: "type" | "value" | null; } interface DeclaredPredicate extends BaseNode { type: "DeclaredPredicate"; value: Flow; } interface ExistsTypeAnnotation extends BaseNode { type: "ExistsTypeAnnotation"; } interface FunctionTypeAnnotation extends BaseNode { type: "FunctionTypeAnnotation"; typeParameters?: TypeParameterDeclaration | null; params: Array; rest?: FunctionTypeParam | null; returnType: FlowType; this?: FunctionTypeParam | null; } interface FunctionTypeParam extends BaseNode { type: "FunctionTypeParam"; name?: Identifier | null; typeAnnotation: FlowType; optional?: boolean | null; } interface GenericTypeAnnotation extends BaseNode { type: "GenericTypeAnnotation"; id: Identifier | QualifiedTypeIdentifier; typeParameters?: TypeParameterInstantiation | null; } interface InferredPredicate extends BaseNode { type: "InferredPredicate"; } interface InterfaceExtends extends BaseNode { type: "InterfaceExtends"; id: Identifier | QualifiedTypeIdentifier; typeParameters?: TypeParameterInstantiation | null; } interface InterfaceDeclaration extends BaseNode { type: "InterfaceDeclaration"; id: Identifier; typeParameters?: TypeParameterDeclaration | null; extends?: Array | null; body: ObjectTypeAnnotation; } interface InterfaceTypeAnnotation extends BaseNode { type: "InterfaceTypeAnnotation"; extends?: Array | null; body: ObjectTypeAnnotation; } interface IntersectionTypeAnnotation extends BaseNode { type: "IntersectionTypeAnnotation"; types: Array; } interface MixedTypeAnnotation extends BaseNode { type: "MixedTypeAnnotation"; } interface EmptyTypeAnnotation extends BaseNode { type: "EmptyTypeAnnotation"; } interface NullableTypeAnnotation extends BaseNode { type: "NullableTypeAnnotation"; typeAnnotation: FlowType; } interface NumberLiteralTypeAnnotation extends BaseNode { type: "NumberLiteralTypeAnnotation"; value: number; } interface NumberTypeAnnotation extends BaseNode { type: "NumberTypeAnnotation"; } interface ObjectTypeAnnotation extends BaseNode { type: "ObjectTypeAnnotation"; properties: Array; indexers?: Array; callProperties?: Array; internalSlots?: Array; exact: boolean; inexact?: boolean | null; } interface ObjectTypeInternalSlot extends BaseNode { type: "ObjectTypeInternalSlot"; id: Identifier; value: FlowType; optional: boolean; static: boolean; method: boolean; } interface ObjectTypeCallProperty extends BaseNode { type: "ObjectTypeCallProperty"; value: FlowType; static: boolean; } interface ObjectTypeIndexer extends BaseNode { type: "ObjectTypeIndexer"; id?: Identifier | null; key: FlowType; value: FlowType; variance?: Variance | null; static: boolean; } interface ObjectTypeProperty extends BaseNode { type: "ObjectTypeProperty"; key: Identifier | StringLiteral; value: FlowType; variance?: Variance | null; kind: "init" | "get" | "set"; method: boolean; optional: boolean; proto: boolean; static: boolean; } interface ObjectTypeSpreadProperty extends BaseNode { type: "ObjectTypeSpreadProperty"; argument: FlowType; } interface OpaqueType extends BaseNode { type: "OpaqueType"; id: Identifier; typeParameters?: TypeParameterDeclaration | null; supertype?: FlowType | null; impltype: FlowType; } interface QualifiedTypeIdentifier extends BaseNode { type: "QualifiedTypeIdentifier"; id: Identifier; qualification: Identifier | QualifiedTypeIdentifier; } interface StringLiteralTypeAnnotation extends BaseNode { type: "StringLiteralTypeAnnotation"; value: string; } interface StringTypeAnnotation extends BaseNode { type: "StringTypeAnnotation"; } interface SymbolTypeAnnotation extends BaseNode { type: "SymbolTypeAnnotation"; } interface ThisTypeAnnotation extends BaseNode { type: "ThisTypeAnnotation"; } interface TupleTypeAnnotation extends BaseNode { type: "TupleTypeAnnotation"; types: Array; } interface TypeofTypeAnnotation extends BaseNode { type: "TypeofTypeAnnotation"; argument: FlowType; } interface TypeAlias extends BaseNode { type: "TypeAlias"; id: Identifier; typeParameters?: TypeParameterDeclaration | null; right: FlowType; } interface TypeAnnotation extends BaseNode { type: "TypeAnnotation"; typeAnnotation: FlowType; } interface TypeCastExpression extends BaseNode { type: "TypeCastExpression"; expression: Expression; typeAnnotation: TypeAnnotation; } interface TypeParameter extends BaseNode { type: "TypeParameter"; bound?: TypeAnnotation | null; default?: FlowType | null; variance?: Variance | null; name: string; } interface TypeParameterDeclaration extends BaseNode { type: "TypeParameterDeclaration"; params: Array; } interface TypeParameterInstantiation extends BaseNode { type: "TypeParameterInstantiation"; params: Array; } interface UnionTypeAnnotation extends BaseNode { type: "UnionTypeAnnotation"; types: Array; } interface Variance extends BaseNode { type: "Variance"; kind: "minus" | "plus"; } interface VoidTypeAnnotation extends BaseNode { type: "VoidTypeAnnotation"; } interface EnumDeclaration extends BaseNode { type: "EnumDeclaration"; id: Identifier; body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody; } interface EnumBooleanBody extends BaseNode { type: "EnumBooleanBody"; members: Array; explicitType: boolean; hasUnknownMembers: boolean; } interface EnumNumberBody extends BaseNode { type: "EnumNumberBody"; members: Array; explicitType: boolean; hasUnknownMembers: boolean; } interface EnumStringBody extends BaseNode { type: "EnumStringBody"; members: Array; explicitType: boolean; hasUnknownMembers: boolean; } interface EnumSymbolBody extends BaseNode { type: "EnumSymbolBody"; members: Array; hasUnknownMembers: boolean; } interface EnumBooleanMember extends BaseNode { type: "EnumBooleanMember"; id: Identifier; init: BooleanLiteral; } interface EnumNumberMember extends BaseNode { type: "EnumNumberMember"; id: Identifier; init: NumericLiteral; } interface EnumStringMember extends BaseNode { type: "EnumStringMember"; id: Identifier; init: StringLiteral; } interface EnumDefaultedMember extends BaseNode { type: "EnumDefaultedMember"; id: Identifier; } interface IndexedAccessType extends BaseNode { type: "IndexedAccessType"; objectType: FlowType; indexType: FlowType; } interface OptionalIndexedAccessType extends BaseNode { type: "OptionalIndexedAccessType"; objectType: FlowType; indexType: FlowType; optional: boolean; } interface JSXAttribute extends BaseNode { type: "JSXAttribute"; name: JSXIdentifier | JSXNamespacedName; value?: JSXElement | JSXFragment | StringLiteral | JSXExpressionContainer | null; } interface JSXClosingElement extends BaseNode { type: "JSXClosingElement"; name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName; } interface JSXElement extends BaseNode { type: "JSXElement"; openingElement: JSXOpeningElement; closingElement?: JSXClosingElement | null; children: Array; selfClosing?: boolean | null; } interface JSXEmptyExpression extends BaseNode { type: "JSXEmptyExpression"; } interface JSXExpressionContainer extends BaseNode { type: "JSXExpressionContainer"; expression: Expression | JSXEmptyExpression; } interface JSXSpreadChild extends BaseNode { type: "JSXSpreadChild"; expression: Expression; } interface JSXIdentifier extends BaseNode { type: "JSXIdentifier"; name: string; } interface JSXMemberExpression extends BaseNode { type: "JSXMemberExpression"; object: JSXMemberExpression | JSXIdentifier; property: JSXIdentifier; } interface JSXNamespacedName extends BaseNode { type: "JSXNamespacedName"; namespace: JSXIdentifier; name: JSXIdentifier; } interface JSXOpeningElement extends BaseNode { type: "JSXOpeningElement"; name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName; attributes: Array; selfClosing: boolean; typeArguments?: TypeParameterInstantiation | null; typeParameters?: TSTypeParameterInstantiation | null; } interface JSXSpreadAttribute extends BaseNode { type: "JSXSpreadAttribute"; argument: Expression; } interface JSXText extends BaseNode { type: "JSXText"; value: string; } interface JSXFragment extends BaseNode { type: "JSXFragment"; openingFragment: JSXOpeningFragment; closingFragment: JSXClosingFragment; children: Array; } interface JSXOpeningFragment extends BaseNode { type: "JSXOpeningFragment"; } interface JSXClosingFragment extends BaseNode { type: "JSXClosingFragment"; } interface Noop extends BaseNode { type: "Noop"; } interface Placeholder extends BaseNode { type: "Placeholder"; expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern"; name: Identifier; decorators?: Array | null; optional?: boolean | null; typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null; } interface V8IntrinsicIdentifier extends BaseNode { type: "V8IntrinsicIdentifier"; name: string; } interface ArgumentPlaceholder extends BaseNode { type: "ArgumentPlaceholder"; } interface BindExpression extends BaseNode { type: "BindExpression"; object: Expression; callee: Expression; } interface Decorator extends BaseNode { type: "Decorator"; expression: Expression; } interface DoExpression extends BaseNode { type: "DoExpression"; body: BlockStatement; async: boolean; } interface ExportDefaultSpecifier extends BaseNode { type: "ExportDefaultSpecifier"; exported: Identifier; } interface RecordExpression extends BaseNode { type: "RecordExpression"; properties: Array; } interface TupleExpression extends BaseNode { type: "TupleExpression"; elements: Array; } interface DecimalLiteral extends BaseNode { type: "DecimalLiteral"; value: string; } interface ModuleExpression extends BaseNode { type: "ModuleExpression"; body: Program; } interface TopicReference extends BaseNode { type: "TopicReference"; } interface PipelineTopicExpression extends BaseNode { type: "PipelineTopicExpression"; expression: Expression; } interface PipelineBareFunction extends BaseNode { type: "PipelineBareFunction"; callee: Expression; } interface PipelinePrimaryTopicReference extends BaseNode { type: "PipelinePrimaryTopicReference"; } interface VoidPattern extends BaseNode { type: "VoidPattern"; } interface TSParameterProperty extends BaseNode { type: "TSParameterProperty"; parameter: Identifier | AssignmentPattern; accessibility?: "public" | "private" | "protected" | null; decorators?: Array | null; override?: boolean | null; readonly?: boolean | null; } interface TSDeclareFunction extends BaseNode { type: "TSDeclareFunction"; id?: Identifier | null; typeParameters?: TSTypeParameterDeclaration | Noop | null; params: Array; returnType?: TSTypeAnnotation | Noop | null; async?: boolean; declare?: boolean | null; generator?: boolean; } interface TSDeclareMethod extends BaseNode { type: "TSDeclareMethod"; decorators?: Array | null; key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression; typeParameters?: TSTypeParameterDeclaration | Noop | null; params: Array; returnType?: TSTypeAnnotation | Noop | null; abstract?: boolean | null; access?: "public" | "private" | "protected" | null; accessibility?: "public" | "private" | "protected" | null; async?: boolean; computed?: boolean; generator?: boolean; kind?: "get" | "set" | "method" | "constructor"; optional?: boolean | null; override?: boolean; static?: boolean; } interface TSQualifiedName extends BaseNode { type: "TSQualifiedName"; left: TSEntityName; right: Identifier; } interface TSCallSignatureDeclaration extends BaseNode { type: "TSCallSignatureDeclaration"; typeParameters?: TSTypeParameterDeclaration | null; parameters: Array; typeAnnotation?: TSTypeAnnotation | null; } interface TSConstructSignatureDeclaration extends BaseNode { type: "TSConstructSignatureDeclaration"; typeParameters?: TSTypeParameterDeclaration | null; parameters: Array; typeAnnotation?: TSTypeAnnotation | null; } interface TSPropertySignature extends BaseNode { type: "TSPropertySignature"; key: Expression; typeAnnotation?: TSTypeAnnotation | null; computed?: boolean; kind?: "get" | "set" | null; optional?: boolean | null; readonly?: boolean | null; } interface TSMethodSignature extends BaseNode { type: "TSMethodSignature"; key: Expression; typeParameters?: TSTypeParameterDeclaration | null; parameters: Array; typeAnnotation?: TSTypeAnnotation | null; computed?: boolean; kind: "method" | "get" | "set"; optional?: boolean | null; } interface TSIndexSignature extends BaseNode { type: "TSIndexSignature"; parameters: Array; typeAnnotation?: TSTypeAnnotation | null; readonly?: boolean | null; static?: boolean | null; } interface TSAnyKeyword extends BaseNode { type: "TSAnyKeyword"; } interface TSBooleanKeyword extends BaseNode { type: "TSBooleanKeyword"; } interface TSBigIntKeyword extends BaseNode { type: "TSBigIntKeyword"; } interface TSIntrinsicKeyword extends BaseNode { type: "TSIntrinsicKeyword"; } interface TSNeverKeyword extends BaseNode { type: "TSNeverKeyword"; } interface TSNullKeyword extends BaseNode { type: "TSNullKeyword"; } interface TSNumberKeyword extends BaseNode { type: "TSNumberKeyword"; } interface TSObjectKeyword extends BaseNode { type: "TSObjectKeyword"; } interface TSStringKeyword extends BaseNode { type: "TSStringKeyword"; } interface TSSymbolKeyword extends BaseNode { type: "TSSymbolKeyword"; } interface TSUndefinedKeyword extends BaseNode { type: "TSUndefinedKeyword"; } interface TSUnknownKeyword extends BaseNode { type: "TSUnknownKeyword"; } interface TSVoidKeyword extends BaseNode { type: "TSVoidKeyword"; } interface TSThisType extends BaseNode { type: "TSThisType"; } interface TSFunctionType extends BaseNode { type: "TSFunctionType"; typeParameters?: TSTypeParameterDeclaration | null; parameters: Array; typeAnnotation?: TSTypeAnnotation | null; } interface TSConstructorType extends BaseNode { type: "TSConstructorType"; typeParameters?: TSTypeParameterDeclaration | null; parameters: Array; typeAnnotation?: TSTypeAnnotation | null; abstract?: boolean | null; } interface TSTypeReference extends BaseNode { type: "TSTypeReference"; typeName: TSEntityName; typeParameters?: TSTypeParameterInstantiation | null; } interface TSTypePredicate extends BaseNode { type: "TSTypePredicate"; parameterName: Identifier | TSThisType; typeAnnotation?: TSTypeAnnotation | null; asserts?: boolean | null; } interface TSTypeQuery extends BaseNode { type: "TSTypeQuery"; exprName: TSEntityName | TSImportType; typeParameters?: TSTypeParameterInstantiation | null; } interface TSTypeLiteral extends BaseNode { type: "TSTypeLiteral"; members: Array; } interface TSArrayType extends BaseNode { type: "TSArrayType"; elementType: TSType; } interface TSTupleType extends BaseNode { type: "TSTupleType"; elementTypes: Array; } interface TSOptionalType extends BaseNode { type: "TSOptionalType"; typeAnnotation: TSType; } interface TSRestType extends BaseNode { type: "TSRestType"; typeAnnotation: TSType; } interface TSNamedTupleMember extends BaseNode { type: "TSNamedTupleMember"; label: Identifier; elementType: TSType; optional: boolean; } interface TSUnionType extends BaseNode { type: "TSUnionType"; types: Array; } interface TSIntersectionType extends BaseNode { type: "TSIntersectionType"; types: Array; } interface TSConditionalType extends BaseNode { type: "TSConditionalType"; checkType: TSType; extendsType: TSType; trueType: TSType; falseType: TSType; } interface TSInferType extends BaseNode { type: "TSInferType"; typeParameter: TSTypeParameter; } interface TSParenthesizedType extends BaseNode { type: "TSParenthesizedType"; typeAnnotation: TSType; } interface TSTypeOperator extends BaseNode { type: "TSTypeOperator"; typeAnnotation: TSType; operator: string; } interface TSIndexedAccessType extends BaseNode { type: "TSIndexedAccessType"; objectType: TSType; indexType: TSType; } interface TSMappedType extends BaseNode { type: "TSMappedType"; typeParameter: TSTypeParameter; typeAnnotation?: TSType | null; nameType?: TSType | null; optional?: true | false | "+" | "-" | null; readonly?: true | false | "+" | "-" | null; } interface TSTemplateLiteralType extends BaseNode { type: "TSTemplateLiteralType"; quasis: Array; types: Array; } interface TSLiteralType extends BaseNode { type: "TSLiteralType"; literal: NumericLiteral | StringLiteral | BooleanLiteral | BigIntLiteral | TemplateLiteral | UnaryExpression; } interface TSExpressionWithTypeArguments extends BaseNode { type: "TSExpressionWithTypeArguments"; expression: TSEntityName; typeParameters?: TSTypeParameterInstantiation | null; } interface TSInterfaceDeclaration extends BaseNode { type: "TSInterfaceDeclaration"; id: Identifier; typeParameters?: TSTypeParameterDeclaration | null; extends?: Array | null; body: TSInterfaceBody; declare?: boolean | null; } interface TSInterfaceBody extends BaseNode { type: "TSInterfaceBody"; body: Array; } interface TSTypeAliasDeclaration extends BaseNode { type: "TSTypeAliasDeclaration"; id: Identifier; typeParameters?: TSTypeParameterDeclaration | null; typeAnnotation: TSType; declare?: boolean | null; } interface TSInstantiationExpression extends BaseNode { type: "TSInstantiationExpression"; expression: Expression; typeParameters?: TSTypeParameterInstantiation | null; } interface TSAsExpression extends BaseNode { type: "TSAsExpression"; expression: Expression; typeAnnotation: TSType; } interface TSSatisfiesExpression extends BaseNode { type: "TSSatisfiesExpression"; expression: Expression; typeAnnotation: TSType; } interface TSTypeAssertion extends BaseNode { type: "TSTypeAssertion"; typeAnnotation: TSType; expression: Expression; } interface TSEnumBody extends BaseNode { type: "TSEnumBody"; members: Array; } interface TSEnumDeclaration extends BaseNode { type: "TSEnumDeclaration"; id: Identifier; members: Array; body?: TSEnumBody | null; const?: boolean | null; declare?: boolean | null; initializer?: Expression | null; } interface TSEnumMember extends BaseNode { type: "TSEnumMember"; id: Identifier | StringLiteral; initializer?: Expression | null; } interface TSModuleDeclaration extends BaseNode { type: "TSModuleDeclaration"; id: Identifier | StringLiteral; body: TSModuleBlock | TSModuleDeclaration; declare?: boolean | null; global?: boolean | null; kind: "global" | "module" | "namespace"; } interface TSModuleBlock extends BaseNode { type: "TSModuleBlock"; body: Array; } interface TSImportType extends BaseNode { type: "TSImportType"; argument: StringLiteral; qualifier?: TSEntityName | null; typeParameters?: TSTypeParameterInstantiation | null; options?: ObjectExpression | null; } interface TSImportEqualsDeclaration extends BaseNode { type: "TSImportEqualsDeclaration"; id: Identifier; moduleReference: TSEntityName | TSExternalModuleReference; importKind?: "type" | "value" | null; isExport: boolean; } interface TSExternalModuleReference extends BaseNode { type: "TSExternalModuleReference"; expression: StringLiteral; } interface TSNonNullExpression extends BaseNode { type: "TSNonNullExpression"; expression: Expression; } interface TSExportAssignment extends BaseNode { type: "TSExportAssignment"; expression: Expression; } interface TSNamespaceExportDeclaration extends BaseNode { type: "TSNamespaceExportDeclaration"; id: Identifier; } interface TSTypeAnnotation extends BaseNode { type: "TSTypeAnnotation"; typeAnnotation: TSType; } interface TSTypeParameterInstantiation extends BaseNode { type: "TSTypeParameterInstantiation"; params: Array; } interface TSTypeParameterDeclaration extends BaseNode { type: "TSTypeParameterDeclaration"; params: Array; } interface TSTypeParameter extends BaseNode { type: "TSTypeParameter"; constraint?: TSType | null; default?: TSType | null; name: string; const?: boolean | null; in?: boolean | null; out?: boolean | null; } type Standardized = ArrayExpression | AssignmentExpression | BinaryExpression | InterpreterDirective | Directive | DirectiveLiteral | BlockStatement | BreakStatement | CallExpression | CatchClause | ConditionalExpression | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | File | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Identifier | IfStatement | LabeledStatement | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | Program | ObjectExpression | ObjectMethod | ObjectProperty | RestElement | ReturnStatement | SequenceExpression | ParenthesizedExpression | SwitchCase | SwitchStatement | ThisExpression | ThrowStatement | TryStatement | UnaryExpression | UpdateExpression | VariableDeclaration | VariableDeclarator | WhileStatement | WithStatement | AssignmentPattern | ArrayPattern | ArrowFunctionExpression | ClassBody | ClassExpression | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ExportSpecifier | ForOfStatement | ImportDeclaration | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | ImportExpression | MetaProperty | ClassMethod | ObjectPattern | SpreadElement | Super | TaggedTemplateExpression | TemplateElement | TemplateLiteral | YieldExpression | AwaitExpression | Import | BigIntLiteral | ExportNamespaceSpecifier | OptionalMemberExpression | OptionalCallExpression | ClassProperty | ClassAccessorProperty | ClassPrivateProperty | ClassPrivateMethod | PrivateName | StaticBlock | ImportAttribute; type Expression = ArrayExpression | AssignmentExpression | BinaryExpression | CallExpression | ConditionalExpression | FunctionExpression | Identifier | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | LogicalExpression | MemberExpression | NewExpression | ObjectExpression | SequenceExpression | ParenthesizedExpression | ThisExpression | UnaryExpression | UpdateExpression | ArrowFunctionExpression | ClassExpression | ImportExpression | MetaProperty | Super | TaggedTemplateExpression | TemplateLiteral | YieldExpression | AwaitExpression | Import | BigIntLiteral | OptionalMemberExpression | OptionalCallExpression | TypeCastExpression | JSXElement | JSXFragment | BindExpression | DoExpression | RecordExpression | TupleExpression | DecimalLiteral | ModuleExpression | TopicReference | PipelineTopicExpression | PipelineBareFunction | PipelinePrimaryTopicReference | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression; type Binary = BinaryExpression | LogicalExpression; type Scopable = BlockStatement | CatchClause | DoWhileStatement | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Program | ObjectMethod | SwitchStatement | WhileStatement | ArrowFunctionExpression | ClassExpression | ClassDeclaration | ForOfStatement | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock; type BlockParent = BlockStatement | CatchClause | DoWhileStatement | ForInStatement | ForStatement | FunctionDeclaration | FunctionExpression | Program | ObjectMethod | SwitchStatement | WhileStatement | ArrowFunctionExpression | ForOfStatement | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock; type Block = BlockStatement | Program | TSModuleBlock; type Statement = BlockStatement | BreakStatement | ContinueStatement | DebuggerStatement | DoWhileStatement | EmptyStatement | ExpressionStatement | ForInStatement | ForStatement | FunctionDeclaration | IfStatement | LabeledStatement | ReturnStatement | SwitchStatement | ThrowStatement | TryStatement | VariableDeclaration | WhileStatement | WithStatement | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ForOfStatement | ImportDeclaration | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias | EnumDeclaration | TSDeclareFunction | TSInterfaceDeclaration | TSTypeAliasDeclaration | TSEnumDeclaration | TSModuleDeclaration | TSImportEqualsDeclaration | TSExportAssignment | TSNamespaceExportDeclaration; type Terminatorless = BreakStatement | ContinueStatement | ReturnStatement | ThrowStatement | YieldExpression | AwaitExpression; type CompletionStatement = BreakStatement | ContinueStatement | ReturnStatement | ThrowStatement; type Conditional = ConditionalExpression | IfStatement; type Loop = DoWhileStatement | ForInStatement | ForStatement | WhileStatement | ForOfStatement; type While = DoWhileStatement | WhileStatement; type ExpressionWrapper = ExpressionStatement | ParenthesizedExpression | TypeCastExpression; type For = ForInStatement | ForStatement | ForOfStatement; type ForXStatement = ForInStatement | ForOfStatement; type Function = FunctionDeclaration | FunctionExpression | ObjectMethod | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod; type FunctionParent = FunctionDeclaration | FunctionExpression | ObjectMethod | ArrowFunctionExpression | ClassMethod | ClassPrivateMethod | StaticBlock | TSModuleBlock; type Pureish = FunctionDeclaration | FunctionExpression | StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | ArrowFunctionExpression | BigIntLiteral | DecimalLiteral; type Declaration = FunctionDeclaration | VariableDeclaration | ClassDeclaration | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias | EnumDeclaration | TSDeclareFunction | TSInterfaceDeclaration | TSTypeAliasDeclaration | TSEnumDeclaration | TSModuleDeclaration | TSImportEqualsDeclaration; type FunctionParameter = Identifier | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | VoidPattern; type PatternLike = Identifier | MemberExpression | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | VoidPattern | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression; type LVal = Identifier | MemberExpression | RestElement | AssignmentPattern | ArrayPattern | ObjectPattern | TSParameterProperty | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSNonNullExpression; type TSEntityName = Identifier | TSQualifiedName; type Literal = StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | RegExpLiteral | TemplateLiteral | BigIntLiteral | DecimalLiteral; type Immutable = StringLiteral | NumericLiteral | NullLiteral | BooleanLiteral | BigIntLiteral | JSXAttribute | JSXClosingElement | JSXElement | JSXExpressionContainer | JSXSpreadChild | JSXOpeningElement | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment | DecimalLiteral; type UserWhitespacable = ObjectMethod | ObjectProperty | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty; type Method = ObjectMethod | ClassMethod | ClassPrivateMethod; type ObjectMember = ObjectMethod | ObjectProperty; type Property = ObjectProperty | ClassProperty | ClassAccessorProperty | ClassPrivateProperty; type UnaryLike = UnaryExpression | SpreadElement; type Pattern = AssignmentPattern | ArrayPattern | ObjectPattern | VoidPattern; type Class = ClassExpression | ClassDeclaration; type ImportOrExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration; type ExportDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration; type ModuleSpecifier = ExportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ImportSpecifier | ExportNamespaceSpecifier | ExportDefaultSpecifier; type Accessor = ClassAccessorProperty; type Private = ClassPrivateProperty | ClassPrivateMethod | PrivateName; type Flow = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ClassImplements | DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | DeclaredPredicate | ExistsTypeAnnotation | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | InferredPredicate | InterfaceExtends | InterfaceDeclaration | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | ObjectTypeInternalSlot | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | QualifiedTypeIdentifier | StringLiteralTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | UnionTypeAnnotation | Variance | VoidTypeAnnotation | EnumDeclaration | EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody | EnumBooleanMember | EnumNumberMember | EnumStringMember | EnumDefaultedMember | IndexedAccessType | OptionalIndexedAccessType; type FlowType = AnyTypeAnnotation | ArrayTypeAnnotation | BooleanTypeAnnotation | BooleanLiteralTypeAnnotation | NullLiteralTypeAnnotation | ExistsTypeAnnotation | FunctionTypeAnnotation | GenericTypeAnnotation | InterfaceTypeAnnotation | IntersectionTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NullableTypeAnnotation | NumberLiteralTypeAnnotation | NumberTypeAnnotation | ObjectTypeAnnotation | StringLiteralTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | TupleTypeAnnotation | TypeofTypeAnnotation | UnionTypeAnnotation | VoidTypeAnnotation | IndexedAccessType | OptionalIndexedAccessType; type FlowBaseAnnotation = AnyTypeAnnotation | BooleanTypeAnnotation | NullLiteralTypeAnnotation | MixedTypeAnnotation | EmptyTypeAnnotation | NumberTypeAnnotation | StringTypeAnnotation | SymbolTypeAnnotation | ThisTypeAnnotation | VoidTypeAnnotation; type FlowDeclaration = DeclareClass | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareTypeAlias | DeclareOpaqueType | DeclareVariable | DeclareExportDeclaration | DeclareExportAllDeclaration | InterfaceDeclaration | OpaqueType | TypeAlias; type FlowPredicate = DeclaredPredicate | InferredPredicate; type EnumBody = EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody; type EnumMember = EnumBooleanMember | EnumNumberMember | EnumStringMember | EnumDefaultedMember; type JSX = JSXAttribute | JSXClosingElement | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXSpreadChild | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXSpreadAttribute | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment; type Miscellaneous = Noop | Placeholder | V8IntrinsicIdentifier; type TypeScript = TSParameterProperty | TSDeclareFunction | TSDeclareMethod | TSQualifiedName | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature | TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSNamedTupleMember | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSTemplateLiteralType | TSLiteralType | TSExpressionWithTypeArguments | TSInterfaceDeclaration | TSInterfaceBody | TSTypeAliasDeclaration | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSModuleDeclaration | TSModuleBlock | TSImportType | TSImportEqualsDeclaration | TSExternalModuleReference | TSNonNullExpression | TSExportAssignment | TSNamespaceExportDeclaration | TSTypeAnnotation | TSTypeParameterInstantiation | TSTypeParameterDeclaration | TSTypeParameter; type TSTypeElement = TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature; type TSType = TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSTemplateLiteralType | TSLiteralType | TSExpressionWithTypeArguments | TSImportType; type TSBaseType = TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSTemplateLiteralType | TSLiteralType; type ModuleDeclaration = ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ImportDeclaration; interface Aliases { Standardized: Standardized; Expression: Expression; Binary: Binary; Scopable: Scopable; BlockParent: BlockParent; Block: Block; Statement: Statement; Terminatorless: Terminatorless; CompletionStatement: CompletionStatement; Conditional: Conditional; Loop: Loop; While: While; ExpressionWrapper: ExpressionWrapper; For: For; ForXStatement: ForXStatement; Function: Function; FunctionParent: FunctionParent; Pureish: Pureish; Declaration: Declaration; FunctionParameter: FunctionParameter; PatternLike: PatternLike; LVal: LVal; TSEntityName: TSEntityName; Literal: Literal; Immutable: Immutable; UserWhitespacable: UserWhitespacable; Method: Method; ObjectMember: ObjectMember; Property: Property; UnaryLike: UnaryLike; Pattern: Pattern; Class: Class; ImportOrExportDeclaration: ImportOrExportDeclaration; ExportDeclaration: ExportDeclaration; ModuleSpecifier: ModuleSpecifier; Accessor: Accessor; Private: Private; Flow: Flow; FlowType: FlowType; FlowBaseAnnotation: FlowBaseAnnotation; FlowDeclaration: FlowDeclaration; FlowPredicate: FlowPredicate; EnumBody: EnumBody; EnumMember: EnumMember; JSX: JSX; Miscellaneous: Miscellaneous; TypeScript: TypeScript; TSTypeElement: TSTypeElement; TSType: TSType; TSBaseType: TSBaseType; ModuleDeclaration: ModuleDeclaration; } export type { ClassAccessorProperty as $, Aliases as A, BlockStatement as B, CallExpression as C, BigIntLiteral as D, ExistsTypeAnnotation as E, Flow as F, Binary as G, BinaryExpression as H, Identifier as I, JSXIdentifier as J, BindExpression as K, Loop as L, MemberExpression as M, Node as N, Block as O, Pattern as P, BlockParent as Q, RestElement as R, Scopable as S, TSType as T, BooleanLiteral as U, VariableDeclaration as V, WithStatement as W, BooleanLiteralTypeAnnotation as X, BooleanTypeAnnotation as Y, BreakStatement as Z, Class as _, ImportDeclaration as a, FunctionParent as a$, ClassBody as a0, ClassDeclaration as a1, ClassExpression as a2, ClassImplements as a3, ClassMethod as a4, ClassPrivateMethod as a5, ClassPrivateProperty as a6, ClassProperty as a7, CompletionStatement as a8, Conditional as a9, EnumDeclaration as aA, EnumDefaultedMember as aB, EnumMember as aC, EnumNumberBody as aD, EnumNumberMember as aE, EnumStringBody as aF, EnumStringMember as aG, EnumSymbolBody as aH, ExportAllDeclaration as aI, ExportDefaultDeclaration as aJ, ExportDefaultSpecifier as aK, ExportNamedDeclaration as aL, ExportNamespaceSpecifier as aM, ExportSpecifier as aN, ExpressionStatement as aO, ExpressionWrapper as aP, File as aQ, FlowBaseAnnotation as aR, FlowDeclaration as aS, FlowPredicate as aT, For as aU, ForInStatement as aV, ForStatement as aW, ForXStatement as aX, FunctionDeclaration as aY, FunctionExpression as aZ, FunctionParameter as a_, ConditionalExpression as aa, ContinueStatement as ab, DebuggerStatement as ac, DecimalLiteral as ad, Declaration as ae, DeclareClass as af, DeclareExportAllDeclaration as ag, DeclareExportDeclaration as ah, DeclareFunction as ai, DeclareInterface as aj, DeclareModule as ak, DeclareModuleExports as al, DeclareOpaqueType as am, DeclareTypeAlias as an, DeclareVariable as ao, DeclaredPredicate as ap, Decorator as aq, Directive as ar, DirectiveLiteral as as, DoExpression as at, DoWhileStatement as au, EmptyStatement as av, EmptyTypeAnnotation as aw, EnumBody as ax, EnumBooleanBody as ay, EnumBooleanMember as az, ExportDeclaration as b, OptionalIndexedAccessType as b$, FunctionTypeAnnotation as b0, FunctionTypeParam as b1, GenericTypeAnnotation as b2, IfStatement as b3, Immutable as b4, Import as b5, ImportAttribute as b6, ImportExpression as b7, ImportDefaultSpecifier as b8, ImportNamespaceSpecifier as b9, MetaProperty as bA, Miscellaneous as bB, MixedTypeAnnotation as bC, ModuleDeclaration as bD, ModuleExpression as bE, ModuleSpecifier as bF, NewExpression as bG, Noop as bH, NullLiteral as bI, NullLiteralTypeAnnotation as bJ, NullableTypeAnnotation as bK, NumberLiteral$1 as bL, NumberTypeAnnotation as bM, NumericLiteral as bN, ObjectExpression as bO, ObjectMember as bP, ObjectMethod as bQ, ObjectPattern as bR, ObjectProperty as bS, ObjectTypeAnnotation as bT, ObjectTypeCallProperty as bU, ObjectTypeIndexer as bV, ObjectTypeInternalSlot as bW, ObjectTypeProperty as bX, ObjectTypeSpreadProperty as bY, OpaqueType as bZ, OptionalCallExpression as b_, ImportOrExportDeclaration as ba, IndexedAccessType as bb, InferredPredicate as bc, InterfaceDeclaration as bd, InterfaceExtends as be, InterfaceTypeAnnotation as bf, InterpreterDirective as bg, IntersectionTypeAnnotation as bh, JSX as bi, JSXAttribute as bj, JSXClosingElement as bk, JSXClosingFragment as bl, JSXElement as bm, JSXEmptyExpression as bn, JSXExpressionContainer as bo, JSXFragment as bp, JSXMemberExpression as bq, JSXNamespacedName as br, JSXOpeningElement as bs, JSXOpeningFragment as bt, JSXSpreadAttribute as bu, JSXSpreadChild as bv, JSXText as bw, LVal as bx, Literal as by, LogicalExpression as bz, ImportSpecifier as c, TSNamedTupleMember as c$, OptionalMemberExpression as c0, ParenthesizedExpression as c1, PatternLike as c2, PipelineBareFunction as c3, PipelinePrimaryTopicReference as c4, PipelineTopicExpression as c5, Placeholder as c6, Private as c7, Property as c8, Pureish as c9, TSConstructSignatureDeclaration as cA, TSConstructorType as cB, TSDeclareFunction as cC, TSDeclareMethod as cD, TSEntityName as cE, TSEnumBody as cF, TSEnumDeclaration as cG, TSEnumMember as cH, TSExportAssignment as cI, TSExpressionWithTypeArguments as cJ, TSExternalModuleReference as cK, TSFunctionType as cL, TSImportEqualsDeclaration as cM, TSImportType as cN, TSIndexSignature as cO, TSIndexedAccessType as cP, TSInferType as cQ, TSInstantiationExpression as cR, TSInterfaceBody as cS, TSInterfaceDeclaration as cT, TSIntersectionType as cU, TSIntrinsicKeyword as cV, TSLiteralType as cW, TSMappedType as cX, TSMethodSignature as cY, TSModuleBlock as cZ, TSModuleDeclaration as c_, QualifiedTypeIdentifier as ca, RecordExpression as cb, RegExpLiteral as cc, RegexLiteral$1 as cd, RestProperty$1 as ce, ReturnStatement as cf, SequenceExpression as cg, SpreadElement as ch, SpreadProperty$1 as ci, Standardized as cj, StaticBlock as ck, StringLiteral as cl, StringLiteralTypeAnnotation as cm, StringTypeAnnotation as cn, Super as co, SwitchCase as cp, SwitchStatement as cq, SymbolTypeAnnotation as cr, TSAnyKeyword as cs, TSArrayType as ct, TSAsExpression as cu, TSBaseType as cv, TSBigIntKeyword as cw, TSBooleanKeyword as cx, TSCallSignatureDeclaration as cy, TSConditionalType as cz, ForOfStatement as d, VoidTypeAnnotation as d$, TSNamespaceExportDeclaration as d0, TSNeverKeyword as d1, TSNonNullExpression as d2, TSNullKeyword as d3, TSNumberKeyword as d4, TSObjectKeyword as d5, TSOptionalType as d6, TSParameterProperty as d7, TSParenthesizedType as d8, TSPropertySignature as d9, TemplateElement as dA, TemplateLiteral as dB, Terminatorless as dC, ThisExpression as dD, ThisTypeAnnotation as dE, ThrowStatement as dF, TopicReference as dG, TryStatement as dH, TupleExpression as dI, TupleTypeAnnotation as dJ, TypeAlias as dK, TypeAnnotation as dL, TypeCastExpression as dM, TypeParameter as dN, TypeParameterDeclaration as dO, TypeParameterInstantiation as dP, TypeScript as dQ, TypeofTypeAnnotation as dR, UnaryExpression as dS, UnaryLike as dT, UnionTypeAnnotation as dU, UpdateExpression as dV, UserWhitespacable as dW, V8IntrinsicIdentifier as dX, VariableDeclarator as dY, Variance as dZ, VoidPattern as d_, TSQualifiedName as da, TSRestType as db, TSSatisfiesExpression as dc, TSStringKeyword as dd, TSSymbolKeyword as de, TSTemplateLiteralType as df, TSThisType as dg, TSTupleType as dh, TSTypeAliasDeclaration as di, TSTypeAnnotation as dj, TSTypeAssertion as dk, TSTypeElement as dl, TSTypeLiteral as dm, TSTypeOperator as dn, TSTypeParameter as dp, TSTypeParameterDeclaration as dq, TSTypeParameterInstantiation as dr, TSTypePredicate as ds, TSTypeQuery as dt, TSTypeReference as du, TSUndefinedKeyword as dv, TSUnionType as dw, TSUnknownKeyword as dx, TSVoidKeyword as dy, TaggedTemplateExpression as dz, NumberLiteralTypeAnnotation as e, While as e0, WhileStatement as e1, YieldExpression as e2, SourceLocation as e3, Program as f, Function as g, Statement as h, FlowType as i, Expression as j, PrivateName as k, Method as l, ArrowFunctionExpression as m, LabeledStatement as n, CatchClause as o, CommentTypeShorthand as p, Comment as q, Accessor as r, AnyTypeAnnotation as s, ArgumentPlaceholder as t, ArrayExpression as u, ArrayPattern as v, ArrayTypeAnnotation as w, AssignmentExpression as x, AssignmentPattern as y, AwaitExpression as z };