• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*! *****************************************************************************
2Copyright (c) Microsoft Corporation. All rights reserved.
3Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4this file except in compliance with the License. You may obtain a copy of the
5License at http://www.apache.org/licenses/LICENSE-2.0
6
7THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10MERCHANTABLITY OR NON-INFRINGEMENT.
11
12See the Apache Version 2.0 License for specific language governing permissions
13and limitations under the License.
14***************************************************************************** */
15
16declare namespace ts {
17    const versionMajorMinor = "4.9";
18    /** The version of the TypeScript compiler release */
19    const version: string;
20    /**
21     * Type of objects whose values are all of the same type.
22     * The `in` and `for-in` operators can *not* be safely used,
23     * since `Object.prototype` may be modified by outside code.
24     */
25    interface MapLike<T> {
26        [index: string]: T;
27    }
28    interface SortedReadonlyArray<T> extends ReadonlyArray<T> {
29        " __sortedArrayBrand": any;
30    }
31    interface SortedArray<T> extends Array<T> {
32        " __sortedArrayBrand": any;
33    }
34    /** Common read methods for ES6 Map/Set. */
35    interface ReadonlyCollection<K> {
36        readonly size: number;
37        has(key: K): boolean;
38        keys(): Iterator<K>;
39    }
40    /** Common write methods for ES6 Map/Set. */
41    interface Collection<K> extends ReadonlyCollection<K> {
42        delete(key: K): boolean;
43        clear(): void;
44    }
45    /** ES6 Map interface, only read methods included. */
46    interface ReadonlyESMap<K, V> extends ReadonlyCollection<K> {
47        get(key: K): V | undefined;
48        values(): Iterator<V>;
49        entries(): Iterator<[K, V]>;
50        forEach(action: (value: V, key: K) => void): void;
51    }
52    /**
53     * ES6 Map interface, only read methods included.
54     */
55    interface ReadonlyMap<T> extends ReadonlyESMap<string, T> {
56    }
57    /** ES6 Map interface. */
58    interface ESMap<K, V> extends ReadonlyESMap<K, V>, Collection<K> {
59        set(key: K, value: V): this;
60    }
61    /**
62     * ES6 Map interface.
63     */
64    interface Map<T> extends ESMap<string, T> {
65    }
66    /** ES6 Set interface, only read methods included. */
67    interface ReadonlySet<T> extends ReadonlyCollection<T> {
68        has(value: T): boolean;
69        values(): Iterator<T>;
70        entries(): Iterator<[T, T]>;
71        forEach(action: (value: T, key: T) => void): void;
72    }
73    /** ES6 Set interface. */
74    interface Set<T> extends ReadonlySet<T>, Collection<T> {
75        add(value: T): this;
76        delete(value: T): boolean;
77    }
78    /** ES6 Iterator type. */
79    interface Iterator<T> {
80        next(): {
81            value: T;
82            done?: false;
83        } | {
84            value: void;
85            done: true;
86        };
87    }
88    /** Array that is only intended to be pushed to, never read. */
89    interface Push<T> {
90        push(...values: T[]): void;
91    }
92}
93declare namespace ts {
94    export type Path = string & {
95        __pathBrand: any;
96    };
97    export interface TextRange {
98        pos: number;
99        end: number;
100    }
101    export interface ReadonlyTextRange {
102        readonly pos: number;
103        readonly end: number;
104    }
105    export enum SyntaxKind {
106        Unknown = 0,
107        EndOfFileToken = 1,
108        SingleLineCommentTrivia = 2,
109        MultiLineCommentTrivia = 3,
110        NewLineTrivia = 4,
111        WhitespaceTrivia = 5,
112        ShebangTrivia = 6,
113        ConflictMarkerTrivia = 7,
114        NumericLiteral = 8,
115        BigIntLiteral = 9,
116        StringLiteral = 10,
117        JsxText = 11,
118        JsxTextAllWhiteSpaces = 12,
119        RegularExpressionLiteral = 13,
120        NoSubstitutionTemplateLiteral = 14,
121        TemplateHead = 15,
122        TemplateMiddle = 16,
123        TemplateTail = 17,
124        OpenBraceToken = 18,
125        CloseBraceToken = 19,
126        OpenParenToken = 20,
127        CloseParenToken = 21,
128        OpenBracketToken = 22,
129        CloseBracketToken = 23,
130        DotToken = 24,
131        DotDotDotToken = 25,
132        SemicolonToken = 26,
133        CommaToken = 27,
134        QuestionDotToken = 28,
135        LessThanToken = 29,
136        LessThanSlashToken = 30,
137        GreaterThanToken = 31,
138        LessThanEqualsToken = 32,
139        GreaterThanEqualsToken = 33,
140        EqualsEqualsToken = 34,
141        ExclamationEqualsToken = 35,
142        EqualsEqualsEqualsToken = 36,
143        ExclamationEqualsEqualsToken = 37,
144        EqualsGreaterThanToken = 38,
145        PlusToken = 39,
146        MinusToken = 40,
147        AsteriskToken = 41,
148        AsteriskAsteriskToken = 42,
149        SlashToken = 43,
150        PercentToken = 44,
151        PlusPlusToken = 45,
152        MinusMinusToken = 46,
153        LessThanLessThanToken = 47,
154        GreaterThanGreaterThanToken = 48,
155        GreaterThanGreaterThanGreaterThanToken = 49,
156        AmpersandToken = 50,
157        BarToken = 51,
158        CaretToken = 52,
159        ExclamationToken = 53,
160        TildeToken = 54,
161        AmpersandAmpersandToken = 55,
162        BarBarToken = 56,
163        QuestionToken = 57,
164        ColonToken = 58,
165        AtToken = 59,
166        QuestionQuestionToken = 60,
167        /** Only the JSDoc scanner produces BacktickToken. The normal scanner produces NoSubstitutionTemplateLiteral and related kinds. */
168        BacktickToken = 61,
169        /** Only the JSDoc scanner produces HashToken. The normal scanner produces PrivateIdentifier. */
170        HashToken = 62,
171        EqualsToken = 63,
172        PlusEqualsToken = 64,
173        MinusEqualsToken = 65,
174        AsteriskEqualsToken = 66,
175        AsteriskAsteriskEqualsToken = 67,
176        SlashEqualsToken = 68,
177        PercentEqualsToken = 69,
178        LessThanLessThanEqualsToken = 70,
179        GreaterThanGreaterThanEqualsToken = 71,
180        GreaterThanGreaterThanGreaterThanEqualsToken = 72,
181        AmpersandEqualsToken = 73,
182        BarEqualsToken = 74,
183        BarBarEqualsToken = 75,
184        AmpersandAmpersandEqualsToken = 76,
185        QuestionQuestionEqualsToken = 77,
186        CaretEqualsToken = 78,
187        Identifier = 79,
188        PrivateIdentifier = 80,
189        BreakKeyword = 81,
190        CaseKeyword = 82,
191        CatchKeyword = 83,
192        ClassKeyword = 84,
193        StructKeyword = 85,
194        ConstKeyword = 86,
195        ContinueKeyword = 87,
196        DebuggerKeyword = 88,
197        DefaultKeyword = 89,
198        DeleteKeyword = 90,
199        DoKeyword = 91,
200        ElseKeyword = 92,
201        EnumKeyword = 93,
202        ExportKeyword = 94,
203        ExtendsKeyword = 95,
204        FalseKeyword = 96,
205        FinallyKeyword = 97,
206        ForKeyword = 98,
207        FunctionKeyword = 99,
208        IfKeyword = 100,
209        ImportKeyword = 101,
210        InKeyword = 102,
211        InstanceOfKeyword = 103,
212        NewKeyword = 104,
213        NullKeyword = 105,
214        ReturnKeyword = 106,
215        SuperKeyword = 107,
216        SwitchKeyword = 108,
217        ThisKeyword = 109,
218        ThrowKeyword = 110,
219        TrueKeyword = 111,
220        TryKeyword = 112,
221        TypeOfKeyword = 113,
222        VarKeyword = 114,
223        VoidKeyword = 115,
224        WhileKeyword = 116,
225        WithKeyword = 117,
226        ImplementsKeyword = 118,
227        InterfaceKeyword = 119,
228        LetKeyword = 120,
229        PackageKeyword = 121,
230        PrivateKeyword = 122,
231        ProtectedKeyword = 123,
232        PublicKeyword = 124,
233        StaticKeyword = 125,
234        YieldKeyword = 126,
235        AbstractKeyword = 127,
236        AccessorKeyword = 128,
237        AsKeyword = 129,
238        AssertsKeyword = 130,
239        AssertKeyword = 131,
240        AnyKeyword = 132,
241        AsyncKeyword = 133,
242        AwaitKeyword = 134,
243        BooleanKeyword = 135,
244        ConstructorKeyword = 136,
245        DeclareKeyword = 137,
246        GetKeyword = 138,
247        InferKeyword = 139,
248        IntrinsicKeyword = 140,
249        IsKeyword = 141,
250        KeyOfKeyword = 142,
251        ModuleKeyword = 143,
252        NamespaceKeyword = 144,
253        NeverKeyword = 145,
254        OutKeyword = 146,
255        ReadonlyKeyword = 147,
256        RequireKeyword = 148,
257        NumberKeyword = 149,
258        ObjectKeyword = 150,
259        SatisfiesKeyword = 151,
260        SetKeyword = 152,
261        StringKeyword = 153,
262        SymbolKeyword = 154,
263        TypeKeyword = 155,
264        UndefinedKeyword = 156,
265        UniqueKeyword = 157,
266        UnknownKeyword = 158,
267        FromKeyword = 159,
268        GlobalKeyword = 160,
269        BigIntKeyword = 161,
270        OverrideKeyword = 162,
271        OfKeyword = 163,
272        QualifiedName = 164,
273        ComputedPropertyName = 165,
274        TypeParameter = 166,
275        Parameter = 167,
276        Decorator = 168,
277        PropertySignature = 169,
278        PropertyDeclaration = 170,
279        MethodSignature = 171,
280        MethodDeclaration = 172,
281        ClassStaticBlockDeclaration = 173,
282        Constructor = 174,
283        GetAccessor = 175,
284        SetAccessor = 176,
285        CallSignature = 177,
286        ConstructSignature = 178,
287        IndexSignature = 179,
288        TypePredicate = 180,
289        TypeReference = 181,
290        FunctionType = 182,
291        ConstructorType = 183,
292        TypeQuery = 184,
293        TypeLiteral = 185,
294        ArrayType = 186,
295        TupleType = 187,
296        OptionalType = 188,
297        RestType = 189,
298        UnionType = 190,
299        IntersectionType = 191,
300        ConditionalType = 192,
301        InferType = 193,
302        ParenthesizedType = 194,
303        ThisType = 195,
304        TypeOperator = 196,
305        IndexedAccessType = 197,
306        MappedType = 198,
307        LiteralType = 199,
308        NamedTupleMember = 200,
309        TemplateLiteralType = 201,
310        TemplateLiteralTypeSpan = 202,
311        ImportType = 203,
312        ObjectBindingPattern = 204,
313        ArrayBindingPattern = 205,
314        BindingElement = 206,
315        ArrayLiteralExpression = 207,
316        ObjectLiteralExpression = 208,
317        PropertyAccessExpression = 209,
318        ElementAccessExpression = 210,
319        CallExpression = 211,
320        NewExpression = 212,
321        TaggedTemplateExpression = 213,
322        TypeAssertionExpression = 214,
323        ParenthesizedExpression = 215,
324        FunctionExpression = 216,
325        ArrowFunction = 217,
326        EtsComponentExpression = 218,
327        DeleteExpression = 219,
328        TypeOfExpression = 220,
329        VoidExpression = 221,
330        AwaitExpression = 222,
331        PrefixUnaryExpression = 223,
332        PostfixUnaryExpression = 224,
333        BinaryExpression = 225,
334        ConditionalExpression = 226,
335        TemplateExpression = 227,
336        YieldExpression = 228,
337        SpreadElement = 229,
338        ClassExpression = 230,
339        OmittedExpression = 231,
340        ExpressionWithTypeArguments = 232,
341        AsExpression = 233,
342        NonNullExpression = 234,
343        MetaProperty = 235,
344        SyntheticExpression = 236,
345        SatisfiesExpression = 237,
346        TemplateSpan = 238,
347        SemicolonClassElement = 239,
348        Block = 240,
349        EmptyStatement = 241,
350        VariableStatement = 242,
351        ExpressionStatement = 243,
352        IfStatement = 244,
353        DoStatement = 245,
354        WhileStatement = 246,
355        ForStatement = 247,
356        ForInStatement = 248,
357        ForOfStatement = 249,
358        ContinueStatement = 250,
359        BreakStatement = 251,
360        ReturnStatement = 252,
361        WithStatement = 253,
362        SwitchStatement = 254,
363        LabeledStatement = 255,
364        ThrowStatement = 256,
365        TryStatement = 257,
366        DebuggerStatement = 258,
367        VariableDeclaration = 259,
368        VariableDeclarationList = 260,
369        FunctionDeclaration = 261,
370        ClassDeclaration = 262,
371        StructDeclaration = 263,
372        InterfaceDeclaration = 264,
373        TypeAliasDeclaration = 265,
374        EnumDeclaration = 266,
375        ModuleDeclaration = 267,
376        ModuleBlock = 268,
377        CaseBlock = 269,
378        NamespaceExportDeclaration = 270,
379        ImportEqualsDeclaration = 271,
380        ImportDeclaration = 272,
381        ImportClause = 273,
382        NamespaceImport = 274,
383        NamedImports = 275,
384        ImportSpecifier = 276,
385        ExportAssignment = 277,
386        ExportDeclaration = 278,
387        NamedExports = 279,
388        NamespaceExport = 280,
389        ExportSpecifier = 281,
390        MissingDeclaration = 282,
391        ExternalModuleReference = 283,
392        JsxElement = 284,
393        JsxSelfClosingElement = 285,
394        JsxOpeningElement = 286,
395        JsxClosingElement = 287,
396        JsxFragment = 288,
397        JsxOpeningFragment = 289,
398        JsxClosingFragment = 290,
399        JsxAttribute = 291,
400        JsxAttributes = 292,
401        JsxSpreadAttribute = 293,
402        JsxExpression = 294,
403        CaseClause = 295,
404        DefaultClause = 296,
405        HeritageClause = 297,
406        CatchClause = 298,
407        AssertClause = 299,
408        AssertEntry = 300,
409        ImportTypeAssertionContainer = 301,
410        PropertyAssignment = 302,
411        ShorthandPropertyAssignment = 303,
412        SpreadAssignment = 304,
413        EnumMember = 305,
414        UnparsedPrologue = 306,
415        UnparsedPrepend = 307,
416        UnparsedText = 308,
417        UnparsedInternalText = 309,
418        UnparsedSyntheticReference = 310,
419        SourceFile = 311,
420        Bundle = 312,
421        UnparsedSource = 313,
422        InputFiles = 314,
423        JSDocTypeExpression = 315,
424        JSDocNameReference = 316,
425        JSDocMemberName = 317,
426        JSDocAllType = 318,
427        JSDocUnknownType = 319,
428        JSDocNullableType = 320,
429        JSDocNonNullableType = 321,
430        JSDocOptionalType = 322,
431        JSDocFunctionType = 323,
432        JSDocVariadicType = 324,
433        JSDocNamepathType = 325,
434        JSDoc = 326,
435        /** @deprecated Use SyntaxKind.JSDoc */
436        JSDocComment = 326,
437        JSDocText = 327,
438        JSDocTypeLiteral = 328,
439        JSDocSignature = 329,
440        JSDocLink = 330,
441        JSDocLinkCode = 331,
442        JSDocLinkPlain = 332,
443        JSDocTag = 333,
444        JSDocAugmentsTag = 334,
445        JSDocImplementsTag = 335,
446        JSDocAuthorTag = 336,
447        JSDocDeprecatedTag = 337,
448        JSDocClassTag = 338,
449        JSDocPublicTag = 339,
450        JSDocPrivateTag = 340,
451        JSDocProtectedTag = 341,
452        JSDocReadonlyTag = 342,
453        JSDocOverrideTag = 343,
454        JSDocCallbackTag = 344,
455        JSDocEnumTag = 345,
456        JSDocParameterTag = 346,
457        JSDocReturnTag = 347,
458        JSDocThisTag = 348,
459        JSDocTypeTag = 349,
460        JSDocTemplateTag = 350,
461        JSDocTypedefTag = 351,
462        JSDocSeeTag = 352,
463        JSDocPropertyTag = 353,
464        SyntaxList = 354,
465        NotEmittedStatement = 355,
466        PartiallyEmittedExpression = 356,
467        CommaListExpression = 357,
468        MergeDeclarationMarker = 358,
469        EndOfDeclarationMarker = 359,
470        SyntheticReferenceExpression = 360,
471        Count = 361,
472        FirstAssignment = 63,
473        LastAssignment = 78,
474        FirstCompoundAssignment = 64,
475        LastCompoundAssignment = 78,
476        FirstReservedWord = 81,
477        LastReservedWord = 117,
478        FirstKeyword = 81,
479        LastKeyword = 163,
480        FirstFutureReservedWord = 118,
481        LastFutureReservedWord = 126,
482        FirstTypeNode = 180,
483        LastTypeNode = 203,
484        FirstPunctuation = 18,
485        LastPunctuation = 78,
486        FirstToken = 0,
487        LastToken = 163,
488        FirstTriviaToken = 2,
489        LastTriviaToken = 7,
490        FirstLiteralToken = 8,
491        LastLiteralToken = 14,
492        FirstTemplateToken = 14,
493        LastTemplateToken = 17,
494        FirstBinaryOperator = 29,
495        LastBinaryOperator = 78,
496        FirstStatement = 242,
497        LastStatement = 258,
498        FirstNode = 164,
499        FirstJSDocNode = 315,
500        LastJSDocNode = 353,
501        FirstJSDocTagNode = 333,
502        LastJSDocTagNode = 353,
503    }
504    export type TriviaSyntaxKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ShebangTrivia | SyntaxKind.ConflictMarkerTrivia;
505    export type LiteralSyntaxKind = SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral;
506    export type PseudoLiteralSyntaxKind = SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail;
507    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.QuestionQuestionToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | 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.CaretEqualsToken;
508    export type KeywordSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.StructKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FromKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.GetKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InferKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.LetKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.OfKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.RequireKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StaticKeyword | SyntaxKind.StringKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.YieldKeyword;
509    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;
510    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;
511    export type TokenSyntaxKind = SyntaxKind.Unknown | SyntaxKind.EndOfFileToken | TriviaSyntaxKind | LiteralSyntaxKind | PseudoLiteralSyntaxKind | PunctuationSyntaxKind | SyntaxKind.Identifier | KeywordSyntaxKind;
512    export type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFileToken | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken;
513    export type JSDocSyntaxKind = SyntaxKind.EndOfFileToken | SyntaxKind.WhitespaceTrivia | SyntaxKind.AtToken | SyntaxKind.NewLineTrivia | SyntaxKind.AsteriskToken | SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.LessThanToken | SyntaxKind.GreaterThanToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.EqualsToken | SyntaxKind.CommaToken | SyntaxKind.DotToken | SyntaxKind.Identifier | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.Unknown | KeywordSyntaxKind;
514    export enum NodeFlags {
515        None = 0,
516        Let = 1,
517        Const = 2,
518        NestedNamespace = 4,
519        Synthesized = 8,
520        Namespace = 16,
521        OptionalChain = 32,
522        ExportContext = 64,
523        ContainsThis = 128,
524        HasImplicitReturn = 256,
525        HasExplicitReturn = 512,
526        GlobalAugmentation = 1024,
527        HasAsyncFunctions = 2048,
528        DisallowInContext = 4096,
529        YieldContext = 8192,
530        DecoratorContext = 16384,
531        AwaitContext = 32768,
532        DisallowConditionalTypesContext = 65536,
533        ThisNodeHasError = 131072,
534        JavaScriptFile = 262144,
535        ThisNodeOrAnySubNodesHasError = 524288,
536        HasAggregatedChildData = 1048576,
537        JSDoc = 8388608,
538        JsonFile = 67108864,
539        EtsContext = 1073741824,
540        BlockScoped = 3,
541        ReachabilityCheckFlags = 768,
542        ReachabilityAndEmitFlags = 2816,
543        ContextFlags = 1124462592,
544        TypeExcludesFlags = 40960,
545    }
546    export enum EtsFlags {
547        None = 0,
548        StructContext = 2,
549        EtsExtendComponentsContext = 4,
550        EtsStylesComponentsContext = 8,
551        EtsBuildContext = 16,
552        EtsBuilderContext = 32,
553        EtsStateStylesContext = 64,
554        EtsComponentsContext = 128,
555        EtsNewExpressionContext = 256
556    }
557    export enum ModifierFlags {
558        None = 0,
559        Export = 1,
560        Ambient = 2,
561        Public = 4,
562        Private = 8,
563        Protected = 16,
564        Static = 32,
565        Readonly = 64,
566        Accessor = 128,
567        Abstract = 256,
568        Async = 512,
569        Default = 1024,
570        Const = 2048,
571        HasComputedJSDocModifiers = 4096,
572        Deprecated = 8192,
573        Override = 16384,
574        In = 32768,
575        Out = 65536,
576        Decorator = 131072,
577        HasComputedFlags = 536870912,
578        AccessibilityModifier = 28,
579        ParameterPropertyModifier = 16476,
580        NonPublicAccessibilityModifier = 24,
581        TypeScriptModifier = 117086,
582        ExportDefault = 1025,
583        All = 258047,
584        Modifier = 126975
585    }
586    export enum JsxFlags {
587        None = 0,
588        /** An element from a named property of the JSX.IntrinsicElements interface */
589        IntrinsicNamedElement = 1,
590        /** An element inferred from the string index signature of the JSX.IntrinsicElements interface */
591        IntrinsicIndexedElement = 2,
592        IntrinsicElement = 3
593    }
594    export interface Node extends ReadonlyTextRange {
595        readonly kind: SyntaxKind;
596        readonly flags: NodeFlags;
597        readonly parent: Node;
598        symbol: Symbol;
599        locals?: SymbolTable;
600        skipCheck?: boolean;
601    }
602    export interface JSDocContainer {
603    }
604    export type HasJSDoc = ParameterDeclaration | CallSignatureDeclaration | ClassStaticBlockDeclaration | ConstructSignatureDeclaration | MethodSignature | PropertySignature | ArrowFunction | ParenthesizedExpression | SpreadAssignment | ShorthandPropertyAssignment | PropertyAssignment | FunctionExpression | EmptyStatement | DebuggerStatement | Block | VariableStatement | ExpressionStatement | IfStatement | DoStatement | WhileStatement | ForStatement | ForInStatement | ForOfStatement | BreakStatement | ContinueStatement | ReturnStatement | WithStatement | SwitchStatement | LabeledStatement | ThrowStatement | TryStatement | FunctionDeclaration | ConstructorDeclaration | MethodDeclaration | VariableDeclaration | PropertyDeclaration | AccessorDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration | EnumMember | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | NamespaceExportDeclaration | ExportAssignment | IndexSignatureDeclaration | FunctionTypeNode | ConstructorTypeNode | JSDocFunctionType | ExportDeclaration | NamedTupleMember | ExportSpecifier | CaseClause | EndOfFileToken;
605    export type HasType = SignatureDeclaration | VariableDeclaration | ParameterDeclaration | PropertySignature | PropertyDeclaration | TypePredicateNode | ParenthesizedTypeNode | TypeOperatorNode | MappedTypeNode | AssertionExpression | TypeAliasDeclaration | JSDocTypeExpression | JSDocNonNullableType | JSDocNullableType | JSDocOptionalType | JSDocVariadicType;
606    export type HasTypeArguments = CallExpression | NewExpression | TaggedTemplateExpression | JsxOpeningElement | JsxSelfClosingElement;
607    export type HasInitializer = HasExpressionInitializer | ForStatement | ForInStatement | ForOfStatement | JsxAttribute;
608    export type HasExpressionInitializer = VariableDeclaration | ParameterDeclaration | BindingElement | PropertyDeclaration | PropertyAssignment | EnumMember;
609    export type HasDecorators = ParameterDeclaration | PropertyDeclaration | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ClassExpression | ClassDeclaration | StructDeclaration | FunctionDeclaration;
610    export type HasIllegalDecorators = PropertyAssignment | ShorthandPropertyAssignment | FunctionDeclaration | ConstructorDeclaration | IndexSignatureDeclaration | ClassStaticBlockDeclaration | MissingDeclaration | VariableStatement | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | NamespaceExportDeclaration | ExportDeclaration | ExportAssignment;
611    export type HasModifiers = TypeParameterDeclaration | ParameterDeclaration | ConstructorTypeNode | PropertySignature | PropertyDeclaration | MethodSignature | MethodDeclaration | ConstructorDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | IndexSignatureDeclaration | FunctionExpression | ArrowFunction | ClassExpression | VariableStatement | FunctionDeclaration | ClassDeclaration | StructDeclaration | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | ExportAssignment | ExportDeclaration;
612    export interface NodeArray<T extends Node> extends ReadonlyArray<T>, ReadonlyTextRange {
613        readonly hasTrailingComma: boolean;
614    }
615    export interface Token<TKind extends SyntaxKind> extends Node {
616        readonly kind: TKind;
617    }
618    export type EndOfFileToken = Token<SyntaxKind.EndOfFileToken> & JSDocContainer;
619    export interface PunctuationToken<TKind extends PunctuationSyntaxKind> extends Token<TKind> {
620    }
621    export type DotToken = PunctuationToken<SyntaxKind.DotToken>;
622    export type DotDotDotToken = PunctuationToken<SyntaxKind.DotDotDotToken>;
623    export type QuestionToken = PunctuationToken<SyntaxKind.QuestionToken>;
624    export type ExclamationToken = PunctuationToken<SyntaxKind.ExclamationToken>;
625    export type ColonToken = PunctuationToken<SyntaxKind.ColonToken>;
626    export type EqualsToken = PunctuationToken<SyntaxKind.EqualsToken>;
627    export type AsteriskToken = PunctuationToken<SyntaxKind.AsteriskToken>;
628    export type EqualsGreaterThanToken = PunctuationToken<SyntaxKind.EqualsGreaterThanToken>;
629    export type PlusToken = PunctuationToken<SyntaxKind.PlusToken>;
630    export type MinusToken = PunctuationToken<SyntaxKind.MinusToken>;
631    export type QuestionDotToken = PunctuationToken<SyntaxKind.QuestionDotToken>;
632    export interface KeywordToken<TKind extends KeywordSyntaxKind> extends Token<TKind> {
633    }
634    export type AssertsKeyword = KeywordToken<SyntaxKind.AssertsKeyword>;
635    export type AssertKeyword = KeywordToken<SyntaxKind.AssertKeyword>;
636    export type AwaitKeyword = KeywordToken<SyntaxKind.AwaitKeyword>;
637    /** @deprecated Use `AwaitKeyword` instead. */
638    export type AwaitKeywordToken = AwaitKeyword;
639    /** @deprecated Use `AssertsKeyword` instead. */
640    export type AssertsToken = AssertsKeyword;
641    export interface ModifierToken<TKind extends ModifierSyntaxKind> extends KeywordToken<TKind> {
642    }
643    export type AbstractKeyword = ModifierToken<SyntaxKind.AbstractKeyword>;
644    export type AccessorKeyword = ModifierToken<SyntaxKind.AccessorKeyword>;
645    export type AsyncKeyword = ModifierToken<SyntaxKind.AsyncKeyword>;
646    export type ConstKeyword = ModifierToken<SyntaxKind.ConstKeyword>;
647    export type DeclareKeyword = ModifierToken<SyntaxKind.DeclareKeyword>;
648    export type DefaultKeyword = ModifierToken<SyntaxKind.DefaultKeyword>;
649    export type ExportKeyword = ModifierToken<SyntaxKind.ExportKeyword>;
650    export type InKeyword = ModifierToken<SyntaxKind.InKeyword>;
651    export type PrivateKeyword = ModifierToken<SyntaxKind.PrivateKeyword>;
652    export type ProtectedKeyword = ModifierToken<SyntaxKind.ProtectedKeyword>;
653    export type PublicKeyword = ModifierToken<SyntaxKind.PublicKeyword>;
654    export type ReadonlyKeyword = ModifierToken<SyntaxKind.ReadonlyKeyword>;
655    export type OutKeyword = ModifierToken<SyntaxKind.OutKeyword>;
656    export type OverrideKeyword = ModifierToken<SyntaxKind.OverrideKeyword>;
657    export type StaticKeyword = ModifierToken<SyntaxKind.StaticKeyword>;
658    /** @deprecated Use `ReadonlyKeyword` instead. */
659    export type ReadonlyToken = ReadonlyKeyword;
660    export type Modifier = AbstractKeyword | AccessorKeyword | AsyncKeyword | ConstKeyword | DeclareKeyword | DefaultKeyword | ExportKeyword | InKeyword | PrivateKeyword | ProtectedKeyword | PublicKeyword | OutKeyword | OverrideKeyword | ReadonlyKeyword | StaticKeyword;
661    export type ModifierLike = Modifier | Decorator;
662    export type AccessibilityModifier = PublicKeyword | PrivateKeyword | ProtectedKeyword;
663    export type ParameterPropertyModifier = AccessibilityModifier | ReadonlyKeyword;
664    export type ClassMemberModifier = AccessibilityModifier | ReadonlyKeyword | StaticKeyword | AccessorKeyword;
665    export type ModifiersArray = NodeArray<Modifier>;
666    export enum GeneratedIdentifierFlags {
667        None = 0,
668        ReservedInNestedScopes = 8,
669        Optimistic = 16,
670        FileLevel = 32,
671        AllowNameSubstitution = 64
672    }
673    export interface Identifier extends PrimaryExpression, Declaration {
674        readonly kind: SyntaxKind.Identifier;
675        /**
676         * Prefer to use `id.unescapedText`. (Note: This is available only in services, not internally to the TypeScript compiler.)
677         * Text of identifier, but if the identifier begins with two underscores, this will begin with three.
678         */
679        readonly escapedText: __String;
680        readonly originalKeywordKind?: SyntaxKind;
681        isInJSDocNamespace?: boolean;
682    }
683    export interface TransientIdentifier extends Identifier {
684        resolvedSymbol: Symbol;
685    }
686    export interface QualifiedName extends Node {
687        readonly kind: SyntaxKind.QualifiedName;
688        readonly left: EntityName;
689        readonly right: Identifier;
690    }
691    export type EntityName = Identifier | QualifiedName;
692    export type PropertyName = Identifier | StringLiteral | NumericLiteral | ComputedPropertyName | PrivateIdentifier;
693    export type MemberName = Identifier | PrivateIdentifier;
694    export type DeclarationName = Identifier | PrivateIdentifier | StringLiteralLike | NumericLiteral | ComputedPropertyName | ElementAccessExpression | BindingPattern | EntityNameExpression;
695    export interface Declaration extends Node {
696        _declarationBrand: any;
697    }
698    export interface NamedDeclaration extends Declaration {
699        readonly name?: DeclarationName;
700    }
701    export interface DeclarationStatement extends NamedDeclaration, Statement {
702        readonly name?: Identifier | StringLiteral | NumericLiteral;
703    }
704    export interface ComputedPropertyName extends Node {
705        readonly kind: SyntaxKind.ComputedPropertyName;
706        readonly parent: Declaration;
707        readonly expression: Expression;
708    }
709    export interface PrivateIdentifier extends PrimaryExpression {
710        readonly kind: SyntaxKind.PrivateIdentifier;
711        readonly escapedText: __String;
712    }
713    export interface Decorator extends Node {
714        readonly kind: SyntaxKind.Decorator;
715        readonly parent: NamedDeclaration;
716        readonly expression: LeftHandSideExpression;
717    }
718    export interface TypeParameterDeclaration extends NamedDeclaration {
719        readonly kind: SyntaxKind.TypeParameter;
720        readonly parent: DeclarationWithTypeParameterChildren | InferTypeNode;
721        readonly modifiers?: NodeArray<Modifier>;
722        readonly name: Identifier;
723        /** Note: Consider calling `getEffectiveConstraintOfTypeParameter` */
724        readonly constraint?: TypeNode;
725        readonly default?: TypeNode;
726        expression?: Expression;
727    }
728    export interface SignatureDeclarationBase extends NamedDeclaration, JSDocContainer {
729        readonly kind: SignatureDeclaration["kind"];
730        readonly name?: PropertyName;
731        readonly typeParameters?: NodeArray<TypeParameterDeclaration> | undefined;
732        readonly parameters: NodeArray<ParameterDeclaration>;
733        readonly type?: TypeNode | undefined;
734    }
735    export type SignatureDeclaration = CallSignatureDeclaration | ConstructSignatureDeclaration | MethodSignature | IndexSignatureDeclaration | FunctionTypeNode | ConstructorTypeNode | JSDocFunctionType | FunctionDeclaration | MethodDeclaration | ConstructorDeclaration | AccessorDeclaration | FunctionExpression | ArrowFunction;
736    export interface CallSignatureDeclaration extends SignatureDeclarationBase, TypeElement {
737        readonly kind: SyntaxKind.CallSignature;
738    }
739    export interface ConstructSignatureDeclaration extends SignatureDeclarationBase, TypeElement {
740        readonly kind: SyntaxKind.ConstructSignature;
741    }
742    export type BindingName = Identifier | BindingPattern;
743    export interface VariableDeclaration extends NamedDeclaration, JSDocContainer {
744        readonly kind: SyntaxKind.VariableDeclaration;
745        readonly parent: VariableDeclarationList | CatchClause;
746        readonly name: BindingName;
747        readonly exclamationToken?: ExclamationToken;
748        readonly type?: TypeNode;
749        readonly initializer?: Expression;
750    }
751    export interface VariableDeclarationList extends Node {
752        readonly kind: SyntaxKind.VariableDeclarationList;
753        readonly parent: VariableStatement | ForStatement | ForOfStatement | ForInStatement;
754        readonly declarations: NodeArray<VariableDeclaration>;
755    }
756    export interface ParameterDeclaration extends NamedDeclaration, JSDocContainer {
757        readonly kind: SyntaxKind.Parameter;
758        readonly parent: SignatureDeclaration;
759        readonly modifiers?: NodeArray<ModifierLike>;
760        readonly dotDotDotToken?: DotDotDotToken;
761        readonly name: BindingName;
762        readonly questionToken?: QuestionToken;
763        readonly type?: TypeNode;
764        readonly initializer?: Expression;
765    }
766    export interface BindingElement extends NamedDeclaration {
767        readonly kind: SyntaxKind.BindingElement;
768        readonly parent: BindingPattern;
769        readonly propertyName?: PropertyName;
770        readonly dotDotDotToken?: DotDotDotToken;
771        readonly name: BindingName;
772        readonly initializer?: Expression;
773    }
774    export interface PropertySignature extends TypeElement, JSDocContainer {
775        readonly kind: SyntaxKind.PropertySignature;
776        readonly modifiers?: NodeArray<Modifier>;
777        readonly name: PropertyName;
778        readonly questionToken?: QuestionToken;
779        readonly type?: TypeNode;
780    }
781    export interface PropertyDeclaration extends ClassElement, JSDocContainer {
782        readonly kind: SyntaxKind.PropertyDeclaration;
783        readonly parent: ClassLikeDeclaration;
784        readonly modifiers?: NodeArray<ModifierLike>;
785        readonly name: PropertyName;
786        readonly questionToken?: QuestionToken;
787        readonly exclamationToken?: ExclamationToken;
788        readonly type?: TypeNode;
789        readonly initializer?: Expression;
790    }
791    export interface AutoAccessorPropertyDeclaration extends PropertyDeclaration {
792        _autoAccessorBrand: any;
793    }
794    export interface ObjectLiteralElement extends NamedDeclaration {
795        _objectLiteralBrand: any;
796        readonly name?: PropertyName;
797    }
798    /** Unlike ObjectLiteralElement, excludes JSXAttribute and JSXSpreadAttribute. */
799    export type ObjectLiteralElementLike = PropertyAssignment | ShorthandPropertyAssignment | SpreadAssignment | MethodDeclaration | AccessorDeclaration;
800    export interface PropertyAssignment extends ObjectLiteralElement, JSDocContainer {
801        readonly kind: SyntaxKind.PropertyAssignment;
802        readonly parent: ObjectLiteralExpression;
803        readonly name: PropertyName;
804        readonly initializer: Expression;
805    }
806    export interface ShorthandPropertyAssignment extends ObjectLiteralElement, JSDocContainer {
807        readonly kind: SyntaxKind.ShorthandPropertyAssignment;
808        readonly parent: ObjectLiteralExpression;
809        readonly name: Identifier;
810        readonly equalsToken?: EqualsToken;
811        readonly objectAssignmentInitializer?: Expression;
812    }
813    export interface SpreadAssignment extends ObjectLiteralElement, JSDocContainer {
814        readonly kind: SyntaxKind.SpreadAssignment;
815        readonly parent: ObjectLiteralExpression;
816        readonly expression: Expression;
817    }
818    export type VariableLikeDeclaration = VariableDeclaration | ParameterDeclaration | BindingElement | PropertyDeclaration | PropertyAssignment | PropertySignature | JsxAttribute | ShorthandPropertyAssignment | EnumMember | JSDocPropertyTag | JSDocParameterTag;
819    export interface PropertyLikeDeclaration extends NamedDeclaration {
820        readonly name: PropertyName;
821    }
822    export interface ObjectBindingPattern extends Node {
823        readonly kind: SyntaxKind.ObjectBindingPattern;
824        readonly parent: VariableDeclaration | ParameterDeclaration | BindingElement;
825        readonly elements: NodeArray<BindingElement>;
826    }
827    export interface ArrayBindingPattern extends Node {
828        readonly kind: SyntaxKind.ArrayBindingPattern;
829        readonly parent: VariableDeclaration | ParameterDeclaration | BindingElement;
830        readonly elements: NodeArray<ArrayBindingElement>;
831    }
832    export type BindingPattern = ObjectBindingPattern | ArrayBindingPattern;
833    export type ArrayBindingElement = BindingElement | OmittedExpression;
834    /**
835     * Several node kinds share function-like features such as a signature,
836     * a name, and a body. These nodes should extend FunctionLikeDeclarationBase.
837     * Examples:
838     * - FunctionDeclaration
839     * - MethodDeclaration
840     * - AccessorDeclaration
841     */
842    export interface FunctionLikeDeclarationBase extends SignatureDeclarationBase {
843        _functionLikeDeclarationBrand: any;
844        readonly asteriskToken?: AsteriskToken | undefined;
845        readonly questionToken?: QuestionToken | undefined;
846        readonly exclamationToken?: ExclamationToken | undefined;
847        readonly body?: Block | Expression | undefined;
848    }
849    export type FunctionLikeDeclaration = FunctionDeclaration | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ConstructorDeclaration | FunctionExpression | ArrowFunction;
850    /** @deprecated Use SignatureDeclaration */
851    export type FunctionLike = SignatureDeclaration;
852    export interface FunctionDeclaration extends FunctionLikeDeclarationBase, DeclarationStatement {
853        readonly kind: SyntaxKind.FunctionDeclaration;
854        readonly modifiers?: NodeArray<Modifier>;
855        readonly name?: Identifier;
856        readonly body?: FunctionBody;
857    }
858    export interface MethodSignature extends SignatureDeclarationBase, TypeElement {
859        readonly kind: SyntaxKind.MethodSignature;
860        readonly parent: ObjectTypeDeclaration;
861        readonly modifiers?: NodeArray<Modifier>;
862        readonly name: PropertyName;
863    }
864    export interface MethodDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer {
865        readonly kind: SyntaxKind.MethodDeclaration;
866        readonly parent: ClassLikeDeclaration | ObjectLiteralExpression;
867        readonly modifiers?: NodeArray<ModifierLike> | undefined;
868        readonly name: PropertyName;
869        readonly body?: FunctionBody | undefined;
870    }
871    export interface ConstructorDeclaration extends FunctionLikeDeclarationBase, ClassElement, JSDocContainer {
872        readonly kind: SyntaxKind.Constructor;
873        readonly parent: ClassLikeDeclaration;
874        readonly modifiers?: NodeArray<Modifier> | undefined;
875        readonly body?: FunctionBody | undefined;
876    }
877    /** For when we encounter a semicolon in a class declaration. ES6 allows these as class elements. */
878    export interface SemicolonClassElement extends ClassElement {
879        readonly kind: SyntaxKind.SemicolonClassElement;
880        readonly parent: ClassLikeDeclaration;
881    }
882    export interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
883        readonly kind: SyntaxKind.GetAccessor;
884        readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
885        readonly modifiers?: NodeArray<ModifierLike>;
886        readonly name: PropertyName;
887        readonly body?: FunctionBody;
888    }
889    export interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer {
890        readonly kind: SyntaxKind.SetAccessor;
891        readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration;
892        readonly modifiers?: NodeArray<ModifierLike>;
893        readonly name: PropertyName;
894        readonly body?: FunctionBody;
895    }
896    export type AccessorDeclaration = GetAccessorDeclaration | SetAccessorDeclaration;
897    export interface IndexSignatureDeclaration extends SignatureDeclarationBase, ClassElement, TypeElement {
898        readonly kind: SyntaxKind.IndexSignature;
899        readonly parent: ObjectTypeDeclaration;
900        readonly modifiers?: NodeArray<Modifier>;
901        readonly type: TypeNode;
902    }
903    export interface ClassStaticBlockDeclaration extends ClassElement, JSDocContainer {
904        readonly kind: SyntaxKind.ClassStaticBlockDeclaration;
905        readonly parent: ClassDeclaration | ClassExpression;
906        readonly body: Block;
907    }
908    export interface TypeNode extends Node {
909        _typeNodeBrand: any;
910    }
911    export interface KeywordTypeNode<TKind extends KeywordTypeSyntaxKind = KeywordTypeSyntaxKind> extends KeywordToken<TKind>, TypeNode {
912        readonly kind: TKind;
913    }
914    export interface ImportTypeAssertionContainer extends Node {
915        readonly kind: SyntaxKind.ImportTypeAssertionContainer;
916        readonly parent: ImportTypeNode;
917        readonly assertClause: AssertClause;
918        readonly multiLine?: boolean;
919    }
920    export interface ImportTypeNode extends NodeWithTypeArguments {
921        readonly kind: SyntaxKind.ImportType;
922        readonly isTypeOf: boolean;
923        readonly argument: TypeNode;
924        readonly assertions?: ImportTypeAssertionContainer;
925        readonly qualifier?: EntityName;
926    }
927    export interface ThisTypeNode extends TypeNode {
928        readonly kind: SyntaxKind.ThisType;
929    }
930    export type FunctionOrConstructorTypeNode = FunctionTypeNode | ConstructorTypeNode;
931    export interface FunctionOrConstructorTypeNodeBase extends TypeNode, SignatureDeclarationBase {
932        readonly kind: SyntaxKind.FunctionType | SyntaxKind.ConstructorType;
933        readonly type: TypeNode;
934    }
935    export interface FunctionTypeNode extends FunctionOrConstructorTypeNodeBase {
936        readonly kind: SyntaxKind.FunctionType;
937    }
938    export interface ConstructorTypeNode extends FunctionOrConstructorTypeNodeBase {
939        readonly kind: SyntaxKind.ConstructorType;
940        readonly modifiers?: NodeArray<Modifier>;
941    }
942    export interface NodeWithTypeArguments extends TypeNode {
943        readonly typeArguments?: NodeArray<TypeNode>;
944    }
945    export type TypeReferenceType = TypeReferenceNode | ExpressionWithTypeArguments;
946    export interface TypeReferenceNode extends NodeWithTypeArguments {
947        readonly kind: SyntaxKind.TypeReference;
948        readonly typeName: EntityName;
949    }
950    export interface TypePredicateNode extends TypeNode {
951        readonly kind: SyntaxKind.TypePredicate;
952        readonly parent: SignatureDeclaration | JSDocTypeExpression;
953        readonly assertsModifier?: AssertsKeyword;
954        readonly parameterName: Identifier | ThisTypeNode;
955        readonly type?: TypeNode;
956    }
957    export interface TypeQueryNode extends NodeWithTypeArguments {
958        readonly kind: SyntaxKind.TypeQuery;
959        readonly exprName: EntityName;
960    }
961    export interface TypeLiteralNode extends TypeNode, Declaration {
962        readonly kind: SyntaxKind.TypeLiteral;
963        readonly members: NodeArray<TypeElement>;
964    }
965    export interface ArrayTypeNode extends TypeNode {
966        readonly kind: SyntaxKind.ArrayType;
967        readonly elementType: TypeNode;
968    }
969    export interface TupleTypeNode extends TypeNode {
970        readonly kind: SyntaxKind.TupleType;
971        readonly elements: NodeArray<TypeNode | NamedTupleMember>;
972    }
973    export interface NamedTupleMember extends TypeNode, JSDocContainer, Declaration {
974        readonly kind: SyntaxKind.NamedTupleMember;
975        readonly dotDotDotToken?: Token<SyntaxKind.DotDotDotToken>;
976        readonly name: Identifier;
977        readonly questionToken?: Token<SyntaxKind.QuestionToken>;
978        readonly type: TypeNode;
979    }
980    export interface OptionalTypeNode extends TypeNode {
981        readonly kind: SyntaxKind.OptionalType;
982        readonly type: TypeNode;
983    }
984    export interface RestTypeNode extends TypeNode {
985        readonly kind: SyntaxKind.RestType;
986        readonly type: TypeNode;
987    }
988    export type UnionOrIntersectionTypeNode = UnionTypeNode | IntersectionTypeNode;
989    export interface UnionTypeNode extends TypeNode {
990        readonly kind: SyntaxKind.UnionType;
991        readonly types: NodeArray<TypeNode>;
992    }
993    export interface IntersectionTypeNode extends TypeNode {
994        readonly kind: SyntaxKind.IntersectionType;
995        readonly types: NodeArray<TypeNode>;
996    }
997    export interface ConditionalTypeNode extends TypeNode {
998        readonly kind: SyntaxKind.ConditionalType;
999        readonly checkType: TypeNode;
1000        readonly extendsType: TypeNode;
1001        readonly trueType: TypeNode;
1002        readonly falseType: TypeNode;
1003    }
1004    export interface InferTypeNode extends TypeNode {
1005        readonly kind: SyntaxKind.InferType;
1006        readonly typeParameter: TypeParameterDeclaration;
1007    }
1008    export interface ParenthesizedTypeNode extends TypeNode {
1009        readonly kind: SyntaxKind.ParenthesizedType;
1010        readonly type: TypeNode;
1011    }
1012    export interface TypeOperatorNode extends TypeNode {
1013        readonly kind: SyntaxKind.TypeOperator;
1014        readonly operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword;
1015        readonly type: TypeNode;
1016    }
1017    export interface IndexedAccessTypeNode extends TypeNode {
1018        readonly kind: SyntaxKind.IndexedAccessType;
1019        readonly objectType: TypeNode;
1020        readonly indexType: TypeNode;
1021    }
1022    export interface MappedTypeNode extends TypeNode, Declaration {
1023        readonly kind: SyntaxKind.MappedType;
1024        readonly readonlyToken?: ReadonlyKeyword | PlusToken | MinusToken;
1025        readonly typeParameter: TypeParameterDeclaration;
1026        readonly nameType?: TypeNode;
1027        readonly questionToken?: QuestionToken | PlusToken | MinusToken;
1028        readonly type?: TypeNode;
1029        /** Used only to produce grammar errors */
1030        readonly members?: NodeArray<TypeElement>;
1031    }
1032    export interface LiteralTypeNode extends TypeNode {
1033        readonly kind: SyntaxKind.LiteralType;
1034        readonly literal: NullLiteral | BooleanLiteral | LiteralExpression | PrefixUnaryExpression;
1035    }
1036    export interface StringLiteral extends LiteralExpression, Declaration {
1037        readonly kind: SyntaxKind.StringLiteral;
1038    }
1039    export type StringLiteralLike = StringLiteral | NoSubstitutionTemplateLiteral;
1040    export type PropertyNameLiteral = Identifier | StringLiteralLike | NumericLiteral;
1041    export interface TemplateLiteralTypeNode extends TypeNode {
1042        kind: SyntaxKind.TemplateLiteralType;
1043        readonly head: TemplateHead;
1044        readonly templateSpans: NodeArray<TemplateLiteralTypeSpan>;
1045    }
1046    export interface TemplateLiteralTypeSpan extends TypeNode {
1047        readonly kind: SyntaxKind.TemplateLiteralTypeSpan;
1048        readonly parent: TemplateLiteralTypeNode;
1049        readonly type: TypeNode;
1050        readonly literal: TemplateMiddle | TemplateTail;
1051    }
1052    export interface Expression extends Node {
1053        _expressionBrand: any;
1054    }
1055    export interface OmittedExpression extends Expression {
1056        readonly kind: SyntaxKind.OmittedExpression;
1057    }
1058    export interface PartiallyEmittedExpression extends LeftHandSideExpression {
1059        readonly kind: SyntaxKind.PartiallyEmittedExpression;
1060        readonly expression: Expression;
1061    }
1062    export interface UnaryExpression extends Expression {
1063        _unaryExpressionBrand: any;
1064    }
1065    /** Deprecated, please use UpdateExpression */
1066    export type IncrementExpression = UpdateExpression;
1067    export interface UpdateExpression extends UnaryExpression {
1068        _updateExpressionBrand: any;
1069    }
1070    export type PrefixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken;
1071    export interface PrefixUnaryExpression extends UpdateExpression {
1072        readonly kind: SyntaxKind.PrefixUnaryExpression;
1073        readonly operator: PrefixUnaryOperator;
1074        readonly operand: UnaryExpression;
1075    }
1076    export type PostfixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken;
1077    export interface PostfixUnaryExpression extends UpdateExpression {
1078        readonly kind: SyntaxKind.PostfixUnaryExpression;
1079        readonly operand: LeftHandSideExpression;
1080        readonly operator: PostfixUnaryOperator;
1081    }
1082    export interface LeftHandSideExpression extends UpdateExpression {
1083        _leftHandSideExpressionBrand: any;
1084    }
1085    export interface MemberExpression extends LeftHandSideExpression {
1086        _memberExpressionBrand: any;
1087    }
1088    export interface PrimaryExpression extends MemberExpression {
1089        _primaryExpressionBrand: any;
1090    }
1091    export interface NullLiteral extends PrimaryExpression {
1092        readonly kind: SyntaxKind.NullKeyword;
1093    }
1094    export interface TrueLiteral extends PrimaryExpression {
1095        readonly kind: SyntaxKind.TrueKeyword;
1096    }
1097    export interface FalseLiteral extends PrimaryExpression {
1098        readonly kind: SyntaxKind.FalseKeyword;
1099    }
1100    export type BooleanLiteral = TrueLiteral | FalseLiteral;
1101    export interface ThisExpression extends PrimaryExpression {
1102        readonly kind: SyntaxKind.ThisKeyword;
1103    }
1104    export interface SuperExpression extends PrimaryExpression {
1105        readonly kind: SyntaxKind.SuperKeyword;
1106    }
1107    export interface ImportExpression extends PrimaryExpression {
1108        readonly kind: SyntaxKind.ImportKeyword;
1109    }
1110    export interface DeleteExpression extends UnaryExpression {
1111        readonly kind: SyntaxKind.DeleteExpression;
1112        readonly expression: UnaryExpression;
1113    }
1114    export interface TypeOfExpression extends UnaryExpression {
1115        readonly kind: SyntaxKind.TypeOfExpression;
1116        readonly expression: UnaryExpression;
1117    }
1118    export interface VoidExpression extends UnaryExpression {
1119        readonly kind: SyntaxKind.VoidExpression;
1120        readonly expression: UnaryExpression;
1121    }
1122    export interface AwaitExpression extends UnaryExpression {
1123        readonly kind: SyntaxKind.AwaitExpression;
1124        readonly expression: UnaryExpression;
1125    }
1126    export interface YieldExpression extends Expression {
1127        readonly kind: SyntaxKind.YieldExpression;
1128        readonly asteriskToken?: AsteriskToken;
1129        readonly expression?: Expression;
1130    }
1131    export interface SyntheticExpression extends Expression {
1132        readonly kind: SyntaxKind.SyntheticExpression;
1133        readonly isSpread: boolean;
1134        readonly type: Type;
1135        readonly tupleNameSource?: ParameterDeclaration | NamedTupleMember;
1136    }
1137    export type ExponentiationOperator = SyntaxKind.AsteriskAsteriskToken;
1138    export type MultiplicativeOperator = SyntaxKind.AsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken;
1139    export type MultiplicativeOperatorOrHigher = ExponentiationOperator | MultiplicativeOperator;
1140    export type AdditiveOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken;
1141    export type AdditiveOperatorOrHigher = MultiplicativeOperatorOrHigher | AdditiveOperator;
1142    export type ShiftOperator = SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken;
1143    export type ShiftOperatorOrHigher = AdditiveOperatorOrHigher | ShiftOperator;
1144    export type RelationalOperator = SyntaxKind.LessThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.InstanceOfKeyword | SyntaxKind.InKeyword;
1145    export type RelationalOperatorOrHigher = ShiftOperatorOrHigher | RelationalOperator;
1146    export type EqualityOperator = SyntaxKind.EqualsEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.ExclamationEqualsToken;
1147    export type EqualityOperatorOrHigher = RelationalOperatorOrHigher | EqualityOperator;
1148    export type BitwiseOperator = SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken;
1149    export type BitwiseOperatorOrHigher = EqualityOperatorOrHigher | BitwiseOperator;
1150    export type LogicalOperator = SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken;
1151    export type LogicalOperatorOrHigher = BitwiseOperatorOrHigher | LogicalOperator;
1152    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;
1153    export type AssignmentOperator = SyntaxKind.EqualsToken | CompoundAssignmentOperator;
1154    export type AssignmentOperatorOrHigher = SyntaxKind.QuestionQuestionToken | LogicalOperatorOrHigher | AssignmentOperator;
1155    export type BinaryOperator = AssignmentOperatorOrHigher | SyntaxKind.CommaToken;
1156    export type LogicalOrCoalescingAssignmentOperator = SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.QuestionQuestionEqualsToken;
1157    export type BinaryOperatorToken = Token<BinaryOperator>;
1158    export interface BinaryExpression extends Expression, Declaration {
1159        readonly kind: SyntaxKind.BinaryExpression;
1160        readonly left: Expression;
1161        readonly operatorToken: BinaryOperatorToken;
1162        readonly right: Expression;
1163    }
1164    export type AssignmentOperatorToken = Token<AssignmentOperator>;
1165    export interface AssignmentExpression<TOperator extends AssignmentOperatorToken> extends BinaryExpression {
1166        readonly left: LeftHandSideExpression;
1167        readonly operatorToken: TOperator;
1168    }
1169    export interface ObjectDestructuringAssignment extends AssignmentExpression<EqualsToken> {
1170        readonly left: ObjectLiteralExpression;
1171    }
1172    export interface ArrayDestructuringAssignment extends AssignmentExpression<EqualsToken> {
1173        readonly left: ArrayLiteralExpression;
1174    }
1175    export type DestructuringAssignment = ObjectDestructuringAssignment | ArrayDestructuringAssignment;
1176    export type BindingOrAssignmentElement = VariableDeclaration | ParameterDeclaration | ObjectBindingOrAssignmentElement | ArrayBindingOrAssignmentElement;
1177    export type ObjectBindingOrAssignmentElement = BindingElement | PropertyAssignment | ShorthandPropertyAssignment | SpreadAssignment;
1178    export type ArrayBindingOrAssignmentElement = BindingElement | OmittedExpression | SpreadElement | ArrayLiteralExpression | ObjectLiteralExpression | AssignmentExpression<EqualsToken> | Identifier | PropertyAccessExpression | ElementAccessExpression;
1179    export type BindingOrAssignmentElementRestIndicator = DotDotDotToken | SpreadElement | SpreadAssignment;
1180    export type BindingOrAssignmentElementTarget = BindingOrAssignmentPattern | Identifier | PropertyAccessExpression | ElementAccessExpression | OmittedExpression;
1181    export type ObjectBindingOrAssignmentPattern = ObjectBindingPattern | ObjectLiteralExpression;
1182    export type ArrayBindingOrAssignmentPattern = ArrayBindingPattern | ArrayLiteralExpression;
1183    export type AssignmentPattern = ObjectLiteralExpression | ArrayLiteralExpression;
1184    export type BindingOrAssignmentPattern = ObjectBindingOrAssignmentPattern | ArrayBindingOrAssignmentPattern;
1185    export interface ConditionalExpression extends Expression {
1186        readonly kind: SyntaxKind.ConditionalExpression;
1187        readonly condition: Expression;
1188        readonly questionToken: QuestionToken;
1189        readonly whenTrue: Expression;
1190        readonly colonToken: ColonToken;
1191        readonly whenFalse: Expression;
1192    }
1193    export type FunctionBody = Block;
1194    export type ConciseBody = FunctionBody | Expression;
1195    export interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclarationBase, JSDocContainer {
1196        readonly kind: SyntaxKind.FunctionExpression;
1197        readonly modifiers?: NodeArray<Modifier>;
1198        readonly name?: Identifier;
1199        readonly body: FunctionBody;
1200    }
1201    export interface EtsComponentExpression extends PrimaryExpression, Declaration {
1202        readonly kind: SyntaxKind.EtsComponentExpression;
1203        readonly expression: LeftHandSideExpression;
1204        readonly typeArguments?: NodeArray<TypeNode>;
1205        readonly arguments: NodeArray<Expression>;
1206        readonly body?: Block;
1207    }
1208    export interface ArrowFunction extends Expression, FunctionLikeDeclarationBase, JSDocContainer {
1209        readonly kind: SyntaxKind.ArrowFunction;
1210        readonly modifiers?: NodeArray<Modifier>;
1211        readonly equalsGreaterThanToken: EqualsGreaterThanToken;
1212        readonly body: ConciseBody;
1213        readonly name: never;
1214    }
1215    export interface LiteralLikeNode extends Node {
1216        text: string;
1217        isUnterminated?: boolean;
1218        hasExtendedUnicodeEscape?: boolean;
1219    }
1220    export interface TemplateLiteralLikeNode extends LiteralLikeNode {
1221        rawText?: string;
1222    }
1223    export interface LiteralExpression extends LiteralLikeNode, PrimaryExpression {
1224        _literalExpressionBrand: any;
1225    }
1226    export interface RegularExpressionLiteral extends LiteralExpression {
1227        readonly kind: SyntaxKind.RegularExpressionLiteral;
1228    }
1229    export interface NoSubstitutionTemplateLiteral extends LiteralExpression, TemplateLiteralLikeNode, Declaration {
1230        readonly kind: SyntaxKind.NoSubstitutionTemplateLiteral;
1231    }
1232    export enum TokenFlags {
1233        None = 0,
1234        Scientific = 16,
1235        Octal = 32,
1236        HexSpecifier = 64,
1237        BinarySpecifier = 128,
1238        OctalSpecifier = 256,
1239    }
1240    export interface NumericLiteral extends LiteralExpression, Declaration {
1241        readonly kind: SyntaxKind.NumericLiteral;
1242    }
1243    export interface BigIntLiteral extends LiteralExpression {
1244        readonly kind: SyntaxKind.BigIntLiteral;
1245    }
1246    export type LiteralToken = NumericLiteral | BigIntLiteral | StringLiteral | JsxText | RegularExpressionLiteral | NoSubstitutionTemplateLiteral;
1247    export interface TemplateHead extends TemplateLiteralLikeNode {
1248        readonly kind: SyntaxKind.TemplateHead;
1249        readonly parent: TemplateExpression | TemplateLiteralTypeNode;
1250    }
1251    export interface TemplateMiddle extends TemplateLiteralLikeNode {
1252        readonly kind: SyntaxKind.TemplateMiddle;
1253        readonly parent: TemplateSpan | TemplateLiteralTypeSpan;
1254    }
1255    export interface TemplateTail extends TemplateLiteralLikeNode {
1256        readonly kind: SyntaxKind.TemplateTail;
1257        readonly parent: TemplateSpan | TemplateLiteralTypeSpan;
1258    }
1259    export type PseudoLiteralToken = TemplateHead | TemplateMiddle | TemplateTail;
1260    export type TemplateLiteralToken = NoSubstitutionTemplateLiteral | PseudoLiteralToken;
1261    export interface TemplateExpression extends PrimaryExpression {
1262        readonly kind: SyntaxKind.TemplateExpression;
1263        readonly head: TemplateHead;
1264        readonly templateSpans: NodeArray<TemplateSpan>;
1265    }
1266    export type TemplateLiteral = TemplateExpression | NoSubstitutionTemplateLiteral;
1267    export interface TemplateSpan extends Node {
1268        readonly kind: SyntaxKind.TemplateSpan;
1269        readonly parent: TemplateExpression;
1270        readonly expression: Expression;
1271        readonly literal: TemplateMiddle | TemplateTail;
1272    }
1273    export interface ParenthesizedExpression extends PrimaryExpression, JSDocContainer {
1274        readonly kind: SyntaxKind.ParenthesizedExpression;
1275        readonly expression: Expression;
1276    }
1277    export interface ArrayLiteralExpression extends PrimaryExpression {
1278        readonly kind: SyntaxKind.ArrayLiteralExpression;
1279        readonly elements: NodeArray<Expression>;
1280    }
1281    export interface SpreadElement extends Expression {
1282        readonly kind: SyntaxKind.SpreadElement;
1283        readonly parent: ArrayLiteralExpression | CallExpression | NewExpression;
1284        readonly expression: Expression;
1285    }
1286    /**
1287     * This interface is a base interface for ObjectLiteralExpression and JSXAttributes to extend from. JSXAttributes is similar to
1288     * ObjectLiteralExpression in that it contains array of properties; however, JSXAttributes' properties can only be
1289     * JSXAttribute or JSXSpreadAttribute. ObjectLiteralExpression, on the other hand, can only have properties of type
1290     * ObjectLiteralElement (e.g. PropertyAssignment, ShorthandPropertyAssignment etc.)
1291     */
1292    export interface ObjectLiteralExpressionBase<T extends ObjectLiteralElement> extends PrimaryExpression, Declaration {
1293        readonly properties: NodeArray<T>;
1294    }
1295    export interface ObjectLiteralExpression extends ObjectLiteralExpressionBase<ObjectLiteralElementLike> {
1296        readonly kind: SyntaxKind.ObjectLiteralExpression;
1297    }
1298    export type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression;
1299    export type EntityNameOrEntityNameExpression = EntityName | EntityNameExpression;
1300    export type AccessExpression = PropertyAccessExpression | ElementAccessExpression;
1301    export interface PropertyAccessExpression extends MemberExpression, NamedDeclaration {
1302        readonly kind: SyntaxKind.PropertyAccessExpression;
1303        readonly expression: LeftHandSideExpression;
1304        readonly questionDotToken?: QuestionDotToken;
1305        readonly name: MemberName;
1306    }
1307    export interface PropertyAccessChain extends PropertyAccessExpression {
1308        _optionalChainBrand: any;
1309        readonly name: MemberName;
1310    }
1311    export interface SuperPropertyAccessExpression extends PropertyAccessExpression {
1312        readonly expression: SuperExpression;
1313    }
1314    /** Brand for a PropertyAccessExpression which, like a QualifiedName, consists of a sequence of identifiers separated by dots. */
1315    export interface PropertyAccessEntityNameExpression extends PropertyAccessExpression {
1316        _propertyAccessExpressionLikeQualifiedNameBrand?: any;
1317        readonly expression: EntityNameExpression;
1318        readonly name: Identifier;
1319    }
1320    export interface ElementAccessExpression extends MemberExpression {
1321        readonly kind: SyntaxKind.ElementAccessExpression;
1322        readonly expression: LeftHandSideExpression;
1323        readonly questionDotToken?: QuestionDotToken;
1324        readonly argumentExpression: Expression;
1325    }
1326    export interface ElementAccessChain extends ElementAccessExpression {
1327        _optionalChainBrand: any;
1328    }
1329    export interface SuperElementAccessExpression extends ElementAccessExpression {
1330        readonly expression: SuperExpression;
1331    }
1332    export type SuperProperty = SuperPropertyAccessExpression | SuperElementAccessExpression;
1333    export interface CallExpression extends LeftHandSideExpression, Declaration {
1334        readonly kind: SyntaxKind.CallExpression;
1335        readonly expression: LeftHandSideExpression;
1336        readonly questionDotToken?: QuestionDotToken;
1337        readonly typeArguments?: NodeArray<TypeNode>;
1338        readonly arguments: NodeArray<Expression>;
1339    }
1340    export interface CallChain extends CallExpression {
1341        _optionalChainBrand: any;
1342    }
1343    export type OptionalChain = PropertyAccessChain | ElementAccessChain | CallChain | NonNullChain;
1344    export interface SuperCall extends CallExpression {
1345        readonly expression: SuperExpression;
1346    }
1347    export interface ImportCall extends CallExpression {
1348        readonly expression: ImportExpression;
1349    }
1350    export interface ExpressionWithTypeArguments extends MemberExpression, NodeWithTypeArguments {
1351        readonly kind: SyntaxKind.ExpressionWithTypeArguments;
1352        readonly expression: LeftHandSideExpression;
1353    }
1354    export interface NewExpression extends PrimaryExpression, Declaration {
1355        readonly kind: SyntaxKind.NewExpression;
1356        readonly expression: LeftHandSideExpression;
1357        readonly typeArguments?: NodeArray<TypeNode>;
1358        readonly arguments?: NodeArray<Expression>;
1359    }
1360    export interface TaggedTemplateExpression extends MemberExpression {
1361        readonly kind: SyntaxKind.TaggedTemplateExpression;
1362        readonly tag: LeftHandSideExpression;
1363        readonly typeArguments?: NodeArray<TypeNode>;
1364        readonly template: TemplateLiteral;
1365    }
1366    export type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression | Decorator | JsxOpeningLikeElement | EtsComponentExpression;
1367    export interface AsExpression extends Expression {
1368        readonly kind: SyntaxKind.AsExpression;
1369        readonly expression: Expression;
1370        readonly type: TypeNode;
1371    }
1372    export interface TypeAssertion extends UnaryExpression {
1373        readonly kind: SyntaxKind.TypeAssertionExpression;
1374        readonly type: TypeNode;
1375        readonly expression: UnaryExpression;
1376    }
1377    export interface SatisfiesExpression extends Expression {
1378        readonly kind: SyntaxKind.SatisfiesExpression;
1379        readonly expression: Expression;
1380        readonly type: TypeNode;
1381    }
1382    export type AssertionExpression = TypeAssertion | AsExpression;
1383    export interface NonNullExpression extends LeftHandSideExpression {
1384        readonly kind: SyntaxKind.NonNullExpression;
1385        readonly expression: Expression;
1386    }
1387    export interface NonNullChain extends NonNullExpression {
1388        _optionalChainBrand: any;
1389    }
1390    export interface MetaProperty extends PrimaryExpression {
1391        readonly kind: SyntaxKind.MetaProperty;
1392        readonly keywordToken: SyntaxKind.NewKeyword | SyntaxKind.ImportKeyword;
1393        readonly name: Identifier;
1394    }
1395    export interface JsxElement extends PrimaryExpression {
1396        readonly kind: SyntaxKind.JsxElement;
1397        readonly openingElement: JsxOpeningElement;
1398        readonly children: NodeArray<JsxChild>;
1399        readonly closingElement: JsxClosingElement;
1400    }
1401    export type JsxOpeningLikeElement = JsxSelfClosingElement | JsxOpeningElement;
1402    export type JsxAttributeLike = JsxAttribute | JsxSpreadAttribute;
1403    export type JsxTagNameExpression = Identifier | ThisExpression | JsxTagNamePropertyAccess;
1404    export interface JsxTagNamePropertyAccess extends PropertyAccessExpression {
1405        readonly expression: JsxTagNameExpression;
1406    }
1407    export interface JsxAttributes extends ObjectLiteralExpressionBase<JsxAttributeLike> {
1408        readonly kind: SyntaxKind.JsxAttributes;
1409        readonly parent: JsxOpeningLikeElement;
1410    }
1411    export interface JsxOpeningElement extends Expression {
1412        readonly kind: SyntaxKind.JsxOpeningElement;
1413        readonly parent: JsxElement;
1414        readonly tagName: JsxTagNameExpression;
1415        readonly typeArguments?: NodeArray<TypeNode>;
1416        readonly attributes: JsxAttributes;
1417    }
1418    export interface JsxSelfClosingElement extends PrimaryExpression {
1419        readonly kind: SyntaxKind.JsxSelfClosingElement;
1420        readonly tagName: JsxTagNameExpression;
1421        readonly typeArguments?: NodeArray<TypeNode>;
1422        readonly attributes: JsxAttributes;
1423    }
1424    export interface JsxFragment extends PrimaryExpression {
1425        readonly kind: SyntaxKind.JsxFragment;
1426        readonly openingFragment: JsxOpeningFragment;
1427        readonly children: NodeArray<JsxChild>;
1428        readonly closingFragment: JsxClosingFragment;
1429    }
1430    export interface JsxOpeningFragment extends Expression {
1431        readonly kind: SyntaxKind.JsxOpeningFragment;
1432        readonly parent: JsxFragment;
1433    }
1434    export interface JsxClosingFragment extends Expression {
1435        readonly kind: SyntaxKind.JsxClosingFragment;
1436        readonly parent: JsxFragment;
1437    }
1438    export interface JsxAttribute extends ObjectLiteralElement {
1439        readonly kind: SyntaxKind.JsxAttribute;
1440        readonly parent: JsxAttributes;
1441        readonly name: Identifier;
1442        readonly initializer?: JsxAttributeValue;
1443    }
1444    export type JsxAttributeValue = StringLiteral | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment;
1445    export interface JsxSpreadAttribute extends ObjectLiteralElement {
1446        readonly kind: SyntaxKind.JsxSpreadAttribute;
1447        readonly parent: JsxAttributes;
1448        readonly expression: Expression;
1449    }
1450    export interface JsxClosingElement extends Node {
1451        readonly kind: SyntaxKind.JsxClosingElement;
1452        readonly parent: JsxElement;
1453        readonly tagName: JsxTagNameExpression;
1454    }
1455    export interface JsxExpression extends Expression {
1456        readonly kind: SyntaxKind.JsxExpression;
1457        readonly parent: JsxElement | JsxFragment | JsxAttributeLike;
1458        readonly dotDotDotToken?: Token<SyntaxKind.DotDotDotToken>;
1459        readonly expression?: Expression;
1460    }
1461    export interface JsxText extends LiteralLikeNode {
1462        readonly kind: SyntaxKind.JsxText;
1463        readonly parent: JsxElement | JsxFragment;
1464        readonly containsOnlyTriviaWhiteSpaces: boolean;
1465    }
1466    export type JsxChild = JsxText | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment;
1467    export interface Statement extends Node, JSDocContainer {
1468        _statementBrand: any;
1469    }
1470    export interface NotEmittedStatement extends Statement {
1471        readonly kind: SyntaxKind.NotEmittedStatement;
1472    }
1473    /**
1474     * A list of comma-separated expressions. This node is only created by transformations.
1475     */
1476    export interface CommaListExpression extends Expression {
1477        readonly kind: SyntaxKind.CommaListExpression;
1478        readonly elements: NodeArray<Expression>;
1479    }
1480    export interface EmptyStatement extends Statement {
1481        readonly kind: SyntaxKind.EmptyStatement;
1482    }
1483    export interface DebuggerStatement extends Statement {
1484        readonly kind: SyntaxKind.DebuggerStatement;
1485    }
1486    export interface MissingDeclaration extends DeclarationStatement {
1487        readonly kind: SyntaxKind.MissingDeclaration;
1488        readonly name?: Identifier;
1489    }
1490    export type BlockLike = SourceFile | Block | ModuleBlock | CaseOrDefaultClause;
1491    export interface Block extends Statement {
1492        readonly kind: SyntaxKind.Block;
1493        readonly statements: NodeArray<Statement>;
1494    }
1495    export interface VariableStatement extends Statement {
1496        readonly kind: SyntaxKind.VariableStatement;
1497        readonly modifiers?: NodeArray<Modifier>;
1498        readonly declarationList: VariableDeclarationList;
1499    }
1500    export interface ExpressionStatement extends Statement {
1501        readonly kind: SyntaxKind.ExpressionStatement;
1502        readonly expression: Expression;
1503    }
1504    export interface IfStatement extends Statement {
1505        readonly kind: SyntaxKind.IfStatement;
1506        readonly expression: Expression;
1507        readonly thenStatement: Statement;
1508        readonly elseStatement?: Statement;
1509    }
1510    export interface IterationStatement extends Statement {
1511        readonly statement: Statement;
1512    }
1513    export interface DoStatement extends IterationStatement {
1514        readonly kind: SyntaxKind.DoStatement;
1515        readonly expression: Expression;
1516    }
1517    export interface WhileStatement extends IterationStatement {
1518        readonly kind: SyntaxKind.WhileStatement;
1519        readonly expression: Expression;
1520    }
1521    export type ForInitializer = VariableDeclarationList | Expression;
1522    export interface ForStatement extends IterationStatement {
1523        readonly kind: SyntaxKind.ForStatement;
1524        readonly initializer?: ForInitializer;
1525        readonly condition?: Expression;
1526        readonly incrementor?: Expression;
1527    }
1528    export type ForInOrOfStatement = ForInStatement | ForOfStatement;
1529    export interface ForInStatement extends IterationStatement {
1530        readonly kind: SyntaxKind.ForInStatement;
1531        readonly initializer: ForInitializer;
1532        readonly expression: Expression;
1533    }
1534    export interface ForOfStatement extends IterationStatement {
1535        readonly kind: SyntaxKind.ForOfStatement;
1536        readonly awaitModifier?: AwaitKeyword;
1537        readonly initializer: ForInitializer;
1538        readonly expression: Expression;
1539    }
1540    export interface BreakStatement extends Statement {
1541        readonly kind: SyntaxKind.BreakStatement;
1542        readonly label?: Identifier;
1543    }
1544    export interface ContinueStatement extends Statement {
1545        readonly kind: SyntaxKind.ContinueStatement;
1546        readonly label?: Identifier;
1547    }
1548    export type BreakOrContinueStatement = BreakStatement | ContinueStatement;
1549    export interface ReturnStatement extends Statement {
1550        readonly kind: SyntaxKind.ReturnStatement;
1551        readonly expression?: Expression;
1552    }
1553    export interface WithStatement extends Statement {
1554        readonly kind: SyntaxKind.WithStatement;
1555        readonly expression: Expression;
1556        readonly statement: Statement;
1557    }
1558    export interface SwitchStatement extends Statement {
1559        readonly kind: SyntaxKind.SwitchStatement;
1560        readonly expression: Expression;
1561        readonly caseBlock: CaseBlock;
1562        possiblyExhaustive?: boolean;
1563    }
1564    export interface CaseBlock extends Node {
1565        readonly kind: SyntaxKind.CaseBlock;
1566        readonly parent: SwitchStatement;
1567        readonly clauses: NodeArray<CaseOrDefaultClause>;
1568    }
1569    export interface CaseClause extends Node, JSDocContainer {
1570        readonly kind: SyntaxKind.CaseClause;
1571        readonly parent: CaseBlock;
1572        readonly expression: Expression;
1573        readonly statements: NodeArray<Statement>;
1574    }
1575    export interface DefaultClause extends Node {
1576        readonly kind: SyntaxKind.DefaultClause;
1577        readonly parent: CaseBlock;
1578        readonly statements: NodeArray<Statement>;
1579    }
1580    export type CaseOrDefaultClause = CaseClause | DefaultClause;
1581    export interface LabeledStatement extends Statement {
1582        readonly kind: SyntaxKind.LabeledStatement;
1583        readonly label: Identifier;
1584        readonly statement: Statement;
1585    }
1586    export interface ThrowStatement extends Statement {
1587        readonly kind: SyntaxKind.ThrowStatement;
1588        readonly expression: Expression;
1589    }
1590    export interface TryStatement extends Statement {
1591        readonly kind: SyntaxKind.TryStatement;
1592        readonly tryBlock: Block;
1593        readonly catchClause?: CatchClause;
1594        readonly finallyBlock?: Block;
1595    }
1596    export interface CatchClause extends Node {
1597        readonly kind: SyntaxKind.CatchClause;
1598        readonly parent: TryStatement;
1599        readonly variableDeclaration?: VariableDeclaration;
1600        readonly block: Block;
1601    }
1602    export type ObjectTypeDeclaration = ClassLikeDeclaration | InterfaceDeclaration | TypeLiteralNode;
1603    export type DeclarationWithTypeParameters = DeclarationWithTypeParameterChildren | JSDocTypedefTag | JSDocCallbackTag | JSDocSignature;
1604    export type DeclarationWithTypeParameterChildren = SignatureDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration | JSDocTemplateTag;
1605    export interface ClassLikeDeclarationBase extends NamedDeclaration, JSDocContainer {
1606        readonly kind: SyntaxKind.ClassDeclaration | SyntaxKind.ClassExpression | SyntaxKind.StructDeclaration;
1607        readonly name?: Identifier;
1608        readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
1609        readonly heritageClauses?: NodeArray<HeritageClause>;
1610        readonly members: NodeArray<ClassElement>;
1611    }
1612    export interface ClassDeclaration extends ClassLikeDeclarationBase, DeclarationStatement {
1613        readonly kind: SyntaxKind.ClassDeclaration;
1614        readonly modifiers?: NodeArray<ModifierLike>;
1615        /** May be undefined in `export default class { ... }`. */
1616        readonly name?: Identifier;
1617    }
1618    export interface StructDeclaration extends ClassLikeDeclarationBase, DeclarationStatement {
1619        readonly kind: SyntaxKind.StructDeclaration;
1620        readonly modifiers?: NodeArray<ModifierLike>;
1621        /** May be undefined in `export default class { ... }`. */
1622        readonly name?: Identifier;
1623    }
1624    export interface ClassExpression extends ClassLikeDeclarationBase, PrimaryExpression {
1625        readonly kind: SyntaxKind.ClassExpression;
1626        readonly modifiers?: NodeArray<ModifierLike>;
1627    }
1628    export type ClassLikeDeclaration = ClassDeclaration | ClassExpression | StructDeclaration;
1629    export interface ClassElement extends NamedDeclaration {
1630        _classElementBrand: any;
1631        readonly name?: PropertyName;
1632    }
1633    export interface TypeElement extends NamedDeclaration {
1634        _typeElementBrand: any;
1635        readonly name?: PropertyName;
1636        readonly questionToken?: QuestionToken | undefined;
1637    }
1638    export interface InterfaceDeclaration extends DeclarationStatement, JSDocContainer {
1639        readonly kind: SyntaxKind.InterfaceDeclaration;
1640        readonly modifiers?: NodeArray<Modifier>;
1641        readonly name: Identifier;
1642        readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
1643        readonly heritageClauses?: NodeArray<HeritageClause>;
1644        readonly members: NodeArray<TypeElement>;
1645    }
1646    export interface HeritageClause extends Node {
1647        readonly kind: SyntaxKind.HeritageClause;
1648        readonly parent: InterfaceDeclaration | ClassLikeDeclaration;
1649        readonly token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword;
1650        readonly types: NodeArray<ExpressionWithTypeArguments>;
1651    }
1652    export interface TypeAliasDeclaration extends DeclarationStatement, JSDocContainer {
1653        readonly kind: SyntaxKind.TypeAliasDeclaration;
1654        readonly modifiers?: NodeArray<Modifier>;
1655        readonly name: Identifier;
1656        readonly typeParameters?: NodeArray<TypeParameterDeclaration>;
1657        readonly type: TypeNode;
1658    }
1659    export interface EnumMember extends NamedDeclaration, JSDocContainer {
1660        readonly kind: SyntaxKind.EnumMember;
1661        readonly parent: EnumDeclaration;
1662        readonly name: PropertyName;
1663        readonly initializer?: Expression;
1664    }
1665    export interface EnumDeclaration extends DeclarationStatement, JSDocContainer {
1666        readonly kind: SyntaxKind.EnumDeclaration;
1667        readonly modifiers?: NodeArray<Modifier>;
1668        readonly name: Identifier;
1669        readonly members: NodeArray<EnumMember>;
1670    }
1671    export type ModuleName = Identifier | StringLiteral;
1672    export type ModuleBody = NamespaceBody | JSDocNamespaceBody;
1673    export interface ModuleDeclaration extends DeclarationStatement, JSDocContainer {
1674        readonly kind: SyntaxKind.ModuleDeclaration;
1675        readonly parent: ModuleBody | SourceFile;
1676        readonly modifiers?: NodeArray<Modifier>;
1677        readonly name: ModuleName;
1678        readonly body?: ModuleBody | JSDocNamespaceDeclaration;
1679    }
1680    export type NamespaceBody = ModuleBlock | NamespaceDeclaration;
1681    export interface NamespaceDeclaration extends ModuleDeclaration {
1682        readonly name: Identifier;
1683        readonly body: NamespaceBody;
1684    }
1685    export type JSDocNamespaceBody = Identifier | JSDocNamespaceDeclaration;
1686    export interface JSDocNamespaceDeclaration extends ModuleDeclaration {
1687        readonly name: Identifier;
1688        readonly body?: JSDocNamespaceBody;
1689    }
1690    export interface ModuleBlock extends Node, Statement {
1691        readonly kind: SyntaxKind.ModuleBlock;
1692        readonly parent: ModuleDeclaration;
1693        readonly statements: NodeArray<Statement>;
1694    }
1695    export type ModuleReference = EntityName | ExternalModuleReference;
1696    /**
1697     * One of:
1698     * - import x = require("mod");
1699     * - import x = M.x;
1700     */
1701    export interface ImportEqualsDeclaration extends DeclarationStatement, JSDocContainer {
1702        readonly kind: SyntaxKind.ImportEqualsDeclaration;
1703        readonly parent: SourceFile | ModuleBlock;
1704        readonly modifiers?: NodeArray<Modifier>;
1705        readonly name: Identifier;
1706        readonly isTypeOnly: boolean;
1707        readonly moduleReference: ModuleReference;
1708    }
1709    export interface ExternalModuleReference extends Node {
1710        readonly kind: SyntaxKind.ExternalModuleReference;
1711        readonly parent: ImportEqualsDeclaration;
1712        readonly expression: Expression;
1713    }
1714    export interface ImportDeclaration extends Statement {
1715        readonly kind: SyntaxKind.ImportDeclaration;
1716        readonly parent: SourceFile | ModuleBlock;
1717        readonly modifiers?: NodeArray<Modifier>;
1718        readonly importClause?: ImportClause;
1719        /** If this is not a StringLiteral it will be a grammar error. */
1720        readonly moduleSpecifier: Expression;
1721        readonly assertClause?: AssertClause;
1722    }
1723    export type NamedImportBindings = NamespaceImport | NamedImports;
1724    export type NamedExportBindings = NamespaceExport | NamedExports;
1725    export interface ImportClause extends NamedDeclaration {
1726        readonly kind: SyntaxKind.ImportClause;
1727        readonly parent: ImportDeclaration;
1728        readonly isTypeOnly: boolean;
1729        readonly name?: Identifier;
1730        readonly namedBindings?: NamedImportBindings;
1731    }
1732    export type AssertionKey = Identifier | StringLiteral;
1733    export interface AssertEntry extends Node {
1734        readonly kind: SyntaxKind.AssertEntry;
1735        readonly parent: AssertClause;
1736        readonly name: AssertionKey;
1737        readonly value: Expression;
1738    }
1739    export interface AssertClause extends Node {
1740        readonly kind: SyntaxKind.AssertClause;
1741        readonly parent: ImportDeclaration | ExportDeclaration;
1742        readonly elements: NodeArray<AssertEntry>;
1743        readonly multiLine?: boolean;
1744    }
1745    export interface NamespaceImport extends NamedDeclaration {
1746        readonly kind: SyntaxKind.NamespaceImport;
1747        readonly parent: ImportClause;
1748        readonly name: Identifier;
1749    }
1750    export interface NamespaceExport extends NamedDeclaration {
1751        readonly kind: SyntaxKind.NamespaceExport;
1752        readonly parent: ExportDeclaration;
1753        readonly name: Identifier;
1754    }
1755    export interface NamespaceExportDeclaration extends DeclarationStatement, JSDocContainer {
1756        readonly kind: SyntaxKind.NamespaceExportDeclaration;
1757        readonly name: Identifier;
1758    }
1759    export interface ExportDeclaration extends DeclarationStatement, JSDocContainer {
1760        readonly kind: SyntaxKind.ExportDeclaration;
1761        readonly parent: SourceFile | ModuleBlock;
1762        readonly modifiers?: NodeArray<Modifier>;
1763        readonly isTypeOnly: boolean;
1764        /** Will not be assigned in the case of `export * from "foo";` */
1765        readonly exportClause?: NamedExportBindings;
1766        /** If this is not a StringLiteral it will be a grammar error. */
1767        readonly moduleSpecifier?: Expression;
1768        readonly assertClause?: AssertClause;
1769    }
1770    export interface NamedImports extends Node {
1771        readonly kind: SyntaxKind.NamedImports;
1772        readonly parent: ImportClause;
1773        readonly elements: NodeArray<ImportSpecifier>;
1774    }
1775    export interface NamedExports extends Node {
1776        readonly kind: SyntaxKind.NamedExports;
1777        readonly parent: ExportDeclaration;
1778        readonly elements: NodeArray<ExportSpecifier>;
1779    }
1780    export type NamedImportsOrExports = NamedImports | NamedExports;
1781    export interface ImportSpecifier extends NamedDeclaration {
1782        readonly kind: SyntaxKind.ImportSpecifier;
1783        readonly parent: NamedImports;
1784        readonly propertyName?: Identifier;
1785        readonly name: Identifier;
1786        readonly isTypeOnly: boolean;
1787    }
1788    export interface ExportSpecifier extends NamedDeclaration, JSDocContainer {
1789        readonly kind: SyntaxKind.ExportSpecifier;
1790        readonly parent: NamedExports;
1791        readonly isTypeOnly: boolean;
1792        readonly propertyName?: Identifier;
1793        readonly name: Identifier;
1794    }
1795    export type ImportOrExportSpecifier = ImportSpecifier | ExportSpecifier;
1796    export type TypeOnlyCompatibleAliasDeclaration = ImportClause | ImportEqualsDeclaration | NamespaceImport | ImportOrExportSpecifier;
1797    export type TypeOnlyAliasDeclaration = ImportClause & {
1798        readonly isTypeOnly: true;
1799        readonly name: Identifier;
1800    } | ImportEqualsDeclaration & {
1801        readonly isTypeOnly: true;
1802    } | NamespaceImport & {
1803        readonly parent: ImportClause & {
1804            readonly isTypeOnly: true;
1805        };
1806    } | ImportSpecifier & ({
1807        readonly isTypeOnly: true;
1808    } | {
1809        readonly parent: NamedImports & {
1810            readonly parent: ImportClause & {
1811                readonly isTypeOnly: true;
1812            };
1813        };
1814    }) | ExportSpecifier & ({
1815        readonly isTypeOnly: true;
1816    } | {
1817        readonly parent: NamedExports & {
1818            readonly parent: ExportDeclaration & {
1819                readonly isTypeOnly: true;
1820            };
1821        };
1822    });
1823    /**
1824     * This is either an `export =` or an `export default` declaration.
1825     * Unless `isExportEquals` is set, this node was parsed as an `export default`.
1826     */
1827    export interface ExportAssignment extends DeclarationStatement, JSDocContainer {
1828        readonly kind: SyntaxKind.ExportAssignment;
1829        readonly parent: SourceFile;
1830        readonly modifiers?: NodeArray<Modifier>;
1831        readonly isExportEquals?: boolean;
1832        readonly expression: Expression;
1833    }
1834    export interface FileReference extends TextRange {
1835        fileName: string;
1836        resolutionMode?: SourceFile["impliedNodeFormat"];
1837    }
1838    export interface CheckJsDirective extends TextRange {
1839        enabled: boolean;
1840    }
1841    export type CommentKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia;
1842    export interface CommentRange extends TextRange {
1843        hasTrailingNewLine?: boolean;
1844        kind: CommentKind;
1845    }
1846    export interface SynthesizedComment extends CommentRange {
1847        text: string;
1848        pos: -1;
1849        end: -1;
1850        hasLeadingNewline?: boolean;
1851    }
1852    export interface JSDocTypeExpression extends TypeNode {
1853        readonly kind: SyntaxKind.JSDocTypeExpression;
1854        readonly type: TypeNode;
1855    }
1856    export interface JSDocNameReference extends Node {
1857        readonly kind: SyntaxKind.JSDocNameReference;
1858        readonly name: EntityName | JSDocMemberName;
1859    }
1860    /** Class#method reference in JSDoc */
1861    export interface JSDocMemberName extends Node {
1862        readonly kind: SyntaxKind.JSDocMemberName;
1863        readonly left: EntityName | JSDocMemberName;
1864        readonly right: Identifier;
1865    }
1866    export interface JSDocType extends TypeNode {
1867        _jsDocTypeBrand: any;
1868    }
1869    export interface JSDocAllType extends JSDocType {
1870        readonly kind: SyntaxKind.JSDocAllType;
1871    }
1872    export interface JSDocUnknownType extends JSDocType {
1873        readonly kind: SyntaxKind.JSDocUnknownType;
1874    }
1875    export interface JSDocNonNullableType extends JSDocType {
1876        readonly kind: SyntaxKind.JSDocNonNullableType;
1877        readonly type: TypeNode;
1878        readonly postfix: boolean;
1879    }
1880    export interface JSDocNullableType extends JSDocType {
1881        readonly kind: SyntaxKind.JSDocNullableType;
1882        readonly type: TypeNode;
1883        readonly postfix: boolean;
1884    }
1885    export interface JSDocOptionalType extends JSDocType {
1886        readonly kind: SyntaxKind.JSDocOptionalType;
1887        readonly type: TypeNode;
1888    }
1889    export interface JSDocFunctionType extends JSDocType, SignatureDeclarationBase {
1890        readonly kind: SyntaxKind.JSDocFunctionType;
1891    }
1892    export interface JSDocVariadicType extends JSDocType {
1893        readonly kind: SyntaxKind.JSDocVariadicType;
1894        readonly type: TypeNode;
1895    }
1896    export interface JSDocNamepathType extends JSDocType {
1897        readonly kind: SyntaxKind.JSDocNamepathType;
1898        readonly type: TypeNode;
1899    }
1900    export type JSDocTypeReferencingNode = JSDocVariadicType | JSDocOptionalType | JSDocNullableType | JSDocNonNullableType;
1901    export interface JSDoc extends Node {
1902        readonly kind: SyntaxKind.JSDoc;
1903        readonly parent: HasJSDoc;
1904        readonly tags?: NodeArray<JSDocTag>;
1905        readonly comment?: string | NodeArray<JSDocComment>;
1906    }
1907    export interface JSDocTag extends Node {
1908        readonly parent: JSDoc | JSDocTypeLiteral;
1909        readonly tagName: Identifier;
1910        readonly comment?: string | NodeArray<JSDocComment>;
1911    }
1912    export interface JSDocLink extends Node {
1913        readonly kind: SyntaxKind.JSDocLink;
1914        readonly name?: EntityName | JSDocMemberName;
1915        text: string;
1916    }
1917    export interface JSDocLinkCode extends Node {
1918        readonly kind: SyntaxKind.JSDocLinkCode;
1919        readonly name?: EntityName | JSDocMemberName;
1920        text: string;
1921    }
1922    export interface JSDocLinkPlain extends Node {
1923        readonly kind: SyntaxKind.JSDocLinkPlain;
1924        readonly name?: EntityName | JSDocMemberName;
1925        text: string;
1926    }
1927    export type JSDocComment = JSDocText | JSDocLink | JSDocLinkCode | JSDocLinkPlain;
1928    export interface JSDocText extends Node {
1929        readonly kind: SyntaxKind.JSDocText;
1930        text: string;
1931    }
1932    export interface JSDocUnknownTag extends JSDocTag {
1933        readonly kind: SyntaxKind.JSDocTag;
1934    }
1935    /**
1936     * Note that `@extends` is a synonym of `@augments`.
1937     * Both tags are represented by this interface.
1938     */
1939    export interface JSDocAugmentsTag extends JSDocTag {
1940        readonly kind: SyntaxKind.JSDocAugmentsTag;
1941        readonly class: ExpressionWithTypeArguments & {
1942            readonly expression: Identifier | PropertyAccessEntityNameExpression;
1943        };
1944    }
1945    export interface JSDocImplementsTag extends JSDocTag {
1946        readonly kind: SyntaxKind.JSDocImplementsTag;
1947        readonly class: ExpressionWithTypeArguments & {
1948            readonly expression: Identifier | PropertyAccessEntityNameExpression;
1949        };
1950    }
1951    export interface JSDocAuthorTag extends JSDocTag {
1952        readonly kind: SyntaxKind.JSDocAuthorTag;
1953    }
1954    export interface JSDocDeprecatedTag extends JSDocTag {
1955        kind: SyntaxKind.JSDocDeprecatedTag;
1956    }
1957    export interface JSDocClassTag extends JSDocTag {
1958        readonly kind: SyntaxKind.JSDocClassTag;
1959    }
1960    export interface JSDocPublicTag extends JSDocTag {
1961        readonly kind: SyntaxKind.JSDocPublicTag;
1962    }
1963    export interface JSDocPrivateTag extends JSDocTag {
1964        readonly kind: SyntaxKind.JSDocPrivateTag;
1965    }
1966    export interface JSDocProtectedTag extends JSDocTag {
1967        readonly kind: SyntaxKind.JSDocProtectedTag;
1968    }
1969    export interface JSDocReadonlyTag extends JSDocTag {
1970        readonly kind: SyntaxKind.JSDocReadonlyTag;
1971    }
1972    export interface JSDocOverrideTag extends JSDocTag {
1973        readonly kind: SyntaxKind.JSDocOverrideTag;
1974    }
1975    export interface JSDocEnumTag extends JSDocTag, Declaration {
1976        readonly kind: SyntaxKind.JSDocEnumTag;
1977        readonly parent: JSDoc;
1978        readonly typeExpression: JSDocTypeExpression;
1979    }
1980    export interface JSDocThisTag extends JSDocTag {
1981        readonly kind: SyntaxKind.JSDocThisTag;
1982        readonly typeExpression: JSDocTypeExpression;
1983    }
1984    export interface JSDocTemplateTag extends JSDocTag {
1985        readonly kind: SyntaxKind.JSDocTemplateTag;
1986        readonly constraint: JSDocTypeExpression | undefined;
1987        readonly typeParameters: NodeArray<TypeParameterDeclaration>;
1988    }
1989    export interface JSDocSeeTag extends JSDocTag {
1990        readonly kind: SyntaxKind.JSDocSeeTag;
1991        readonly name?: JSDocNameReference;
1992    }
1993    export interface JSDocReturnTag extends JSDocTag {
1994        readonly kind: SyntaxKind.JSDocReturnTag;
1995        readonly typeExpression?: JSDocTypeExpression;
1996    }
1997    export interface JSDocTypeTag extends JSDocTag {
1998        readonly kind: SyntaxKind.JSDocTypeTag;
1999        readonly typeExpression: JSDocTypeExpression;
2000    }
2001    export interface JSDocTypedefTag extends JSDocTag, NamedDeclaration {
2002        readonly kind: SyntaxKind.JSDocTypedefTag;
2003        readonly parent: JSDoc;
2004        readonly fullName?: JSDocNamespaceDeclaration | Identifier;
2005        readonly name?: Identifier;
2006        readonly typeExpression?: JSDocTypeExpression | JSDocTypeLiteral;
2007    }
2008    export interface JSDocCallbackTag extends JSDocTag, NamedDeclaration {
2009        readonly kind: SyntaxKind.JSDocCallbackTag;
2010        readonly parent: JSDoc;
2011        readonly fullName?: JSDocNamespaceDeclaration | Identifier;
2012        readonly name?: Identifier;
2013        readonly typeExpression: JSDocSignature;
2014    }
2015    export interface JSDocSignature extends JSDocType, Declaration {
2016        readonly kind: SyntaxKind.JSDocSignature;
2017        readonly typeParameters?: readonly JSDocTemplateTag[];
2018        readonly parameters: readonly JSDocParameterTag[];
2019        readonly type: JSDocReturnTag | undefined;
2020    }
2021    export interface JSDocPropertyLikeTag extends JSDocTag, Declaration {
2022        readonly parent: JSDoc;
2023        readonly name: EntityName;
2024        readonly typeExpression?: JSDocTypeExpression;
2025        /** Whether the property name came before the type -- non-standard for JSDoc, but Typescript-like */
2026        readonly isNameFirst: boolean;
2027        readonly isBracketed: boolean;
2028    }
2029    export interface JSDocPropertyTag extends JSDocPropertyLikeTag {
2030        readonly kind: SyntaxKind.JSDocPropertyTag;
2031    }
2032    export interface JSDocParameterTag extends JSDocPropertyLikeTag {
2033        readonly kind: SyntaxKind.JSDocParameterTag;
2034    }
2035    export interface JSDocTypeLiteral extends JSDocType {
2036        readonly kind: SyntaxKind.JSDocTypeLiteral;
2037        readonly jsDocPropertyTags?: readonly JSDocPropertyLikeTag[];
2038        /** If true, then this type literal represents an *array* of its type. */
2039        readonly isArrayType: boolean;
2040    }
2041    export enum FlowFlags {
2042        Unreachable = 1,
2043        Start = 2,
2044        BranchLabel = 4,
2045        LoopLabel = 8,
2046        Assignment = 16,
2047        TrueCondition = 32,
2048        FalseCondition = 64,
2049        SwitchClause = 128,
2050        ArrayMutation = 256,
2051        Call = 512,
2052        ReduceLabel = 1024,
2053        Referenced = 2048,
2054        Shared = 4096,
2055        Label = 12,
2056        Condition = 96
2057    }
2058    export type FlowNode = FlowStart | FlowLabel | FlowAssignment | FlowCondition | FlowSwitchClause | FlowArrayMutation | FlowCall | FlowReduceLabel;
2059    export interface FlowNodeBase {
2060        flags: FlowFlags;
2061        id?: number;
2062    }
2063    export interface FlowStart extends FlowNodeBase {
2064        node?: FunctionExpression | ArrowFunction | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration;
2065    }
2066    export interface FlowLabel extends FlowNodeBase {
2067        antecedents: FlowNode[] | undefined;
2068    }
2069    export interface FlowAssignment extends FlowNodeBase {
2070        node: Expression | VariableDeclaration | BindingElement;
2071        antecedent: FlowNode;
2072    }
2073    export interface FlowCall extends FlowNodeBase {
2074        node: CallExpression;
2075        antecedent: FlowNode;
2076    }
2077    export interface FlowCondition extends FlowNodeBase {
2078        node: Expression;
2079        antecedent: FlowNode;
2080    }
2081    export interface FlowSwitchClause extends FlowNodeBase {
2082        switchStatement: SwitchStatement;
2083        clauseStart: number;
2084        clauseEnd: number;
2085        antecedent: FlowNode;
2086    }
2087    export interface FlowArrayMutation extends FlowNodeBase {
2088        node: CallExpression | BinaryExpression;
2089        antecedent: FlowNode;
2090    }
2091    export interface FlowReduceLabel extends FlowNodeBase {
2092        target: FlowLabel;
2093        antecedents: FlowNode[];
2094        antecedent: FlowNode;
2095    }
2096    export type FlowType = Type | IncompleteType;
2097    export interface IncompleteType {
2098        flags: TypeFlags;
2099        type: Type;
2100    }
2101    export interface AmdDependency {
2102        path: string;
2103        name?: string;
2104    }
2105    /**
2106     * Subset of properties from SourceFile that are used in multiple utility functions
2107     */
2108    export interface SourceFileLike {
2109        readonly text: string;
2110        readonly fileName?: string;
2111    }
2112    export interface SourceFile extends Declaration {
2113        readonly kind: SyntaxKind.SourceFile;
2114        readonly statements: NodeArray<Statement>;
2115        readonly endOfFileToken: Token<SyntaxKind.EndOfFileToken>;
2116        fileName: string;
2117        text: string;
2118        amdDependencies: readonly AmdDependency[];
2119        moduleName?: string;
2120        referencedFiles: readonly FileReference[];
2121        typeReferenceDirectives: readonly FileReference[];
2122        libReferenceDirectives: readonly FileReference[];
2123        languageVariant: LanguageVariant;
2124        isDeclarationFile: boolean;
2125        /**
2126         * lib.d.ts should have a reference comment like
2127         *
2128         *  /// <reference no-default-lib="true"/>
2129         *
2130         * If any other file has this comment, it signals not to include lib.d.ts
2131         * because this containing file is intended to act as a default library.
2132         */
2133        hasNoDefaultLib: boolean;
2134        languageVersion: ScriptTarget;
2135        /**
2136         * When `module` is `Node16` or `NodeNext`, this field controls whether the
2137         * source file in question is an ESNext-output-format file, or a CommonJS-output-format
2138         * module. This is derived by the module resolver as it looks up the file, since
2139         * it is derived from either the file extension of the module, or the containing
2140         * `package.json` context, and affects both checking and emit.
2141         *
2142         * It is _public_ so that (pre)transformers can set this field,
2143         * since it switches the builtin `node` module transform. Generally speaking, if unset,
2144         * the field is treated as though it is `ModuleKind.CommonJS`.
2145         *
2146         * Note that this field is only set by the module resolution process when
2147         * `moduleResolution` is `Node16` or `NodeNext`, which is implied by the `module` setting
2148         * of `Node16` or `NodeNext`, respectively, but may be overriden (eg, by a `moduleResolution`
2149         * of `node`). If so, this field will be unset and source files will be considered to be
2150         * CommonJS-output-format by the node module transformer and type checker, regardless of extension or context.
2151         */
2152        impliedNodeFormat?: ModuleKind.ESNext | ModuleKind.CommonJS;
2153    }
2154    export interface Bundle extends Node {
2155        readonly kind: SyntaxKind.Bundle;
2156        readonly prepends: readonly (InputFiles | UnparsedSource)[];
2157        readonly sourceFiles: readonly SourceFile[];
2158    }
2159    export interface InputFiles extends Node {
2160        readonly kind: SyntaxKind.InputFiles;
2161        javascriptPath?: string;
2162        javascriptText: string;
2163        javascriptMapPath?: string;
2164        javascriptMapText?: string;
2165        declarationPath?: string;
2166        declarationText: string;
2167        declarationMapPath?: string;
2168        declarationMapText?: string;
2169    }
2170    export interface UnparsedSource extends Node {
2171        readonly kind: SyntaxKind.UnparsedSource;
2172        fileName: string;
2173        text: string;
2174        readonly prologues: readonly UnparsedPrologue[];
2175        helpers: readonly UnscopedEmitHelper[] | undefined;
2176        referencedFiles: readonly FileReference[];
2177        typeReferenceDirectives: readonly FileReference[] | undefined;
2178        libReferenceDirectives: readonly FileReference[];
2179        hasNoDefaultLib?: boolean;
2180        sourceMapPath?: string;
2181        sourceMapText?: string;
2182        readonly syntheticReferences?: readonly UnparsedSyntheticReference[];
2183        readonly texts: readonly UnparsedSourceText[];
2184    }
2185    export type UnparsedSourceText = UnparsedPrepend | UnparsedTextLike;
2186    export type UnparsedNode = UnparsedPrologue | UnparsedSourceText | UnparsedSyntheticReference;
2187    export interface UnparsedSection extends Node {
2188        readonly kind: SyntaxKind;
2189        readonly parent: UnparsedSource;
2190        readonly data?: string;
2191    }
2192    export interface UnparsedPrologue extends UnparsedSection {
2193        readonly kind: SyntaxKind.UnparsedPrologue;
2194        readonly parent: UnparsedSource;
2195        readonly data: string;
2196    }
2197    export interface UnparsedPrepend extends UnparsedSection {
2198        readonly kind: SyntaxKind.UnparsedPrepend;
2199        readonly parent: UnparsedSource;
2200        readonly data: string;
2201        readonly texts: readonly UnparsedTextLike[];
2202    }
2203    export interface UnparsedTextLike extends UnparsedSection {
2204        readonly kind: SyntaxKind.UnparsedText | SyntaxKind.UnparsedInternalText;
2205        readonly parent: UnparsedSource;
2206    }
2207    export interface UnparsedSyntheticReference extends UnparsedSection {
2208        readonly kind: SyntaxKind.UnparsedSyntheticReference;
2209        readonly parent: UnparsedSource;
2210    }
2211    export interface JsonSourceFile extends SourceFile {
2212        readonly statements: NodeArray<JsonObjectExpressionStatement>;
2213    }
2214    export interface TsConfigSourceFile extends JsonSourceFile {
2215        extendedSourceFiles?: string[];
2216    }
2217    export interface JsonMinusNumericLiteral extends PrefixUnaryExpression {
2218        readonly kind: SyntaxKind.PrefixUnaryExpression;
2219        readonly operator: SyntaxKind.MinusToken;
2220        readonly operand: NumericLiteral;
2221    }
2222    export type JsonObjectExpression = ObjectLiteralExpression | ArrayLiteralExpression | JsonMinusNumericLiteral | NumericLiteral | StringLiteral | BooleanLiteral | NullLiteral;
2223    export interface JsonObjectExpressionStatement extends ExpressionStatement {
2224        readonly expression: JsonObjectExpression;
2225    }
2226    export interface ScriptReferenceHost {
2227        getCompilerOptions(): CompilerOptions;
2228        getSourceFile(fileName: string): SourceFile | undefined;
2229        getSourceFileByPath(path: Path): SourceFile | undefined;
2230        getCurrentDirectory(): string;
2231    }
2232    export interface ParseConfigHost {
2233        useCaseSensitiveFileNames: boolean;
2234        readDirectory(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[], depth?: number): readonly string[];
2235        /**
2236         * Gets a value indicating whether the specified path exists and is a file.
2237         * @param path The path to test.
2238         */
2239        fileExists(path: string): boolean;
2240        readFile(path: string): string | undefined;
2241        trace?(s: string): void;
2242    }
2243    /**
2244     * Branded string for keeping track of when we've turned an ambiguous path
2245     * specified like "./blah" to an absolute path to an actual
2246     * tsconfig file, e.g. "/root/blah/tsconfig.json"
2247     */
2248    export type ResolvedConfigFileName = string & {
2249        _isResolvedConfigFileName: never;
2250    };
2251    export interface WriteFileCallbackData {
2252    }
2253    export type WriteFileCallback = (fileName: string, text: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], data?: WriteFileCallbackData) => void;
2254    export class OperationCanceledException {
2255    }
2256    export interface CancellationToken {
2257        isCancellationRequested(): boolean;
2258        /** @throws OperationCanceledException if isCancellationRequested is true */
2259        throwIfCancellationRequested(): void;
2260    }
2261    export interface SymbolDisplayPart {
2262        text: string;
2263        kind: string;
2264    }
2265    export interface JsDocTagInfo {
2266        name: string;
2267        text?: string | SymbolDisplayPart[];
2268    }
2269    export interface Program extends ScriptReferenceHost {
2270        getCurrentDirectory(): string;
2271        /**
2272         * Get a list of root file names that were passed to a 'createProgram'
2273         */
2274        getRootFileNames(): readonly string[];
2275        /**
2276         * Get a list of files in the program
2277         */
2278        getSourceFiles(): readonly SourceFile[];
2279        /**
2280         * Emits the JavaScript and declaration files.  If targetSourceFile is not specified, then
2281         * the JavaScript and declaration files will be produced for all the files in this program.
2282         * If targetSourceFile is specified, then only the JavaScript and declaration for that
2283         * specific file will be generated.
2284         *
2285         * If writeFile is not specified then the writeFile callback from the compiler host will be
2286         * used for writing the JavaScript and declaration files.  Otherwise, the writeFile parameter
2287         * will be invoked when writing the JavaScript and declaration files.
2288         */
2289        emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult;
2290        getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
2291        getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
2292        getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[];
2293        /** The first time this is called, it will return global diagnostics (no location). */
2294        getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
2295        getSemanticDiagnosticsForLinter(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
2296        getDeclarationDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[];
2297        getConfigFileParsingDiagnostics(): readonly Diagnostic[];
2298        getEtsLibSFromProgram(): string[];
2299        /**
2300         * Gets a type checker that can be used to semantically analyze source files in the program.
2301         */
2302        getTypeChecker(): TypeChecker;
2303        /**
2304         * Gets a type checker that can be used to semantically analyze source files in the program for arkts linter.
2305         */
2306        getLinterTypeChecker(): TypeChecker;
2307        getNodeCount(): number;
2308        getIdentifierCount(): number;
2309        getSymbolCount(): number;
2310        getTypeCount(): number;
2311        getInstantiationCount(): number;
2312        getRelationCacheSizes(): {
2313            assignable: number;
2314            identity: number;
2315            subtype: number;
2316            strictSubtype: number;
2317        };
2318        isSourceFileFromExternalLibrary(file: SourceFile): boolean;
2319        isSourceFileDefaultLibrary(file: SourceFile): boolean;
2320        getSourceFileFromReference(referencingFile: SourceFile | UnparsedSource, ref: FileReference): SourceFile | undefined;
2321        getProjectReferences(): readonly ProjectReference[] | undefined;
2322        getResolvedProjectReferences(): readonly (ResolvedProjectReference | undefined)[] | undefined;
2323        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
2324        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
2325        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
2326        /**
2327         * Release typeChecker & linterTypeChecker
2328         */
2329        releaseTypeChecker(): void;
2330    }
2331    export type RedirectTargetsMap = ReadonlyESMap<Path, readonly string[]>;
2332    export interface ResolvedProjectReference {
2333        commandLine: ParsedCommandLine;
2334        sourceFile: SourceFile;
2335        references?: readonly (ResolvedProjectReference | undefined)[];
2336    }
2337    export type CustomTransformerFactory = (context: TransformationContext) => CustomTransformer;
2338    export interface CustomTransformer {
2339        transformSourceFile(node: SourceFile): SourceFile;
2340        transformBundle(node: Bundle): Bundle;
2341    }
2342    export interface CustomTransformers {
2343        /** Custom transformers to evaluate before built-in .js transformations. */
2344        before?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[];
2345        /** Custom transformers to evaluate after built-in .js transformations. */
2346        after?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[];
2347        /** Custom transformers to evaluate after built-in .d.ts transformations. */
2348        afterDeclarations?: (TransformerFactory<Bundle | SourceFile> | CustomTransformerFactory)[];
2349    }
2350    export interface SourceMapSpan {
2351        /** Line number in the .js file. */
2352        emittedLine: number;
2353        /** Column number in the .js file. */
2354        emittedColumn: number;
2355        /** Line number in the .ts file. */
2356        sourceLine: number;
2357        /** Column number in the .ts file. */
2358        sourceColumn: number;
2359        /** Optional name (index into names array) associated with this span. */
2360        nameIndex?: number;
2361        /** .ts file (index into sources array) associated with this span */
2362        sourceIndex: number;
2363    }
2364    /** Return code used by getEmitOutput function to indicate status of the function */
2365    export enum ExitStatus {
2366        Success = 0,
2367        DiagnosticsPresent_OutputsSkipped = 1,
2368        DiagnosticsPresent_OutputsGenerated = 2,
2369        InvalidProject_OutputsSkipped = 3,
2370        ProjectReferenceCycle_OutputsSkipped = 4,
2371        /** @deprecated Use ProjectReferenceCycle_OutputsSkipped instead. */
2372        ProjectReferenceCycle_OutputsSkupped = 4
2373    }
2374    export interface EmitResult {
2375        emitSkipped: boolean;
2376        /** Contains declaration emit diagnostics */
2377        diagnostics: readonly Diagnostic[];
2378        emittedFiles?: string[];
2379    }
2380    export interface TypeChecker {
2381        getTypeOfSymbolAtLocation(symbol: Symbol, node: Node): Type;
2382        getDeclaredTypeOfSymbol(symbol: Symbol): Type;
2383        getPropertiesOfType(type: Type): Symbol[];
2384        getPropertyOfType(type: Type, propertyName: string): Symbol | undefined;
2385        getPrivateIdentifierPropertyOfType(leftType: Type, name: string, location: Node): Symbol | undefined;
2386        getIndexInfoOfType(type: Type, kind: IndexKind): IndexInfo | undefined;
2387        getIndexInfosOfType(type: Type): readonly IndexInfo[];
2388        getIndexInfosOfIndexSymbol: (indexSymbol: Symbol) => IndexInfo[];
2389        getSignaturesOfType(type: Type, kind: SignatureKind): readonly Signature[];
2390        getIndexTypeOfType(type: Type, kind: IndexKind): Type | undefined;
2391        getBaseTypes(type: InterfaceType): BaseType[];
2392        getBaseTypeOfLiteralType(type: Type): Type;
2393        getWidenedType(type: Type): Type;
2394        getReturnTypeOfSignature(signature: Signature): Type;
2395        getNullableType(type: Type, flags: TypeFlags): Type;
2396        getNonNullableType(type: Type): Type;
2397        getTypeArguments(type: TypeReference): readonly Type[];
2398        /** Note that the resulting nodes cannot be checked. */
2399        typeToTypeNode(type: Type, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): TypeNode | undefined;
2400        /** Note that the resulting nodes cannot be checked. */
2401        signatureToSignatureDeclaration(signature: Signature, kind: SyntaxKind, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): SignatureDeclaration & {
2402            typeArguments?: NodeArray<TypeNode>;
2403        } | undefined;
2404        /** Note that the resulting nodes cannot be checked. */
2405        indexInfoToIndexSignatureDeclaration(indexInfo: IndexInfo, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): IndexSignatureDeclaration | undefined;
2406        /** Note that the resulting nodes cannot be checked. */
2407        symbolToEntityName(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): EntityName | undefined;
2408        /** Note that the resulting nodes cannot be checked. */
2409        symbolToExpression(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Expression | undefined;
2410        /** Note that the resulting nodes cannot be checked. */
2411        symbolToTypeParameterDeclarations(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): NodeArray<TypeParameterDeclaration> | undefined;
2412        /** Note that the resulting nodes cannot be checked. */
2413        symbolToParameterDeclaration(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): ParameterDeclaration | undefined;
2414        /** Note that the resulting nodes cannot be checked. */
2415        typeParameterToDeclaration(parameter: TypeParameter, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): TypeParameterDeclaration | undefined;
2416        getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[];
2417        getSymbolAtLocation(node: Node): Symbol | undefined;
2418        getSymbolsOfParameterPropertyDeclaration(parameter: ParameterDeclaration, parameterName: string): Symbol[];
2419        /**
2420         * The function returns the value (local variable) symbol of an identifier in the short-hand property assignment.
2421         * This is necessary as an identifier in short-hand property assignment can contains two meaning: property name and property value.
2422         */
2423        getShorthandAssignmentValueSymbol(location: Node | undefined): Symbol | undefined;
2424        getExportSpecifierLocalTargetSymbol(location: ExportSpecifier | Identifier): Symbol | undefined;
2425        /**
2426         * If a symbol is a local symbol with an associated exported symbol, returns the exported symbol.
2427         * Otherwise returns its input.
2428         * For example, at `export type T = number;`:
2429         *     - `getSymbolAtLocation` at the location `T` will return the exported symbol for `T`.
2430         *     - But the result of `getSymbolsInScope` will contain the *local* symbol for `T`, not the exported symbol.
2431         *     - Calling `getExportSymbolOfSymbol` on that local symbol will return the exported symbol.
2432         */
2433        getExportSymbolOfSymbol(symbol: Symbol): Symbol;
2434        getPropertySymbolOfDestructuringAssignment(location: Identifier): Symbol | undefined;
2435        getTypeOfAssignmentPattern(pattern: AssignmentPattern): Type;
2436        getTypeAtLocation(node: Node): Type;
2437        tryGetTypeAtLocationWithoutCheck(node: Node): Type;
2438        getTypeFromTypeNode(node: TypeNode): Type;
2439        signatureToString(signature: Signature, enclosingDeclaration?: Node, flags?: TypeFormatFlags, kind?: SignatureKind): string;
2440        typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string;
2441        symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags): string;
2442        typePredicateToString(predicate: TypePredicate, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string;
2443        getFullyQualifiedName(symbol: Symbol): string;
2444        getAugmentedPropertiesOfType(type: Type): Symbol[];
2445        getRootSymbols(symbol: Symbol): readonly Symbol[];
2446        getSymbolOfExpando(node: Node, allowDeclaration: boolean): Symbol | undefined;
2447        getContextualType(node: Expression): Type | undefined;
2448        /**
2449         * returns unknownSignature in the case of an error.
2450         * returns undefined if the node is not valid.
2451         * @param argumentCount Apparent number of arguments, passed in case of a possibly incomplete call. This should come from an ArgumentListInfo. See `signatureHelp.ts`.
2452         */
2453        getResolvedSignature(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined;
2454        tryGetResolvedSignatureWithoutCheck(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined;
2455        getSignatureFromDeclaration(declaration: SignatureDeclaration): Signature | undefined;
2456        isImplementationOfOverload(node: SignatureDeclaration): boolean | undefined;
2457        isUndefinedSymbol(symbol: Symbol): boolean;
2458        isArgumentsSymbol(symbol: Symbol): boolean;
2459        isUnknownSymbol(symbol: Symbol): boolean;
2460        getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): string | number | undefined;
2461        isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName | ImportTypeNode, propertyName: string): boolean;
2462        /** Follow all aliases to get the original symbol. */
2463        getAliasedSymbol(symbol: Symbol): Symbol;
2464        /** Follow a *single* alias to get the immediately aliased symbol. */
2465        getImmediateAliasedSymbol(symbol: Symbol): Symbol | undefined;
2466        getExportsOfModule(moduleSymbol: Symbol): Symbol[];
2467        getJsxIntrinsicTagNamesAt(location: Node): Symbol[];
2468        isOptionalParameter(node: ParameterDeclaration): boolean;
2469        getAmbientModules(): Symbol[];
2470        tryGetMemberInModuleExports(memberName: string, moduleSymbol: Symbol): Symbol | undefined;
2471        getApparentType(type: Type): Type;
2472        getBaseConstraintOfType(type: Type): Type | undefined;
2473        getDefaultFromTypeParameter(type: Type): Type | undefined;
2474        getTypePredicateOfSignature(signature: Signature): TypePredicate | undefined;
2475        /**
2476         * Depending on the operation performed, it may be appropriate to throw away the checker
2477         * if the cancellation token is triggered. Typically, if it is used for error checking
2478         * and the operation is cancelled, then it should be discarded, otherwise it is safe to keep.
2479         */
2480        runWithCancellationToken<T>(token: CancellationToken, cb: (checker: TypeChecker) => T): T;
2481        getConstEnumRelate?(): ESMap<string, ESMap<string, string>>;
2482        clearConstEnumRelate?(): void;
2483        deleteConstEnumRelate?(path: string): void;
2484    }
2485    export enum NodeBuilderFlags {
2486        None = 0,
2487        NoTruncation = 1,
2488        WriteArrayAsGenericType = 2,
2489        GenerateNamesForShadowedTypeParams = 4,
2490        UseStructuralFallback = 8,
2491        ForbidIndexedAccessSymbolReferences = 16,
2492        WriteTypeArgumentsOfSignature = 32,
2493        UseFullyQualifiedType = 64,
2494        UseOnlyExternalAliasing = 128,
2495        SuppressAnyReturnType = 256,
2496        WriteTypeParametersInQualifiedName = 512,
2497        MultilineObjectLiterals = 1024,
2498        WriteClassExpressionAsTypeLiteral = 2048,
2499        UseTypeOfFunction = 4096,
2500        OmitParameterModifiers = 8192,
2501        UseAliasDefinedOutsideCurrentScope = 16384,
2502        UseSingleQuotesForStringLiteralType = 268435456,
2503        NoTypeReduction = 536870912,
2504        OmitThisParameter = 33554432,
2505        AllowThisInObjectLiteral = 32768,
2506        AllowQualifiedNameInPlaceOfIdentifier = 65536,
2507        /** @deprecated AllowQualifedNameInPlaceOfIdentifier. Use AllowQualifiedNameInPlaceOfIdentifier instead. */
2508        AllowQualifedNameInPlaceOfIdentifier = 65536,
2509        AllowAnonymousIdentifier = 131072,
2510        AllowEmptyUnionOrIntersection = 262144,
2511        AllowEmptyTuple = 524288,
2512        AllowUniqueESSymbolType = 1048576,
2513        AllowEmptyIndexInfoType = 2097152,
2514        AllowNodeModulesRelativePaths = 67108864,
2515        IgnoreErrors = 70221824,
2516        InObjectTypeLiteral = 4194304,
2517        InTypeAlias = 8388608,
2518        InInitialEntityName = 16777216
2519    }
2520    export enum TypeFormatFlags {
2521        None = 0,
2522        NoTruncation = 1,
2523        WriteArrayAsGenericType = 2,
2524        UseStructuralFallback = 8,
2525        WriteTypeArgumentsOfSignature = 32,
2526        UseFullyQualifiedType = 64,
2527        SuppressAnyReturnType = 256,
2528        MultilineObjectLiterals = 1024,
2529        WriteClassExpressionAsTypeLiteral = 2048,
2530        UseTypeOfFunction = 4096,
2531        OmitParameterModifiers = 8192,
2532        UseAliasDefinedOutsideCurrentScope = 16384,
2533        UseSingleQuotesForStringLiteralType = 268435456,
2534        NoTypeReduction = 536870912,
2535        OmitThisParameter = 33554432,
2536        AllowUniqueESSymbolType = 1048576,
2537        AddUndefined = 131072,
2538        WriteArrowStyleSignature = 262144,
2539        InArrayType = 524288,
2540        InElementType = 2097152,
2541        InFirstTypeArgument = 4194304,
2542        InTypeAlias = 8388608,
2543        /** @deprecated */ WriteOwnNameForAnyLike = 0,
2544        NodeBuilderFlagsMask = 848330091
2545    }
2546    export enum SymbolFormatFlags {
2547        None = 0,
2548        WriteTypeParametersOrArguments = 1,
2549        UseOnlyExternalAliasing = 2,
2550        AllowAnyNodeKind = 4,
2551        UseAliasDefinedOutsideCurrentScope = 8,
2552    }
2553    interface SymbolWriter extends SymbolTracker {
2554        writeKeyword(text: string): void;
2555        writeOperator(text: string): void;
2556        writePunctuation(text: string): void;
2557        writeSpace(text: string): void;
2558        writeStringLiteral(text: string): void;
2559        writeParameter(text: string): void;
2560        writeProperty(text: string): void;
2561        writeSymbol(text: string, symbol: Symbol): void;
2562        writeLine(force?: boolean): void;
2563        increaseIndent(): void;
2564        decreaseIndent(): void;
2565        clear(): void;
2566    }
2567    export enum TypePredicateKind {
2568        This = 0,
2569        Identifier = 1,
2570        AssertsThis = 2,
2571        AssertsIdentifier = 3
2572    }
2573    export interface TypePredicateBase {
2574        kind: TypePredicateKind;
2575        type: Type | undefined;
2576    }
2577    export interface ThisTypePredicate extends TypePredicateBase {
2578        kind: TypePredicateKind.This;
2579        parameterName: undefined;
2580        parameterIndex: undefined;
2581        type: Type;
2582    }
2583    export interface IdentifierTypePredicate extends TypePredicateBase {
2584        kind: TypePredicateKind.Identifier;
2585        parameterName: string;
2586        parameterIndex: number;
2587        type: Type;
2588    }
2589    export interface AssertsThisTypePredicate extends TypePredicateBase {
2590        kind: TypePredicateKind.AssertsThis;
2591        parameterName: undefined;
2592        parameterIndex: undefined;
2593        type: Type | undefined;
2594    }
2595    export interface AssertsIdentifierTypePredicate extends TypePredicateBase {
2596        kind: TypePredicateKind.AssertsIdentifier;
2597        parameterName: string;
2598        parameterIndex: number;
2599        type: Type | undefined;
2600    }
2601    export type TypePredicate = ThisTypePredicate | IdentifierTypePredicate | AssertsThisTypePredicate | AssertsIdentifierTypePredicate;
2602    export enum SymbolFlags {
2603        None = 0,
2604        FunctionScopedVariable = 1,
2605        BlockScopedVariable = 2,
2606        Property = 4,
2607        EnumMember = 8,
2608        Function = 16,
2609        Class = 32,
2610        Interface = 64,
2611        ConstEnum = 128,
2612        RegularEnum = 256,
2613        ValueModule = 512,
2614        NamespaceModule = 1024,
2615        TypeLiteral = 2048,
2616        ObjectLiteral = 4096,
2617        Method = 8192,
2618        Constructor = 16384,
2619        GetAccessor = 32768,
2620        SetAccessor = 65536,
2621        Signature = 131072,
2622        TypeParameter = 262144,
2623        TypeAlias = 524288,
2624        ExportValue = 1048576,
2625        Alias = 2097152,
2626        Prototype = 4194304,
2627        ExportStar = 8388608,
2628        Optional = 16777216,
2629        Transient = 33554432,
2630        Assignment = 67108864,
2631        ModuleExports = 134217728,
2632        Enum = 384,
2633        Variable = 3,
2634        Value = 111551,
2635        Type = 788968,
2636        Namespace = 1920,
2637        Module = 1536,
2638        Accessor = 98304,
2639        FunctionScopedVariableExcludes = 111550,
2640        BlockScopedVariableExcludes = 111551,
2641        ParameterExcludes = 111551,
2642        PropertyExcludes = 0,
2643        EnumMemberExcludes = 900095,
2644        FunctionExcludes = 110991,
2645        ClassExcludes = 899503,
2646        InterfaceExcludes = 788872,
2647        RegularEnumExcludes = 899327,
2648        ConstEnumExcludes = 899967,
2649        ValueModuleExcludes = 110735,
2650        NamespaceModuleExcludes = 0,
2651        MethodExcludes = 103359,
2652        GetAccessorExcludes = 46015,
2653        SetAccessorExcludes = 78783,
2654        AccessorExcludes = 13247,
2655        TypeParameterExcludes = 526824,
2656        TypeAliasExcludes = 788968,
2657        AliasExcludes = 2097152,
2658        ModuleMember = 2623475,
2659        ExportHasLocal = 944,
2660        BlockScoped = 418,
2661        PropertyOrAccessor = 98308,
2662        ClassMember = 106500,
2663    }
2664    export interface Symbol {
2665        flags: SymbolFlags;
2666        escapedName: __String;
2667        declarations?: Declaration[];
2668        valueDeclaration?: Declaration;
2669        members?: SymbolTable;
2670        exports?: SymbolTable;
2671        globalExports?: SymbolTable;
2672        exportSymbol?: Symbol;
2673    }
2674    export enum InternalSymbolName {
2675        Call = "__call",
2676        Constructor = "__constructor",
2677        New = "__new",
2678        Index = "__index",
2679        ExportStar = "__export",
2680        Global = "__global",
2681        Missing = "__missing",
2682        Type = "__type",
2683        Object = "__object",
2684        JSXAttributes = "__jsxAttributes",
2685        Class = "__class",
2686        Function = "__function",
2687        Computed = "__computed",
2688        Resolving = "__resolving__",
2689        ExportEquals = "export=",
2690        Default = "default",
2691        This = "this"
2692    }
2693    /**
2694     * This represents a string whose leading underscore have been escaped by adding extra leading underscores.
2695     * The shape of this brand is rather unique compared to others we've used.
2696     * Instead of just an intersection of a string and an object, it is that union-ed
2697     * with an intersection of void and an object. This makes it wholly incompatible
2698     * with a normal string (which is good, it cannot be misused on assignment or on usage),
2699     * while still being comparable with a normal string via === (also good) and castable from a string.
2700     */
2701    export type __String = (string & {
2702        __escapedIdentifier: void;
2703    }) | (void & {
2704        __escapedIdentifier: void;
2705    }) | InternalSymbolName;
2706    /** ReadonlyMap where keys are `__String`s. */
2707    export interface ReadonlyUnderscoreEscapedMap<T> extends ReadonlyESMap<__String, T> {
2708    }
2709    /** Map where keys are `__String`s. */
2710    export interface UnderscoreEscapedMap<T> extends ESMap<__String, T>, ReadonlyUnderscoreEscapedMap<T> {
2711    }
2712    /** SymbolTable based on ES6 Map interface. */
2713    export type SymbolTable = UnderscoreEscapedMap<Symbol>;
2714    export enum TypeFlags {
2715        Any = 1,
2716        Unknown = 2,
2717        String = 4,
2718        Number = 8,
2719        Boolean = 16,
2720        Enum = 32,
2721        BigInt = 64,
2722        StringLiteral = 128,
2723        NumberLiteral = 256,
2724        BooleanLiteral = 512,
2725        EnumLiteral = 1024,
2726        BigIntLiteral = 2048,
2727        ESSymbol = 4096,
2728        UniqueESSymbol = 8192,
2729        Void = 16384,
2730        Undefined = 32768,
2731        Null = 65536,
2732        Never = 131072,
2733        TypeParameter = 262144,
2734        Object = 524288,
2735        Union = 1048576,
2736        Intersection = 2097152,
2737        Index = 4194304,
2738        IndexedAccess = 8388608,
2739        Conditional = 16777216,
2740        Substitution = 33554432,
2741        NonPrimitive = 67108864,
2742        TemplateLiteral = 134217728,
2743        StringMapping = 268435456,
2744        Literal = 2944,
2745        Unit = 109440,
2746        StringOrNumberLiteral = 384,
2747        PossiblyFalsy = 117724,
2748        StringLike = 402653316,
2749        NumberLike = 296,
2750        BigIntLike = 2112,
2751        BooleanLike = 528,
2752        EnumLike = 1056,
2753        ESSymbolLike = 12288,
2754        VoidLike = 49152,
2755        UnionOrIntersection = 3145728,
2756        StructuredType = 3670016,
2757        TypeVariable = 8650752,
2758        InstantiableNonPrimitive = 58982400,
2759        InstantiablePrimitive = 406847488,
2760        Instantiable = 465829888,
2761        StructuredOrInstantiable = 469499904,
2762        Narrowable = 536624127,
2763    }
2764    export type DestructuringPattern = BindingPattern | ObjectLiteralExpression | ArrayLiteralExpression;
2765    export interface Type {
2766        flags: TypeFlags;
2767        symbol: Symbol;
2768        pattern?: DestructuringPattern;
2769        aliasSymbol?: Symbol;
2770        aliasTypeArguments?: readonly Type[];
2771    }
2772    export interface LiteralType extends Type {
2773        value: string | number | PseudoBigInt;
2774        freshType: LiteralType;
2775        regularType: LiteralType;
2776    }
2777    export interface UniqueESSymbolType extends Type {
2778        symbol: Symbol;
2779        escapedName: __String;
2780    }
2781    export interface StringLiteralType extends LiteralType {
2782        value: string;
2783    }
2784    export interface NumberLiteralType extends LiteralType {
2785        value: number;
2786    }
2787    export interface BigIntLiteralType extends LiteralType {
2788        value: PseudoBigInt;
2789    }
2790    export interface EnumType extends Type {
2791    }
2792    export enum ObjectFlags {
2793        Class = 1,
2794        Interface = 2,
2795        Reference = 4,
2796        Tuple = 8,
2797        Anonymous = 16,
2798        Mapped = 32,
2799        Instantiated = 64,
2800        ObjectLiteral = 128,
2801        EvolvingArray = 256,
2802        ObjectLiteralPatternWithComputedProperties = 512,
2803        ReverseMapped = 1024,
2804        JsxAttributes = 2048,
2805        JSLiteral = 4096,
2806        FreshLiteral = 8192,
2807        ArrayLiteral = 16384,
2808        ClassOrInterface = 3,
2809        ContainsSpread = 2097152,
2810        ObjectRestType = 4194304,
2811        InstantiationExpressionType = 8388608,
2812    }
2813    export interface ObjectType extends Type {
2814        objectFlags: ObjectFlags;
2815    }
2816    /** Class and interface types (ObjectFlags.Class and ObjectFlags.Interface). */
2817    export interface InterfaceType extends ObjectType {
2818        typeParameters: TypeParameter[] | undefined;
2819        outerTypeParameters: TypeParameter[] | undefined;
2820        localTypeParameters: TypeParameter[] | undefined;
2821        thisType: TypeParameter | undefined;
2822    }
2823    export type BaseType = ObjectType | IntersectionType | TypeVariable;
2824    export interface InterfaceTypeWithDeclaredMembers extends InterfaceType {
2825        declaredProperties: Symbol[];
2826        declaredCallSignatures: Signature[];
2827        declaredConstructSignatures: Signature[];
2828        declaredIndexInfos: IndexInfo[];
2829    }
2830    /**
2831     * Type references (ObjectFlags.Reference). When a class or interface has type parameters or
2832     * a "this" type, references to the class or interface are made using type references. The
2833     * typeArguments property specifies the types to substitute for the type parameters of the
2834     * class or interface and optionally includes an extra element that specifies the type to
2835     * substitute for "this" in the resulting instantiation. When no extra argument is present,
2836     * the type reference itself is substituted for "this". The typeArguments property is undefined
2837     * if the class or interface has no type parameters and the reference isn't specifying an
2838     * explicit "this" argument.
2839     */
2840    export interface TypeReference extends ObjectType {
2841        target: GenericType;
2842        node?: TypeReferenceNode | ArrayTypeNode | TupleTypeNode;
2843    }
2844    export interface DeferredTypeReference extends TypeReference {
2845    }
2846    export interface GenericType extends InterfaceType, TypeReference {
2847    }
2848    export enum ElementFlags {
2849        Required = 1,
2850        Optional = 2,
2851        Rest = 4,
2852        Variadic = 8,
2853        Fixed = 3,
2854        Variable = 12,
2855        NonRequired = 14,
2856        NonRest = 11
2857    }
2858    export interface TupleType extends GenericType {
2859        elementFlags: readonly ElementFlags[];
2860        minLength: number;
2861        fixedLength: number;
2862        hasRestElement: boolean;
2863        combinedFlags: ElementFlags;
2864        readonly: boolean;
2865        labeledElementDeclarations?: readonly (NamedTupleMember | ParameterDeclaration)[];
2866    }
2867    export interface TupleTypeReference extends TypeReference {
2868        target: TupleType;
2869    }
2870    export interface UnionOrIntersectionType extends Type {
2871        types: Type[];
2872    }
2873    export interface UnionType extends UnionOrIntersectionType {
2874    }
2875    export interface IntersectionType extends UnionOrIntersectionType {
2876    }
2877    export type StructuredType = ObjectType | UnionType | IntersectionType;
2878    export interface EvolvingArrayType extends ObjectType {
2879        elementType: Type;
2880        finalArrayType?: Type;
2881    }
2882    export interface InstantiableType extends Type {
2883    }
2884    export interface TypeParameter extends InstantiableType {
2885    }
2886    export interface IndexedAccessType extends InstantiableType {
2887        objectType: Type;
2888        indexType: Type;
2889        constraint?: Type;
2890        simplifiedForReading?: Type;
2891        simplifiedForWriting?: Type;
2892    }
2893    export type TypeVariable = TypeParameter | IndexedAccessType;
2894    export interface IndexType extends InstantiableType {
2895        type: InstantiableType | UnionOrIntersectionType;
2896    }
2897    export interface ConditionalRoot {
2898        node: ConditionalTypeNode;
2899        checkType: Type;
2900        extendsType: Type;
2901        isDistributive: boolean;
2902        inferTypeParameters?: TypeParameter[];
2903        outerTypeParameters?: TypeParameter[];
2904        instantiations?: Map<Type>;
2905        aliasSymbol?: Symbol;
2906        aliasTypeArguments?: Type[];
2907    }
2908    export interface ConditionalType extends InstantiableType {
2909        root: ConditionalRoot;
2910        checkType: Type;
2911        extendsType: Type;
2912        resolvedTrueType?: Type;
2913        resolvedFalseType?: Type;
2914    }
2915    export interface TemplateLiteralType extends InstantiableType {
2916        texts: readonly string[];
2917        types: readonly Type[];
2918    }
2919    export interface StringMappingType extends InstantiableType {
2920        symbol: Symbol;
2921        type: Type;
2922    }
2923    export interface SubstitutionType extends InstantiableType {
2924        objectFlags: ObjectFlags;
2925        baseType: Type;
2926        constraint: Type;
2927    }
2928    export enum SignatureKind {
2929        Call = 0,
2930        Construct = 1
2931    }
2932    export interface Signature {
2933        declaration?: SignatureDeclaration | JSDocSignature;
2934        typeParameters?: readonly TypeParameter[];
2935        parameters: readonly Symbol[];
2936    }
2937    export enum IndexKind {
2938        String = 0,
2939        Number = 1
2940    }
2941    export interface IndexInfo {
2942        keyType: Type;
2943        type: Type;
2944        isReadonly: boolean;
2945        declaration?: IndexSignatureDeclaration;
2946    }
2947    export enum InferencePriority {
2948        NakedTypeVariable = 1,
2949        SpeculativeTuple = 2,
2950        SubstituteSource = 4,
2951        HomomorphicMappedType = 8,
2952        PartialHomomorphicMappedType = 16,
2953        MappedTypeConstraint = 32,
2954        ContravariantConditional = 64,
2955        ReturnType = 128,
2956        LiteralKeyof = 256,
2957        NoConstraints = 512,
2958        AlwaysStrict = 1024,
2959        MaxValue = 2048,
2960        PriorityImpliesCombination = 416,
2961        Circularity = -1
2962    }
2963    /** @deprecated Use FileExtensionInfo instead. */
2964    export type JsFileExtensionInfo = FileExtensionInfo;
2965    export interface FileExtensionInfo {
2966        extension: string;
2967        isMixedContent: boolean;
2968        scriptKind?: ScriptKind;
2969    }
2970    export interface DiagnosticMessage {
2971        key: string;
2972        category: DiagnosticCategory;
2973        code: number;
2974        message: string;
2975        reportsUnnecessary?: {};
2976        reportsDeprecated?: {};
2977    }
2978    /**
2979     * A linked list of formatted diagnostic messages to be used as part of a multiline message.
2980     * It is built from the bottom up, leaving the head to be the "main" diagnostic.
2981     * While it seems that DiagnosticMessageChain is structurally similar to DiagnosticMessage,
2982     * the difference is that messages are all preformatted in DMC.
2983     */
2984    export interface DiagnosticMessageChain {
2985        messageText: string;
2986        category: DiagnosticCategory;
2987        code: number;
2988        next?: DiagnosticMessageChain[];
2989    }
2990    export interface Diagnostic extends DiagnosticRelatedInformation {
2991        /** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */
2992        reportsUnnecessary?: {};
2993        reportsDeprecated?: {};
2994        source?: string;
2995        relatedInformation?: DiagnosticRelatedInformation[];
2996    }
2997    export interface DiagnosticRelatedInformation {
2998        category: DiagnosticCategory;
2999        code: number;
3000        file: SourceFile | undefined;
3001        start: number | undefined;
3002        length: number | undefined;
3003        messageText: string | DiagnosticMessageChain;
3004    }
3005    export interface DiagnosticWithLocation extends Diagnostic {
3006        file: SourceFile;
3007        start: number;
3008        length: number;
3009    }
3010    export enum DiagnosticCategory {
3011        Warning = 0,
3012        Error = 1,
3013        Suggestion = 2,
3014        Message = 3
3015    }
3016    export enum ModuleResolutionKind {
3017        Classic = 1,
3018        NodeJs = 2,
3019        Node16 = 3,
3020        NodeNext = 99
3021    }
3022    export enum ModuleDetectionKind {
3023        /**
3024         * Files with imports, exports and/or import.meta are considered modules
3025         */
3026        Legacy = 1,
3027        /**
3028         * Legacy, but also files with jsx under react-jsx or react-jsxdev and esm mode files under moduleResolution: node16+
3029         */
3030        Auto = 2,
3031        /**
3032         * Consider all non-declaration files modules, regardless of present syntax
3033         */
3034        Force = 3
3035    }
3036    export interface PluginImport {
3037        name: string;
3038    }
3039    export interface ProjectReference {
3040        /** A normalized path on disk */
3041        path: string;
3042        /** The path as the user originally wrote it */
3043        originalPath?: string;
3044        /** True if the output of this reference should be prepended to the output of this project. Only valid for --outFile compilations */
3045        prepend?: boolean;
3046        /** True if it is intended that this reference form a circularity */
3047        circular?: boolean;
3048    }
3049    export enum WatchFileKind {
3050        FixedPollingInterval = 0,
3051        PriorityPollingInterval = 1,
3052        DynamicPriorityPolling = 2,
3053        FixedChunkSizePolling = 3,
3054        UseFsEvents = 4,
3055        UseFsEventsOnParentDirectory = 5
3056    }
3057    export enum WatchDirectoryKind {
3058        UseFsEvents = 0,
3059        FixedPollingInterval = 1,
3060        DynamicPriorityPolling = 2,
3061        FixedChunkSizePolling = 3
3062    }
3063    export enum PollingWatchKind {
3064        FixedInterval = 0,
3065        PriorityInterval = 1,
3066        DynamicPriority = 2,
3067        FixedChunkSize = 3
3068    }
3069    export type CompilerOptionsValue = string | number | boolean | (string | number)[] | string[] | MapLike<string[]> | PluginImport[] | ProjectReference[] | null | undefined | EtsOptions;
3070    export interface CompilerOptions {
3071        allowJs?: boolean;
3072        allowSyntheticDefaultImports?: boolean;
3073        allowUmdGlobalAccess?: boolean;
3074        allowUnreachableCode?: boolean;
3075        allowUnusedLabels?: boolean;
3076        alwaysStrict?: boolean;
3077        baseUrl?: string;
3078        charset?: string;
3079        checkJs?: boolean;
3080        declaration?: boolean;
3081        declarationMap?: boolean;
3082        emitDeclarationOnly?: boolean;
3083        declarationDir?: string;
3084        disableSizeLimit?: boolean;
3085        disableSourceOfProjectReferenceRedirect?: boolean;
3086        disableSolutionSearching?: boolean;
3087        disableReferencedProjectLoad?: boolean;
3088        downlevelIteration?: boolean;
3089        emitBOM?: boolean;
3090        emitDecoratorMetadata?: boolean;
3091        exactOptionalPropertyTypes?: boolean;
3092        experimentalDecorators?: boolean;
3093        forceConsistentCasingInFileNames?: boolean;
3094        importHelpers?: boolean;
3095        importsNotUsedAsValues?: ImportsNotUsedAsValues;
3096        inlineSourceMap?: boolean;
3097        inlineSources?: boolean;
3098        isolatedModules?: boolean;
3099        jsx?: JsxEmit;
3100        keyofStringsOnly?: boolean;
3101        lib?: string[];
3102        locale?: string;
3103        mapRoot?: string;
3104        maxNodeModuleJsDepth?: number;
3105        module?: ModuleKind;
3106        moduleResolution?: ModuleResolutionKind;
3107        moduleSuffixes?: string[];
3108        moduleDetection?: ModuleDetectionKind;
3109        newLine?: NewLineKind;
3110        noEmit?: boolean;
3111        noEmitHelpers?: boolean;
3112        noEmitOnError?: boolean;
3113        noErrorTruncation?: boolean;
3114        noFallthroughCasesInSwitch?: boolean;
3115        noImplicitAny?: boolean;
3116        noImplicitReturns?: boolean;
3117        noImplicitThis?: boolean;
3118        noStrictGenericChecks?: boolean;
3119        noUnusedLocals?: boolean;
3120        noUnusedParameters?: boolean;
3121        noImplicitUseStrict?: boolean;
3122        noPropertyAccessFromIndexSignature?: boolean;
3123        assumeChangesOnlyAffectDirectDependencies?: boolean;
3124        noLib?: boolean;
3125        noResolve?: boolean;
3126        noUncheckedIndexedAccess?: boolean;
3127        out?: string;
3128        outDir?: string;
3129        outFile?: string;
3130        paths?: MapLike<string[]>;
3131        preserveConstEnums?: boolean;
3132        noImplicitOverride?: boolean;
3133        preserveSymlinks?: boolean;
3134        preserveValueImports?: boolean;
3135        project?: string;
3136        reactNamespace?: string;
3137        jsxFactory?: string;
3138        jsxFragmentFactory?: string;
3139        jsxImportSource?: string;
3140        composite?: boolean;
3141        incremental?: boolean;
3142        tsBuildInfoFile?: string;
3143        removeComments?: boolean;
3144        rootDir?: string;
3145        rootDirs?: string[];
3146        skipLibCheck?: boolean;
3147        skipDefaultLibCheck?: boolean;
3148        sourceMap?: boolean;
3149        sourceRoot?: string;
3150        strict?: boolean;
3151        strictFunctionTypes?: boolean;
3152        strictBindCallApply?: boolean;
3153        strictNullChecks?: boolean;
3154        strictPropertyInitialization?: boolean;
3155        stripInternal?: boolean;
3156        suppressExcessPropertyErrors?: boolean;
3157        suppressImplicitAnyIndexErrors?: boolean;
3158        target?: ScriptTarget;
3159        traceResolution?: boolean;
3160        useUnknownInCatchVariables?: boolean;
3161        resolveJsonModule?: boolean;
3162        types?: string[];
3163        /** Paths used to compute primary types search locations */
3164        typeRoots?: string[];
3165        esModuleInterop?: boolean;
3166        useDefineForClassFields?: boolean;
3167        ets?: EtsOptions;
3168        packageManagerType?: string;
3169        emitNodeModulesFiles?: boolean;
3170        etsLoaderPath?: string;
3171        tsImportSendableEnable?: boolean;
3172        [option: string]: CompilerOptionsValue | TsConfigSourceFile | undefined;
3173    }
3174    export interface EtsOptions {
3175        render: {
3176            method: string[];
3177            decorator: string;
3178        };
3179        components: string[];
3180        libs: string[];
3181        extend: {
3182            decorator: string[];
3183            components: {
3184                name: string;
3185                type: string;
3186                instance: string;
3187            }[];
3188        };
3189        styles: {
3190            decorator: string;
3191            component: {
3192                name: string;
3193                type: string;
3194                instance: string;
3195            };
3196            property: string;
3197        };
3198        concurrent: {
3199            decorator: string;
3200        };
3201        customComponent?: string;
3202        propertyDecorators: {
3203            name: string;
3204            needInitialization: boolean;
3205        }[];
3206        emitDecorators: {
3207            name: string;
3208            emitParameters: boolean;
3209        }[];
3210    }
3211    export interface WatchOptions {
3212        watchFile?: WatchFileKind;
3213        watchDirectory?: WatchDirectoryKind;
3214        fallbackPolling?: PollingWatchKind;
3215        synchronousWatchDirectory?: boolean;
3216        excludeDirectories?: string[];
3217        excludeFiles?: string[];
3218        [option: string]: CompilerOptionsValue | undefined;
3219    }
3220    export interface TypeAcquisition {
3221        /**
3222         * @deprecated typingOptions.enableAutoDiscovery
3223         * Use typeAcquisition.enable instead.
3224         */
3225        enableAutoDiscovery?: boolean;
3226        enable?: boolean;
3227        include?: string[];
3228        exclude?: string[];
3229        disableFilenameBasedTypeAcquisition?: boolean;
3230        [option: string]: CompilerOptionsValue | undefined;
3231    }
3232    export enum ModuleKind {
3233        None = 0,
3234        CommonJS = 1,
3235        AMD = 2,
3236        UMD = 3,
3237        System = 4,
3238        ES2015 = 5,
3239        ES2020 = 6,
3240        ES2022 = 7,
3241        ESNext = 99,
3242        Node16 = 100,
3243        NodeNext = 199
3244    }
3245    export enum JsxEmit {
3246        None = 0,
3247        Preserve = 1,
3248        React = 2,
3249        ReactNative = 3,
3250        ReactJSX = 4,
3251        ReactJSXDev = 5
3252    }
3253    export enum ImportsNotUsedAsValues {
3254        Remove = 0,
3255        Preserve = 1,
3256        Error = 2
3257    }
3258    export enum NewLineKind {
3259        CarriageReturnLineFeed = 0,
3260        LineFeed = 1
3261    }
3262    export interface LineAndCharacter {
3263        /** 0-based. */
3264        line: number;
3265        character: number;
3266    }
3267    export enum ScriptKind {
3268        Unknown = 0,
3269        JS = 1,
3270        JSX = 2,
3271        TS = 3,
3272        TSX = 4,
3273        External = 5,
3274        JSON = 6,
3275        /**
3276         * Used on extensions that doesn't define the ScriptKind but the content defines it.
3277         * Deferred extensions are going to be included in all project contexts.
3278         */
3279        Deferred = 7,
3280        ETS = 8
3281    }
3282    export enum ScriptTarget {
3283        ES3 = 0,
3284        ES5 = 1,
3285        ES2015 = 2,
3286        ES2016 = 3,
3287        ES2017 = 4,
3288        ES2018 = 5,
3289        ES2019 = 6,
3290        ES2020 = 7,
3291        ES2021 = 8,
3292        ES2022 = 9,
3293        ESNext = 99,
3294        JSON = 100,
3295        Latest = 99
3296    }
3297    export enum LanguageVariant {
3298        Standard = 0,
3299        JSX = 1
3300    }
3301    /** Either a parsed command line or a parsed tsconfig.json */
3302    export interface ParsedCommandLine {
3303        options: CompilerOptions;
3304        typeAcquisition?: TypeAcquisition;
3305        fileNames: string[];
3306        projectReferences?: readonly ProjectReference[];
3307        watchOptions?: WatchOptions;
3308        raw?: any;
3309        errors: Diagnostic[];
3310        wildcardDirectories?: MapLike<WatchDirectoryFlags>;
3311        compileOnSave?: boolean;
3312    }
3313    export enum WatchDirectoryFlags {
3314        None = 0,
3315        Recursive = 1
3316    }
3317    export interface CreateProgramOptions {
3318        rootNames: readonly string[];
3319        options: CompilerOptions;
3320        projectReferences?: readonly ProjectReference[];
3321        host?: CompilerHost;
3322        oldProgram?: Program;
3323        configFileParsingDiagnostics?: readonly Diagnostic[];
3324    }
3325    export interface ModuleResolutionHost {
3326        fileExists(fileName: string): boolean;
3327        readFile(fileName: string): string | undefined;
3328        trace?(s: string): void;
3329        directoryExists?(directoryName: string): boolean;
3330        /**
3331         * Resolve a symbolic link.
3332         * @see https://nodejs.org/api/fs.html#fs_fs_realpathsync_path_options
3333         */
3334        realpath?(path: string): string;
3335        getCurrentDirectory?(): string;
3336        getDirectories?(path: string): string[];
3337        useCaseSensitiveFileNames?: boolean | (() => boolean) | undefined;
3338        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
3339        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
3340        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
3341    }
3342    /**
3343     * Used by services to specify the minimum host area required to set up source files under any compilation settings
3344     */
3345    export interface MinimalResolutionCacheHost extends ModuleResolutionHost {
3346        getCompilationSettings(): CompilerOptions;
3347        getCompilerHost?(): CompilerHost | undefined;
3348    }
3349    /**
3350     * Represents the result of module resolution.
3351     * Module resolution will pick up tsx/jsx/js files even if '--jsx' and '--allowJs' are turned off.
3352     * The Program will then filter results based on these flags.
3353     *
3354     * Prefer to return a `ResolvedModuleFull` so that the file type does not have to be inferred.
3355     */
3356    export interface ResolvedModule {
3357        /** Path of the file the module was resolved to. */
3358        resolvedFileName: string;
3359        /** True if `resolvedFileName` comes from `node_modules`. */
3360        isExternalLibraryImport?: boolean;
3361    }
3362    /**
3363     * ResolvedModule with an explicitly provided `extension` property.
3364     * Prefer this over `ResolvedModule`.
3365     * If changing this, remember to change `moduleResolutionIsEqualTo`.
3366     */
3367    export interface ResolvedModuleFull extends ResolvedModule {
3368        /**
3369         * Extension of resolvedFileName. This must match what's at the end of resolvedFileName.
3370         * This is optional for backwards-compatibility, but will be added if not provided.
3371         */
3372        extension: Extension;
3373        packageId?: PackageId;
3374    }
3375    /**
3376     * Unique identifier with a package name and version.
3377     * If changing this, remember to change `packageIdIsEqual`.
3378     */
3379    export interface PackageId {
3380        /**
3381         * Name of the package.
3382         * Should not include `@types`.
3383         * If accessing a non-index file, this should include its name e.g. "foo/bar".
3384         */
3385        name: string;
3386        /**
3387         * Name of a submodule within this package.
3388         * May be "".
3389         */
3390        subModuleName: string;
3391        /** Version of the package, e.g. "1.2.3" */
3392        version: string;
3393    }
3394    export enum Extension {
3395        Ts = ".ts",
3396        Tsx = ".tsx",
3397        Dts = ".d.ts",
3398        Js = ".js",
3399        Jsx = ".jsx",
3400        Json = ".json",
3401        TsBuildInfo = ".tsbuildinfo",
3402        Mjs = ".mjs",
3403        Mts = ".mts",
3404        Dmts = ".d.mts",
3405        Cjs = ".cjs",
3406        Cts = ".cts",
3407        Dcts = ".d.cts",
3408        Ets = ".ets",
3409        Dets = ".d.ets"
3410    }
3411    export interface ResolvedModuleWithFailedLookupLocations {
3412        readonly resolvedModule: ResolvedModuleFull | undefined;
3413    }
3414    export interface ResolvedTypeReferenceDirective {
3415        primary: boolean;
3416        resolvedFileName: string | undefined;
3417        packageId?: PackageId;
3418        /** True if `resolvedFileName` comes from `node_modules` or `oh_modules`. */
3419        isExternalLibraryImport?: boolean;
3420    }
3421    export interface ResolvedTypeReferenceDirectiveWithFailedLookupLocations {
3422        readonly resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective | undefined;
3423        readonly failedLookupLocations: string[];
3424    }
3425    export interface FileCheckModuleInfo {
3426        fileNeedCheck: boolean;
3427        checkPayload: any;
3428        currentFileName: string;
3429    }
3430    export interface JsDocNodeCheckConfig {
3431        nodeNeedCheck: boolean;
3432        checkConfig: JsDocNodeCheckConfigItem[];
3433    }
3434    export interface JsDocNodeCheckConfigItem {
3435        tagName: string[];
3436        message: string;
3437        needConditionCheck: boolean;
3438        type: DiagnosticCategory;
3439        specifyCheckConditionFuncName: string;
3440        tagNameShouldExisted: boolean;
3441        checkValidCallback?: (jsDocTag: JSDocTag, config: JsDocNodeCheckConfigItem) => boolean;
3442        checkJsDocSpecialValidCallback?: (jsDocTags: readonly JSDocTag[], config: JsDocNodeCheckConfigItem) => boolean;
3443    }
3444    export interface TagCheckParam {
3445        needCheck: boolean;
3446        checkConfig: TagCheckConfig[];
3447    }
3448    export interface TagCheckConfig {
3449        tagName: string;
3450        message: string;
3451        needConditionCheck: boolean;
3452        specifyCheckConditionFuncName: string;
3453    }
3454    export interface ConditionCheckResult {
3455        valid: boolean;
3456        type?: DiagnosticCategory;
3457        message?: string;
3458    }
3459    export interface CompilerHost extends ModuleResolutionHost {
3460        getSourceFile(fileName: string, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean): SourceFile | undefined;
3461        getSourceFileByPath?(fileName: string, path: Path, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean): SourceFile | undefined;
3462        getCancellationToken?(): CancellationToken;
3463        getDefaultLibFileName(options: CompilerOptions): string;
3464        getDefaultLibLocation?(): string;
3465        writeFile: WriteFileCallback;
3466        getCurrentDirectory(): string;
3467        getCanonicalFileName(fileName: string): string;
3468        useCaseSensitiveFileNames(): boolean;
3469        getNewLine(): string;
3470        readDirectory?(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[], depth?: number): string[];
3471        resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[];
3472        /**
3473         * Returns the module resolution cache used by a provided `resolveModuleNames` implementation so that any non-name module resolution operations (eg, package.json lookup) can reuse it
3474         */
3475        getModuleResolutionCache?(): ModuleResolutionCache | undefined;
3476        /**
3477         * This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files
3478         */
3479        resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[] | readonly FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
3480        getEnvironmentVariable?(name: string): string | undefined;
3481        /** If provided along with custom resolveModuleNames or resolveTypeReferenceDirectives, used to determine if unchanged file path needs to re-resolve modules/type reference directives */
3482        hasInvalidatedResolutions?(filePath: Path): boolean;
3483        createHash?(data: string): string;
3484        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
3485        /**
3486         * get tagName where need to be determined based on the file path
3487         * @param jsDocFileCheckInfo filePath
3488         * @param symbolSourceFilePath filePath
3489         */
3490        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
3491        /**
3492         * get checked results based on the file path and jsDocs
3493         * @param jsDocFileCheckedInfo
3494         * @param jsDocs
3495         */
3496        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
3497        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
3498        getLastCompiledProgram?(): Program;
3499    }
3500    export interface SourceMapRange extends TextRange {
3501        source?: SourceMapSource;
3502    }
3503    export interface SourceMapSource {
3504        fileName: string;
3505        text: string;
3506        skipTrivia?: (pos: number) => number;
3507    }
3508    export enum EmitFlags {
3509        None = 0,
3510        SingleLine = 1,
3511        AdviseOnEmitNode = 2,
3512        NoSubstitution = 4,
3513        CapturesThis = 8,
3514        NoLeadingSourceMap = 16,
3515        NoTrailingSourceMap = 32,
3516        NoSourceMap = 48,
3517        NoNestedSourceMaps = 64,
3518        NoTokenLeadingSourceMaps = 128,
3519        NoTokenTrailingSourceMaps = 256,
3520        NoTokenSourceMaps = 384,
3521        NoLeadingComments = 512,
3522        NoTrailingComments = 1024,
3523        NoComments = 1536,
3524        NoNestedComments = 2048,
3525        HelperName = 4096,
3526        ExportName = 8192,
3527        LocalName = 16384,
3528        InternalName = 32768,
3529        Indented = 65536,
3530        NoIndentation = 131072,
3531        AsyncFunctionBody = 262144,
3532        ReuseTempVariableScope = 524288,
3533        CustomPrologue = 1048576,
3534        NoHoisting = 2097152,
3535        HasEndOfDeclarationMarker = 4194304,
3536        Iterator = 8388608,
3537        NoAsciiEscaping = 16777216,
3538    }
3539    export interface EmitHelperBase {
3540        readonly name: string;
3541        readonly scoped: boolean;
3542        readonly text: string | ((node: EmitHelperUniqueNameCallback) => string);
3543        readonly priority?: number;
3544        readonly dependencies?: EmitHelper[];
3545    }
3546    export interface ScopedEmitHelper extends EmitHelperBase {
3547        readonly scoped: true;
3548    }
3549    export interface UnscopedEmitHelper extends EmitHelperBase {
3550        readonly scoped: false;
3551        readonly text: string;
3552    }
3553    export type EmitHelper = ScopedEmitHelper | UnscopedEmitHelper;
3554    export type EmitHelperUniqueNameCallback = (name: string) => string;
3555    export enum EmitHint {
3556        SourceFile = 0,
3557        Expression = 1,
3558        IdentifierName = 2,
3559        MappedTypeParameter = 3,
3560        Unspecified = 4,
3561        EmbeddedStatement = 5,
3562        JsxAttributeValue = 6
3563    }
3564    export interface SourceFileMayBeEmittedHost {
3565        getCompilerOptions(): CompilerOptions;
3566        isSourceFileFromExternalLibrary(file: SourceFile): boolean;
3567        getResolvedProjectReferenceToRedirect(fileName: string): ResolvedProjectReference | undefined;
3568        isSourceOfProjectReferenceRedirect(fileName: string): boolean;
3569    }
3570    export interface EmitHost extends ScriptReferenceHost, ModuleSpecifierResolutionHost, SourceFileMayBeEmittedHost {
3571        getSourceFiles(): readonly SourceFile[];
3572        useCaseSensitiveFileNames(): boolean;
3573        getCurrentDirectory(): string;
3574        getLibFileFromReference(ref: FileReference): SourceFile | undefined;
3575        getCommonSourceDirectory(): string;
3576        getCanonicalFileName(fileName: string): string;
3577        getNewLine(): string;
3578        isEmitBlocked(emitFileName: string): boolean;
3579        getPrependNodes(): readonly (InputFiles | UnparsedSource)[];
3580        writeFile: WriteFileCallback;
3581        getSourceFileFromReference: Program["getSourceFileFromReference"];
3582        readonly redirectTargetsMap: RedirectTargetsMap;
3583        createHash?(data: string): string;
3584    }
3585    export enum OuterExpressionKinds {
3586        Parentheses = 1,
3587        TypeAssertions = 2,
3588        NonNullAssertions = 4,
3589        PartiallyEmittedExpressions = 8,
3590        Assertions = 6,
3591        All = 15,
3592        ExcludeJSDocTypeAssertion = 16
3593    }
3594    export type TypeOfTag = "undefined" | "number" | "bigint" | "boolean" | "string" | "symbol" | "object" | "function";
3595    export interface NodeFactory {
3596        createNodeArray<T extends Node>(elements?: readonly T[], hasTrailingComma?: boolean): NodeArray<T>;
3597        createNumericLiteral(value: string | number, numericLiteralFlags?: TokenFlags): NumericLiteral;
3598        createBigIntLiteral(value: string | PseudoBigInt): BigIntLiteral;
3599        createStringLiteral(text: string, isSingleQuote?: boolean): StringLiteral;
3600        createStringLiteralFromNode(sourceNode: PropertyNameLiteral | PrivateIdentifier, isSingleQuote?: boolean): StringLiteral;
3601        createRegularExpressionLiteral(text: string): RegularExpressionLiteral;
3602        createIdentifier(text: string): Identifier;
3603        /**
3604         * Create a unique temporary variable.
3605         * @param recordTempVariable An optional callback used to record the temporary variable name. This
3606         * should usually be a reference to `hoistVariableDeclaration` from a `TransformationContext`, but
3607         * can be `undefined` if you plan to record the temporary variable manually.
3608         * @param reservedInNestedScopes When `true`, reserves the temporary variable name in all nested scopes
3609         * during emit so that the variable can be referenced in a nested function body. This is an alternative to
3610         * setting `EmitFlags.ReuseTempVariableScope` on the nested function itself.
3611         */
3612        createTempVariable(recordTempVariable: ((node: Identifier) => void) | undefined, reservedInNestedScopes?: boolean): Identifier;
3613        /**
3614         * Create a unique temporary variable for use in a loop.
3615         * @param reservedInNestedScopes When `true`, reserves the temporary variable name in all nested scopes
3616         * during emit so that the variable can be referenced in a nested function body. This is an alternative to
3617         * setting `EmitFlags.ReuseTempVariableScope` on the nested function itself.
3618         */
3619        createLoopVariable(reservedInNestedScopes?: boolean): Identifier;
3620        /** Create a unique name based on the supplied text. */
3621        createUniqueName(text: string, flags?: GeneratedIdentifierFlags): Identifier;
3622        /** Create a unique name generated for a node. */
3623        getGeneratedNameForNode(node: Node | undefined, flags?: GeneratedIdentifierFlags): Identifier;
3624        createPrivateIdentifier(text: string): PrivateIdentifier;
3625        createUniquePrivateName(text?: string): PrivateIdentifier;
3626        getGeneratedPrivateNameForNode(node: Node): PrivateIdentifier;
3627        createToken(token: SyntaxKind.SuperKeyword): SuperExpression;
3628        createToken(token: SyntaxKind.ThisKeyword): ThisExpression;
3629        createToken(token: SyntaxKind.NullKeyword): NullLiteral;
3630        createToken(token: SyntaxKind.TrueKeyword): TrueLiteral;
3631        createToken(token: SyntaxKind.FalseKeyword): FalseLiteral;
3632        createToken<TKind extends PunctuationSyntaxKind>(token: TKind): PunctuationToken<TKind>;
3633        createToken<TKind extends KeywordTypeSyntaxKind>(token: TKind): KeywordTypeNode<TKind>;
3634        createToken<TKind extends ModifierSyntaxKind>(token: TKind): ModifierToken<TKind>;
3635        createToken<TKind extends KeywordSyntaxKind>(token: TKind): KeywordToken<TKind>;
3636        createToken<TKind extends SyntaxKind.Unknown | SyntaxKind.EndOfFileToken>(token: TKind): Token<TKind>;
3637        createSuper(): SuperExpression;
3638        createThis(): ThisExpression;
3639        createNull(): NullLiteral;
3640        createTrue(): TrueLiteral;
3641        createFalse(): FalseLiteral;
3642        createModifier<T extends ModifierSyntaxKind>(kind: T): ModifierToken<T>;
3643        createModifiersFromModifierFlags(flags: ModifierFlags): Modifier[] | undefined;
3644        createQualifiedName(left: EntityName, right: string | Identifier): QualifiedName;
3645        updateQualifiedName(node: QualifiedName, left: EntityName, right: Identifier): QualifiedName;
3646        createComputedPropertyName(expression: Expression): ComputedPropertyName;
3647        updateComputedPropertyName(node: ComputedPropertyName, expression: Expression): ComputedPropertyName;
3648        createTypeParameterDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration;
3649        updateTypeParameterDeclaration(node: TypeParameterDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
3650        createParameterDeclaration(modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration;
3651        updateParameterDeclaration(node: ParameterDeclaration, modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration;
3652        createDecorator(expression: Expression): Decorator;
3653        updateDecorator(node: Decorator, expression: Expression): Decorator;
3654        createPropertySignature(modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined): PropertySignature;
3655        updatePropertySignature(node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined): PropertySignature;
3656        createPropertyDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
3657        updatePropertyDeclaration(node: PropertyDeclaration, modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
3658        createMethodSignature(modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): MethodSignature;
3659        updateMethodSignature(node: MethodSignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): MethodSignature;
3660        createMethodDeclaration(modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration;
3661        updateMethodDeclaration(node: MethodDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration;
3662        createConstructorDeclaration(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
3663        updateConstructorDeclaration(node: ConstructorDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
3664        createGetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
3665        updateGetAccessorDeclaration(node: GetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
3666        createSetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
3667        updateSetAccessorDeclaration(node: SetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
3668        createCallSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): CallSignatureDeclaration;
3669        updateCallSignature(node: CallSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): CallSignatureDeclaration;
3670        createConstructSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): ConstructSignatureDeclaration;
3671        updateConstructSignature(node: ConstructSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): ConstructSignatureDeclaration;
3672        createIndexSignature(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
3673        updateIndexSignature(node: IndexSignatureDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
3674        createTemplateLiteralTypeSpan(type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan;
3675        updateTemplateLiteralTypeSpan(node: TemplateLiteralTypeSpan, type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan;
3676        createClassStaticBlockDeclaration(body: Block): ClassStaticBlockDeclaration;
3677        updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, body: Block): ClassStaticBlockDeclaration;
3678        createKeywordTypeNode<TKind extends KeywordTypeSyntaxKind>(kind: TKind): KeywordTypeNode<TKind>;
3679        createTypePredicateNode(assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode | string, type: TypeNode | undefined): TypePredicateNode;
3680        updateTypePredicateNode(node: TypePredicateNode, assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode, type: TypeNode | undefined): TypePredicateNode;
3681        createTypeReferenceNode(typeName: string | EntityName, typeArguments?: readonly TypeNode[]): TypeReferenceNode;
3682        updateTypeReferenceNode(node: TypeReferenceNode, typeName: EntityName, typeArguments: NodeArray<TypeNode> | undefined): TypeReferenceNode;
3683        createFunctionTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): FunctionTypeNode;
3684        updateFunctionTypeNode(node: FunctionTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): FunctionTypeNode;
3685        createConstructorTypeNode(modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode;
3686        updateConstructorTypeNode(node: ConstructorTypeNode, modifiers: readonly Modifier[] | undefined, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): ConstructorTypeNode;
3687        createTypeQueryNode(exprName: EntityName, typeArguments?: readonly TypeNode[]): TypeQueryNode;
3688        updateTypeQueryNode(node: TypeQueryNode, exprName: EntityName, typeArguments?: readonly TypeNode[]): TypeQueryNode;
3689        createTypeLiteralNode(members: readonly TypeElement[] | undefined): TypeLiteralNode;
3690        updateTypeLiteralNode(node: TypeLiteralNode, members: NodeArray<TypeElement>): TypeLiteralNode;
3691        createArrayTypeNode(elementType: TypeNode): ArrayTypeNode;
3692        updateArrayTypeNode(node: ArrayTypeNode, elementType: TypeNode): ArrayTypeNode;
3693        createTupleTypeNode(elements: readonly (TypeNode | NamedTupleMember)[]): TupleTypeNode;
3694        updateTupleTypeNode(node: TupleTypeNode, elements: readonly (TypeNode | NamedTupleMember)[]): TupleTypeNode;
3695        createNamedTupleMember(dotDotDotToken: DotDotDotToken | undefined, name: Identifier, questionToken: QuestionToken | undefined, type: TypeNode): NamedTupleMember;
3696        updateNamedTupleMember(node: NamedTupleMember, dotDotDotToken: DotDotDotToken | undefined, name: Identifier, questionToken: QuestionToken | undefined, type: TypeNode): NamedTupleMember;
3697        createOptionalTypeNode(type: TypeNode): OptionalTypeNode;
3698        updateOptionalTypeNode(node: OptionalTypeNode, type: TypeNode): OptionalTypeNode;
3699        createRestTypeNode(type: TypeNode): RestTypeNode;
3700        updateRestTypeNode(node: RestTypeNode, type: TypeNode): RestTypeNode;
3701        createUnionTypeNode(types: readonly TypeNode[]): UnionTypeNode;
3702        updateUnionTypeNode(node: UnionTypeNode, types: NodeArray<TypeNode>): UnionTypeNode;
3703        createIntersectionTypeNode(types: readonly TypeNode[]): IntersectionTypeNode;
3704        updateIntersectionTypeNode(node: IntersectionTypeNode, types: NodeArray<TypeNode>): IntersectionTypeNode;
3705        createConditionalTypeNode(checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode): ConditionalTypeNode;
3706        updateConditionalTypeNode(node: ConditionalTypeNode, checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode): ConditionalTypeNode;
3707        createInferTypeNode(typeParameter: TypeParameterDeclaration): InferTypeNode;
3708        updateInferTypeNode(node: InferTypeNode, typeParameter: TypeParameterDeclaration): InferTypeNode;
3709        createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode;
3710        updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, assertions: ImportTypeAssertionContainer | undefined, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode;
3711        createParenthesizedType(type: TypeNode): ParenthesizedTypeNode;
3712        updateParenthesizedType(node: ParenthesizedTypeNode, type: TypeNode): ParenthesizedTypeNode;
3713        createThisTypeNode(): ThisTypeNode;
3714        createTypeOperatorNode(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode;
3715        updateTypeOperatorNode(node: TypeOperatorNode, type: TypeNode): TypeOperatorNode;
3716        createIndexedAccessTypeNode(objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode;
3717        updateIndexedAccessTypeNode(node: IndexedAccessTypeNode, objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode;
3718        createMappedTypeNode(readonlyToken: ReadonlyKeyword | PlusToken | MinusToken | undefined, typeParameter: TypeParameterDeclaration, nameType: TypeNode | undefined, questionToken: QuestionToken | PlusToken | MinusToken | undefined, type: TypeNode | undefined, members: NodeArray<TypeElement> | undefined): MappedTypeNode;
3719        updateMappedTypeNode(node: MappedTypeNode, readonlyToken: ReadonlyKeyword | PlusToken | MinusToken | undefined, typeParameter: TypeParameterDeclaration, nameType: TypeNode | undefined, questionToken: QuestionToken | PlusToken | MinusToken | undefined, type: TypeNode | undefined, members: NodeArray<TypeElement> | undefined): MappedTypeNode;
3720        createLiteralTypeNode(literal: LiteralTypeNode["literal"]): LiteralTypeNode;
3721        updateLiteralTypeNode(node: LiteralTypeNode, literal: LiteralTypeNode["literal"]): LiteralTypeNode;
3722        createTemplateLiteralType(head: TemplateHead, templateSpans: readonly TemplateLiteralTypeSpan[]): TemplateLiteralTypeNode;
3723        updateTemplateLiteralType(node: TemplateLiteralTypeNode, head: TemplateHead, templateSpans: readonly TemplateLiteralTypeSpan[]): TemplateLiteralTypeNode;
3724        createObjectBindingPattern(elements: readonly BindingElement[]): ObjectBindingPattern;
3725        updateObjectBindingPattern(node: ObjectBindingPattern, elements: readonly BindingElement[]): ObjectBindingPattern;
3726        createArrayBindingPattern(elements: readonly ArrayBindingElement[]): ArrayBindingPattern;
3727        updateArrayBindingPattern(node: ArrayBindingPattern, elements: readonly ArrayBindingElement[]): ArrayBindingPattern;
3728        createBindingElement(dotDotDotToken: DotDotDotToken | undefined, propertyName: string | PropertyName | undefined, name: string | BindingName, initializer?: Expression): BindingElement;
3729        updateBindingElement(node: BindingElement, dotDotDotToken: DotDotDotToken | undefined, propertyName: PropertyName | undefined, name: BindingName, initializer: Expression | undefined): BindingElement;
3730        createArrayLiteralExpression(elements?: readonly Expression[], multiLine?: boolean): ArrayLiteralExpression;
3731        updateArrayLiteralExpression(node: ArrayLiteralExpression, elements: readonly Expression[]): ArrayLiteralExpression;
3732        createObjectLiteralExpression(properties?: readonly ObjectLiteralElementLike[], multiLine?: boolean): ObjectLiteralExpression;
3733        updateObjectLiteralExpression(node: ObjectLiteralExpression, properties: readonly ObjectLiteralElementLike[]): ObjectLiteralExpression;
3734        createPropertyAccessExpression(expression: Expression, name: string | MemberName): PropertyAccessExpression;
3735        updatePropertyAccessExpression(node: PropertyAccessExpression, expression: Expression, name: MemberName): PropertyAccessExpression;
3736        createPropertyAccessChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, name: string | MemberName): PropertyAccessChain;
3737        updatePropertyAccessChain(node: PropertyAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, name: MemberName): PropertyAccessChain;
3738        createElementAccessExpression(expression: Expression, index: number | Expression): ElementAccessExpression;
3739        updateElementAccessExpression(node: ElementAccessExpression, expression: Expression, argumentExpression: Expression): ElementAccessExpression;
3740        createElementAccessChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, index: number | Expression): ElementAccessChain;
3741        updateElementAccessChain(node: ElementAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, argumentExpression: Expression): ElementAccessChain;
3742        createCallExpression(expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): CallExpression;
3743        updateCallExpression(node: CallExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]): CallExpression;
3744        createCallChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): CallChain;
3745        updateCallChain(node: CallChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]): CallChain;
3746        createNewExpression(expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): NewExpression;
3747        updateNewExpression(node: NewExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): NewExpression;
3748        createTaggedTemplateExpression(tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
3749        updateTaggedTemplateExpression(node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
3750        createTypeAssertion(type: TypeNode, expression: Expression): TypeAssertion;
3751        updateTypeAssertion(node: TypeAssertion, type: TypeNode, expression: Expression): TypeAssertion;
3752        createParenthesizedExpression(expression: Expression): ParenthesizedExpression;
3753        updateParenthesizedExpression(node: ParenthesizedExpression, expression: Expression): ParenthesizedExpression;
3754        createFunctionExpression(modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[] | undefined, type: TypeNode | undefined, body: Block): FunctionExpression;
3755        updateFunctionExpression(node: FunctionExpression, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block): FunctionExpression;
3756        createArrowFunction(modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction;
3757        updateArrowFunction(node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction;
3758        createEtsComponentExpression(name: Expression, argumentExpression: Expression[] | NodeArray<Expression> | undefined, body: Block | undefined): EtsComponentExpression;
3759        updateEtsComponentExpression(node: EtsComponentExpression, name: Expression | undefined, argumentExpression: Expression[] | NodeArray<Expression> | undefined, body: Block | undefined): EtsComponentExpression;
3760        createDeleteExpression(expression: Expression): DeleteExpression;
3761        updateDeleteExpression(node: DeleteExpression, expression: Expression): DeleteExpression;
3762        createTypeOfExpression(expression: Expression): TypeOfExpression;
3763        updateTypeOfExpression(node: TypeOfExpression, expression: Expression): TypeOfExpression;
3764        createVoidExpression(expression: Expression): VoidExpression;
3765        updateVoidExpression(node: VoidExpression, expression: Expression): VoidExpression;
3766        createAwaitExpression(expression: Expression): AwaitExpression;
3767        updateAwaitExpression(node: AwaitExpression, expression: Expression): AwaitExpression;
3768        createPrefixUnaryExpression(operator: PrefixUnaryOperator, operand: Expression): PrefixUnaryExpression;
3769        updatePrefixUnaryExpression(node: PrefixUnaryExpression, operand: Expression): PrefixUnaryExpression;
3770        createPostfixUnaryExpression(operand: Expression, operator: PostfixUnaryOperator): PostfixUnaryExpression;
3771        updatePostfixUnaryExpression(node: PostfixUnaryExpression, operand: Expression): PostfixUnaryExpression;
3772        createBinaryExpression(left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression): BinaryExpression;
3773        updateBinaryExpression(node: BinaryExpression, left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression): BinaryExpression;
3774        createConditionalExpression(condition: Expression, questionToken: QuestionToken | undefined, whenTrue: Expression, colonToken: ColonToken | undefined, whenFalse: Expression): ConditionalExpression;
3775        updateConditionalExpression(node: ConditionalExpression, condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression;
3776        createTemplateExpression(head: TemplateHead, templateSpans: readonly TemplateSpan[]): TemplateExpression;
3777        updateTemplateExpression(node: TemplateExpression, head: TemplateHead, templateSpans: readonly TemplateSpan[]): TemplateExpression;
3778        createTemplateHead(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateHead;
3779        createTemplateHead(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateHead;
3780        createTemplateMiddle(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateMiddle;
3781        createTemplateMiddle(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateMiddle;
3782        createTemplateTail(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateTail;
3783        createTemplateTail(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateTail;
3784        createNoSubstitutionTemplateLiteral(text: string, rawText?: string): NoSubstitutionTemplateLiteral;
3785        createNoSubstitutionTemplateLiteral(text: string | undefined, rawText: string): NoSubstitutionTemplateLiteral;
3786        createYieldExpression(asteriskToken: AsteriskToken, expression: Expression): YieldExpression;
3787        createYieldExpression(asteriskToken: undefined, expression: Expression | undefined): YieldExpression;
3788        updateYieldExpression(node: YieldExpression, asteriskToken: AsteriskToken | undefined, expression: Expression | undefined): YieldExpression;
3789        createSpreadElement(expression: Expression): SpreadElement;
3790        updateSpreadElement(node: SpreadElement, expression: Expression): SpreadElement;
3791        createClassExpression(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression;
3792        updateClassExpression(node: ClassExpression, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression;
3793        createOmittedExpression(): OmittedExpression;
3794        createExpressionWithTypeArguments(expression: Expression, typeArguments: readonly TypeNode[] | undefined): ExpressionWithTypeArguments;
3795        updateExpressionWithTypeArguments(node: ExpressionWithTypeArguments, expression: Expression, typeArguments: readonly TypeNode[] | undefined): ExpressionWithTypeArguments;
3796        createAsExpression(expression: Expression, type: TypeNode): AsExpression;
3797        updateAsExpression(node: AsExpression, expression: Expression, type: TypeNode): AsExpression;
3798        createNonNullExpression(expression: Expression): NonNullExpression;
3799        updateNonNullExpression(node: NonNullExpression, expression: Expression): NonNullExpression;
3800        createNonNullChain(expression: Expression): NonNullChain;
3801        updateNonNullChain(node: NonNullChain, expression: Expression): NonNullChain;
3802        createMetaProperty(keywordToken: MetaProperty["keywordToken"], name: Identifier): MetaProperty;
3803        updateMetaProperty(node: MetaProperty, name: Identifier): MetaProperty;
3804        createSatisfiesExpression(expression: Expression, type: TypeNode): SatisfiesExpression;
3805        updateSatisfiesExpression(node: SatisfiesExpression, expression: Expression, type: TypeNode): SatisfiesExpression;
3806        createTemplateSpan(expression: Expression, literal: TemplateMiddle | TemplateTail): TemplateSpan;
3807        updateTemplateSpan(node: TemplateSpan, expression: Expression, literal: TemplateMiddle | TemplateTail): TemplateSpan;
3808        createSemicolonClassElement(): SemicolonClassElement;
3809        createBlock(statements: readonly Statement[], multiLine?: boolean): Block;
3810        updateBlock(node: Block, statements: readonly Statement[]): Block;
3811        createVariableStatement(modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]): VariableStatement;
3812        updateVariableStatement(node: VariableStatement, modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList): VariableStatement;
3813        createEmptyStatement(): EmptyStatement;
3814        createExpressionStatement(expression: Expression): ExpressionStatement;
3815        updateExpressionStatement(node: ExpressionStatement, expression: Expression): ExpressionStatement;
3816        createIfStatement(expression: Expression, thenStatement: Statement, elseStatement?: Statement): IfStatement;
3817        updateIfStatement(node: IfStatement, expression: Expression, thenStatement: Statement, elseStatement: Statement | undefined): IfStatement;
3818        createDoStatement(statement: Statement, expression: Expression): DoStatement;
3819        updateDoStatement(node: DoStatement, statement: Statement, expression: Expression): DoStatement;
3820        createWhileStatement(expression: Expression, statement: Statement): WhileStatement;
3821        updateWhileStatement(node: WhileStatement, expression: Expression, statement: Statement): WhileStatement;
3822        createForStatement(initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement): ForStatement;
3823        updateForStatement(node: ForStatement, initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement): ForStatement;
3824        createForInStatement(initializer: ForInitializer, expression: Expression, statement: Statement): ForInStatement;
3825        updateForInStatement(node: ForInStatement, initializer: ForInitializer, expression: Expression, statement: Statement): ForInStatement;
3826        createForOfStatement(awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement): ForOfStatement;
3827        updateForOfStatement(node: ForOfStatement, awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement): ForOfStatement;
3828        createContinueStatement(label?: string | Identifier): ContinueStatement;
3829        updateContinueStatement(node: ContinueStatement, label: Identifier | undefined): ContinueStatement;
3830        createBreakStatement(label?: string | Identifier): BreakStatement;
3831        updateBreakStatement(node: BreakStatement, label: Identifier | undefined): BreakStatement;
3832        createReturnStatement(expression?: Expression): ReturnStatement;
3833        updateReturnStatement(node: ReturnStatement, expression: Expression | undefined): ReturnStatement;
3834        createWithStatement(expression: Expression, statement: Statement): WithStatement;
3835        updateWithStatement(node: WithStatement, expression: Expression, statement: Statement): WithStatement;
3836        createSwitchStatement(expression: Expression, caseBlock: CaseBlock): SwitchStatement;
3837        updateSwitchStatement(node: SwitchStatement, expression: Expression, caseBlock: CaseBlock): SwitchStatement;
3838        createLabeledStatement(label: string | Identifier, statement: Statement): LabeledStatement;
3839        updateLabeledStatement(node: LabeledStatement, label: Identifier, statement: Statement): LabeledStatement;
3840        createThrowStatement(expression: Expression): ThrowStatement;
3841        updateThrowStatement(node: ThrowStatement, expression: Expression): ThrowStatement;
3842        createTryStatement(tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined): TryStatement;
3843        updateTryStatement(node: TryStatement, tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined): TryStatement;
3844        createDebuggerStatement(): DebuggerStatement;
3845        createVariableDeclaration(name: string | BindingName, exclamationToken?: ExclamationToken, type?: TypeNode, initializer?: Expression): VariableDeclaration;
3846        updateVariableDeclaration(node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
3847        createVariableDeclarationList(declarations: readonly VariableDeclaration[], flags?: NodeFlags): VariableDeclarationList;
3848        updateVariableDeclarationList(node: VariableDeclarationList, declarations: readonly VariableDeclaration[]): VariableDeclarationList;
3849        createFunctionDeclaration(modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration;
3850        updateFunctionDeclaration(node: FunctionDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration;
3851        createClassDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
3852        updateClassDeclaration(node: ClassDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
3853        createStructDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): StructDeclaration;
3854        updateStructDeclaration(node: StructDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): StructDeclaration;
3855        createInterfaceDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
3856        updateInterfaceDeclaration(node: InterfaceDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
3857        createTypeAliasDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
3858        updateTypeAliasDeclaration(node: TypeAliasDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
3859        createEnumDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
3860        updateEnumDeclaration(node: EnumDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
3861        createModuleDeclaration(modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration;
3862        updateModuleDeclaration(node: ModuleDeclaration, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
3863        createModuleBlock(statements: readonly Statement[]): ModuleBlock;
3864        updateModuleBlock(node: ModuleBlock, statements: readonly Statement[]): ModuleBlock;
3865        createCaseBlock(clauses: readonly CaseOrDefaultClause[]): CaseBlock;
3866        updateCaseBlock(node: CaseBlock, clauses: readonly CaseOrDefaultClause[]): CaseBlock;
3867        createNamespaceExportDeclaration(name: string | Identifier): NamespaceExportDeclaration;
3868        updateNamespaceExportDeclaration(node: NamespaceExportDeclaration, name: Identifier): NamespaceExportDeclaration;
3869        createImportEqualsDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
3870        updateImportEqualsDeclaration(node: ImportEqualsDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
3871        createImportDeclaration(modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration;
3872        updateImportDeclaration(node: ImportDeclaration, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
3873        createImportClause(isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause;
3874        updateImportClause(node: ImportClause, isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause;
3875        createAssertClause(elements: NodeArray<AssertEntry>, multiLine?: boolean): AssertClause;
3876        updateAssertClause(node: AssertClause, elements: NodeArray<AssertEntry>, multiLine?: boolean): AssertClause;
3877        createAssertEntry(name: AssertionKey, value: Expression): AssertEntry;
3878        updateAssertEntry(node: AssertEntry, name: AssertionKey, value: Expression): AssertEntry;
3879        createImportTypeAssertionContainer(clause: AssertClause, multiLine?: boolean): ImportTypeAssertionContainer;
3880        updateImportTypeAssertionContainer(node: ImportTypeAssertionContainer, clause: AssertClause, multiLine?: boolean): ImportTypeAssertionContainer;
3881        createNamespaceImport(name: Identifier): NamespaceImport;
3882        updateNamespaceImport(node: NamespaceImport, name: Identifier): NamespaceImport;
3883        createNamespaceExport(name: Identifier): NamespaceExport;
3884        updateNamespaceExport(node: NamespaceExport, name: Identifier): NamespaceExport;
3885        createNamedImports(elements: readonly ImportSpecifier[]): NamedImports;
3886        updateNamedImports(node: NamedImports, elements: readonly ImportSpecifier[]): NamedImports;
3887        createImportSpecifier(isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier;
3888        updateImportSpecifier(node: ImportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier;
3889        createExportAssignment(modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
3890        updateExportAssignment(node: ExportAssignment, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
3891        createExportDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration;
3892        updateExportDeclaration(node: ExportDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration;
3893        createNamedExports(elements: readonly ExportSpecifier[]): NamedExports;
3894        updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports;
3895        createExportSpecifier(isTypeOnly: boolean, propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier;
3896        updateExportSpecifier(node: ExportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ExportSpecifier;
3897        createExternalModuleReference(expression: Expression): ExternalModuleReference;
3898        updateExternalModuleReference(node: ExternalModuleReference, expression: Expression): ExternalModuleReference;
3899        createJSDocAllType(): JSDocAllType;
3900        createJSDocUnknownType(): JSDocUnknownType;
3901        createJSDocNonNullableType(type: TypeNode, postfix?: boolean): JSDocNonNullableType;
3902        updateJSDocNonNullableType(node: JSDocNonNullableType, type: TypeNode): JSDocNonNullableType;
3903        createJSDocNullableType(type: TypeNode, postfix?: boolean): JSDocNullableType;
3904        updateJSDocNullableType(node: JSDocNullableType, type: TypeNode): JSDocNullableType;
3905        createJSDocOptionalType(type: TypeNode): JSDocOptionalType;
3906        updateJSDocOptionalType(node: JSDocOptionalType, type: TypeNode): JSDocOptionalType;
3907        createJSDocFunctionType(parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): JSDocFunctionType;
3908        updateJSDocFunctionType(node: JSDocFunctionType, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): JSDocFunctionType;
3909        createJSDocVariadicType(type: TypeNode): JSDocVariadicType;
3910        updateJSDocVariadicType(node: JSDocVariadicType, type: TypeNode): JSDocVariadicType;
3911        createJSDocNamepathType(type: TypeNode): JSDocNamepathType;
3912        updateJSDocNamepathType(node: JSDocNamepathType, type: TypeNode): JSDocNamepathType;
3913        createJSDocTypeExpression(type: TypeNode): JSDocTypeExpression;
3914        updateJSDocTypeExpression(node: JSDocTypeExpression, type: TypeNode): JSDocTypeExpression;
3915        createJSDocNameReference(name: EntityName | JSDocMemberName): JSDocNameReference;
3916        updateJSDocNameReference(node: JSDocNameReference, name: EntityName | JSDocMemberName): JSDocNameReference;
3917        createJSDocMemberName(left: EntityName | JSDocMemberName, right: Identifier): JSDocMemberName;
3918        updateJSDocMemberName(node: JSDocMemberName, left: EntityName | JSDocMemberName, right: Identifier): JSDocMemberName;
3919        createJSDocLink(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLink;
3920        updateJSDocLink(node: JSDocLink, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLink;
3921        createJSDocLinkCode(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkCode;
3922        updateJSDocLinkCode(node: JSDocLinkCode, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkCode;
3923        createJSDocLinkPlain(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkPlain;
3924        updateJSDocLinkPlain(node: JSDocLinkPlain, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkPlain;
3925        createJSDocTypeLiteral(jsDocPropertyTags?: readonly JSDocPropertyLikeTag[], isArrayType?: boolean): JSDocTypeLiteral;
3926        updateJSDocTypeLiteral(node: JSDocTypeLiteral, jsDocPropertyTags: readonly JSDocPropertyLikeTag[] | undefined, isArrayType: boolean | undefined): JSDocTypeLiteral;
3927        createJSDocSignature(typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type?: JSDocReturnTag): JSDocSignature;
3928        updateJSDocSignature(node: JSDocSignature, typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type: JSDocReturnTag | undefined): JSDocSignature;
3929        createJSDocTemplateTag(tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment?: string | NodeArray<JSDocComment>): JSDocTemplateTag;
3930        updateJSDocTemplateTag(node: JSDocTemplateTag, tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment: string | NodeArray<JSDocComment> | undefined): JSDocTemplateTag;
3931        createJSDocTypedefTag(tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression | JSDocTypeLiteral, fullName?: Identifier | JSDocNamespaceDeclaration, comment?: string | NodeArray<JSDocComment>): JSDocTypedefTag;
3932        updateJSDocTypedefTag(node: JSDocTypedefTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | JSDocTypeLiteral | undefined, fullName: Identifier | JSDocNamespaceDeclaration | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocTypedefTag;
3933        createJSDocParameterTag(tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression, isNameFirst?: boolean, comment?: string | NodeArray<JSDocComment>): JSDocParameterTag;
3934        updateJSDocParameterTag(node: JSDocParameterTag, tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression: JSDocTypeExpression | undefined, isNameFirst: boolean, comment: string | NodeArray<JSDocComment> | undefined): JSDocParameterTag;
3935        createJSDocPropertyTag(tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression, isNameFirst?: boolean, comment?: string | NodeArray<JSDocComment>): JSDocPropertyTag;
3936        updateJSDocPropertyTag(node: JSDocPropertyTag, tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression: JSDocTypeExpression | undefined, isNameFirst: boolean, comment: string | NodeArray<JSDocComment> | undefined): JSDocPropertyTag;
3937        createJSDocTypeTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocTypeTag;
3938        updateJSDocTypeTag(node: JSDocTypeTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray<JSDocComment> | undefined): JSDocTypeTag;
3939        createJSDocSeeTag(tagName: Identifier | undefined, nameExpression: JSDocNameReference | undefined, comment?: string | NodeArray<JSDocComment>): JSDocSeeTag;
3940        updateJSDocSeeTag(node: JSDocSeeTag, tagName: Identifier | undefined, nameExpression: JSDocNameReference | undefined, comment?: string | NodeArray<JSDocComment>): JSDocSeeTag;
3941        createJSDocReturnTag(tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocReturnTag;
3942        updateJSDocReturnTag(node: JSDocReturnTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocReturnTag;
3943        createJSDocThisTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocThisTag;
3944        updateJSDocThisTag(node: JSDocThisTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocThisTag;
3945        createJSDocEnumTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocEnumTag;
3946        updateJSDocEnumTag(node: JSDocEnumTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray<JSDocComment> | undefined): JSDocEnumTag;
3947        createJSDocCallbackTag(tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName?: Identifier | JSDocNamespaceDeclaration, comment?: string | NodeArray<JSDocComment>): JSDocCallbackTag;
3948        updateJSDocCallbackTag(node: JSDocCallbackTag, tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName: Identifier | JSDocNamespaceDeclaration | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocCallbackTag;
3949        createJSDocAugmentsTag(tagName: Identifier | undefined, className: JSDocAugmentsTag["class"], comment?: string | NodeArray<JSDocComment>): JSDocAugmentsTag;
3950        updateJSDocAugmentsTag(node: JSDocAugmentsTag, tagName: Identifier | undefined, className: JSDocAugmentsTag["class"], comment: string | NodeArray<JSDocComment> | undefined): JSDocAugmentsTag;
3951        createJSDocImplementsTag(tagName: Identifier | undefined, className: JSDocImplementsTag["class"], comment?: string | NodeArray<JSDocComment>): JSDocImplementsTag;
3952        updateJSDocImplementsTag(node: JSDocImplementsTag, tagName: Identifier | undefined, className: JSDocImplementsTag["class"], comment: string | NodeArray<JSDocComment> | undefined): JSDocImplementsTag;
3953        createJSDocAuthorTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocAuthorTag;
3954        updateJSDocAuthorTag(node: JSDocAuthorTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocAuthorTag;
3955        createJSDocClassTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocClassTag;
3956        updateJSDocClassTag(node: JSDocClassTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocClassTag;
3957        createJSDocPublicTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocPublicTag;
3958        updateJSDocPublicTag(node: JSDocPublicTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocPublicTag;
3959        createJSDocPrivateTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocPrivateTag;
3960        updateJSDocPrivateTag(node: JSDocPrivateTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocPrivateTag;
3961        createJSDocProtectedTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocProtectedTag;
3962        updateJSDocProtectedTag(node: JSDocProtectedTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocProtectedTag;
3963        createJSDocReadonlyTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocReadonlyTag;
3964        updateJSDocReadonlyTag(node: JSDocReadonlyTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocReadonlyTag;
3965        createJSDocUnknownTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocUnknownTag;
3966        updateJSDocUnknownTag(node: JSDocUnknownTag, tagName: Identifier, comment: string | NodeArray<JSDocComment> | undefined): JSDocUnknownTag;
3967        createJSDocDeprecatedTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocDeprecatedTag;
3968        updateJSDocDeprecatedTag(node: JSDocDeprecatedTag, tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocDeprecatedTag;
3969        createJSDocOverrideTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocOverrideTag;
3970        updateJSDocOverrideTag(node: JSDocOverrideTag, tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocOverrideTag;
3971        createJSDocText(text: string): JSDocText;
3972        updateJSDocText(node: JSDocText, text: string): JSDocText;
3973        createJSDocComment(comment?: string | NodeArray<JSDocComment> | undefined, tags?: readonly JSDocTag[] | undefined): JSDoc;
3974        updateJSDocComment(node: JSDoc, comment: string | NodeArray<JSDocComment> | undefined, tags: readonly JSDocTag[] | undefined): JSDoc;
3975        createJsxElement(openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement): JsxElement;
3976        updateJsxElement(node: JsxElement, openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement): JsxElement;
3977        createJsxSelfClosingElement(tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxSelfClosingElement;
3978        updateJsxSelfClosingElement(node: JsxSelfClosingElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxSelfClosingElement;
3979        createJsxOpeningElement(tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxOpeningElement;
3980        updateJsxOpeningElement(node: JsxOpeningElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxOpeningElement;
3981        createJsxClosingElement(tagName: JsxTagNameExpression): JsxClosingElement;
3982        updateJsxClosingElement(node: JsxClosingElement, tagName: JsxTagNameExpression): JsxClosingElement;
3983        createJsxFragment(openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment): JsxFragment;
3984        createJsxText(text: string, containsOnlyTriviaWhiteSpaces?: boolean): JsxText;
3985        updateJsxText(node: JsxText, text: string, containsOnlyTriviaWhiteSpaces?: boolean): JsxText;
3986        createJsxOpeningFragment(): JsxOpeningFragment;
3987        createJsxJsxClosingFragment(): JsxClosingFragment;
3988        updateJsxFragment(node: JsxFragment, openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment): JsxFragment;
3989        createJsxAttribute(name: Identifier, initializer: JsxAttributeValue | undefined): JsxAttribute;
3990        updateJsxAttribute(node: JsxAttribute, name: Identifier, initializer: JsxAttributeValue | undefined): JsxAttribute;
3991        createJsxAttributes(properties: readonly JsxAttributeLike[]): JsxAttributes;
3992        updateJsxAttributes(node: JsxAttributes, properties: readonly JsxAttributeLike[]): JsxAttributes;
3993        createJsxSpreadAttribute(expression: Expression): JsxSpreadAttribute;
3994        updateJsxSpreadAttribute(node: JsxSpreadAttribute, expression: Expression): JsxSpreadAttribute;
3995        createJsxExpression(dotDotDotToken: DotDotDotToken | undefined, expression: Expression | undefined): JsxExpression;
3996        updateJsxExpression(node: JsxExpression, expression: Expression | undefined): JsxExpression;
3997        createCaseClause(expression: Expression, statements: readonly Statement[]): CaseClause;
3998        updateCaseClause(node: CaseClause, expression: Expression, statements: readonly Statement[]): CaseClause;
3999        createDefaultClause(statements: readonly Statement[]): DefaultClause;
4000        updateDefaultClause(node: DefaultClause, statements: readonly Statement[]): DefaultClause;
4001        createHeritageClause(token: HeritageClause["token"], types: readonly ExpressionWithTypeArguments[]): HeritageClause;
4002        updateHeritageClause(node: HeritageClause, types: readonly ExpressionWithTypeArguments[]): HeritageClause;
4003        createCatchClause(variableDeclaration: string | BindingName | VariableDeclaration | undefined, block: Block): CatchClause;
4004        updateCatchClause(node: CatchClause, variableDeclaration: VariableDeclaration | undefined, block: Block): CatchClause;
4005        createPropertyAssignment(name: string | PropertyName, initializer: Expression): PropertyAssignment;
4006        updatePropertyAssignment(node: PropertyAssignment, name: PropertyName, initializer: Expression): PropertyAssignment;
4007        createShorthandPropertyAssignment(name: string | Identifier, objectAssignmentInitializer?: Expression): ShorthandPropertyAssignment;
4008        updateShorthandPropertyAssignment(node: ShorthandPropertyAssignment, name: Identifier, objectAssignmentInitializer: Expression | undefined): ShorthandPropertyAssignment;
4009        createSpreadAssignment(expression: Expression): SpreadAssignment;
4010        updateSpreadAssignment(node: SpreadAssignment, expression: Expression): SpreadAssignment;
4011        createEnumMember(name: string | PropertyName, initializer?: Expression): EnumMember;
4012        updateEnumMember(node: EnumMember, name: PropertyName, initializer: Expression | undefined): EnumMember;
4013        createSourceFile(statements: readonly Statement[], endOfFileToken: EndOfFileToken, flags: NodeFlags): SourceFile;
4014        updateSourceFile(node: SourceFile, statements: readonly Statement[], isDeclarationFile?: boolean, referencedFiles?: readonly FileReference[], typeReferences?: readonly FileReference[], hasNoDefaultLib?: boolean, libReferences?: readonly FileReference[]): SourceFile;
4015        createNotEmittedStatement(original: Node): NotEmittedStatement;
4016        createPartiallyEmittedExpression(expression: Expression, original?: Node): PartiallyEmittedExpression;
4017        updatePartiallyEmittedExpression(node: PartiallyEmittedExpression, expression: Expression): PartiallyEmittedExpression;
4018        createCommaListExpression(elements: readonly Expression[]): CommaListExpression;
4019        updateCommaListExpression(node: CommaListExpression, elements: readonly Expression[]): CommaListExpression;
4020        createBundle(sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle;
4021        updateBundle(node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle;
4022        createComma(left: Expression, right: Expression): BinaryExpression;
4023        createAssignment(left: ObjectLiteralExpression | ArrayLiteralExpression, right: Expression): DestructuringAssignment;
4024        createAssignment(left: Expression, right: Expression): AssignmentExpression<EqualsToken>;
4025        createLogicalOr(left: Expression, right: Expression): BinaryExpression;
4026        createLogicalAnd(left: Expression, right: Expression): BinaryExpression;
4027        createBitwiseOr(left: Expression, right: Expression): BinaryExpression;
4028        createBitwiseXor(left: Expression, right: Expression): BinaryExpression;
4029        createBitwiseAnd(left: Expression, right: Expression): BinaryExpression;
4030        createStrictEquality(left: Expression, right: Expression): BinaryExpression;
4031        createStrictInequality(left: Expression, right: Expression): BinaryExpression;
4032        createEquality(left: Expression, right: Expression): BinaryExpression;
4033        createInequality(left: Expression, right: Expression): BinaryExpression;
4034        createLessThan(left: Expression, right: Expression): BinaryExpression;
4035        createLessThanEquals(left: Expression, right: Expression): BinaryExpression;
4036        createGreaterThan(left: Expression, right: Expression): BinaryExpression;
4037        createGreaterThanEquals(left: Expression, right: Expression): BinaryExpression;
4038        createLeftShift(left: Expression, right: Expression): BinaryExpression;
4039        createRightShift(left: Expression, right: Expression): BinaryExpression;
4040        createUnsignedRightShift(left: Expression, right: Expression): BinaryExpression;
4041        createAdd(left: Expression, right: Expression): BinaryExpression;
4042        createSubtract(left: Expression, right: Expression): BinaryExpression;
4043        createMultiply(left: Expression, right: Expression): BinaryExpression;
4044        createDivide(left: Expression, right: Expression): BinaryExpression;
4045        createModulo(left: Expression, right: Expression): BinaryExpression;
4046        createExponent(left: Expression, right: Expression): BinaryExpression;
4047        createPrefixPlus(operand: Expression): PrefixUnaryExpression;
4048        createPrefixMinus(operand: Expression): PrefixUnaryExpression;
4049        createPrefixIncrement(operand: Expression): PrefixUnaryExpression;
4050        createPrefixDecrement(operand: Expression): PrefixUnaryExpression;
4051        createBitwiseNot(operand: Expression): PrefixUnaryExpression;
4052        createLogicalNot(operand: Expression): PrefixUnaryExpression;
4053        createPostfixIncrement(operand: Expression): PostfixUnaryExpression;
4054        createPostfixDecrement(operand: Expression): PostfixUnaryExpression;
4055        createImmediatelyInvokedFunctionExpression(statements: readonly Statement[]): CallExpression;
4056        createImmediatelyInvokedFunctionExpression(statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
4057        createImmediatelyInvokedArrowFunction(statements: readonly Statement[]): CallExpression;
4058        createImmediatelyInvokedArrowFunction(statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
4059        createVoidZero(): VoidExpression;
4060        createExportDefault(expression: Expression): ExportAssignment;
4061        createExternalModuleExport(exportName: Identifier): ExportDeclaration;
4062        restoreOuterExpressions(outerExpression: Expression | undefined, innerExpression: Expression, kinds?: OuterExpressionKinds): Expression;
4063    }
4064    export interface CoreTransformationContext {
4065        readonly factory: NodeFactory;
4066        /** Gets the compiler options supplied to the transformer. */
4067        getCompilerOptions(): CompilerOptions;
4068        /** Starts a new lexical environment. */
4069        startLexicalEnvironment(): void;
4070        /** Suspends the current lexical environment, usually after visiting a parameter list. */
4071        suspendLexicalEnvironment(): void;
4072        /** Resumes a suspended lexical environment, usually before visiting a function body. */
4073        resumeLexicalEnvironment(): void;
4074        /** Ends a lexical environment, returning any declarations. */
4075        endLexicalEnvironment(): Statement[] | undefined;
4076        /** Hoists a function declaration to the containing scope. */
4077        hoistFunctionDeclaration(node: FunctionDeclaration): void;
4078        /** Hoists a variable declaration to the containing scope. */
4079        hoistVariableDeclaration(node: Identifier): void;
4080    }
4081    export interface TransformationContext extends CoreTransformationContext {
4082        /** Records a request for a non-scoped emit helper in the current context. */
4083        requestEmitHelper(helper: EmitHelper): void;
4084        /** Gets and resets the requested non-scoped emit helpers. */
4085        readEmitHelpers(): EmitHelper[] | undefined;
4086        /** Enables expression substitutions in the pretty printer for the provided SyntaxKind. */
4087        enableSubstitution(kind: SyntaxKind): void;
4088        /** Determines whether expression substitutions are enabled for the provided node. */
4089        isSubstitutionEnabled(node: Node): boolean;
4090        /**
4091         * Hook used by transformers to substitute expressions just before they
4092         * are emitted by the pretty printer.
4093         *
4094         * NOTE: Transformation hooks should only be modified during `Transformer` initialization,
4095         * before returning the `NodeTransformer` callback.
4096         */
4097        onSubstituteNode: (hint: EmitHint, node: Node) => Node;
4098        /**
4099         * Enables before/after emit notifications in the pretty printer for the provided
4100         * SyntaxKind.
4101         */
4102        enableEmitNotification(kind: SyntaxKind): void;
4103        /**
4104         * Determines whether before/after emit notifications should be raised in the pretty
4105         * printer when it emits a node.
4106         */
4107        isEmitNotificationEnabled(node: Node): boolean;
4108        /**
4109         * Hook used to allow transformers to capture state before or after
4110         * the printer emits a node.
4111         *
4112         * NOTE: Transformation hooks should only be modified during `Transformer` initialization,
4113         * before returning the `NodeTransformer` callback.
4114         */
4115        onEmitNode: (hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void) => void;
4116        /** Determines whether the lexical environment is suspended */
4117        isLexicalEnvironmentSuspended?(): boolean;
4118    }
4119    export interface TransformationResult<T extends Node> {
4120        /** Gets the transformed source files. */
4121        transformed: T[];
4122        /** Gets diagnostics for the transformation. */
4123        diagnostics?: DiagnosticWithLocation[];
4124        /**
4125         * Gets a substitute for a node, if one is available; otherwise, returns the original node.
4126         *
4127         * @param hint A hint as to the intended usage of the node.
4128         * @param node The node to substitute.
4129         */
4130        substituteNode(hint: EmitHint, node: Node): Node;
4131        /**
4132         * Emits a node with possible notification.
4133         *
4134         * @param hint A hint as to the intended usage of the node.
4135         * @param node The node to emit.
4136         * @param emitCallback A callback used to emit the node.
4137         */
4138        emitNodeWithNotification(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void;
4139        /**
4140         * Indicates if a given node needs an emit notification
4141         *
4142         * @param node The node to emit.
4143         */
4144        isEmitNotificationEnabled?(node: Node): boolean;
4145        /**
4146         * Clean up EmitNode entries on any parse-tree nodes.
4147         */
4148        dispose(): void;
4149    }
4150    /**
4151     * A function that is used to initialize and return a `Transformer` callback, which in turn
4152     * will be used to transform one or more nodes.
4153     */
4154    export type TransformerFactory<T extends Node> = (context: TransformationContext) => Transformer<T>;
4155    /**
4156     * A function that transforms a node.
4157     */
4158    export type Transformer<T extends Node> = (node: T) => T;
4159    /**
4160     * A function that accepts and possibly transforms a node.
4161     */
4162    export type Visitor = (node: Node) => VisitResult<Node>;
4163    export interface NodeVisitor {
4164        <T extends Node>(nodes: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T;
4165        <T extends Node>(nodes: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined;
4166    }
4167    export interface NodesVisitor {
4168        <T extends Node>(nodes: NodeArray<T>, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T>;
4169        <T extends Node>(nodes: NodeArray<T> | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T> | undefined;
4170    }
4171    export type VisitResult<T extends Node> = T | readonly T[] | undefined;
4172    export interface Printer {
4173        /**
4174         * Print a node and its subtree as-is, without any emit transformations.
4175         * @param hint A value indicating the purpose of a node. This is primarily used to
4176         * distinguish between an `Identifier` used in an expression position, versus an
4177         * `Identifier` used as an `IdentifierName` as part of a declaration. For most nodes you
4178         * should just pass `Unspecified`.
4179         * @param node The node to print. The node and its subtree are printed as-is, without any
4180         * emit transformations.
4181         * @param sourceFile A source file that provides context for the node. The source text of
4182         * the file is used to emit the original source content for literals and identifiers, while
4183         * the identifiers of the source file are used when generating unique names to avoid
4184         * collisions.
4185         */
4186        printNode(hint: EmitHint, node: Node, sourceFile: SourceFile): string;
4187        /**
4188         * Prints a list of nodes using the given format flags
4189         */
4190        printList<T extends Node>(format: ListFormat, list: NodeArray<T>, sourceFile: SourceFile): string;
4191        /**
4192         * Prints a source file as-is, without any emit transformations.
4193         */
4194        printFile(sourceFile: SourceFile): string;
4195        /**
4196         * Prints a bundle of source files as-is, without any emit transformations.
4197         */
4198        printBundle(bundle: Bundle): string;
4199        writeFile(sourceFile: SourceFile, writer: EmitTextWriter, sourceMapGenerator: SourceMapGenerator | undefined): void;
4200    }
4201    export interface PrintHandlers {
4202        /**
4203         * A hook used by the Printer when generating unique names to avoid collisions with
4204         * globally defined names that exist outside of the current source file.
4205         */
4206        hasGlobalName?(name: string): boolean;
4207        /**
4208         * A hook used by the Printer to provide notifications prior to emitting a node. A
4209         * compatible implementation **must** invoke `emitCallback` with the provided `hint` and
4210         * `node` values.
4211         * @param hint A hint indicating the intended purpose of the node.
4212         * @param node The node to emit.
4213         * @param emitCallback A callback that, when invoked, will emit the node.
4214         * @example
4215         * ```ts
4216         * var printer = createPrinter(printerOptions, {
4217         *   onEmitNode(hint, node, emitCallback) {
4218         *     // set up or track state prior to emitting the node...
4219         *     emitCallback(hint, node);
4220         *     // restore state after emitting the node...
4221         *   }
4222         * });
4223         * ```
4224         */
4225        onEmitNode?(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void;
4226        /**
4227         * A hook used to check if an emit notification is required for a node.
4228         * @param node The node to emit.
4229         */
4230        isEmitNotificationEnabled?(node: Node): boolean;
4231        /**
4232         * A hook used by the Printer to perform just-in-time substitution of a node. This is
4233         * primarily used by node transformations that need to substitute one node for another,
4234         * such as replacing `myExportedVar` with `exports.myExportedVar`.
4235         * @param hint A hint indicating the intended purpose of the node.
4236         * @param node The node to emit.
4237         * @example
4238         * ```ts
4239         * var printer = createPrinter(printerOptions, {
4240         *   substituteNode(hint, node) {
4241         *     // perform substitution if necessary...
4242         *     return node;
4243         *   }
4244         * });
4245         * ```
4246         */
4247        substituteNode?(hint: EmitHint, node: Node): Node;
4248    }
4249    export interface PrinterOptions {
4250        removeComments?: boolean;
4251        newLine?: NewLineKind;
4252        omitTrailingSemicolon?: boolean;
4253        noEmitHelpers?: boolean;
4254        sourceMap?: boolean;
4255        inlineSourceMap?: boolean;
4256        inlineSources?: boolean;
4257    }
4258    export interface RawSourceMap {
4259        version: 3;
4260        file: string;
4261        sourceRoot?: string | null;
4262        sources: string[];
4263        sourcesContent?: (string | null)[] | null;
4264        mappings: string;
4265        names?: string[] | null;
4266    }
4267    /**
4268     * Generates a source map.
4269     */
4270    export interface SourceMapGenerator {
4271        getSources(): readonly string[];
4272        /**
4273         * Adds a source to the source map.
4274         */
4275        addSource(fileName: string): number;
4276        /**
4277         * Set the content for a source.
4278         */
4279        setSourceContent(sourceIndex: number, content: string | null): void;
4280        /**
4281         * Adds a name.
4282         */
4283        addName(name: string): number;
4284        /**
4285         * Adds a mapping without source information.
4286         */
4287        addMapping(generatedLine: number, generatedCharacter: number): void;
4288        /**
4289         * Adds a mapping with source information.
4290         */
4291        addMapping(generatedLine: number, generatedCharacter: number, sourceIndex: number, sourceLine: number, sourceCharacter: number, nameIndex?: number): void;
4292        /**
4293         * Appends a source map.
4294         */
4295        appendSourceMap(generatedLine: number, generatedCharacter: number, sourceMap: RawSourceMap, sourceMapPath: string, start?: LineAndCharacter, end?: LineAndCharacter): void;
4296        /**
4297         * Gets the source map as a `RawSourceMap` object.
4298         */
4299        toJSON(): RawSourceMap;
4300        /**
4301         * Gets the string representation of the source map.
4302         */
4303        toString(): string;
4304    }
4305    export interface EmitTextWriter extends SymbolWriter {
4306        write(s: string): void;
4307        writeTrailingSemicolon(text: string): void;
4308        writeComment(text: string): void;
4309        getText(): string;
4310        rawWrite(s: string): void;
4311        writeLiteral(s: string): void;
4312        getTextPos(): number;
4313        getLine(): number;
4314        getColumn(): number;
4315        getIndent(): number;
4316        isAtStartOfLine(): boolean;
4317        hasTrailingComment(): boolean;
4318        hasTrailingWhitespace(): boolean;
4319        getTextPosWithWriteLine?(): number;
4320        nonEscapingWrite?(text: string): void;
4321    }
4322    export interface GetEffectiveTypeRootsHost {
4323        directoryExists?(directoryName: string): boolean;
4324        getCurrentDirectory?(): string;
4325    }
4326    export interface ModuleSpecifierResolutionHost {
4327        useCaseSensitiveFileNames?(): boolean;
4328        fileExists(path: string): boolean;
4329        getCurrentDirectory(): string;
4330        directoryExists?(path: string): boolean;
4331        readFile?(path: string): string | undefined;
4332        realpath?(path: string): string;
4333        getModuleSpecifierCache?(): ModuleSpecifierCache;
4334        getPackageJsonInfoCache?(): PackageJsonInfoCache | undefined;
4335        getGlobalTypingsCacheLocation?(): string | undefined;
4336        getNearestAncestorDirectoryWithPackageJson?(fileName: string, rootDir?: string): string | undefined;
4337        readonly redirectTargetsMap: RedirectTargetsMap;
4338        getProjectReferenceRedirect(fileName: string): string | undefined;
4339        isSourceOfProjectReferenceRedirect(fileName: string): boolean;
4340    }
4341    export interface ModulePath {
4342        path: string;
4343        isInNodeModules: boolean;
4344        isRedirect: boolean;
4345    }
4346    export interface ResolvedModuleSpecifierInfo {
4347        modulePaths: readonly ModulePath[] | undefined;
4348        moduleSpecifiers: readonly string[] | undefined;
4349        isBlockedByPackageJsonDependencies: boolean | undefined;
4350    }
4351    export interface ModuleSpecifierOptions {
4352        overrideImportMode?: SourceFile["impliedNodeFormat"];
4353    }
4354    export interface ModuleSpecifierCache {
4355        get(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions): Readonly<ResolvedModuleSpecifierInfo> | undefined;
4356        set(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, modulePaths: readonly ModulePath[], moduleSpecifiers: readonly string[]): void;
4357        setBlockedByPackageJsonDependencies(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, isBlockedByPackageJsonDependencies: boolean): void;
4358        setModulePaths(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, modulePaths: readonly ModulePath[]): void;
4359        clear(): void;
4360        count(): number;
4361    }
4362    export interface SymbolTracker {
4363        trackSymbol?(symbol: Symbol, enclosingDeclaration: Node | undefined, meaning: SymbolFlags): boolean;
4364        reportInaccessibleThisError?(): void;
4365        reportPrivateInBaseOfClassExpression?(propertyName: string): void;
4366        reportInaccessibleUniqueSymbolError?(): void;
4367        reportCyclicStructureError?(): void;
4368        reportLikelyUnsafeImportRequiredError?(specifier: string): void;
4369        reportTruncationError?(): void;
4370        moduleResolverHost?: ModuleSpecifierResolutionHost & {
4371            getCommonSourceDirectory(): string;
4372        };
4373        trackReferencedAmbientModule?(decl: ModuleDeclaration, symbol: Symbol): void;
4374        trackExternalModuleSymbolOfImportTypeNode?(symbol: Symbol): void;
4375        reportNonlocalAugmentation?(containingFile: SourceFile, parentSymbol: Symbol, augmentingSymbol: Symbol): void;
4376        reportNonSerializableProperty?(propertyName: string): void;
4377        reportImportTypeNodeResolutionModeOverride?(): void;
4378    }
4379    export interface TextSpan {
4380        start: number;
4381        length: number;
4382    }
4383    export interface TextChangeRange {
4384        span: TextSpan;
4385        newLength: number;
4386    }
4387    export interface SyntaxList extends Node {
4388        kind: SyntaxKind.SyntaxList;
4389        _children: Node[];
4390    }
4391    export enum ListFormat {
4392        None = 0,
4393        SingleLine = 0,
4394        MultiLine = 1,
4395        PreserveLines = 2,
4396        LinesMask = 3,
4397        NotDelimited = 0,
4398        BarDelimited = 4,
4399        AmpersandDelimited = 8,
4400        CommaDelimited = 16,
4401        AsteriskDelimited = 32,
4402        DelimitersMask = 60,
4403        AllowTrailingComma = 64,
4404        Indented = 128,
4405        SpaceBetweenBraces = 256,
4406        SpaceBetweenSiblings = 512,
4407        Braces = 1024,
4408        Parenthesis = 2048,
4409        AngleBrackets = 4096,
4410        SquareBrackets = 8192,
4411        BracketsMask = 15360,
4412        OptionalIfUndefined = 16384,
4413        OptionalIfEmpty = 32768,
4414        Optional = 49152,
4415        PreferNewLine = 65536,
4416        NoTrailingNewLine = 131072,
4417        NoInterveningComments = 262144,
4418        NoSpaceIfEmpty = 524288,
4419        SingleElement = 1048576,
4420        SpaceAfterList = 2097152,
4421        Modifiers = 2359808,
4422        HeritageClauses = 512,
4423        SingleLineTypeLiteralMembers = 768,
4424        MultiLineTypeLiteralMembers = 32897,
4425        SingleLineTupleTypeElements = 528,
4426        MultiLineTupleTypeElements = 657,
4427        UnionTypeConstituents = 516,
4428        IntersectionTypeConstituents = 520,
4429        ObjectBindingPatternElements = 525136,
4430        ArrayBindingPatternElements = 524880,
4431        ObjectLiteralExpressionProperties = 526226,
4432        ImportClauseEntries = 526226,
4433        ArrayLiteralExpressionElements = 8914,
4434        CommaListElements = 528,
4435        CallExpressionArguments = 2576,
4436        NewExpressionArguments = 18960,
4437        TemplateExpressionSpans = 262144,
4438        SingleLineBlockStatements = 768,
4439        MultiLineBlockStatements = 129,
4440        VariableDeclarationList = 528,
4441        SingleLineFunctionBodyStatements = 768,
4442        MultiLineFunctionBodyStatements = 1,
4443        ClassHeritageClauses = 0,
4444        ClassMembers = 129,
4445        InterfaceMembers = 129,
4446        EnumMembers = 145,
4447        CaseBlockClauses = 129,
4448        NamedImportsOrExportsElements = 525136,
4449        JsxElementOrFragmentChildren = 262144,
4450        JsxElementAttributes = 262656,
4451        CaseOrDefaultClauseStatements = 163969,
4452        HeritageClauseTypes = 528,
4453        SourceFileStatements = 131073,
4454        Decorators = 2146305,
4455        TypeArguments = 53776,
4456        TypeParameters = 53776,
4457        Parameters = 2576,
4458        IndexSignatureParameters = 8848,
4459        JSDocComment = 33
4460    }
4461    export interface UserPreferences {
4462        readonly disableSuggestions?: boolean;
4463        readonly quotePreference?: "auto" | "double" | "single";
4464        readonly includeCompletionsForModuleExports?: boolean;
4465        readonly includeCompletionsForImportStatements?: boolean;
4466        readonly includeCompletionsWithSnippetText?: boolean;
4467        readonly includeAutomaticOptionalChainCompletions?: boolean;
4468        readonly includeCompletionsWithInsertText?: boolean;
4469        readonly includeCompletionsWithClassMemberSnippets?: boolean;
4470        readonly includeCompletionsWithObjectLiteralMethodSnippets?: boolean;
4471        readonly useLabelDetailsInCompletionEntries?: boolean;
4472        readonly allowIncompleteCompletions?: boolean;
4473        readonly importModuleSpecifierPreference?: "shortest" | "project-relative" | "relative" | "non-relative";
4474        /** Determines whether we import `foo/index.ts` as "foo", "foo/index", or "foo/index.js" */
4475        readonly importModuleSpecifierEnding?: "auto" | "minimal" | "index" | "js";
4476        readonly allowTextChangesInNewFiles?: boolean;
4477        readonly providePrefixAndSuffixTextForRename?: boolean;
4478        readonly includePackageJsonAutoImports?: "auto" | "on" | "off";
4479        readonly provideRefactorNotApplicableReason?: boolean;
4480        readonly jsxAttributeCompletionStyle?: "auto" | "braces" | "none";
4481        readonly includeInlayParameterNameHints?: "none" | "literals" | "all";
4482        readonly includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean;
4483        readonly includeInlayFunctionParameterTypeHints?: boolean;
4484        readonly includeInlayVariableTypeHints?: boolean;
4485        readonly includeInlayVariableTypeHintsWhenTypeMatchesName?: boolean;
4486        readonly includeInlayPropertyDeclarationTypeHints?: boolean;
4487        readonly includeInlayFunctionLikeReturnTypeHints?: boolean;
4488        readonly includeInlayEnumMemberValueHints?: boolean;
4489        readonly allowRenameOfImportPath?: boolean;
4490        readonly autoImportFileExcludePatterns?: string[];
4491    }
4492    /** Represents a bigint literal value without requiring bigint support */
4493    export interface PseudoBigInt {
4494        negative: boolean;
4495        base10Value: string;
4496    }
4497    export {};
4498}
4499declare function setTimeout(handler: (...args: any[]) => void, timeout: number): any;
4500declare function clearTimeout(handle: any): void;
4501declare namespace ts {
4502    export enum FileWatcherEventKind {
4503        Created = 0,
4504        Changed = 1,
4505        Deleted = 2
4506    }
4507    export type FileWatcherCallback = (fileName: string, eventKind: FileWatcherEventKind, modifiedTime?: Date) => void;
4508    export type DirectoryWatcherCallback = (fileName: string) => void;
4509    export interface System {
4510        args: string[];
4511        newLine: string;
4512        useCaseSensitiveFileNames: boolean;
4513        write(s: string): void;
4514        writeOutputIsTTY?(): boolean;
4515        getWidthOfTerminal?(): number;
4516        readFile(path: string, encoding?: string): string | undefined;
4517        getFileSize?(path: string): number;
4518        writeFile(path: string, data: string, writeByteOrderMark?: boolean): void;
4519        /**
4520         * @pollingInterval - this parameter is used in polling-based watchers and ignored in watchers that
4521         * use native OS file watching
4522         */
4523        watchFile?(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
4524        watchDirectory?(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
4525        resolvePath(path: string): string;
4526        fileExists(path: string): boolean;
4527        directoryExists(path: string): boolean;
4528        createDirectory(path: string): void;
4529        getExecutingFilePath(): string;
4530        getCurrentDirectory(): string;
4531        getDirectories(path: string): string[];
4532        readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
4533        getModifiedTime?(path: string): Date | undefined;
4534        setModifiedTime?(path: string, time: Date): void;
4535        deleteFile?(path: string): void;
4536        /**
4537         * A good implementation is node.js' `crypto.createHash`. (https://nodejs.org/api/crypto.html#crypto_crypto_createhash_algorithm)
4538         */
4539        createHash?(data: string): string;
4540        /** This must be cryptographically secure. Only implement this method using `crypto.createHash("sha256")`. */
4541        createSHA256Hash?(data: string): string;
4542        getMemoryUsage?(): number;
4543        exit(exitCode?: number): void;
4544        realpath?(path: string): string;
4545        setTimeout?(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
4546        clearTimeout?(timeoutId: any): void;
4547        clearScreen?(): void;
4548        base64decode?(input: string): string;
4549        base64encode?(input: string): string;
4550    }
4551    export interface FileWatcher {
4552        close(): void;
4553    }
4554    export function getNodeMajorVersion(): number | undefined;
4555    export let sys: System;
4556    export {};
4557}
4558declare namespace ts {
4559    type ErrorCallback = (message: DiagnosticMessage, length: number) => void;
4560    interface Scanner {
4561        getStartPos(): number;
4562        getToken(): SyntaxKind;
4563        getTextPos(): number;
4564        getTokenPos(): number;
4565        getTokenText(): string;
4566        getTokenValue(): string;
4567        hasUnicodeEscape(): boolean;
4568        hasExtendedUnicodeEscape(): boolean;
4569        hasPrecedingLineBreak(): boolean;
4570        isIdentifier(): boolean;
4571        isReservedWord(): boolean;
4572        isUnterminated(): boolean;
4573        reScanGreaterToken(): SyntaxKind;
4574        reScanSlashToken(): SyntaxKind;
4575        reScanAsteriskEqualsToken(): SyntaxKind;
4576        reScanTemplateToken(isTaggedTemplate: boolean): SyntaxKind;
4577        reScanTemplateHeadOrNoSubstitutionTemplate(): SyntaxKind;
4578        scanJsxIdentifier(): SyntaxKind;
4579        scanJsxAttributeValue(): SyntaxKind;
4580        reScanJsxAttributeValue(): SyntaxKind;
4581        reScanJsxToken(allowMultilineJsxText?: boolean): JsxTokenSyntaxKind;
4582        reScanLessThanToken(): SyntaxKind;
4583        reScanHashToken(): SyntaxKind;
4584        reScanQuestionToken(): SyntaxKind;
4585        reScanInvalidIdentifier(): SyntaxKind;
4586        scanJsxToken(): JsxTokenSyntaxKind;
4587        scanJsDocToken(): JSDocSyntaxKind;
4588        scan(): SyntaxKind;
4589        getText(): string;
4590        setText(text: string | undefined, start?: number, length?: number): void;
4591        setOnError(onError: ErrorCallback | undefined): void;
4592        setScriptTarget(scriptTarget: ScriptTarget): void;
4593        setLanguageVariant(variant: LanguageVariant): void;
4594        setTextPos(textPos: number): void;
4595        lookAhead<T>(callback: () => T): T;
4596        scanRange<T>(start: number, length: number, callback: () => T): T;
4597        tryScan<T>(callback: () => T): T;
4598        setEtsContext(isEtsContext: boolean): void;
4599    }
4600    function tokenToString(t: SyntaxKind): string | undefined;
4601    function getPositionOfLineAndCharacter(sourceFile: SourceFileLike, line: number, character: number): number;
4602    function getLineAndCharacterOfPosition(sourceFile: SourceFileLike, position: number): LineAndCharacter;
4603    function isWhiteSpaceLike(ch: number): boolean;
4604    /** Does not include line breaks. For that, see isWhiteSpaceLike. */
4605    function isWhiteSpaceSingleLine(ch: number): boolean;
4606    function isLineBreak(ch: number): boolean;
4607    function couldStartTrivia(text: string, pos: number): boolean;
4608    function forEachLeadingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined;
4609    function forEachLeadingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined;
4610    function forEachTrailingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined;
4611    function forEachTrailingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined;
4612    function reduceEachLeadingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T, memo: U) => U, state: T, initial: U): U | undefined;
4613    function reduceEachTrailingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T, memo: U) => U, state: T, initial: U): U | undefined;
4614    function getLeadingCommentRanges(text: string, pos: number): CommentRange[] | undefined;
4615    function getTrailingCommentRanges(text: string, pos: number): CommentRange[] | undefined;
4616    /** Optionally, get the shebang */
4617    function getShebang(text: string): string | undefined;
4618    function isIdentifierStart(ch: number, languageVersion: ScriptTarget | undefined): boolean;
4619    function isIdentifierPart(ch: number, languageVersion: ScriptTarget | undefined, identifierVariant?: LanguageVariant): boolean;
4620    function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, languageVariant?: LanguageVariant, textInitial?: string, onError?: ErrorCallback, start?: number, length?: number): Scanner;
4621}
4622declare namespace ts {
4623    function isExternalModuleNameRelative(moduleName: string): boolean;
4624    function sortAndDeduplicateDiagnostics<T extends Diagnostic>(diagnostics: readonly T[]): SortedReadonlyArray<T>;
4625    function getDefaultLibFileName(options: CompilerOptions): string;
4626    function textSpanEnd(span: TextSpan): number;
4627    function textSpanIsEmpty(span: TextSpan): boolean;
4628    function textSpanContainsPosition(span: TextSpan, position: number): boolean;
4629    function textSpanContainsTextSpan(span: TextSpan, other: TextSpan): boolean;
4630    function textSpanOverlapsWith(span: TextSpan, other: TextSpan): boolean;
4631    function textSpanOverlap(span1: TextSpan, span2: TextSpan): TextSpan | undefined;
4632    function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan): boolean;
4633    function textSpanIntersectsWith(span: TextSpan, start: number, length: number): boolean;
4634    function decodedTextSpanIntersectsWith(start1: number, length1: number, start2: number, length2: number): boolean;
4635    function textSpanIntersectsWithPosition(span: TextSpan, position: number): boolean;
4636    function textSpanIntersection(span1: TextSpan, span2: TextSpan): TextSpan | undefined;
4637    function createTextSpan(start: number, length: number): TextSpan;
4638    function createTextSpanFromBounds(start: number, end: number): TextSpan;
4639    function textChangeRangeNewSpan(range: TextChangeRange): TextSpan;
4640    function textChangeRangeIsUnchanged(range: TextChangeRange): boolean;
4641    function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange;
4642    let unchangedTextChangeRange: TextChangeRange;
4643    /**
4644     * Called to merge all the changes that occurred across several versions of a script snapshot
4645     * into a single change.  i.e. if a user keeps making successive edits to a script we will
4646     * have a text change from V1 to V2, V2 to V3, ..., Vn.
4647     *
4648     * This function will then merge those changes into a single change range valid between V1 and
4649     * Vn.
4650     */
4651    function collapseTextChangeRangesAcrossMultipleVersions(changes: readonly TextChangeRange[]): TextChangeRange;
4652    function getTypeParameterOwner(d: Declaration): Declaration | undefined;
4653    type ParameterPropertyDeclaration = ParameterDeclaration & {
4654        parent: ConstructorDeclaration;
4655        name: Identifier;
4656    };
4657    function isParameterPropertyDeclaration(node: Node, parent: Node): node is ParameterPropertyDeclaration;
4658    function isEmptyBindingPattern(node: BindingName): node is BindingPattern;
4659    function isEmptyBindingElement(node: BindingElement): boolean;
4660    function walkUpBindingElementsAndPatterns(binding: BindingElement): VariableDeclaration | ParameterDeclaration;
4661    function getCombinedModifierFlags(node: Declaration): ModifierFlags;
4662    function getCombinedNodeFlags(node: Node): NodeFlags;
4663    /**
4664     * Checks to see if the locale is in the appropriate format,
4665     * and if it is, attempts to set the appropriate language.
4666     */
4667    function validateLocaleAndSetLanguage(locale: string, sys: {
4668        getExecutingFilePath(): string;
4669        resolvePath(path: string): string;
4670        fileExists(fileName: string): boolean;
4671        readFile(fileName: string): string | undefined;
4672    }, errors?: Push<Diagnostic>): void;
4673    function getOriginalNode(node: Node): Node;
4674    function getOriginalNode<T extends Node>(node: Node, nodeTest: (node: Node) => node is T): T;
4675    function getOriginalNode(node: Node | undefined): Node | undefined;
4676    function getOriginalNode<T extends Node>(node: Node | undefined, nodeTest: (node: Node | undefined) => node is T): T | undefined;
4677    /**
4678     * Iterates through the parent chain of a node and performs the callback on each parent until the callback
4679     * returns a truthy value, then returns that value.
4680     * If no such value is found, it applies the callback until the parent pointer is undefined or the callback returns "quit"
4681     * At that point findAncestor returns undefined.
4682     */
4683    function findAncestor<T extends Node>(node: Node | undefined, callback: (element: Node) => element is T): T | undefined;
4684    function findAncestor(node: Node | undefined, callback: (element: Node) => boolean | "quit"): Node | undefined;
4685    /**
4686     * Gets a value indicating whether a node originated in the parse tree.
4687     *
4688     * @param node The node to test.
4689     */
4690    function isParseTreeNode(node: Node): boolean;
4691    /**
4692     * Gets the original parse tree node for a node.
4693     *
4694     * @param node The original node.
4695     * @returns The original parse tree node if found; otherwise, undefined.
4696     */
4697    function getParseTreeNode(node: Node | undefined): Node | undefined;
4698    /**
4699     * Gets the original parse tree node for a node.
4700     *
4701     * @param node The original node.
4702     * @param nodeTest A callback used to ensure the correct type of parse tree node is returned.
4703     * @returns The original parse tree node if found; otherwise, undefined.
4704     */
4705    function getParseTreeNode<T extends Node>(node: T | undefined, nodeTest?: (node: Node) => node is T): T | undefined;
4706    /** Add an extra underscore to identifiers that start with two underscores to avoid issues with magic names like '__proto__' */
4707    function escapeLeadingUnderscores(identifier: string): __String;
4708    /**
4709     * Remove extra underscore from escaped identifier text content.
4710     *
4711     * @param identifier The escaped identifier text.
4712     * @returns The unescaped identifier text.
4713     */
4714    function unescapeLeadingUnderscores(identifier: __String): string;
4715    function idText(identifierOrPrivateName: Identifier | PrivateIdentifier): string;
4716    function symbolName(symbol: Symbol): string;
4717    function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined;
4718    function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined;
4719    function getDecorators(node: HasDecorators): readonly Decorator[] | undefined;
4720    function getModifiers(node: HasModifiers): readonly Modifier[] | undefined;
4721    function getAllDecorators(node: Node | undefined): readonly Decorator[];
4722    function getIllegalDecorators(node: HasIllegalDecorators): readonly Decorator[] | undefined;
4723    /**
4724     * Gets the JSDoc parameter tags for the node if present.
4725     *
4726     * @remarks Returns any JSDoc param tag whose name matches the provided
4727     * parameter, whether a param tag on a containing function
4728     * expression, or a param tag on a variable declaration whose
4729     * initializer is the containing function. The tags closest to the
4730     * node are returned first, so in the previous example, the param
4731     * tag on the containing function expression would be first.
4732     *
4733     * For binding patterns, parameter tags are matched by position.
4734     */
4735    function getJSDocParameterTags(param: ParameterDeclaration): readonly JSDocParameterTag[];
4736    /**
4737     * Gets the JSDoc type parameter tags for the node if present.
4738     *
4739     * @remarks Returns any JSDoc template tag whose names match the provided
4740     * parameter, whether a template tag on a containing function
4741     * expression, or a template tag on a variable declaration whose
4742     * initializer is the containing function. The tags closest to the
4743     * node are returned first, so in the previous example, the template
4744     * tag on the containing function expression would be first.
4745     */
4746    function getJSDocTypeParameterTags(param: TypeParameterDeclaration): readonly JSDocTemplateTag[];
4747    /**
4748     * Return true if the node has JSDoc parameter tags.
4749     *
4750     * @remarks Includes parameter tags that are not directly on the node,
4751     * for example on a variable declaration whose initializer is a function expression.
4752     */
4753    function hasJSDocParameterTags(node: FunctionLikeDeclaration | SignatureDeclaration): boolean;
4754    /** Gets the JSDoc augments tag for the node if present */
4755    function getJSDocAugmentsTag(node: Node): JSDocAugmentsTag | undefined;
4756    /** Gets the JSDoc implements tags for the node if present */
4757    function getJSDocImplementsTags(node: Node): readonly JSDocImplementsTag[];
4758    /** Gets the JSDoc class tag for the node if present */
4759    function getJSDocClassTag(node: Node): JSDocClassTag | undefined;
4760    /** Gets the JSDoc public tag for the node if present */
4761    function getJSDocPublicTag(node: Node): JSDocPublicTag | undefined;
4762    /** Gets the JSDoc private tag for the node if present */
4763    function getJSDocPrivateTag(node: Node): JSDocPrivateTag | undefined;
4764    /** Gets the JSDoc protected tag for the node if present */
4765    function getJSDocProtectedTag(node: Node): JSDocProtectedTag | undefined;
4766    /** Gets the JSDoc protected tag for the node if present */
4767    function getJSDocReadonlyTag(node: Node): JSDocReadonlyTag | undefined;
4768    function getJSDocOverrideTagNoCache(node: Node): JSDocOverrideTag | undefined;
4769    /** Gets the JSDoc deprecated tag for the node if present */
4770    function getJSDocDeprecatedTag(node: Node): JSDocDeprecatedTag | undefined;
4771    /** Gets the JSDoc enum tag for the node if present */
4772    function getJSDocEnumTag(node: Node): JSDocEnumTag | undefined;
4773    /** Gets the JSDoc this tag for the node if present */
4774    function getJSDocThisTag(node: Node): JSDocThisTag | undefined;
4775    /** Gets the JSDoc return tag for the node if present */
4776    function getJSDocReturnTag(node: Node): JSDocReturnTag | undefined;
4777    /** Gets the JSDoc template tag for the node if present */
4778    function getJSDocTemplateTag(node: Node): JSDocTemplateTag | undefined;
4779    /** Gets the JSDoc type tag for the node if present and valid */
4780    function getJSDocTypeTag(node: Node): JSDocTypeTag | undefined;
4781    /**
4782     * Gets the type node for the node if provided via JSDoc.
4783     *
4784     * @remarks The search includes any JSDoc param tag that relates
4785     * to the provided parameter, for example a type tag on the
4786     * parameter itself, or a param tag on a containing function
4787     * expression, or a param tag on a variable declaration whose
4788     * initializer is the containing function. The tags closest to the
4789     * node are examined first, so in the previous example, the type
4790     * tag directly on the node would be returned.
4791     */
4792    function getJSDocType(node: Node): TypeNode | undefined;
4793    /**
4794     * Gets the return type node for the node if provided via JSDoc return tag or type tag.
4795     *
4796     * @remarks `getJSDocReturnTag` just gets the whole JSDoc tag. This function
4797     * gets the type from inside the braces, after the fat arrow, etc.
4798     */
4799    function getJSDocReturnType(node: Node): TypeNode | undefined;
4800    /** Get all JSDoc tags related to a node, including those on parent nodes. */
4801    function getJSDocTags(node: Node): readonly JSDocTag[];
4802    /** Gets all JSDoc tags that match a specified predicate */
4803    function getAllJSDocTags<T extends JSDocTag>(node: Node, predicate: (tag: JSDocTag) => tag is T): readonly T[];
4804    /** Gets all JSDoc tags of a specified kind */
4805    function getAllJSDocTagsOfKind(node: Node, kind: SyntaxKind): readonly JSDocTag[];
4806    /** Gets the text of a jsdoc comment, flattening links to their text. */
4807    function getTextOfJSDocComment(comment?: string | NodeArray<JSDocComment>): string | undefined;
4808    /**
4809     * Gets the effective type parameters. If the node was parsed in a
4810     * JavaScript file, gets the type parameters from the `@template` tag from JSDoc.
4811     *
4812     * This does *not* return type parameters from a jsdoc reference to a generic type, eg
4813     *
4814     * type Id = <T>(x: T) => T
4815     * /** @type {Id} /
4816     * function id(x) { return x }
4817     */
4818    function getEffectiveTypeParameterDeclarations(node: DeclarationWithTypeParameters): readonly TypeParameterDeclaration[];
4819    function getEffectiveConstraintOfTypeParameter(node: TypeParameterDeclaration): TypeNode | undefined;
4820    function isMemberName(node: Node): node is MemberName;
4821    function isPropertyAccessChain(node: Node): node is PropertyAccessChain;
4822    function isElementAccessChain(node: Node): node is ElementAccessChain;
4823    function isCallChain(node: Node): node is CallChain;
4824    function isOptionalChain(node: Node): node is PropertyAccessChain | ElementAccessChain | CallChain | NonNullChain;
4825    function isNullishCoalesce(node: Node): boolean;
4826    function isConstTypeReference(node: Node): boolean;
4827    function skipPartiallyEmittedExpressions(node: Expression): Expression;
4828    function skipPartiallyEmittedExpressions(node: Node): Node;
4829    function isNonNullChain(node: Node): node is NonNullChain;
4830    function isBreakOrContinueStatement(node: Node): node is BreakOrContinueStatement;
4831    function isNamedExportBindings(node: Node): node is NamedExportBindings;
4832    function isUnparsedTextLike(node: Node): node is UnparsedTextLike;
4833    function isUnparsedNode(node: Node): node is UnparsedNode;
4834    function isJSDocPropertyLikeTag(node: Node): node is JSDocPropertyLikeTag;
4835    /**
4836     * True if kind is of some token syntax kind.
4837     * For example, this is true for an IfKeyword but not for an IfStatement.
4838     * Literals are considered tokens, except TemplateLiteral, but does include TemplateHead/Middle/Tail.
4839     */
4840    function isTokenKind(kind: SyntaxKind): boolean;
4841    /**
4842     * True if node is of some token syntax kind.
4843     * For example, this is true for an IfKeyword but not for an IfStatement.
4844     * Literals are considered tokens, except TemplateLiteral, but does include TemplateHead/Middle/Tail.
4845     */
4846    function isToken(n: Node): boolean;
4847    function isLiteralExpression(node: Node): node is LiteralExpression;
4848    function isTemplateLiteralToken(node: Node): node is TemplateLiteralToken;
4849    function isTemplateMiddleOrTemplateTail(node: Node): node is TemplateMiddle | TemplateTail;
4850    function isImportOrExportSpecifier(node: Node): node is ImportSpecifier | ExportSpecifier;
4851    function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration;
4852    function isAssertionKey(node: Node): node is AssertionKey;
4853    function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken;
4854    function isModifier(node: Node): node is Modifier;
4855    function isEntityName(node: Node): node is EntityName;
4856    function isPropertyName(node: Node): node is PropertyName;
4857    function isBindingName(node: Node): node is BindingName;
4858    function isFunctionLike(node: Node | undefined): node is SignatureDeclaration;
4859    function isClassElement(node: Node): node is ClassElement;
4860    function isClassLike(node: Node): node is ClassLikeDeclaration;
4861    function isStruct(node: Node): node is StructDeclaration;
4862    function isAccessor(node: Node): node is AccessorDeclaration;
4863    function isAutoAccessorPropertyDeclaration(node: Node): node is AutoAccessorPropertyDeclaration;
4864    function isModifierLike(node: Node): node is ModifierLike;
4865    function isTypeElement(node: Node): node is TypeElement;
4866    function isClassOrTypeElement(node: Node): node is ClassElement | TypeElement;
4867    function isObjectLiteralElementLike(node: Node): node is ObjectLiteralElementLike;
4868    /**
4869     * Node test that determines whether a node is a valid type node.
4870     * This differs from the `isPartOfTypeNode` function which determines whether a node is *part*
4871     * of a TypeNode.
4872     */
4873    function isTypeNode(node: Node): node is TypeNode;
4874    function isFunctionOrConstructorTypeNode(node: Node): node is FunctionTypeNode | ConstructorTypeNode;
4875    function isPropertyAccessOrQualifiedName(node: Node): node is PropertyAccessExpression | QualifiedName;
4876    function isCallLikeExpression(node: Node): node is CallLikeExpression;
4877    function isCallOrNewExpression(node: Node): node is CallExpression | NewExpression;
4878    function isTemplateLiteral(node: Node): node is TemplateLiteral;
4879    function isAssertionExpression(node: Node): node is AssertionExpression;
4880    function isIterationStatement(node: Node, lookInLabeledStatements: false): node is IterationStatement;
4881    function isIterationStatement(node: Node, lookInLabeledStatements: boolean): node is IterationStatement | LabeledStatement;
4882    function isJsxOpeningLikeElement(node: Node): node is JsxOpeningLikeElement;
4883    function isCaseOrDefaultClause(node: Node): node is CaseOrDefaultClause;
4884    /** True if node is of a kind that may contain comment text. */
4885    function isJSDocCommentContainingNode(node: Node): boolean;
4886    function isSetAccessor(node: Node): node is SetAccessorDeclaration;
4887    function isGetAccessor(node: Node): node is GetAccessorDeclaration;
4888    /** True if has initializer node attached to it. */
4889    function hasOnlyExpressionInitializer(node: Node): node is HasExpressionInitializer;
4890    function isObjectLiteralElement(node: Node): node is ObjectLiteralElement;
4891    function isStringLiteralLike(node: Node): node is StringLiteralLike;
4892    function isJSDocLinkLike(node: Node): node is JSDocLink | JSDocLinkCode | JSDocLinkPlain;
4893    function hasRestParameter(s: SignatureDeclaration | JSDocSignature): boolean;
4894    function isRestParameter(node: ParameterDeclaration | JSDocParameterTag): boolean;
4895}
4896declare namespace ts {
4897    function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode: SourceFile): CommentRange[] | undefined;
4898    function createTextWriter(newLine: string): EmitTextWriter;
4899    /**
4900     * Bypasses immutability and directly sets the `parent` property of each `Node` recursively.
4901     * @param rootNode The root node from which to start the recursion.
4902     * @param incremental When `true`, only recursively descends through nodes whose `parent` pointers are incorrect.
4903     * This allows us to quickly bail out of setting `parent` for subtrees during incremental parsing.
4904     */
4905    function setParentRecursive<T extends Node>(rootNode: T, incremental: boolean): T;
4906    function setParentRecursive<T extends Node>(rootNode: T | undefined, incremental: boolean): T | undefined;
4907}
4908declare namespace ts {
4909    const factory: NodeFactory;
4910    function createUnparsedSourceFile(text: string): UnparsedSource;
4911    function createUnparsedSourceFile(inputFile: InputFiles, type: "js" | "dts", stripInternal?: boolean): UnparsedSource;
4912    function createUnparsedSourceFile(text: string, mapPath: string | undefined, map: string | undefined): UnparsedSource;
4913    function createInputFiles(javascriptText: string, declarationText: string): InputFiles;
4914    function createInputFiles(readFileText: (path: string) => string | undefined, javascriptPath: string, javascriptMapPath: string | undefined, declarationPath: string, declarationMapPath: string | undefined, buildInfoPath: string | undefined): InputFiles;
4915    function createInputFiles(javascriptText: string, declarationText: string, javascriptMapPath: string | undefined, javascriptMapText: string | undefined, declarationMapPath: string | undefined, declarationMapText: string | undefined): InputFiles;
4916    /**
4917     * Create an external source map source file reference
4918     */
4919    function createSourceMapSource(fileName: string, text: string, skipTrivia?: (pos: number) => number): SourceMapSource;
4920    function setOriginalNode<T extends Node>(node: T, original: Node | undefined): T;
4921}
4922declare namespace ts {
4923    /**
4924     * Clears any `EmitNode` entries from parse-tree nodes.
4925     * @param sourceFile A source file.
4926     */
4927    function disposeEmitNodes(sourceFile: SourceFile | undefined): void;
4928    /**
4929     * Sets flags that control emit behavior of a node.
4930     */
4931    function setEmitFlags<T extends Node>(node: T, emitFlags: EmitFlags): T;
4932    /**
4933     * Gets a custom text range to use when emitting source maps.
4934     */
4935    function getSourceMapRange(node: Node): SourceMapRange;
4936    /**
4937     * Sets a custom text range to use when emitting source maps.
4938     */
4939    function setSourceMapRange<T extends Node>(node: T, range: SourceMapRange | undefined): T;
4940    /**
4941     * Gets the TextRange to use for source maps for a token of a node.
4942     */
4943    function getTokenSourceMapRange(node: Node, token: SyntaxKind): SourceMapRange | undefined;
4944    /**
4945     * Sets the TextRange to use for source maps for a token of a node.
4946     */
4947    function setTokenSourceMapRange<T extends Node>(node: T, token: SyntaxKind, range: SourceMapRange | undefined): T;
4948    /**
4949     * Gets a custom text range to use when emitting comments.
4950     */
4951    function getCommentRange(node: Node): TextRange;
4952    /**
4953     * Sets a custom text range to use when emitting comments.
4954     */
4955    function setCommentRange<T extends Node>(node: T, range: TextRange): T;
4956    function getSyntheticLeadingComments(node: Node): SynthesizedComment[] | undefined;
4957    function setSyntheticLeadingComments<T extends Node>(node: T, comments: SynthesizedComment[] | undefined): T;
4958    function addSyntheticLeadingComment<T extends Node>(node: T, kind: SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia, text: string, hasTrailingNewLine?: boolean): T;
4959    function getSyntheticTrailingComments(node: Node): SynthesizedComment[] | undefined;
4960    function setSyntheticTrailingComments<T extends Node>(node: T, comments: SynthesizedComment[] | undefined): T;
4961    function addSyntheticTrailingComment<T extends Node>(node: T, kind: SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia, text: string, hasTrailingNewLine?: boolean): T;
4962    function moveSyntheticComments<T extends Node>(node: T, original: Node): T;
4963    /**
4964     * Gets the constant value to emit for an expression representing an enum.
4965     */
4966    function getConstantValue(node: AccessExpression): string | number | undefined;
4967    /**
4968     * Sets the constant value to emit for an expression.
4969     */
4970    function setConstantValue(node: AccessExpression, value: string | number): AccessExpression;
4971    /**
4972     * Adds an EmitHelper to a node.
4973     */
4974    function addEmitHelper<T extends Node>(node: T, helper: EmitHelper): T;
4975    /**
4976     * Add EmitHelpers to a node.
4977     */
4978    function addEmitHelpers<T extends Node>(node: T, helpers: EmitHelper[] | undefined): T;
4979    /**
4980     * Removes an EmitHelper from a node.
4981     */
4982    function removeEmitHelper(node: Node, helper: EmitHelper): boolean;
4983    /**
4984     * Gets the EmitHelpers of a node.
4985     */
4986    function getEmitHelpers(node: Node): EmitHelper[] | undefined;
4987    /**
4988     * Moves matching emit helpers from a source node to a target node.
4989     */
4990    function moveEmitHelpers(source: Node, target: Node, predicate: (helper: EmitHelper) => boolean): void;
4991}
4992declare namespace ts {
4993    function isNumericLiteral(node: Node): node is NumericLiteral;
4994    function isBigIntLiteral(node: Node): node is BigIntLiteral;
4995    function isStringLiteral(node: Node): node is StringLiteral;
4996    function isJsxText(node: Node): node is JsxText;
4997    function isRegularExpressionLiteral(node: Node): node is RegularExpressionLiteral;
4998    function isNoSubstitutionTemplateLiteral(node: Node): node is NoSubstitutionTemplateLiteral;
4999    function isTemplateHead(node: Node): node is TemplateHead;
5000    function isTemplateMiddle(node: Node): node is TemplateMiddle;
5001    function isTemplateTail(node: Node): node is TemplateTail;
5002    function isDotDotDotToken(node: Node): node is DotDotDotToken;
5003    function isPlusToken(node: Node): node is PlusToken;
5004    function isMinusToken(node: Node): node is MinusToken;
5005    function isAsteriskToken(node: Node): node is AsteriskToken;
5006    function isIdentifier(node: Node): node is Identifier;
5007    function isPrivateIdentifier(node: Node): node is PrivateIdentifier;
5008    function isQualifiedName(node: Node): node is QualifiedName;
5009    function isComputedPropertyName(node: Node): node is ComputedPropertyName;
5010    function isTypeParameterDeclaration(node: Node): node is TypeParameterDeclaration;
5011    function isParameter(node: Node): node is ParameterDeclaration;
5012    function isDecorator(node: Node): node is Decorator;
5013    function isPropertySignature(node: Node): node is PropertySignature;
5014    function isPropertyDeclaration(node: Node): node is PropertyDeclaration;
5015    function isMethodSignature(node: Node): node is MethodSignature;
5016    function isMethodDeclaration(node: Node): node is MethodDeclaration;
5017    function isClassStaticBlockDeclaration(node: Node): node is ClassStaticBlockDeclaration;
5018    function isConstructorDeclaration(node: Node): node is ConstructorDeclaration;
5019    function isGetAccessorDeclaration(node: Node): node is GetAccessorDeclaration;
5020    function isSetAccessorDeclaration(node: Node): node is SetAccessorDeclaration;
5021    function isCallSignatureDeclaration(node: Node): node is CallSignatureDeclaration;
5022    function isConstructSignatureDeclaration(node: Node): node is ConstructSignatureDeclaration;
5023    function isIndexSignatureDeclaration(node: Node): node is IndexSignatureDeclaration;
5024    function isTypePredicateNode(node: Node): node is TypePredicateNode;
5025    function isTypeReferenceNode(node: Node): node is TypeReferenceNode;
5026    function isFunctionTypeNode(node: Node): node is FunctionTypeNode;
5027    function isConstructorTypeNode(node: Node): node is ConstructorTypeNode;
5028    function isTypeQueryNode(node: Node): node is TypeQueryNode;
5029    function isTypeLiteralNode(node: Node): node is TypeLiteralNode;
5030    function isArrayTypeNode(node: Node): node is ArrayTypeNode;
5031    function isTupleTypeNode(node: Node): node is TupleTypeNode;
5032    function isNamedTupleMember(node: Node): node is NamedTupleMember;
5033    function isOptionalTypeNode(node: Node): node is OptionalTypeNode;
5034    function isRestTypeNode(node: Node): node is RestTypeNode;
5035    function isUnionTypeNode(node: Node): node is UnionTypeNode;
5036    function isIntersectionTypeNode(node: Node): node is IntersectionTypeNode;
5037    function isConditionalTypeNode(node: Node): node is ConditionalTypeNode;
5038    function isInferTypeNode(node: Node): node is InferTypeNode;
5039    function isParenthesizedTypeNode(node: Node): node is ParenthesizedTypeNode;
5040    function isThisTypeNode(node: Node): node is ThisTypeNode;
5041    function isTypeOperatorNode(node: Node): node is TypeOperatorNode;
5042    function isIndexedAccessTypeNode(node: Node): node is IndexedAccessTypeNode;
5043    function isMappedTypeNode(node: Node): node is MappedTypeNode;
5044    function isLiteralTypeNode(node: Node): node is LiteralTypeNode;
5045    function isImportTypeNode(node: Node): node is ImportTypeNode;
5046    function isTemplateLiteralTypeSpan(node: Node): node is TemplateLiteralTypeSpan;
5047    function isTemplateLiteralTypeNode(node: Node): node is TemplateLiteralTypeNode;
5048    function isObjectBindingPattern(node: Node): node is ObjectBindingPattern;
5049    function isArrayBindingPattern(node: Node): node is ArrayBindingPattern;
5050    function isBindingElement(node: Node): node is BindingElement;
5051    function isArrayLiteralExpression(node: Node): node is ArrayLiteralExpression;
5052    function isObjectLiteralExpression(node: Node): node is ObjectLiteralExpression;
5053    function isPropertyAccessExpression(node: Node): node is PropertyAccessExpression;
5054    function isElementAccessExpression(node: Node): node is ElementAccessExpression;
5055    function isCallExpression(node: Node): node is CallExpression;
5056    function isNewExpression(node: Node): node is NewExpression;
5057    function isTaggedTemplateExpression(node: Node): node is TaggedTemplateExpression;
5058    function isTypeAssertionExpression(node: Node): node is TypeAssertion;
5059    function isParenthesizedExpression(node: Node): node is ParenthesizedExpression;
5060    function isFunctionExpression(node: Node): node is FunctionExpression;
5061    function isEtsComponentExpression(node: Node): node is EtsComponentExpression;
5062    function isArrowFunction(node: Node): node is ArrowFunction;
5063    function isDeleteExpression(node: Node): node is DeleteExpression;
5064    function isTypeOfExpression(node: Node): node is TypeOfExpression;
5065    function isVoidExpression(node: Node): node is VoidExpression;
5066    function isAwaitExpression(node: Node): node is AwaitExpression;
5067    function isPrefixUnaryExpression(node: Node): node is PrefixUnaryExpression;
5068    function isPostfixUnaryExpression(node: Node): node is PostfixUnaryExpression;
5069    function isBinaryExpression(node: Node): node is BinaryExpression;
5070    function isConditionalExpression(node: Node): node is ConditionalExpression;
5071    function isTemplateExpression(node: Node): node is TemplateExpression;
5072    function isYieldExpression(node: Node): node is YieldExpression;
5073    function isSpreadElement(node: Node): node is SpreadElement;
5074    function isClassExpression(node: Node): node is ClassExpression;
5075    function isOmittedExpression(node: Node): node is OmittedExpression;
5076    function isExpressionWithTypeArguments(node: Node): node is ExpressionWithTypeArguments;
5077    function isAsExpression(node: Node): node is AsExpression;
5078    function isSatisfiesExpression(node: Node): node is SatisfiesExpression;
5079    function isNonNullExpression(node: Node): node is NonNullExpression;
5080    function isMetaProperty(node: Node): node is MetaProperty;
5081    function isSyntheticExpression(node: Node): node is SyntheticExpression;
5082    function isPartiallyEmittedExpression(node: Node): node is PartiallyEmittedExpression;
5083    function isCommaListExpression(node: Node): node is CommaListExpression;
5084    function isTemplateSpan(node: Node): node is TemplateSpan;
5085    function isSemicolonClassElement(node: Node): node is SemicolonClassElement;
5086    function isBlock(node: Node): node is Block;
5087    function isVariableStatement(node: Node): node is VariableStatement;
5088    function isEmptyStatement(node: Node): node is EmptyStatement;
5089    function isExpressionStatement(node: Node): node is ExpressionStatement;
5090    function isIfStatement(node: Node): node is IfStatement;
5091    function isDoStatement(node: Node): node is DoStatement;
5092    function isWhileStatement(node: Node): node is WhileStatement;
5093    function isForStatement(node: Node): node is ForStatement;
5094    function isForInStatement(node: Node): node is ForInStatement;
5095    function isForOfStatement(node: Node): node is ForOfStatement;
5096    function isContinueStatement(node: Node): node is ContinueStatement;
5097    function isBreakStatement(node: Node): node is BreakStatement;
5098    function isReturnStatement(node: Node): node is ReturnStatement;
5099    function isWithStatement(node: Node): node is WithStatement;
5100    function isSwitchStatement(node: Node): node is SwitchStatement;
5101    function isLabeledStatement(node: Node): node is LabeledStatement;
5102    function isThrowStatement(node: Node): node is ThrowStatement;
5103    function isTryStatement(node: Node): node is TryStatement;
5104    function isDebuggerStatement(node: Node): node is DebuggerStatement;
5105    function isVariableDeclaration(node: Node): node is VariableDeclaration;
5106    function isVariableDeclarationList(node: Node): node is VariableDeclarationList;
5107    function isFunctionDeclaration(node: Node): node is FunctionDeclaration;
5108    function isClassDeclaration(node: Node): node is ClassDeclaration;
5109    function isStructDeclaration(node: Node): node is StructDeclaration;
5110    function isInterfaceDeclaration(node: Node): node is InterfaceDeclaration;
5111    function isTypeAliasDeclaration(node: Node): node is TypeAliasDeclaration;
5112    function isEnumDeclaration(node: Node): node is EnumDeclaration;
5113    function isModuleDeclaration(node: Node): node is ModuleDeclaration;
5114    function isModuleBlock(node: Node): node is ModuleBlock;
5115    function isCaseBlock(node: Node): node is CaseBlock;
5116    function isNamespaceExportDeclaration(node: Node): node is NamespaceExportDeclaration;
5117    function isImportEqualsDeclaration(node: Node): node is ImportEqualsDeclaration;
5118    function isImportDeclaration(node: Node): node is ImportDeclaration;
5119    function isImportClause(node: Node): node is ImportClause;
5120    function isImportTypeAssertionContainer(node: Node): node is ImportTypeAssertionContainer;
5121    function isAssertClause(node: Node): node is AssertClause;
5122    function isAssertEntry(node: Node): node is AssertEntry;
5123    function isNamespaceImport(node: Node): node is NamespaceImport;
5124    function isNamespaceExport(node: Node): node is NamespaceExport;
5125    function isNamedImports(node: Node): node is NamedImports;
5126    function isImportSpecifier(node: Node): node is ImportSpecifier;
5127    function isExportAssignment(node: Node): node is ExportAssignment;
5128    function isExportDeclaration(node: Node): node is ExportDeclaration;
5129    function isNamedExports(node: Node): node is NamedExports;
5130    function isExportSpecifier(node: Node): node is ExportSpecifier;
5131    function isMissingDeclaration(node: Node): node is MissingDeclaration;
5132    function isNotEmittedStatement(node: Node): node is NotEmittedStatement;
5133    function isExternalModuleReference(node: Node): node is ExternalModuleReference;
5134    function isJsxElement(node: Node): node is JsxElement;
5135    function isJsxSelfClosingElement(node: Node): node is JsxSelfClosingElement;
5136    function isJsxOpeningElement(node: Node): node is JsxOpeningElement;
5137    function isJsxClosingElement(node: Node): node is JsxClosingElement;
5138    function isJsxFragment(node: Node): node is JsxFragment;
5139    function isJsxOpeningFragment(node: Node): node is JsxOpeningFragment;
5140    function isJsxClosingFragment(node: Node): node is JsxClosingFragment;
5141    function isJsxAttribute(node: Node): node is JsxAttribute;
5142    function isJsxAttributes(node: Node): node is JsxAttributes;
5143    function isJsxSpreadAttribute(node: Node): node is JsxSpreadAttribute;
5144    function isJsxExpression(node: Node): node is JsxExpression;
5145    function isCaseClause(node: Node): node is CaseClause;
5146    function isDefaultClause(node: Node): node is DefaultClause;
5147    function isHeritageClause(node: Node): node is HeritageClause;
5148    function isCatchClause(node: Node): node is CatchClause;
5149    function isPropertyAssignment(node: Node): node is PropertyAssignment;
5150    function isShorthandPropertyAssignment(node: Node): node is ShorthandPropertyAssignment;
5151    function isSpreadAssignment(node: Node): node is SpreadAssignment;
5152    function isEnumMember(node: Node): node is EnumMember;
5153    function isUnparsedPrepend(node: Node): node is UnparsedPrepend;
5154    function isSourceFile(node: Node): node is SourceFile;
5155    function isBundle(node: Node): node is Bundle;
5156    function isUnparsedSource(node: Node): node is UnparsedSource;
5157    function isJSDocTypeExpression(node: Node): node is JSDocTypeExpression;
5158    function isJSDocNameReference(node: Node): node is JSDocNameReference;
5159    function isJSDocMemberName(node: Node): node is JSDocMemberName;
5160    function isJSDocLink(node: Node): node is JSDocLink;
5161    function isJSDocLinkCode(node: Node): node is JSDocLinkCode;
5162    function isJSDocLinkPlain(node: Node): node is JSDocLinkPlain;
5163    function isJSDocAllType(node: Node): node is JSDocAllType;
5164    function isJSDocUnknownType(node: Node): node is JSDocUnknownType;
5165    function isJSDocNullableType(node: Node): node is JSDocNullableType;
5166    function isJSDocNonNullableType(node: Node): node is JSDocNonNullableType;
5167    function isJSDocOptionalType(node: Node): node is JSDocOptionalType;
5168    function isJSDocFunctionType(node: Node): node is JSDocFunctionType;
5169    function isJSDocVariadicType(node: Node): node is JSDocVariadicType;
5170    function isJSDocNamepathType(node: Node): node is JSDocNamepathType;
5171    function isJSDoc(node: Node): node is JSDoc;
5172    function isJSDocTypeLiteral(node: Node): node is JSDocTypeLiteral;
5173    function isJSDocSignature(node: Node): node is JSDocSignature;
5174    function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag;
5175    function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag;
5176    function isJSDocClassTag(node: Node): node is JSDocClassTag;
5177    function isJSDocCallbackTag(node: Node): node is JSDocCallbackTag;
5178    function isJSDocPublicTag(node: Node): node is JSDocPublicTag;
5179    function isJSDocPrivateTag(node: Node): node is JSDocPrivateTag;
5180    function isJSDocProtectedTag(node: Node): node is JSDocProtectedTag;
5181    function isJSDocReadonlyTag(node: Node): node is JSDocReadonlyTag;
5182    function isJSDocOverrideTag(node: Node): node is JSDocOverrideTag;
5183    function isJSDocDeprecatedTag(node: Node): node is JSDocDeprecatedTag;
5184    function isJSDocSeeTag(node: Node): node is JSDocSeeTag;
5185    function isJSDocEnumTag(node: Node): node is JSDocEnumTag;
5186    function isJSDocParameterTag(node: Node): node is JSDocParameterTag;
5187    function isJSDocReturnTag(node: Node): node is JSDocReturnTag;
5188    function isJSDocThisTag(node: Node): node is JSDocThisTag;
5189    function isJSDocTypeTag(node: Node): node is JSDocTypeTag;
5190    function isJSDocTemplateTag(node: Node): node is JSDocTemplateTag;
5191    function isJSDocTypedefTag(node: Node): node is JSDocTypedefTag;
5192    function isJSDocUnknownTag(node: Node): node is JSDocUnknownTag;
5193    function isJSDocPropertyTag(node: Node): node is JSDocPropertyTag;
5194    function isJSDocImplementsTag(node: Node): node is JSDocImplementsTag;
5195}
5196declare namespace ts {
5197    function setTextRange<T extends TextRange>(range: T, location: TextRange | undefined): T;
5198    function canHaveModifiers(node: Node): node is HasModifiers;
5199    function canHaveDecorators(node: Node): node is HasDecorators;
5200}
5201declare namespace ts {
5202    /**
5203     * Invokes a callback for each child of the given node. The 'cbNode' callback is invoked for all child nodes
5204     * stored in properties. If a 'cbNodes' callback is specified, it is invoked for embedded arrays; otherwise,
5205     * embedded arrays are flattened and the 'cbNode' callback is invoked for each element. If a callback returns
5206     * a truthy value, iteration stops and that value is returned. Otherwise, undefined is returned.
5207     *
5208     * @param node a given node to visit its children
5209     * @param cbNode a callback to be invoked for all child nodes
5210     * @param cbNodes a callback to be invoked for embedded array
5211     *
5212     * @remarks `forEachChild` must visit the children of a node in the order
5213     * that they appear in the source code. The language service depends on this property to locate nodes by position.
5214     */
5215    export function forEachChild<T>(node: Node, cbNode: (node: Node) => T | undefined, cbNodes?: (nodes: NodeArray<Node>) => T | undefined): T | undefined;
5216    export interface CreateSourceFileOptions {
5217        languageVersion: ScriptTarget;
5218        /**
5219         * Controls the format the file is detected as - this can be derived from only the path
5220         * and files on disk, but needs to be done with a module resolution cache in scope to be performant.
5221         * This is usually `undefined` for compilations that do not have `moduleResolution` values of `node16` or `nodenext`.
5222         */
5223        impliedNodeFormat?: ModuleKind.ESNext | ModuleKind.CommonJS;
5224        /**
5225         * Controls how module-y-ness is set for the given file. Usually the result of calling
5226         * `getSetExternalModuleIndicator` on a valid `CompilerOptions` object. If not present, the default
5227         * check specified by `isFileProbablyExternalModule` will be used to set the field.
5228         */
5229        setExternalModuleIndicator?: (file: SourceFile) => void;
5230    }
5231    export function createSourceFile(fileName: string, sourceText: string, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, setParentNodes?: boolean, scriptKind?: ScriptKind, options?: CompilerOptions): SourceFile;
5232    export function parseIsolatedEntityName(text: string, languageVersion: ScriptTarget): EntityName | undefined;
5233    /**
5234     * Parse json text into SyntaxTree and return node and parse errors if any
5235     * @param fileName
5236     * @param sourceText
5237     */
5238    export function parseJsonText(fileName: string, sourceText: string): JsonSourceFile;
5239    export function isExternalModule(file: SourceFile): boolean;
5240    export function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean, option?: CompilerOptions): SourceFile;
5241    export {};
5242}
5243declare namespace ts {
5244    export function parseCommandLine(commandLine: readonly string[], readFile?: (path: string) => string | undefined): ParsedCommandLine;
5245    export type DiagnosticReporter = (diagnostic: Diagnostic) => void;
5246    /**
5247     * Reports config file diagnostics
5248     */
5249    export interface ConfigFileDiagnosticsReporter {
5250        /**
5251         * Reports unrecoverable error when parsing config file
5252         */
5253        onUnRecoverableConfigFileDiagnostic: DiagnosticReporter;
5254    }
5255    /**
5256     * Interface extending ParseConfigHost to support ParseConfigFile that reads config file and reports errors
5257     */
5258    export interface ParseConfigFileHost extends ParseConfigHost, ConfigFileDiagnosticsReporter {
5259        getCurrentDirectory(): string;
5260    }
5261    /**
5262     * Reads the config file, reports errors if any and exits if the config file cannot be found
5263     */
5264    export function getParsedCommandLineOfConfigFile(configFileName: string, optionsToExtend: CompilerOptions | undefined, host: ParseConfigFileHost, extendedConfigCache?: Map<ExtendedConfigCacheEntry>, watchOptionsToExtend?: WatchOptions, extraFileExtensions?: readonly FileExtensionInfo[]): ParsedCommandLine | undefined;
5265    /**
5266     * Read tsconfig.json file
5267     * @param fileName The path to the config file
5268     */
5269    export function readConfigFile(fileName: string, readFile: (path: string) => string | undefined): {
5270        config?: any;
5271        error?: Diagnostic;
5272    };
5273    /**
5274     * Parse the text of the tsconfig.json file
5275     * @param fileName The path to the config file
5276     * @param jsonText The text of the config file
5277     */
5278    export function parseConfigFileTextToJson(fileName: string, jsonText: string): {
5279        config?: any;
5280        error?: Diagnostic;
5281    };
5282    /**
5283     * Read tsconfig.json file
5284     * @param fileName The path to the config file
5285     */
5286    export function readJsonConfigFile(fileName: string, readFile: (path: string) => string | undefined): TsConfigSourceFile;
5287    /**
5288     * Convert the json syntax tree into the json value
5289     */
5290    export function convertToObject(sourceFile: JsonSourceFile, errors: Push<Diagnostic>): any;
5291    /**
5292     * Parse the contents of a config file (tsconfig.json).
5293     * @param json The contents of the config file to parse
5294     * @param host Instance of ParseConfigHost used to enumerate files in folder.
5295     * @param basePath A root directory to resolve relative path entries in the config
5296     *    file to. e.g. outDir
5297     */
5298    export function parseJsonConfigFileContent(json: any, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions, configFileName?: string, resolutionStack?: Path[], extraFileExtensions?: readonly FileExtensionInfo[], extendedConfigCache?: Map<ExtendedConfigCacheEntry>, existingWatchOptions?: WatchOptions): ParsedCommandLine;
5299    /**
5300     * Parse the contents of a config file (tsconfig.json).
5301     * @param jsonNode The contents of the config file to parse
5302     * @param host Instance of ParseConfigHost used to enumerate files in folder.
5303     * @param basePath A root directory to resolve relative path entries in the config
5304     *    file to. e.g. outDir
5305     */
5306    export function parseJsonSourceFileConfigFileContent(sourceFile: TsConfigSourceFile, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions, configFileName?: string, resolutionStack?: Path[], extraFileExtensions?: readonly FileExtensionInfo[], extendedConfigCache?: Map<ExtendedConfigCacheEntry>, existingWatchOptions?: WatchOptions): ParsedCommandLine;
5307    export interface ParsedTsconfig {
5308        raw: any;
5309        options?: CompilerOptions;
5310        watchOptions?: WatchOptions;
5311        typeAcquisition?: TypeAcquisition;
5312        /**
5313         * Note that the case of the config path has not yet been normalized, as no files have been imported into the project yet
5314         */
5315        extendedConfigPath?: string;
5316    }
5317    export interface ExtendedConfigCacheEntry {
5318        extendedResult: TsConfigSourceFile;
5319        extendedConfig: ParsedTsconfig | undefined;
5320    }
5321    export function convertCompilerOptionsFromJson(jsonOptions: any, basePath: string, configFileName?: string): {
5322        options: CompilerOptions;
5323        errors: Diagnostic[];
5324    };
5325    export function convertTypeAcquisitionFromJson(jsonOptions: any, basePath: string, configFileName?: string): {
5326        options: TypeAcquisition;
5327        errors: Diagnostic[];
5328    };
5329    export {};
5330}
5331declare namespace ts {
5332    export function getEffectiveTypeRoots(options: CompilerOptions, host: GetEffectiveTypeRootsHost): string[] | undefined;
5333    /**
5334     * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown.
5335     * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups
5336     * is assumed to be the same as root directory of the project.
5337     */
5338    export function resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string | undefined, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference, cache?: TypeReferenceDirectiveResolutionCache, resolutionMode?: SourceFile["impliedNodeFormat"]): ResolvedTypeReferenceDirectiveWithFailedLookupLocations;
5339    /**
5340     * Given a set of options, returns the set of type directive names
5341     *   that should be included for this program automatically.
5342     * This list could either come from the config file,
5343     *   or from enumerating the types root + initial secondary types lookup location.
5344     * More type directives might appear in the program later as a result of loading actual source files;
5345     *   this list is only the set of defaults that are implicitly included.
5346     */
5347    export function getAutomaticTypeDirectiveNames(options: CompilerOptions, host: ModuleResolutionHost): string[];
5348    export interface TypeReferenceDirectiveResolutionCache extends PerDirectoryResolutionCache<ResolvedTypeReferenceDirectiveWithFailedLookupLocations>, PackageJsonInfoCache {
5349    }
5350    export interface ModeAwareCache<T> {
5351        get(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): T | undefined;
5352        set(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined, value: T): this;
5353        delete(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): this;
5354        has(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): boolean;
5355        forEach(cb: (elem: T, key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined) => void): void;
5356        size(): number;
5357    }
5358    /**
5359     * Cached resolutions per containing directory.
5360     * This assumes that any module id will have the same resolution for sibling files located in the same folder.
5361     */
5362    export interface PerDirectoryResolutionCache<T> {
5363        getOrCreateCacheForDirectory(directoryName: string, redirectedReference?: ResolvedProjectReference): ModeAwareCache<T>;
5364        clear(): void;
5365        /**
5366         *  Updates with the current compilerOptions the cache will operate with.
5367         *  This updates the redirects map as well if needed so module resolutions are cached if they can across the projects
5368         */
5369        update(options: CompilerOptions): void;
5370    }
5371    export interface ModuleResolutionCache extends PerDirectoryResolutionCache<ResolvedModuleWithFailedLookupLocations>, NonRelativeModuleNameResolutionCache, PackageJsonInfoCache {
5372        getPackageJsonInfoCache(): PackageJsonInfoCache;
5373    }
5374    /**
5375     * Stored map from non-relative module name to a table: directory -> result of module lookup in this directory
5376     * We support only non-relative module names because resolution of relative module names is usually more deterministic and thus less expensive.
5377     */
5378    export interface NonRelativeModuleNameResolutionCache extends PackageJsonInfoCache {
5379        getOrCreateCacheForModuleName(nonRelativeModuleName: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined, redirectedReference?: ResolvedProjectReference): PerModuleNameCache;
5380    }
5381    export interface PackageJsonInfoCache {
5382        clear(): void;
5383    }
5384    export interface PerModuleNameCache {
5385        get(directory: string): ResolvedModuleWithFailedLookupLocations | undefined;
5386        set(directory: string, result: ResolvedModuleWithFailedLookupLocations): void;
5387    }
5388    export function createModuleResolutionCache(currentDirectory: string, getCanonicalFileName: (s: string) => string, options?: CompilerOptions): ModuleResolutionCache;
5389    export function createTypeReferenceDirectiveResolutionCache(currentDirectory: string, getCanonicalFileName: (s: string) => string, options?: CompilerOptions, packageJsonInfoCache?: PackageJsonInfoCache): TypeReferenceDirectiveResolutionCache;
5390    export function resolveModuleNameFromCache(moduleName: string, containingFile: string, cache: ModuleResolutionCache, mode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined;
5391    export function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations;
5392    export function nodeModuleNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference): ResolvedModuleWithFailedLookupLocations;
5393    /**
5394     * This will be called on the successfully resolved path from `loadModuleFromFile`.
5395     * (Not needed for `loadModuleFromNodeModules` as that looks up the `package.json` or `oh-package.json5` as part of resolution.)
5396     *
5397     * packageDirectory is the directory of the package itself.
5398     *   For `blah/node_modules/foo/index.d.ts` this is packageDirectory: "foo"
5399     *   For `/node_modules/foo/bar.d.ts` this is packageDirectory: "foo"
5400     *   For `/node_modules/@types/foo/bar/index.d.ts` this is packageDirectory: "@types/foo"
5401     *   For `/node_modules/foo/bar/index.d.ts` this is packageDirectory: "foo"
5402     */
5403    export function parseModuleFromPath(resolved: string, packageManagerType?: string): string | undefined;
5404    export function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: NonRelativeModuleNameResolutionCache, redirectedReference?: ResolvedProjectReference): ResolvedModuleWithFailedLookupLocations;
5405    export {};
5406}
5407declare namespace ts {
5408    function concatenateDecoratorsAndModifiers(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined): readonly ModifierLike[] | undefined;
5409    function isEtsFunctionDecorators(name: string | undefined, options: CompilerOptions): boolean;
5410    function isOhpm(packageManagerType: string | undefined): boolean;
5411    const ohModulesPathPart: string;
5412    function isOHModules(modulePath: string): boolean;
5413    function isOhpmAndOhModules(packageManagerType: string | undefined, modulePath: string): boolean;
5414    function getModulePathPartByPMType(packageManagerType: string | undefined): string;
5415    function getModuleByPMType(packageManagerType: string | undefined): string;
5416    function getPackageJsonByPMType(packageManagerType: string | undefined): string;
5417    function isOHModulesDirectory(dirPath: Path): boolean;
5418    function isTargetModulesDerectory(dirPath: Path): boolean;
5419    function pathContainsOHModules(path: string): boolean;
5420    function choosePathContainsModules(packageManagerType: string | undefined, fileName: string): boolean;
5421    function getTypeExportImportAndConstEnumTransformer(context: TransformationContext): (node: SourceFile) => SourceFile;
5422    /**
5423     * Add 'type' flag to import/export when import/export an type member.
5424     * Replace const enum with number and string literal.
5425     */
5426    function transformTypeExportImportAndConstEnumInTypeScript(context: TransformationContext): (node: SourceFile) => SourceFile;
5427    function hasTsNoCheckOrTsIgnoreFlag(node: SourceFile): boolean;
5428    function createObfTextSingleLineWriter(): EmitTextWriter;
5429}
5430declare namespace ts {
5431    /**
5432     * Visits a Node using the supplied visitor, possibly returning a new Node in its place.
5433     *
5434     * @param node The Node to visit.
5435     * @param visitor The callback used to visit the Node.
5436     * @param test A callback to execute to verify the Node is valid.
5437     * @param lift An optional callback to execute to lift a NodeArray into a valid Node.
5438     */
5439    function visitNode<T extends Node>(node: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T;
5440    /**
5441     * Visits a Node using the supplied visitor, possibly returning a new Node in its place.
5442     *
5443     * @param node The Node to visit.
5444     * @param visitor The callback used to visit the Node.
5445     * @param test A callback to execute to verify the Node is valid.
5446     * @param lift An optional callback to execute to lift a NodeArray into a valid Node.
5447     */
5448    function visitNode<T extends Node>(node: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined;
5449    /**
5450     * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place.
5451     *
5452     * @param nodes The NodeArray to visit.
5453     * @param visitor The callback used to visit a Node.
5454     * @param test A node test to execute for each node.
5455     * @param start An optional value indicating the starting offset at which to start visiting.
5456     * @param count An optional value indicating the maximum number of nodes to visit.
5457     */
5458    function visitNodes<T extends Node>(nodes: NodeArray<T>, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T>;
5459    /**
5460     * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place.
5461     *
5462     * @param nodes The NodeArray to visit.
5463     * @param visitor The callback used to visit a Node.
5464     * @param test A node test to execute for each node.
5465     * @param start An optional value indicating the starting offset at which to start visiting.
5466     * @param count An optional value indicating the maximum number of nodes to visit.
5467     */
5468    function visitNodes<T extends Node>(nodes: NodeArray<T> | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T> | undefined;
5469    /**
5470     * Starts a new lexical environment and visits a statement list, ending the lexical environment
5471     * and merging hoisted declarations upon completion.
5472     */
5473    function visitLexicalEnvironment(statements: NodeArray<Statement>, visitor: Visitor, context: TransformationContext, start?: number, ensureUseStrict?: boolean, nodesVisitor?: NodesVisitor): NodeArray<Statement>;
5474    /**
5475     * Starts a new lexical environment and visits a parameter list, suspending the lexical
5476     * environment upon completion.
5477     */
5478    function visitParameterList(nodes: NodeArray<ParameterDeclaration>, visitor: Visitor, context: TransformationContext, nodesVisitor?: NodesVisitor): NodeArray<ParameterDeclaration>;
5479    function visitParameterList(nodes: NodeArray<ParameterDeclaration> | undefined, visitor: Visitor, context: TransformationContext, nodesVisitor?: NodesVisitor): NodeArray<ParameterDeclaration> | undefined;
5480    /**
5481     * Resumes a suspended lexical environment and visits a function body, ending the lexical
5482     * environment and merging hoisted declarations upon completion.
5483     */
5484    function visitFunctionBody(node: FunctionBody, visitor: Visitor, context: TransformationContext): FunctionBody;
5485    /**
5486     * Resumes a suspended lexical environment and visits a function body, ending the lexical
5487     * environment and merging hoisted declarations upon completion.
5488     */
5489    function visitFunctionBody(node: FunctionBody | undefined, visitor: Visitor, context: TransformationContext): FunctionBody | undefined;
5490    /**
5491     * Resumes a suspended lexical environment and visits a concise body, ending the lexical
5492     * environment and merging hoisted declarations upon completion.
5493     */
5494    function visitFunctionBody(node: ConciseBody, visitor: Visitor, context: TransformationContext): ConciseBody;
5495    /**
5496     * Visits an iteration body, adding any block-scoped variables required by the transformation.
5497     */
5498    function visitIterationBody(body: Statement, visitor: Visitor, context: TransformationContext): Statement;
5499    /**
5500     * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place.
5501     *
5502     * @param node The Node whose children will be visited.
5503     * @param visitor The callback used to visit each child.
5504     * @param context A lexical environment context for the visitor.
5505     */
5506    function visitEachChild<T extends Node>(node: T, visitor: Visitor, context: TransformationContext): T;
5507    /**
5508     * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place.
5509     *
5510     * @param node The Node whose children will be visited.
5511     * @param visitor The callback used to visit each child.
5512     * @param context A lexical environment context for the visitor.
5513     */
5514    function visitEachChild<T extends Node>(node: T | undefined, visitor: Visitor, context: TransformationContext, nodesVisitor?: typeof visitNodes, tokenVisitor?: Visitor): T | undefined;
5515}
5516declare namespace ts {
5517    interface SourceMapGeneratorOptions {
5518        extendedDiagnostics?: boolean;
5519    }
5520    function createSourceMapGenerator(host: EmitHost, file: string, sourceRoot: string, sourcesDirectoryPath: string, generatorOptions: SourceMapGeneratorOptions): SourceMapGenerator;
5521}
5522declare namespace ts {
5523    function getTsBuildInfoEmitOutputFilePath(options: CompilerOptions): string | undefined;
5524    function getTsBuildInfoEmitOutputFilePathForLinter(tsBuildInfoPath: string): string;
5525    function getOutputFileNames(commandLine: ParsedCommandLine, inputFileName: string, ignoreCase: boolean): readonly string[];
5526    function createPrinter(printerOptions?: PrinterOptions, handlers?: PrintHandlers): Printer;
5527}
5528declare namespace ts {
5529    export function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean, configName?: string): string | undefined;
5530    export function resolveTripleslashReference(moduleName: string, containingFile: string): string;
5531    export function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost;
5532    export function getPreEmitDiagnostics(program: Program, sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
5533    export interface FormatDiagnosticsHost {
5534        getCurrentDirectory(): string;
5535        getCanonicalFileName(fileName: string): string;
5536        getNewLine(): string;
5537    }
5538    export function formatDiagnostics(diagnostics: readonly Diagnostic[], host: FormatDiagnosticsHost): string;
5539    export function formatDiagnostic(diagnostic: Diagnostic, host: FormatDiagnosticsHost): string;
5540    export function formatDiagnosticsWithColorAndContext(diagnostics: readonly Diagnostic[], host: FormatDiagnosticsHost): string;
5541    export function flattenDiagnosticMessageText(diag: string | DiagnosticMessageChain | undefined, newLine: string, indent?: number): string;
5542    /**
5543     * Calculates the resulting resolution mode for some reference in some file - this is generally the explicitly
5544     * provided resolution mode in the reference, unless one is not present, in which case it is the mode of the containing file.
5545     */
5546    export function getModeForFileReference(ref: FileReference | string, containingFileMode: SourceFile["impliedNodeFormat"]): ModuleKind.CommonJS | ModuleKind.ESNext | undefined;
5547    /**
5548     * Calculates the final resolution mode for an import at some index within a file's imports list. This is generally the explicitly
5549     * defined mode of the import if provided, or, if not, the mode of the containing file (with some exceptions: import=require is always commonjs, dynamic import is always esm).
5550     * If you have an actual import node, prefer using getModeForUsageLocation on the reference string node.
5551     * @param file File to fetch the resolution mode within
5552     * @param index Index into the file's complete resolution list to get the resolution of - this is a concatenation of the file's imports and module augmentations
5553     */
5554    export function getModeForResolutionAtIndex(file: SourceFile, index: number): ModuleKind.CommonJS | ModuleKind.ESNext | undefined;
5555    /**
5556     * Calculates the final resolution mode for a given module reference node. This is generally the explicitly provided resolution mode, if
5557     * one exists, or the mode of the containing source file. (Excepting import=require, which is always commonjs, and dynamic import, which is always esm).
5558     * Notably, this function always returns `undefined` if the containing file has an `undefined` `impliedNodeFormat` - this field is only set when
5559     * `moduleResolution` is `node16`+.
5560     * @param file The file the import or import-like reference is contained within
5561     * @param usage The module reference string
5562     * @returns The final resolution mode of the import
5563     */
5564    export function getModeForUsageLocation(file: {
5565        impliedNodeFormat?: SourceFile["impliedNodeFormat"];
5566    }, usage: StringLiteralLike): ModuleKind.CommonJS | ModuleKind.ESNext | undefined;
5567    export function getConfigFileParsingDiagnostics(configFileParseResult: ParsedCommandLine): readonly Diagnostic[];
5568    /**
5569     * A function for determining if a given file is esm or cjs format, assuming modern node module resolution rules, as configured by the
5570     * `options` parameter.
5571     *
5572     * @param fileName The normalized absolute path to check the format of (it need not exist on disk)
5573     * @param [packageJsonInfoCache] A cache for package file lookups - it's best to have a cache when this function is called often
5574     * @param host The ModuleResolutionHost which can perform the filesystem lookups for package json data
5575     * @param options The compiler options to perform the analysis under - relevant options are `moduleResolution` and `traceResolution`
5576     * @returns `undefined` if the path has no relevant implied format, `ModuleKind.ESNext` for esm format, and `ModuleKind.CommonJS` for cjs format
5577     */
5578    export function getImpliedNodeFormatForFile(fileName: Path, packageJsonInfoCache: PackageJsonInfoCache | undefined, host: ModuleResolutionHost, options: CompilerOptions): ModuleKind.ESNext | ModuleKind.CommonJS | undefined;
5579    /**
5580     * Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions'
5581     * that represent a compilation unit.
5582     *
5583     * Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and
5584     * triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in.
5585     *
5586     * @param createProgramOptions - The options for creating a program.
5587     * @returns A 'Program' object.
5588     */
5589    export function createProgram(createProgramOptions: CreateProgramOptions): Program;
5590    /**
5591     * Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions'
5592     * that represent a compilation unit.
5593     *
5594     * Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and
5595     * triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in.
5596     *
5597     * @param rootNames - A set of root files.
5598     * @param options - The compiler options which should be used.
5599     * @param host - The host interacts with the underlying file system.
5600     * @param oldProgram - Reuses an old program structure.
5601     * @param configFileParsingDiagnostics - error during config file parsing
5602     * @returns A 'Program' object.
5603     */
5604    export function createProgram(rootNames: readonly string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program, configFileParsingDiagnostics?: readonly Diagnostic[]): Program;
5605    /** @deprecated */ export interface ResolveProjectReferencePathHost {
5606        fileExists(fileName: string): boolean;
5607    }
5608    /**
5609     * Returns the target config filename of a project reference.
5610     * Note: The file might not exist.
5611     */
5612    export function resolveProjectReferencePath(ref: ProjectReference): ResolvedConfigFileName;
5613    /** @deprecated */ export function resolveProjectReferencePath(host: ResolveProjectReferencePathHost, ref: ProjectReference): ResolvedConfigFileName;
5614    export {};
5615}
5616declare namespace ts {
5617    interface EmitOutput {
5618        outputFiles: OutputFile[];
5619        emitSkipped: boolean;
5620    }
5621    interface OutputFile {
5622        name: string;
5623        writeByteOrderMark: boolean;
5624        text: string;
5625    }
5626}
5627declare namespace ts {
5628    type AffectedFileResult<T> = {
5629        result: T;
5630        affected: SourceFile | Program;
5631    } | undefined;
5632    interface BuilderProgramHost {
5633        /**
5634         * return true if file names are treated with case sensitivity
5635         */
5636        useCaseSensitiveFileNames(): boolean;
5637        /**
5638         * If provided this would be used this hash instead of actual file shape text for detecting changes
5639         */
5640        createHash?: (data: string) => string;
5641        /**
5642         * When emit or emitNextAffectedFile are called without writeFile,
5643         * this callback if present would be used to write files
5644         */
5645        writeFile?: WriteFileCallback;
5646    }
5647    /**
5648     * Builder to manage the program state changes
5649     */
5650    interface BuilderProgram {
5651        /**
5652         * Returns current program
5653         */
5654        getProgram(): Program;
5655        /**
5656         * Get compiler options of the program
5657         */
5658        getCompilerOptions(): CompilerOptions;
5659        /**
5660         * Get the source file in the program with file name
5661         */
5662        getSourceFile(fileName: string): SourceFile | undefined;
5663        /**
5664         * Get a list of files in the program
5665         */
5666        getSourceFiles(): readonly SourceFile[];
5667        /**
5668         * Get the diagnostics for compiler options
5669         */
5670        getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
5671        /**
5672         * Get the diagnostics that dont belong to any file
5673         */
5674        getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
5675        /**
5676         * Get the diagnostics from config file parsing
5677         */
5678        getConfigFileParsingDiagnostics(): readonly Diagnostic[];
5679        /**
5680         * Get the syntax diagnostics, for all source files if source file is not supplied
5681         */
5682        getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
5683        /**
5684         * Get the declaration diagnostics, for all source files if source file is not supplied
5685         */
5686        getDeclarationDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[];
5687        /**
5688         * Get all the dependencies of the file
5689         */
5690        getAllDependencies(sourceFile: SourceFile): readonly string[];
5691        /**
5692         * Gets the semantic diagnostics from the program corresponding to this state of file (if provided) or whole program
5693         * The semantic diagnostics are cached and managed here
5694         * Note that it is assumed that when asked about semantic diagnostics through this API,
5695         * the file has been taken out of affected files so it is safe to use cache or get from program and cache the diagnostics
5696         * In case of SemanticDiagnosticsBuilderProgram if the source file is not provided,
5697         * it will iterate through all the affected files, to ensure that cache stays valid and yet provide a way to get all semantic diagnostics
5698         */
5699        getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
5700        /**
5701         * Emits the JavaScript and declaration files.
5702         * When targetSource file is specified, emits the files corresponding to that source file,
5703         * otherwise for the whole program.
5704         * In case of EmitAndSemanticDiagnosticsBuilderProgram, when targetSourceFile is specified,
5705         * it is assumed that that file is handled from affected file list. If targetSourceFile is not specified,
5706         * it will only emit all the affected files instead of whole program
5707         *
5708         * The first of writeFile if provided, writeFile of BuilderProgramHost if provided, writeFile of compiler host
5709         * in that order would be used to write the files
5710         */
5711        emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult;
5712        /**
5713         * Get the current directory of the program
5714         */
5715        getCurrentDirectory(): string;
5716        isFileUpdateInConstEnumCache?(sourceFile: SourceFile): boolean;
5717        builderProgramForLinter?: EmitAndSemanticDiagnosticsBuilderProgram;
5718    }
5719    /**
5720     * The builder that caches the semantic diagnostics for the program and handles the changed files and affected files
5721     */
5722    interface SemanticDiagnosticsBuilderProgram extends BuilderProgram {
5723        /**
5724         * Gets the semantic diagnostics from the program for the next affected file and caches it
5725         * Returns undefined if the iteration is complete
5726         */
5727        getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult<readonly Diagnostic[]>;
5728    }
5729    /**
5730     * The builder that can handle the changes in program and iterate through changed file to emit the files
5731     * The semantic diagnostics are cached per file and managed by clearing for the changed/affected files
5732     */
5733    interface EmitAndSemanticDiagnosticsBuilderProgram extends SemanticDiagnosticsBuilderProgram {
5734        /**
5735         * Emits the next affected file's emit result (EmitResult and sourceFiles emitted) or returns undefined if iteration is complete
5736         * The first of writeFile if provided, writeFile of BuilderProgramHost if provided, writeFile of compiler host
5737         * in that order would be used to write the files
5738         */
5739        emitNextAffectedFile(writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): AffectedFileResult<EmitResult>;
5740    }
5741    /**
5742     * Create the builder to manage semantic diagnostics and cache them
5743     */
5744    function createSemanticDiagnosticsBuilderProgram(newProgram: Program, host: BuilderProgramHost, oldProgram?: SemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): SemanticDiagnosticsBuilderProgram;
5745    function createSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: SemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): SemanticDiagnosticsBuilderProgram;
5746    /**
5747     * Create the builder that can handle the changes in program and iterate through changed files
5748     * to emit the those files and manage semantic diagnostics cache as well
5749     */
5750    function createEmitAndSemanticDiagnosticsBuilderProgram(newProgram: Program, host: BuilderProgramHost, oldProgram?: EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): EmitAndSemanticDiagnosticsBuilderProgram;
5751    function createEmitAndSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): EmitAndSemanticDiagnosticsBuilderProgram;
5752    function createEmitAndSemanticDiagnosticsBuilderProgramForArkTs(newProgramOrRootNames: Program | readonly string[] | undefined, hostOrOptions: BuilderProgramHost | CompilerOptions | undefined, oldProgramOrHost?: CompilerHost | EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnosticsOrOldProgram?: readonly Diagnostic[] | EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): EmitAndSemanticDiagnosticsBuilderProgram;
5753    /**
5754     * Creates a builder thats just abstraction over program and can be used with watch
5755     */
5756    function createAbstractBuilder(newProgram: Program, host: BuilderProgramHost, oldProgram?: BuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): BuilderProgram;
5757    function createAbstractBuilder(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: BuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): BuilderProgram;
5758}
5759declare namespace ts {
5760    interface ReadBuildProgramHost {
5761        useCaseSensitiveFileNames(): boolean;
5762        getCurrentDirectory(): string;
5763        readFile(fileName: string): string | undefined;
5764        getLastCompiledProgram?(): Program;
5765    }
5766    function readBuilderProgram(compilerOptions: CompilerOptions, host: ReadBuildProgramHost, isForLinter?: boolean): EmitAndSemanticDiagnosticsBuilderProgram | undefined;
5767    function createIncrementalCompilerHost(options: CompilerOptions, system?: System): CompilerHost;
5768    interface IncrementalProgramOptions<T extends BuilderProgram> {
5769        rootNames: readonly string[];
5770        options: CompilerOptions;
5771        configFileParsingDiagnostics?: readonly Diagnostic[];
5772        projectReferences?: readonly ProjectReference[];
5773        host?: CompilerHost;
5774        createProgram?: CreateProgram<T>;
5775    }
5776    function createIncrementalProgram<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>({ rootNames, options, configFileParsingDiagnostics, projectReferences, host, createProgram }: IncrementalProgramOptions<T>): T;
5777    function createIncrementalProgramForArkTs({ rootNames, options, configFileParsingDiagnostics, projectReferences, host }: IncrementalProgramOptions<EmitAndSemanticDiagnosticsBuilderProgram>): EmitAndSemanticDiagnosticsBuilderProgram;
5778    type WatchStatusReporter = (diagnostic: Diagnostic, newLine: string, options: CompilerOptions, errorCount?: number) => void;
5779    /** Create the program with rootNames and options, if they are undefined, oldProgram and new configFile diagnostics create new program */
5780    type CreateProgram<T extends BuilderProgram> = (rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: T, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[] | undefined) => T;
5781    /** Host that has watch functionality used in --watch mode */
5782    interface WatchHost {
5783        /** If provided, called with Diagnostic message that informs about change in watch status */
5784        onWatchStatusChange?(diagnostic: Diagnostic, newLine: string, options: CompilerOptions, errorCount?: number): void;
5785        /** Used to watch changes in source files, missing files needed to update the program or config file */
5786        watchFile(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
5787        /** Used to watch resolved module's failed lookup locations, config file specs, type roots where auto type reference directives are added */
5788        watchDirectory(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
5789        /** If provided, will be used to set delayed compilation, so that multiple changes in short span are compiled together */
5790        setTimeout?(callback: (...args: any[]) => void, ms: number, ...args: any[]): any;
5791        /** If provided, will be used to reset existing delayed compilation */
5792        clearTimeout?(timeoutId: any): void;
5793    }
5794    interface ProgramHost<T extends BuilderProgram> {
5795        /**
5796         * Used to create the program when need for program creation or recreation detected
5797         */
5798        createProgram: CreateProgram<T>;
5799        useCaseSensitiveFileNames(): boolean;
5800        getNewLine(): string;
5801        getCurrentDirectory(): string;
5802        getDefaultLibFileName(options: CompilerOptions): string;
5803        getDefaultLibLocation?(): string;
5804        createHash?(data: string): string;
5805        /**
5806         * Use to check file presence for source files and
5807         * if resolveModuleNames is not provided (complier is in charge of module resolution) then module files as well
5808         */
5809        fileExists(path: string): boolean;
5810        /**
5811         * Use to read file text for source files and
5812         * if resolveModuleNames is not provided (complier is in charge of module resolution) then module files as well
5813         */
5814        readFile(path: string, encoding?: string): string | undefined;
5815        /** If provided, used for module resolution as well as to handle directory structure */
5816        directoryExists?(path: string): boolean;
5817        /** If provided, used in resolutions as well as handling directory structure */
5818        getDirectories?(path: string): string[];
5819        /** If provided, used to cache and handle directory structure modifications */
5820        readDirectory?(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
5821        /** Symbol links resolution */
5822        realpath?(path: string): string;
5823        /** If provided would be used to write log about compilation */
5824        trace?(s: string): void;
5825        /** If provided is used to get the environment variable */
5826        getEnvironmentVariable?(name: string): string | undefined;
5827        /** If provided, used to resolve the module names, otherwise typescript's default module resolution */
5828        resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[];
5829        /** If provided, used to resolve type reference directives, otherwise typescript's default resolution */
5830        resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[] | readonly FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
5831        /** If provided along with custom resolveModuleNames or resolveTypeReferenceDirectives, used to determine if unchanged file path needs to re-resolve modules/type reference directives */
5832        hasInvalidatedResolutions?(filePath: Path): boolean;
5833        /**
5834         * Returns the module resolution cache used by a provided `resolveModuleNames` implementation so that any non-name module resolution operations (eg, package.json lookup) can reuse it
5835         */
5836        getModuleResolutionCache?(): ModuleResolutionCache | undefined;
5837    }
5838    interface WatchCompilerHost<T extends BuilderProgram> extends ProgramHost<T>, WatchHost {
5839        /** Instead of using output d.ts file from project reference, use its source file */
5840        useSourceOfProjectReferenceRedirect?(): boolean;
5841        /** If provided, use this method to get parsed command lines for referenced projects */
5842        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
5843        /** If provided, callback to invoke after every new program creation */
5844        afterProgramCreate?(program: T): void;
5845    }
5846    /**
5847     * Host to create watch with root files and options
5848     */
5849    interface WatchCompilerHostOfFilesAndCompilerOptions<T extends BuilderProgram> extends WatchCompilerHost<T> {
5850        /** root files to use to generate program */
5851        rootFiles: string[];
5852        /** Compiler options */
5853        options: CompilerOptions;
5854        watchOptions?: WatchOptions;
5855        /** Project References */
5856        projectReferences?: readonly ProjectReference[];
5857    }
5858    /**
5859     * Host to create watch with config file
5860     */
5861    interface WatchCompilerHostOfConfigFile<T extends BuilderProgram> extends WatchCompilerHost<T>, ConfigFileDiagnosticsReporter {
5862        /** Name of the config file to compile */
5863        configFileName: string;
5864        /** Options to extend */
5865        optionsToExtend?: CompilerOptions;
5866        watchOptionsToExtend?: WatchOptions;
5867        extraFileExtensions?: readonly FileExtensionInfo[];
5868        /**
5869         * Used to generate source file names from the config file and its include, exclude, files rules
5870         * and also to cache the directory stucture
5871         */
5872        readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
5873    }
5874    interface Watch<T> {
5875        /** Synchronize with host and get updated program */
5876        getProgram(): T;
5877        /** Closes the watch */
5878        close(): void;
5879    }
5880    /**
5881     * Creates the watch what generates program using the config file
5882     */
5883    interface WatchOfConfigFile<T> extends Watch<T> {
5884    }
5885    /**
5886     * Creates the watch that generates program using the root files and compiler options
5887     */
5888    interface WatchOfFilesAndCompilerOptions<T> extends Watch<T> {
5889        /** Updates the root files in the program, only if this is not config file compilation */
5890        updateRootFileNames(fileNames: string[]): void;
5891    }
5892    /**
5893     * Create the watch compiler host for either configFile or fileNames and its options
5894     */
5895    function createWatchCompilerHost<T extends BuilderProgram>(configFileName: string, optionsToExtend: CompilerOptions | undefined, system: System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter, watchOptionsToExtend?: WatchOptions, extraFileExtensions?: readonly FileExtensionInfo[]): WatchCompilerHostOfConfigFile<T>;
5896    function createWatchCompilerHost<T extends BuilderProgram>(rootFiles: string[], options: CompilerOptions, system: System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter, projectReferences?: readonly ProjectReference[], watchOptions?: WatchOptions): WatchCompilerHostOfFilesAndCompilerOptions<T>;
5897    /**
5898     * Creates the watch from the host for root files and compiler options
5899     */
5900    function createWatchProgram<T extends BuilderProgram>(host: WatchCompilerHostOfFilesAndCompilerOptions<T>): WatchOfFilesAndCompilerOptions<T>;
5901    /**
5902     * Creates the watch from the host for config file
5903     */
5904    function createWatchProgram<T extends BuilderProgram>(host: WatchCompilerHostOfConfigFile<T>): WatchOfConfigFile<T>;
5905}
5906declare namespace ts {
5907    interface BuildOptions {
5908        dry?: boolean;
5909        force?: boolean;
5910        verbose?: boolean;
5911        incremental?: boolean;
5912        assumeChangesOnlyAffectDirectDependencies?: boolean;
5913        traceResolution?: boolean;
5914        [option: string]: CompilerOptionsValue | undefined;
5915    }
5916    type ReportEmitErrorSummary = (errorCount: number, filesInError: (ReportFileInError | undefined)[]) => void;
5917    interface ReportFileInError {
5918        fileName: string;
5919        line: number;
5920    }
5921    interface SolutionBuilderHostBase<T extends BuilderProgram> extends ProgramHost<T> {
5922        createDirectory?(path: string): void;
5923        /**
5924         * Should provide create directory and writeFile if done of invalidatedProjects is not invoked with
5925         * writeFileCallback
5926         */
5927        writeFile?(path: string, data: string, writeByteOrderMark?: boolean): void;
5928        getCustomTransformers?: (project: string) => CustomTransformers | undefined;
5929        getModifiedTime(fileName: string): Date | undefined;
5930        setModifiedTime(fileName: string, date: Date): void;
5931        deleteFile(fileName: string): void;
5932        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
5933        reportDiagnostic: DiagnosticReporter;
5934        reportSolutionBuilderStatus: DiagnosticReporter;
5935        afterProgramEmitAndDiagnostics?(program: T): void;
5936    }
5937    interface SolutionBuilderHost<T extends BuilderProgram> extends SolutionBuilderHostBase<T> {
5938        reportErrorSummary?: ReportEmitErrorSummary;
5939    }
5940    interface SolutionBuilderWithWatchHost<T extends BuilderProgram> extends SolutionBuilderHostBase<T>, WatchHost {
5941    }
5942    interface SolutionBuilder<T extends BuilderProgram> {
5943        build(project?: string, cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, getCustomTransformers?: (project: string) => CustomTransformers): ExitStatus;
5944        clean(project?: string): ExitStatus;
5945        buildReferences(project: string, cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, getCustomTransformers?: (project: string) => CustomTransformers): ExitStatus;
5946        cleanReferences(project?: string): ExitStatus;
5947        getNextInvalidatedProject(cancellationToken?: CancellationToken): InvalidatedProject<T> | undefined;
5948    }
5949    /**
5950     * Create a function that reports watch status by writing to the system and handles the formating of the diagnostic
5951     */
5952    function createBuilderStatusReporter(system: System, pretty?: boolean): DiagnosticReporter;
5953    function createSolutionBuilderHost<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>(system?: System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportSolutionBuilderStatus?: DiagnosticReporter, reportErrorSummary?: ReportEmitErrorSummary): SolutionBuilderHost<T>;
5954    function createSolutionBuilderWithWatchHost<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>(system?: System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportSolutionBuilderStatus?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter): SolutionBuilderWithWatchHost<T>;
5955    function createSolutionBuilder<T extends BuilderProgram>(host: SolutionBuilderHost<T>, rootNames: readonly string[], defaultOptions: BuildOptions): SolutionBuilder<T>;
5956    function createSolutionBuilderWithWatch<T extends BuilderProgram>(host: SolutionBuilderWithWatchHost<T>, rootNames: readonly string[], defaultOptions: BuildOptions, baseWatchOptions?: WatchOptions): SolutionBuilder<T>;
5957    enum InvalidatedProjectKind {
5958        Build = 0,
5959        UpdateBundle = 1,
5960        UpdateOutputFileStamps = 2
5961    }
5962    interface InvalidatedProjectBase {
5963        readonly kind: InvalidatedProjectKind;
5964        readonly project: ResolvedConfigFileName;
5965        /**
5966         *  To dispose this project and ensure that all the necessary actions are taken and state is updated accordingly
5967         */
5968        done(cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): ExitStatus;
5969        getCompilerOptions(): CompilerOptions;
5970        getCurrentDirectory(): string;
5971    }
5972    interface UpdateOutputFileStampsProject extends InvalidatedProjectBase {
5973        readonly kind: InvalidatedProjectKind.UpdateOutputFileStamps;
5974        updateOutputFileStatmps(): void;
5975    }
5976    interface BuildInvalidedProject<T extends BuilderProgram> extends InvalidatedProjectBase {
5977        readonly kind: InvalidatedProjectKind.Build;
5978        getBuilderProgram(): T | undefined;
5979        getProgram(): Program | undefined;
5980        getSourceFile(fileName: string): SourceFile | undefined;
5981        getSourceFiles(): readonly SourceFile[];
5982        getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
5983        getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[];
5984        getConfigFileParsingDiagnostics(): readonly Diagnostic[];
5985        getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
5986        getAllDependencies(sourceFile: SourceFile): readonly string[];
5987        getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[];
5988        getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult<readonly Diagnostic[]>;
5989        emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult | undefined;
5990    }
5991    interface UpdateBundleProject<T extends BuilderProgram> extends InvalidatedProjectBase {
5992        readonly kind: InvalidatedProjectKind.UpdateBundle;
5993        emit(writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): EmitResult | BuildInvalidedProject<T> | undefined;
5994    }
5995    type InvalidatedProject<T extends BuilderProgram> = UpdateOutputFileStampsProject | BuildInvalidedProject<T> | UpdateBundleProject<T>;
5996}
5997declare namespace ts.server {
5998    type ActionSet = "action::set";
5999    type ActionInvalidate = "action::invalidate";
6000    type ActionPackageInstalled = "action::packageInstalled";
6001    type EventTypesRegistry = "event::typesRegistry";
6002    type EventBeginInstallTypes = "event::beginInstallTypes";
6003    type EventEndInstallTypes = "event::endInstallTypes";
6004    type EventInitializationFailed = "event::initializationFailed";
6005}
6006declare namespace ts.server {
6007    interface TypingInstallerResponse {
6008        readonly kind: ActionSet | ActionInvalidate | EventTypesRegistry | ActionPackageInstalled | EventBeginInstallTypes | EventEndInstallTypes | EventInitializationFailed;
6009    }
6010    interface TypingInstallerRequestWithProjectName {
6011        readonly projectName: string;
6012    }
6013    interface DiscoverTypings extends TypingInstallerRequestWithProjectName {
6014        readonly fileNames: string[];
6015        readonly projectRootPath: Path;
6016        readonly compilerOptions: CompilerOptions;
6017        readonly watchOptions?: WatchOptions;
6018        readonly typeAcquisition: TypeAcquisition;
6019        readonly unresolvedImports: SortedReadonlyArray<string>;
6020        readonly cachePath?: string;
6021        readonly kind: "discover";
6022    }
6023    interface CloseProject extends TypingInstallerRequestWithProjectName {
6024        readonly kind: "closeProject";
6025    }
6026    interface TypesRegistryRequest {
6027        readonly kind: "typesRegistry";
6028    }
6029    interface InstallPackageRequest extends TypingInstallerRequestWithProjectName {
6030        readonly kind: "installPackage";
6031        readonly fileName: Path;
6032        readonly packageName: string;
6033        readonly projectRootPath: Path;
6034    }
6035    interface PackageInstalledResponse extends ProjectResponse {
6036        readonly kind: ActionPackageInstalled;
6037        readonly success: boolean;
6038        readonly message: string;
6039    }
6040    interface InitializationFailedResponse extends TypingInstallerResponse {
6041        readonly kind: EventInitializationFailed;
6042        readonly message: string;
6043        readonly stack?: string;
6044    }
6045    interface ProjectResponse extends TypingInstallerResponse {
6046        readonly projectName: string;
6047    }
6048    interface InvalidateCachedTypings extends ProjectResponse {
6049        readonly kind: ActionInvalidate;
6050    }
6051    interface InstallTypes extends ProjectResponse {
6052        readonly kind: EventBeginInstallTypes | EventEndInstallTypes;
6053        readonly eventId: number;
6054        readonly typingsInstallerVersion: string;
6055        readonly packagesToInstall: readonly string[];
6056    }
6057    interface BeginInstallTypes extends InstallTypes {
6058        readonly kind: EventBeginInstallTypes;
6059    }
6060    interface EndInstallTypes extends InstallTypes {
6061        readonly kind: EventEndInstallTypes;
6062        readonly installSuccess: boolean;
6063    }
6064    interface SetTypings extends ProjectResponse {
6065        readonly typeAcquisition: TypeAcquisition;
6066        readonly compilerOptions: CompilerOptions;
6067        readonly typings: string[];
6068        readonly unresolvedImports: SortedReadonlyArray<string>;
6069        readonly kind: ActionSet;
6070    }
6071}
6072declare namespace ts {
6073    interface Node {
6074        getSourceFile(): SourceFile;
6075        getChildCount(sourceFile?: SourceFile): number;
6076        getChildAt(index: number, sourceFile?: SourceFile): Node;
6077        getChildren(sourceFile?: SourceFile): Node[];
6078        getStart(sourceFile?: SourceFile, includeJsDocComment?: boolean): number;
6079        getFullStart(): number;
6080        getEnd(): number;
6081        getWidth(sourceFile?: SourceFileLike): number;
6082        getFullWidth(): number;
6083        getLeadingTriviaWidth(sourceFile?: SourceFile): number;
6084        getFullText(sourceFile?: SourceFile): string;
6085        getText(sourceFile?: SourceFile): string;
6086        getFirstToken(sourceFile?: SourceFile): Node | undefined;
6087        getLastToken(sourceFile?: SourceFile): Node | undefined;
6088        forEachChild<T>(cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray<Node>) => T | undefined): T | undefined;
6089    }
6090    interface Identifier {
6091        readonly text: string;
6092    }
6093    interface PrivateIdentifier {
6094        readonly text: string;
6095    }
6096    interface Symbol {
6097        readonly name: string;
6098        getFlags(): SymbolFlags;
6099        getEscapedName(): __String;
6100        getName(): string;
6101        getDeclarations(): Declaration[] | undefined;
6102        getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[];
6103        getJsDocTags(checker?: TypeChecker): JSDocTagInfo[];
6104    }
6105    interface Type {
6106        getFlags(): TypeFlags;
6107        getSymbol(): Symbol | undefined;
6108        getProperties(): Symbol[];
6109        getProperty(propertyName: string): Symbol | undefined;
6110        getApparentProperties(): Symbol[];
6111        getCallSignatures(): readonly Signature[];
6112        getConstructSignatures(): readonly Signature[];
6113        getStringIndexType(): Type | undefined;
6114        getNumberIndexType(): Type | undefined;
6115        getBaseTypes(): BaseType[] | undefined;
6116        getNonNullableType(): Type;
6117        getConstraint(): Type | undefined;
6118        getDefault(): Type | undefined;
6119        isUnion(): this is UnionType;
6120        isIntersection(): this is IntersectionType;
6121        isUnionOrIntersection(): this is UnionOrIntersectionType;
6122        isLiteral(): this is LiteralType;
6123        isStringLiteral(): this is StringLiteralType;
6124        isNumberLiteral(): this is NumberLiteralType;
6125        isTypeParameter(): this is TypeParameter;
6126        isClassOrInterface(): this is InterfaceType;
6127        isClass(): this is InterfaceType;
6128        isIndexType(): this is IndexType;
6129    }
6130    interface TypeReference {
6131        typeArguments?: readonly Type[];
6132    }
6133    interface Signature {
6134        getDeclaration(): SignatureDeclaration;
6135        getTypeParameters(): TypeParameter[] | undefined;
6136        getParameters(): Symbol[];
6137        getTypeParameterAtPosition(pos: number): Type;
6138        getReturnType(): Type;
6139        getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[];
6140        getJsDocTags(): JSDocTagInfo[];
6141    }
6142    interface SourceFile {
6143        getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
6144        getLineEndOfPosition(pos: number): number;
6145        getLineStarts(): readonly number[];
6146        getPositionOfLineAndCharacter(line: number, character: number): number;
6147        update(newText: string, textChangeRange: TextChangeRange): SourceFile;
6148    }
6149    interface SourceFileLike {
6150        getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
6151    }
6152    interface SourceMapSource {
6153        getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
6154    }
6155    /**
6156     * Represents an immutable snapshot of a script at a specified time.Once acquired, the
6157     * snapshot is observably immutable. i.e. the same calls with the same parameters will return
6158     * the same values.
6159     */
6160    interface IScriptSnapshot {
6161        /** Gets a portion of the script snapshot specified by [start, end). */
6162        getText(start: number, end: number): string;
6163        /** Gets the length of this script snapshot. */
6164        getLength(): number;
6165        /**
6166         * Gets the TextChangeRange that describe how the text changed between this text and
6167         * an older version.  This information is used by the incremental parser to determine
6168         * what sections of the script need to be re-parsed.  'undefined' can be returned if the
6169         * change range cannot be determined.  However, in that case, incremental parsing will
6170         * not happen and the entire document will be re - parsed.
6171         */
6172        getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange | undefined;
6173        /** Releases all resources held by this script snapshot */
6174        dispose?(): void;
6175    }
6176    namespace ScriptSnapshot {
6177        function fromString(text: string): IScriptSnapshot;
6178    }
6179    interface PreProcessedFileInfo {
6180        referencedFiles: FileReference[];
6181        typeReferenceDirectives: FileReference[];
6182        libReferenceDirectives: FileReference[];
6183        importedFiles: FileReference[];
6184        ambientExternalModules?: string[];
6185        isLibFile: boolean;
6186    }
6187    interface HostCancellationToken {
6188        isCancellationRequested(): boolean;
6189    }
6190    interface InstallPackageOptions {
6191        fileName: Path;
6192        packageName: string;
6193    }
6194    interface PerformanceEvent {
6195        kind: "UpdateGraph" | "CreatePackageJsonAutoImportProvider";
6196        durationMs: number;
6197    }
6198    enum LanguageServiceMode {
6199        Semantic = 0,
6200        PartialSemantic = 1,
6201        Syntactic = 2
6202    }
6203    interface IncompleteCompletionsCache {
6204        get(): CompletionInfo | undefined;
6205        set(response: CompletionInfo): void;
6206        clear(): void;
6207    }
6208    interface LanguageServiceHost extends GetEffectiveTypeRootsHost, MinimalResolutionCacheHost {
6209        getCompilationSettings(): CompilerOptions;
6210        getNewLine?(): string;
6211        getProjectVersion?(): string;
6212        getScriptFileNames(): string[];
6213        getScriptKind?(fileName: string): ScriptKind;
6214        getScriptVersion(fileName: string): string;
6215        getScriptSnapshot(fileName: string): IScriptSnapshot | undefined;
6216        getProjectReferences?(): readonly ProjectReference[] | undefined;
6217        getLocalizedDiagnosticMessages?(): any;
6218        getCancellationToken?(): HostCancellationToken;
6219        getCurrentDirectory(): string;
6220        getDefaultLibFileName(options: CompilerOptions): string;
6221        log?(s: string): void;
6222        trace?(s: string): void;
6223        error?(s: string): void;
6224        useCaseSensitiveFileNames?(): boolean;
6225        readDirectory?(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[];
6226        realpath?(path: string): string;
6227        readFile(path: string, encoding?: string): string | undefined;
6228        fileExists(path: string): boolean;
6229        getTypeRootsVersion?(): number;
6230        resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[];
6231        getResolvedModuleWithFailedLookupLocationsFromCache?(modulename: string, containingFile: string, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined;
6232        resolveTypeReferenceDirectives?(typeDirectiveNames: string[] | FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[];
6233        getDirectories?(directoryName: string): string[];
6234        /**
6235         * Gets a set of custom transformers to use during emit.
6236         */
6237        getCustomTransformers?(): CustomTransformers | undefined;
6238        isKnownTypesPackageName?(name: string): boolean;
6239        installPackage?(options: InstallPackageOptions): Promise<ApplyCodeActionCommandResult>;
6240        writeFile?(fileName: string, content: string): void;
6241        getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
6242        getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig;
6243        getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult;
6244        getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo;
6245        shouldCompletionSortCustom?: boolean;
6246        uiProps?: string[];
6247        clearProps?(): void;
6248    }
6249    type WithMetadata<T> = T & {
6250        metadata?: unknown;
6251    };
6252    enum SemanticClassificationFormat {
6253        Original = "original",
6254        TwentyTwenty = "2020"
6255    }
6256    interface LanguageService {
6257        /** This is used as a part of restarting the language service. */
6258        cleanupSemanticCache(): void;
6259        /**
6260         * Gets errors indicating invalid syntax in a file.
6261         *
6262         * In English, "this cdeo have, erorrs" is syntactically invalid because it has typos,
6263         * grammatical errors, and misplaced punctuation. Likewise, examples of syntax
6264         * errors in TypeScript are missing parentheses in an `if` statement, mismatched
6265         * curly braces, and using a reserved keyword as a variable name.
6266         *
6267         * These diagnostics are inexpensive to compute and don't require knowledge of
6268         * other files. Note that a non-empty result increases the likelihood of false positives
6269         * from `getSemanticDiagnostics`.
6270         *
6271         * While these represent the majority of syntax-related diagnostics, there are some
6272         * that require the type system, which will be present in `getSemanticDiagnostics`.
6273         *
6274         * @param fileName A path to the file you want syntactic diagnostics for
6275         */
6276        getSyntacticDiagnostics(fileName: string): DiagnosticWithLocation[];
6277        /**
6278         * Gets warnings or errors indicating type system issues in a given file.
6279         * Requesting semantic diagnostics may start up the type system and
6280         * run deferred work, so the first call may take longer than subsequent calls.
6281         *
6282         * Unlike the other get*Diagnostics functions, these diagnostics can potentially not
6283         * include a reference to a source file. Specifically, the first time this is called,
6284         * it will return global diagnostics with no associated location.
6285         *
6286         * To contrast the differences between semantic and syntactic diagnostics, consider the
6287         * sentence: "The sun is green." is syntactically correct; those are real English words with
6288         * correct sentence structure. However, it is semantically invalid, because it is not true.
6289         *
6290         * @param fileName A path to the file you want semantic diagnostics for
6291         */
6292        getSemanticDiagnostics(fileName: string): Diagnostic[];
6293        /**
6294         * Gets suggestion diagnostics for a specific file. These diagnostics tend to
6295         * proactively suggest refactors, as opposed to diagnostics that indicate
6296         * potentially incorrect runtime behavior.
6297         *
6298         * @param fileName A path to the file you want semantic diagnostics for
6299         */
6300        getSuggestionDiagnostics(fileName: string): DiagnosticWithLocation[];
6301        /**
6302         * Gets global diagnostics related to the program configuration and compiler options.
6303         */
6304        getCompilerOptionsDiagnostics(): Diagnostic[];
6305        /** @deprecated Use getEncodedSyntacticClassifications instead. */
6306        getSyntacticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
6307        getSyntacticClassifications(fileName: string, span: TextSpan, format: SemanticClassificationFormat): ClassifiedSpan[] | ClassifiedSpan2020[];
6308        /** @deprecated Use getEncodedSemanticClassifications instead. */
6309        getSemanticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
6310        getSemanticClassifications(fileName: string, span: TextSpan, format: SemanticClassificationFormat): ClassifiedSpan[] | ClassifiedSpan2020[];
6311        /** Encoded as triples of [start, length, ClassificationType]. */
6312        getEncodedSyntacticClassifications(fileName: string, span: TextSpan): Classifications;
6313        /**
6314         * Gets semantic highlights information for a particular file. Has two formats, an older
6315         * version used by VS and a format used by VS Code.
6316         *
6317         * @param fileName The path to the file
6318         * @param position A text span to return results within
6319         * @param format Which format to use, defaults to "original"
6320         * @returns a number array encoded as triples of [start, length, ClassificationType, ...].
6321         */
6322        getEncodedSemanticClassifications(fileName: string, span: TextSpan, format?: SemanticClassificationFormat): Classifications;
6323        /**
6324         * Gets completion entries at a particular position in a file.
6325         *
6326         * @param fileName The path to the file
6327         * @param position A zero-based index of the character where you want the entries
6328         * @param options An object describing how the request was triggered and what kinds
6329         * of code actions can be returned with the completions.
6330         * @param formattingSettings settings needed for calling formatting functions.
6331         */
6332        getCompletionsAtPosition(fileName: string, position: number, options: GetCompletionsAtPositionOptions | undefined, formattingSettings?: FormatCodeSettings): WithMetadata<CompletionInfo> | undefined;
6333        /**
6334         * Gets the extended details for a completion entry retrieved from `getCompletionsAtPosition`.
6335         *
6336         * @param fileName The path to the file
6337         * @param position A zero based index of the character where you want the entries
6338         * @param entryName The `name` from an existing completion which came from `getCompletionsAtPosition`
6339         * @param formatOptions How should code samples in the completions be formatted, can be undefined for backwards compatibility
6340         * @param source `source` property from the completion entry
6341         * @param preferences User settings, can be undefined for backwards compatibility
6342         * @param data `data` property from the completion entry
6343         */
6344        getCompletionEntryDetails(fileName: string, position: number, entryName: string, formatOptions: FormatCodeOptions | FormatCodeSettings | undefined, source: string | undefined, preferences: UserPreferences | undefined, data: CompletionEntryData | undefined): CompletionEntryDetails | undefined;
6345        getCompletionEntrySymbol(fileName: string, position: number, name: string, source: string | undefined): Symbol | undefined;
6346        /**
6347         * Gets semantic information about the identifier at a particular position in a
6348         * file. Quick info is what you typically see when you hover in an editor.
6349         *
6350         * @param fileName The path to the file
6351         * @param position A zero-based index of the character where you want the quick info
6352         */
6353        getQuickInfoAtPosition(fileName: string, position: number): QuickInfo | undefined;
6354        getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): TextSpan | undefined;
6355        getBreakpointStatementAtPosition(fileName: string, position: number): TextSpan | undefined;
6356        getSignatureHelpItems(fileName: string, position: number, options: SignatureHelpItemsOptions | undefined): SignatureHelpItems | undefined;
6357        getRenameInfo(fileName: string, position: number, preferences: UserPreferences): RenameInfo;
6358        /** @deprecated Use the signature with `UserPreferences` instead. */
6359        getRenameInfo(fileName: string, position: number, options?: RenameInfoOptions): RenameInfo;
6360        findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean, providePrefixAndSuffixTextForRename?: boolean): readonly RenameLocation[] | undefined;
6361        getSmartSelectionRange(fileName: string, position: number): SelectionRange;
6362        getDefinitionAtPosition(fileName: string, position: number): readonly DefinitionInfo[] | undefined;
6363        getDefinitionAndBoundSpan(fileName: string, position: number): DefinitionInfoAndBoundSpan | undefined;
6364        getTypeDefinitionAtPosition(fileName: string, position: number): readonly DefinitionInfo[] | undefined;
6365        getImplementationAtPosition(fileName: string, position: number): readonly ImplementationLocation[] | undefined;
6366        getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[] | undefined;
6367        findReferences(fileName: string, position: number): ReferencedSymbol[] | undefined;
6368        getDocumentHighlights(fileName: string, position: number, filesToSearch: string[]): DocumentHighlights[] | undefined;
6369        getFileReferences(fileName: string): ReferenceEntry[];
6370        /** @deprecated */
6371        getOccurrencesAtPosition(fileName: string, position: number): readonly ReferenceEntry[] | undefined;
6372        getNavigateToItems(searchValue: string, maxResultCount?: number, fileName?: string, excludeDtsFiles?: boolean): NavigateToItem[];
6373        getNavigationBarItems(fileName: string): NavigationBarItem[];
6374        getNavigationTree(fileName: string): NavigationTree;
6375        prepareCallHierarchy(fileName: string, position: number): CallHierarchyItem | CallHierarchyItem[] | undefined;
6376        provideCallHierarchyIncomingCalls(fileName: string, position: number): CallHierarchyIncomingCall[];
6377        provideCallHierarchyOutgoingCalls(fileName: string, position: number): CallHierarchyOutgoingCall[];
6378        provideInlayHints(fileName: string, span: TextSpan, preferences: UserPreferences | undefined): InlayHint[];
6379        getOutliningSpans(fileName: string): OutliningSpan[];
6380        getTodoComments(fileName: string, descriptors: TodoCommentDescriptor[]): TodoComment[];
6381        getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[];
6382        getIndentationAtPosition(fileName: string, position: number, options: EditorOptions | EditorSettings): number;
6383        getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
6384        getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
6385        getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[];
6386        getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined;
6387        isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean;
6388        /**
6389         * This will return a defined result if the position is after the `>` of the opening tag, or somewhere in the text, of a JSXElement with no closing tag.
6390         * Editors should call this after `>` is typed.
6391         */
6392        getJsxClosingTagAtPosition(fileName: string, position: number): JsxClosingTagInfo | undefined;
6393        getSpanOfEnclosingComment(fileName: string, position: number, onlyMultiLine: boolean): TextSpan | undefined;
6394        toLineColumnOffset?(fileName: string, position: number): LineAndCharacter;
6395        getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: readonly number[], formatOptions: FormatCodeSettings, preferences: UserPreferences): readonly CodeFixAction[];
6396        getCombinedCodeFix(scope: CombinedCodeFixScope, fixId: {}, formatOptions: FormatCodeSettings, preferences: UserPreferences): CombinedCodeActions;
6397        applyCodeActionCommand(action: CodeActionCommand, formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult>;
6398        applyCodeActionCommand(action: CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult[]>;
6399        applyCodeActionCommand(action: CodeActionCommand | CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
6400        /** @deprecated `fileName` will be ignored */
6401        applyCodeActionCommand(fileName: string, action: CodeActionCommand): Promise<ApplyCodeActionCommandResult>;
6402        /** @deprecated `fileName` will be ignored */
6403        applyCodeActionCommand(fileName: string, action: CodeActionCommand[]): Promise<ApplyCodeActionCommandResult[]>;
6404        /** @deprecated `fileName` will be ignored */
6405        applyCodeActionCommand(fileName: string, action: CodeActionCommand | CodeActionCommand[]): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>;
6406        getApplicableRefactors(fileName: string, positionOrRange: number | TextRange, preferences: UserPreferences | undefined, triggerReason?: RefactorTriggerReason, kind?: string): ApplicableRefactorInfo[];
6407        getEditsForRefactor(fileName: string, formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string, preferences: UserPreferences | undefined): RefactorEditInfo | undefined;
6408        organizeImports(args: OrganizeImportsArgs, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): readonly FileTextChanges[];
6409        getEditsForFileRename(oldFilePath: string, newFilePath: string, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): readonly FileTextChanges[];
6410        getEmitOutput(fileName: string, emitOnlyDtsFiles?: boolean, forceDtsEmit?: boolean): EmitOutput;
6411        getProgram(): Program | undefined;
6412        getBuilderProgram(): BuilderProgram | undefined;
6413        toggleLineComment(fileName: string, textRange: TextRange): TextChange[];
6414        toggleMultilineComment(fileName: string, textRange: TextRange): TextChange[];
6415        commentSelection(fileName: string, textRange: TextRange): TextChange[];
6416        uncommentSelection(fileName: string, textRange: TextRange): TextChange[];
6417        dispose(): void;
6418        updateRootFiles?(rootFiles: string[]): void;
6419        getProps?(): string[];
6420    }
6421    interface JsxClosingTagInfo {
6422        readonly newText: string;
6423    }
6424    interface CombinedCodeFixScope {
6425        type: "file";
6426        fileName: string;
6427    }
6428    enum OrganizeImportsMode {
6429        All = "All",
6430        SortAndCombine = "SortAndCombine",
6431        RemoveUnused = "RemoveUnused"
6432    }
6433    interface OrganizeImportsArgs extends CombinedCodeFixScope {
6434        /** @deprecated Use `mode` instead */
6435        skipDestructiveCodeActions?: boolean;
6436        mode?: OrganizeImportsMode;
6437    }
6438    type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<" | "#" | " ";
6439    enum CompletionTriggerKind {
6440        /** Completion was triggered by typing an identifier, manual invocation (e.g Ctrl+Space) or via API. */
6441        Invoked = 1,
6442        /** Completion was triggered by a trigger character. */
6443        TriggerCharacter = 2,
6444        /** Completion was re-triggered as the current completion list is incomplete. */
6445        TriggerForIncompleteCompletions = 3
6446    }
6447    interface GetCompletionsAtPositionOptions extends UserPreferences {
6448        /**
6449         * If the editor is asking for completions because a certain character was typed
6450         * (as opposed to when the user explicitly requested them) this should be set.
6451         */
6452        triggerCharacter?: CompletionsTriggerCharacter;
6453        triggerKind?: CompletionTriggerKind;
6454        /** @deprecated Use includeCompletionsForModuleExports */
6455        includeExternalModuleExports?: boolean;
6456        /** @deprecated Use includeCompletionsWithInsertText */
6457        includeInsertTextCompletions?: boolean;
6458    }
6459    type SignatureHelpTriggerCharacter = "," | "(" | "<";
6460    type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")";
6461    interface SignatureHelpItemsOptions {
6462        triggerReason?: SignatureHelpTriggerReason;
6463    }
6464    type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason;
6465    /**
6466     * Signals that the user manually requested signature help.
6467     * The language service will unconditionally attempt to provide a result.
6468     */
6469    interface SignatureHelpInvokedReason {
6470        kind: "invoked";
6471        triggerCharacter?: undefined;
6472    }
6473    /**
6474     * Signals that the signature help request came from a user typing a character.
6475     * Depending on the character and the syntactic context, the request may or may not be served a result.
6476     */
6477    interface SignatureHelpCharacterTypedReason {
6478        kind: "characterTyped";
6479        /**
6480         * Character that was responsible for triggering signature help.
6481         */
6482        triggerCharacter: SignatureHelpTriggerCharacter;
6483    }
6484    /**
6485     * Signals that this signature help request came from typing a character or moving the cursor.
6486     * This should only occur if a signature help session was already active and the editor needs to see if it should adjust.
6487     * The language service will unconditionally attempt to provide a result.
6488     * `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move.
6489     */
6490    interface SignatureHelpRetriggeredReason {
6491        kind: "retrigger";
6492        /**
6493         * Character that was responsible for triggering signature help.
6494         */
6495        triggerCharacter?: SignatureHelpRetriggerCharacter;
6496    }
6497    interface ApplyCodeActionCommandResult {
6498        successMessage: string;
6499    }
6500    interface Classifications {
6501        spans: number[];
6502        endOfLineState: EndOfLineState;
6503    }
6504    interface ClassifiedSpan {
6505        textSpan: TextSpan;
6506        classificationType: ClassificationTypeNames;
6507    }
6508    interface ClassifiedSpan2020 {
6509        textSpan: TextSpan;
6510        classificationType: number;
6511    }
6512    /**
6513     * Navigation bar interface designed for visual studio's dual-column layout.
6514     * This does not form a proper tree.
6515     * The navbar is returned as a list of top-level items, each of which has a list of child items.
6516     * Child items always have an empty array for their `childItems`.
6517     */
6518    interface NavigationBarItem {
6519        text: string;
6520        kind: ScriptElementKind;
6521        kindModifiers: string;
6522        spans: TextSpan[];
6523        childItems: NavigationBarItem[];
6524        indent: number;
6525        bolded: boolean;
6526        grayed: boolean;
6527    }
6528    /**
6529     * Node in a tree of nested declarations in a file.
6530     * The top node is always a script or module node.
6531     */
6532    interface NavigationTree {
6533        /** Name of the declaration, or a short description, e.g. "<class>". */
6534        text: string;
6535        kind: ScriptElementKind;
6536        /** ScriptElementKindModifier separated by commas, e.g. "public,abstract" */
6537        kindModifiers: string;
6538        /**
6539         * Spans of the nodes that generated this declaration.
6540         * There will be more than one if this is the result of merging.
6541         */
6542        spans: TextSpan[];
6543        nameSpan: TextSpan | undefined;
6544        /** Present if non-empty */
6545        childItems?: NavigationTree[];
6546    }
6547    interface CallHierarchyItem {
6548        name: string;
6549        kind: ScriptElementKind;
6550        kindModifiers?: string;
6551        file: string;
6552        span: TextSpan;
6553        selectionSpan: TextSpan;
6554        containerName?: string;
6555    }
6556    interface CallHierarchyIncomingCall {
6557        from: CallHierarchyItem;
6558        fromSpans: TextSpan[];
6559    }
6560    interface CallHierarchyOutgoingCall {
6561        to: CallHierarchyItem;
6562        fromSpans: TextSpan[];
6563    }
6564    enum InlayHintKind {
6565        Type = "Type",
6566        Parameter = "Parameter",
6567        Enum = "Enum"
6568    }
6569    interface InlayHint {
6570        text: string;
6571        position: number;
6572        kind: InlayHintKind;
6573        whitespaceBefore?: boolean;
6574        whitespaceAfter?: boolean;
6575    }
6576    interface TodoCommentDescriptor {
6577        text: string;
6578        priority: number;
6579    }
6580    interface TodoComment {
6581        descriptor: TodoCommentDescriptor;
6582        message: string;
6583        position: number;
6584    }
6585    interface TextChange {
6586        span: TextSpan;
6587        newText: string;
6588    }
6589    interface FileTextChanges {
6590        fileName: string;
6591        textChanges: readonly TextChange[];
6592        isNewFile?: boolean;
6593    }
6594    interface CodeAction {
6595        /** Description of the code action to display in the UI of the editor */
6596        description: string;
6597        /** Text changes to apply to each file as part of the code action */
6598        changes: FileTextChanges[];
6599        /**
6600         * If the user accepts the code fix, the editor should send the action back in a `applyAction` request.
6601         * This allows the language service to have side effects (e.g. installing dependencies) upon a code fix.
6602         */
6603        commands?: CodeActionCommand[];
6604    }
6605    interface CodeFixAction extends CodeAction {
6606        /** Short name to identify the fix, for use by telemetry. */
6607        fixName: string;
6608        /**
6609         * If present, one may call 'getCombinedCodeFix' with this fixId.
6610         * This may be omitted to indicate that the code fix can't be applied in a group.
6611         */
6612        fixId?: {};
6613        fixAllDescription?: string;
6614    }
6615    interface CombinedCodeActions {
6616        changes: readonly FileTextChanges[];
6617        commands?: readonly CodeActionCommand[];
6618    }
6619    type CodeActionCommand = InstallPackageAction;
6620    interface InstallPackageAction {
6621    }
6622    /**
6623     * A set of one or more available refactoring actions, grouped under a parent refactoring.
6624     */
6625    interface ApplicableRefactorInfo {
6626        /**
6627         * The programmatic name of the refactoring
6628         */
6629        name: string;
6630        /**
6631         * A description of this refactoring category to show to the user.
6632         * If the refactoring gets inlined (see below), this text will not be visible.
6633         */
6634        description: string;
6635        /**
6636         * Inlineable refactorings can have their actions hoisted out to the top level
6637         * of a context menu. Non-inlineanable refactorings should always be shown inside
6638         * their parent grouping.
6639         *
6640         * If not specified, this value is assumed to be 'true'
6641         */
6642        inlineable?: boolean;
6643        actions: RefactorActionInfo[];
6644    }
6645    /**
6646     * Represents a single refactoring action - for example, the "Extract Method..." refactor might
6647     * offer several actions, each corresponding to a surround class or closure to extract into.
6648     */
6649    interface RefactorActionInfo {
6650        /**
6651         * The programmatic name of the refactoring action
6652         */
6653        name: string;
6654        /**
6655         * A description of this refactoring action to show to the user.
6656         * If the parent refactoring is inlined away, this will be the only text shown,
6657         * so this description should make sense by itself if the parent is inlineable=true
6658         */
6659        description: string;
6660        /**
6661         * A message to show to the user if the refactoring cannot be applied in
6662         * the current context.
6663         */
6664        notApplicableReason?: string;
6665        /**
6666         * The hierarchical dotted name of the refactor action.
6667         */
6668        kind?: string;
6669    }
6670    /**
6671     * A set of edits to make in response to a refactor action, plus an optional
6672     * location where renaming should be invoked from
6673     */
6674    interface RefactorEditInfo {
6675        edits: FileTextChanges[];
6676        renameFilename?: string;
6677        renameLocation?: number;
6678        commands?: CodeActionCommand[];
6679    }
6680    type RefactorTriggerReason = "implicit" | "invoked";
6681    interface TextInsertion {
6682        newText: string;
6683        /** The position in newText the caret should point to after the insertion. */
6684        caretOffset: number;
6685    }
6686    interface DocumentSpan {
6687        textSpan: TextSpan;
6688        fileName: string;
6689        /**
6690         * If the span represents a location that was remapped (e.g. via a .d.ts.map file),
6691         * then the original filename and span will be specified here
6692         */
6693        originalTextSpan?: TextSpan;
6694        originalFileName?: string;
6695        /**
6696         * If DocumentSpan.textSpan is the span for name of the declaration,
6697         * then this is the span for relevant declaration
6698         */
6699        contextSpan?: TextSpan;
6700        originalContextSpan?: TextSpan;
6701    }
6702    interface RenameLocation extends DocumentSpan {
6703        readonly prefixText?: string;
6704        readonly suffixText?: string;
6705    }
6706    interface ReferenceEntry extends DocumentSpan {
6707        isWriteAccess: boolean;
6708        isInString?: true;
6709    }
6710    interface ImplementationLocation extends DocumentSpan {
6711        kind: ScriptElementKind;
6712        displayParts: SymbolDisplayPart[];
6713    }
6714    enum HighlightSpanKind {
6715        none = "none",
6716        definition = "definition",
6717        reference = "reference",
6718        writtenReference = "writtenReference"
6719    }
6720    interface HighlightSpan {
6721        fileName?: string;
6722        isInString?: true;
6723        textSpan: TextSpan;
6724        contextSpan?: TextSpan;
6725        kind: HighlightSpanKind;
6726    }
6727    interface NavigateToItem {
6728        name: string;
6729        kind: ScriptElementKind;
6730        kindModifiers: string;
6731        matchKind: "exact" | "prefix" | "substring" | "camelCase";
6732        isCaseSensitive: boolean;
6733        fileName: string;
6734        textSpan: TextSpan;
6735        containerName: string;
6736        containerKind: ScriptElementKind;
6737    }
6738    enum IndentStyle {
6739        None = 0,
6740        Block = 1,
6741        Smart = 2
6742    }
6743    enum SemicolonPreference {
6744        Ignore = "ignore",
6745        Insert = "insert",
6746        Remove = "remove"
6747    }
6748    /** @deprecated - consider using EditorSettings instead */
6749    interface EditorOptions {
6750        BaseIndentSize?: number;
6751        IndentSize: number;
6752        TabSize: number;
6753        NewLineCharacter: string;
6754        ConvertTabsToSpaces: boolean;
6755        IndentStyle: IndentStyle;
6756    }
6757    interface EditorSettings {
6758        baseIndentSize?: number;
6759        indentSize?: number;
6760        tabSize?: number;
6761        newLineCharacter?: string;
6762        convertTabsToSpaces?: boolean;
6763        indentStyle?: IndentStyle;
6764        trimTrailingWhitespace?: boolean;
6765    }
6766    /** @deprecated - consider using FormatCodeSettings instead */
6767    interface FormatCodeOptions extends EditorOptions {
6768        InsertSpaceAfterCommaDelimiter: boolean;
6769        InsertSpaceAfterSemicolonInForStatements: boolean;
6770        InsertSpaceBeforeAndAfterBinaryOperators: boolean;
6771        InsertSpaceAfterConstructor?: boolean;
6772        InsertSpaceAfterKeywordsInControlFlowStatements: boolean;
6773        InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean;
6774        InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean;
6775        InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean;
6776        InsertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
6777        InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean;
6778        InsertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
6779        InsertSpaceAfterTypeAssertion?: boolean;
6780        InsertSpaceBeforeFunctionParenthesis?: boolean;
6781        PlaceOpenBraceOnNewLineForFunctions: boolean;
6782        PlaceOpenBraceOnNewLineForControlBlocks: boolean;
6783        insertSpaceBeforeTypeAnnotation?: boolean;
6784    }
6785    interface FormatCodeSettings extends EditorSettings {
6786        readonly insertSpaceAfterCommaDelimiter?: boolean;
6787        readonly insertSpaceAfterSemicolonInForStatements?: boolean;
6788        readonly insertSpaceBeforeAndAfterBinaryOperators?: boolean;
6789        readonly insertSpaceAfterConstructor?: boolean;
6790        readonly insertSpaceAfterKeywordsInControlFlowStatements?: boolean;
6791        readonly insertSpaceAfterFunctionKeywordForAnonymousFunctions?: boolean;
6792        readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean;
6793        readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean;
6794        readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean;
6795        readonly insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean;
6796        readonly insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean;
6797        readonly insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean;
6798        readonly insertSpaceAfterTypeAssertion?: boolean;
6799        readonly insertSpaceBeforeFunctionParenthesis?: boolean;
6800        readonly placeOpenBraceOnNewLineForFunctions?: boolean;
6801        readonly placeOpenBraceOnNewLineForControlBlocks?: boolean;
6802        readonly insertSpaceBeforeTypeAnnotation?: boolean;
6803        readonly indentMultiLineObjectLiteralBeginningOnBlankLine?: boolean;
6804        readonly semicolons?: SemicolonPreference;
6805    }
6806    function getDefaultFormatCodeSettings(newLineCharacter?: string): FormatCodeSettings;
6807    interface DefinitionInfo extends DocumentSpan {
6808        kind: ScriptElementKind;
6809        name: string;
6810        containerKind: ScriptElementKind;
6811        containerName: string;
6812        unverified?: boolean;
6813    }
6814    interface DefinitionInfoAndBoundSpan {
6815        definitions?: readonly DefinitionInfo[];
6816        textSpan: TextSpan;
6817    }
6818    interface ReferencedSymbolDefinitionInfo extends DefinitionInfo {
6819        displayParts: SymbolDisplayPart[];
6820    }
6821    interface ReferencedSymbol {
6822        definition: ReferencedSymbolDefinitionInfo;
6823        references: ReferencedSymbolEntry[];
6824    }
6825    interface ReferencedSymbolEntry extends ReferenceEntry {
6826        isDefinition?: boolean;
6827    }
6828    enum SymbolDisplayPartKind {
6829        aliasName = 0,
6830        className = 1,
6831        enumName = 2,
6832        fieldName = 3,
6833        interfaceName = 4,
6834        keyword = 5,
6835        lineBreak = 6,
6836        numericLiteral = 7,
6837        stringLiteral = 8,
6838        localName = 9,
6839        methodName = 10,
6840        moduleName = 11,
6841        operator = 12,
6842        parameterName = 13,
6843        propertyName = 14,
6844        punctuation = 15,
6845        space = 16,
6846        text = 17,
6847        typeParameterName = 18,
6848        enumMemberName = 19,
6849        functionName = 20,
6850        regularExpressionLiteral = 21,
6851        link = 22,
6852        linkName = 23,
6853        linkText = 24
6854    }
6855    interface SymbolDisplayPart {
6856        text: string;
6857        kind: string;
6858    }
6859    interface JSDocLinkDisplayPart extends SymbolDisplayPart {
6860        target: DocumentSpan;
6861    }
6862    interface JSDocTagInfo {
6863        name: string;
6864        text?: SymbolDisplayPart[] | string;
6865        index?: number;
6866    }
6867    interface QuickInfo {
6868        kind: ScriptElementKind;
6869        kindModifiers: string;
6870        textSpan: TextSpan;
6871        displayParts?: SymbolDisplayPart[];
6872        documentation?: SymbolDisplayPart[];
6873        tags?: JSDocTagInfo[];
6874    }
6875    type RenameInfo = RenameInfoSuccess | RenameInfoFailure;
6876    interface RenameInfoSuccess {
6877        canRename: true;
6878        /**
6879         * File or directory to rename.
6880         * If set, `getEditsForFileRename` should be called instead of `findRenameLocations`.
6881         */
6882        fileToRename?: string;
6883        displayName: string;
6884        fullDisplayName: string;
6885        kind: ScriptElementKind;
6886        kindModifiers: string;
6887        triggerSpan: TextSpan;
6888    }
6889    interface RenameInfoFailure {
6890        canRename: false;
6891        localizedErrorMessage: string;
6892    }
6893    /**
6894     * @deprecated Use `UserPreferences` instead.
6895     */
6896    interface RenameInfoOptions {
6897        readonly allowRenameOfImportPath?: boolean;
6898    }
6899    interface DocCommentTemplateOptions {
6900        readonly generateReturnInDocTemplate?: boolean;
6901    }
6902    interface SignatureHelpParameter {
6903        name: string;
6904        documentation: SymbolDisplayPart[];
6905        displayParts: SymbolDisplayPart[];
6906        isOptional: boolean;
6907        isRest?: boolean;
6908    }
6909    interface SelectionRange {
6910        textSpan: TextSpan;
6911        parent?: SelectionRange;
6912    }
6913    /**
6914     * Represents a single signature to show in signature help.
6915     * The id is used for subsequent calls into the language service to ask questions about the
6916     * signature help item in the context of any documents that have been updated.  i.e. after
6917     * an edit has happened, while signature help is still active, the host can ask important
6918     * questions like 'what parameter is the user currently contained within?'.
6919     */
6920    interface SignatureHelpItem {
6921        isVariadic: boolean;
6922        prefixDisplayParts: SymbolDisplayPart[];
6923        suffixDisplayParts: SymbolDisplayPart[];
6924        separatorDisplayParts: SymbolDisplayPart[];
6925        parameters: SignatureHelpParameter[];
6926        documentation: SymbolDisplayPart[];
6927        tags: JSDocTagInfo[];
6928    }
6929    /**
6930     * Represents a set of signature help items, and the preferred item that should be selected.
6931     */
6932    interface SignatureHelpItems {
6933        items: SignatureHelpItem[];
6934        applicableSpan: TextSpan;
6935        selectedItemIndex: number;
6936        argumentIndex: number;
6937        argumentCount: number;
6938    }
6939    enum CompletionInfoFlags {
6940        None = 0,
6941        MayIncludeAutoImports = 1,
6942        IsImportStatementCompletion = 2,
6943        IsContinuation = 4,
6944        ResolvedModuleSpecifiers = 8,
6945        ResolvedModuleSpecifiersBeyondLimit = 16,
6946        MayIncludeMethodSnippets = 32
6947    }
6948    interface CompletionInfo {
6949        /** For performance telemetry. */
6950        flags?: CompletionInfoFlags;
6951        /** Not true for all global completions. This will be true if the enclosing scope matches a few syntax kinds. See `isSnippetScope`. */
6952        isGlobalCompletion: boolean;
6953        isMemberCompletion: boolean;
6954        /**
6955         * In the absence of `CompletionEntry["replacementSpan"]`, the editor may choose whether to use
6956         * this span or its default one. If `CompletionEntry["replacementSpan"]` is defined, that span
6957         * must be used to commit that completion entry.
6958         */
6959        optionalReplacementSpan?: TextSpan;
6960        /**
6961         * true when the current location also allows for a new identifier
6962         */
6963        isNewIdentifierLocation: boolean;
6964        /**
6965         * Indicates to client to continue requesting completions on subsequent keystrokes.
6966         */
6967        isIncomplete?: true;
6968        entries: CompletionEntry[];
6969    }
6970    interface CompletionEntryDataAutoImport {
6971        /**
6972         * The name of the property or export in the module's symbol table. Differs from the completion name
6973         * in the case of InternalSymbolName.ExportEquals and InternalSymbolName.Default.
6974         */
6975        exportName: string;
6976        moduleSpecifier?: string;
6977        /** The file name declaring the export's module symbol, if it was an external module */
6978        fileName?: string;
6979        /** The module name (with quotes stripped) of the export's module symbol, if it was an ambient module */
6980        ambientModuleName?: string;
6981        /** True if the export was found in the package.json AutoImportProvider */
6982        isPackageJsonImport?: true;
6983    }
6984    interface CompletionEntryDataUnresolved extends CompletionEntryDataAutoImport {
6985        /** The key in the `ExportMapCache` where the completion entry's `SymbolExportInfo[]` is found */
6986        exportMapKey: string;
6987    }
6988    interface CompletionEntryDataResolved extends CompletionEntryDataAutoImport {
6989        moduleSpecifier: string;
6990    }
6991    type CompletionEntryData = CompletionEntryDataUnresolved | CompletionEntryDataResolved;
6992    interface CompletionEntry {
6993        name: string;
6994        kind: ScriptElementKind;
6995        kindModifiers?: string;
6996        sortText: string;
6997        insertText?: string;
6998        isSnippet?: true;
6999        /**
7000         * An optional span that indicates the text to be replaced by this completion item.
7001         * If present, this span should be used instead of the default one.
7002         * It will be set if the required span differs from the one generated by the default replacement behavior.
7003         */
7004        replacementSpan?: TextSpan;
7005        hasAction?: true;
7006        source?: string;
7007        sourceDisplay?: SymbolDisplayPart[];
7008        labelDetails?: CompletionEntryLabelDetails;
7009        isRecommended?: true;
7010        isFromUncheckedFile?: true;
7011        isPackageJsonImport?: true;
7012        isImportStatementCompletion?: true;
7013        /**
7014         * A property to be sent back to TS Server in the CompletionDetailsRequest, along with `name`,
7015         * that allows TS Server to look up the symbol represented by the completion item, disambiguating
7016         * items with the same name. Currently only defined for auto-import completions, but the type is
7017         * `unknown` in the protocol, so it can be changed as needed to support other kinds of completions.
7018         * The presence of this property should generally not be used to assume that this completion entry
7019         * is an auto-import.
7020         */
7021        data?: CompletionEntryData;
7022        jsDoc?: JSDocTagInfo[];
7023        displayParts?: SymbolDisplayPart[];
7024    }
7025    interface CompletionEntryLabelDetails {
7026        detail?: string;
7027        description?: string;
7028    }
7029    interface CompletionEntryDetails {
7030        name: string;
7031        kind: ScriptElementKind;
7032        kindModifiers: string;
7033        displayParts: SymbolDisplayPart[];
7034        documentation?: SymbolDisplayPart[];
7035        tags?: JSDocTagInfo[];
7036        codeActions?: CodeAction[];
7037        /** @deprecated Use `sourceDisplay` instead. */
7038        source?: SymbolDisplayPart[];
7039        sourceDisplay?: SymbolDisplayPart[];
7040    }
7041    interface OutliningSpan {
7042        /** The span of the document to actually collapse. */
7043        textSpan: TextSpan;
7044        /** The span of the document to display when the user hovers over the collapsed span. */
7045        hintSpan: TextSpan;
7046        /** The text to display in the editor for the collapsed region. */
7047        bannerText: string;
7048        /**
7049         * Whether or not this region should be automatically collapsed when
7050         * the 'Collapse to Definitions' command is invoked.
7051         */
7052        autoCollapse: boolean;
7053        /**
7054         * Classification of the contents of the span
7055         */
7056        kind: OutliningSpanKind;
7057    }
7058    enum OutliningSpanKind {
7059        /** Single or multi-line comments */
7060        Comment = "comment",
7061        /** Sections marked by '// #region' and '// #endregion' comments */
7062        Region = "region",
7063        /** Declarations and expressions */
7064        Code = "code",
7065        /** Contiguous blocks of import declarations */
7066        Imports = "imports"
7067    }
7068    enum OutputFileType {
7069        JavaScript = 0,
7070        SourceMap = 1,
7071        Declaration = 2
7072    }
7073    enum EndOfLineState {
7074        None = 0,
7075        InMultiLineCommentTrivia = 1,
7076        InSingleQuoteStringLiteral = 2,
7077        InDoubleQuoteStringLiteral = 3,
7078        InTemplateHeadOrNoSubstitutionTemplate = 4,
7079        InTemplateMiddleOrTail = 5,
7080        InTemplateSubstitutionPosition = 6
7081    }
7082    enum TokenClass {
7083        Punctuation = 0,
7084        Keyword = 1,
7085        Operator = 2,
7086        Comment = 3,
7087        Whitespace = 4,
7088        Identifier = 5,
7089        NumberLiteral = 6,
7090        BigIntLiteral = 7,
7091        StringLiteral = 8,
7092        RegExpLiteral = 9
7093    }
7094    interface ClassificationResult {
7095        finalLexState: EndOfLineState;
7096        entries: ClassificationInfo[];
7097    }
7098    interface ClassificationInfo {
7099        length: number;
7100        classification: TokenClass;
7101    }
7102    interface Classifier {
7103        /**
7104         * Gives lexical classifications of tokens on a line without any syntactic context.
7105         * For instance, a token consisting of the text 'string' can be either an identifier
7106         * named 'string' or the keyword 'string', however, because this classifier is not aware,
7107         * it relies on certain heuristics to give acceptable results. For classifications where
7108         * speed trumps accuracy, this function is preferable; however, for true accuracy, the
7109         * syntactic classifier is ideal. In fact, in certain editing scenarios, combining the
7110         * lexical, syntactic, and semantic classifiers may issue the best user experience.
7111         *
7112         * @param text                      The text of a line to classify.
7113         * @param lexState                  The state of the lexical classifier at the end of the previous line.
7114         * @param syntacticClassifierAbsent Whether the client is *not* using a syntactic classifier.
7115         *                                  If there is no syntactic classifier (syntacticClassifierAbsent=true),
7116         *                                  certain heuristics may be used in its place; however, if there is a
7117         *                                  syntactic classifier (syntacticClassifierAbsent=false), certain
7118         *                                  classifications which may be incorrectly categorized will be given
7119         *                                  back as Identifiers in order to allow the syntactic classifier to
7120         *                                  subsume the classification.
7121         * @deprecated Use getLexicalClassifications instead.
7122         */
7123        getClassificationsForLine(text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean): ClassificationResult;
7124        getEncodedLexicalClassifications(text: string, endOfLineState: EndOfLineState, syntacticClassifierAbsent: boolean): Classifications;
7125    }
7126    enum ScriptElementKind {
7127        unknown = "",
7128        warning = "warning",
7129        /** predefined type (void) or keyword (class) */
7130        keyword = "keyword",
7131        /** top level script node */
7132        scriptElement = "script",
7133        /** module foo {} */
7134        moduleElement = "module",
7135        /** class X {} */
7136        classElement = "class",
7137        /** var x = class X {} */
7138        localClassElement = "local class",
7139        /** struct X {} */
7140        structElement = "struct",
7141        /** interface Y {} */
7142        interfaceElement = "interface",
7143        /** type T = ... */
7144        typeElement = "type",
7145        /** enum E */
7146        enumElement = "enum",
7147        enumMemberElement = "enum member",
7148        /**
7149         * Inside module and script only
7150         * const v = ..
7151         */
7152        variableElement = "var",
7153        /** Inside function */
7154        localVariableElement = "local var",
7155        /**
7156         * Inside module and script only
7157         * function f() { }
7158         */
7159        functionElement = "function",
7160        /** Inside function */
7161        localFunctionElement = "local function",
7162        /** class X { [public|private]* foo() {} } */
7163        memberFunctionElement = "method",
7164        /** class X { [public|private]* [get|set] foo:number; } */
7165        memberGetAccessorElement = "getter",
7166        memberSetAccessorElement = "setter",
7167        /**
7168         * class X { [public|private]* foo:number; }
7169         * interface Y { foo:number; }
7170         */
7171        memberVariableElement = "property",
7172        /** class X { [public|private]* accessor foo: number; } */
7173        memberAccessorVariableElement = "accessor",
7174        /**
7175         * class X { constructor() { } }
7176         * class X { static { } }
7177         */
7178        constructorImplementationElement = "constructor",
7179        /** interface Y { ():number; } */
7180        callSignatureElement = "call",
7181        /** interface Y { []:number; } */
7182        indexSignatureElement = "index",
7183        /** interface Y { new():Y; } */
7184        constructSignatureElement = "construct",
7185        /** function foo(*Y*: string) */
7186        parameterElement = "parameter",
7187        typeParameterElement = "type parameter",
7188        primitiveType = "primitive type",
7189        label = "label",
7190        alias = "alias",
7191        constElement = "const",
7192        letElement = "let",
7193        directory = "directory",
7194        externalModuleName = "external module name",
7195        /**
7196         * <JsxTagName attribute1 attribute2={0} />
7197         * @deprecated
7198         */
7199        jsxAttribute = "JSX attribute",
7200        /** String literal */
7201        string = "string",
7202        /** Jsdoc @link: in `{@link C link text}`, the before and after text "{@link " and "}" */
7203        link = "link",
7204        /** Jsdoc @link: in `{@link C link text}`, the entity name "C" */
7205        linkName = "link name",
7206        /** Jsdoc @link: in `{@link C link text}`, the link text "link text" */
7207        linkText = "link text"
7208    }
7209    enum ScriptElementKindModifier {
7210        none = "",
7211        publicMemberModifier = "public",
7212        privateMemberModifier = "private",
7213        protectedMemberModifier = "protected",
7214        exportedModifier = "export",
7215        ambientModifier = "declare",
7216        staticModifier = "static",
7217        abstractModifier = "abstract",
7218        optionalModifier = "optional",
7219        deprecatedModifier = "deprecated",
7220        dtsModifier = ".d.ts",
7221        tsModifier = ".ts",
7222        tsxModifier = ".tsx",
7223        jsModifier = ".js",
7224        jsxModifier = ".jsx",
7225        jsonModifier = ".json",
7226        dmtsModifier = ".d.mts",
7227        mtsModifier = ".mts",
7228        mjsModifier = ".mjs",
7229        dctsModifier = ".d.cts",
7230        ctsModifier = ".cts",
7231        cjsModifier = ".cjs",
7232        etsModifier = ".ets",
7233        detsModifier = ".d.ets"
7234    }
7235    enum ClassificationTypeNames {
7236        comment = "comment",
7237        identifier = "identifier",
7238        keyword = "keyword",
7239        numericLiteral = "number",
7240        bigintLiteral = "bigint",
7241        operator = "operator",
7242        stringLiteral = "string",
7243        whiteSpace = "whitespace",
7244        text = "text",
7245        punctuation = "punctuation",
7246        className = "class name",
7247        enumName = "enum name",
7248        interfaceName = "interface name",
7249        moduleName = "module name",
7250        typeParameterName = "type parameter name",
7251        typeAliasName = "type alias name",
7252        parameterName = "parameter name",
7253        docCommentTagName = "doc comment tag name",
7254        jsxOpenTagName = "jsx open tag name",
7255        jsxCloseTagName = "jsx close tag name",
7256        jsxSelfClosingTagName = "jsx self closing tag name",
7257        jsxAttribute = "jsx attribute",
7258        jsxText = "jsx text",
7259        jsxAttributeStringLiteralValue = "jsx attribute string literal value"
7260    }
7261    enum ClassificationType {
7262        comment = 1,
7263        identifier = 2,
7264        keyword = 3,
7265        numericLiteral = 4,
7266        operator = 5,
7267        stringLiteral = 6,
7268        regularExpressionLiteral = 7,
7269        whiteSpace = 8,
7270        text = 9,
7271        punctuation = 10,
7272        className = 11,
7273        enumName = 12,
7274        interfaceName = 13,
7275        moduleName = 14,
7276        typeParameterName = 15,
7277        typeAliasName = 16,
7278        parameterName = 17,
7279        docCommentTagName = 18,
7280        jsxOpenTagName = 19,
7281        jsxCloseTagName = 20,
7282        jsxSelfClosingTagName = 21,
7283        jsxAttribute = 22,
7284        jsxText = 23,
7285        jsxAttributeStringLiteralValue = 24,
7286        bigintLiteral = 25
7287    }
7288    interface InlayHintsContext {
7289        file: SourceFile;
7290        program: Program;
7291        cancellationToken: CancellationToken;
7292        host: LanguageServiceHost;
7293        span: TextSpan;
7294        preferences: UserPreferences;
7295    }
7296}
7297declare namespace ts {
7298    /** The classifier is used for syntactic highlighting in editors via the TSServer */
7299    function createClassifier(): Classifier;
7300}
7301declare namespace ts {
7302    interface DocumentHighlights {
7303        fileName: string;
7304        highlightSpans: HighlightSpan[];
7305    }
7306}
7307declare namespace ts {
7308    /**
7309     * The document registry represents a store of SourceFile objects that can be shared between
7310     * multiple LanguageService instances. A LanguageService instance holds on the SourceFile (AST)
7311     * of files in the context.
7312     * SourceFile objects account for most of the memory usage by the language service. Sharing
7313     * the same DocumentRegistry instance between different instances of LanguageService allow
7314     * for more efficient memory utilization since all projects will share at least the library
7315     * file (lib.d.ts).
7316     *
7317     * A more advanced use of the document registry is to serialize sourceFile objects to disk
7318     * and re-hydrate them when needed.
7319     *
7320     * To create a default DocumentRegistry, use createDocumentRegistry to create one, and pass it
7321     * to all subsequent createLanguageService calls.
7322     */
7323    interface DocumentRegistry {
7324        /**
7325         * Request a stored SourceFile with a given fileName and compilationSettings.
7326         * The first call to acquire will call createLanguageServiceSourceFile to generate
7327         * the SourceFile if was not found in the registry.
7328         *
7329         * @param fileName The name of the file requested
7330         * @param compilationSettingsOrHost Some compilation settings like target affects the
7331         * shape of a the resulting SourceFile. This allows the DocumentRegistry to store
7332         * multiple copies of the same file for different compilation settings. A minimal
7333         * resolution cache is needed to fully define a source file's shape when
7334         * the compilation settings include `module: node16`+, so providing a cache host
7335         * object should be preferred. A common host is a language service `ConfiguredProject`.
7336         * @param scriptSnapshot Text of the file. Only used if the file was not found
7337         * in the registry and a new one was created.
7338         * @param version Current version of the file. Only used if the file was not found
7339         * in the registry and a new one was created.
7340         */
7341        acquireDocument(fileName: string, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
7342        acquireDocumentWithKey(fileName: string, path: Path, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, key: DocumentRegistryBucketKey, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
7343        /**
7344         * Request an updated version of an already existing SourceFile with a given fileName
7345         * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile
7346         * to get an updated SourceFile.
7347         *
7348         * @param fileName The name of the file requested
7349         * @param compilationSettingsOrHost Some compilation settings like target affects the
7350         * shape of a the resulting SourceFile. This allows the DocumentRegistry to store
7351         * multiple copies of the same file for different compilation settings. A minimal
7352         * resolution cache is needed to fully define a source file's shape when
7353         * the compilation settings include `module: node16`+, so providing a cache host
7354         * object should be preferred. A common host is a language service `ConfiguredProject`.
7355         * @param scriptSnapshot Text of the file.
7356         * @param version Current version of the file.
7357         */
7358        updateDocument(fileName: string, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
7359        updateDocumentWithKey(fileName: string, path: Path, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, key: DocumentRegistryBucketKey, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile;
7360        getKeyForCompilationSettings(settings: CompilerOptions): DocumentRegistryBucketKey;
7361        /**
7362         * Informs the DocumentRegistry that a file is not needed any longer.
7363         *
7364         * Note: It is not allowed to call release on a SourceFile that was not acquired from
7365         * this registry originally.
7366         *
7367         * @param fileName The name of the file to be released
7368         * @param compilationSettings The compilation settings used to acquire the file
7369         * @param scriptKind The script kind of the file to be released
7370         */
7371        /**@deprecated pass scriptKind and impliedNodeFormat for correctness */
7372        releaseDocument(fileName: string, compilationSettings: CompilerOptions, scriptKind?: ScriptKind): void;
7373        /**
7374         * Informs the DocumentRegistry that a file is not needed any longer.
7375         *
7376         * Note: It is not allowed to call release on a SourceFile that was not acquired from
7377         * this registry originally.
7378         *
7379         * @param fileName The name of the file to be released
7380         * @param compilationSettings The compilation settings used to acquire the file
7381         * @param scriptKind The script kind of the file to be released
7382         * @param impliedNodeFormat The implied source file format of the file to be released
7383         */
7384        releaseDocument(fileName: string, compilationSettings: CompilerOptions, scriptKind: ScriptKind, impliedNodeFormat: SourceFile["impliedNodeFormat"]): void;
7385        /**
7386         * @deprecated pass scriptKind for and impliedNodeFormat correctness */
7387        releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind?: ScriptKind): void;
7388        releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind: ScriptKind, impliedNodeFormat: SourceFile["impliedNodeFormat"]): void;
7389        reportStats(): string;
7390    }
7391    type DocumentRegistryBucketKey = string & {
7392        __bucketKey: any;
7393    };
7394    function createDocumentRegistry(useCaseSensitiveFileNames?: boolean, currentDirectory?: string): DocumentRegistry;
7395}
7396declare namespace ts {
7397    function preProcessFile(sourceText: string, readImportFiles?: boolean, detectJavaScriptImports?: boolean): PreProcessedFileInfo;
7398}
7399declare namespace ts {
7400    interface TranspileOptions {
7401        compilerOptions?: CompilerOptions;
7402        fileName?: string;
7403        reportDiagnostics?: boolean;
7404        moduleName?: string;
7405        renamedDependencies?: MapLike<string>;
7406        transformers?: CustomTransformers;
7407    }
7408    interface TranspileOutput {
7409        outputText: string;
7410        diagnostics?: Diagnostic[];
7411        sourceMapText?: string;
7412    }
7413    function transpileModule(input: string, transpileOptions: TranspileOptions): TranspileOutput;
7414    function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[], moduleName?: string): string;
7415}
7416declare namespace ts {
7417    /** The version of the language service API */
7418    const servicesVersion = "0.8";
7419    function toEditorSettings(options: EditorOptions | EditorSettings): EditorSettings;
7420    function displayPartsToString(displayParts: SymbolDisplayPart[] | undefined): string;
7421    function getDefaultCompilerOptions(): CompilerOptions;
7422    function getSupportedCodeFixes(): string[];
7423    function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTargetOrOptions: ScriptTarget | CreateSourceFileOptions, version: string, setNodeParents: boolean, scriptKind?: ScriptKind, option?: CompilerOptions): SourceFile;
7424    function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange | undefined, aggressiveChecks?: boolean, option?: CompilerOptions): SourceFile;
7425    function createLanguageService(host: LanguageServiceHost, documentRegistry?: DocumentRegistry, syntaxOnlyOrLanguageServiceMode?: boolean | LanguageServiceMode): LanguageService;
7426    /**
7427     * Get the path of the default library files (lib.d.ts) as distributed with the typescript
7428     * node package.
7429     * The functionality is not supported if the ts module is consumed outside of a node module.
7430     */
7431    function getDefaultLibFilePath(options: CompilerOptions): string;
7432}
7433declare namespace ts {
7434    /**
7435     * Transform one or more nodes using the supplied transformers.
7436     * @param source A single `Node` or an array of `Node` objects.
7437     * @param transformers An array of `TransformerFactory` callbacks used to process the transformation.
7438     * @param compilerOptions Optional compiler options.
7439     */
7440    function transform<T extends Node>(source: T | T[], transformers: TransformerFactory<T>[], compilerOptions?: CompilerOptions): TransformationResult<T>;
7441}
7442declare namespace ts {
7443    /** @deprecated Use `factory.createNodeArray` or the factory supplied by your transformation context instead. */
7444    const createNodeArray: <T extends Node>(elements?: readonly T[] | undefined, hasTrailingComma?: boolean | undefined) => NodeArray<T>;
7445    /** @deprecated Use `factory.createNumericLiteral` or the factory supplied by your transformation context instead. */
7446    const createNumericLiteral: (value: string | number, numericLiteralFlags?: TokenFlags | undefined) => NumericLiteral;
7447    /** @deprecated Use `factory.createBigIntLiteral` or the factory supplied by your transformation context instead. */
7448    const createBigIntLiteral: (value: string | PseudoBigInt) => BigIntLiteral;
7449    /** @deprecated Use `factory.createStringLiteral` or the factory supplied by your transformation context instead. */
7450    const createStringLiteral: {
7451        (text: string, isSingleQuote?: boolean | undefined): StringLiteral;
7452        (text: string, isSingleQuote?: boolean | undefined, hasExtendedUnicodeEscape?: boolean | undefined): StringLiteral;
7453    };
7454    /** @deprecated Use `factory.createStringLiteralFromNode` or the factory supplied by your transformation context instead. */
7455    const createStringLiteralFromNode: (sourceNode: PrivateIdentifier | PropertyNameLiteral, isSingleQuote?: boolean | undefined) => StringLiteral;
7456    /** @deprecated Use `factory.createRegularExpressionLiteral` or the factory supplied by your transformation context instead. */
7457    const createRegularExpressionLiteral: (text: string) => RegularExpressionLiteral;
7458    /** @deprecated Use `factory.createLoopVariable` or the factory supplied by your transformation context instead. */
7459    const createLoopVariable: (reservedInNestedScopes?: boolean | undefined) => Identifier;
7460    /** @deprecated Use `factory.createUniqueName` or the factory supplied by your transformation context instead. */
7461    const createUniqueName: (text: string, flags?: GeneratedIdentifierFlags | undefined) => Identifier;
7462    /** @deprecated Use `factory.createPrivateIdentifier` or the factory supplied by your transformation context instead. */
7463    const createPrivateIdentifier: (text: string) => PrivateIdentifier;
7464    /** @deprecated Use `factory.createSuper` or the factory supplied by your transformation context instead. */
7465    const createSuper: () => SuperExpression;
7466    /** @deprecated Use `factory.createThis` or the factory supplied by your transformation context instead. */
7467    const createThis: () => ThisExpression;
7468    /** @deprecated Use `factory.createNull` or the factory supplied by your transformation context instead. */
7469    const createNull: () => NullLiteral;
7470    /** @deprecated Use `factory.createTrue` or the factory supplied by your transformation context instead. */
7471    const createTrue: () => TrueLiteral;
7472    /** @deprecated Use `factory.createFalse` or the factory supplied by your transformation context instead. */
7473    const createFalse: () => FalseLiteral;
7474    /** @deprecated Use `factory.createModifier` or the factory supplied by your transformation context instead. */
7475    const createModifier: <T extends ModifierSyntaxKind>(kind: T) => ModifierToken<T>;
7476    /** @deprecated Use `factory.createModifiersFromModifierFlags` or the factory supplied by your transformation context instead. */
7477    const createModifiersFromModifierFlags: (flags: ModifierFlags) => Modifier[] | undefined;
7478    /** @deprecated Use `factory.createQualifiedName` or the factory supplied by your transformation context instead. */
7479    const createQualifiedName: (left: EntityName, right: string | Identifier) => QualifiedName;
7480    /** @deprecated Use `factory.updateQualifiedName` or the factory supplied by your transformation context instead. */
7481    const updateQualifiedName: (node: QualifiedName, left: EntityName, right: Identifier) => QualifiedName;
7482    /** @deprecated Use `factory.createComputedPropertyName` or the factory supplied by your transformation context instead. */
7483    const createComputedPropertyName: (expression: Expression) => ComputedPropertyName;
7484    /** @deprecated Use `factory.updateComputedPropertyName` or the factory supplied by your transformation context instead. */
7485    const updateComputedPropertyName: (node: ComputedPropertyName, expression: Expression) => ComputedPropertyName;
7486    /** @deprecated Use `factory.createTypeParameterDeclaration` or the factory supplied by your transformation context instead. */
7487    const createTypeParameterDeclaration: {
7488        (modifiers: readonly Modifier[] | undefined, name: string | Identifier, constraint?: TypeNode | undefined, defaultType?: TypeNode | undefined): TypeParameterDeclaration;
7489        (name: string | Identifier, constraint?: TypeNode | undefined, defaultType?: TypeNode | undefined): TypeParameterDeclaration;
7490    };
7491    /** @deprecated Use `factory.updateTypeParameterDeclaration` or the factory supplied by your transformation context instead. */
7492    const updateTypeParameterDeclaration: {
7493        (node: TypeParameterDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
7494        (node: TypeParameterDeclaration, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
7495    };
7496    /** @deprecated Use `factory.createParameterDeclaration` or the factory supplied by your transformation context instead. */
7497    const createParameter: {
7498        (modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken | undefined, type?: TypeNode | undefined, initializer?: Expression | undefined): ParameterDeclaration;
7499        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken | undefined, type?: TypeNode | undefined, initializer?: Expression | undefined): ParameterDeclaration;
7500    };
7501    /** @deprecated Use `factory.updateParameterDeclaration` or the factory supplied by your transformation context instead. */
7502    const updateParameter: {
7503        (node: ParameterDeclaration, modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration;
7504        (node: ParameterDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration;
7505    };
7506    /** @deprecated Use `factory.createDecorator` or the factory supplied by your transformation context instead. */
7507    const createDecorator: (expression: Expression) => Decorator;
7508    /** @deprecated Use `factory.updateDecorator` or the factory supplied by your transformation context instead. */
7509    const updateDecorator: (node: Decorator, expression: Expression) => Decorator;
7510    /** @deprecated Use `factory.createPropertyDeclaration` or the factory supplied by your transformation context instead. */
7511    const createProperty: {
7512        (modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
7513        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
7514    };
7515    /** @deprecated Use `factory.updatePropertyDeclaration` or the factory supplied by your transformation context instead. */
7516    const updateProperty: {
7517        (node: PropertyDeclaration, modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
7518        (node: PropertyDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
7519    };
7520    /** @deprecated Use `factory.createMethodDeclaration` or the factory supplied by your transformation context instead. */
7521    const createMethod: {
7522        (modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration;
7523        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration;
7524    };
7525    /** @deprecated Use `factory.updateMethodDeclaration` or the factory supplied by your transformation context instead. */
7526    const updateMethod: {
7527        (node: MethodDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration;
7528        (node: MethodDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration;
7529    };
7530    /** @deprecated Use `factory.createConstructorDeclaration` or the factory supplied by your transformation context instead. */
7531    const createConstructor: {
7532        (modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
7533        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
7534    };
7535    /** @deprecated Use `factory.updateConstructorDeclaration` or the factory supplied by your transformation context instead. */
7536    const updateConstructor: {
7537        (node: ConstructorDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
7538        (node: ConstructorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
7539    };
7540    /** @deprecated Use `factory.createGetAccessorDeclaration` or the factory supplied by your transformation context instead. */
7541    const createGetAccessor: {
7542        (modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
7543        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
7544    };
7545    /** @deprecated Use `factory.updateGetAccessorDeclaration` or the factory supplied by your transformation context instead. */
7546    const updateGetAccessor: {
7547        (node: GetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
7548        (node: GetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
7549    };
7550    /** @deprecated Use `factory.createSetAccessorDeclaration` or the factory supplied by your transformation context instead. */
7551    const createSetAccessor: {
7552        (modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
7553        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
7554    };
7555    /** @deprecated Use `factory.updateSetAccessorDeclaration` or the factory supplied by your transformation context instead. */
7556    const updateSetAccessor: {
7557        (node: SetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
7558        (node: SetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
7559    };
7560    /** @deprecated Use `factory.createCallSignature` or the factory supplied by your transformation context instead. */
7561    const createCallSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined) => CallSignatureDeclaration;
7562    /** @deprecated Use `factory.updateCallSignature` or the factory supplied by your transformation context instead. */
7563    const updateCallSignature: (node: CallSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined) => CallSignatureDeclaration;
7564    /** @deprecated Use `factory.createConstructSignature` or the factory supplied by your transformation context instead. */
7565    const createConstructSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined) => ConstructSignatureDeclaration;
7566    /** @deprecated Use `factory.updateConstructSignature` or the factory supplied by your transformation context instead. */
7567    const updateConstructSignature: (node: ConstructSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined) => ConstructSignatureDeclaration;
7568    /** @deprecated Use `factory.updateIndexSignature` or the factory supplied by your transformation context instead. */
7569    const updateIndexSignature: {
7570        (node: IndexSignatureDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
7571        (node: IndexSignatureDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
7572    };
7573    /** @deprecated Use `factory.createKeywordTypeNode` or the factory supplied by your transformation context instead. */
7574    const createKeywordTypeNode: <TKind extends KeywordTypeSyntaxKind>(kind: TKind) => KeywordTypeNode<TKind>;
7575    /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */
7576    const createTypePredicateNodeWithModifier: (assertsModifier: AssertsKeyword | undefined, parameterName: string | Identifier | ThisTypeNode, type: TypeNode | undefined) => TypePredicateNode;
7577    /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */
7578    const updateTypePredicateNodeWithModifier: (node: TypePredicateNode, assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode, type: TypeNode | undefined) => TypePredicateNode;
7579    /** @deprecated Use `factory.createTypeReferenceNode` or the factory supplied by your transformation context instead. */
7580    const createTypeReferenceNode: (typeName: string | EntityName, typeArguments?: readonly TypeNode[] | undefined) => TypeReferenceNode;
7581    /** @deprecated Use `factory.updateTypeReferenceNode` or the factory supplied by your transformation context instead. */
7582    const updateTypeReferenceNode: (node: TypeReferenceNode, typeName: EntityName, typeArguments: NodeArray<TypeNode> | undefined) => TypeReferenceNode;
7583    /** @deprecated Use `factory.createFunctionTypeNode` or the factory supplied by your transformation context instead. */
7584    const createFunctionTypeNode: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => FunctionTypeNode;
7585    /** @deprecated Use `factory.updateFunctionTypeNode` or the factory supplied by your transformation context instead. */
7586    const updateFunctionTypeNode: (node: FunctionTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode) => FunctionTypeNode;
7587    /** @deprecated Use `factory.createConstructorTypeNode` or the factory supplied by your transformation context instead. */
7588    const createConstructorTypeNode: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => ConstructorTypeNode;
7589    /** @deprecated Use `factory.updateConstructorTypeNode` or the factory supplied by your transformation context instead. */
7590    const updateConstructorTypeNode: (node: ConstructorTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode) => ConstructorTypeNode;
7591    /** @deprecated Use `factory.createTypeQueryNode` or the factory supplied by your transformation context instead. */
7592    const createTypeQueryNode: (exprName: EntityName, typeArguments?: readonly TypeNode[] | undefined) => TypeQueryNode;
7593    /** @deprecated Use `factory.updateTypeQueryNode` or the factory supplied by your transformation context instead. */
7594    const updateTypeQueryNode: (node: TypeQueryNode, exprName: EntityName, typeArguments?: readonly TypeNode[] | undefined) => TypeQueryNode;
7595    /** @deprecated Use `factory.createTypeLiteralNode` or the factory supplied by your transformation context instead. */
7596    const createTypeLiteralNode: (members: readonly TypeElement[] | undefined) => TypeLiteralNode;
7597    /** @deprecated Use `factory.updateTypeLiteralNode` or the factory supplied by your transformation context instead. */
7598    const updateTypeLiteralNode: (node: TypeLiteralNode, members: NodeArray<TypeElement>) => TypeLiteralNode;
7599    /** @deprecated Use `factory.createArrayTypeNode` or the factory supplied by your transformation context instead. */
7600    const createArrayTypeNode: (elementType: TypeNode) => ArrayTypeNode;
7601    /** @deprecated Use `factory.updateArrayTypeNode` or the factory supplied by your transformation context instead. */
7602    const updateArrayTypeNode: (node: ArrayTypeNode, elementType: TypeNode) => ArrayTypeNode;
7603    /** @deprecated Use `factory.createTupleTypeNode` or the factory supplied by your transformation context instead. */
7604    const createTupleTypeNode: (elements: readonly (TypeNode | NamedTupleMember)[]) => TupleTypeNode;
7605    /** @deprecated Use `factory.updateTupleTypeNode` or the factory supplied by your transformation context instead. */
7606    const updateTupleTypeNode: (node: TupleTypeNode, elements: readonly (TypeNode | NamedTupleMember)[]) => TupleTypeNode;
7607    /** @deprecated Use `factory.createOptionalTypeNode` or the factory supplied by your transformation context instead. */
7608    const createOptionalTypeNode: (type: TypeNode) => OptionalTypeNode;
7609    /** @deprecated Use `factory.updateOptionalTypeNode` or the factory supplied by your transformation context instead. */
7610    const updateOptionalTypeNode: (node: OptionalTypeNode, type: TypeNode) => OptionalTypeNode;
7611    /** @deprecated Use `factory.createRestTypeNode` or the factory supplied by your transformation context instead. */
7612    const createRestTypeNode: (type: TypeNode) => RestTypeNode;
7613    /** @deprecated Use `factory.updateRestTypeNode` or the factory supplied by your transformation context instead. */
7614    const updateRestTypeNode: (node: RestTypeNode, type: TypeNode) => RestTypeNode;
7615    /** @deprecated Use `factory.createUnionTypeNode` or the factory supplied by your transformation context instead. */
7616    const createUnionTypeNode: (types: readonly TypeNode[]) => UnionTypeNode;
7617    /** @deprecated Use `factory.updateUnionTypeNode` or the factory supplied by your transformation context instead. */
7618    const updateUnionTypeNode: (node: UnionTypeNode, types: NodeArray<TypeNode>) => UnionTypeNode;
7619    /** @deprecated Use `factory.createIntersectionTypeNode` or the factory supplied by your transformation context instead. */
7620    const createIntersectionTypeNode: (types: readonly TypeNode[]) => IntersectionTypeNode;
7621    /** @deprecated Use `factory.updateIntersectionTypeNode` or the factory supplied by your transformation context instead. */
7622    const updateIntersectionTypeNode: (node: IntersectionTypeNode, types: NodeArray<TypeNode>) => IntersectionTypeNode;
7623    /** @deprecated Use `factory.createConditionalTypeNode` or the factory supplied by your transformation context instead. */
7624    const createConditionalTypeNode: (checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode) => ConditionalTypeNode;
7625    /** @deprecated Use `factory.updateConditionalTypeNode` or the factory supplied by your transformation context instead. */
7626    const updateConditionalTypeNode: (node: ConditionalTypeNode, checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode) => ConditionalTypeNode;
7627    /** @deprecated Use `factory.createInferTypeNode` or the factory supplied by your transformation context instead. */
7628    const createInferTypeNode: (typeParameter: TypeParameterDeclaration) => InferTypeNode;
7629    /** @deprecated Use `factory.updateInferTypeNode` or the factory supplied by your transformation context instead. */
7630    const updateInferTypeNode: (node: InferTypeNode, typeParameter: TypeParameterDeclaration) => InferTypeNode;
7631    /** @deprecated Use `factory.createImportTypeNode` or the factory supplied by your transformation context instead. */
7632    const createImportTypeNode: {
7633        (argument: TypeNode, assertions?: ImportTypeAssertionContainer | undefined, qualifier?: EntityName | undefined, typeArguments?: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
7634        (argument: TypeNode, assertions?: ImportTypeAssertionContainer | undefined, qualifier?: EntityName | undefined, typeArguments?: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
7635        (argument: TypeNode, qualifier?: EntityName | undefined, typeArguments?: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
7636    };
7637    /** @deprecated Use `factory.updateImportTypeNode` or the factory supplied by your transformation context instead. */
7638    const updateImportTypeNode: {
7639        (node: ImportTypeNode, argument: TypeNode, assertions: ImportTypeAssertionContainer | undefined, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
7640        (node: ImportTypeNode, argument: TypeNode, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean | undefined): ImportTypeNode;
7641    };
7642    /** @deprecated Use `factory.createParenthesizedType` or the factory supplied by your transformation context instead. */
7643    const createParenthesizedType: (type: TypeNode) => ParenthesizedTypeNode;
7644    /** @deprecated Use `factory.updateParenthesizedType` or the factory supplied by your transformation context instead. */
7645    const updateParenthesizedType: (node: ParenthesizedTypeNode, type: TypeNode) => ParenthesizedTypeNode;
7646    /** @deprecated Use `factory.createThisTypeNode` or the factory supplied by your transformation context instead. */
7647    const createThisTypeNode: () => ThisTypeNode;
7648    /** @deprecated Use `factory.updateTypeOperatorNode` or the factory supplied by your transformation context instead. */
7649    const updateTypeOperatorNode: (node: TypeOperatorNode, type: TypeNode) => TypeOperatorNode;
7650    /** @deprecated Use `factory.createIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */
7651    const createIndexedAccessTypeNode: (objectType: TypeNode, indexType: TypeNode) => IndexedAccessTypeNode;
7652    /** @deprecated Use `factory.updateIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */
7653    const updateIndexedAccessTypeNode: (node: IndexedAccessTypeNode, objectType: TypeNode, indexType: TypeNode) => IndexedAccessTypeNode;
7654    /** @deprecated Use `factory.createMappedTypeNode` or the factory supplied by your transformation context instead. */
7655    const createMappedTypeNode: (readonlyToken: ReadonlyKeyword | PlusToken | MinusToken | undefined, typeParameter: TypeParameterDeclaration, nameType: TypeNode | undefined, questionToken: QuestionToken | PlusToken | MinusToken | undefined, type: TypeNode | undefined, members: NodeArray<TypeElement> | undefined) => MappedTypeNode;
7656    /** @deprecated Use `factory.updateMappedTypeNode` or the factory supplied by your transformation context instead. */
7657    const updateMappedTypeNode: (node: MappedTypeNode, readonlyToken: ReadonlyKeyword | PlusToken | MinusToken | undefined, typeParameter: TypeParameterDeclaration, nameType: TypeNode | undefined, questionToken: QuestionToken | PlusToken | MinusToken | undefined, type: TypeNode | undefined, members: NodeArray<TypeElement> | undefined) => MappedTypeNode;
7658    /** @deprecated Use `factory.createLiteralTypeNode` or the factory supplied by your transformation context instead. */
7659    const createLiteralTypeNode: (literal: LiteralExpression | BooleanLiteral | PrefixUnaryExpression | NullLiteral) => LiteralTypeNode;
7660    /** @deprecated Use `factory.updateLiteralTypeNode` or the factory supplied by your transformation context instead. */
7661    const updateLiteralTypeNode: (node: LiteralTypeNode, literal: LiteralExpression | BooleanLiteral | PrefixUnaryExpression | NullLiteral) => LiteralTypeNode;
7662    /** @deprecated Use `factory.createObjectBindingPattern` or the factory supplied by your transformation context instead. */
7663    const createObjectBindingPattern: (elements: readonly BindingElement[]) => ObjectBindingPattern;
7664    /** @deprecated Use `factory.updateObjectBindingPattern` or the factory supplied by your transformation context instead. */
7665    const updateObjectBindingPattern: (node: ObjectBindingPattern, elements: readonly BindingElement[]) => ObjectBindingPattern;
7666    /** @deprecated Use `factory.createArrayBindingPattern` or the factory supplied by your transformation context instead. */
7667    const createArrayBindingPattern: (elements: readonly ArrayBindingElement[]) => ArrayBindingPattern;
7668    /** @deprecated Use `factory.updateArrayBindingPattern` or the factory supplied by your transformation context instead. */
7669    const updateArrayBindingPattern: (node: ArrayBindingPattern, elements: readonly ArrayBindingElement[]) => ArrayBindingPattern;
7670    /** @deprecated Use `factory.createBindingElement` or the factory supplied by your transformation context instead. */
7671    const createBindingElement: (dotDotDotToken: DotDotDotToken | undefined, propertyName: string | PropertyName | undefined, name: string | BindingName, initializer?: Expression | undefined) => BindingElement;
7672    /** @deprecated Use `factory.updateBindingElement` or the factory supplied by your transformation context instead. */
7673    const updateBindingElement: (node: BindingElement, dotDotDotToken: DotDotDotToken | undefined, propertyName: PropertyName | undefined, name: BindingName, initializer: Expression | undefined) => BindingElement;
7674    /** @deprecated Use `factory.createArrayLiteralExpression` or the factory supplied by your transformation context instead. */
7675    const createArrayLiteral: (elements?: readonly Expression[] | undefined, multiLine?: boolean | undefined) => ArrayLiteralExpression;
7676    /** @deprecated Use `factory.updateArrayLiteralExpression` or the factory supplied by your transformation context instead. */
7677    const updateArrayLiteral: (node: ArrayLiteralExpression, elements: readonly Expression[]) => ArrayLiteralExpression;
7678    /** @deprecated Use `factory.createObjectLiteralExpression` or the factory supplied by your transformation context instead. */
7679    const createObjectLiteral: (properties?: readonly ObjectLiteralElementLike[] | undefined, multiLine?: boolean | undefined) => ObjectLiteralExpression;
7680    /** @deprecated Use `factory.updateObjectLiteralExpression` or the factory supplied by your transformation context instead. */
7681    const updateObjectLiteral: (node: ObjectLiteralExpression, properties: readonly ObjectLiteralElementLike[]) => ObjectLiteralExpression;
7682    /** @deprecated Use `factory.createPropertyAccessExpression` or the factory supplied by your transformation context instead. */
7683    const createPropertyAccess: (expression: Expression, name: string | MemberName) => PropertyAccessExpression;
7684    /** @deprecated Use `factory.updatePropertyAccessExpression` or the factory supplied by your transformation context instead. */
7685    const updatePropertyAccess: (node: PropertyAccessExpression, expression: Expression, name: MemberName) => PropertyAccessExpression;
7686    /** @deprecated Use `factory.createPropertyAccessChain` or the factory supplied by your transformation context instead. */
7687    const createPropertyAccessChain: (expression: Expression, questionDotToken: QuestionDotToken | undefined, name: string | MemberName) => PropertyAccessChain;
7688    /** @deprecated Use `factory.updatePropertyAccessChain` or the factory supplied by your transformation context instead. */
7689    const updatePropertyAccessChain: (node: PropertyAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, name: MemberName) => PropertyAccessChain;
7690    /** @deprecated Use `factory.createElementAccessExpression` or the factory supplied by your transformation context instead. */
7691    const createElementAccess: (expression: Expression, index: number | Expression) => ElementAccessExpression;
7692    /** @deprecated Use `factory.updateElementAccessExpression` or the factory supplied by your transformation context instead. */
7693    const updateElementAccess: (node: ElementAccessExpression, expression: Expression, argumentExpression: Expression) => ElementAccessExpression;
7694    /** @deprecated Use `factory.createElementAccessChain` or the factory supplied by your transformation context instead. */
7695    const createElementAccessChain: (expression: Expression, questionDotToken: QuestionDotToken | undefined, index: number | Expression) => ElementAccessChain;
7696    /** @deprecated Use `factory.updateElementAccessChain` or the factory supplied by your transformation context instead. */
7697    const updateElementAccessChain: (node: ElementAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, argumentExpression: Expression) => ElementAccessChain;
7698    /** @deprecated Use `factory.createCallExpression` or the factory supplied by your transformation context instead. */
7699    const createCall: (expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined) => CallExpression;
7700    /** @deprecated Use `factory.updateCallExpression` or the factory supplied by your transformation context instead. */
7701    const updateCall: (node: CallExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]) => CallExpression;
7702    /** @deprecated Use `factory.createCallChain` or the factory supplied by your transformation context instead. */
7703    const createCallChain: (expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined) => CallChain;
7704    /** @deprecated Use `factory.updateCallChain` or the factory supplied by your transformation context instead. */
7705    const updateCallChain: (node: CallChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]) => CallChain;
7706    /** @deprecated Use `factory.createNewExpression` or the factory supplied by your transformation context instead. */
7707    const createNew: (expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined) => NewExpression;
7708    /** @deprecated Use `factory.updateNewExpression` or the factory supplied by your transformation context instead. */
7709    const updateNew: (node: NewExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined) => NewExpression;
7710    /** @deprecated Use `factory.createTypeAssertion` or the factory supplied by your transformation context instead. */
7711    const createTypeAssertion: (type: TypeNode, expression: Expression) => TypeAssertion;
7712    /** @deprecated Use `factory.updateTypeAssertion` or the factory supplied by your transformation context instead. */
7713    const updateTypeAssertion: (node: TypeAssertion, type: TypeNode, expression: Expression) => TypeAssertion;
7714    /** @deprecated Use `factory.createParenthesizedExpression` or the factory supplied by your transformation context instead. */
7715    const createParen: (expression: Expression) => ParenthesizedExpression;
7716    /** @deprecated Use `factory.updateParenthesizedExpression` or the factory supplied by your transformation context instead. */
7717    const updateParen: (node: ParenthesizedExpression, expression: Expression) => ParenthesizedExpression;
7718    /** @deprecated Use `factory.createFunctionExpression` or the factory supplied by your transformation context instead. */
7719    const createFunctionExpression: (modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[] | undefined, type: TypeNode | undefined, body: Block) => FunctionExpression;
7720    /** @deprecated Use `factory.updateFunctionExpression` or the factory supplied by your transformation context instead. */
7721    const updateFunctionExpression: (node: FunctionExpression, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block) => FunctionExpression;
7722    /** @deprecated Use `factory.createDeleteExpression` or the factory supplied by your transformation context instead. */
7723    const createDelete: (expression: Expression) => DeleteExpression;
7724    /** @deprecated Use `factory.updateDeleteExpression` or the factory supplied by your transformation context instead. */
7725    const updateDelete: (node: DeleteExpression, expression: Expression) => DeleteExpression;
7726    /** @deprecated Use `factory.createTypeOfExpression` or the factory supplied by your transformation context instead. */
7727    const createTypeOf: (expression: Expression) => TypeOfExpression;
7728    /** @deprecated Use `factory.updateTypeOfExpression` or the factory supplied by your transformation context instead. */
7729    const updateTypeOf: (node: TypeOfExpression, expression: Expression) => TypeOfExpression;
7730    /** @deprecated Use `factory.createVoidExpression` or the factory supplied by your transformation context instead. */
7731    const createVoid: (expression: Expression) => VoidExpression;
7732    /** @deprecated Use `factory.updateVoidExpression` or the factory supplied by your transformation context instead. */
7733    const updateVoid: (node: VoidExpression, expression: Expression) => VoidExpression;
7734    /** @deprecated Use `factory.createAwaitExpression` or the factory supplied by your transformation context instead. */
7735    const createAwait: (expression: Expression) => AwaitExpression;
7736    /** @deprecated Use `factory.updateAwaitExpression` or the factory supplied by your transformation context instead. */
7737    const updateAwait: (node: AwaitExpression, expression: Expression) => AwaitExpression;
7738    /** @deprecated Use `factory.createPrefixExpression` or the factory supplied by your transformation context instead. */
7739    const createPrefix: (operator: PrefixUnaryOperator, operand: Expression) => PrefixUnaryExpression;
7740    /** @deprecated Use `factory.updatePrefixExpression` or the factory supplied by your transformation context instead. */
7741    const updatePrefix: (node: PrefixUnaryExpression, operand: Expression) => PrefixUnaryExpression;
7742    /** @deprecated Use `factory.createPostfixUnaryExpression` or the factory supplied by your transformation context instead. */
7743    const createPostfix: (operand: Expression, operator: PostfixUnaryOperator) => PostfixUnaryExpression;
7744    /** @deprecated Use `factory.updatePostfixUnaryExpression` or the factory supplied by your transformation context instead. */
7745    const updatePostfix: (node: PostfixUnaryExpression, operand: Expression) => PostfixUnaryExpression;
7746    /** @deprecated Use `factory.createBinaryExpression` or the factory supplied by your transformation context instead. */
7747    const createBinary: (left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression) => BinaryExpression;
7748    /** @deprecated Use `factory.updateConditionalExpression` or the factory supplied by your transformation context instead. */
7749    const updateConditional: (node: ConditionalExpression, condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression) => ConditionalExpression;
7750    /** @deprecated Use `factory.createTemplateExpression` or the factory supplied by your transformation context instead. */
7751    const createTemplateExpression: (head: TemplateHead, templateSpans: readonly TemplateSpan[]) => TemplateExpression;
7752    /** @deprecated Use `factory.updateTemplateExpression` or the factory supplied by your transformation context instead. */
7753    const updateTemplateExpression: (node: TemplateExpression, head: TemplateHead, templateSpans: readonly TemplateSpan[]) => TemplateExpression;
7754    /** @deprecated Use `factory.createTemplateHead` or the factory supplied by your transformation context instead. */
7755    const createTemplateHead: {
7756        (text: string, rawText?: string | undefined, templateFlags?: TokenFlags | undefined): TemplateHead;
7757        (text: string | undefined, rawText: string, templateFlags?: TokenFlags | undefined): TemplateHead;
7758    };
7759    /** @deprecated Use `factory.createTemplateMiddle` or the factory supplied by your transformation context instead. */
7760    const createTemplateMiddle: {
7761        (text: string, rawText?: string | undefined, templateFlags?: TokenFlags | undefined): TemplateMiddle;
7762        (text: string | undefined, rawText: string, templateFlags?: TokenFlags | undefined): TemplateMiddle;
7763    };
7764    /** @deprecated Use `factory.createTemplateTail` or the factory supplied by your transformation context instead. */
7765    const createTemplateTail: {
7766        (text: string, rawText?: string | undefined, templateFlags?: TokenFlags | undefined): TemplateTail;
7767        (text: string | undefined, rawText: string, templateFlags?: TokenFlags | undefined): TemplateTail;
7768    };
7769    /** @deprecated Use `factory.createNoSubstitutionTemplateLiteral` or the factory supplied by your transformation context instead. */
7770    const createNoSubstitutionTemplateLiteral: {
7771        (text: string, rawText?: string | undefined): NoSubstitutionTemplateLiteral;
7772        (text: string | undefined, rawText: string): NoSubstitutionTemplateLiteral;
7773    };
7774    /** @deprecated Use `factory.updateYieldExpression` or the factory supplied by your transformation context instead. */
7775    const updateYield: (node: YieldExpression, asteriskToken: AsteriskToken | undefined, expression: Expression | undefined) => YieldExpression;
7776    /** @deprecated Use `factory.createSpreadExpression` or the factory supplied by your transformation context instead. */
7777    const createSpread: (expression: Expression) => SpreadElement;
7778    /** @deprecated Use `factory.updateSpreadExpression` or the factory supplied by your transformation context instead. */
7779    const updateSpread: (node: SpreadElement, expression: Expression) => SpreadElement;
7780    /** @deprecated Use `factory.createOmittedExpression` or the factory supplied by your transformation context instead. */
7781    const createOmittedExpression: () => OmittedExpression;
7782    /** @deprecated Use `factory.createAsExpression` or the factory supplied by your transformation context instead. */
7783    const createAsExpression: (expression: Expression, type: TypeNode) => AsExpression;
7784    /** @deprecated Use `factory.updateAsExpression` or the factory supplied by your transformation context instead. */
7785    const updateAsExpression: (node: AsExpression, expression: Expression, type: TypeNode) => AsExpression;
7786    /** @deprecated Use `factory.createNonNullExpression` or the factory supplied by your transformation context instead. */
7787    const createNonNullExpression: (expression: Expression) => NonNullExpression;
7788    /** @deprecated Use `factory.updateNonNullExpression` or the factory supplied by your transformation context instead. */
7789    const updateNonNullExpression: (node: NonNullExpression, expression: Expression) => NonNullExpression;
7790    /** @deprecated Use `factory.createNonNullChain` or the factory supplied by your transformation context instead. */
7791    const createNonNullChain: (expression: Expression) => NonNullChain;
7792    /** @deprecated Use `factory.updateNonNullChain` or the factory supplied by your transformation context instead. */
7793    const updateNonNullChain: (node: NonNullChain, expression: Expression) => NonNullChain;
7794    /** @deprecated Use `factory.createMetaProperty` or the factory supplied by your transformation context instead. */
7795    const createMetaProperty: (keywordToken: SyntaxKind.ImportKeyword | SyntaxKind.NewKeyword, name: Identifier) => MetaProperty;
7796    /** @deprecated Use `factory.updateMetaProperty` or the factory supplied by your transformation context instead. */
7797    const updateMetaProperty: (node: MetaProperty, name: Identifier) => MetaProperty;
7798    /** @deprecated Use `factory.createTemplateSpan` or the factory supplied by your transformation context instead. */
7799    const createTemplateSpan: (expression: Expression, literal: TemplateMiddle | TemplateTail) => TemplateSpan;
7800    /** @deprecated Use `factory.updateTemplateSpan` or the factory supplied by your transformation context instead. */
7801    const updateTemplateSpan: (node: TemplateSpan, expression: Expression, literal: TemplateMiddle | TemplateTail) => TemplateSpan;
7802    /** @deprecated Use `factory.createSemicolonClassElement` or the factory supplied by your transformation context instead. */
7803    const createSemicolonClassElement: () => SemicolonClassElement;
7804    /** @deprecated Use `factory.createBlock` or the factory supplied by your transformation context instead. */
7805    const createBlock: (statements: readonly Statement[], multiLine?: boolean | undefined) => Block;
7806    /** @deprecated Use `factory.updateBlock` or the factory supplied by your transformation context instead. */
7807    const updateBlock: (node: Block, statements: readonly Statement[]) => Block;
7808    /** @deprecated Use `factory.createVariableStatement` or the factory supplied by your transformation context instead. */
7809    const createVariableStatement: (modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]) => VariableStatement;
7810    /** @deprecated Use `factory.updateVariableStatement` or the factory supplied by your transformation context instead. */
7811    const updateVariableStatement: (node: VariableStatement, modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList) => VariableStatement;
7812    /** @deprecated Use `factory.createEmptyStatement` or the factory supplied by your transformation context instead. */
7813    const createEmptyStatement: () => EmptyStatement;
7814    /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */
7815    const createExpressionStatement: (expression: Expression) => ExpressionStatement;
7816    /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */
7817    const updateExpressionStatement: (node: ExpressionStatement, expression: Expression) => ExpressionStatement;
7818    /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */
7819    const createStatement: (expression: Expression) => ExpressionStatement;
7820    /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */
7821    const updateStatement: (node: ExpressionStatement, expression: Expression) => ExpressionStatement;
7822    /** @deprecated Use `factory.createIfStatement` or the factory supplied by your transformation context instead. */
7823    const createIf: (expression: Expression, thenStatement: Statement, elseStatement?: Statement | undefined) => IfStatement;
7824    /** @deprecated Use `factory.updateIfStatement` or the factory supplied by your transformation context instead. */
7825    const updateIf: (node: IfStatement, expression: Expression, thenStatement: Statement, elseStatement: Statement | undefined) => IfStatement;
7826    /** @deprecated Use `factory.createDoStatement` or the factory supplied by your transformation context instead. */
7827    const createDo: (statement: Statement, expression: Expression) => DoStatement;
7828    /** @deprecated Use `factory.updateDoStatement` or the factory supplied by your transformation context instead. */
7829    const updateDo: (node: DoStatement, statement: Statement, expression: Expression) => DoStatement;
7830    /** @deprecated Use `factory.createWhileStatement` or the factory supplied by your transformation context instead. */
7831    const createWhile: (expression: Expression, statement: Statement) => WhileStatement;
7832    /** @deprecated Use `factory.updateWhileStatement` or the factory supplied by your transformation context instead. */
7833    const updateWhile: (node: WhileStatement, expression: Expression, statement: Statement) => WhileStatement;
7834    /** @deprecated Use `factory.createForStatement` or the factory supplied by your transformation context instead. */
7835    const createFor: (initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement) => ForStatement;
7836    /** @deprecated Use `factory.updateForStatement` or the factory supplied by your transformation context instead. */
7837    const updateFor: (node: ForStatement, initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement) => ForStatement;
7838    /** @deprecated Use `factory.createForInStatement` or the factory supplied by your transformation context instead. */
7839    const createForIn: (initializer: ForInitializer, expression: Expression, statement: Statement) => ForInStatement;
7840    /** @deprecated Use `factory.updateForInStatement` or the factory supplied by your transformation context instead. */
7841    const updateForIn: (node: ForInStatement, initializer: ForInitializer, expression: Expression, statement: Statement) => ForInStatement;
7842    /** @deprecated Use `factory.createForOfStatement` or the factory supplied by your transformation context instead. */
7843    const createForOf: (awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement) => ForOfStatement;
7844    /** @deprecated Use `factory.updateForOfStatement` or the factory supplied by your transformation context instead. */
7845    const updateForOf: (node: ForOfStatement, awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement) => ForOfStatement;
7846    /** @deprecated Use `factory.createContinueStatement` or the factory supplied by your transformation context instead. */
7847    const createContinue: (label?: string | Identifier | undefined) => ContinueStatement;
7848    /** @deprecated Use `factory.updateContinueStatement` or the factory supplied by your transformation context instead. */
7849    const updateContinue: (node: ContinueStatement, label: Identifier | undefined) => ContinueStatement;
7850    /** @deprecated Use `factory.createBreakStatement` or the factory supplied by your transformation context instead. */
7851    const createBreak: (label?: string | Identifier | undefined) => BreakStatement;
7852    /** @deprecated Use `factory.updateBreakStatement` or the factory supplied by your transformation context instead. */
7853    const updateBreak: (node: BreakStatement, label: Identifier | undefined) => BreakStatement;
7854    /** @deprecated Use `factory.createReturnStatement` or the factory supplied by your transformation context instead. */
7855    const createReturn: (expression?: Expression | undefined) => ReturnStatement;
7856    /** @deprecated Use `factory.updateReturnStatement` or the factory supplied by your transformation context instead. */
7857    const updateReturn: (node: ReturnStatement, expression: Expression | undefined) => ReturnStatement;
7858    /** @deprecated Use `factory.createWithStatement` or the factory supplied by your transformation context instead. */
7859    const createWith: (expression: Expression, statement: Statement) => WithStatement;
7860    /** @deprecated Use `factory.updateWithStatement` or the factory supplied by your transformation context instead. */
7861    const updateWith: (node: WithStatement, expression: Expression, statement: Statement) => WithStatement;
7862    /** @deprecated Use `factory.createSwitchStatement` or the factory supplied by your transformation context instead. */
7863    const createSwitch: (expression: Expression, caseBlock: CaseBlock) => SwitchStatement;
7864    /** @deprecated Use `factory.updateSwitchStatement` or the factory supplied by your transformation context instead. */
7865    const updateSwitch: (node: SwitchStatement, expression: Expression, caseBlock: CaseBlock) => SwitchStatement;
7866    /** @deprecated Use `factory.createLabelStatement` or the factory supplied by your transformation context instead. */
7867    const createLabel: (label: string | Identifier, statement: Statement) => LabeledStatement;
7868    /** @deprecated Use `factory.updateLabelStatement` or the factory supplied by your transformation context instead. */
7869    const updateLabel: (node: LabeledStatement, label: Identifier, statement: Statement) => LabeledStatement;
7870    /** @deprecated Use `factory.createThrowStatement` or the factory supplied by your transformation context instead. */
7871    const createThrow: (expression: Expression) => ThrowStatement;
7872    /** @deprecated Use `factory.updateThrowStatement` or the factory supplied by your transformation context instead. */
7873    const updateThrow: (node: ThrowStatement, expression: Expression) => ThrowStatement;
7874    /** @deprecated Use `factory.createTryStatement` or the factory supplied by your transformation context instead. */
7875    const createTry: (tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined) => TryStatement;
7876    /** @deprecated Use `factory.updateTryStatement` or the factory supplied by your transformation context instead. */
7877    const updateTry: (node: TryStatement, tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined) => TryStatement;
7878    /** @deprecated Use `factory.createDebuggerStatement` or the factory supplied by your transformation context instead. */
7879    const createDebuggerStatement: () => DebuggerStatement;
7880    /** @deprecated Use `factory.createVariableDeclarationList` or the factory supplied by your transformation context instead. */
7881    const createVariableDeclarationList: (declarations: readonly VariableDeclaration[], flags?: NodeFlags | undefined) => VariableDeclarationList;
7882    /** @deprecated Use `factory.updateVariableDeclarationList` or the factory supplied by your transformation context instead. */
7883    const updateVariableDeclarationList: (node: VariableDeclarationList, declarations: readonly VariableDeclaration[]) => VariableDeclarationList;
7884    /** @deprecated Use `factory.createFunctionDeclaration` or the factory supplied by your transformation context instead. */
7885    const createFunctionDeclaration: {
7886        (modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration;
7887        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration;
7888    };
7889    /** @deprecated Use `factory.updateFunctionDeclaration` or the factory supplied by your transformation context instead. */
7890    const updateFunctionDeclaration: {
7891        (node: FunctionDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration;
7892        (node: FunctionDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration;
7893    };
7894    /** @deprecated Use `factory.createClassDeclaration` or the factory supplied by your transformation context instead. */
7895    const createClassDeclaration: {
7896        (modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
7897        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
7898    };
7899    /** @deprecated Use `factory.updateClassDeclaration` or the factory supplied by your transformation context instead. */
7900    const updateClassDeclaration: {
7901        (node: ClassDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
7902        (node: ClassDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
7903    };
7904    /** @deprecated Use `factory.createInterfaceDeclaration` or the factory supplied by your transformation context instead. */
7905    const createInterfaceDeclaration: {
7906        (modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
7907        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
7908    };
7909    /** @deprecated Use `factory.updateInterfaceDeclaration` or the factory supplied by your transformation context instead. */
7910    const updateInterfaceDeclaration: {
7911        (node: InterfaceDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
7912        (node: InterfaceDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
7913    };
7914    /** @deprecated Use `factory.createTypeAliasDeclaration` or the factory supplied by your transformation context instead. */
7915    const createTypeAliasDeclaration: {
7916        (modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
7917        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
7918    };
7919    /** @deprecated Use `factory.updateTypeAliasDeclaration` or the factory supplied by your transformation context instead. */
7920    const updateTypeAliasDeclaration: {
7921        (node: TypeAliasDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
7922        (node: TypeAliasDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
7923    };
7924    /** @deprecated Use `factory.createEnumDeclaration` or the factory supplied by your transformation context instead. */
7925    const createEnumDeclaration: {
7926        (modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
7927        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
7928    };
7929    /** @deprecated Use `factory.updateEnumDeclaration` or the factory supplied by your transformation context instead. */
7930    const updateEnumDeclaration: {
7931        (node: EnumDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
7932        (node: EnumDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
7933    };
7934    /** @deprecated Use `factory.createModuleDeclaration` or the factory supplied by your transformation context instead. */
7935    const createModuleDeclaration: {
7936        (modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags | undefined): ModuleDeclaration;
7937        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags | undefined): ModuleDeclaration;
7938    };
7939    /** @deprecated Use `factory.updateModuleDeclaration` or the factory supplied by your transformation context instead. */
7940    const updateModuleDeclaration: {
7941        (node: ModuleDeclaration, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
7942        (node: ModuleDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
7943    };
7944    /** @deprecated Use `factory.createModuleBlock` or the factory supplied by your transformation context instead. */
7945    const createModuleBlock: (statements: readonly Statement[]) => ModuleBlock;
7946    /** @deprecated Use `factory.updateModuleBlock` or the factory supplied by your transformation context instead. */
7947    const updateModuleBlock: (node: ModuleBlock, statements: readonly Statement[]) => ModuleBlock;
7948    /** @deprecated Use `factory.createCaseBlock` or the factory supplied by your transformation context instead. */
7949    const createCaseBlock: (clauses: readonly CaseOrDefaultClause[]) => CaseBlock;
7950    /** @deprecated Use `factory.updateCaseBlock` or the factory supplied by your transformation context instead. */
7951    const updateCaseBlock: (node: CaseBlock, clauses: readonly CaseOrDefaultClause[]) => CaseBlock;
7952    /** @deprecated Use `factory.createNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */
7953    const createNamespaceExportDeclaration: (name: string | Identifier) => NamespaceExportDeclaration;
7954    /** @deprecated Use `factory.updateNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */
7955    const updateNamespaceExportDeclaration: (node: NamespaceExportDeclaration, name: Identifier) => NamespaceExportDeclaration;
7956    /** @deprecated Use `factory.createImportEqualsDeclaration` or the factory supplied by your transformation context instead. */
7957    const createImportEqualsDeclaration: {
7958        (modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
7959        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
7960    };
7961    /** @deprecated Use `factory.updateImportEqualsDeclaration` or the factory supplied by your transformation context instead. */
7962    const updateImportEqualsDeclaration: {
7963        (node: ImportEqualsDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
7964        (node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
7965    };
7966    /** @deprecated Use `factory.createImportDeclaration` or the factory supplied by your transformation context instead. */
7967    const createImportDeclaration: {
7968        (modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause | undefined): ImportDeclaration;
7969        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause | undefined): ImportDeclaration;
7970    };
7971    /** @deprecated Use `factory.updateImportDeclaration` or the factory supplied by your transformation context instead. */
7972    const updateImportDeclaration: {
7973        (node: ImportDeclaration, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
7974        (node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
7975    };
7976    /** @deprecated Use `factory.createNamespaceImport` or the factory supplied by your transformation context instead. */
7977    const createNamespaceImport: (name: Identifier) => NamespaceImport;
7978    /** @deprecated Use `factory.updateNamespaceImport` or the factory supplied by your transformation context instead. */
7979    const updateNamespaceImport: (node: NamespaceImport, name: Identifier) => NamespaceImport;
7980    /** @deprecated Use `factory.createNamedImports` or the factory supplied by your transformation context instead. */
7981    const createNamedImports: (elements: readonly ImportSpecifier[]) => NamedImports;
7982    /** @deprecated Use `factory.updateNamedImports` or the factory supplied by your transformation context instead. */
7983    const updateNamedImports: (node: NamedImports, elements: readonly ImportSpecifier[]) => NamedImports;
7984    /** @deprecated Use `factory.createImportSpecifier` or the factory supplied by your transformation context instead. */
7985    const createImportSpecifier: (isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier) => ImportSpecifier;
7986    /** @deprecated Use `factory.updateImportSpecifier` or the factory supplied by your transformation context instead. */
7987    const updateImportSpecifier: (node: ImportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier) => ImportSpecifier;
7988    /** @deprecated Use `factory.createExportAssignment` or the factory supplied by your transformation context instead. */
7989    const createExportAssignment: {
7990        (modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
7991        (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
7992    };
7993    /** @deprecated Use `factory.updateExportAssignment` or the factory supplied by your transformation context instead. */
7994    const updateExportAssignment: {
7995        (node: ExportAssignment, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
7996        (node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
7997    };
7998    /** @deprecated Use `factory.createNamedExports` or the factory supplied by your transformation context instead. */
7999    const createNamedExports: (elements: readonly ExportSpecifier[]) => NamedExports;
8000    /** @deprecated Use `factory.updateNamedExports` or the factory supplied by your transformation context instead. */
8001    const updateNamedExports: (node: NamedExports, elements: readonly ExportSpecifier[]) => NamedExports;
8002    /** @deprecated Use `factory.createExportSpecifier` or the factory supplied by your transformation context instead. */
8003    const createExportSpecifier: (isTypeOnly: boolean, propertyName: string | Identifier | undefined, name: string | Identifier) => ExportSpecifier;
8004    /** @deprecated Use `factory.updateExportSpecifier` or the factory supplied by your transformation context instead. */
8005    const updateExportSpecifier: (node: ExportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier) => ExportSpecifier;
8006    /** @deprecated Use `factory.createExternalModuleReference` or the factory supplied by your transformation context instead. */
8007    const createExternalModuleReference: (expression: Expression) => ExternalModuleReference;
8008    /** @deprecated Use `factory.updateExternalModuleReference` or the factory supplied by your transformation context instead. */
8009    const updateExternalModuleReference: (node: ExternalModuleReference, expression: Expression) => ExternalModuleReference;
8010    /** @deprecated Use `factory.createJSDocTypeExpression` or the factory supplied by your transformation context instead. */
8011    const createJSDocTypeExpression: (type: TypeNode) => JSDocTypeExpression;
8012    /** @deprecated Use `factory.createJSDocTypeTag` or the factory supplied by your transformation context instead. */
8013    const createJSDocTypeTag: (tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocTypeTag;
8014    /** @deprecated Use `factory.createJSDocReturnTag` or the factory supplied by your transformation context instead. */
8015    const createJSDocReturnTag: (tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocReturnTag;
8016    /** @deprecated Use `factory.createJSDocThisTag` or the factory supplied by your transformation context instead. */
8017    const createJSDocThisTag: (tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocThisTag;
8018    /** @deprecated Use `factory.createJSDocComment` or the factory supplied by your transformation context instead. */
8019    const createJSDocComment: (comment?: string | NodeArray<JSDocComment> | undefined, tags?: readonly JSDocTag[] | undefined) => JSDoc;
8020    /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */
8021    const createJSDocParameterTag: (tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, isNameFirst?: boolean | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocParameterTag;
8022    /** @deprecated Use `factory.createJSDocClassTag` or the factory supplied by your transformation context instead. */
8023    const createJSDocClassTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocClassTag;
8024    /** @deprecated Use `factory.createJSDocAugmentsTag` or the factory supplied by your transformation context instead. */
8025    const createJSDocAugmentsTag: (tagName: Identifier | undefined, className: ExpressionWithTypeArguments & {
8026        readonly expression: Identifier | PropertyAccessEntityNameExpression;
8027    }, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocAugmentsTag;
8028    /** @deprecated Use `factory.createJSDocEnumTag` or the factory supplied by your transformation context instead. */
8029    const createJSDocEnumTag: (tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocEnumTag;
8030    /** @deprecated Use `factory.createJSDocTemplateTag` or the factory supplied by your transformation context instead. */
8031    const createJSDocTemplateTag: (tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment?: string | NodeArray<JSDocComment> | undefined) => JSDocTemplateTag;
8032    /** @deprecated Use `factory.createJSDocTypedefTag` or the factory supplied by your transformation context instead. */
8033    const createJSDocTypedefTag: (tagName: Identifier | undefined, typeExpression?: JSDocTypeLiteral | JSDocTypeExpression | undefined, fullName?: Identifier | JSDocNamespaceDeclaration | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocTypedefTag;
8034    /** @deprecated Use `factory.createJSDocCallbackTag` or the factory supplied by your transformation context instead. */
8035    const createJSDocCallbackTag: (tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName?: Identifier | JSDocNamespaceDeclaration | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocCallbackTag;
8036    /** @deprecated Use `factory.createJSDocSignature` or the factory supplied by your transformation context instead. */
8037    const createJSDocSignature: (typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type?: JSDocReturnTag | undefined) => JSDocSignature;
8038    /** @deprecated Use `factory.createJSDocPropertyTag` or the factory supplied by your transformation context instead. */
8039    const createJSDocPropertyTag: (tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, isNameFirst?: boolean | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocPropertyTag;
8040    /** @deprecated Use `factory.createJSDocTypeLiteral` or the factory supplied by your transformation context instead. */
8041    const createJSDocTypeLiteral: (jsDocPropertyTags?: readonly JSDocPropertyLikeTag[] | undefined, isArrayType?: boolean | undefined) => JSDocTypeLiteral;
8042    /** @deprecated Use `factory.createJSDocImplementsTag` or the factory supplied by your transformation context instead. */
8043    const createJSDocImplementsTag: (tagName: Identifier | undefined, className: ExpressionWithTypeArguments & {
8044        readonly expression: Identifier | PropertyAccessEntityNameExpression;
8045    }, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocImplementsTag;
8046    /** @deprecated Use `factory.createJSDocAuthorTag` or the factory supplied by your transformation context instead. */
8047    const createJSDocAuthorTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocAuthorTag;
8048    /** @deprecated Use `factory.createJSDocPublicTag` or the factory supplied by your transformation context instead. */
8049    const createJSDocPublicTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocPublicTag;
8050    /** @deprecated Use `factory.createJSDocPrivateTag` or the factory supplied by your transformation context instead. */
8051    const createJSDocPrivateTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocPrivateTag;
8052    /** @deprecated Use `factory.createJSDocProtectedTag` or the factory supplied by your transformation context instead. */
8053    const createJSDocProtectedTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocProtectedTag;
8054    /** @deprecated Use `factory.createJSDocReadonlyTag` or the factory supplied by your transformation context instead. */
8055    const createJSDocReadonlyTag: (tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocReadonlyTag;
8056    /** @deprecated Use `factory.createJSDocUnknownTag` or the factory supplied by your transformation context instead. */
8057    const createJSDocTag: (tagName: Identifier, comment?: string | NodeArray<JSDocComment> | undefined) => JSDocUnknownTag;
8058    /** @deprecated Use `factory.createJsxElement` or the factory supplied by your transformation context instead. */
8059    const createJsxElement: (openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement) => JsxElement;
8060    /** @deprecated Use `factory.updateJsxElement` or the factory supplied by your transformation context instead. */
8061    const updateJsxElement: (node: JsxElement, openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement) => JsxElement;
8062    /** @deprecated Use `factory.createJsxSelfClosingElement` or the factory supplied by your transformation context instead. */
8063    const createJsxSelfClosingElement: (tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes) => JsxSelfClosingElement;
8064    /** @deprecated Use `factory.updateJsxSelfClosingElement` or the factory supplied by your transformation context instead. */
8065    const updateJsxSelfClosingElement: (node: JsxSelfClosingElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes) => JsxSelfClosingElement;
8066    /** @deprecated Use `factory.createJsxOpeningElement` or the factory supplied by your transformation context instead. */
8067    const createJsxOpeningElement: (tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes) => JsxOpeningElement;
8068    /** @deprecated Use `factory.updateJsxOpeningElement` or the factory supplied by your transformation context instead. */
8069    const updateJsxOpeningElement: (node: JsxOpeningElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes) => JsxOpeningElement;
8070    /** @deprecated Use `factory.createJsxClosingElement` or the factory supplied by your transformation context instead. */
8071    const createJsxClosingElement: (tagName: JsxTagNameExpression) => JsxClosingElement;
8072    /** @deprecated Use `factory.updateJsxClosingElement` or the factory supplied by your transformation context instead. */
8073    const updateJsxClosingElement: (node: JsxClosingElement, tagName: JsxTagNameExpression) => JsxClosingElement;
8074    /** @deprecated Use `factory.createJsxFragment` or the factory supplied by your transformation context instead. */
8075    const createJsxFragment: (openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment) => JsxFragment;
8076    /** @deprecated Use `factory.createJsxText` or the factory supplied by your transformation context instead. */
8077    const createJsxText: (text: string, containsOnlyTriviaWhiteSpaces?: boolean | undefined) => JsxText;
8078    /** @deprecated Use `factory.updateJsxText` or the factory supplied by your transformation context instead. */
8079    const updateJsxText: (node: JsxText, text: string, containsOnlyTriviaWhiteSpaces?: boolean | undefined) => JsxText;
8080    /** @deprecated Use `factory.createJsxOpeningFragment` or the factory supplied by your transformation context instead. */
8081    const createJsxOpeningFragment: () => JsxOpeningFragment;
8082    /** @deprecated Use `factory.createJsxJsxClosingFragment` or the factory supplied by your transformation context instead. */
8083    const createJsxJsxClosingFragment: () => JsxClosingFragment;
8084    /** @deprecated Use `factory.updateJsxFragment` or the factory supplied by your transformation context instead. */
8085    const updateJsxFragment: (node: JsxFragment, openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment) => JsxFragment;
8086    /** @deprecated Use `factory.createJsxAttribute` or the factory supplied by your transformation context instead. */
8087    const createJsxAttribute: (name: Identifier, initializer: JsxAttributeValue | undefined) => JsxAttribute;
8088    /** @deprecated Use `factory.updateJsxAttribute` or the factory supplied by your transformation context instead. */
8089    const updateJsxAttribute: (node: JsxAttribute, name: Identifier, initializer: JsxAttributeValue | undefined) => JsxAttribute;
8090    /** @deprecated Use `factory.createJsxAttributes` or the factory supplied by your transformation context instead. */
8091    const createJsxAttributes: (properties: readonly JsxAttributeLike[]) => JsxAttributes;
8092    /** @deprecated Use `factory.updateJsxAttributes` or the factory supplied by your transformation context instead. */
8093    const updateJsxAttributes: (node: JsxAttributes, properties: readonly JsxAttributeLike[]) => JsxAttributes;
8094    /** @deprecated Use `factory.createJsxSpreadAttribute` or the factory supplied by your transformation context instead. */
8095    const createJsxSpreadAttribute: (expression: Expression) => JsxSpreadAttribute;
8096    /** @deprecated Use `factory.updateJsxSpreadAttribute` or the factory supplied by your transformation context instead. */
8097    const updateJsxSpreadAttribute: (node: JsxSpreadAttribute, expression: Expression) => JsxSpreadAttribute;
8098    /** @deprecated Use `factory.createJsxExpression` or the factory supplied by your transformation context instead. */
8099    const createJsxExpression: (dotDotDotToken: DotDotDotToken | undefined, expression: Expression | undefined) => JsxExpression;
8100    /** @deprecated Use `factory.updateJsxExpression` or the factory supplied by your transformation context instead. */
8101    const updateJsxExpression: (node: JsxExpression, expression: Expression | undefined) => JsxExpression;
8102    /** @deprecated Use `factory.createCaseClause` or the factory supplied by your transformation context instead. */
8103    const createCaseClause: (expression: Expression, statements: readonly Statement[]) => CaseClause;
8104    /** @deprecated Use `factory.updateCaseClause` or the factory supplied by your transformation context instead. */
8105    const updateCaseClause: (node: CaseClause, expression: Expression, statements: readonly Statement[]) => CaseClause;
8106    /** @deprecated Use `factory.createDefaultClause` or the factory supplied by your transformation context instead. */
8107    const createDefaultClause: (statements: readonly Statement[]) => DefaultClause;
8108    /** @deprecated Use `factory.updateDefaultClause` or the factory supplied by your transformation context instead. */
8109    const updateDefaultClause: (node: DefaultClause, statements: readonly Statement[]) => DefaultClause;
8110    /** @deprecated Use `factory.createHeritageClause` or the factory supplied by your transformation context instead. */
8111    const createHeritageClause: (token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword, types: readonly ExpressionWithTypeArguments[]) => HeritageClause;
8112    /** @deprecated Use `factory.updateHeritageClause` or the factory supplied by your transformation context instead. */
8113    const updateHeritageClause: (node: HeritageClause, types: readonly ExpressionWithTypeArguments[]) => HeritageClause;
8114    /** @deprecated Use `factory.createCatchClause` or the factory supplied by your transformation context instead. */
8115    const createCatchClause: (variableDeclaration: string | VariableDeclaration | BindingName | undefined, block: Block) => CatchClause;
8116    /** @deprecated Use `factory.updateCatchClause` or the factory supplied by your transformation context instead. */
8117    const updateCatchClause: (node: CatchClause, variableDeclaration: VariableDeclaration | undefined, block: Block) => CatchClause;
8118    /** @deprecated Use `factory.createPropertyAssignment` or the factory supplied by your transformation context instead. */
8119    const createPropertyAssignment: (name: string | PropertyName, initializer: Expression) => PropertyAssignment;
8120    /** @deprecated Use `factory.updatePropertyAssignment` or the factory supplied by your transformation context instead. */
8121    const updatePropertyAssignment: (node: PropertyAssignment, name: PropertyName, initializer: Expression) => PropertyAssignment;
8122    /** @deprecated Use `factory.createShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */
8123    const createShorthandPropertyAssignment: (name: string | Identifier, objectAssignmentInitializer?: Expression | undefined) => ShorthandPropertyAssignment;
8124    /** @deprecated Use `factory.updateShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */
8125    const updateShorthandPropertyAssignment: (node: ShorthandPropertyAssignment, name: Identifier, objectAssignmentInitializer: Expression | undefined) => ShorthandPropertyAssignment;
8126    /** @deprecated Use `factory.createSpreadAssignment` or the factory supplied by your transformation context instead. */
8127    const createSpreadAssignment: (expression: Expression) => SpreadAssignment;
8128    /** @deprecated Use `factory.updateSpreadAssignment` or the factory supplied by your transformation context instead. */
8129    const updateSpreadAssignment: (node: SpreadAssignment, expression: Expression) => SpreadAssignment;
8130    /** @deprecated Use `factory.createEnumMember` or the factory supplied by your transformation context instead. */
8131    const createEnumMember: (name: string | PropertyName, initializer?: Expression | undefined) => EnumMember;
8132    /** @deprecated Use `factory.updateEnumMember` or the factory supplied by your transformation context instead. */
8133    const updateEnumMember: (node: EnumMember, name: PropertyName, initializer: Expression | undefined) => EnumMember;
8134    /** @deprecated Use `factory.updateSourceFile` or the factory supplied by your transformation context instead. */
8135    const updateSourceFileNode: (node: SourceFile, statements: readonly Statement[], isDeclarationFile?: boolean | undefined, referencedFiles?: readonly FileReference[] | undefined, typeReferences?: readonly FileReference[] | undefined, hasNoDefaultLib?: boolean | undefined, libReferences?: readonly FileReference[] | undefined) => SourceFile;
8136    /** @deprecated Use `factory.createNotEmittedStatement` or the factory supplied by your transformation context instead. */
8137    const createNotEmittedStatement: (original: Node) => NotEmittedStatement;
8138    /** @deprecated Use `factory.createPartiallyEmittedExpression` or the factory supplied by your transformation context instead. */
8139    const createPartiallyEmittedExpression: (expression: Expression, original?: Node | undefined) => PartiallyEmittedExpression;
8140    /** @deprecated Use `factory.updatePartiallyEmittedExpression` or the factory supplied by your transformation context instead. */
8141    const updatePartiallyEmittedExpression: (node: PartiallyEmittedExpression, expression: Expression) => PartiallyEmittedExpression;
8142    /** @deprecated Use `factory.createCommaListExpression` or the factory supplied by your transformation context instead. */
8143    const createCommaList: (elements: readonly Expression[]) => CommaListExpression;
8144    /** @deprecated Use `factory.updateCommaListExpression` or the factory supplied by your transformation context instead. */
8145    const updateCommaList: (node: CommaListExpression, elements: readonly Expression[]) => CommaListExpression;
8146    /** @deprecated Use `factory.createBundle` or the factory supplied by your transformation context instead. */
8147    const createBundle: (sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[] | undefined) => Bundle;
8148    /** @deprecated Use `factory.updateBundle` or the factory supplied by your transformation context instead. */
8149    const updateBundle: (node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[] | undefined) => Bundle;
8150    /** @deprecated Use `factory.createImmediatelyInvokedFunctionExpression` or the factory supplied by your transformation context instead. */
8151    const createImmediatelyInvokedFunctionExpression: {
8152        (statements: readonly Statement[]): CallExpression;
8153        (statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
8154    };
8155    /** @deprecated Use `factory.createImmediatelyInvokedArrowFunction` or the factory supplied by your transformation context instead. */
8156    const createImmediatelyInvokedArrowFunction: {
8157        (statements: readonly Statement[]): CallExpression;
8158        (statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression;
8159    };
8160    /** @deprecated Use `factory.createVoidZero` or the factory supplied by your transformation context instead. */
8161    const createVoidZero: () => VoidExpression;
8162    /** @deprecated Use `factory.createExportDefault` or the factory supplied by your transformation context instead. */
8163    const createExportDefault: (expression: Expression) => ExportAssignment;
8164    /** @deprecated Use `factory.createExternalModuleExport` or the factory supplied by your transformation context instead. */
8165    const createExternalModuleExport: (exportName: Identifier) => ExportDeclaration;
8166    /** @deprecated Use `factory.createNamespaceExport` or the factory supplied by your transformation context instead. */
8167    const createNamespaceExport: (name: Identifier) => NamespaceExport;
8168    /** @deprecated Use `factory.updateNamespaceExport` or the factory supplied by your transformation context instead. */
8169    const updateNamespaceExport: (node: NamespaceExport, name: Identifier) => NamespaceExport;
8170    /** @deprecated Use `factory.createToken` or the factory supplied by your transformation context instead. */
8171    const createToken: <TKind extends SyntaxKind>(kind: TKind) => Token<TKind>;
8172    /** @deprecated Use `factory.createIdentifier` or the factory supplied by your transformation context instead. */
8173    const createIdentifier: (text: string) => Identifier;
8174    /** @deprecated Use `factory.createTempVariable` or the factory supplied by your transformation context instead. */
8175    const createTempVariable: (recordTempVariable: ((node: Identifier) => void) | undefined) => Identifier;
8176    /** @deprecated Use `factory.getGeneratedNameForNode` or the factory supplied by your transformation context instead. */
8177    const getGeneratedNameForNode: (node: Node | undefined) => Identifier;
8178    /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic)` or the factory supplied by your transformation context instead. */
8179    const createOptimisticUniqueName: (text: string) => Identifier;
8180    /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic | GeneratedIdentifierFlags.FileLevel)` or the factory supplied by your transformation context instead. */
8181    const createFileLevelUniqueName: (text: string) => Identifier;
8182    /** @deprecated Use `factory.createIndexSignature` or the factory supplied by your transformation context instead. */
8183    const createIndexSignature: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => IndexSignatureDeclaration;
8184    /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */
8185    const createTypePredicateNode: (parameterName: Identifier | ThisTypeNode | string, type: TypeNode) => TypePredicateNode;
8186    /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */
8187    const updateTypePredicateNode: (node: TypePredicateNode, parameterName: Identifier | ThisTypeNode, type: TypeNode) => TypePredicateNode;
8188    /** @deprecated Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead. */
8189    const createLiteral: {
8190        (value: string | StringLiteral | NoSubstitutionTemplateLiteral | NumericLiteral | Identifier): StringLiteral;
8191        (value: number | PseudoBigInt): NumericLiteral;
8192        (value: boolean): BooleanLiteral;
8193        (value: string | number | PseudoBigInt | boolean): PrimaryExpression;
8194    };
8195    /** @deprecated Use `factory.createMethodSignature` or the factory supplied by your transformation context instead. */
8196    const createMethodSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined) => MethodSignature;
8197    /** @deprecated Use `factory.updateMethodSignature` or the factory supplied by your transformation context instead. */
8198    const updateMethodSignature: (node: MethodSignature, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined, name: PropertyName, questionToken: QuestionToken | undefined) => MethodSignature;
8199    /** @deprecated Use `factory.createTypeOperatorNode` or the factory supplied by your transformation context instead. */
8200    const createTypeOperatorNode: {
8201        (type: TypeNode): TypeOperatorNode;
8202        (operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode;
8203    };
8204    /** @deprecated Use `factory.createTaggedTemplate` or the factory supplied by your transformation context instead. */
8205    const createTaggedTemplate: {
8206        (tag: Expression, template: TemplateLiteral): TaggedTemplateExpression;
8207        (tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
8208    };
8209    /** @deprecated Use `factory.updateTaggedTemplate` or the factory supplied by your transformation context instead. */
8210    const updateTaggedTemplate: {
8211        (node: TaggedTemplateExpression, tag: Expression, template: TemplateLiteral): TaggedTemplateExpression;
8212        (node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression;
8213    };
8214    /** @deprecated Use `factory.updateBinary` or the factory supplied by your transformation context instead. */
8215    const updateBinary: (node: BinaryExpression, left: Expression, right: Expression, operator?: BinaryOperator | BinaryOperatorToken) => BinaryExpression;
8216    /** @deprecated Use `factory.createConditional` or the factory supplied by your transformation context instead. */
8217    const createConditional: {
8218        (condition: Expression, whenTrue: Expression, whenFalse: Expression): ConditionalExpression;
8219        (condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression;
8220    };
8221    /** @deprecated Use `factory.createYield` or the factory supplied by your transformation context instead. */
8222    const createYield: {
8223        (expression?: Expression | undefined): YieldExpression;
8224        (asteriskToken: AsteriskToken | undefined, expression: Expression): YieldExpression;
8225    };
8226    /** @deprecated Use `factory.createClassExpression` or the factory supplied by your transformation context instead. */
8227    const createClassExpression: (modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression;
8228    /** @deprecated Use `factory.updateClassExpression` or the factory supplied by your transformation context instead. */
8229    const updateClassExpression: (node: ClassExpression, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression;
8230    /** @deprecated Use `factory.createPropertySignature` or the factory supplied by your transformation context instead. */
8231    const createPropertySignature: (modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer?: Expression | undefined) => PropertySignature;
8232    /** @deprecated Use `factory.updatePropertySignature` or the factory supplied by your transformation context instead. */
8233    const updatePropertySignature: (node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined) => PropertySignature;
8234    /** @deprecated Use `factory.createExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */
8235    const createExpressionWithTypeArguments: (typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments;
8236    /** @deprecated Use `factory.updateExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */
8237    const updateExpressionWithTypeArguments: (node: ExpressionWithTypeArguments, typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments;
8238    /** @deprecated Use `factory.createArrowFunction` or the factory supplied by your transformation context instead. */
8239    const createArrowFunction: {
8240        (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction;
8241        (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction;
8242    };
8243    /** @deprecated Use `factory.updateArrowFunction` or the factory supplied by your transformation context instead. */
8244    const updateArrowFunction: {
8245        (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction;
8246        (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction;
8247    };
8248    /** @deprecated Use `factory.createVariableDeclaration` or the factory supplied by your transformation context instead. */
8249    const createVariableDeclaration: {
8250        (name: string | BindingName, type?: TypeNode | undefined, initializer?: Expression | undefined): VariableDeclaration;
8251        (name: string | BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
8252    };
8253    /** @deprecated Use `factory.updateVariableDeclaration` or the factory supplied by your transformation context instead. */
8254    const updateVariableDeclaration: {
8255        (node: VariableDeclaration, name: BindingName, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
8256        (node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration;
8257    };
8258    /** @deprecated Use `factory.createImportClause` or the factory supplied by your transformation context instead. */
8259    const createImportClause: (name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: any) => ImportClause;
8260    /** @deprecated Use `factory.updateImportClause` or the factory supplied by your transformation context instead. */
8261    const updateImportClause: (node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly: boolean) => ImportClause;
8262    /** @deprecated Use `factory.createExportDeclaration` or the factory supplied by your transformation context instead. */
8263    const createExportDeclaration: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression | undefined, isTypeOnly?: any) => ExportDeclaration;
8264    /** @deprecated Use `factory.updateExportDeclaration` or the factory supplied by your transformation context instead. */
8265    const updateExportDeclaration: (node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean) => ExportDeclaration;
8266    /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */
8267    const createJSDocParamTag: (name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, comment?: string | undefined) => JSDocParameterTag;
8268    /** @deprecated Use `factory.createComma` or the factory supplied by your transformation context instead. */
8269    const createComma: (left: Expression, right: Expression) => Expression;
8270    /** @deprecated Use `factory.createLessThan` or the factory supplied by your transformation context instead. */
8271    const createLessThan: (left: Expression, right: Expression) => Expression;
8272    /** @deprecated Use `factory.createAssignment` or the factory supplied by your transformation context instead. */
8273    const createAssignment: (left: Expression, right: Expression) => BinaryExpression;
8274    /** @deprecated Use `factory.createStrictEquality` or the factory supplied by your transformation context instead. */
8275    const createStrictEquality: (left: Expression, right: Expression) => BinaryExpression;
8276    /** @deprecated Use `factory.createStrictInequality` or the factory supplied by your transformation context instead. */
8277    const createStrictInequality: (left: Expression, right: Expression) => BinaryExpression;
8278    /** @deprecated Use `factory.createAdd` or the factory supplied by your transformation context instead. */
8279    const createAdd: (left: Expression, right: Expression) => BinaryExpression;
8280    /** @deprecated Use `factory.createSubtract` or the factory supplied by your transformation context instead. */
8281    const createSubtract: (left: Expression, right: Expression) => BinaryExpression;
8282    /** @deprecated Use `factory.createLogicalAnd` or the factory supplied by your transformation context instead. */
8283    const createLogicalAnd: (left: Expression, right: Expression) => BinaryExpression;
8284    /** @deprecated Use `factory.createLogicalOr` or the factory supplied by your transformation context instead. */
8285    const createLogicalOr: (left: Expression, right: Expression) => BinaryExpression;
8286    /** @deprecated Use `factory.createPostfixIncrement` or the factory supplied by your transformation context instead. */
8287    const createPostfixIncrement: (operand: Expression) => PostfixUnaryExpression;
8288    /** @deprecated Use `factory.createLogicalNot` or the factory supplied by your transformation context instead. */
8289    const createLogicalNot: (operand: Expression) => PrefixUnaryExpression;
8290    /** @deprecated Use an appropriate `factory` method instead. */
8291    const createNode: (kind: SyntaxKind, pos?: any, end?: any) => Node;
8292    /**
8293     * Creates a shallow, memberwise clone of a node ~for mutation~ with its `pos`, `end`, and `parent` set.
8294     *
8295     * NOTE: It is unsafe to change any properties of a `Node` that relate to its AST children, as those changes won't be
8296     * captured with respect to transformations.
8297     *
8298     * @deprecated Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`.
8299     */
8300    const getMutableClone: <T extends Node>(node: T) => T;
8301}
8302declare namespace ts {
8303    /** @deprecated Use `isTypeAssertionExpression` instead. */
8304    const isTypeAssertion: (node: Node) => node is TypeAssertion;
8305}
8306declare namespace ts {
8307    /**
8308     * @deprecated Use `ts.ReadonlyESMap<K, V>` instead.
8309     */
8310    interface ReadonlyMap<T> extends ReadonlyESMap<string, T> {
8311    }
8312    /**
8313     * @deprecated Use `ts.ESMap<K, V>` instead.
8314     */
8315    interface Map<T> extends ESMap<string, T> {
8316    }
8317}
8318declare namespace ts {
8319    /**
8320     * @deprecated Use `isMemberName` instead.
8321     */
8322    const isIdentifierOrPrivateIdentifier: (node: Node) => node is MemberName;
8323}
8324declare namespace ts {
8325    interface NodeFactory {
8326        /** @deprecated Use the overload that accepts 'modifiers' */
8327        createConstructorTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode;
8328        /** @deprecated Use the overload that accepts 'modifiers' */
8329        updateConstructorTypeNode(node: ConstructorTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): ConstructorTypeNode;
8330    }
8331}
8332declare namespace ts {
8333    interface NodeFactory {
8334        createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode;
8335        /** @deprecated Use the overload that accepts 'assertions' */
8336        createImportTypeNode(argument: TypeNode, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode;
8337        /** @deprecated Use the overload that accepts 'assertions' */
8338        updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode;
8339    }
8340}
8341declare namespace ts {
8342    interface NodeFactory {
8343        /** @deprecated Use the overload that accepts 'modifiers' */
8344        createTypeParameterDeclaration(name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration;
8345        /** @deprecated Use the overload that accepts 'modifiers' */
8346        updateTypeParameterDeclaration(node: TypeParameterDeclaration, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration;
8347    }
8348}
8349declare namespace ts {
8350    interface Node {
8351        /**
8352         * @deprecated `decorators` has been removed from `Node` and merged with `modifiers` on the `Node` subtypes that support them.
8353         * Use `ts.canHaveDecorators()` to test whether a `Node` can have decorators.
8354         * Use `ts.getDecorators()` to get the decorators of a `Node`.
8355         *
8356         * For example:
8357         * ```ts
8358         * const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined;
8359         * ```
8360         */
8361        readonly decorators?: undefined;
8362        /**
8363         * @deprecated `modifiers` has been removed from `Node` and moved to the `Node` subtypes that support them.
8364         * Use `ts.canHaveModifiers()` to test whether a `Node` can have modifiers.
8365         * Use `ts.getModifiers()` to get the modifiers of a `Node`.
8366         *
8367         * For example:
8368         * ```ts
8369         * const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
8370         * ```
8371         */
8372        readonly modifiers?: NodeArray<ModifierLike> | undefined;
8373    }
8374    interface PropertySignature {
8375        /** @deprecated A property signature cannot have an initializer */
8376        readonly initializer?: Expression | undefined;
8377    }
8378    interface PropertyAssignment {
8379        /** @deprecated A property assignment cannot have a question token */
8380        readonly questionToken?: QuestionToken | undefined;
8381        /** @deprecated A property assignment cannot have an exclamation token */
8382        readonly exclamationToken?: ExclamationToken | undefined;
8383    }
8384    interface ShorthandPropertyAssignment {
8385        /** @deprecated A shorthand property assignment cannot have modifiers */
8386        readonly modifiers?: NodeArray<Modifier> | undefined;
8387        /** @deprecated A shorthand property assignment cannot have a question token */
8388        readonly questionToken?: QuestionToken | undefined;
8389        /** @deprecated A shorthand property assignment cannot have an exclamation token */
8390        readonly exclamationToken?: ExclamationToken | undefined;
8391    }
8392    interface FunctionTypeNode {
8393        /** @deprecated A function type cannot have modifiers */
8394        readonly modifiers?: NodeArray<Modifier> | undefined;
8395    }
8396    interface NodeFactory {
8397        /**
8398         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8399         */
8400        createParameterDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration;
8401        /**
8402         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8403         */
8404        updateParameterDeclaration(node: ParameterDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration;
8405        /**
8406         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8407         */
8408        createPropertyDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
8409        /**
8410         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8411         */
8412        updatePropertyDeclaration(node: PropertyDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration;
8413        /**
8414         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8415         */
8416        createMethodDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration;
8417        /**
8418         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8419         */
8420        updateMethodDeclaration(node: MethodDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration;
8421        /**
8422         * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter.
8423         */
8424        createConstructorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
8425        /**
8426         * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter.
8427         */
8428        updateConstructorDeclaration(node: ConstructorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration;
8429        /**
8430         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8431         */
8432        createGetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
8433        /**
8434         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8435         */
8436        updateGetAccessorDeclaration(node: GetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration;
8437        /**
8438         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8439         */
8440        createSetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
8441        /**
8442         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8443         */
8444        updateSetAccessorDeclaration(node: SetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration;
8445        /**
8446         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8447         */
8448        createIndexSignature(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
8449        /**
8450         * @deprecated Decorators and modifiers are no longer supported for this function. Callers should use an overload that does not accept the `decorators` and `modifiers` parameters.
8451         */
8452        updateIndexSignature(node: IndexSignatureDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration;
8453        /**
8454         * @deprecated Decorators and modifiers are no longer supported for this function. Callers should use an overload that does not accept the `decorators` and `modifiers` parameters.
8455         */
8456        createClassStaticBlockDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration;
8457        /**
8458         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8459         */
8460        updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration;
8461        /**
8462         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8463         */
8464        createClassExpression(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression;
8465        /**
8466         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8467         */
8468        updateClassExpression(node: ClassExpression, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression;
8469        /**
8470         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8471         */
8472        createFunctionDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration;
8473        /**
8474         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8475         */
8476        updateFunctionDeclaration(node: FunctionDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration;
8477        /**
8478         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8479         */
8480        createClassDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
8481        /**
8482         * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter.
8483         */
8484        updateClassDeclaration(node: ClassDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration;
8485        /**
8486         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8487         */
8488        createInterfaceDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
8489        /**
8490         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8491         */
8492        updateInterfaceDeclaration(node: InterfaceDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration;
8493        /**
8494         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8495         */
8496        createTypeAliasDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
8497        /**
8498         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8499         */
8500        updateTypeAliasDeclaration(node: TypeAliasDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration;
8501        /**
8502         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8503         */
8504        createEnumDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration;
8505        /**
8506         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8507         */
8508        updateEnumDeclaration(node: EnumDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration;
8509        /**
8510         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8511         */
8512        createModuleDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration;
8513        /**
8514         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8515         */
8516        updateModuleDeclaration(node: ModuleDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration;
8517        /**
8518         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8519         */
8520        createImportEqualsDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
8521        /**
8522         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8523         */
8524        updateImportEqualsDeclaration(node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration;
8525        /**
8526         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8527         */
8528        createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration;
8529        /**
8530         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8531         */
8532        updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration;
8533        /**
8534         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8535         */
8536        createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment;
8537        /**
8538         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8539         */
8540        updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment;
8541        /**
8542         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8543         */
8544        createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration;
8545        /**
8546         * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter.
8547         */
8548        updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration;
8549    }
8550}
8551declare namespace ts {
8552    namespace ArkTSLinter_1_0 {
8553        namespace Common {
8554            interface AutofixInfo {
8555                problemID: string;
8556                start: number;
8557                end: number;
8558            }
8559            interface CommandLineOptions {
8560                strictMode?: boolean;
8561                ideMode?: boolean;
8562                logTscErrors?: boolean;
8563                warningsAsErrors: boolean;
8564                parsedConfigFile?: ParsedCommandLine;
8565                inputFiles: string[];
8566                autofixInfo?: AutofixInfo[];
8567            }
8568            interface LintOptions {
8569                cmdOptions: CommandLineOptions;
8570                tsProgram?: Program;
8571                [key: string]: any;
8572            }
8573        }
8574    }
8575}
8576declare namespace ts {
8577    namespace ArkTSLinter_1_0 {
8578        const cookBookMsg: string[];
8579        const cookBookTag: string[];
8580    }
8581}
8582declare namespace ts {
8583    namespace ArkTSLinter_1_0 {
8584        namespace DiagnosticCheckerNamespace {
8585            interface DiagnosticChecker {
8586                checkDiagnosticMessage(msgText: string | ts.DiagnosticMessageChain): boolean;
8587            }
8588        }
8589    }
8590}
8591declare namespace ts {
8592    namespace ArkTSLinter_1_0 {
8593        import DiagnosticChecker = DiagnosticCheckerNamespace.DiagnosticChecker;
8594        namespace LibraryTypeCallDiagnosticCheckerNamespace {
8595            const TYPE_0_IS_NOT_ASSIGNABLE_TO_TYPE_1_ERROR_CODE = 2322;
8596            const TYPE_UNKNOWN_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
8597            const TYPE_NULL_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
8598            const TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
8599            const ARGUMENT_OF_TYPE_0_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_ERROR_CODE = 2345;
8600            const ARGUMENT_OF_TYPE_NULL_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
8601            const ARGUMENT_OF_TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
8602            const NO_OVERLOAD_MATCHES_THIS_CALL_ERROR_CODE = 2769;
8603            class LibraryTypeCallDiagnosticChecker implements DiagnosticChecker {
8604                inLibCall: boolean;
8605                diagnosticMessages: Array<ts.DiagnosticMessageChain> | undefined;
8606                filteredDiagnosticMessages: DiagnosticMessageChain[];
8607                constructor(filteredDiagnosticMessages: DiagnosticMessageChain[]);
8608                configure(inLibCall: boolean, diagnosticMessages: Array<ts.DiagnosticMessageChain>): void;
8609                checkMessageText(msg: string): boolean;
8610                checkMessageChain(chain: ts.DiagnosticMessageChain): boolean;
8611                checkFilteredDiagnosticMessages(msgText: ts.DiagnosticMessageChain | string): boolean;
8612                checkDiagnosticMessage(msgText: string | ts.DiagnosticMessageChain): boolean;
8613            }
8614        }
8615    }
8616}
8617declare namespace ts {
8618    namespace ArkTSLinter_1_0 {
8619        namespace Utils {
8620            import AutofixInfo = Common.AutofixInfo;
8621            const PROPERTY_HAS_NO_INITIALIZER_ERROR_CODE = 2564;
8622            const NON_INITIALIZABLE_PROPERTY_DECORATORS: string[];
8623            const NON_INITIALIZABLE_PROPERTY_ClASS_DECORATORS: string[];
8624            const LIMITED_STANDARD_UTILITY_TYPES: string[];
8625            const ALLOWED_STD_SYMBOL_API: string[];
8626            enum ProblemSeverity {
8627                WARNING = 1,
8628                ERROR = 2
8629            }
8630            const ARKTS_IGNORE_DIRS: string[];
8631            const ARKTS_IGNORE_FILES: string[];
8632            function setTypeChecker(tsTypeChecker: TypeChecker): void;
8633            function clearTypeChecker(): void;
8634            function setTestMode(tsTestMode: boolean): void;
8635            function getStartPos(nodeOrComment: Node | CommentRange): number;
8636            function getEndPos(nodeOrComment: Node | CommentRange): number;
8637            function isAssignmentOperator(tsBinOp: BinaryOperatorToken): boolean;
8638            function isTypedArray(tsType: TypeNode | undefined): boolean;
8639            function isType(tsType: TypeNode | undefined, checkType: string): boolean;
8640            function entityNameToString(name: EntityName): string;
8641            function isNumberType(tsType: Type): boolean;
8642            function isBooleanType(tsType: Type): boolean;
8643            function isStringLikeType(tsType: Type): boolean;
8644            function isStringType(type: Type): boolean;
8645            function isPrimitiveEnumType(type: Type, primitiveType: TypeFlags): boolean;
8646            function isPrimitiveEnumMemberType(type: Type, primitiveType: TypeFlags): boolean;
8647            function unwrapParenthesizedType(tsType: TypeNode): TypeNode;
8648            function findParentIf(asExpr: AsExpression): IfStatement | null;
8649            function isDestructuringAssignmentLHS(tsExpr: ArrayLiteralExpression | ObjectLiteralExpression): boolean;
8650            function isEnumType(tsType: Type): boolean;
8651            function isEnumMemberType(tsType: Type): boolean;
8652            function isObjectLiteralType(tsType: Type): boolean;
8653            function isNumberLikeType(tsType: Type): boolean;
8654            function hasModifier(tsModifiers: readonly Modifier[] | undefined, tsModifierKind: number): boolean;
8655            function unwrapParenthesized(tsExpr: Expression): Expression;
8656            function followIfAliased(sym: Symbol): Symbol;
8657            function trueSymbolAtLocation(node: Node): Symbol | undefined;
8658            function clearTrueSymbolAtLocationCache(): void;
8659            function isTypeDeclSyntaxKind(kind: SyntaxKind): boolean;
8660            function symbolHasDuplicateName(symbol: Symbol, tsDeclKind: SyntaxKind): boolean;
8661            function isReferenceType(tsType: Type): boolean;
8662            function isPrimitiveType(type: Type): boolean;
8663            function isTypeSymbol(symbol: Symbol | undefined): boolean;
8664            function isGenericArrayType(tsType: Type): tsType is TypeReference;
8665            function isDerivedFrom(tsType: Type, checkType: CheckType): tsType is TypeReference;
8666            function isTypeReference(tsType: Type): tsType is TypeReference;
8667            function isNullType(tsTypeNode: TypeNode): boolean;
8668            function isThisOrSuperExpr(tsExpr: Expression): boolean;
8669            function isPrototypeSymbol(symbol: Symbol | undefined): boolean;
8670            function isFunctionSymbol(symbol: Symbol | undefined): boolean;
8671            function isInterfaceType(tsType: Type | undefined): boolean;
8672            function isAnyType(tsType: Type): tsType is TypeReference;
8673            function isUnknownType(tsType: Type): boolean;
8674            function isUnsupportedType(tsType: Type): boolean;
8675            function isUnsupportedUnionType(tsType: Type): boolean;
8676            function isFunctionOrMethod(tsSymbol: Symbol | undefined): boolean;
8677            function isMethodAssignment(tsSymbol: Symbol | undefined): boolean;
8678            function getDeclaration(tsSymbol: ts.Symbol | undefined): ts.Declaration | undefined;
8679            function isValidEnumMemberInit(tsExpr: Expression): boolean;
8680            function isCompileTimeExpression(tsExpr: Expression): boolean;
8681            function isConst(tsNode: Node): boolean;
8682            function isNumberConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
8683            function isIntegerConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
8684            function isStringConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression): boolean;
8685            function relatedByInheritanceOrIdentical(typeA: Type, typeB: Type): boolean;
8686            function needToDeduceStructuralIdentity(typeFrom: Type, typeTo: Type, allowPromotion?: boolean): boolean;
8687            function hasPredecessor(node: Node, predicate: (node: Node) => boolean): boolean;
8688            function processParentTypes(parentTypes: NodeArray<ExpressionWithTypeArguments>, typeB: Type, processInterfaces: boolean): boolean;
8689            function processParentTypesCheck(parentTypes: NodeArray<ExpressionWithTypeArguments>, checkType: CheckType): boolean;
8690            function isObjectType(tsType: Type): boolean;
8691            function logTscDiagnostic(diagnostics: readonly Diagnostic[], log: (message: any, ...args: any[]) => void): void;
8692            function encodeProblemInfo(problem: ProblemInfo): string;
8693            function decodeAutofixInfo(info: string): AutofixInfo;
8694            function isCallToFunctionWithOmittedReturnType(tsExpr: Expression): boolean;
8695            function validateObjectLiteralType(type: Type | undefined): boolean;
8696            function isStructDeclarationKind(kind: SyntaxKind): boolean;
8697            function isStructDeclaration(node: Node): boolean;
8698            function isStructObjectInitializer(objectLiteral: ObjectLiteralExpression): boolean;
8699            function hasMethods(type: Type): boolean;
8700            function isExpressionAssignableToType(lhsType: ts.Type | undefined, rhsExpr: ts.Expression): boolean;
8701            function isLiteralType(type: Type): boolean;
8702            function validateFields(type: Type, objectLiteral: ObjectLiteralExpression): boolean;
8703            function isSupportedType(typeNode: TypeNode): boolean;
8704            function isStruct(symbol: Symbol): boolean;
8705            enum CheckType {
8706                Array = 0,
8707                String = "String",
8708                Set = "Set",
8709                Map = "Map",
8710                Error = "Error"
8711            }
8712            const ES_OBJECT = "ESObject";
8713            const LIMITED_STD_GLOBAL_FUNC: string[];
8714            const LIMITED_STD_OBJECT_API: string[];
8715            const LIMITED_STD_REFLECT_API: string[];
8716            const LIMITED_STD_PROXYHANDLER_API: string[];
8717            const ARKUI_DECORATORS: string[];
8718            const FUNCTION_HAS_NO_RETURN_ERROR_CODE = 2366;
8719            const NON_RETURN_FUNCTION_DECORATORS: string[];
8720            const STANDARD_LIBRARIES: string[];
8721            const TYPED_ARRAYS: string[];
8722            function getParentSymbolName(symbol: Symbol): string | undefined;
8723            function isGlobalSymbol(symbol: Symbol): boolean;
8724            function isSymbolAPI(symbol: Symbol): boolean;
8725            function isStdSymbol(symbol: ts.Symbol): boolean;
8726            function isSymbolIterator(symbol: ts.Symbol): boolean;
8727            function isDefaultImport(importSpec: ImportSpecifier): boolean;
8728            function hasAccessModifier(decl: Declaration): boolean;
8729            function getModifier(modifiers: readonly Modifier[] | undefined, modifierKind: SyntaxKind): Modifier | undefined;
8730            function getAccessModifier(modifiers: readonly Modifier[] | undefined): Modifier | undefined;
8731            function isStdRecordType(type: Type): boolean;
8732            function isStdPartialType(type: Type): boolean;
8733            function isStdRequiredType(type: Type): boolean;
8734            function isStdReadonlyType(type: Type): boolean;
8735            function isLibraryType(type: Type): boolean;
8736            function hasLibraryType(node: Node): boolean;
8737            function isLibrarySymbol(sym: Symbol | undefined): boolean;
8738            function pathContainsDirectory(targetPath: string, dir: string): boolean;
8739            function getScriptKind(srcFile: SourceFile): ScriptKind;
8740            function isStdLibraryType(type: Type): boolean;
8741            function isStdLibrarySymbol(sym: Symbol | undefined): boolean;
8742            function isIntrinsicObjectType(type: Type): boolean;
8743            function isDynamicType(type: Type | undefined): boolean | undefined;
8744            function isDynamicLiteralInitializer(expr: Expression): boolean;
8745            function isEsObjectType(typeNode: TypeNode): boolean;
8746            function isInsideBlock(node: ts.Node): boolean;
8747            function isEsObjectPossiblyAllowed(typeRef: ts.TypeReferenceNode): boolean;
8748            function isValueAssignableToESObject(node: ts.Node): boolean;
8749            function getVariableDeclarationTypeNode(node: Node): TypeNode | undefined;
8750            function getSymbolDeclarationTypeNode(sym: ts.Symbol): ts.TypeNode | undefined;
8751            function hasEsObjectType(node: Node): boolean;
8752            function symbolHasEsObjectType(sym: ts.Symbol): boolean;
8753            function isEsObjectSymbol(sym: Symbol): boolean;
8754            function isAnonymousType(type: Type): boolean;
8755            function getSymbolOfCallExpression(callExpr: CallExpression): Symbol | undefined;
8756            function typeIsRecursive(topType: Type, type?: Type | undefined): boolean;
8757        }
8758    }
8759}
8760declare namespace ts {
8761    namespace ArkTSLinter_1_0 {
8762        namespace Problems {
8763            enum FaultID {
8764                AnyType = 0,
8765                SymbolType = 1,
8766                ObjectLiteralNoContextType = 2,
8767                ArrayLiteralNoContextType = 3,
8768                ComputedPropertyName = 4,
8769                LiteralAsPropertyName = 5,
8770                TypeQuery = 6,
8771                RegexLiteral = 7,
8772                IsOperator = 8,
8773                DestructuringParameter = 9,
8774                YieldExpression = 10,
8775                InterfaceMerging = 11,
8776                EnumMerging = 12,
8777                InterfaceExtendsClass = 13,
8778                IndexMember = 14,
8779                WithStatement = 15,
8780                ThrowStatement = 16,
8781                IndexedAccessType = 17,
8782                UnknownType = 18,
8783                ForInStatement = 19,
8784                InOperator = 20,
8785                ImportFromPath = 21,
8786                FunctionExpression = 22,
8787                IntersectionType = 23,
8788                ObjectTypeLiteral = 24,
8789                CommaOperator = 25,
8790                LimitedReturnTypeInference = 26,
8791                LambdaWithTypeParameters = 27,
8792                ClassExpression = 28,
8793                DestructuringAssignment = 29,
8794                DestructuringDeclaration = 30,
8795                VarDeclaration = 31,
8796                CatchWithUnsupportedType = 32,
8797                DeleteOperator = 33,
8798                DeclWithDuplicateName = 34,
8799                UnaryArithmNotNumber = 35,
8800                ConstructorType = 36,
8801                ConstructorIface = 37,
8802                ConstructorFuncs = 38,
8803                CallSignature = 39,
8804                TypeAssertion = 40,
8805                PrivateIdentifier = 41,
8806                LocalFunction = 42,
8807                ConditionalType = 43,
8808                MappedType = 44,
8809                NamespaceAsObject = 45,
8810                ClassAsObject = 46,
8811                NonDeclarationInNamespace = 47,
8812                GeneratorFunction = 48,
8813                FunctionContainsThis = 49,
8814                PropertyAccessByIndex = 50,
8815                JsxElement = 51,
8816                EnumMemberNonConstInit = 52,
8817                ImplementsClass = 53,
8818                NoUndefinedPropAccess = 54,
8819                MultipleStaticBlocks = 55,
8820                ThisType = 56,
8821                IntefaceExtendDifProps = 57,
8822                StructuralIdentity = 58,
8823                DefaultImport = 59,
8824                ExportAssignment = 60,
8825                ImportAssignment = 61,
8826                GenericCallNoTypeArgs = 62,
8827                ParameterProperties = 63,
8828                InstanceofUnsupported = 64,
8829                ShorthandAmbientModuleDecl = 65,
8830                WildcardsInModuleName = 66,
8831                UMDModuleDefinition = 67,
8832                NewTarget = 68,
8833                DefiniteAssignment = 69,
8834                Prototype = 70,
8835                GlobalThis = 71,
8836                UtilityType = 72,
8837                PropertyDeclOnFunction = 73,
8838                FunctionApplyBindCall = 74,
8839                ConstAssertion = 75,
8840                ImportAssertion = 76,
8841                SpreadOperator = 77,
8842                LimitedStdLibApi = 78,
8843                ErrorSuppression = 79,
8844                StrictDiagnostic = 80,
8845                UnsupportedDecorators = 81,
8846                ImportAfterStatement = 82,
8847                EsObjectType = 83,
8848                LAST_ID = 84
8849            }
8850            class FaultAttributs {
8851                migratable?: boolean;
8852                warning?: boolean;
8853                cookBookRef: string;
8854            }
8855            const faultsAttrs: FaultAttributs[];
8856        }
8857    }
8858}
8859declare namespace ts {
8860    namespace ArkTSLinter_1_0 {
8861        namespace Autofixer {
8862            import AutofixInfo = Common.AutofixInfo;
8863            import FaultID = Problems.FaultID;
8864            const AUTOFIX_ALL: AutofixInfo;
8865            const autofixInfo: AutofixInfo[];
8866            function shouldAutofix(node: Node, faultID: FaultID): boolean;
8867            interface Autofix {
8868                replacementText: string;
8869                start: number;
8870                end: number;
8871            }
8872            function fixLiteralAsPropertyName(node: Node): Autofix[] | undefined;
8873            function fixPropertyAccessByIndex(node: Node): Autofix[] | undefined;
8874            function fixFunctionExpression(funcExpr: FunctionExpression, params?: NodeArray<ParameterDeclaration>, retType?: TypeNode | undefined): Autofix;
8875            function fixReturnType(funcLikeDecl: FunctionLikeDeclaration, typeNode: TypeNode): Autofix;
8876            function fixCtorParameterProperties(ctorDecl: ConstructorDeclaration, paramTypes: TypeNode[]): Autofix[] | undefined;
8877        }
8878    }
8879}
8880declare namespace ts {
8881    namespace ArkTSLinter_1_0 {
8882        import FaultID = Problems.FaultID;
8883        class LinterConfig {
8884            static nodeDesc: string[];
8885            static tsSyntaxKindNames: string[];
8886            static initStatic(): void;
8887            static terminalTokens: Set<SyntaxKind>;
8888            static incrementOnlyTokens: ESMap<SyntaxKind, FaultID>;
8889        }
8890    }
8891}
8892declare namespace ts {
8893    namespace ArkTSLinter_1_0 {
8894        import Autofix = Autofixer.Autofix;
8895        import LibraryTypeCallDiagnosticChecker = LibraryTypeCallDiagnosticCheckerNamespace.LibraryTypeCallDiagnosticChecker;
8896        interface ProblemInfo {
8897            line: number;
8898            column: number;
8899            start: number;
8900            end: number;
8901            type: string;
8902            severity: number;
8903            problem: string;
8904            suggest: string;
8905            rule: string;
8906            ruleTag: number;
8907            autofixable: boolean;
8908            autofix?: Autofix[];
8909        }
8910        class TypeScriptLinter {
8911            private sourceFile;
8912            private tscStrictDiagnostics?;
8913            static ideMode: boolean;
8914            static strictMode: boolean;
8915            static logTscErrors: boolean;
8916            static warningsAsErrors: boolean;
8917            static lintEtsOnly: boolean;
8918            static totalVisitedNodes: number;
8919            static nodeCounters: number[];
8920            static lineCounters: number[];
8921            static totalErrorLines: number;
8922            static errorLineNumbersString: string;
8923            static totalWarningLines: number;
8924            static warningLineNumbersString: string;
8925            static reportDiagnostics: boolean;
8926            static problemsInfos: ProblemInfo[];
8927            static filteredDiagnosticMessages: DiagnosticMessageChain[];
8928            static initGlobals(): void;
8929            static initStatic(): void;
8930            static tsTypeChecker: TypeChecker;
8931            currentErrorLine: number;
8932            currentWarningLine: number;
8933            staticBlocks: Set<string>;
8934            libraryTypeCallDiagnosticChecker: LibraryTypeCallDiagnosticChecker;
8935            skipArkTSStaticBlocksCheck: boolean;
8936            constructor(sourceFile: SourceFile, tsProgram: Program, tscStrictDiagnostics?: Map<Diagnostic[]> | undefined);
8937            static clearTsTypeChecker(): void;
8938            readonly handlersMap: ESMap<SyntaxKind, (node: Node) => void>;
8939            incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void;
8940            visitTSNode(node: Node): void;
8941            private countInterfaceExtendsDifferentPropertyTypes;
8942            private countDeclarationsWithDuplicateName;
8943            private countClassMembersWithDuplicateName;
8944            private functionContainsThis;
8945            private isPrototypePropertyAccess;
8946            private interfaceInheritanceLint;
8947            private lintForInterfaceExtendsDifferentPorpertyTypes;
8948            private handleObjectLiteralExpression;
8949            private handleArrayLiteralExpression;
8950            private handleParameter;
8951            private handleEnumDeclaration;
8952            private handleInterfaceDeclaration;
8953            private handleThrowStatement;
8954            private handleForStatement;
8955            private handleForInStatement;
8956            private handleForOfStatement;
8957            private handleImportDeclaration;
8958            private handlePropertyAccessExpression;
8959            private handlePropertyAssignmentOrDeclaration;
8960            private filterOutDecoratorsDiagnostics;
8961            private checkInRange;
8962            private filterStrictDiagnostics;
8963            private handleFunctionExpression;
8964            private handleArrowFunction;
8965            private handleClassExpression;
8966            private handleFunctionDeclaration;
8967            private handleMissingReturnType;
8968            private hasLimitedTypeInferenceFromReturnExpr;
8969            private handlePrefixUnaryExpression;
8970            private handleBinaryExpression;
8971            private handleVariableDeclarationList;
8972            private handleVariableDeclaration;
8973            private handleEsObjectDelaration;
8974            private handleEsObjectAssignment;
8975            private handleCatchClause;
8976            private handleClassDeclaration;
8977            private handleModuleDeclaration;
8978            private handleTypeAliasDeclaration;
8979            private handleImportClause;
8980            private handleImportSpecifier;
8981            private handleNamespaceImport;
8982            private handleTypeAssertionExpression;
8983            private handleMethodDeclaration;
8984            private handleIdentifier;
8985            private isAllowedClassValueContext;
8986            private handleRestrictedValues;
8987            private identiferUseInValueContext;
8988            private isEnumPropAccess;
8989            private handleElementAccessExpression;
8990            private handleEnumMember;
8991            private handleExportAssignment;
8992            private handleCallExpression;
8993            private handleImportCall;
8994            private handleRequireCall;
8995            private handleGenericCallWithNoTypeArgs;
8996            private static listApplyBindCallApis;
8997            private handleFunctionApplyBindPropCall;
8998            private handleStructIdentAndUndefinedInArgs;
8999            private static LimitedApis;
9000            private handleStdlibAPICall;
9001            private findNonFilteringRangesFunctionCalls;
9002            private handleLibraryTypeCall;
9003            private handleNewExpression;
9004            private handleAsExpression;
9005            private handleTypeReference;
9006            private handleMetaProperty;
9007            private handleStructDeclaration;
9008            private handleSpreadOp;
9009            private handleConstructSignature;
9010            private handleComments;
9011            private handleExpressionWithTypeArguments;
9012            private handleComputedPropertyName;
9013            private checkErrorSuppressingAnnotation;
9014            private handleDecorators;
9015            private handleGetAccessor;
9016            private handleSetAccessor;
9017            private handleDeclarationInferredType;
9018            private handleDefiniteAssignmentAssertion;
9019            private validatedTypesSet;
9020            private checkAnyOrUnknownChildNode;
9021            private handleInferredObjectreference;
9022            private validateDeclInferredType;
9023            private handleClassStaticBlockDeclaration;
9024            lint(): void;
9025        }
9026    }
9027}
9028declare namespace ts {
9029    namespace ArkTSLinter_1_0 {
9030        class TSCCompiledProgram {
9031            private diagnosticsExtractor;
9032            constructor(program: BuilderProgram);
9033            getProgram(): Program;
9034            getBuilderProgram(): BuilderProgram;
9035            getStrictDiagnostics(fileName: string): Diagnostic[];
9036            doAllGetDiagnostics(): void;
9037        }
9038    }
9039}
9040declare namespace ts {
9041    namespace ArkTSLinter_1_0 {
9042        function translateDiag(srcFile: SourceFile, problemInfo: ProblemInfo): Diagnostic;
9043        function runArkTSLinter(tsBuilderProgram: BuilderProgram, srcFile?: SourceFile, buildInfoWriteFile?: WriteFileCallback, arkTSVersion?: string): Diagnostic[];
9044    }
9045}
9046declare namespace ts {
9047    namespace ArkTSLinter_1_1 {
9048        namespace Common {
9049            interface AutofixInfo {
9050                problemID: string;
9051                start: number;
9052                end: number;
9053            }
9054            interface CommandLineOptions {
9055                strictMode?: boolean;
9056                ideMode?: boolean;
9057                logTscErrors?: boolean;
9058                warningsAsErrors: boolean;
9059                parsedConfigFile?: ParsedCommandLine;
9060                inputFiles: string[];
9061                autofixInfo?: AutofixInfo[];
9062            }
9063            interface LintOptions {
9064                cmdOptions: CommandLineOptions;
9065                tsProgram?: Program;
9066                [key: string]: any;
9067            }
9068            enum ProblemSeverity {
9069                WARNING = 1,
9070                ERROR = 2
9071            }
9072        }
9073    }
9074}
9075declare namespace ts {
9076    namespace ArkTSLinter_1_1 {
9077        const cookBookMsg: string[];
9078        const cookBookTag: string[];
9079    }
9080}
9081declare namespace ts {
9082    namespace ArkTSLinter_1_1 {
9083        namespace DiagnosticCheckerNamespace {
9084            interface DiagnosticChecker {
9085                checkDiagnosticMessage(msgText: string | ts.DiagnosticMessageChain): boolean;
9086            }
9087        }
9088    }
9089}
9090declare namespace ts {
9091    namespace ArkTSLinter_1_1 {
9092        import DiagnosticChecker = DiagnosticCheckerNamespace.DiagnosticChecker;
9093        namespace LibraryTypeCallDiagnosticCheckerNamespace {
9094            const TYPE_0_IS_NOT_ASSIGNABLE_TO_TYPE_1_ERROR_CODE = 2322;
9095            const TYPE_UNKNOWN_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
9096            const TYPE_NULL_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
9097            const TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp;
9098            const ARGUMENT_OF_TYPE_0_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_ERROR_CODE = 2345;
9099            const ARGUMENT_OF_TYPE_NULL_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
9100            const ARGUMENT_OF_TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp;
9101            const NO_OVERLOAD_MATCHES_THIS_CALL_ERROR_CODE = 2769;
9102            class LibraryTypeCallDiagnosticChecker implements DiagnosticChecker {
9103                inLibCall: boolean;
9104                diagnosticMessages: Array<ts.DiagnosticMessageChain> | undefined;
9105                filteredDiagnosticMessages: DiagnosticMessageChain[];
9106                constructor(filteredDiagnosticMessages: DiagnosticMessageChain[]);
9107                configure(inLibCall: boolean, diagnosticMessages: Array<ts.DiagnosticMessageChain>): void;
9108                checkMessageText(msg: string): boolean;
9109                checkMessageChain(chain: ts.DiagnosticMessageChain): boolean;
9110                checkFilteredDiagnosticMessages(msgText: ts.DiagnosticMessageChain | string): boolean;
9111                checkDiagnosticMessage(msgText: string | ts.DiagnosticMessageChain): boolean;
9112            }
9113        }
9114    }
9115}
9116declare namespace ts {
9117    namespace ArkTSLinter_1_1 {
9118        namespace Problems {
9119            import ProblemSeverity = Common.ProblemSeverity;
9120            enum FaultID {
9121                AnyType = 0,
9122                SymbolType = 1,
9123                ObjectLiteralNoContextType = 2,
9124                ArrayLiteralNoContextType = 3,
9125                ComputedPropertyName = 4,
9126                LiteralAsPropertyName = 5,
9127                TypeQuery = 6,
9128                IsOperator = 7,
9129                DestructuringParameter = 8,
9130                YieldExpression = 9,
9131                InterfaceMerging = 10,
9132                EnumMerging = 11,
9133                InterfaceExtendsClass = 12,
9134                IndexMember = 13,
9135                WithStatement = 14,
9136                ThrowStatement = 15,
9137                IndexedAccessType = 16,
9138                UnknownType = 17,
9139                ForInStatement = 18,
9140                InOperator = 19,
9141                FunctionExpression = 20,
9142                IntersectionType = 21,
9143                ObjectTypeLiteral = 22,
9144                CommaOperator = 23,
9145                LimitedReturnTypeInference = 24,
9146                ClassExpression = 25,
9147                DestructuringAssignment = 26,
9148                DestructuringDeclaration = 27,
9149                VarDeclaration = 28,
9150                CatchWithUnsupportedType = 29,
9151                DeleteOperator = 30,
9152                DeclWithDuplicateName = 31,
9153                UnaryArithmNotNumber = 32,
9154                ConstructorType = 33,
9155                ConstructorIface = 34,
9156                ConstructorFuncs = 35,
9157                CallSignature = 36,
9158                TypeAssertion = 37,
9159                PrivateIdentifier = 38,
9160                LocalFunction = 39,
9161                ConditionalType = 40,
9162                MappedType = 41,
9163                NamespaceAsObject = 42,
9164                ClassAsObject = 43,
9165                NonDeclarationInNamespace = 44,
9166                GeneratorFunction = 45,
9167                FunctionContainsThis = 46,
9168                PropertyAccessByIndex = 47,
9169                JsxElement = 48,
9170                EnumMemberNonConstInit = 49,
9171                ImplementsClass = 50,
9172                MethodReassignment = 51,
9173                MultipleStaticBlocks = 52,
9174                ThisType = 53,
9175                IntefaceExtendDifProps = 54,
9176                StructuralIdentity = 55,
9177                ExportAssignment = 56,
9178                ImportAssignment = 57,
9179                GenericCallNoTypeArgs = 58,
9180                ParameterProperties = 59,
9181                InstanceofUnsupported = 60,
9182                ShorthandAmbientModuleDecl = 61,
9183                WildcardsInModuleName = 62,
9184                UMDModuleDefinition = 63,
9185                NewTarget = 64,
9186                DefiniteAssignment = 65,
9187                Prototype = 66,
9188                GlobalThis = 67,
9189                UtilityType = 68,
9190                PropertyDeclOnFunction = 69,
9191                FunctionApplyCall = 70,
9192                FunctionBind = 71,
9193                ConstAssertion = 72,
9194                ImportAssertion = 73,
9195                SpreadOperator = 74,
9196                LimitedStdLibApi = 75,
9197                ErrorSuppression = 76,
9198                StrictDiagnostic = 77,
9199                ImportAfterStatement = 78,
9200                EsObjectType = 79,
9201                SendableClassInheritance = 80,
9202                SendablePropType = 81,
9203                SendableDefiniteAssignment = 82,
9204                SendableGenericTypes = 83,
9205                SendableCapturedVars = 84,
9206                SendableClassDecorator = 85,
9207                SendableObjectInitialization = 86,
9208                SendableComputedPropName = 87,
9209                SendableAsExpr = 88,
9210                SharedNoSideEffectImport = 89,
9211                SharedModuleExports = 90,
9212                SharedModuleNoStarExport = 91,
9213                NoTsImportEts = 92,
9214                SendableTypeInheritance = 93,
9215                SendableTypeExported = 94,
9216                SendableNoTsExportEts = 95,
9217                LAST_ID = 96
9218            }
9219            class FaultAttributes {
9220                cookBookRef: number;
9221                migratable: boolean;
9222                severity: ProblemSeverity;
9223                constructor(cookBookRef: number, migratable?: boolean, severity?: ProblemSeverity);
9224            }
9225            const faultsAttrs: FaultAttributes[];
9226        }
9227    }
9228}
9229declare namespace ts {
9230    namespace ArkTSLinter_1_1 {
9231        import AutofixInfo = Common.AutofixInfo;
9232        namespace Utils {
9233            const PROPERTY_HAS_NO_INITIALIZER_ERROR_CODE = 2564;
9234            const NON_INITIALIZABLE_PROPERTY_DECORATORS: string[];
9235            const NON_INITIALIZABLE_PROPERTY_CLASS_DECORATORS: string[];
9236            const LIMITED_STANDARD_UTILITY_TYPES: string[];
9237            const ALLOWED_STD_SYMBOL_API: string[];
9238            const ARKTS_IGNORE_DIRS: string[];
9239            const ARKTS_IGNORE_FILES: string[];
9240            const SENDABLE_DECORATOR = "Sendable";
9241            const SENDABLE_INTERFACE = "ISendable";
9242            const ARKTS_COLLECTIONS_D_ETS = "@arkts.collections.d.ets";
9243            const COLLECTIONS_NAMESPACE = "collections";
9244            const ARKTS_COLLECTIONS_TYPES: string[];
9245            const ARKTS_LANG_D_ETS = "@arkts.lang.d.ets";
9246            const LANG_NAMESPACE = "lang";
9247            const ISENDABLE_TYPE = "ISendable";
9248            const USE_SHARED = "use shared";
9249            const D_TS = ".d.ts";
9250            function setTypeChecker(tsTypeChecker: TypeChecker): void;
9251            function clearTypeChecker(): void;
9252            function setTestMode(tsTestMode: boolean): void;
9253            function getStartPos(nodeOrComment: Node | CommentRange): number;
9254            function getEndPos(nodeOrComment: Node | CommentRange): number;
9255            function getHighlightRange(nodeOrComment: Node | CommentRange, faultId: number): [number, number];
9256            function getVarDeclarationHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9257            function getCatchWithUnsupportedTypeHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9258            function getForInStatementHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9259            function getWithStatementHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9260            function getDeleteOperatorHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9261            function getTypeQueryHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9262            function getInstanceofUnsupportedHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9263            function getConstAssertionHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9264            function getLimitedReturnTypeInferenceHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9265            function getLocalFunctionHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9266            function getFunctionApplyCallHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9267            function getDeclWithDuplicateNameHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9268            function getObjectLiteralNoContextTypeHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9269            function getClassExpressionHighlightRange(nodeOrComment: Node | CommentRange): [number, number] | undefined;
9270            function getMultipleStaticBlocksHighlightRange(nodeOrComment: ts.Node | ts.CommentRange): [number, number] | undefined;
9271            function getSendableDefiniteAssignmentHighlightRange(nodeOrComment: ts.Node | ts.CommentRange): [number, number] | undefined;
9272            function getKeywordHighlightRange(nodeOrComment: Node | CommentRange, keyword: string): [number, number];
9273            function isAssignmentOperator(tsBinOp: BinaryOperatorToken): boolean;
9274            function isType(tsType: TypeNode | undefined, checkType: string): boolean;
9275            function entityNameToString(name: EntityName): string;
9276            function isNumberLikeType(tsType: Type): boolean;
9277            function isBooleanLikeType(tsType: Type): boolean;
9278            function isStringLikeType(tsType: Type): boolean;
9279            function isStringType(tsType: ts.Type): boolean;
9280            function isPrimitiveEnumMemberType(type: Type, primitiveType: TypeFlags): boolean;
9281            function unwrapParenthesizedType(tsType: TypeNode): TypeNode;
9282            function findParentIf(asExpr: AsExpression): IfStatement | null;
9283            function isDestructuringAssignmentLHS(tsExpr: ArrayLiteralExpression | ObjectLiteralExpression): boolean;
9284            function isEnumType(tsType: ts.Type): boolean;
9285            function isEnum(tsSymbol: ts.Symbol): boolean;
9286            function isEnumMemberType(tsType: Type): boolean;
9287            function isObjectLiteralType(tsType: Type): boolean;
9288            function hasModifier(tsModifiers: readonly Modifier[] | undefined, tsModifierKind: number): boolean;
9289            function unwrapParenthesized(tsExpr: Expression): Expression;
9290            function followIfAliased(sym: Symbol): Symbol;
9291            function trueSymbolAtLocation(node: Node): Symbol | undefined;
9292            function clearTrueSymbolAtLocationCache(): void;
9293            function isTypeDeclSyntaxKind(kind: SyntaxKind): boolean;
9294            function symbolHasDuplicateName(symbol: Symbol, tsDeclKind: SyntaxKind): boolean;
9295            function isReferenceType(tsType: Type): boolean;
9296            function isPrimitiveType(type: Type): boolean;
9297            function isTypeSymbol(symbol: Symbol | undefined): boolean;
9298            function isGenericArrayType(tsType: Type): tsType is TypeReference;
9299            function isReadonlyArrayType(tsType: Type): boolean;
9300            function isTypedArray(tsType: ts.Type): boolean;
9301            function isArray(tsType: ts.Type): boolean;
9302            function isTuple(tsType: ts.Type): boolean;
9303            function isOrDerivedFrom(tsType: ts.Type, checkType: CheckType, checkedBaseTypes?: Set<ts.Type>): boolean;
9304            function isTypeReference(tsType: Type): tsType is TypeReference;
9305            function isNullType(tsTypeNode: TypeNode): boolean;
9306            function isThisOrSuperExpr(tsExpr: Expression): boolean;
9307            function isPrototypeSymbol(symbol: Symbol | undefined): boolean;
9308            function isFunctionSymbol(symbol: Symbol | undefined): boolean;
9309            function isInterfaceType(tsType: Type | undefined): boolean;
9310            function isAnyType(tsType: Type): tsType is TypeReference;
9311            function isUnknownType(tsType: Type): boolean;
9312            function isUnsupportedType(tsType: Type): boolean;
9313            function isUnsupportedUnionType(tsType: Type): boolean;
9314            function isFunctionOrMethod(tsSymbol: Symbol | undefined): boolean;
9315            function isMethodAssignment(tsSymbol: Symbol | undefined): boolean;
9316            function getDeclaration(tsSymbol: ts.Symbol | undefined): ts.Declaration | undefined;
9317            function isValidEnumMemberInit(tsExpr: Expression): boolean;
9318            function isCompileTimeExpression(tsExpr: Expression): boolean;
9319            function isConst(tsNode: Node): boolean;
9320            function isNumberConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
9321            function isIntegerConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean;
9322            function isStringConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression): boolean;
9323            function relatedByInheritanceOrIdentical(typeA: Type, typeB: Type): boolean;
9324            function reduceReference(t: ts.Type): ts.Type;
9325            function needToDeduceStructuralIdentity(lhsType: Type, rhsType: Type, rhsExpr: Expression): boolean;
9326            function hasPredecessor(node: Node, predicate: (node: Node) => boolean): boolean;
9327            function processParentTypes(parentTypes: NodeArray<ExpressionWithTypeArguments>, typeB: Type, processInterfaces: boolean): boolean;
9328            function isObject(tsType: Type): boolean;
9329            function logTscDiagnostic(diagnostics: readonly Diagnostic[], log: (message: any, ...args: any[]) => void): void;
9330            function encodeProblemInfo(problem: ProblemInfo): string;
9331            function decodeAutofixInfo(info: string): AutofixInfo;
9332            function isCallToFunctionWithOmittedReturnType(tsExpr: Expression): boolean;
9333            function validateObjectLiteralType(type: Type | undefined): boolean;
9334            function isStructDeclarationKind(kind: SyntaxKind): boolean;
9335            function isStructDeclaration(node: Node): boolean;
9336            function isStructObjectInitializer(objectLiteral: ObjectLiteralExpression): boolean;
9337            function hasMethods(type: Type): boolean;
9338            function checkTypeSet(typeSet: ts.Type, predicate: CheckType): boolean;
9339            function getNonNullableType(t: ts.Type): ts.Type;
9340            function isObjectLiteralAssignable(lhsType: ts.Type | undefined, rhsExpr: ts.ObjectLiteralExpression): boolean;
9341            function isLiteralType(type: Type): boolean;
9342            function validateFields(objectType: Type, objectLiteral: ObjectLiteralExpression): boolean;
9343            function isSupportedType(typeNode: TypeNode): boolean;
9344            function isStruct(symbol: Symbol): boolean;
9345            type CheckType = ((t: Type) => boolean);
9346            const ES_OBJECT = "ESObject";
9347            const LIMITED_STD_GLOBAL_FUNC: string[];
9348            const LIMITED_STD_OBJECT_API: string[];
9349            const LIMITED_STD_REFLECT_API: string[];
9350            const LIMITED_STD_PROXYHANDLER_API: string[];
9351            const FUNCTION_HAS_NO_RETURN_ERROR_CODE = 2366;
9352            const NON_RETURN_FUNCTION_DECORATORS: string[];
9353            const STANDARD_LIBRARIES: string[];
9354            const TYPED_ARRAYS: string[];
9355            function getParentSymbolName(symbol: Symbol): string | undefined;
9356            function isGlobalSymbol(symbol: Symbol): boolean;
9357            function isSymbolAPI(symbol: Symbol): boolean;
9358            function isStdSymbol(symbol: ts.Symbol): boolean;
9359            function isSymbolIterator(symbol: ts.Symbol): boolean;
9360            function isDefaultImport(importSpec: ImportSpecifier): boolean;
9361            function hasAccessModifier(decl: Declaration): boolean;
9362            function getModifier(modifiers: readonly Modifier[] | undefined, modifierKind: SyntaxKind): Modifier | undefined;
9363            function getAccessModifier(modifiers: readonly Modifier[] | undefined): Modifier | undefined;
9364            function isStdRecordType(type: Type): boolean;
9365            function isStdMapType(type: Type): boolean;
9366            function isStdErrorType(type: ts.Type): boolean;
9367            function isStdPartialType(type: Type): boolean;
9368            function isStdRequiredType(type: Type): boolean;
9369            function isStdReadonlyType(type: Type): boolean;
9370            function isLibraryType(type: Type): boolean;
9371            function hasLibraryType(node: Node): boolean;
9372            function isLibrarySymbol(sym: Symbol | undefined): boolean;
9373            function pathContainsDirectory(targetPath: string, dir: string): boolean;
9374            function getScriptKind(srcFile: SourceFile): ScriptKind;
9375            function isStdLibraryType(type: Type): boolean;
9376            function isStdLibrarySymbol(sym: Symbol | undefined): boolean;
9377            function isIntrinsicObjectType(type: Type): boolean;
9378            function isDynamicType(type: Type | undefined): boolean | undefined;
9379            function isObjectType(type: ts.Type): type is ts.ObjectType;
9380            function isAnonymous(type: ts.Type): boolean;
9381            function isDynamicLiteralInitializer(expr: Expression): boolean;
9382            function isEsObjectType(typeNode: ts.TypeNode | undefined): boolean;
9383            function isInsideBlock(node: ts.Node): boolean;
9384            function isEsObjectPossiblyAllowed(typeRef: ts.TypeReferenceNode): boolean;
9385            function isValueAssignableToESObject(node: ts.Node): boolean;
9386            function getVariableDeclarationTypeNode(node: Node): TypeNode | undefined;
9387            function getSymbolDeclarationTypeNode(sym: ts.Symbol): ts.TypeNode | undefined;
9388            function hasEsObjectType(node: Node): boolean;
9389            function symbolHasEsObjectType(sym: ts.Symbol): boolean;
9390            function isEsObjectSymbol(sym: Symbol): boolean;
9391            function isAnonymousType(type: Type): boolean;
9392            function getSymbolOfCallExpression(callExpr: CallExpression): Symbol | undefined;
9393            function typeIsRecursive(topType: Type, type?: Type | undefined): boolean;
9394            function getTypeOrTypeConstraintAtLocation(expr: ts.Expression): ts.Type;
9395            function isStdBigIntType(type: ts.Type): boolean;
9396            function isStdNumberType(type: ts.Type): boolean;
9397            function isStdBooleanType(type: ts.Type): boolean;
9398            function isEnumStringLiteral(expr: ts.Expression): boolean;
9399            function isValidComputedPropertyName(computedProperty: ComputedPropertyName, isRecordObjectInitializer?: boolean): boolean;
9400            function isAllowedIndexSignature(node: ts.IndexSignatureDeclaration): boolean;
9401            function isArkTSCollectionsArrayLikeType(type: ts.Type): boolean;
9402            function getDecoratorName(decorator: ts.Decorator): string;
9403            function unwrapParenthesizedTypeNode(typeNode: ts.TypeNode): ts.TypeNode;
9404            function isSendableTypeNode(typeNode: ts.TypeNode): boolean;
9405            function isSendableType(type: ts.Type): boolean;
9406            function isShareableType(tsType: ts.Type): boolean;
9407            function isSendableClassOrInterface(type: ts.Type): boolean;
9408            function typeContainsSendableClassOrInterface(type: ts.Type): boolean;
9409            function isConstEnum(sym: ts.Symbol | undefined): boolean;
9410            function isSendableUnionType(type: ts.UnionType): boolean;
9411            function hasSendableDecorator(decl: ts.ClassDeclaration): boolean;
9412            function getNonSendableDecorators(decl: ts.ClassDeclaration): ts.Decorator[] | undefined;
9413            function getDecoratorsIfInSendableClass(declaration: ts.HasDecorators): readonly ts.Decorator[] | undefined;
9414            function isISendableInterface(type: ts.Type): boolean;
9415            function isSharedModule(sourceFile: ts.SourceFile): boolean;
9416            function getDeclarationNode(node: ts.Node): ts.Declaration | undefined;
9417            function isShareableEntity(node: ts.Node): boolean;
9418            function isSendableClassOrInterfaceEntity(node: ts.Node): boolean;
9419            function isInImportWhiteList(resolvedModule: ResolvedModuleFull): boolean;
9420        }
9421    }
9422}
9423declare namespace ts {
9424    namespace ArkTSLinter_1_1 {
9425        namespace Autofixer {
9426            import AutofixInfo = Common.AutofixInfo;
9427            import FaultID = Problems.FaultID;
9428            const AUTOFIX_ALL: AutofixInfo;
9429            const autofixInfo: AutofixInfo[];
9430            function shouldAutofix(node: Node, faultID: FaultID): boolean;
9431            interface Autofix {
9432                replacementText: string;
9433                start: number;
9434                end: number;
9435            }
9436            function fixLiteralAsPropertyName(node: Node): Autofix[] | undefined;
9437            function fixPropertyAccessByIndex(node: Node): Autofix[] | undefined;
9438            function fixFunctionExpression(funcExpr: FunctionExpression, params?: NodeArray<ParameterDeclaration>, retType?: TypeNode | undefined): Autofix;
9439            function fixReturnType(funcLikeDecl: FunctionLikeDeclaration, typeNode: TypeNode): Autofix;
9440            function fixCtorParameterProperties(ctorDecl: ConstructorDeclaration, paramTypes: TypeNode[]): Autofix[] | undefined;
9441        }
9442    }
9443}
9444declare namespace ts {
9445    namespace ArkTSLinter_1_1 {
9446        import FaultID = Problems.FaultID;
9447        class LinterConfig {
9448            static nodeDesc: string[];
9449            static tsSyntaxKindNames: string[];
9450            static initStatic(): void;
9451            static terminalTokens: Set<SyntaxKind>;
9452            static incrementOnlyTokens: ESMap<SyntaxKind, FaultID>;
9453        }
9454    }
9455}
9456declare namespace ts {
9457    namespace ArkTSLinter_1_1 {
9458        import Autofix = Autofixer.Autofix;
9459        import LibraryTypeCallDiagnosticChecker = LibraryTypeCallDiagnosticCheckerNamespace.LibraryTypeCallDiagnosticChecker;
9460        interface ProblemInfo {
9461            line: number;
9462            column: number;
9463            start: number;
9464            end: number;
9465            type: string;
9466            severity: number;
9467            problem: string;
9468            suggest: string;
9469            rule: string;
9470            ruleTag: number;
9471            autofixable: boolean;
9472            autofix?: Autofix[];
9473        }
9474        class TypeScriptLinter {
9475            private sourceFile;
9476            private tscStrictDiagnostics?;
9477            static ideMode: boolean;
9478            static strictMode: boolean;
9479            static logTscErrors: boolean;
9480            static warningsAsErrors: boolean;
9481            static lintEtsOnly: boolean;
9482            static totalVisitedNodes: number;
9483            static nodeCounters: number[];
9484            static lineCounters: number[];
9485            static totalErrorLines: number;
9486            static errorLineNumbersString: string;
9487            static totalWarningLines: number;
9488            static warningLineNumbersString: string;
9489            static reportDiagnostics: boolean;
9490            static problemsInfos: ProblemInfo[];
9491            static filteredDiagnosticMessages: DiagnosticMessageChain[];
9492            static sharedModulesCache: ESMap<string, boolean>;
9493            static initGlobals(): void;
9494            static initStatic(): void;
9495            static tsTypeChecker: TypeChecker;
9496            currentErrorLine: number;
9497            currentWarningLine: number;
9498            staticBlocks: Set<string>;
9499            libraryTypeCallDiagnosticChecker: LibraryTypeCallDiagnosticChecker;
9500            skipArkTSStaticBlocksCheck: boolean;
9501            constructor(sourceFile: SourceFile, tsProgram: Program, tscStrictDiagnostics?: Map<Diagnostic[]> | undefined);
9502            static clearTsTypeChecker(): void;
9503            readonly handlersMap: ESMap<SyntaxKind, (node: Node) => void>;
9504            incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void;
9505            private forEachNodeInSubtree;
9506            private visitSourceFile;
9507            private countInterfaceExtendsDifferentPropertyTypes;
9508            private countDeclarationsWithDuplicateName;
9509            private countClassMembersWithDuplicateName;
9510            private static scopeContainsThis;
9511            private isPrototypePropertyAccess;
9512            private interfaceInheritanceLint;
9513            private lintForInterfaceExtendsDifferentPorpertyTypes;
9514            private handleObjectLiteralExpression;
9515            private handleArrayLiteralExpression;
9516            private handleParameter;
9517            private handleEnumDeclaration;
9518            private handleInterfaceDeclaration;
9519            private handleThrowStatement;
9520            private handleForStatement;
9521            private handleForInStatement;
9522            private handleForOfStatement;
9523            private handleImportDeclaration;
9524            private handleSharedModuleNoSideEffectImport;
9525            private static inSharedModule;
9526            private handlePropertyAccessExpression;
9527            private handlePropertyDeclaration;
9528            private handleSendableClassProperty;
9529            private handlePropertyAssignment;
9530            private handlePropertySignature;
9531            private handleSendableInterfaceProperty;
9532            private filterOutDecoratorsDiagnostics;
9533            private checkInRange;
9534            private filterStrictDiagnostics;
9535            private static isClassLikeOrIface;
9536            private handleFunctionExpression;
9537            private handleArrowFunction;
9538            private handleFunctionDeclaration;
9539            private handleMissingReturnType;
9540            private hasLimitedTypeInferenceFromReturnExpr;
9541            private isValidTypeForUnaryArithmeticOperator;
9542            private handlePrefixUnaryExpression;
9543            private handleBinaryExpression;
9544            private handleVariableDeclarationList;
9545            private handleVariableDeclaration;
9546            private handleEsObjectDelaration;
9547            private handleEsObjectAssignment;
9548            private handleCatchClause;
9549            private handleClassDeclaration;
9550            private scanCapturedVarsInSendableScope;
9551            private checkLocalDecl;
9552            private checkLocalDeclWithSendableClosure;
9553            private checkIsTopClosure;
9554            private checkNamespaceImportVar;
9555            private checkClassDeclarationHeritageClause;
9556            private isValidSendableClassExtends;
9557            private checkSendableTypeParameter;
9558            private processClassStaticBlocks;
9559            private handleModuleDeclaration;
9560            private handleTypeAliasDeclaration;
9561            private handleImportClause;
9562            private handleImportSpecifier;
9563            private handleNamespaceImport;
9564            private handleTypeAssertionExpression;
9565            private handleMethodDeclaration;
9566            private handleMethodSignature;
9567            private handleIdentifier;
9568            private isAllowedClassValueContext;
9569            private handleRestrictedValues;
9570            private identiferUseInValueContext;
9571            private isEnumPropAccess;
9572            private isElementAcessAllowed;
9573            private handleElementAccessExpression;
9574            private handleEnumMember;
9575            private handleExportAssignment;
9576            private handleCallExpression;
9577            private handleEtsComponentExpression;
9578            private handleImportCall;
9579            private handleRequireCall;
9580            private handleGenericCallWithNoTypeArgs;
9581            private static readonly listFunctionApplyCallApis;
9582            private static readonly listFunctionBindApis;
9583            private handleFunctionApplyBindPropCall;
9584            private handleStructIdentAndUndefinedInArgs;
9585            private static LimitedApis;
9586            private handleStdlibAPICall;
9587            private findNonFilteringRangesFunctionCalls;
9588            private handleLibraryTypeCall;
9589            private handleNewExpression;
9590            private handleSendableGenericTypes;
9591            private handleAsExpression;
9592            private handleTypeReference;
9593            private handleMetaProperty;
9594            private handleSpreadOp;
9595            private handleConstructSignature;
9596            private handleExpressionWithTypeArguments;
9597            private handleComputedPropertyName;
9598            private isSendableInvalidCompPropName;
9599            private handleGetAccessor;
9600            private handleSetAccessor;
9601            private handleDeclarationInferredType;
9602            private handleDefiniteAssignmentAssertion;
9603            private validatedTypesSet;
9604            private checkAnyOrUnknownChildNode;
9605            private handleInferredObjectreference;
9606            private validateDeclInferredType;
9607            private processNoCheckEntry;
9608            private reportThisKeywordsInScope;
9609            private handleCommentDirectives;
9610            private handleClassStaticBlockDeclaration;
9611            private handleIndexSignature;
9612            lint(): void;
9613            private handleExportKeyword;
9614            private handleExportDeclaration;
9615        }
9616    }
9617}
9618declare namespace ts {
9619    namespace ArkTSLinter_1_1 {
9620        import Autofix = Autofixer.Autofix;
9621        interface KitSymbol {
9622            source: string;
9623            bindings: string;
9624        }
9625        type KitSymbols = Record<string, KitSymbol>;
9626        interface KitInfo {
9627            symbols?: KitSymbols;
9628        }
9629        class InteropTypescriptLinter {
9630            private sourceFile;
9631            private isInSdk;
9632            static strictMode: boolean;
9633            static totalVisitedNodes: number;
9634            static nodeCounters: number[];
9635            static lineCounters: number[];
9636            static totalErrorLines: number;
9637            static errorLineNumbersString: string;
9638            static totalWarningLines: number;
9639            static warningLineNumbersString: string;
9640            static reportDiagnostics: boolean;
9641            static problemsInfos: ProblemInfo[];
9642            static initGlobals(): void;
9643            static initStatic(): void;
9644            static tsTypeChecker: TypeChecker;
9645            static etsLoaderPath?: string;
9646            static kitInfos: Map<KitInfo>;
9647            currentErrorLine: number;
9648            currentWarningLine: number;
9649            constructor(sourceFile: SourceFile, tsProgram: Program, isInSdk: boolean);
9650            static clearTsTypeChecker(): void;
9651            readonly handlersMap: ESMap<SyntaxKind, (node: Node) => void>;
9652            incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void;
9653            private forEachNodeInSubtree;
9654            private visitSourceFile;
9655            private handleImportDeclaration;
9656            private checkSendableClassorISendable;
9657            private checkKitImportClause;
9658            private checkImportClause;
9659            private allowInSdkImportSendable;
9660            private handleClassDeclaration;
9661            private checkClassOrInterfaceDeclarationHeritageClause;
9662            private handleInterfaceDeclaration;
9663            private handleNewExpression;
9664            private handleSendableGenericTypes;
9665            private handleObjectLiteralExpression;
9666            private handleArrayLiteralExpression;
9667            private handleAsExpression;
9668            private handleExportDeclaration;
9669            private handleExportAssignment;
9670            private initKitInfos;
9671            private getOriginalFileNames;
9672            lint(): void;
9673        }
9674    }
9675}
9676declare namespace ts {
9677    namespace ArkTSLinter_1_1 {
9678        class TSCCompiledProgram {
9679            private diagnosticsExtractor;
9680            constructor(program: BuilderProgram);
9681            getProgram(): Program;
9682            getBuilderProgram(): BuilderProgram;
9683            getStrictDiagnostics(fileName: string): Diagnostic[];
9684            doAllGetDiagnostics(): void;
9685        }
9686    }
9687}
9688declare namespace ts {
9689    namespace ArkTSLinter_1_1 {
9690        function translateDiag(srcFile: SourceFile, problemInfo: ProblemInfo): Diagnostic;
9691        function runArkTSLinter(tsBuilderProgram: BuilderProgram, srcFile?: SourceFile, buildInfoWriteFile?: WriteFileCallback, arkTSVersion?: string): Diagnostic[];
9692    }
9693}
9694declare namespace ts {
9695    enum TimePhase {
9696        START = "start",
9697        GET_PROGRAM = "getProgram(not ArkTSLinter)",
9698        UPDATE_ERROR_FILE = "updateErrorFile",
9699        INIT = "init",
9700        STRICT_PROGRAM_GET_SEMANTIC_DIAGNOSTICS = "strictProgramGetSemanticDiagnostics",
9701        NON_STRICT_PROGRAM_GET_SEMANTIC_DIAGNOSTICS = "nonStrictProgramGetSemanticDiagnostics",
9702        NON_STRICT_PROGRAM_GET_SYNTACTIC_DIAGNOSTICS = "nonStrictProgramGetSyntacticDiagnostics",
9703        GET_TSC_DIAGNOSTICS = "getTscDiagnostics",
9704        EMIT_BUILD_INFO = "emitBuildInfo",
9705        LINT = "lint"
9706    }
9707    class ArkTSLinterTimePrinter {
9708        private static instance?;
9709        private arkTSTimePrintSwitch;
9710        private timeMap;
9711        private constructor();
9712        static getInstance(): ArkTSLinterTimePrinter;
9713        static destroyInstance(): void;
9714        setArkTSTimePrintSwitch(arkTSTimePrintSwitch: boolean): void;
9715        appendTime(key: string): void;
9716        private formatMapAsTable;
9717        printTimes(): void;
9718    }
9719}
9720
9721export = ts;