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<TypeNode>;
}
export interface JSDocTypeBase extends TypeNodeBase {
    readonly _jsDocTypeBrand: any;
}
export interface DeclarationBase extends Node {
    readonly _declarationBrand: any;
}
export interface ModifiersBase extends Node {
    readonly modifiers?: NodeArray<ModifierLike>;
    readonly modifierFlags: ModifierFlags;
}
export interface FunctionLikeBase extends DeclarationBase {
    readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
    readonly parameters: NodeArray<ParameterDeclaration>;
    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<TypeParameterDeclaration>;
    readonly heritageClauses?: NodeArray<HeritageClause>;
    readonly members: NodeArray<ClassElement>;
}
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<TypeNode>;
}
export interface JSDocTagBase extends NodeBase {
    readonly tagName: Identifier;
    readonly comment?: NodeArray<JSDocComment>;
}
export interface JSDocCommentBase extends NodeBase {
    readonly text: string;
}
export interface Token<TKind extends TokenSyntaxKind = TokenSyntaxKind> 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<CaseOrDefaultClause>;
}
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<Statement>;
    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<VariableDeclaration>;
}
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<ExpressionWithTypeArguments>;
}
export interface InterfaceDeclaration extends DeclarationBase, StatementBase, ModifiersBase {
    readonly kind: SyntaxKind.InterfaceDeclaration;
    readonly name: Identifier;
    readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
    readonly heritageClauses?: NodeArray<HeritageClause>;
    readonly members: NodeArray<TypeElement>;
}
export interface TypeAliasDeclaration extends DeclarationBase, StatementBase, ModifiersBase {
    readonly kind: SyntaxKind.TypeAliasDeclaration;
    readonly name: Identifier;
    readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
    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<EnumMember>;
}
export interface ModuleBlock extends StatementBase {
    readonly kind: SyntaxKind.ModuleBlock;
    readonly statements: NodeArray<Statement>;
}
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<ImportSpecifier>;
}
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<ExportSpecifier>;
}
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<TKind extends KeywordExpressionSyntaxKind = KeywordExpressionSyntaxKind> 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<TypeNode>;
    readonly arguments: NodeArray<Expression>;
}
export interface NewExpression extends PrimaryExpressionBase {
    readonly kind: SyntaxKind.NewExpression;
    readonly expression: Expression;
    readonly typeArguments?: NodeArray<TypeNode>;
    readonly arguments?: NodeArray<Expression>;
}
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<TemplateSpan>;
}
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<TypeNode>;
    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<Expression>;
    readonly multiLine: boolean;
}
export interface ObjectLiteralExpression extends PrimaryExpressionBase, DeclarationBase {
    readonly kind: SyntaxKind.ObjectLiteralExpression;
    readonly properties: NodeArray<ObjectLiteralElementLike>;
    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<TKind extends KeywordTypeSyntaxKind = KeywordTypeSyntaxKind> 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<TypeNode>;
}
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<ImportAttribute>;
    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<TypeElement>;
}
export interface TypeLiteralNode extends TypeNodeBase, DeclarationBase {
    readonly kind: SyntaxKind.TypeLiteral;
    readonly members: NodeArray<TypeElement>;
}
export interface TupleTypeNode extends TypeNodeBase {
    readonly kind: SyntaxKind.TupleType;
    readonly elements: NodeArray<TypeNode>;
}
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<TemplateLiteralTypeSpan>;
}
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<JsxChild>;
    readonly closingElement: JsxClosingElement;
}
export interface JsxAttributes extends PrimaryExpressionBase, DeclarationBase {
    readonly kind: SyntaxKind.JsxAttributes;
    readonly properties: NodeArray<JsxAttributeLike>;
}
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<TypeNode>;
    readonly attributes: JsxAttributes;
}
export interface JsxSelfClosingElement extends PrimaryExpressionBase {
    readonly kind: SyntaxKind.JsxSelfClosingElement;
    readonly tagName: JsxTagNameExpression;
    readonly typeArguments?: NodeArray<TypeNode>;
    readonly attributes: JsxAttributes;
}
export interface JsxFragment extends PrimaryExpressionBase {
    readonly kind: SyntaxKind.JsxFragment;
    readonly openingFragment: JsxOpeningFragment;
    readonly children: NodeArray<JsxChild>;
    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<JSDocComment>;
    readonly tags?: NodeArray<JSDocTag>;
}
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<TypeParameterDeclaration>;
}
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<Statement>;
}
export interface DefaultClause extends NodeBase {
    readonly kind: SyntaxKind.DefaultClause;
    readonly expression: Expression;
    readonly statements: NodeArray<Statement>;
}
export interface ObjectBindingPattern extends NodeBase {
    readonly kind: SyntaxKind.ObjectBindingPattern;
    readonly elements: NodeArray<BindingElement>;
}
export interface ArrayBindingPattern extends NodeBase {
    readonly kind: SyntaxKind.ArrayBindingPattern;
    readonly elements: NodeArray<BindingElement>;
}
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<SyntaxKind.EndOfFile>;
export type DotToken = Token<SyntaxKind.DotToken>;
export type DotDotDotToken = Token<SyntaxKind.DotDotDotToken>;
export type QuestionToken = Token<SyntaxKind.QuestionToken>;
export type ExclamationToken = Token<SyntaxKind.ExclamationToken>;
export type ColonToken = Token<SyntaxKind.ColonToken>;
export type EqualsToken = Token<SyntaxKind.EqualsToken>;
export type AsteriskToken = Token<SyntaxKind.AsteriskToken>;
export type EqualsGreaterThanToken = Token<SyntaxKind.EqualsGreaterThanToken>;
export type PlusToken = Token<SyntaxKind.PlusToken>;
export type MinusToken = Token<SyntaxKind.MinusToken>;
export type QuestionDotToken = Token<SyntaxKind.QuestionDotToken>;
export type AssertsKeyword = Token<SyntaxKind.AssertsKeyword>;
export type AssertKeyword = Token<SyntaxKind.AssertKeyword>;
export type AwaitKeyword = Token<SyntaxKind.AwaitKeyword>;
export type CaseKeyword = Token<SyntaxKind.CaseKeyword>;
export type AbstractKeyword = Token<SyntaxKind.AbstractKeyword>;
export type AccessorKeyword = Token<SyntaxKind.AccessorKeyword>;
export type AsyncKeyword = Token<SyntaxKind.AsyncKeyword>;
export type ConstKeyword = Token<SyntaxKind.ConstKeyword>;
export type DeclareKeyword = Token<SyntaxKind.DeclareKeyword>;
export type DefaultKeyword = Token<SyntaxKind.DefaultKeyword>;
export type ExportKeyword = Token<SyntaxKind.ExportKeyword>;
export type InKeyword = Token<SyntaxKind.InKeyword>;
export type PrivateKeyword = Token<SyntaxKind.PrivateKeyword>;
export type ProtectedKeyword = Token<SyntaxKind.ProtectedKeyword>;
export type PublicKeyword = Token<SyntaxKind.PublicKeyword>;
export type ReadonlyKeyword = Token<SyntaxKind.ReadonlyKeyword>;
export type OutKeyword = Token<SyntaxKind.OutKeyword>;
export type OverrideKeyword = Token<SyntaxKind.OverrideKeyword>;
export type StaticKeyword = Token<SyntaxKind.StaticKeyword>;
export type BinaryOperatorToken = Token<BinaryOperator>;
export type AssignmentOperatorToken = Token<AssignmentOperator>;
export type NullLiteral = KeywordExpression<SyntaxKind.NullKeyword>;
export type TrueLiteral = KeywordExpression<SyntaxKind.TrueKeyword>;
export type FalseLiteral = KeywordExpression<SyntaxKind.FalseKeyword>;
export type ThisExpression = KeywordExpression<SyntaxKind.ThisKeyword>;
export type SuperExpression = KeywordExpression<SyntaxKind.SuperKeyword>;
export type ImportExpression = KeywordExpression<SyntaxKind.ImportKeyword>;
export type StatementList = NodeArray<Statement>;
export type CaseClausesList = NodeArray<CaseOrDefaultClause>;
export type VariableDeclarationNodeList = NodeArray<VariableDeclaration>;
export type BindingElementList = NodeArray<BindingElement>;
export type TypeParameterList = NodeArray<TypeParameterDeclaration>;
export type ParameterList = NodeArray<ParameterDeclaration>;
export type HeritageClauseList = NodeArray<HeritageClause>;
export type ClassElementList = NodeArray<ClassElement>;
export type TypeElementList = NodeArray<TypeElement>;
export type ExpressionWithTypeArgumentsList = NodeArray<ExpressionWithTypeArguments>;
export type EnumMemberList = NodeArray<EnumMember>;
export type ImportSpecifierList = NodeArray<ImportSpecifier>;
export type ExportSpecifierList = NodeArray<ExportSpecifier>;
export type TypeArgumentList = NodeArray<TypeNode>;
export type ArgumentList = NodeArray<Expression>;
export type TemplateSpanList = NodeArray<TemplateSpan>;
export type ElementList = NodeArray<Expression>;
export type PropertyDefinitionList = NodeArray<ObjectLiteralElement>;
export type TypeList = NodeArray<TypeNode>;
export type ImportAttributeList = NodeArray<ImportAttribute>;
export type TemplateLiteralTypeSpanList = NodeArray<TemplateLiteralTypeSpan>;
export type JsxChildList = NodeArray<JsxChild>;
export type JsxAttributeList = NodeArray<JsxAttributeLike>;
//# sourceMappingURL=ast.generated.d.ts.map