import type { ModifierFlags } from "#enums/modifierFlags"; import type { NodeFlags } from "#enums/nodeFlags"; import { SyntaxKind } from "#enums/syntaxKind"; import { TokenFlags } from "#enums/tokenFlags"; import type { JsxTagNamePropertyAccess, Node, NodeArray } from "./ast.ts"; export type TriviaSyntaxKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ConflictMarkerTrivia; export type LiteralSyntaxKind = SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral; export type PseudoLiteralSyntaxKind = SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail; export type PunctuationSyntaxKind = SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.QuestionQuestionEqualsToken | SyntaxKind.CaretEqualsToken; export type KeywordSyntaxKind = SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.LetKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.StaticKeyword | SyntaxKind.YieldKeyword | SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.GetKeyword | SyntaxKind.ImmediateKeyword | SyntaxKind.InferKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.OutKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.RequireKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.TypeKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.UsingKeyword | SyntaxKind.FromKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.OfKeyword | SyntaxKind.DeferKeyword; export type ModifierSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.ConstKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.ExportKeyword | SyntaxKind.InKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.StaticKeyword; export type KeywordTypeSyntaxKind = SyntaxKind.AnyKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VoidKeyword; export type KeywordExpressionSyntaxKind = SyntaxKind.NullKeyword | SyntaxKind.TrueKeyword | SyntaxKind.FalseKeyword | SyntaxKind.ThisKeyword | SyntaxKind.SuperKeyword | SyntaxKind.ImportKeyword; export type TokenSyntaxKind = SyntaxKind.Unknown | SyntaxKind.EndOfFile | SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.NonTextFileMarkerTrivia | SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral | SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail | SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.QuestionQuestionEqualsToken | SyntaxKind.CaretEqualsToken | SyntaxKind.Identifier | SyntaxKind.PrivateIdentifier | SyntaxKind.JSDocCommentTextToken | SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.LetKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.StaticKeyword | SyntaxKind.YieldKeyword | SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.GetKeyword | SyntaxKind.ImmediateKeyword | SyntaxKind.InferKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.OutKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.RequireKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.TypeKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.UsingKeyword | SyntaxKind.FromKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.OfKeyword | SyntaxKind.DeferKeyword; export type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFile | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken; export type JSDocNodeSyntaxKind = SyntaxKind.JSDocTypeExpression | SyntaxKind.JSDocNameReference | SyntaxKind.JSDocAllType | SyntaxKind.JSDocNullableType | SyntaxKind.JSDocNonNullableType | SyntaxKind.JSDocOptionalType | SyntaxKind.JSDocVariadicType | SyntaxKind.JSDoc | SyntaxKind.JSDocText | SyntaxKind.JSDocTypeLiteral | SyntaxKind.JSDocSignature | SyntaxKind.JSDocLink | SyntaxKind.JSDocLinkCode | SyntaxKind.JSDocLinkPlain | SyntaxKind.JSDocUnknownTag | SyntaxKind.JSDocAugmentsTag | SyntaxKind.JSDocImplementsTag | SyntaxKind.JSDocDeprecatedTag | SyntaxKind.JSDocPublicTag | SyntaxKind.JSDocPrivateTag | SyntaxKind.JSDocProtectedTag | SyntaxKind.JSDocReadonlyTag | SyntaxKind.JSDocOverrideTag | SyntaxKind.JSDocCallbackTag | SyntaxKind.JSDocOverloadTag | SyntaxKind.JSDocParameterTag | SyntaxKind.JSDocReturnTag | SyntaxKind.JSDocThisTag | SyntaxKind.JSDocTypeTag | SyntaxKind.JSDocTemplateTag | SyntaxKind.JSDocTypedefTag | SyntaxKind.JSDocSeeTag | SyntaxKind.JSDocPropertyTag | SyntaxKind.JSDocThrowsTag | SyntaxKind.JSDocSatisfiesTag | SyntaxKind.JSDocImportTag; export type ImportPhaseModifierSyntaxKind = SyntaxKind.TypeKeyword | SyntaxKind.DeferKeyword; export type PostfixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken; export type PrefixUnaryOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken; export type AssignmentOperator = SyntaxKind.EqualsToken | CompoundAssignmentOperator; export type BinaryOperator = AssignmentOperatorOrHigher | SyntaxKind.CommaToken; export type ExponentiationOperator = SyntaxKind.AsteriskAsteriskToken; export type MultiplicativeOperator = SyntaxKind.AsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken; export type MultiplicativeOperatorOrHigher = ExponentiationOperator | MultiplicativeOperator; export type AdditiveOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken; export type AdditiveOperatorOrHigher = MultiplicativeOperatorOrHigher | AdditiveOperator; export type ShiftOperator = SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken; export type ShiftOperatorOrHigher = AdditiveOperatorOrHigher | ShiftOperator; export type RelationalOperator = SyntaxKind.LessThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.InstanceOfKeyword | SyntaxKind.InKeyword; export type RelationalOperatorOrHigher = ShiftOperatorOrHigher | RelationalOperator; export type EqualityOperator = SyntaxKind.EqualsEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.ExclamationEqualsToken; export type EqualityOperatorOrHigher = RelationalOperatorOrHigher | EqualityOperator; export type BitwiseOperator = SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken; export type BitwiseOperatorOrHigher = EqualityOperatorOrHigher | BitwiseOperator; export type LogicalOperator = SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken; export type LogicalOperatorOrHigher = BitwiseOperatorOrHigher | LogicalOperator; export type CompoundAssignmentOperator = SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.CaretEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.QuestionQuestionEqualsToken; export type AssignmentOperatorOrHigher = SyntaxKind.QuestionQuestionToken | LogicalOperatorOrHigher | AssignmentOperator; export type LogicalOrCoalescingAssignmentOperator = SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.QuestionQuestionEqualsToken; export interface NodeBase extends Node { readonly flags: NodeFlags; } export interface StatementBase extends NodeBase { readonly _statementBrand: any; } export interface IterationStatementBase extends StatementBase { readonly statement: Statement; } export interface ExpressionBase extends NodeBase { readonly _expressionBrand: any; } export interface UnaryExpressionBase extends ExpressionBase { readonly _unaryExpressionBrand: any; } export interface UpdateExpressionBase extends UnaryExpressionBase { readonly _updateExpressionBrand: any; } export interface LeftHandSideExpressionBase extends UpdateExpressionBase { readonly _leftHandSideExpressionBrand: any; } export interface MemberExpressionBase extends LeftHandSideExpressionBase { readonly _memberExpressionBrand: any; } export interface PrimaryExpressionBase extends MemberExpressionBase { readonly _primaryExpressionBrand: any; } export interface TypeNodeBase extends NodeBase { readonly _typeNodeBrand: any; } export interface NodeWithTypeArgumentsBase extends TypeNodeBase { readonly typeArguments?: NodeArray; } export interface JSDocTypeBase extends TypeNodeBase { readonly _jsDocTypeBrand: any; } export interface DeclarationBase extends Node { readonly _declarationBrand: any; } export interface ModifiersBase extends Node { readonly modifiers?: NodeArray; readonly modifierFlags: ModifierFlags; } export interface FunctionLikeBase extends DeclarationBase { readonly typeParameters?: NodeArray; readonly parameters: NodeArray; readonly type?: TypeNode; readonly fullSignature?: TypeNode; } export interface BodyBase extends Node { readonly asteriskToken?: AsteriskToken; readonly body?: NodeBody; } export interface FunctionLikeWithBodyBase extends FunctionLikeBase, BodyBase { readonly _functionLikeDeclarationBrand: any; readonly body?: BlockOrExpression; } export interface ClassLikeBase extends DeclarationBase, ModifiersBase { readonly name?: Identifier; readonly typeParameters?: NodeArray; readonly heritageClauses?: NodeArray; readonly members: NodeArray; } export interface LiteralLikeNodeBase extends Node { readonly text: string; readonly tokenFlags: TokenFlags; } export interface LiteralExpressionBase extends LiteralLikeNodeBase, PrimaryExpressionBase { readonly _literalExpressionBrand: any; } export interface TemplateLiteralLikeNodeBase extends LiteralLikeNodeBase { readonly rawText: string; readonly templateFlags: TokenFlags; } export interface TypeElementBase extends Node { readonly _typeElementBrand: any; } export interface ClassElementBase extends Node { readonly _classElementBrand: any; } export interface NamedMemberBase extends DeclarationBase, ModifiersBase { readonly name: PropertyName; readonly postfixToken?: QuestionToken | ExclamationToken; } export interface ObjectLiteralElementBase extends Node { readonly _objectLiteralBrand: any; } export interface UnionOrIntersectionTypeNodeBase extends TypeNodeBase { readonly types: NodeArray; } export interface JSDocTagBase extends NodeBase { readonly tagName: Identifier; readonly comment?: NodeArray; } export interface JSDocCommentBase extends NodeBase { readonly text: string; } export interface Token extends NodeBase { readonly kind: TKind; } export interface Identifier extends PrimaryExpressionBase { readonly kind: SyntaxKind.Identifier; readonly text: string; } export interface PrivateIdentifier extends PrimaryExpressionBase { readonly kind: SyntaxKind.PrivateIdentifier; readonly text: string; } export interface QualifiedName extends NodeBase { readonly kind: SyntaxKind.QualifiedName; readonly left: EntityName; readonly right: Identifier; } export interface ComputedPropertyName extends NodeBase { readonly kind: SyntaxKind.ComputedPropertyName; readonly expression: Expression; } export interface Decorator extends NodeBase { readonly kind: SyntaxKind.Decorator; readonly expression: LeftHandSideExpression; } export interface EmptyStatement extends StatementBase { readonly kind: SyntaxKind.EmptyStatement; } export interface IfStatement extends StatementBase { readonly kind: SyntaxKind.IfStatement; readonly expression: Expression; readonly thenStatement: Statement; readonly elseStatement?: Statement; } export interface DoStatement extends IterationStatementBase { readonly kind: SyntaxKind.DoStatement; readonly expression: Expression; } export interface WhileStatement extends IterationStatementBase { readonly kind: SyntaxKind.WhileStatement; readonly expression: Expression; } export interface ForStatement extends IterationStatementBase { readonly kind: SyntaxKind.ForStatement; readonly initializer?: ForInitializer; readonly condition?: Expression; readonly incrementor?: Expression; } export interface BreakStatement extends StatementBase { readonly kind: SyntaxKind.BreakStatement; readonly label?: Identifier; } export interface ContinueStatement extends StatementBase { readonly kind: SyntaxKind.ContinueStatement; readonly label?: Identifier; } export interface ReturnStatement extends StatementBase { readonly kind: SyntaxKind.ReturnStatement; readonly expression?: Expression; } export interface WithStatement extends StatementBase { readonly kind: SyntaxKind.WithStatement; readonly expression: Expression; readonly statement: Statement; } export interface SwitchStatement extends StatementBase { readonly kind: SyntaxKind.SwitchStatement; readonly expression: Expression; readonly caseBlock: CaseBlock; } export interface CaseBlock extends NodeBase { readonly kind: SyntaxKind.CaseBlock; readonly clauses: NodeArray; } export interface ThrowStatement extends StatementBase { readonly kind: SyntaxKind.ThrowStatement; readonly expression: Expression; } export interface TryStatement extends StatementBase { readonly kind: SyntaxKind.TryStatement; readonly tryBlock: Block; readonly catchClause?: CatchClause; readonly finallyBlock?: Block; } export interface CatchClause extends NodeBase { readonly kind: SyntaxKind.CatchClause; readonly variableDeclaration?: VariableDeclaration; readonly block: Block; } export interface DebuggerStatement extends StatementBase { readonly kind: SyntaxKind.DebuggerStatement; } export interface LabeledStatement extends StatementBase { readonly kind: SyntaxKind.LabeledStatement; readonly label: Identifier; readonly statement: Statement; } export interface ExpressionStatement extends StatementBase { readonly kind: SyntaxKind.ExpressionStatement; readonly expression: Expression; } export interface Block extends StatementBase { readonly kind: SyntaxKind.Block; readonly statements: NodeArray; readonly multiLine: boolean; } export interface VariableStatement extends StatementBase, ModifiersBase { readonly kind: SyntaxKind.VariableStatement; readonly declarationList: VariableDeclarationList; } export interface VariableDeclaration extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.VariableDeclaration; readonly name: BindingName; readonly exclamationToken?: ExclamationToken; readonly type?: TypeNode; readonly initializer?: Expression; } export interface VariableDeclarationList extends NodeBase { readonly kind: SyntaxKind.VariableDeclarationList; readonly declarations: NodeArray; } export interface ParameterDeclaration extends NodeBase, DeclarationBase, ModifiersBase { readonly kind: SyntaxKind.Parameter; readonly dotDotDotToken?: DotDotDotToken; readonly name: BindingName; readonly questionToken?: QuestionToken; readonly type?: TypeNode; readonly initializer?: Expression; } export interface BindingElement extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.BindingElement; readonly dotDotDotToken?: DotDotDotToken; readonly propertyName?: PropertyName; readonly name?: BindingName; readonly initializer?: Expression; } export interface MissingDeclaration extends StatementBase, DeclarationBase, ModifiersBase { readonly kind: SyntaxKind.MissingDeclaration; } export interface FunctionDeclaration extends DeclarationBase, StatementBase, ModifiersBase, FunctionLikeWithBodyBase { readonly kind: SyntaxKind.FunctionDeclaration; readonly name?: Identifier; readonly body?: FunctionBody; } export interface ClassDeclaration extends DeclarationBase, StatementBase, ClassLikeBase { readonly kind: SyntaxKind.ClassDeclaration; } export interface ClassExpression extends PrimaryExpressionBase, ClassLikeBase { readonly kind: SyntaxKind.ClassExpression; } export interface HeritageClause extends NodeBase { readonly kind: SyntaxKind.HeritageClause; readonly token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword; readonly types: NodeArray; } export interface InterfaceDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.InterfaceDeclaration; readonly name: Identifier; readonly typeParameters?: NodeArray; readonly heritageClauses?: NodeArray; readonly members: NodeArray; } export interface TypeAliasDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.TypeAliasDeclaration; readonly name: Identifier; readonly typeParameters?: NodeArray; readonly type: TypeNode; } export interface EnumMember extends NodeBase, NamedMemberBase { readonly kind: SyntaxKind.EnumMember; readonly initializer?: Expression; } export interface EnumDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.EnumDeclaration; readonly name: Identifier; readonly members: NodeArray; } export interface ModuleBlock extends StatementBase { readonly kind: SyntaxKind.ModuleBlock; readonly statements: NodeArray; } export interface NotEmittedStatement extends StatementBase { readonly kind: SyntaxKind.NotEmittedStatement; } export interface NotEmittedTypeElement extends NodeBase, TypeElementBase { readonly kind: SyntaxKind.NotEmittedTypeElement; } export interface ImportDeclaration extends StatementBase, ModifiersBase, DeclarationBase { readonly kind: SyntaxKind.ImportDeclaration; readonly importClause?: ImportClause; readonly moduleSpecifier: Expression; readonly attributes?: ImportAttributes; } export interface ExternalModuleReference extends NodeBase { readonly kind: SyntaxKind.ExternalModuleReference; readonly expression: Expression; } export interface NamespaceImport extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.NamespaceImport; readonly name: Identifier; } export interface NamedImports extends NodeBase { readonly kind: SyntaxKind.NamedImports; readonly elements: NodeArray; } export interface ExportAssignment extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.ExportAssignment; readonly isExportEquals: boolean; readonly type: TypeNode; readonly expression: Expression; } export interface NamespaceExportDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.NamespaceExportDeclaration; readonly name: Identifier; } export interface NamespaceExport extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.NamespaceExport; readonly name: ModuleExportName; } export interface NamedExports extends NodeBase { readonly kind: SyntaxKind.NamedExports; readonly elements: NodeArray; } export interface ExportSpecifier extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.ExportSpecifier; readonly isTypeOnly: boolean; readonly propertyName?: ModuleExportName; readonly name: ModuleExportName; } export interface CallSignatureDeclaration extends NodeBase, DeclarationBase, FunctionLikeBase, TypeElementBase { readonly kind: SyntaxKind.CallSignature; } export interface ConstructSignatureDeclaration extends NodeBase, DeclarationBase, FunctionLikeBase, TypeElementBase { readonly kind: SyntaxKind.ConstructSignature; } export interface ConstructorDeclaration extends NodeBase, DeclarationBase, ModifiersBase, FunctionLikeWithBodyBase, ClassElementBase { readonly kind: SyntaxKind.Constructor; readonly body?: FunctionBody; } export interface GetAccessorDeclaration extends NamedMemberBase, FunctionLikeWithBodyBase, TypeElementBase, ClassElementBase, ObjectLiteralElementBase, NodeBase { readonly kind: SyntaxKind.GetAccessor; readonly body?: FunctionBody; } export interface SetAccessorDeclaration extends NamedMemberBase, FunctionLikeWithBodyBase, TypeElementBase, ClassElementBase, ObjectLiteralElementBase, NodeBase { readonly kind: SyntaxKind.SetAccessor; readonly body?: FunctionBody; } export interface IndexSignatureDeclaration extends NodeBase, DeclarationBase, ModifiersBase, FunctionLikeBase, TypeElementBase, ClassElementBase { readonly kind: SyntaxKind.IndexSignature; readonly type: TypeNode; } export interface MethodSignatureDeclaration extends NodeBase, NamedMemberBase, FunctionLikeBase, TypeElementBase { readonly kind: SyntaxKind.MethodSignature; } export interface MethodDeclaration extends NodeBase, NamedMemberBase, FunctionLikeWithBodyBase, ClassElementBase, ObjectLiteralElementBase { readonly kind: SyntaxKind.MethodDeclaration; readonly body?: FunctionBody; } export interface PropertySignatureDeclaration extends NodeBase, NamedMemberBase, TypeElementBase { readonly kind: SyntaxKind.PropertySignature; readonly type: TypeNode; readonly initializer: Expression; } export interface PropertyDeclaration extends NodeBase, NamedMemberBase, ClassElementBase { readonly kind: SyntaxKind.PropertyDeclaration; readonly type?: TypeNode; readonly initializer?: Expression; } export interface SemicolonClassElement extends NodeBase, DeclarationBase, ClassElementBase { readonly kind: SyntaxKind.SemicolonClassElement; } export interface ClassStaticBlockDeclaration extends NodeBase, DeclarationBase, ModifiersBase, ClassElementBase { readonly kind: SyntaxKind.ClassStaticBlockDeclaration; readonly body: Block; } export interface OmittedExpression extends ExpressionBase { readonly kind: SyntaxKind.OmittedExpression; } export interface KeywordExpression extends ExpressionBase { readonly kind: TKind; } export interface StringLiteral extends LiteralExpressionBase { readonly kind: SyntaxKind.StringLiteral; } export interface NumericLiteral extends LiteralExpressionBase { readonly kind: SyntaxKind.NumericLiteral; } export interface BigIntLiteral extends LiteralExpressionBase { readonly kind: SyntaxKind.BigIntLiteral; } export interface RegularExpressionLiteral extends LiteralExpressionBase { readonly kind: SyntaxKind.RegularExpressionLiteral; } export interface NoSubstitutionTemplateLiteral extends ExpressionBase, TemplateLiteralLikeNodeBase, DeclarationBase { readonly kind: SyntaxKind.NoSubstitutionTemplateLiteral; } export interface BinaryExpression extends ExpressionBase, DeclarationBase, ModifiersBase { readonly kind: SyntaxKind.BinaryExpression; readonly left: Expression; readonly type?: TypeNode; readonly operatorToken: BinaryOperatorToken; readonly right: Expression; } export interface PrefixUnaryExpression extends UpdateExpressionBase { readonly kind: SyntaxKind.PrefixUnaryExpression; readonly operator: SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken; readonly operand: Expression; } export interface PostfixUnaryExpression extends UpdateExpressionBase { readonly kind: SyntaxKind.PostfixUnaryExpression; readonly operand: Expression; readonly operator: SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken; } export interface YieldExpression extends ExpressionBase { readonly kind: SyntaxKind.YieldExpression; readonly asteriskToken?: AsteriskToken; readonly expression?: Expression; } export interface ArrowFunction extends ExpressionBase, DeclarationBase, ModifiersBase, FunctionLikeWithBodyBase { readonly kind: SyntaxKind.ArrowFunction; readonly equalsGreaterThanToken: EqualsGreaterThanToken; readonly body: ConciseBody; } export interface FunctionExpression extends PrimaryExpressionBase, DeclarationBase, ModifiersBase, FunctionLikeWithBodyBase { readonly kind: SyntaxKind.FunctionExpression; readonly name?: Identifier; readonly body: FunctionBody; } export interface AsExpression extends ExpressionBase { readonly kind: SyntaxKind.AsExpression; readonly expression: Expression; readonly type: TypeNode; } export interface SatisfiesExpression extends ExpressionBase { readonly kind: SyntaxKind.SatisfiesExpression; readonly expression: Expression; readonly type: TypeNode; } export interface ConditionalExpression extends ExpressionBase { readonly kind: SyntaxKind.ConditionalExpression; readonly condition: Expression; readonly questionToken: QuestionToken; readonly whenTrue: Expression; readonly colonToken: ColonToken; readonly whenFalse: Expression; } export interface PropertyAccessExpression extends MemberExpressionBase { readonly kind: SyntaxKind.PropertyAccessExpression; readonly expression: Expression; readonly questionDotToken?: QuestionDotToken; readonly name: MemberName; } export interface ElementAccessExpression extends MemberExpressionBase { readonly kind: SyntaxKind.ElementAccessExpression; readonly expression: Expression; readonly questionDotToken?: QuestionDotToken; readonly argumentExpression: Expression; } export interface CallExpression extends LeftHandSideExpressionBase, DeclarationBase { readonly kind: SyntaxKind.CallExpression; readonly expression: Expression; readonly questionDotToken?: QuestionDotToken; readonly typeArguments?: NodeArray; readonly arguments: NodeArray; } export interface NewExpression extends PrimaryExpressionBase { readonly kind: SyntaxKind.NewExpression; readonly expression: Expression; readonly typeArguments?: NodeArray; readonly arguments?: NodeArray; } export interface MetaProperty extends PrimaryExpressionBase { readonly kind: SyntaxKind.MetaProperty; readonly keywordToken: SyntaxKind.ImportKeyword | SyntaxKind.NewKeyword; readonly name: Identifier; } export interface NonNullExpression extends LeftHandSideExpressionBase { readonly kind: SyntaxKind.NonNullExpression; readonly expression: Expression; } export interface SpreadElement extends ExpressionBase { readonly kind: SyntaxKind.SpreadElement; readonly expression: Expression; } export interface TemplateExpression extends PrimaryExpressionBase { readonly kind: SyntaxKind.TemplateExpression; readonly head: TemplateHead; readonly templateSpans: NodeArray; } export interface TemplateSpan extends NodeBase { readonly kind: SyntaxKind.TemplateSpan; readonly expression: Expression; readonly literal: TemplateMiddleOrTail; } export interface TaggedTemplateExpression extends MemberExpressionBase { readonly kind: SyntaxKind.TaggedTemplateExpression; readonly tag: Expression; readonly questionDotToken: QuestionDotToken; readonly typeArguments?: NodeArray; readonly template: TemplateLiteral; } export interface ParenthesizedExpression extends PrimaryExpressionBase { readonly kind: SyntaxKind.ParenthesizedExpression; readonly expression: Expression; } export interface ArrayLiteralExpression extends PrimaryExpressionBase { readonly kind: SyntaxKind.ArrayLiteralExpression; readonly elements: NodeArray; readonly multiLine: boolean; } export interface ObjectLiteralExpression extends PrimaryExpressionBase, DeclarationBase { readonly kind: SyntaxKind.ObjectLiteralExpression; readonly properties: NodeArray; readonly multiLine: boolean; } export interface SpreadAssignment extends NodeBase, DeclarationBase, ObjectLiteralElementBase { readonly kind: SyntaxKind.SpreadAssignment; readonly expression: Expression; } export interface PropertyAssignment extends NodeBase, NamedMemberBase, ObjectLiteralElementBase { readonly kind: SyntaxKind.PropertyAssignment; readonly type: TypeNode; readonly initializer: Expression; } export interface ShorthandPropertyAssignment extends NodeBase, NamedMemberBase, ObjectLiteralElementBase { readonly kind: SyntaxKind.ShorthandPropertyAssignment; readonly type: TypeNode; readonly equalsToken?: EqualsToken; readonly objectAssignmentInitializer?: Expression; } export interface DeleteExpression extends UnaryExpressionBase { readonly kind: SyntaxKind.DeleteExpression; readonly expression: Expression; } export interface TypeOfExpression extends UnaryExpressionBase { readonly kind: SyntaxKind.TypeOfExpression; readonly expression: Expression; } export interface VoidExpression extends UnaryExpressionBase { readonly kind: SyntaxKind.VoidExpression; readonly expression: Expression; } export interface AwaitExpression extends UnaryExpressionBase { readonly kind: SyntaxKind.AwaitExpression; readonly expression: Expression; } export interface TypeAssertion extends UnaryExpressionBase { readonly kind: SyntaxKind.TypeAssertionExpression; readonly type: TypeNode; readonly expression: Expression; } export interface KeywordTypeNode extends TypeNodeBase { readonly kind: TKind; } export interface UnionTypeNode extends TypeNodeBase, UnionOrIntersectionTypeNodeBase { readonly kind: SyntaxKind.UnionType; } export interface IntersectionTypeNode extends TypeNodeBase, UnionOrIntersectionTypeNodeBase { readonly kind: SyntaxKind.IntersectionType; } export interface ConditionalTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.ConditionalType; readonly checkType: TypeNode; readonly extendsType: TypeNode; readonly trueType: TypeNode; readonly falseType: TypeNode; } export interface TypeOperatorNode extends TypeNodeBase { readonly kind: SyntaxKind.TypeOperator; readonly operator: SyntaxKind.KeyOfKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.UniqueKeyword; readonly type: TypeNode; } export interface InferTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.InferType; readonly typeParameter: TypeParameterDeclaration; } export interface ArrayTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.ArrayType; readonly elementType: TypeNode; } export interface IndexedAccessTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.IndexedAccessType; readonly objectType: TypeNode; readonly indexType: TypeNode; } export interface TypeReferenceNode extends NodeWithTypeArgumentsBase { readonly kind: SyntaxKind.TypeReference; readonly typeName: EntityName; } export interface ExpressionWithTypeArguments extends MemberExpressionBase { readonly kind: SyntaxKind.ExpressionWithTypeArguments; readonly expression: Expression; readonly typeArguments?: NodeArray; } export interface LiteralTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.LiteralType; readonly literal: Node; } export interface ThisTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.ThisType; } export interface TypePredicateNode extends TypeNodeBase { readonly kind: SyntaxKind.TypePredicate; readonly assertsModifier?: AssertsKeyword; readonly parameterName: TypePredicateParameterName; readonly type?: TypeNode; } export interface ImportAttribute extends NodeBase { readonly kind: SyntaxKind.ImportAttribute; readonly name: ImportAttributeName; readonly value: Expression; } export interface ImportAttributes extends NodeBase { readonly kind: SyntaxKind.ImportAttributes; readonly token: SyntaxKind.WithKeyword | SyntaxKind.AssertKeyword; readonly attributes: NodeArray; readonly multiLine: boolean; } export interface TypeQueryNode extends NodeWithTypeArgumentsBase { readonly kind: SyntaxKind.TypeQuery; readonly exprName: EntityName; } export interface MappedTypeNode extends TypeNodeBase, DeclarationBase { readonly kind: SyntaxKind.MappedType; readonly readonlyToken?: ReadonlyKeyword | PlusToken | MinusToken; readonly typeParameter: TypeParameterDeclaration; readonly nameType?: TypeNode; readonly questionToken?: QuestionToken | PlusToken | MinusToken; readonly type?: TypeNode; readonly members?: NodeArray; } export interface TypeLiteralNode extends TypeNodeBase, DeclarationBase { readonly kind: SyntaxKind.TypeLiteral; readonly members: NodeArray; } export interface TupleTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.TupleType; readonly elements: NodeArray; } export interface NamedTupleMember extends TypeNodeBase, DeclarationBase { readonly kind: SyntaxKind.NamedTupleMember; readonly dotDotDotToken?: DotDotDotToken; readonly name: Identifier; readonly questionToken?: QuestionToken; readonly type: TypeNode; } export interface OptionalTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.OptionalType; readonly type: TypeNode; } export interface RestTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.RestType; readonly type: TypeNode; } export interface ParenthesizedTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.ParenthesizedType; readonly type: TypeNode; } export interface FunctionTypeNode extends TypeNodeBase, ModifiersBase, FunctionLikeBase { readonly kind: SyntaxKind.FunctionType; } export interface ConstructorTypeNode extends TypeNodeBase, ModifiersBase, FunctionLikeBase { readonly kind: SyntaxKind.ConstructorType; } export interface TemplateHead extends NodeBase, TemplateLiteralLikeNodeBase { readonly kind: SyntaxKind.TemplateHead; } export interface TemplateMiddle extends NodeBase, TemplateLiteralLikeNodeBase { readonly kind: SyntaxKind.TemplateMiddle; } export interface TemplateTail extends NodeBase, TemplateLiteralLikeNodeBase { readonly kind: SyntaxKind.TemplateTail; } export interface TemplateLiteralTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.TemplateLiteralType; readonly head: TemplateHead; readonly templateSpans: NodeArray; } export interface TemplateLiteralTypeSpan extends TypeNodeBase { readonly kind: SyntaxKind.TemplateLiteralTypeSpan; readonly type: TypeNode; readonly literal: TemplateMiddleOrTail; } export interface SyntheticExpression extends ExpressionBase { readonly kind: SyntaxKind.SyntheticExpression; readonly type: any; readonly isSpread: boolean; readonly tupleNameSource?: Node; } export interface PartiallyEmittedExpression extends LeftHandSideExpressionBase { readonly kind: SyntaxKind.PartiallyEmittedExpression; readonly expression: Expression; } export interface JsxElement extends PrimaryExpressionBase { readonly kind: SyntaxKind.JsxElement; readonly openingElement: JsxOpeningElement; readonly children: NodeArray; readonly closingElement: JsxClosingElement; } export interface JsxAttributes extends PrimaryExpressionBase, DeclarationBase { readonly kind: SyntaxKind.JsxAttributes; readonly properties: NodeArray; } export interface JsxNamespacedName extends ExpressionBase { readonly kind: SyntaxKind.JsxNamespacedName; readonly namespace: Identifier; readonly name: Identifier; } export interface JsxOpeningElement extends ExpressionBase { readonly kind: SyntaxKind.JsxOpeningElement; readonly tagName: JsxTagNameExpression; readonly typeArguments?: NodeArray; readonly attributes: JsxAttributes; } export interface JsxSelfClosingElement extends PrimaryExpressionBase { readonly kind: SyntaxKind.JsxSelfClosingElement; readonly tagName: JsxTagNameExpression; readonly typeArguments?: NodeArray; readonly attributes: JsxAttributes; } export interface JsxFragment extends PrimaryExpressionBase { readonly kind: SyntaxKind.JsxFragment; readonly openingFragment: JsxOpeningFragment; readonly children: NodeArray; readonly closingFragment: JsxClosingFragment; } export interface JsxOpeningFragment extends ExpressionBase { readonly kind: SyntaxKind.JsxOpeningFragment; } export interface JsxClosingFragment extends ExpressionBase { readonly kind: SyntaxKind.JsxClosingFragment; } export interface JsxAttribute extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.JsxAttribute; readonly name: JsxAttributeName; readonly initializer?: JsxAttributeValue; } export interface JsxSpreadAttribute extends ObjectLiteralElementBase, NodeBase { readonly kind: SyntaxKind.JsxSpreadAttribute; readonly expression: Expression; } export interface JsxClosingElement extends NodeBase { readonly kind: SyntaxKind.JsxClosingElement; readonly tagName: JsxTagNameExpression; } export interface JsxExpression extends ExpressionBase { readonly kind: SyntaxKind.JsxExpression; readonly dotDotDotToken?: DotDotDotToken; readonly expression?: Expression; } export interface JsxText extends ExpressionBase, LiteralLikeNodeBase { readonly kind: SyntaxKind.JsxText; readonly containsOnlyTriviaWhiteSpaces: boolean; } export interface SyntaxList extends NodeBase { readonly kind: SyntaxKind.SyntaxList; readonly children: readonly Node[]; } export interface JSDoc extends NodeBase { readonly kind: SyntaxKind.JSDoc; readonly comment: NodeArray; readonly tags?: NodeArray; } export interface JSDocTypeExpression extends TypeNodeBase { readonly kind: SyntaxKind.JSDocTypeExpression; readonly type: TypeNode; } export interface JSDocNonNullableType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocNonNullableType; readonly type: TypeNode; } export interface JSDocNullableType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocNullableType; readonly type: TypeNode; } export interface JSDocAllType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocAllType; } export interface JSDocVariadicType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocVariadicType; readonly type: TypeNode; } export interface JSDocOptionalType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocOptionalType; readonly type: TypeNode; } export interface JSDocTypeTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocTypeTag; readonly typeExpression: Node; } export interface JSDocUnknownTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocUnknownTag; } export interface JSDocTemplateTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocTemplateTag; readonly constraint: Node; readonly typeParameters: NodeArray; } export interface JSDocReturnTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocReturnTag; readonly typeExpression?: TypeNode; } export interface JSDocPublicTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocPublicTag; } export interface JSDocPrivateTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocPrivateTag; } export interface JSDocProtectedTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocProtectedTag; } export interface JSDocReadonlyTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocReadonlyTag; } export interface JSDocOverrideTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocOverrideTag; } export interface JSDocDeprecatedTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocDeprecatedTag; } export interface JSDocSeeTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocSeeTag; readonly nameExpression: TypeNode; } export interface JSDocImplementsTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocImplementsTag; readonly className: ExpressionWithTypeArguments; } export interface JSDocAugmentsTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocAugmentsTag; readonly className: ExpressionWithTypeArguments; } export interface JSDocSatisfiesTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocSatisfiesTag; readonly typeExpression: TypeNode; } export interface JSDocThrowsTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocThrowsTag; readonly typeExpression?: TypeNode; } export interface JSDocThisTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocThisTag; readonly typeExpression: TypeNode; } export interface JSDocImportTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocImportTag; readonly importClause?: ImportClause; readonly moduleSpecifier: Expression; readonly attributes?: ImportAttributes; } export interface JSDocCallbackTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocCallbackTag; readonly typeExpression: TypeNode; readonly name?: JSDocFullName; } export interface JSDocOverloadTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocOverloadTag; readonly typeExpression: TypeNode; } export interface JSDocTypedefTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocTypedefTag; readonly typeExpression?: Node; readonly name?: JSDocFullName; } export interface JSDocSignature extends JSDocTypeBase, FunctionLikeBase { readonly kind: SyntaxKind.JSDocSignature; } export interface JSDocNameReference extends TypeNodeBase { readonly kind: SyntaxKind.JSDocNameReference; readonly name: EntityName; } export interface ModuleDeclaration extends DeclarationBase, StatementBase, ModifiersBase, BodyBase { readonly kind: SyntaxKind.ModuleDeclaration; readonly keyword: SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword; readonly name: ModuleName; readonly body?: ModuleBody; } export interface ImportEqualsDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.ImportEqualsDeclaration; readonly isTypeOnly: boolean; readonly name: Identifier; readonly moduleReference: ModuleReference; } export interface ExportDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.ExportDeclaration; readonly isTypeOnly: boolean; readonly exportClause?: NamedExportBindings; readonly moduleSpecifier?: Expression; readonly attributes?: ImportAttributes; } export interface ImportTypeNode extends NodeWithTypeArgumentsBase { readonly kind: SyntaxKind.ImportType; readonly isTypeOf: boolean; readonly argument: TypeNode; readonly attributes?: ImportAttributes; readonly qualifier?: EntityName; } export interface ImportClause extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.ImportClause; readonly phaseModifier?: ImportPhaseModifierSyntaxKind; readonly name?: Identifier; readonly namedBindings?: NamedImportBindings; } export interface ImportSpecifier extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.ImportSpecifier; readonly isTypeOnly: boolean; readonly propertyName?: ModuleExportName; readonly name: Identifier; } export interface JSDocText extends JSDocCommentBase { readonly kind: SyntaxKind.JSDocText; } export interface JSDocLink extends JSDocCommentBase { readonly kind: SyntaxKind.JSDocLink; readonly name?: EntityName; } export interface JSDocLinkPlain extends JSDocCommentBase { readonly kind: SyntaxKind.JSDocLinkPlain; readonly name?: EntityName; } export interface JSDocLinkCode extends JSDocCommentBase { readonly kind: SyntaxKind.JSDocLinkCode; readonly name?: EntityName; } export interface TypeParameterDeclaration extends NodeBase, DeclarationBase, ModifiersBase { readonly kind: SyntaxKind.TypeParameter; readonly name: Identifier; readonly constraint?: TypeNode; readonly expression?: Expression; readonly defaultType?: TypeNode; } export interface SyntheticReferenceExpression extends ExpressionBase { readonly kind: SyntaxKind.SyntheticReferenceExpression; readonly expression: Expression; readonly thisArg: Expression; } export interface JSDocTypeLiteral extends JSDocTypeBase, DeclarationBase { readonly kind: SyntaxKind.JSDocTypeLiteral; readonly jsdocPropertyTags?: readonly JSDocTag[]; readonly isArrayType: boolean; } export type Expression = ExpressionBase; export type Statement = StatementBase; export type TypeNode = TypeNodeBase; export type BlockOrExpression = Block | Expression; export type NodeBody = Block | Expression | ModuleBlock | ModuleDeclaration; export type AccessExpression = PropertyAccessExpression | ElementAccessExpression; export type DeclarationName = Identifier | PrivateIdentifier | StringLiteral | NumericLiteral | BigIntLiteral | NoSubstitutionTemplateLiteral | ComputedPropertyName | BindingPattern | ElementAccessExpression; export type ModuleName = Identifier | StringLiteral; export type ModuleExportName = Identifier | StringLiteral; export type PropertyName = Identifier | StringLiteral | NoSubstitutionTemplateLiteral | NumericLiteral | ComputedPropertyName | PrivateIdentifier | BigIntLiteral; export type ModuleBody = ModuleBlock | ModuleDeclaration; export type JSDocFullName = Identifier | ModuleDeclaration; export type ForInitializer = Expression | MissingDeclaration | VariableDeclarationList; export type ModuleReference = Identifier | QualifiedName | ExternalModuleReference; export type NamedImportBindings = NamespaceImport | NamedImports; export type NamedExportBindings = NamespaceExport | NamedExports; export type MemberName = Identifier | PrivateIdentifier; export type EntityName = Identifier | QualifiedName; export type BindingName = Identifier | BindingPattern; export type ModifierLike = Modifier | Decorator; export type JsxChild = JsxText | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment; export type JsxAttributeLike = JsxAttribute | JsxSpreadAttribute; export type JsxAttributeName = Identifier | JsxNamespacedName; export type JsxAttributeValue = StringLiteral | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment; export type JsxTagNameExpression = Identifier | ThisExpression | JsxTagNamePropertyAccess | JsxNamespacedName; export type ClassLikeDeclaration = ClassDeclaration | ClassExpression; export type AccessorDeclaration = GetAccessorDeclaration | SetAccessorDeclaration; export type LiteralLikeNode = StringLiteral | NumericLiteral | BigIntLiteral | RegularExpressionLiteral | TemplateLiteralLikeNode | JsxText; export type LiteralExpression = StringLiteral | NumericLiteral | BigIntLiteral | RegularExpressionLiteral | NoSubstitutionTemplateLiteral; export type UnionOrIntersectionTypeNode = UnionTypeNode | IntersectionTypeNode; export type TemplateLiteralLikeNode = TemplateHead | TemplateMiddle | TemplateTail; export type TemplateMiddleOrTail = TemplateMiddle | TemplateTail; export type TemplateLiteral = TemplateExpression | NoSubstitutionTemplateLiteral; export type TypePredicateParameterName = Identifier | ThisTypeNode; export type ImportAttributeName = Identifier | StringLiteral; export type LeftHandSideExpression = LeftHandSideExpressionBase; export type JSDocComment = JSDocText | JSDocLink | JSDocLinkCode | JSDocLinkPlain; export type SignatureDeclaration = CallSignatureDeclaration | ConstructSignatureDeclaration | MethodSignatureDeclaration | IndexSignatureDeclaration | FunctionTypeNode | ConstructorTypeNode | FunctionDeclaration | MethodDeclaration | ConstructorDeclaration | AccessorDeclaration | FunctionExpression | ArrowFunction; export type StringLiteralLikeNode = StringLiteral | NoSubstitutionTemplateLiteral; export type NumericOrStringLikeLiteral = StringLiteralLikeNode | NumericLiteral; export type ObjectLiteralLikeNode = ObjectLiteralExpression | ObjectBindingPattern; export type ObjectTypeDeclaration = ClassLikeDeclaration | InterfaceDeclaration | TypeLiteralNode; export type JsxOpeningLikeElement = JsxOpeningElement | JsxSelfClosingElement; export type NamedImportsOrExports = NamedImports | NamedExports; export type BreakOrContinueStatement = BreakStatement | ContinueStatement; export type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression | Decorator | JsxOpeningLikeElement | BinaryExpression; export type FunctionLikeDeclaration = FunctionDeclaration | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ConstructorDeclaration | FunctionExpression | ArrowFunction; export type VariableOrParameterDeclaration = VariableDeclaration | ParameterDeclaration; export type VariableOrPropertyDeclaration = VariableDeclaration | PropertyDeclaration; export type CallOrNewExpression = CallExpression | NewExpression; export type ImportClauseOrBindingPattern = ImportClause | BindingPattern; export type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration; export type Declaration = DeclarationBase; export type ClassElement = ClassElementBase; export type TypeElement = TypeElementBase; export type ObjectLiteralElement = ObjectLiteralElementBase; export type JSDocTag = JSDocTagBase; export type ArrayBindingElement = BindingElement | OmittedExpression; export type AssertionExpression = TypeAssertion | AsExpression; export type BooleanLiteral = TrueLiteral | FalseLiteral; export type ConciseBody = Block | Expression; export type DestructuringAssignment = ObjectDestructuringAssignment | ArrayDestructuringAssignment; export type LiteralToken = NumericLiteral | BigIntLiteral | StringLiteral | JsxText | RegularExpressionLiteral | NoSubstitutionTemplateLiteral; export type Modifier = AbstractKeyword | AccessorKeyword | AsyncKeyword | ConstKeyword | DeclareKeyword | DefaultKeyword | ExportKeyword | InKeyword | PrivateKeyword | ProtectedKeyword | PublicKeyword | ReadonlyKeyword | OutKeyword | OverrideKeyword | StaticKeyword; export type ObjectLiteralElementLike = PropertyAssignment | ShorthandPropertyAssignment | SpreadAssignment | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration; export type PropertyNameLiteral = Identifier | StringLiteral | NumericLiteral; export type PseudoLiteralToken = TemplateHead | TemplateMiddle | TemplateTail; export type TemplateLiteralToken = NoSubstitutionTemplateLiteral | PseudoLiteralToken; export type ArrayDestructuringAssignment = BinaryExpression; export type ObjectDestructuringAssignment = BinaryExpression; export type FunctionBody = Block; export type IncrementExpression = UpdateExpressionBase; export interface ForInStatement extends StatementBase { readonly kind: SyntaxKind.ForInStatement; readonly awaitModifier?: AwaitKeyword; readonly initializer: ForInitializer; readonly expression: Expression; readonly statement: Statement; } export interface ForOfStatement extends StatementBase { readonly kind: SyntaxKind.ForOfStatement; readonly awaitModifier?: AwaitKeyword; readonly initializer: ForInitializer; readonly expression: Expression; readonly statement: Statement; } export interface CaseClause extends NodeBase { readonly kind: SyntaxKind.CaseClause; readonly expression: Expression; readonly statements: NodeArray; } export interface DefaultClause extends NodeBase { readonly kind: SyntaxKind.DefaultClause; readonly expression: Expression; readonly statements: NodeArray; } export interface ObjectBindingPattern extends NodeBase { readonly kind: SyntaxKind.ObjectBindingPattern; readonly elements: NodeArray; } export interface ArrayBindingPattern extends NodeBase { readonly kind: SyntaxKind.ArrayBindingPattern; readonly elements: NodeArray; } export interface JSDocParameterTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocParameterTag; readonly name: EntityName; readonly isBracketed: boolean; readonly typeExpression?: TypeNode; readonly isNameFirst: boolean; } export interface JSDocPropertyTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocPropertyTag; readonly name: EntityName; readonly isBracketed: boolean; readonly typeExpression?: TypeNode; readonly isNameFirst: boolean; } export type ForInOrOfStatement = ForInStatement | ForOfStatement; export type CaseOrDefaultClause = CaseClause | DefaultClause; export type BindingPattern = ObjectBindingPattern | ArrayBindingPattern; export type JSDocParameterOrPropertyTag = JSDocParameterTag | JSDocPropertyTag; export type EndOfFile = Token; export type DotToken = Token; export type DotDotDotToken = Token; export type QuestionToken = Token; export type ExclamationToken = Token; export type ColonToken = Token; export type EqualsToken = Token; export type AsteriskToken = Token; export type EqualsGreaterThanToken = Token; export type PlusToken = Token; export type MinusToken = Token; export type QuestionDotToken = Token; export type AssertsKeyword = Token; export type AssertKeyword = Token; export type AwaitKeyword = Token; export type CaseKeyword = Token; export type AbstractKeyword = Token; export type AccessorKeyword = Token; export type AsyncKeyword = Token; export type ConstKeyword = Token; export type DeclareKeyword = Token; export type DefaultKeyword = Token; export type ExportKeyword = Token; export type InKeyword = Token; export type PrivateKeyword = Token; export type ProtectedKeyword = Token; export type PublicKeyword = Token; export type ReadonlyKeyword = Token; export type OutKeyword = Token; export type OverrideKeyword = Token; export type StaticKeyword = Token; export type BinaryOperatorToken = Token; export type AssignmentOperatorToken = Token; export type NullLiteral = KeywordExpression; export type TrueLiteral = KeywordExpression; export type FalseLiteral = KeywordExpression; export type ThisExpression = KeywordExpression; export type SuperExpression = KeywordExpression; export type ImportExpression = KeywordExpression; export type StatementList = NodeArray; export type CaseClausesList = NodeArray; export type VariableDeclarationNodeList = NodeArray; export type BindingElementList = NodeArray; export type TypeParameterList = NodeArray; export type ParameterList = NodeArray; export type HeritageClauseList = NodeArray; export type ClassElementList = NodeArray; export type TypeElementList = NodeArray; export type ExpressionWithTypeArgumentsList = NodeArray; export type EnumMemberList = NodeArray; export type ImportSpecifierList = NodeArray; export type ExportSpecifierList = NodeArray; export type TypeArgumentList = NodeArray; export type ArgumentList = NodeArray; export type TemplateSpanList = NodeArray; export type ElementList = NodeArray; export type PropertyDefinitionList = NodeArray; export type TypeList = NodeArray; export type ImportAttributeList = NodeArray; export type TemplateLiteralTypeSpanList = NodeArray; export type JsxChildList = NodeArray; export type JsxAttributeList = NodeArray; //# sourceMappingURL=ast.generated.d.ts.map